vxe-pc-ui 4.1.19 → 4.1.21

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 (259) hide show
  1. package/README.md +83 -2
  2. package/es/anchor/src/anchor-link.js +1 -1
  3. package/es/anchor/src/anchor.js +1 -1
  4. package/es/breadcrumb/src/breadcrumb.js +1 -1
  5. package/es/button/src/button-group.js +4 -1
  6. package/es/button/src/button.js +2 -1
  7. package/es/calendar/src/calendar.js +64 -32
  8. package/es/card/src/card.js +4 -3
  9. package/es/carousel/src/carousel-item.js +13 -3
  10. package/es/carousel/src/carousel.js +16 -8
  11. package/es/checkbox/src/checkbox.js +30 -14
  12. package/es/checkbox/src/group.js +17 -8
  13. package/es/collapse-pane/index.js +1 -1
  14. package/es/countdown/src/countdown.js +17 -8
  15. package/es/date-picker/src/date-picker.js +148 -69
  16. package/es/drawer/src/drawer.js +86 -46
  17. package/es/form/render/index.js +1 -2
  18. package/es/form/src/form-config-item.js +4 -3
  19. package/es/form/src/form-gather.js +5 -3
  20. package/es/form/src/form-item.js +15 -10
  21. package/es/form/src/form.js +11 -8
  22. package/es/form/src/render.js +2 -1
  23. package/es/form/src/util.js +2 -1
  24. package/es/icon/src/icon.js +3 -0
  25. package/es/icon/style.css +1 -1
  26. package/es/icon-picker/src/icon-picker.js +24 -11
  27. package/es/image/src/group.js +4 -1
  28. package/es/image/src/preview.js +1 -1
  29. package/es/input/src/input.js +131 -66
  30. package/es/layout-aside/src/layout-aside.js +1 -1
  31. package/es/list/src/list.js +7 -5
  32. package/es/list-design/src/list-design.js +1 -1
  33. package/es/list-design/src/list-view.js +1 -1
  34. package/es/loading/src/loading.js +4 -1
  35. package/es/menu/src/menu.js +4 -3
  36. package/es/number-input/src/number-input.js +100 -77
  37. package/es/pager/src/pager.js +85 -45
  38. package/es/password-input/src/password-input.js +2 -2
  39. package/es/print/src/page-break.js +11 -2
  40. package/es/print/src/print.js +6 -4
  41. package/es/pulldown/src/pulldown.js +19 -13
  42. package/es/radio/src/button.js +2 -2
  43. package/es/radio/src/group.js +8 -4
  44. package/es/row/src/row.js +1 -1
  45. package/es/select/src/optgroup.js +19 -10
  46. package/es/select/src/option.js +17 -9
  47. package/es/select/src/select.js +64 -41
  48. package/es/select/src/util.js +2 -2
  49. package/es/style.css +1 -1
  50. package/es/style.min.css +1 -1
  51. package/es/tabs/src/tab-pane.js +13 -3
  52. package/es/tabs/src/tabs.js +57 -47
  53. package/es/textarea/src/textarea.js +28 -10
  54. package/es/tooltip/src/tooltip.js +107 -78
  55. package/es/tree/src/tree.js +6 -3
  56. package/es/tree-select/src/tree-select.js +18 -10
  57. package/es/ui/index.js +1 -7
  58. package/es/ui/src/log.js +1 -1
  59. package/es/upload/src/upload.js +5 -5
  60. package/lib/anchor/src/anchor-link.js +1 -1
  61. package/lib/anchor/src/anchor-link.min.js +1 -1
  62. package/lib/anchor/src/anchor.js +1 -1
  63. package/lib/anchor/src/anchor.min.js +1 -1
  64. package/lib/breadcrumb/src/breadcrumb.js +1 -1
  65. package/lib/breadcrumb/src/breadcrumb.min.js +1 -1
  66. package/lib/button/src/button-group.js +4 -1
  67. package/lib/button/src/button-group.min.js +1 -1
  68. package/lib/button/src/button.js +2 -1
  69. package/lib/button/src/button.min.js +1 -1
  70. package/lib/calendar/src/calendar.js +42 -24
  71. package/lib/calendar/src/calendar.min.js +1 -1
  72. package/lib/card/src/card.js +6 -5
  73. package/lib/card/src/card.min.js +1 -1
  74. package/lib/carousel/src/carousel-item.js +16 -3
  75. package/lib/carousel/src/carousel-item.min.js +1 -1
  76. package/lib/carousel/src/carousel.js +18 -8
  77. package/lib/carousel/src/carousel.min.js +1 -1
  78. package/lib/checkbox/src/checkbox.js +16 -12
  79. package/lib/checkbox/src/checkbox.min.js +1 -1
  80. package/lib/checkbox/src/group.js +10 -7
  81. package/lib/checkbox/src/group.min.js +1 -1
  82. package/lib/collapse-pane/index.js +1 -1
  83. package/lib/collapse-pane/index.min.js +1 -1
  84. package/lib/countdown/src/countdown.js +15 -7
  85. package/lib/countdown/src/countdown.min.js +1 -1
  86. package/lib/date-picker/src/date-picker.js +124 -62
  87. package/lib/date-picker/src/date-picker.min.js +1 -1
  88. package/lib/drawer/src/drawer.js +15 -30
  89. package/lib/drawer/src/drawer.min.js +1 -1
  90. package/lib/form/render/index.js +1 -4
  91. package/lib/form/render/index.min.js +1 -1
  92. package/lib/form/src/form-config-item.js +4 -5
  93. package/lib/form/src/form-config-item.min.js +1 -1
  94. package/lib/form/src/form-gather.js +11 -9
  95. package/lib/form/src/form-gather.min.js +1 -1
  96. package/lib/form/src/form-item.js +11 -12
  97. package/lib/form/src/form-item.min.js +1 -1
  98. package/lib/form/src/form.js +7 -7
  99. package/lib/form/src/form.min.js +1 -1
  100. package/lib/form/src/render.js +2 -1
  101. package/lib/form/src/util.js +2 -1
  102. package/lib/icon/src/icon.js +3 -0
  103. package/lib/icon/src/icon.min.js +1 -1
  104. package/lib/icon/style/style.css +1 -1
  105. package/lib/icon/style/style.min.css +1 -1
  106. package/lib/icon-picker/src/icon-picker.js +22 -12
  107. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  108. package/lib/image/src/group.js +4 -1
  109. package/lib/image/src/group.min.js +1 -1
  110. package/lib/image/src/preview.js +1 -1
  111. package/lib/image/src/preview.min.js +1 -1
  112. package/lib/index.umd.js +884 -649
  113. package/lib/index.umd.min.js +1 -1
  114. package/lib/input/src/input.js +79 -51
  115. package/lib/input/src/input.min.js +1 -1
  116. package/lib/layout-aside/src/layout-aside.js +1 -1
  117. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  118. package/lib/list/src/list.js +9 -5
  119. package/lib/list/src/list.min.js +1 -1
  120. package/lib/list-design/src/list-design.js +1 -1
  121. package/lib/list-design/src/list-design.min.js +1 -1
  122. package/lib/list-design/src/list-view.js +1 -1
  123. package/lib/list-design/src/list-view.min.js +1 -1
  124. package/lib/loading/src/loading.js +4 -1
  125. package/lib/loading/src/loading.min.js +1 -1
  126. package/lib/menu/src/menu.js +4 -3
  127. package/lib/menu/src/menu.min.js +1 -1
  128. package/lib/number-input/src/number-input.js +67 -69
  129. package/lib/number-input/src/number-input.min.js +1 -1
  130. package/lib/pager/src/pager.js +40 -39
  131. package/lib/pager/src/pager.min.js +1 -1
  132. package/lib/password-input/src/password-input.js +2 -2
  133. package/lib/print/src/page-break.js +14 -2
  134. package/lib/print/src/page-break.min.js +1 -1
  135. package/lib/print/src/print.js +8 -6
  136. package/lib/print/src/print.min.js +1 -1
  137. package/lib/pulldown/src/pulldown.js +19 -13
  138. package/lib/pulldown/src/pulldown.min.js +1 -1
  139. package/lib/radio/src/button.js +2 -2
  140. package/lib/radio/src/group.js +8 -4
  141. package/lib/radio/src/group.min.js +1 -1
  142. package/lib/row/src/row.js +1 -1
  143. package/lib/row/src/row.min.js +1 -1
  144. package/lib/select/src/optgroup.js +12 -9
  145. package/lib/select/src/optgroup.min.js +1 -1
  146. package/lib/select/src/option.js +9 -7
  147. package/lib/select/src/option.min.js +1 -1
  148. package/lib/select/src/select.js +52 -41
  149. package/lib/select/src/select.min.js +1 -1
  150. package/lib/select/src/util.js +2 -2
  151. package/lib/select/src/util.min.js +1 -1
  152. package/lib/style.css +1 -1
  153. package/lib/style.min.css +1 -1
  154. package/lib/tabs/src/tab-pane.js +16 -3
  155. package/lib/tabs/src/tab-pane.min.js +1 -1
  156. package/lib/tabs/src/tabs.js +62 -50
  157. package/lib/tabs/src/tabs.min.js +1 -1
  158. package/lib/textarea/src/textarea.js +4 -4
  159. package/lib/tooltip/src/tooltip.js +96 -88
  160. package/lib/tooltip/src/tooltip.min.js +1 -1
  161. package/lib/tree/src/tree.js +2 -2
  162. package/lib/tree/src/tree.min.js +1 -1
  163. package/lib/tree-select/src/tree-select.js +13 -8
  164. package/lib/tree-select/src/tree-select.min.js +1 -1
  165. package/lib/ui/index.js +3 -10
  166. package/lib/ui/index.min.js +1 -1
  167. package/lib/ui/src/log.js +1 -1
  168. package/lib/ui/src/log.min.js +1 -1
  169. package/lib/upload/src/upload.js +5 -5
  170. package/lib/upload/src/upload.min.js +1 -1
  171. package/package.json +2 -2
  172. package/packages/anchor/src/anchor-link.ts +2 -2
  173. package/packages/anchor/src/anchor.ts +2 -2
  174. package/packages/breadcrumb/src/breadcrumb.ts +2 -2
  175. package/packages/button/src/button-group.ts +4 -1
  176. package/packages/button/src/button.ts +6 -5
  177. package/packages/calendar/src/calendar.ts +67 -35
  178. package/packages/card/src/card.ts +6 -4
  179. package/packages/carousel/src/carousel-item.ts +19 -4
  180. package/packages/carousel/src/carousel.ts +19 -11
  181. package/packages/checkbox/src/checkbox.ts +34 -15
  182. package/packages/checkbox/src/group.ts +22 -10
  183. package/packages/collapse-pane/index.ts +1 -1
  184. package/packages/countdown/src/countdown.ts +20 -11
  185. package/packages/date-picker/src/date-picker.ts +160 -80
  186. package/packages/drawer/src/drawer.ts +91 -50
  187. package/packages/form/render/index.ts +1 -3
  188. package/packages/form/src/form-config-item.ts +4 -3
  189. package/packages/form/src/form-gather.ts +5 -3
  190. package/packages/form/src/form-item.ts +15 -10
  191. package/packages/form/src/form.ts +12 -10
  192. package/packages/form/src/render.ts +2 -1
  193. package/packages/form/src/util.ts +2 -1
  194. package/packages/icon/src/icon.ts +3 -0
  195. package/packages/icon-picker/src/icon-picker.ts +31 -17
  196. package/packages/image/src/group.ts +4 -1
  197. package/packages/image/src/preview.ts +2 -2
  198. package/packages/input/src/input.ts +138 -75
  199. package/packages/layout-aside/src/layout-aside.ts +2 -2
  200. package/packages/list/src/list.ts +12 -11
  201. package/packages/list-design/src/list-design.ts +2 -2
  202. package/packages/list-design/src/list-view.ts +2 -2
  203. package/packages/loading/src/loading.ts +5 -2
  204. package/packages/menu/src/menu.ts +5 -4
  205. package/packages/number-input/src/number-input.ts +102 -79
  206. package/packages/pager/src/pager.ts +91 -50
  207. package/packages/password-input/src/password-input.ts +2 -2
  208. package/packages/print/src/page-break.ts +18 -4
  209. package/packages/print/src/print.ts +10 -5
  210. package/packages/pulldown/src/pulldown.ts +28 -22
  211. package/packages/radio/src/button.ts +2 -2
  212. package/packages/radio/src/group.ts +9 -5
  213. package/packages/row/src/row.ts +2 -2
  214. package/packages/select/src/optgroup.ts +22 -13
  215. package/packages/select/src/option.ts +18 -10
  216. package/packages/select/src/select.ts +79 -52
  217. package/packages/select/src/util.ts +3 -3
  218. package/packages/tabs/src/tab-pane.ts +20 -5
  219. package/packages/tabs/src/tabs.ts +59 -49
  220. package/packages/textarea/src/textarea.ts +28 -10
  221. package/packages/tooltip/src/tooltip.ts +118 -84
  222. package/packages/tree/src/tree.ts +7 -4
  223. package/packages/tree-select/src/tree-select.ts +25 -16
  224. package/packages/ui/index.ts +0 -7
  225. package/packages/upload/src/upload.ts +6 -6
  226. package/types/components/calendar.d.ts +6 -0
  227. package/types/components/carousel.d.ts +5 -0
  228. package/types/components/countdown.d.ts +4 -0
  229. package/types/components/date-picker.d.ts +23 -5
  230. package/types/components/drawer.d.ts +0 -1
  231. package/types/components/form.d.ts +4 -2
  232. package/types/components/icon-picker.d.ts +4 -0
  233. package/types/components/input.d.ts +9 -1
  234. package/types/components/list.d.ts +1 -0
  235. package/types/components/number-input.d.ts +6 -2
  236. package/types/components/optgroup.d.ts +10 -4
  237. package/types/components/pulldown.d.ts +5 -1
  238. package/types/components/select.d.ts +4 -0
  239. package/types/components/tabs.d.ts +4 -0
  240. package/types/components/toolbar.d.ts +5 -0
  241. package/types/components/tooltip.d.ts +4 -0
  242. package/types/components/tree-select.d.ts +4 -0
  243. package/types/ui/index.d.ts +0 -22
  244. /package/es/{collapse-pane → collapse}/src/collapse-pane.js +0 -0
  245. /package/es/icon/style/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
  246. /package/es/icon/style/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
  247. /package/es/icon/style/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
  248. /package/es/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
  249. /package/es/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
  250. /package/es/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
  251. /package/lib/{collapse-pane → collapse}/src/collapse-pane.js +0 -0
  252. /package/lib/{collapse-pane → collapse}/src/collapse-pane.min.js +0 -0
  253. /package/lib/icon/style/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
  254. /package/lib/icon/style/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
  255. /package/lib/icon/style/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
  256. /package/lib/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
  257. /package/lib/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
  258. /package/lib/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
  259. /package/packages/{collapse-pane → collapse}/src/collapse-pane.ts +0 -0
