vxe-pc-ui 4.5.36 → 4.6.1

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 (318) hide show
  1. package/README.md +1 -0
  2. package/es/calendar/src/calendar.js +1 -1
  3. package/es/components.js +6 -0
  4. package/es/date-panel/index.js +12 -0
  5. package/es/date-panel/src/date-panel.js +1587 -0
  6. package/es/date-panel/src/util.js +191 -0
  7. package/es/date-panel/style.css +443 -0
  8. package/es/date-panel/style.min.css +1 -0
  9. package/es/date-picker/index.js +0 -1
  10. package/es/date-picker/src/date-picker.js +274 -1663
  11. package/es/date-picker/style.css +68 -810
  12. package/es/date-picker/style.min.css +1 -1
  13. package/es/date-range-picker/index.js +12 -0
  14. package/es/date-range-picker/src/date-range-picker.js +1121 -0
  15. package/es/date-range-picker/style.css +284 -0
  16. package/es/date-range-picker/style.min.css +1 -0
  17. package/es/form/render/index.js +69 -23
  18. package/es/form/style.css +3 -0
  19. package/es/form/style.min.css +1 -1
  20. package/es/icon/style.css +1 -1
  21. package/es/input/src/input.js +1 -1
  22. package/es/language/ar-EG.js +4 -1
  23. package/es/language/de-DE.js +4 -1
  24. package/es/language/en-US.js +4 -1
  25. package/es/language/es-ES.js +4 -1
  26. package/es/language/fr-FR.d.ts +2 -0
  27. package/es/language/fr-FR.js +4 -1
  28. package/es/language/hu-HU.js +4 -1
  29. package/es/language/hy-AM.d.ts +2 -0
  30. package/es/language/hy-AM.js +4 -1
  31. package/es/language/id-ID.d.ts +2 -0
  32. package/es/language/id-ID.js +4 -1
  33. package/es/language/it-IT.d.ts +2 -0
  34. package/es/language/it-IT.js +4 -1
  35. package/es/language/ja-JP.js +4 -1
  36. package/es/language/ko-KR.js +4 -1
  37. package/es/language/ms-MY.d.ts +2 -0
  38. package/es/language/ms-MY.js +711 -0
  39. package/es/language/nb-NO.d.ts +2 -0
  40. package/es/language/nb-NO.js +4 -1
  41. package/es/language/pt-BR.js +4 -1
  42. package/es/language/ru-RU.js +4 -1
  43. package/es/language/th-TH.d.ts +2 -0
  44. package/es/language/th-TH.js +4 -1
  45. package/es/language/ug-CN.d.ts +2 -0
  46. package/es/language/ug-CN.js +4 -1
  47. package/es/language/uk-UA.js +4 -1
  48. package/es/language/uz-UZ.d.ts +2 -0
  49. package/es/language/uz-UZ.js +711 -0
  50. package/es/language/vi-VN.d.ts +2 -0
  51. package/es/language/vi-VN.js +4 -1
  52. package/es/language/zh-CHT.d.ts +2 -0
  53. package/es/language/zh-CHT.js +4 -1
  54. package/es/language/zh-CN.js +4 -1
  55. package/es/print/src/print.js +4 -0
  56. package/es/print/src/util.js +46 -3
  57. package/es/pulldown/style.css +15 -0
  58. package/es/pulldown/style.min.css +1 -1
  59. package/es/select/style.css +15 -0
  60. package/es/select/style.min.css +1 -1
  61. package/es/style.css +1 -1
  62. package/es/style.min.css +1 -1
  63. package/es/table-select/style.css +15 -0
  64. package/es/table-select/style.min.css +1 -1
  65. package/es/tree-select/style.css +15 -0
  66. package/es/tree-select/style.min.css +1 -1
  67. package/es/ui/index.js +31 -6
  68. package/es/ui/src/log.js +1 -1
  69. package/es/vxe-date-panel/index.js +3 -0
  70. package/es/vxe-date-panel/style.css +443 -0
  71. package/es/vxe-date-panel/style.min.css +1 -0
  72. package/es/vxe-date-picker/style.css +68 -810
  73. package/es/vxe-date-picker/style.min.css +1 -1
  74. package/es/vxe-date-range-picker/index.js +3 -0
  75. package/es/vxe-date-range-picker/style.css +284 -0
  76. package/es/vxe-date-range-picker/style.min.css +1 -0
  77. package/es/vxe-form/style.css +3 -0
  78. package/es/vxe-form/style.min.css +1 -1
  79. package/es/vxe-pulldown/style.css +15 -0
  80. package/es/vxe-pulldown/style.min.css +1 -1
  81. package/es/vxe-select/style.css +15 -0
  82. package/es/vxe-select/style.min.css +1 -1
  83. package/es/vxe-table-select/style.css +15 -0
  84. package/es/vxe-table-select/style.min.css +1 -1
  85. package/es/vxe-tree-select/style.css +15 -0
  86. package/es/vxe-tree-select/style.min.css +1 -1
  87. package/lib/calendar/src/calendar.js +1 -1
  88. package/lib/calendar/src/calendar.min.js +1 -1
  89. package/lib/components.js +25 -1
  90. package/lib/components.min.js +1 -1
  91. package/lib/date-panel/index.js +19 -0
  92. package/lib/date-panel/index.min.js +1 -0
  93. package/lib/date-panel/src/date-panel.js +1667 -0
  94. package/lib/date-panel/src/date-panel.min.js +1 -0
  95. package/lib/date-panel/src/util.js +219 -0
  96. package/lib/date-panel/src/util.min.js +1 -0
  97. package/lib/date-panel/style/index.js +1 -0
  98. package/lib/date-panel/style/style.css +443 -0
  99. package/lib/date-panel/style/style.min.css +1 -0
  100. package/lib/date-picker/index.js +0 -1
  101. package/lib/date-picker/index.min.js +1 -1
  102. package/lib/date-picker/src/date-picker.js +288 -1717
  103. package/lib/date-picker/src/date-picker.min.js +1 -1
  104. package/lib/date-picker/style/style.css +68 -810
  105. package/lib/date-picker/style/style.min.css +1 -1
  106. package/lib/date-range-picker/index.js +19 -0
  107. package/lib/date-range-picker/index.min.js +1 -0
  108. package/lib/date-range-picker/src/date-range-picker.js +1194 -0
  109. package/lib/date-range-picker/src/date-range-picker.min.js +1 -0
  110. package/lib/date-range-picker/style/index.js +1 -0
  111. package/lib/date-range-picker/style/style.css +284 -0
  112. package/lib/date-range-picker/style/style.min.css +1 -0
  113. package/lib/form/render/index.js +77 -23
  114. package/lib/form/render/index.min.js +1 -1
  115. package/lib/form/style/style.css +3 -0
  116. package/lib/form/style/style.min.css +1 -1
  117. package/lib/icon/style/style.css +1 -1
  118. package/lib/icon/style/style.min.css +1 -1
  119. package/lib/index.umd.js +3016 -1260
  120. package/lib/index.umd.min.js +1 -1
  121. package/lib/input/src/input.js +1 -1
  122. package/lib/input/src/input.min.js +1 -1
  123. package/lib/language/ar-EG.d.ts +2 -0
  124. package/lib/language/ar-EG.js +4 -1
  125. package/lib/language/ar-EG.min.js +1 -1
  126. package/lib/language/ar-EG.umd.js +731 -0
  127. package/lib/language/de-DE.d.ts +2 -0
  128. package/lib/language/de-DE.js +4 -1
  129. package/lib/language/de-DE.min.js +1 -1
  130. package/lib/language/de-DE.umd.js +731 -0
  131. package/lib/language/en-US.js +4 -1
  132. package/lib/language/en-US.min.js +1 -1
  133. package/lib/language/en-US.umd.js +4 -1
  134. package/lib/language/es-ES.js +4 -1
  135. package/lib/language/es-ES.min.js +1 -1
  136. package/lib/language/es-ES.umd.js +4 -1
  137. package/lib/language/fr-FR.d.ts +2 -0
  138. package/lib/language/fr-FR.js +4 -1
  139. package/lib/language/fr-FR.min.js +1 -1
  140. package/lib/language/fr-FR.umd.js +731 -0
  141. package/lib/language/hu-HU.js +4 -1
  142. package/lib/language/hu-HU.min.js +1 -1
  143. package/lib/language/hu-HU.umd.js +4 -1
  144. package/lib/language/hy-AM.d.ts +2 -0
  145. package/lib/language/hy-AM.js +4 -1
  146. package/lib/language/hy-AM.min.js +1 -1
  147. package/lib/language/hy-AM.umd.js +731 -0
  148. package/lib/language/id-ID.d.ts +2 -0
  149. package/lib/language/id-ID.js +4 -1
  150. package/lib/language/id-ID.min.js +1 -1
  151. package/lib/language/id-ID.umd.js +731 -0
  152. package/lib/language/it-IT.d.ts +2 -0
  153. package/lib/language/it-IT.js +4 -1
  154. package/lib/language/it-IT.min.js +1 -1
  155. package/lib/language/it-IT.umd.js +731 -0
  156. package/lib/language/ja-JP.js +4 -1
  157. package/lib/language/ja-JP.min.js +1 -1
  158. package/lib/language/ja-JP.umd.js +4 -1
  159. package/lib/language/ko-KR.js +4 -1
  160. package/lib/language/ko-KR.min.js +1 -1
  161. package/lib/language/ko-KR.umd.js +4 -1
  162. package/lib/language/ms-MY.d.ts +2 -0
  163. package/lib/language/ms-MY.js +717 -0
  164. package/lib/language/ms-MY.min.js +1 -0
  165. package/lib/language/ms-MY.umd.js +731 -0
  166. package/lib/language/nb-NO.d.ts +2 -0
  167. package/lib/language/nb-NO.js +4 -1
  168. package/lib/language/nb-NO.min.js +1 -1
  169. package/lib/language/nb-NO.umd.js +731 -0
  170. package/lib/language/pt-BR.js +4 -1
  171. package/lib/language/pt-BR.min.js +1 -1
  172. package/lib/language/pt-BR.umd.js +4 -1
  173. package/lib/language/ru-RU.js +4 -1
  174. package/lib/language/ru-RU.min.js +1 -1
  175. package/lib/language/ru-RU.umd.js +4 -1
  176. package/lib/language/th-TH.d.ts +2 -0
  177. package/lib/language/th-TH.js +4 -1
  178. package/lib/language/th-TH.min.js +1 -1
  179. package/lib/language/th-TH.umd.js +731 -0
  180. package/lib/language/ug-CN.d.ts +2 -0
  181. package/lib/language/ug-CN.js +4 -1
  182. package/lib/language/ug-CN.min.js +1 -1
  183. package/lib/language/ug-CN.umd.js +731 -0
  184. package/lib/language/uk-UA.js +4 -1
  185. package/lib/language/uk-UA.min.js +1 -1
  186. package/lib/language/uk-UA.umd.js +4 -1
  187. package/lib/language/uz-UZ.d.ts +2 -0
  188. package/lib/language/uz-UZ.js +717 -0
  189. package/lib/language/uz-UZ.min.js +1 -0
  190. package/lib/language/uz-UZ.umd.js +731 -0
  191. package/lib/language/vi-VN.d.ts +2 -0
  192. package/lib/language/vi-VN.js +4 -1
  193. package/lib/language/vi-VN.min.js +1 -1
  194. package/lib/language/vi-VN.umd.js +731 -0
  195. package/lib/language/zh-CHT.d.ts +2 -0
  196. package/lib/language/zh-CHT.js +4 -1
  197. package/lib/language/zh-CHT.min.js +1 -1
  198. package/lib/language/zh-CHT.umd.js +731 -0
  199. package/lib/language/zh-CN.js +4 -1
  200. package/lib/language/zh-CN.min.js +1 -1
  201. package/lib/language/zh-CN.umd.js +4 -1
  202. package/lib/language/zh-TC.min.js +1 -1
  203. package/lib/print/src/print.js +4 -0
  204. package/lib/print/src/print.min.js +1 -1
  205. package/lib/print/src/util.js +45 -2
  206. package/lib/print/src/util.min.js +1 -1
  207. package/lib/pulldown/style/style.css +15 -0
  208. package/lib/pulldown/style/style.min.css +1 -1
  209. package/lib/select/style/style.css +15 -0
  210. package/lib/select/style/style.min.css +1 -1
  211. package/lib/style.css +1 -1
  212. package/lib/style.min.css +1 -1
  213. package/lib/table-select/style/style.css +15 -0
  214. package/lib/table-select/style/style.min.css +1 -1
  215. package/lib/tree-select/style/style.css +15 -0
  216. package/lib/tree-select/style/style.min.css +1 -1
  217. package/lib/ui/index.js +31 -6
  218. package/lib/ui/index.min.js +1 -1
  219. package/lib/ui/src/log.js +1 -1
  220. package/lib/ui/src/log.min.js +1 -1
  221. package/lib/vxe-date-panel/index.js +22 -0
  222. package/lib/vxe-date-panel/index.min.js +1 -0
  223. package/lib/vxe-date-panel/style/index.js +1 -0
  224. package/lib/vxe-date-panel/style/style.css +443 -0
  225. package/lib/vxe-date-panel/style/style.min.css +1 -0
  226. package/lib/vxe-date-picker/style/style.css +68 -810
  227. package/lib/vxe-date-picker/style/style.min.css +1 -1
  228. package/lib/vxe-date-range-picker/index.js +22 -0
  229. package/lib/vxe-date-range-picker/index.min.js +1 -0
  230. package/lib/vxe-date-range-picker/style/index.js +1 -0
  231. package/lib/vxe-date-range-picker/style/style.css +284 -0
  232. package/lib/vxe-date-range-picker/style/style.min.css +1 -0
  233. package/lib/vxe-form/style/style.css +3 -0
  234. package/lib/vxe-form/style/style.min.css +1 -1
  235. package/lib/vxe-pulldown/style/style.css +15 -0
  236. package/lib/vxe-pulldown/style/style.min.css +1 -1
  237. package/lib/vxe-select/style/style.css +15 -0
  238. package/lib/vxe-select/style/style.min.css +1 -1
  239. package/lib/vxe-table-select/style/style.css +15 -0
  240. package/lib/vxe-table-select/style/style.min.css +1 -1
  241. package/lib/vxe-tree-select/style/style.css +15 -0
  242. package/lib/vxe-tree-select/style/style.min.css +1 -1
  243. package/package.json +4 -5
  244. package/packages/calendar/src/calendar.ts +10 -10
  245. package/packages/components.ts +6 -0
  246. package/packages/date-panel/index.ts +16 -0
  247. package/packages/date-panel/src/date-panel.ts +1654 -0
  248. package/packages/date-panel/src/util.ts +212 -0
  249. package/packages/date-picker/index.ts +0 -1
  250. package/packages/date-picker/src/date-picker.ts +298 -1697
  251. package/packages/date-range-picker/index.ts +16 -0
  252. package/packages/date-range-picker/src/date-range-picker.ts +1196 -0
  253. package/packages/form/render/index.ts +76 -22
  254. package/packages/input/src/input.ts +15 -15
  255. package/packages/language/ar-EG.ts +4 -1
  256. package/packages/language/de-DE.ts +4 -1
  257. package/packages/language/en-US.ts +4 -1
  258. package/packages/language/es-ES.ts +4 -1
  259. package/packages/language/fr-FR.ts +4 -1
  260. package/packages/language/hu-HU.ts +4 -1
  261. package/packages/language/hy-AM.ts +4 -1
  262. package/packages/language/id-ID.ts +4 -1
  263. package/packages/language/it-IT.ts +4 -1
  264. package/packages/language/ja-JP.ts +4 -1
  265. package/packages/language/ko-KR.ts +4 -1
  266. package/packages/language/ms-MY.ts +711 -0
  267. package/packages/language/nb-NO.ts +4 -1
  268. package/packages/language/pt-BR.ts +4 -1
  269. package/packages/language/ru-RU.ts +4 -1
  270. package/packages/language/th-TH.ts +4 -1
  271. package/packages/language/ug-CN.ts +4 -1
  272. package/packages/language/uk-UA.ts +4 -1
  273. package/packages/language/uz-UZ.ts +711 -0
  274. package/packages/language/vi-VN.ts +4 -1
  275. package/packages/language/zh-CHT.ts +4 -1
  276. package/packages/language/zh-CN.ts +4 -1
  277. package/packages/print/src/print.ts +4 -0
  278. package/packages/print/src/util.ts +47 -4
  279. package/packages/ui/index.ts +30 -5
  280. package/styles/all.scss +2 -0
  281. package/styles/components/date-panel.scss +491 -0
  282. package/styles/components/date-picker.scss +62 -652
  283. package/styles/components/date-range-picker.scss +284 -0
  284. package/styles/components/form.scss +3 -0
  285. package/styles/components/pulldown.scss +10 -0
  286. package/styles/components/select.scss +8 -0
  287. package/styles/components/table-select.scss +8 -0
  288. package/styles/components/tree-select.scss +8 -0
  289. package/styles/helpers/baseMixin.scss +13 -0
  290. package/types/all.d.ts +6 -0
  291. package/types/components/button-group.d.ts +1 -1
  292. package/types/components/column.d.ts +9 -0
  293. package/types/components/date-panel.d.ts +240 -0
  294. package/types/components/date-picker.d.ts +35 -142
  295. package/types/components/date-range-picker.d.ts +267 -0
  296. package/types/components/form-item.d.ts +4 -0
  297. package/types/components/print.d.ts +8 -0
  298. package/types/ui/commands.d.ts +28 -2
  299. package/types/ui/global-config.d.ts +4 -0
  300. package/es/date-picker/src/util.js +0 -41
  301. package/lib/date-picker/src/util.js +0 -46
  302. package/lib/date-picker/src/util.min.js +0 -1
  303. package/lib/language/zh-TC.umd.js +0 -23
  304. package/packages/date-picker/src/util.ts +0 -42
  305. /package/es/icon/{iconfont.1746417522210.ttf → iconfont.1746801282055.ttf} +0 -0
  306. /package/es/icon/{iconfont.1746417522210.woff → iconfont.1746801282055.woff} +0 -0
  307. /package/es/icon/{iconfont.1746417522210.woff2 → iconfont.1746801282055.woff2} +0 -0
  308. /package/es/{iconfont.1746417522210.ttf → iconfont.1746801282055.ttf} +0 -0
  309. /package/es/{iconfont.1746417522210.woff → iconfont.1746801282055.woff} +0 -0
  310. /package/es/{iconfont.1746417522210.woff2 → iconfont.1746801282055.woff2} +0 -0
  311. /package/es/language/{zh-TC.d.ts → ar-EG.d.ts} +0 -0
  312. /package/{lib/language/zh-TC.d.ts → es/language/de-DE.d.ts} +0 -0
  313. /package/lib/icon/style/{iconfont.1746417522210.ttf → iconfont.1746801282055.ttf} +0 -0
  314. /package/lib/icon/style/{iconfont.1746417522210.woff → iconfont.1746801282055.woff} +0 -0
  315. /package/lib/icon/style/{iconfont.1746417522210.woff2 → iconfont.1746801282055.woff2} +0 -0
  316. /package/lib/{iconfont.1746417522210.ttf → iconfont.1746801282055.ttf} +0 -0
  317. /package/lib/{iconfont.1746417522210.woff → iconfont.1746801282055.woff} +0 -0
  318. /package/lib/{iconfont.1746417522210.woff2 → iconfont.1746801282055.woff2} +0 -0