@@ -1,21 +1,30 @@
1
1
  import { defineComponent, h, Teleport, ref, Ref, computed, reactive, inject, nextTick, watch, onUnmounted, PropType, createCommentVNode } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
- import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize, VxeComponentStyleType } from '../../ui'
3
+ import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize } from '../../ui'
4
4
  import { getFuncText, getLastZIndex, nextZIndex } from '../../ui/src/utils'
5
5
  import { getAbsolutePos, getEventTargetNode } from '../../ui/src/dom'
6
6
  import { toStringTimeDate, getDateQuarter } from './util'
7
7
  import { getSlotVNs } from '../..//ui/src/vn'
8
8
 
9
- import type { VxeDatePickerConstructor, VxeDatePickerEmits, DatePickerReactData, DatePickerMethods, VxeDatePickerPropTypes, DatePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, VxeTableConstructor, VxeTablePrivateMethods, VxeModalConstructor, VxeModalMethods, VxeDatePickerDefines } from '../../../types'
9
+ import type { VxeDatePickerConstructor, VxeDatePickerEmits, DatePickerInternalData, DatePickerReactData, VxeComponentStyleType, DatePickerMethods, VxeDatePickerPropTypes, DatePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeTableConstructor, VxeTablePrivateMethods, VxeModalConstructor, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDatePickerDefines } from '../../../types'
10
10
 