@@ -0,0 +1,1194 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _vue = require("vue");
8
+ var _xeUtils = _interopRequireDefault(require("xe-utils"));
9
+ var _ui = require("../../ui");
10
+ var _utils = require("../../ui/src/utils");
11
+ var _dom = require("../../ui/src/dom");
12
+ var _util = require("../../date-panel/src/util");
13
+ var _vn = require("../../ui/src/vn");
14
+ var _log = require("../../ui/src/log");
15
+ var _datePanel = _interopRequireDefault(require("../../date-panel/src/date-panel"));
16
+ var _button = _interopRequireDefault(require("../../button/src/button"));
17
+ var _buttonGroup = _interopRequireDefault(require("../../button/src/button-group"));
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ var _default = exports.default = (0, _vue.defineComponent)({
20
+ name: 'VxeDateRangePicker',
21
+ props: {
22
+ modelValue: [String, Number, Date, Array],
23
+ startValue: [String, Number, Date],
24
+ endValue: [String, Number, Date],
25
+ immediate: {
26
+ type: Boolean,
27
+ default: true
28
+ },
29
+ name: String,
30
+ type: {
31
+ type: String,
32
+ default: 'date'
33
+ },
34
+ clearable: {
35
+ type: Boolean,
36
+ default: () => (0, _ui.getConfig)().dateRangePicker.clearable
37
+ },
38
+ readonly: {
39
+ type: Boolean,
40
+ default: null
41
+ },
42
+ disabled: {
43
+ type: Boolean,
44
+ default: null
45
+ },
46
+ placeholder: String,
47
+ autoComplete: {
48
+ type: String,
49
+ default: 'off'
50
+ },
51
+ form: String,
52
+ className: String,
53
+ size: {
54
+ type: String,
55
+ default: () => (0, _ui.getConfig)().dateRangePicker.size || (0, _ui.getConfig)().size
56
+ },
57
+ minDate: [String, Number, Date],
58
+ maxDate: [String, Number, Date],
59
+ startDay: {
60
+ type: [String, Number],
61
+ default: () => (0, _ui.getConfig)().dateRangePicker.startDay
62
+ },
63
+ labelFormat: String,
64
+ valueFormat: String,
65
+ editable: {
66
+ type: Boolean,
67
+ default: true
68
+ },
69
+ festivalMethod: {
70
+ type: Function,
71
+ default: () => (0, _ui.getConfig)().dateRangePicker.festivalMethod
72
+ },
73
+ disabledMethod: {
74
+ type: Function,
75
+ default: () => (0, _ui.getConfig)().dateRangePicker.disabledMethod
76
+ },
77
+ separator: {
78
+ type: [String, Number],
79
+ default: () => (0, _ui.getConfig)().dateRangePicker.separator
80
+ },
81
+ // week
82
+ selectDay: {
83
+ type: [String, Number],
84
+ default: () => (0, _ui.getConfig)().dateRangePicker.selectDay
85
+ },
86
+ showClearButton: {
87
+ type: Boolean,
88
+ default: () => (0, _ui.getConfig)().dateRangePicker.showClearButton
89
+ },
90
+ showConfirmButton: {
91
+ type: Boolean,
92
+ default: () => (0, _ui.getConfig)().dateRangePicker.showConfirmButton
93
+ },
94
+ autoClose: {
95
+ type: Boolean,
96
+ default: () => (0, _ui.getConfig)().dateRangePicker.autoClose
97
+ },
98
+ prefixIcon: String,
99
+ suffixIcon: String,
100
+ placement: String,
101
+ transfer: {
102
+ type: Boolean,
103
+ default: null
104
+ },
105
+ shortcutConfig: Object
106
+ },
107
+ emits: ['update:modelValue', 'update:startValue', 'update:endValue', 'input', 'change', 'keydown', 'keyup', 'click', 'focus', 'blur', 'clear', 'prefix-click', 'suffix-click', 'date-prev', 'date-today', 'date-next', 'shortcut-click'],
108
+ setup(props, context) {
109
+ const {
110
+ slots,
111
+ emit
112
+ } = context;
113
+ const $xeModal = (0, _vue.inject)('$xeModal', null);
114
+ const $xeDrawer = (0, _vue.inject)('$xeDrawer', null);
115
+ const $xeTable = (0, _vue.inject)('$xeTable', null);
116
+ const $xeForm = (0, _vue.inject)('$xeForm', null);
117
+ const formItemInfo = (0, _vue.inject)('xeFormItemInfo', null);
118
+ const xID = _xeUtils.default.uniqueId();
119
+ const {
120
+ computeSize
121
+ } = (0, _ui.useSize)(props);
122
+ const reactData = (0, _vue.reactive)({
123
+ initialized: false,
124
+ panelIndex: 0,
125
+ visiblePanel: false,
126
+ isAniVisible: false,
127
+ panelStyle: {},
128
+ panelPlacement: '',
129
+ isActivated: false,
130
+ startValue: '',
131
+ endValue: ''
132
+ });
133
+ const internalData = {
134
+ // selectStatus: false
135
+ // hpTimeout: undefined
136
+ };
137
+ const refElem = (0, _vue.ref)();
138
+ const refInputTarget = (0, _vue.ref)();
139
+ const refInputPanel = (0, _vue.ref)();
140
+ const refPanelWrapper = (0, _vue.ref)();
141
+ const refStartDatePanel = (0, _vue.ref)();
142
+ const refEndDatePanel = (0, _vue.ref)();
143
+ const refMaps = {
144
+ refElem,
145
+ refInput: refInputTarget
146
+ };
147
+ const $xeDateRangePicker = {
148
+ xID,
149
+ props,
150
+ context,
151
+ reactData,
152
+ internalData,
153
+ getRefMaps: () => refMaps
154
+ };
155
+ let dateRangePickerMethods = {};
156
+ const computeBtnTransfer = (0, _vue.computed)(() => {
157
+ const {
158
+ transfer
159
+ } = props;
160
+ if (transfer === null) {
161
+ const globalTransfer = (0, _ui.getConfig)().dateRangePicker.transfer;
162
+ if (_xeUtils.default.isBoolean(globalTransfer)) {
163
+ return globalTransfer;
164
+ }
165
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
166
+ return true;
167
+ }
168
+ }
169
+ return transfer;
170
+ });
171
+ const computeFormReadonly = (0, _vue.computed)(() => {
172
+ const {
173
+ readonly
174
+ } = props;
175
+ if (readonly === null) {
176
+ if ($xeForm) {
177
+ return $xeForm.props.readonly;
178
+ }
179
+ return false;
180
+ }
181
+ return readonly;
182
+ });
183
+ const computeIsDisabled = (0, _vue.computed)(() => {
184
+ const {
185
+ disabled
186
+ } = props;
187
+ if (disabled === null) {
188
+ if ($xeForm) {
189
+ return $xeForm.props.disabled;
190
+ }
191
+ return false;
192
+ }
193
+ return disabled;
194
+ });
195
+ const computeMVal = (0, _vue.computed)(() => {
196
+ const {
197
+ startValue,
198
+ endValue
199
+ } = props;
200
+ return `${startValue || ''}${endValue || ''}`;
201
+ });
202
+ const computeIsDateTimeType = (0, _vue.computed)(() => {
203
+ const {
204
+ type
205
+ } = props;
206
+ return type === 'time' || type === 'datetime';
207
+ });
208
+ const computeIsDatePickerType = (0, _vue.computed)(() => {
209
+ return ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
210
+ });
211
+ const computeIsClearable = (0, _vue.computed)(() => {
212
+ return props.clearable;
213
+ });
214
+ const computeInpPlaceholder = (0, _vue.computed)(() => {
215
+ const {
216
+ placeholder
217
+ } = props;
218
+ if (placeholder) {
219
+ return (0, _utils.getFuncText)(placeholder);
220
+ }
221
+ const globalPlaceholder = (0, _ui.getConfig)().dateRangePicker.placeholder;
222
+ if (globalPlaceholder) {
223
+ return (0, _utils.getFuncText)(globalPlaceholder);
224
+ }
225
+ return (0, _ui.getI18n)('vxe.base.pleaseSelect');
226
+ });
227
+ const computeInpImmediate = (0, _vue.computed)(() => {
228
+ const {
229
+ immediate
230
+ } = props;
231
+ return immediate;
232
+ });
233
+ const computeShortcutOpts = (0, _vue.computed)(() => {
234
+ return Object.assign({}, (0, _ui.getConfig)().dateRangePicker.shortcutConfig, props.shortcutConfig);
235
+ });
236
+ const computeShortcutList = (0, _vue.computed)(() => {
237
+ const shortcutOpts = computeShortcutOpts.value;
238
+ const {
239
+ options
240
+ } = shortcutOpts;
241
+ if (options) {
242
+ return options.map((option, index) => {
243
+ return Object.assign({
244
+ name: `${option.name || option.code || index}`
245
+ }, option);
246
+ });
247
+ }
248
+ return [];
249
+ });
250
+ const computeDateLabelFormat = (0, _vue.computed)(() => {
251
+ const {
252
+ labelFormat
253
+ } = props;
254
+ return labelFormat || (0, _ui.getI18n)(`vxe.input.date.labelFormat.${props.type}`);
255
+ });
256
+ const computeDateValueFormat = (0, _vue.computed)(() => {
257
+ const {
258
+ type,
259
+ valueFormat
260
+ } = props;
261
+ if (valueFormat) {
262
+ return valueFormat;
263
+ }
264
+ if (type === 'time') {
265
+ return 'HH:mm:ss';
266
+ }
267
+ if (type === 'datetime') {
268
+ return 'yyyy-MM-dd HH:mm:ss';
269
+ }
270
+ return 'yyyy-MM-dd';
271
+ });
272
+ const computeFirstDayOfWeek = (0, _vue.computed)(() => {
273
+ const {
274
+ startDay
275
+ } = props;
276
+ return _xeUtils.default.toNumber(startDay);
277
+ });
278
+ const computePanelLabelObj = (0, _vue.computed)(() => {
279
+ const {
280
+ startValue,
281
+ endValue
282
+ } = reactData;
283
+ const vals = startValue || endValue ? [startValue || '', endValue || ''] : [];
284
+ return formatRangeLabel(vals);
285
+ });
286
+ const computeInputLabel = (0, _vue.computed)(() => {
287
+ const panelLabelObj = computePanelLabelObj.value;
288
+ return panelLabelObj.label;
289
+ });
290
+ const formatRangeLabel = vals => {
291
+ const {
292
+ type,
293
+ separator
294
+ } = props;
295
+ const dateLabelFormat = computeDateLabelFormat.value;
296
+ const dateValueFormat = computeDateValueFormat.value;
297
+ const firstDayOfWeek = computeFirstDayOfWeek.value;
298
+ const startRest = vals[0] ? (0, _util.parseDateObj)(vals[0], type, {
299
+ valueFormat: dateValueFormat,
300
+ labelFormat: dateLabelFormat,
301
+ firstDay: firstDayOfWeek
302
+ }) : null;
303
+ const endRest = vals[1] ? (0, _util.parseDateObj)(vals[1], type, {
304
+ valueFormat: dateValueFormat,
305
+ labelFormat: dateLabelFormat,
306
+ firstDay: firstDayOfWeek
307
+ }) : null;
308
+ const startLabel = startRest ? startRest.label : '';
309
+ const endLabel = endRest ? endRest.label : '';
310
+ return {
311
+ label: (startLabel || endLabel ? [startLabel, endLabel] : []).join(`${separator || ' ~ '}`),
312
+ startLabel,
313
+ endLabel
314
+ };
315
+ };
316
+ const getRangeValue = (sValue, eValue) => {
317
+ const {
318
+ modelValue
319
+ } = props;
320
+ const isArr = _xeUtils.default.isArray(modelValue);
321
+ if (sValue || eValue) {
322
+ const rest = [sValue || '', eValue || ''];
323
+ if (isArr) {
324
+ return rest;
325
+ }
326
+ return rest.join(',');
327
+ }
328
+ return isArr ? [] : '';
329
+ };
330
+ const paraeUpdateModel = () => {
331
+ const {
332
+ type,
333
+ modelValue
334
+ } = props;
335
+ const dateValueFormat = computeDateValueFormat.value;
336
+ let sValue = '';
337
+ let eValue = '';
338
+ if (_xeUtils.default.isArray(modelValue)) {
339
+ const date1 = (0, _util.parseDateString)(modelValue[0], type, {
340
+ valueFormat: dateValueFormat
341
+ });
342
+ const date2 = (0, _util.parseDateString)(modelValue[1], type, {
343
+ valueFormat: dateValueFormat
344
+ });
345
+ if (date1 || date2) {
346
+ sValue = date1 || '';
347
+ eValue = date2 || '';
348
+ }
349
+ } else if (_xeUtils.default.isString(modelValue)) {
350
+ const strArr = modelValue.split(',');
351
+ if (strArr[0] || strArr[1]) {
352
+ sValue = strArr[0] || '';
353
+ eValue = strArr[1] || '';
354
+ }
355
+ }
356
+ return {
357
+ sValue,
358
+ eValue
359
+ };
360
+ };
361
+ const parseUpdateData = () => {
362
+ const {
363
+ type,
364
+ startValue,
365
+ endValue
366
+ } = props;
367
+ const dateValueFormat = computeDateValueFormat.value;
368
+ let sValue = '';
369
+ let eValue = '';
370
+ sValue = (0, _util.parseDateString)(startValue, type, {
371
+ valueFormat: dateValueFormat
372
+ });
373
+ eValue = (0, _util.parseDateString)(endValue, type, {
374
+ valueFormat: dateValueFormat
375
+ });
376
+ return {
377
+ sValue,
378
+ eValue
379
+ };
380
+ };
381
+ const updateModelValue = isModel => {
382
+ const {
383
+ modelValue,
384
+ startValue,
385
+ endValue
386
+ } = props;
387
+ let restObj = {
388
+ sValue: '',
389
+ eValue: ''
390
+ };
391
+ if (isModel) {
392
+ if (modelValue) {
393
+ restObj = paraeUpdateModel();
394
+ } else {
395
+ restObj = parseUpdateData();
396
+ }
397
+ } else {
398
+ if (startValue || endValue) {
399
+ restObj = parseUpdateData();
400
+ } else {
401
+ restObj = paraeUpdateModel();
402
+ }
403
+ }
404
+ reactData.startValue = restObj.sValue;
405
+ reactData.endValue = restObj.eValue;
406
+ };
407
+ const triggerEvent = evnt => {
408
+ const {
409
+ startValue,
410
+ endValue
411
+ } = reactData;
412
+ const value = getRangeValue(startValue, endValue);
413
+ dispatchEvent(evnt.type, {
414
+ value,
415
+ startValue,
416
+ endValue
417
+ }, evnt);
418
+ };
419
+ const handleChange = (sValue, eValue, evnt) => {
420
+ const {
421
+ modelValue
422
+ } = props;
423
+ reactData.startValue = sValue;
424
+ reactData.endValue = eValue;
425
+ const value = getRangeValue(sValue, eValue);
426
+ emit('update:modelValue', value);
427
+ emit('update:startValue', sValue || '');
428
+ emit('update:endValue', eValue || '');
429
+ if (_xeUtils.default.toValueString(modelValue) !== value) {
430
+ dispatchEvent('change', {
431
+ value
432
+ }, evnt);
433
+ // 自动更新校验状态
434
+ if ($xeForm && formItemInfo) {
435
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
436
+ }
437
+ }
438
+ };
439
+ const changeEvent = evnt => {
440
+ const inpImmediate = computeInpImmediate.value;
441
+ if (!inpImmediate) {
442
+ triggerEvent(evnt);
443
+ }
444
+ };
445
+ const focusEvent = evnt => {
446
+ reactData.isActivated = true;
447
+ dateRangePickerOpenEvent(evnt);
448
+ triggerEvent(evnt);
449
+ };
450
+ const clickPrefixEvent = evnt => {
451
+ const isDisabled = computeIsDisabled.value;
452
+ if (!isDisabled) {
453
+ const {
454
+ startValue,
455
+ endValue
456
+ } = reactData;
457
+ const value = getRangeValue(startValue, endValue);
458
+ dispatchEvent('prefix-click', {
459
+ value,
460
+ startValue,
461
+ endValue
462
+ }, evnt);
463
+ }
464
+ };
465
+ const hidePanel = () => {
466
+ return new Promise(resolve => {
467
+ reactData.visiblePanel = false;
468
+ internalData.hpTimeout = setTimeout(() => {
469
+ reactData.isAniVisible = false;
470
+ resolve();
471
+ }, 350);
472
+ });
473
+ };
474
+ const clearValueEvent = (evnt, value) => {
475
+ const isDatePickerType = computeIsDatePickerType.value;
476
+ if (isDatePickerType) {
477
+ hidePanel();
478
+ }
479
+ handleChange('', '', evnt);
480
+ dispatchEvent('clear', {
481
+ value
482
+ }, evnt);
483
+ };
484
+ const checkValue = () => {
485
+ const $startDatePanel = refStartDatePanel.value;
486
+ const $endDatePanel = refEndDatePanel.value;
487
+ if ($startDatePanel && $endDatePanel) {
488
+ const startValue = $startDatePanel.getValue();
489
+ const endValue = $endDatePanel.getValue();
490
+ if (!startValue || !endValue) {
491
+ handleChange('', '', {
492
+ type: 'check'
493
+ });
494
+ }
495
+ }
496
+ };
497
+ const handleSelectClose = () => {
498
+ const {
499
+ autoClose
500
+ } = props;
501
+ const {
502
+ startValue,
503
+ endValue
504
+ } = reactData;
505
+ const {
506
+ selectStatus
507
+ } = internalData;
508
+ const isDatePickerType = computeIsDatePickerType.value;
509
+ if (autoClose) {
510
+ if (selectStatus && isDatePickerType) {
511
+ if (startValue && endValue) {
512
+ hidePanel();
513
+ }
514
+ }
515
+ } else {
516
+ if (startValue && endValue) {
517
+ internalData.selectStatus = false;
518
+ }
519
+ }
520
+ };
521
+ const clickSuffixEvent = evnt => {
522
+ const isDisabled = computeIsDisabled.value;
523
+ if (!isDisabled) {
524
+ const {
525
+ startValue,
526
+ endValue
527
+ } = reactData;
528
+ const value = getRangeValue(startValue, endValue);
529
+ dispatchEvent('suffix-click', {
530
+ value,
531
+ startValue,
532
+ endValue
533
+ }, evnt);
534
+ }
535
+ };
536
+ const blurEvent = evnt => {
537
+ const {
538
+ startValue,
539
+ endValue
540
+ } = reactData;
541
+ const inpImmediate = computeInpImmediate.value;
542
+ const value = '';
543
+ if (!inpImmediate) {
544
+ handleChange(startValue, endValue, evnt);
545
+ }
546
+ if (!reactData.visiblePanel) {
547
+ reactData.isActivated = false;
548
+ }
549
+ dispatchEvent('blur', {
550
+ value,
551
+ startValue,
552
+ endValue
553
+ }, evnt);
554
+ // 自动更新校验状态
555
+ if ($xeForm && formItemInfo) {
556
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
557
+ }
558
+ };
559
+ const keydownEvent = evnt => {
560
+ triggerEvent(evnt);
561
+ };
562
+ const keyupEvent = evnt => {
563
+ triggerEvent(evnt);
564
+ };
565
+ const confirmEvent = evnt => {
566
+ const $startDatePanel = refStartDatePanel.value;
567
+ const $endDatePanel = refEndDatePanel.value;
568
+ if ($startDatePanel && $endDatePanel) {
569
+ const startValue = $startDatePanel.getValue();
570
+ const endValue = $endDatePanel.getValue();
571
+ if (startValue && endValue) {
572
+ $startDatePanel.confirmByEvent(evnt);
573
+ $endDatePanel.confirmByEvent(evnt);
574
+ } else {
575
+ handleChange('', '', evnt);
576
+ }
577
+ }
578
+ hidePanel();
579
+ };
580
+ const startPanelChangeEvent = params => {
581
+ const {
582
+ selectStatus
583
+ } = internalData;
584
+ const {
585
+ value,
586
+ $event
587
+ } = params;
588
+ const endValue = selectStatus ? reactData.endValue : '';
589
+ handleChange(value, endValue, $event);
590
+ handleSelectClose();
591
+ if (!selectStatus) {
592
+ internalData.selectStatus = true;
593
+ }
594
+ (0, _vue.nextTick)(() => {
595
+ const $startDatePanel = refStartDatePanel.value;
596
+ const $endDatePanel = refEndDatePanel.value;
597
+ if ($startDatePanel && $endDatePanel) {
598
+ const startValue = $startDatePanel.getValue();
599
+ if (!endValue && startValue) {
600
+ $endDatePanel.setPanelDate(_xeUtils.default.toStringDate(startValue));
601
+ }
602
+ }
603
+ });
604
+ };
605
+ const endPanelChangeEvent = params => {
606
+ const {
607
+ selectStatus
608
+ } = internalData;
609
+ const {
610
+ value,
611
+ $event
612
+ } = params;
613
+ const startValue = selectStatus ? reactData.startValue : '';
614
+ handleChange(startValue, value, $event);
615
+ handleSelectClose();
616
+ if (!selectStatus) {
617
+ internalData.selectStatus = true;
618
+ }
619
+ (0, _vue.nextTick)(() => {
620
+ const $startDatePanel = refStartDatePanel.value;
621
+ const $endDatePanel = refEndDatePanel.value;
622
+ if ($startDatePanel && $endDatePanel) {
623
+ const endValue = $endDatePanel.getValue();
624
+ if (!startValue && endValue) {
625
+ $startDatePanel.setPanelDate(_xeUtils.default.toStringDate(endValue));
626
+ }
627
+ }
628
+ });
629
+ };
630
+ // 全局事件
631
+ const handleGlobalMousedownEvent = evnt => {
632
+ const {
633
+ visiblePanel,
634
+ isActivated
635
+ } = reactData;
636
+ const el = refElem.value;
637
+ const panelWrapperElem = refPanelWrapper.value;
638
+ const isDisabled = computeIsDisabled.value;
639
+ if (!isDisabled && isActivated) {
640
+ reactData.isActivated = (0, _dom.getEventTargetNode)(evnt, el).flag || (0, _dom.getEventTargetNode)(evnt, panelWrapperElem).flag;
641
+ if (!reactData.isActivated) {
642
+ if (visiblePanel) {
643
+ checkValue();
644
+ hidePanel();
645
+ }
646
+ }
647
+ }
648
+ };
649
+ const handleGlobalMousewheelEvent = evnt => {
650
+ const {
651
+ visiblePanel
652
+ } = reactData;
653
+ const isDisabled = computeIsDisabled.value;
654
+ if (!isDisabled) {
655
+ if (visiblePanel) {
656
+ const panelWrapperElem = refPanelWrapper.value;
657
+ if ((0, _dom.getEventTargetNode)(evnt, panelWrapperElem).flag) {
658
+ updatePlacement();
659
+ } else {
660
+ hidePanel();
661
+ }
662
+ }
663
+ }
664
+ };
665
+ const handleGlobalBlurEvent = () => {
666
+ const {
667
+ visiblePanel
668
+ } = reactData;
669
+ if (visiblePanel) {
670
+ hidePanel();
671
+ }
672
+ };
673
+ // 弹出面板
674
+ const updateZindex = () => {
675
+ if (reactData.panelIndex < (0, _utils.getLastZIndex)()) {
676
+ reactData.panelIndex = (0, _utils.nextZIndex)();
677
+ }
678
+ };
679
+ const updatePlacement = () => {
680
+ return (0, _vue.nextTick)().then(() => {
681
+ const {
682
+ placement
683
+ } = props;
684
+ const {
685
+ panelIndex
686
+ } = reactData;
687
+ const targetElem = refInputTarget.value;
688
+ const panelElem = refInputPanel.value;
689
+ const btnTransfer = computeBtnTransfer.value;
690
+ if (targetElem && panelElem) {
691
+ const targetHeight = targetElem.offsetHeight;
692
+ const targetWidth = targetElem.offsetWidth;
693
+ const panelHeight = panelElem.offsetHeight;
694
+ const panelWidth = panelElem.offsetWidth;
695
+ const marginSize = 5;
696
+ const panelStyle = {
697
+ zIndex: panelIndex
698
+ };
699
+ const {
700
+ boundingTop,
701
+ boundingLeft,
702
+ visibleHeight,
703
+ visibleWidth
704
+ } = (0, _dom.getAbsolutePos)(targetElem);
705
+ let panelPlacement = 'bottom';
706
+ if (btnTransfer) {
707
+ let left = boundingLeft;
708
+ let top = boundingTop + targetHeight;
709
+ if (placement === 'top') {
710
+ panelPlacement = 'top';
711
+ top = boundingTop - panelHeight;
712
+ } else if (!placement) {
713
+ // 如果下面不够放,则向上
714
+ if (top + panelHeight + marginSize > visibleHeight) {
715
+ panelPlacement = 'top';
716
+ top = boundingTop - panelHeight;
717
+ }
718
+ // 如果上面不够放,则向下(优先)
719
+ if (top < marginSize) {
720
+ panelPlacement = 'bottom';
721
+ top = boundingTop + targetHeight;
722
+ }
723
+ }
724
+ // 如果溢出右边
725
+ if (left + panelWidth + marginSize > visibleWidth) {
726
+ left -= left + panelWidth + marginSize - visibleWidth;
727
+ }
728
+ // 如果溢出左边
729
+ if (left < marginSize) {
730
+ left = marginSize;
731
+ }
732
+ Object.assign(panelStyle, {
733
+ left: `${left}px`,
734
+ top: `${top}px`,
735
+ minWidth: `${targetWidth}px`
736
+ });
737
+ } else {
738
+ if (placement === 'top') {
739
+ panelPlacement = 'top';
740
+ panelStyle.bottom = `${targetHeight}px`;
741
+ } else if (!placement) {
742
+ // 如果下面不够放,则向上
743
+ panelStyle.top = `${targetHeight}px`;
744
+ if (boundingTop + targetHeight + panelHeight > visibleHeight) {
745
+ // 如果上面不够放,则向下(优先)
746
+ if (boundingTop - targetHeight - panelHeight > marginSize) {
747
+ panelPlacement = 'top';
748
+ panelStyle.top = '';
749
+ panelStyle.bottom = `${targetHeight}px`;
750
+ }
751
+ }
752
+ }
753
+ }
754
+ reactData.panelStyle = panelStyle;
755
+ reactData.panelPlacement = panelPlacement;
756
+ return (0, _vue.nextTick)();
757
+ }
758
+ });
759
+ };
760
+ const showPanel = () => {
761
+ const {
762
+ visiblePanel
763
+ } = reactData;
764
+ const isDisabled = computeIsDisabled.value;
765
+ if (!isDisabled && !visiblePanel) {
766
+ if (!reactData.initialized) {
767
+ reactData.initialized = true;
768
+ }
769
+ if (internalData.hpTimeout) {
770
+ clearTimeout(internalData.hpTimeout);
771
+ internalData.hpTimeout = undefined;
772
+ }
773
+ internalData.selectStatus = false;
774
+ reactData.isActivated = true;
775
+ reactData.isAniVisible = true;
776
+ setTimeout(() => {
777
+ reactData.visiblePanel = true;
778
+ }, 10);
779
+ updateZindex();
780
+ return updatePlacement();
781
+ }
782
+ return (0, _vue.nextTick)();
783
+ };
784
+ const dateRangePickerOpenEvent = evnt => {
785
+ const formReadonly = computeFormReadonly.value;
786
+ if (!formReadonly) {
787
+ evnt.preventDefault();
788
+ showPanel();
789
+ }
790
+ };
791
+ const clickEvent = evnt => {
792
+ triggerEvent(evnt);
793
+ };
794
+ const handleShortcutEvent = ({
795
+ option,
796
+ $event
797
+ }) => {
798
+ const {
799
+ type
800
+ } = props;
801
+ const shortcutOpts = computeShortcutOpts.value;
802
+ const {
803
+ autoClose
804
+ } = shortcutOpts;
805
+ const {
806
+ code,
807
+ clickMethod
808
+ } = option;
809
+ let startValue = reactData.startValue;
810
+ let endValue = reactData.endValue;
811
+ let value = getRangeValue(startValue, endValue);
812
+ const shortcutParams = {
813
+ $dateRangePicker: $xeDateRangePicker,
814
+ option: option,
815
+ value,
816
+ startValue,
817
+ endValue,
818
+ code
819
+ };
820
+ if (!clickMethod && code) {
821
+ const gCommandOpts = _ui.commands.get(code);
822
+ const drpCommandMethod = gCommandOpts ? gCommandOpts.dateRangePickerCommandMethod : null;
823
+ if (drpCommandMethod) {
824
+ drpCommandMethod(shortcutParams);
825
+ } else {
826
+ const dateValueFormat = computeDateValueFormat.value;
827
+ const firstDayOfWeek = computeFirstDayOfWeek.value;
828
+ switch (code) {
829
+ case 'last1':
830
+ case 'last3':
831
+ case 'last7':
832
+ case 'last30':
833
+ case 'last60':
834
+ case 'last90':
835
+ case 'last180':
836
+ {
837
+ const restObj = (0, _util.getRangeDateByCode)(code, value, type, {
838
+ valueFormat: dateValueFormat,
839
+ firstDay: firstDayOfWeek
840
+ });
841
+ startValue = restObj.startValue;
842
+ endValue = restObj.endValue;
843
+ value = getRangeValue(startValue, endValue);
844
+ shortcutParams.value = value;
845
+ shortcutParams.startValue = startValue;
846
+ shortcutParams.endValue = endValue;
847
+ handleChange(startValue, endValue, $event);
848
+ break;
849
+ }
850
+ default:
851
+ (0, _log.errLog)('vxe.error.notCommands', [code]);
852
+ break;
853
+ }
854
+ }
855
+ } else {
856
+ const optClickMethod = clickMethod || shortcutOpts.clickMethod;
857
+ if (optClickMethod) {
858
+ optClickMethod(shortcutParams);
859
+ }
860
+ }
861
+ if (autoClose) {
862
+ hidePanel();
863
+ }
864
+ dispatchEvent('shortcut-click', shortcutParams, $event);
865
+ };
866
+ const dispatchEvent = (type, params, evnt) => {
867
+ emit(type, (0, _ui.createEvent)(evnt, {
868
+ $dateRangePicker: $xeDateRangePicker
869
+ }, params));
870
+ };
871
+ dateRangePickerMethods = {
872
+ dispatchEvent,
873
+ setModelValue(startValue, endValue) {
874
+ reactData.startValue = startValue || '';
875
+ reactData.endValue = endValue || '';
876
+ const value = getRangeValue(startValue, endValue);
877
+ emit('update:modelValue', value);
878
+ },
879
+ setModelValueByEvent(evnt, startValue, endValue) {
880
+ handleChange(startValue || '', endValue || '', evnt);
881
+ },
882
+ focus() {
883
+ const inputElem = refInputTarget.value;
884
+ reactData.isActivated = true;
885
+ inputElem.focus();
886
+ return (0, _vue.nextTick)();
887
+ },
888
+ blur() {
889
+ const inputElem = refInputTarget.value;
890
+ inputElem.blur();
891
+ reactData.isActivated = false;
892
+ return (0, _vue.nextTick)();
893
+ },
894
+ select() {
895
+ const inputElem = refInputTarget.value;
896
+ inputElem.select();
897
+ reactData.isActivated = false;
898
+ return (0, _vue.nextTick)();
899
+ },
900
+ showPanel,
901
+ hidePanel,
902
+ updatePlacement
903
+ };
904
+ Object.assign($xeDateRangePicker, dateRangePickerMethods);
905
+ const renderShortcutBtn = (pos, isVertical) => {
906
+ const shortcutOpts = computeShortcutOpts.value;
907
+ const {
908
+ position,
909
+ align,
910
+ mode
911
+ } = shortcutOpts;
912
+ const shortcutList = computeShortcutList.value;
913
+ if ((0, _utils.isEnableConf)(shortcutOpts) && shortcutList.length && (position || 'left') === pos) {
914
+ return (0, _vue.h)('div', {
915
+ class: `vxe-date-range-picker--layout-${pos}-wrapper`
916
+ }, [(0, _vue.h)(_buttonGroup.default, {
917
+ options: shortcutList,
918
+ mode,
919
+ align,
920
+ vertical: isVertical,
921
+ onClick: handleShortcutEvent
922
+ })]);
923
+ }
924
+ return (0, _ui.renderEmptyElement)($xeDateRangePicker);
925
+ };
926
+ const renderPanel = () => {
927
+ const {
928
+ type,
929
+ separator,
930
+ autoClose,
931
+ showConfirmButton,
932
+ showClearButton
933
+ } = props;
934
+ const {
935
+ initialized,
936
+ isAniVisible,
937
+ visiblePanel,
938
+ panelPlacement,
939
+ panelStyle,
940
+ startValue,
941
+ endValue
942
+ } = reactData;
943
+ const vSize = computeSize.value;
944
+ const btnTransfer = computeBtnTransfer.value;
945
+ const shortcutOpts = computeShortcutOpts.value;
946
+ const isClearable = computeIsClearable.value;
947
+ const panelLabelObj = computePanelLabelObj.value;
948
+ const shortcutList = computeShortcutList.value;
949
+ const isDateTimeType = computeIsDateTimeType.value;
950
+ const {
951
+ startLabel,
952
+ endLabel
953
+ } = panelLabelObj;
954
+ const {
955
+ position
956
+ } = shortcutOpts;
957
+ const headerSlot = slots.header;
958
+ const footerSlot = slots.footer;
959
+ const topSlot = slots.top;
960
+ const bottomSlot = slots.bottom;
961
+ const leftSlot = slots.left;
962
+ const rightSlot = slots.right;
963
+ const hasShortcutBtn = shortcutList.length > 0;
964
+ const showConfirmBtn = showConfirmButton === null ? isDateTimeType || !autoClose : showConfirmButton;
965
+ const showClearBtn = showClearButton === null ? isClearable : showClearButton;
966
+ return (0, _vue.h)(_vue.Teleport, {
967
+ to: 'body',
968
+ disabled: btnTransfer ? !initialized : true
969
+ }, [(0, _vue.h)('div', {
970
+ ref: refInputPanel,
971
+ class: ['vxe-table--ignore-clear vxe-date-range-picker--panel', `type--${type}`, {
972
+ [`size--${vSize}`]: vSize,
973
+ 'is--transfer': btnTransfer,
974
+ 'ani--leave': isAniVisible,
975
+ 'ani--enter': visiblePanel,
976
+ 'show--top': !!(topSlot || headerSlot || hasShortcutBtn && (position === 'top' || position === 'header')),
977
+ 'show--bottom': !!(bottomSlot || footerSlot || hasShortcutBtn && (position === 'bottom' || position === 'footer')),
978
+ 'show--left': !!(leftSlot || hasShortcutBtn && position === 'left'),
979
+ 'show--right': !!(rightSlot || hasShortcutBtn && position === 'right')
980
+ }],
981
+ placement: panelPlacement,
982
+ style: panelStyle
983
+ }, initialized && (visiblePanel || isAniVisible) ? [(0, _vue.h)('div', {
984
+ ref: refPanelWrapper,
985
+ class: ['vxe-date-range-picker--layout-all-wrapper', `type--${type}`, {
986
+ [`size--${vSize}`]: vSize
987
+ }]
988
+ }, [topSlot ? (0, _vue.h)('div', {
989
+ class: 'vxe-date-range-picker--layout-top-wrapper'
990
+ }, topSlot({})) : renderShortcutBtn('top'), (0, _vue.h)('div', {
991
+ class: 'vxe-date-range-picker--layout-body-layout-wrapper'
992
+ }, [leftSlot ? (0, _vue.h)('div', {
993
+ class: 'vxe-date-range-picker--layout-left-wrapper'
994
+ }, leftSlot({})) : renderShortcutBtn('left', true), (0, _vue.h)('div', {
995
+ class: 'vxe-date-range-picker--layout-body-content-wrapper'
996
+ }, [headerSlot ? (0, _vue.h)('div', {
997
+ class: 'vxe-date-range-picker--layout-header-wrapper'
998
+ }, headerSlot({})) : renderShortcutBtn('header'), (0, _vue.h)('div', {
999
+ class: 'vxe-date-range-picker--layout-body-wrapper'
1000
+ }, [(0, _vue.h)(_datePanel.default, {
1001
+ ref: refStartDatePanel,
1002
+ modelValue: startValue,
1003
+ type: props.type,
1004
+ className: props.className,
1005
+ minDate: props.minDate,
1006
+ maxDate: props.maxDate,
1007
+ startDay: props.startDay,
1008
+ endDate: endValue,
1009
+ labelFormat: props.labelFormat,
1010
+ valueFormat: props.valueFormat,
1011
+ festivalMethod: props.festivalMethod,
1012
+ disabledMethod: props.disabledMethod,
1013
+ selectDay: props.selectDay,
1014
+ onChange: startPanelChangeEvent
1015
+ }), (0, _vue.h)(_datePanel.default, {
1016
+ ref: refEndDatePanel,
1017
+ modelValue: endValue,
1018
+ type: props.type,
1019
+ className: props.className,
1020
+ minDate: props.minDate,
1021
+ maxDate: props.maxDate,
1022
+ startDay: props.startDay,
1023
+ startDate: startValue,
1024
+ labelFormat: props.labelFormat,
1025
+ valueFormat: props.valueFormat,
1026
+ festivalMethod: props.festivalMethod,
1027
+ disabledMethod: props.disabledMethod,
1028
+ selectDay: props.selectDay,
1029
+ onChange: endPanelChangeEvent
1030
+ })]), (0, _vue.h)('div', {
1031
+ class: 'vxe-date-range-picker--layout-footer-wrapper'
1032
+ }, [(0, _vue.h)('div', {
1033
+ class: 'vxe-date-range-picker--layout-footer-label'
1034
+ }, startLabel || endLabel ? [(0, _vue.h)('span', startLabel), (0, _vue.h)('span', `${separator || ''}`), (0, _vue.h)('span', endLabel)] : []), (0, _vue.h)('div', {
1035
+ class: 'vxe-date-range-picker--layout-footer-custom'
1036
+ }, footerSlot ? footerSlot({}) : [renderShortcutBtn('footer')]), (0, _vue.h)('div', {
1037
+ class: 'vxe-date-range-picker--layout-footer-btns'
1038
+ }, [showClearBtn ? (0, _vue.h)(_button.default, {
1039
+ size: 'mini',
1040
+ disabled: !(startValue || endValue),
1041
+ content: (0, _ui.getI18n)('vxe.button.clear'),
1042
+ onClick: clearValueEvent
1043
+ }) : (0, _ui.renderEmptyElement)($xeDateRangePicker), showConfirmBtn ? (0, _vue.h)(_button.default, {
1044
+ size: 'mini',
1045
+ status: 'primary',
1046
+ content: (0, _ui.getI18n)('vxe.button.confirm'),
1047
+ onClick: confirmEvent
1048
+ }) : (0, _ui.renderEmptyElement)($xeDateRangePicker)])])]), rightSlot ? (0, _vue.h)('div', {
1049
+ class: 'vxe-date-range-picker--layout-right-wrapper'
1050
+ }, rightSlot({})) : renderShortcutBtn('right', true)]), bottomSlot ? (0, _vue.h)('div', {
1051
+ class: 'vxe-date-range-picker--layout-bottom-wrapper'
1052
+ }, bottomSlot({})) : renderShortcutBtn('bottom')])] : [])]);
1053
+ };
1054
+ const renderPrefixIcon = () => {
1055
+ const {
1056
+ prefixIcon
1057
+ } = props;
1058
+ const prefixSlot = slots.prefix;
1059
+ return prefixSlot || prefixIcon ? (0, _vue.h)('div', {
1060
+ class: 'vxe-date-range-picker--prefix',
1061
+ onClick: clickPrefixEvent
1062
+ }, [(0, _vue.h)('div', {
1063
+ class: 'vxe-date-range-picker--prefix-icon'
1064
+ }, prefixSlot ? (0, _vn.getSlotVNs)(prefixSlot({})) : [(0, _vue.h)('i', {
1065
+ class: prefixIcon
1066
+ })])]) : null;
1067
+ };
1068
+ const renderSuffixIcon = () => {
1069
+ const {
1070
+ suffixIcon
1071
+ } = props;
1072
+ const {
1073
+ startValue,
1074
+ endValue
1075
+ } = reactData;
1076
+ const suffixSlot = slots.suffix;
1077
+ const isDisabled = computeIsDisabled.value;
1078
+ const isClearable = computeIsClearable.value;
1079
+ return (0, _vue.h)('div', {
1080
+ class: ['vxe-date-range-picker--suffix', {
1081
+ 'is--clear': isClearable && !isDisabled && (startValue || endValue)
1082
+ }]
1083
+ }, [isClearable ? (0, _vue.h)('div', {
1084
+ class: 'vxe-date-range-picker--clear-icon',
1085
+ onClick: clearValueEvent
1086
+ }, [(0, _vue.h)('i', {
1087
+ class: (0, _ui.getIcon)().INPUT_CLEAR
1088
+ })]) : (0, _ui.renderEmptyElement)($xeDateRangePicker), renderExtraSuffixIcon(), suffixSlot || suffixIcon ? (0, _vue.h)('div', {
1089
+ class: 'vxe-date-range-picker--suffix-icon',
1090
+ onClick: clickSuffixEvent
1091
+ }, suffixSlot ? (0, _vn.getSlotVNs)(suffixSlot({})) : [(0, _vue.h)('i', {
1092
+ class: suffixIcon
1093
+ })]) : (0, _ui.renderEmptyElement)($xeDateRangePicker)]);
1094
+ };
1095
+ const renderExtraSuffixIcon = () => {
1096
+ return (0, _vue.h)('div', {
1097
+ class: 'vxe-date-range-picker--control-icon',
1098
+ onClick: dateRangePickerOpenEvent
1099
+ }, [(0, _vue.h)('i', {
1100
+ class: ['vxe-date-range-picker--date-picker-icon', (0, _ui.getIcon)().DATE_PICKER_DATE]
1101
+ })]);
1102
+ };
1103
+ const renderVN = () => {
1104
+ const {
1105
+ className,
1106
+ type,
1107
+ name,
1108
+ autoComplete
1109
+ } = props;
1110
+ const {
1111
+ startValue,
1112
+ endValue,
1113
+ visiblePanel,
1114
+ isActivated
1115
+ } = reactData;
1116
+ const vSize = computeSize.value;
1117
+ const isDisabled = computeIsDisabled.value;
1118
+ const formReadonly = computeFormReadonly.value;
1119
+ const inputLabel = computeInputLabel.value;
1120
+ if (formReadonly) {
1121
+ return (0, _vue.h)('div', {
1122
+ ref: refElem,
1123
+ class: ['vxe-date-range-picker--readonly', `type--${type}`, className]
1124
+ }, inputLabel);
1125
+ }
1126
+ const inpPlaceholder = computeInpPlaceholder.value;
1127
+ const isClearable = computeIsClearable.value;
1128
+ const prefix = renderPrefixIcon();
1129
+ const suffix = renderSuffixIcon();
1130
+ return (0, _vue.h)('div', {
1131
+ ref: refElem,
1132
+ class: ['vxe-date-range-picker', `type--${type}`, className, {
1133
+ [`size--${vSize}`]: vSize,
1134
+ 'is--prefix': !!prefix,
1135
+ 'is--suffix': !!suffix,
1136
+ 'is--visible': visiblePanel,
1137
+ 'is--disabled': isDisabled,
1138
+ 'is--active': isActivated,
1139
+ 'show--clear': isClearable && !isDisabled && (startValue || endValue)
1140
+ }],
1141
+ spellcheck: false
1142
+ }, [prefix || (0, _ui.renderEmptyElement)($xeDateRangePicker), (0, _vue.h)('div', {
1143
+ class: 'vxe-date-range-picker--wrapper'
1144
+ }, [(0, _vue.h)('input', {
1145
+ ref: refInputTarget,
1146
+ class: 'vxe-date-range-picker--inner',
1147
+ value: inputLabel,
1148
+ name,
1149
+ type: 'text',
1150
+ placeholder: inpPlaceholder,
1151
+ readonly: true,
1152
+ disabled: isDisabled,
1153
+ autocomplete: autoComplete,
1154
+ onKeydown: keydownEvent,
1155
+ onKeyup: keyupEvent,
1156
+ onClick: clickEvent,
1157
+ onChange: changeEvent,
1158
+ onFocus: focusEvent,
1159
+ onBlur: blurEvent
1160
+ })]), suffix || (0, _ui.renderEmptyElement)($xeDateRangePicker),
1161
+ // 下拉面板
1162
+ renderPanel()]);
1163
+ };
1164
+ (0, _vue.watch)(() => props.modelValue, () => {
1165
+ updateModelValue(true);
1166
+ });
1167
+ (0, _vue.watch)(computeMVal, () => {
1168
+ updateModelValue(false);
1169
+ });
1170
+ updateModelValue(true);
1171
+ (0, _vue.nextTick)(() => {
1172
+ _ui.globalEvents.on($xeDateRangePicker, 'mousewheel', handleGlobalMousewheelEvent);
1173
+ _ui.globalEvents.on($xeDateRangePicker, 'mousedown', handleGlobalMousedownEvent);
1174
+ _ui.globalEvents.on($xeDateRangePicker, 'blur', handleGlobalBlurEvent);
1175
+ });
1176
+ (0, _vue.onDeactivated)(() => {
1177
+ checkValue();
1178
+ });
1179
+ (0, _vue.onUnmounted)(() => {
1180
+ _ui.globalEvents.off($xeDateRangePicker, 'mousewheel');
1181
+ _ui.globalEvents.off($xeDateRangePicker, 'mousedown');
1182
+ _ui.globalEvents.off($xeDateRangePicker, 'blur');
1183
+ });
1184
+ (0, _vue.onBeforeUnmount)(() => {
1185
+ checkValue();
1186
+ });
1187
+ (0, _vue.provide)('$xeDateRangePicker', $xeDateRangePicker);
1188
+ $xeDateRangePicker.renderVN = renderVN;
1189
+ return $xeDateRangePicker;
1190
+ },
1191
+ render() {
1192
+ return this.renderVN();
1193
+ }
1194
+ });