11
11
  export default defineComponent({
12
12
  name: 'VxeDatePicker',
13
13
  props: {
14
14
  modelValue: [String, Number, Date] as PropType<VxeDatePickerPropTypes.ModelValue>,
15
- immediate: { type: Boolean as PropType<VxeDatePickerPropTypes.Immediate>, default: true },
15
+ immediate: {
16
+ type: Boolean as PropType<VxeDatePickerPropTypes.Immediate>,
17
+ default: true
18
+ },
16
19
  name: String as PropType<VxeDatePickerPropTypes.Name>,
17
- type: { type: String as PropType<VxeDatePickerPropTypes.Type>, default: 'date' },
18
- clearable: { type: Boolean as PropType<VxeDatePickerPropTypes.Clearable>, default: () => getConfig().datePicker.clearable },
20
+ type: {
21
+ type: String as PropType<VxeDatePickerPropTypes.Type>,
22
+ default: 'date'
23
+ },
24
+ clearable: {
25
+ type: Boolean as PropType<VxeDatePickerPropTypes.Clearable>,
26
+ default: () => getConfig().datePicker.clearable
27
+ },
19
28
  readonly: {
20
29
  type: Boolean as PropType<VxeDatePickerPropTypes.Readonly>,
21
30
  default: null
@@ -25,30 +34,55 @@ export default defineComponent({
25
34
  default: null
26
35
  },
27
36
  placeholder: String as PropType<VxeDatePickerPropTypes.Placeholder>,
28
- maxlength: [String, Number] as PropType<VxeDatePickerPropTypes.Maxlength>,
29
- autocomplete: { type: String as PropType<VxeDatePickerPropTypes.Autocomplete>, default: 'off' },
37
+ maxLength: [String, Number] as PropType<VxeDatePickerPropTypes.MaxLength>,
38
+ autoComplete: {
39
+ type: String as PropType<VxeDatePickerPropTypes.AutoComplete>,
40
+ default: 'off'
41
+ },
30
42
  align: String as PropType<VxeDatePickerPropTypes.Align>,
31
43
  form: String as PropType<VxeDatePickerPropTypes.Form>,
32
44
  className: String as PropType<VxeDatePickerPropTypes.ClassName>,
33
- size: { type: String as PropType<VxeDatePickerPropTypes.Size>, default: () => getConfig().datePicker.size || getConfig().size },
45
+ size: {
46
+ type: String as PropType<VxeDatePickerPropTypes.Size>,
47
+ default: () => getConfig().datePicker.size || getConfig().size
48
+ },
34
49
  multiple: Boolean as PropType<VxeDatePickerPropTypes.Multiple>,
35
50
 
36
51
  // date、week、month、quarter、year
37
- startDate: { type: [String, Number, Date] as PropType<VxeDatePickerPropTypes.MinDate>, default: () => getConfig().datePicker.startDate },
38
- endDate: { type: [String, Number, Date] as PropType<VxeDatePickerPropTypes.MaxDate>, default: () => getConfig().datePicker.endDate },
52
+ startDate: {
53
+ type: [String, Number, Date] as PropType<VxeDatePickerPropTypes.MinDate>,
54
+ default: () => getConfig().datePicker.startDate
55
+ },
56
+ endDate: {
57
+ type: [String, Number, Date] as PropType<VxeDatePickerPropTypes.MaxDate>,
58
+ default: () => getConfig().datePicker.endDate
59
+ },
39
60
  minDate: [String, Number, Date] as PropType<VxeDatePickerPropTypes.MinDate>,
40
61
  maxDate: [String, Number, Date] as PropType<VxeDatePickerPropTypes.MaxDate>,
41
- // 已废弃 startWeek,被 startDay 替换
42
- startWeek: Number as PropType<VxeDatePickerPropTypes.StartDay>,
43
- startDay: { type: [String, Number] as PropType<VxeDatePickerPropTypes.StartDay>, default: () => getConfig().datePicker.startDay },
62
+ startDay: {
63
+ type: [String, Number] as PropType<VxeDatePickerPropTypes.StartDay>,
64
+ default: () => getConfig().datePicker.startDay
65
+ },
44
66
  labelFormat: String as PropType<VxeDatePickerPropTypes.LabelFormat>,
45
67
  valueFormat: String as PropType<VxeDatePickerPropTypes.ValueFormat>,
46
- editable: { type: Boolean as PropType<VxeDatePickerPropTypes.Editable>, default: true },
47
- festivalMethod: { type: Function as PropType<VxeDatePickerPropTypes.FestivalMethod>, default: () => getConfig().datePicker.festivalMethod },
48
- disabledMethod: { type: Function as PropType<VxeDatePickerPropTypes.DisabledMethod>, default: () => getConfig().datePicker.disabledMethod },
68
+ editable: {
69
+ type: Boolean as PropType<VxeDatePickerPropTypes.Editable>,
70
+ default: true
71
+ },
72
+ festivalMethod: {
73
+ type: Function as PropType<VxeDatePickerPropTypes.FestivalMethod>,
74
+ default: () => getConfig().datePicker.festivalMethod
75
+ },
76
+ disabledMethod: {
77
+ type: Function as PropType<VxeDatePickerPropTypes.DisabledMethod>,
78
+ default: () => getConfig().datePicker.disabledMethod
79
+ },
49
80
 
50
81
  // week
51
- selectDay: { type: [String, Number] as PropType<VxeDatePickerPropTypes.SelectDay>, default: () => getConfig().datePicker.selectDay },
82
+ selectDay: {
83
+ type: [String, Number] as PropType<VxeDatePickerPropTypes.SelectDay>,
84
+ default: () => getConfig().datePicker.selectDay
85
+ },
52
86
 
53
87
  prefixIcon: String as PropType<VxeDatePickerPropTypes.PrefixIcon>,
54
88
  suffixIcon: String as PropType<VxeDatePickerPropTypes.SuffixIcon>,
@@ -56,7 +90,14 @@ export default defineComponent({
56
90
  transfer: {
57
91
  type: Boolean as PropType<VxeDatePickerPropTypes.Transfer>,
58
92
  default: null
59
- }
93
+ },
94
+
95
+ // 已废弃 startWeek,被 startDay 替换
96
+ startWeek: Number as PropType<VxeDatePickerPropTypes.StartDay>,
97
+ // 已废弃
98
+ maxlength: [String, Number] as PropType<VxeDatePickerPropTypes.MaxLength>,
99
+ // 已废弃
100
+ autocomplete: String as PropType<VxeDatePickerPropTypes.AutoComplete>
60
101
  },
61
102
  emits: [
62
103
  'update:modelValue',
@@ -78,25 +119,22 @@ export default defineComponent({
78
119
  setup (props, context) {
79
120
  const { slots, emit } = context
80
121
 
81
- const $xeModal = inject<VxeModalConstructor & VxeModalMethods | null>('$xeModal', null)
82
- const $xeTable = inject<VxeTableConstructor & VxeTablePrivateMethods | null>('$xeTable', null)
83
- const $xeForm = inject<VxeFormConstructor & VxeFormPrivateMethods | null>('$xeForm', null)
122
+ const $xeModal = inject<(VxeModalConstructor & VxeModalMethods) | null>('$xeModal', null)
123
+ const $xeDrawer = inject<(VxeDrawerConstructor & VxeDrawerMethods) | null>('$xeDrawer', null)
124
+ const $xeTable = inject<(VxeTableConstructor & VxeTablePrivateMethods) | null>('$xeTable', null)
125
+ const $xeForm = inject<(VxeFormConstructor & VxeFormPrivateMethods) | null>('$xeForm', null)
84
126
  const formItemInfo = inject<VxeFormDefines.ProvideItemInfo | null>('xeFormItemInfo', null)
85
127
 
86
128
  const xID = XEUtils.uniqueId()
87
129
 
88
130
  const { computeSize } = useSize(props)
89
131
 
90
- const yearSize = 12
91
- const monthSize = 20
92
- const quarterSize = 8
93
-
94
132
  const reactData = reactive<DatePickerReactData>({
95
133
  initialized: false,
96
134
  panelIndex: 0,
97
135
  visiblePanel: false,
98
136
  isAniVisible: false,
99
- panelStyle: null,
137
+ panelStyle: {},
100
138
  panelPlacement: '',
101
139
  isActivated: false,
102
140
  inputValue: props.modelValue,
@@ -108,6 +146,13 @@ export default defineComponent({
108
146
  currentDate: null
109
147
  })
110
148
 
149
+ const internalData: DatePickerInternalData = {
150
+ yearSize: 12,
151
+ monthSize: 20,
152
+ quarterSize: 8,
153
+ hpTimeout: undefined
154
+ }
155
+
111
156
  const refElem = ref() as Ref<HTMLDivElement>
112
157
  const refInputTarget = ref() as Ref<HTMLInputElement>
113
158
  const refInputPanel = ref() as Ref<HTMLDivElement>
@@ -124,19 +169,12 @@ export default defineComponent({
124
169
  props,
125
170
  context,
126
171
  reactData,
172
+ internalData,
127
173
  getRefMaps: () => refMaps
128
174
  } as unknown as VxeDatePickerConstructor
129
175
 
130
176
  let datePickerMethods = {} as DatePickerMethods
131
177
 
132
- const parseDate = (value: VxeDatePickerPropTypes.ModelValue, format: string) => {
133
- const { type } = props
134
- if (type === 'time') {
135
- return toStringTimeDate(value)
136
- }
137
- return XEUtils.toStringDate(value, format)
138
- }
139
-
140
178
  const computeBtnTransfer = computed(() => {
141
179
  const { transfer } = props
142
180
  if (transfer === null) {
@@ -144,7 +182,7 @@ export default defineComponent({
144
182
  if (XEUtils.isBoolean(globalTransfer)) {
145
183
  return globalTransfer
146
184
  }
147
- if ($xeTable || $xeModal || $xeForm) {
185
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
148
186
  return true
149
187
  }
150
188
  }
@@ -209,7 +247,7 @@ export default defineComponent({
209
247
  if (XEUtils.isValidDate(date)) {
210
248
  return date
211
249
  }
212
- return null
250
+ return date
213
251
  })
214
252
  }
215
253
  return []
@@ -232,7 +270,13 @@ export default defineComponent({
232
270
  if (valueFormat) {
233
271
  return valueFormat
234
272
  }
235
- return type === 'time' ? 'HH:mm:ss' : (type === 'datetime' ? 'yyyy-MM-dd HH:mm:ss' : 'yyyy-MM-dd')
273
+ if (type === 'time') {
274
+ return 'HH:mm:ss'
275
+ }
276
+ if (type === 'datetime') {
277
+ return 'yyyy-MM-dd HH:mm:ss'
278
+ }
279
+ return 'yyyy-MM-dd'
236
280
  })
237
281
 
238
282
  const computeDateValue = computed(() => {
@@ -293,6 +337,7 @@ export default defineComponent({
293
337
  })
294
338
 
295
339
  const computeYearList = computed(() => {
340
+ const { yearSize } = internalData
296
341
  const { selectMonth, currentDate } = reactData
297
342
  const years: VxeDatePickerDefines.DateYearItem[] = []
298
343
  if (selectMonth && currentDate) {
@@ -344,7 +389,7 @@ export default defineComponent({
344
389
  })
345
390
 
346
391
  const computeWeekDatas = computed(() => {
347
- const weeks = []
392
+ const weeks: number[] = []
348
393
  const isDatePickerType = computeIsDatePickerType.value
349
394
  if (isDatePickerType) {
350
395
  let sWeek = computeFirstDayOfWeek.value
@@ -390,6 +435,7 @@ export default defineComponent({
390
435
  })
391
436
 
392
437
  const computeQuarterList = computed(() => {
438
+ const { quarterSize } = internalData
393
439
  const { selectMonth, currentDate } = reactData
394
440
  const quarters: VxeDatePickerDefines.DateQuarterItem[] = []
395
441
  if (selectMonth && currentDate) {
@@ -421,6 +467,7 @@ export default defineComponent({
421
467
  })
422
468
 
423
469
  const computeMonthList = computed(() => {
470
+ const { monthSize } = internalData
424
471
  const { selectMonth, currentDate } = reactData
425
472
  const months: VxeDatePickerDefines.DateMonthItem[] = []
426
473
  if (selectMonth && currentDate) {
@@ -576,12 +623,20 @@ export default defineComponent({
576
623
  return immediate
577
624
  })
578
625
 
626
+ const parseDate = (value: VxeDatePickerPropTypes.ModelValue, format: string) => {
627
+ const { type } = props
628
+ if (type === 'time') {
629
+ return toStringTimeDate(value)
630
+ }
631
+ return XEUtils.toStringDate(value, format)
632
+ }
633
+
579
634
  const triggerEvent = (evnt: Event & { type: 'input' | 'change' | 'keydown' | 'keyup' | 'wheel' | 'click' | 'focus' | 'blur' }) => {
580
635
  const { inputValue } = reactData
581
636
  datePickerMethods.dispatchEvent(evnt.type, { value: inputValue }, evnt)
582
637
  }
583
638
 
584
- const emitModel = (value: string, evnt: Event | { type: string }) => {
639
+ const handleChange = (value: string, evnt: Event | { type: string }) => {
585
640
  reactData.inputValue = value
586
641
  emit('update:modelValue', value)
587
642
  if (XEUtils.toValueString(props.modelValue) !== value) {
@@ -601,7 +656,7 @@ export default defineComponent({
601
656
  reactData.inputValue = value
602
657
  if (!isDatePickerType) {
603
658
  if (inpImmediate) {
604
- emitModel(value, evnt)
659
+ handleChange(value, evnt)
605
660
  } else {
606
661
  datePickerMethods.dispatchEvent('input', { value }, evnt)
607
662
  }
@@ -632,12 +687,10 @@ export default defineComponent({
632
687
  }
633
688
  }
634
689
 
635
- let hidePanelTimeout: number
636
-
637
- const hidePanel = (): Promise<void> => {
638
- return new Promise(resolve => {
690
+ const hidePanel = () => {
691
+ return new Promise<void>(resolve => {
639
692
  reactData.visiblePanel = false
640
- hidePanelTimeout = window.setTimeout(() => {
693
+ internalData.hpTimeout = window.setTimeout(() => {
641
694
  reactData.isAniVisible = false
642
695
  resolve()
643
696
  }, 350)
@@ -649,7 +702,7 @@ export default defineComponent({
649
702
  if (isDatePickerType) {
650
703
  hidePanel()
651
704
  }
652
- emitModel('', evnt)
705
+ handleChange('', evnt)
653
706
  datePickerMethods.dispatchEvent('clear', { value }, evnt)
654
707
  }
655
708
 
@@ -736,9 +789,11 @@ export default defineComponent({
736
789
  const sWeek = XEUtils.toNumber(props.selectDay) as VxeDatePickerPropTypes.SelectDay
737
790
  date = XEUtils.getWhatWeek(date, 0, sWeek, firstDayOfWeek)
738
791
  } else if (isDateTimeType) {
739
- date.setHours(datetimePanelValue.getHours())
740
- date.setMinutes(datetimePanelValue.getMinutes())
741
- date.setSeconds(datetimePanelValue.getSeconds())
792
+ if (datetimePanelValue) {
793
+ date.setHours(datetimePanelValue.getHours())
794
+ date.setMinutes(datetimePanelValue.getMinutes())
795
+ date.setSeconds(datetimePanelValue.getSeconds())
796
+ }
742
797
  }
743
798
  const inpVal = XEUtils.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek })
744
799
  dateCheckMonth(date)
@@ -757,25 +812,27 @@ export default defineComponent({
757
812
  }
758
813
  dateListValue.forEach(item => {
759
814
  if (item) {
760
- item.setHours(datetimePanelValue.getHours())
761
- item.setMinutes(datetimePanelValue.getMinutes())
762
- item.setSeconds(datetimePanelValue.getSeconds())
815
+ if (datetimePanelValue) {
816
+ item.setHours(datetimePanelValue.getHours())
817
+ item.setMinutes(datetimePanelValue.getMinutes())
818
+ item.setSeconds(datetimePanelValue.getSeconds())
819
+ }
763
820
  datetimeRest.push(item)
764
821
  }
765
822
  })
766
- emitModel(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' })
823
+ handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' })
767
824
  } else {
768
825
  // 如果是日期类型
769
826
  if (dateMultipleValue.some(val => XEUtils.isEqual(val, inpVal))) {
770
- emitModel(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' })
827
+ handleChange(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' })
771
828
  } else {
772
- emitModel(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' })
829
+ handleChange(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' })
773
830
  }
774
831
  }
775
832
  } else {
776
833
  // 如果为单选
777
834
  if (!XEUtils.isEqual(modelValue, inpVal)) {
778
- emitModel(inpVal, { type: 'update' })
835
+ handleChange(inpVal, { type: 'update' })
779
836
  }
780
837
  }
781
838
  }
@@ -792,7 +849,7 @@ export default defineComponent({
792
849
  if (type === 'time') {
793
850
  inpDateVal = XEUtils.toDateString(inpDateVal, dateLabelFormat)
794
851
  if (inputValue !== inpDateVal) {
795
- emitModel(inpDateVal, { type: 'check' })
852
+ handleChange(inpDateVal, { type: 'check' })
796
853
  }
797
854
  reactData.inputValue = inpDateVal
798
855
  } else {
@@ -802,9 +859,11 @@ export default defineComponent({
802
859
  const dateValue = computeDateValue.value
803
860
  if (inputValue !== XEUtils.toDateString(dateValue, dateLabelFormat) || inputValue !== XEUtils.toDateString(inpDateVal, dateLabelFormat)) {
804
861
  isChange = true
805
- datetimePanelValue.setHours(inpDateVal.getHours())
806
- datetimePanelValue.setMinutes(inpDateVal.getMinutes())
807
- datetimePanelValue.setSeconds(inpDateVal.getSeconds())
862
+ if (datetimePanelValue) {
863
+ datetimePanelValue.setHours(inpDateVal.getHours())
864
+ datetimePanelValue.setMinutes(inpDateVal.getMinutes())
865
+ datetimePanelValue.setSeconds(inpDateVal.getSeconds())
866
+ }
808
867
  }
809
868
  } else {
810
869
  isChange = true
@@ -818,7 +877,7 @@ export default defineComponent({
818
877
  dateRevert()
819
878
  }
820
879
  } else {
821
- emitModel('', { type: 'check' })
880
+ handleChange('', { type: 'check' })
822
881
  }
823
882
  }
824
883
  }
@@ -827,7 +886,7 @@ export default defineComponent({
827
886
  const { inputValue } = reactData
828
887
  const inpImmediate = computeInpImmediate.value
829
888
  if (!inpImmediate) {
830
- emitModel(inputValue, evnt)
889
+ handleChange(inputValue, evnt)
831
890
  }
832
891
  afterCheckValue()
833
892
  if (!reactData.visiblePanel) {
@@ -875,6 +934,7 @@ export default defineComponent({
875
934
  const datePrevEvent = (evnt: Event) => {
876
935
  const { type } = props
877
936
  const { datePanelType, selectMonth } = reactData
937
+ const { yearSize } = internalData
878
938
  const isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value
879
939
  if (!isDisabledPrevDateBtn) {
880
940
  if (type === 'year') {
@@ -910,6 +970,7 @@ export default defineComponent({
910
970
  const dateNextEvent = (evnt: Event) => {
911
971
  const { type } = props
912
972
  const { datePanelType, selectMonth } = reactData
973
+ const { yearSize } = internalData
913
974
  const isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value
914
975
  if (!isDisabledNextDateBtn) {
915
976
  if (type === 'year') {
@@ -1057,12 +1118,16 @@ export default defineComponent({
1057
1118
  }
1058
1119
 
1059
1120
  const dateTimeChangeEvent = (evnt: Event) => {
1060
- reactData.datetimePanelValue = new Date(reactData.datetimePanelValue.getTime())
1121
+ const { datetimePanelValue } = reactData
1122
+ reactData.datetimePanelValue = datetimePanelValue ? new Date(datetimePanelValue.getTime()) : new Date()
1061
1123
  updateTimePos(evnt.currentTarget as HTMLLIElement)
1062
1124
  }
1063
1125
 
1064
1126
  const dateHourEvent = (evnt: MouseEvent, item: VxeDatePickerDefines.DateHourMinuteSecondItem) => {
1065
- reactData.datetimePanelValue.setHours(item.value)
1127
+ const { datetimePanelValue } = reactData
1128
+ if (datetimePanelValue) {
1129
+ datetimePanelValue.setHours(item.value)
1130
+ }
1066
1131
  dateTimeChangeEvent(evnt)
1067
1132
  }
1068
1133
 
@@ -1082,16 +1147,18 @@ export default defineComponent({
1082
1147
  const datetimeRest: Date[] = []
1083
1148
  dateListValue.forEach(item => {
1084
1149
  if (item) {
1085
- item.setHours(datetimePanelValue.getHours())
1086
- item.setMinutes(datetimePanelValue.getMinutes())
1087
- item.setSeconds(datetimePanelValue.getSeconds())
1150
+ if (datetimePanelValue) {
1151
+ item.setHours(datetimePanelValue.getHours())
1152
+ item.setMinutes(datetimePanelValue.getMinutes())
1153
+ item.setSeconds(datetimePanelValue.getSeconds())
1154
+ }
1088
1155
  datetimeRest.push(item)
1089
1156
  }
1090
1157
  })
1091
- emitModel(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' })
1158
+ handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' })
1092
1159
  } else {
1093
1160
  // 如果是日期类型
1094
- emitModel(dateMultipleValue.join(','), { type: 'update' })
1161
+ handleChange(dateMultipleValue.join(','), { type: 'update' })
1095
1162
  }
1096
1163
  } else {
1097
1164
  dateChange(dateValue || reactData.currentDate)
@@ -1101,12 +1168,18 @@ export default defineComponent({
1101
1168
  }
1102
1169
 
1103
1170
  const dateMinuteEvent = (evnt: MouseEvent, item: VxeDatePickerDefines.DateHourMinuteSecondItem) => {
1104
- reactData.datetimePanelValue.setMinutes(item.value)
1171
+ const { datetimePanelValue } = reactData
1172
+ if (datetimePanelValue) {
1173
+ datetimePanelValue.setMinutes(item.value)
1174
+ }
1105
1175
  dateTimeChangeEvent(evnt)
1106
1176
  }
1107
1177
 
1108
1178
  const dateSecondEvent = (evnt: MouseEvent, item: VxeDatePickerDefines.DateHourMinuteSecondItem) => {
1109
- reactData.datetimePanelValue.setSeconds(item.value)
1179
+ const { datetimePanelValue } = reactData
1180
+ if (datetimePanelValue) {
1181
+ datetimePanelValue.setSeconds(item.value)
1182
+ }
1110
1183
  dateTimeChangeEvent(evnt)
1111
1184
  }
1112
1185
 
@@ -1204,7 +1277,9 @@ export default defineComponent({
1204
1277
  reactData.datetimePanelValue = reactData.datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
1205
1278
  nextTick(() => {
1206
1279
  const timeBodyElem = refInputTimeBody.value
1207
- XEUtils.arrayEach(timeBodyElem.querySelectorAll('li.is--selected'), updateTimePos)
1280
+ XEUtils.arrayEach(timeBodyElem.querySelectorAll('li.is--selected'), (elem) => {
1281
+ updateTimePos(elem)
1282
+ })
1208
1283
  })
1209
1284
  }
1210
1285
  }
@@ -1299,7 +1374,10 @@ export default defineComponent({
1299
1374
  if (!reactData.initialized) {
1300
1375
  reactData.initialized = true
1301
1376
  }
1302
- clearTimeout(hidePanelTimeout)
1377
+ if (internalData.hpTimeout) {
1378
+ clearTimeout(internalData.hpTimeout)
1379
+ internalData.hpTimeout = undefined
1380
+ }
1303
1381
  reactData.isActivated = true
1304
1382
  reactData.isAniVisible = true
1305
1383
  if (isDatePickerType) {
@@ -1456,13 +1534,13 @@ export default defineComponent({
1456
1534
  }]
1457
1535
  }, extraItem && extraItem.label
1458
1536
  ? [
1459
- h('span', label),
1537
+ h('span', `${label}`),
1460
1538
  h('span', {
1461
1539
  class: ['vxe-date-picker--date-label--extra', extraItem.important ? 'is-important' : '', extraItem.className],
1462
1540
  style: extraItem.style
1463
1541
  }, XEUtils.toValueString(extraItem.label))
1464
1542
  ]
1465
- : label)
1543
+ : `${label}`)
1466
1544
  ]
1467
1545
  const festivalLabel = festivalItem.label
1468
1546
  if (festivalLabel) {
@@ -1966,10 +2044,12 @@ export default defineComponent({
1966
2044
  ])
1967
2045
  }
1968
2046
 
2047
+ const dispatchEvent = (type: ValueOf<VxeDatePickerEmits>, params: Record<string, any>, evnt: Event | null) => {
2048
+ emit(type, createEvent(evnt, { $datePicker: $xeDatePicker }, params))
2049
+ }
2050
+
1969
2051
  datePickerMethods = {
1970
- dispatchEvent (type, params, evnt) {
1971
- emit(type, createEvent(evnt, { $input: $xeDatePicker }, params))
1972
- },
2052
+ dispatchEvent,
1973
2053
 
1974
2054
  focus () {
1975
2055
  const inputElem = refInputTarget.value
@@ -2040,7 +2120,7 @@ export default defineComponent({
2040
2120
  initValue()
2041
2121
 
2042
2122
  const renderVN = () => {
2043
- const { className, type, align, name, autocomplete } = props
2123
+ const { className, type, align, name, autocomplete, autoComplete } = props
2044
2124
  const { inputValue, visiblePanel, isActivated } = reactData
2045
2125
  const vSize = computeSize.value
2046
2126
  const isDisabled = computeIsDisabled.value
@@ -2084,7 +2164,7 @@ export default defineComponent({
2084
2164
  placeholder: inpPlaceholder,
2085
2165
  readonly: inputReadonly,
2086
2166
  disabled: isDisabled,
2087
- autocomplete,
2167
+ autocomplete: autoComplete || autocomplete,
2088
2168
  onKeydown: keydownEvent,
2089
2169
  onKeyup: keyupEvent,
2090
2170
  onWheel: wheelEvent,