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.
- package/README.md +1 -0
- package/es/calendar/src/calendar.js +1 -1
- package/es/components.js +6 -0
- package/es/date-panel/index.js +12 -0
- package/es/date-panel/src/date-panel.js +1587 -0
- package/es/date-panel/src/util.js +191 -0
- package/es/date-panel/style.css +443 -0
- package/es/date-panel/style.min.css +1 -0
- package/es/date-picker/index.js +0 -1
- package/es/date-picker/src/date-picker.js +274 -1663
- package/es/date-picker/style.css +68 -810
- package/es/date-picker/style.min.css +1 -1
- package/es/date-range-picker/index.js +12 -0
- package/es/date-range-picker/src/date-range-picker.js +1121 -0
- package/es/date-range-picker/style.css +284 -0
- package/es/date-range-picker/style.min.css +1 -0
- package/es/form/render/index.js +69 -23
- package/es/form/style.css +3 -0
- package/es/form/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/input/src/input.js +1 -1
- package/es/language/ar-EG.js +4 -1
- package/es/language/de-DE.js +4 -1
- package/es/language/en-US.js +4 -1
- package/es/language/es-ES.js +4 -1
- package/es/language/fr-FR.d.ts +2 -0
- package/es/language/fr-FR.js +4 -1
- package/es/language/hu-HU.js +4 -1
- package/es/language/hy-AM.d.ts +2 -0
- package/es/language/hy-AM.js +4 -1
- package/es/language/id-ID.d.ts +2 -0
- package/es/language/id-ID.js +4 -1
- package/es/language/it-IT.d.ts +2 -0
- package/es/language/it-IT.js +4 -1
- package/es/language/ja-JP.js +4 -1
- package/es/language/ko-KR.js +4 -1
- package/es/language/ms-MY.d.ts +2 -0
- package/es/language/ms-MY.js +711 -0
- package/es/language/nb-NO.d.ts +2 -0
- package/es/language/nb-NO.js +4 -1
- package/es/language/pt-BR.js +4 -1
- package/es/language/ru-RU.js +4 -1
- package/es/language/th-TH.d.ts +2 -0
- package/es/language/th-TH.js +4 -1
- package/es/language/ug-CN.d.ts +2 -0
- package/es/language/ug-CN.js +4 -1
- package/es/language/uk-UA.js +4 -1
- package/es/language/uz-UZ.d.ts +2 -0
- package/es/language/uz-UZ.js +711 -0
- package/es/language/vi-VN.d.ts +2 -0
- package/es/language/vi-VN.js +4 -1
- package/es/language/zh-CHT.d.ts +2 -0
- package/es/language/zh-CHT.js +4 -1
- package/es/language/zh-CN.js +4 -1
- package/es/print/src/print.js +4 -0
- package/es/print/src/util.js +46 -3
- package/es/pulldown/style.css +15 -0
- package/es/pulldown/style.min.css +1 -1
- package/es/select/style.css +15 -0
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table-select/style.css +15 -0
- package/es/table-select/style.min.css +1 -1
- package/es/tree-select/style.css +15 -0
- package/es/tree-select/style.min.css +1 -1
- package/es/ui/index.js +31 -6
- package/es/ui/src/log.js +1 -1
- package/es/vxe-date-panel/index.js +3 -0
- package/es/vxe-date-panel/style.css +443 -0
- package/es/vxe-date-panel/style.min.css +1 -0
- package/es/vxe-date-picker/style.css +68 -810
- package/es/vxe-date-picker/style.min.css +1 -1
- package/es/vxe-date-range-picker/index.js +3 -0
- package/es/vxe-date-range-picker/style.css +284 -0
- package/es/vxe-date-range-picker/style.min.css +1 -0
- package/es/vxe-form/style.css +3 -0
- package/es/vxe-form/style.min.css +1 -1
- package/es/vxe-pulldown/style.css +15 -0
- package/es/vxe-pulldown/style.min.css +1 -1
- package/es/vxe-select/style.css +15 -0
- package/es/vxe-select/style.min.css +1 -1
- package/es/vxe-table-select/style.css +15 -0
- package/es/vxe-table-select/style.min.css +1 -1
- package/es/vxe-tree-select/style.css +15 -0
- package/es/vxe-tree-select/style.min.css +1 -1
- package/lib/calendar/src/calendar.js +1 -1
- package/lib/calendar/src/calendar.min.js +1 -1
- package/lib/components.js +25 -1
- package/lib/components.min.js +1 -1
- package/lib/date-panel/index.js +19 -0
- package/lib/date-panel/index.min.js +1 -0
- package/lib/date-panel/src/date-panel.js +1667 -0
- package/lib/date-panel/src/date-panel.min.js +1 -0
- package/lib/date-panel/src/util.js +219 -0
- package/lib/date-panel/src/util.min.js +1 -0
- package/lib/date-panel/style/index.js +1 -0
- package/lib/date-panel/style/style.css +443 -0
- package/lib/date-panel/style/style.min.css +1 -0
- package/lib/date-picker/index.js +0 -1
- package/lib/date-picker/index.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +288 -1717
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-picker/style/style.css +68 -810
- package/lib/date-picker/style/style.min.css +1 -1
- package/lib/date-range-picker/index.js +19 -0
- package/lib/date-range-picker/index.min.js +1 -0
- package/lib/date-range-picker/src/date-range-picker.js +1194 -0
- package/lib/date-range-picker/src/date-range-picker.min.js +1 -0
- package/lib/date-range-picker/style/index.js +1 -0
- package/lib/date-range-picker/style/style.css +284 -0
- package/lib/date-range-picker/style/style.min.css +1 -0
- package/lib/form/render/index.js +77 -23
- package/lib/form/render/index.min.js +1 -1
- package/lib/form/style/style.css +3 -0
- package/lib/form/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +3016 -1260
- package/lib/index.umd.min.js +1 -1
- package/lib/input/src/input.js +1 -1
- package/lib/input/src/input.min.js +1 -1
- package/lib/language/ar-EG.d.ts +2 -0
- package/lib/language/ar-EG.js +4 -1
- package/lib/language/ar-EG.min.js +1 -1
- package/lib/language/ar-EG.umd.js +731 -0
- package/lib/language/de-DE.d.ts +2 -0
- package/lib/language/de-DE.js +4 -1
- package/lib/language/de-DE.min.js +1 -1
- package/lib/language/de-DE.umd.js +731 -0
- package/lib/language/en-US.js +4 -1
- package/lib/language/en-US.min.js +1 -1
- package/lib/language/en-US.umd.js +4 -1
- package/lib/language/es-ES.js +4 -1
- package/lib/language/es-ES.min.js +1 -1
- package/lib/language/es-ES.umd.js +4 -1
- package/lib/language/fr-FR.d.ts +2 -0
- package/lib/language/fr-FR.js +4 -1
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +731 -0
- package/lib/language/hu-HU.js +4 -1
- package/lib/language/hu-HU.min.js +1 -1
- package/lib/language/hu-HU.umd.js +4 -1
- package/lib/language/hy-AM.d.ts +2 -0
- package/lib/language/hy-AM.js +4 -1
- package/lib/language/hy-AM.min.js +1 -1
- package/lib/language/hy-AM.umd.js +731 -0
- package/lib/language/id-ID.d.ts +2 -0
- package/lib/language/id-ID.js +4 -1
- package/lib/language/id-ID.min.js +1 -1
- package/lib/language/id-ID.umd.js +731 -0
- package/lib/language/it-IT.d.ts +2 -0
- package/lib/language/it-IT.js +4 -1
- package/lib/language/it-IT.min.js +1 -1
- package/lib/language/it-IT.umd.js +731 -0
- package/lib/language/ja-JP.js +4 -1
- package/lib/language/ja-JP.min.js +1 -1
- package/lib/language/ja-JP.umd.js +4 -1
- package/lib/language/ko-KR.js +4 -1
- package/lib/language/ko-KR.min.js +1 -1
- package/lib/language/ko-KR.umd.js +4 -1
- package/lib/language/ms-MY.d.ts +2 -0
- package/lib/language/ms-MY.js +717 -0
- package/lib/language/ms-MY.min.js +1 -0
- package/lib/language/ms-MY.umd.js +731 -0
- package/lib/language/nb-NO.d.ts +2 -0
- package/lib/language/nb-NO.js +4 -1
- package/lib/language/nb-NO.min.js +1 -1
- package/lib/language/nb-NO.umd.js +731 -0
- package/lib/language/pt-BR.js +4 -1
- package/lib/language/pt-BR.min.js +1 -1
- package/lib/language/pt-BR.umd.js +4 -1
- package/lib/language/ru-RU.js +4 -1
- package/lib/language/ru-RU.min.js +1 -1
- package/lib/language/ru-RU.umd.js +4 -1
- package/lib/language/th-TH.d.ts +2 -0
- package/lib/language/th-TH.js +4 -1
- package/lib/language/th-TH.min.js +1 -1
- package/lib/language/th-TH.umd.js +731 -0
- package/lib/language/ug-CN.d.ts +2 -0
- package/lib/language/ug-CN.js +4 -1
- package/lib/language/ug-CN.min.js +1 -1
- package/lib/language/ug-CN.umd.js +731 -0
- package/lib/language/uk-UA.js +4 -1
- package/lib/language/uk-UA.min.js +1 -1
- package/lib/language/uk-UA.umd.js +4 -1
- package/lib/language/uz-UZ.d.ts +2 -0
- package/lib/language/uz-UZ.js +717 -0
- package/lib/language/uz-UZ.min.js +1 -0
- package/lib/language/uz-UZ.umd.js +731 -0
- package/lib/language/vi-VN.d.ts +2 -0
- package/lib/language/vi-VN.js +4 -1
- package/lib/language/vi-VN.min.js +1 -1
- package/lib/language/vi-VN.umd.js +731 -0
- package/lib/language/zh-CHT.d.ts +2 -0
- package/lib/language/zh-CHT.js +4 -1
- package/lib/language/zh-CHT.min.js +1 -1
- package/lib/language/zh-CHT.umd.js +731 -0
- package/lib/language/zh-CN.js +4 -1
- package/lib/language/zh-CN.min.js +1 -1
- package/lib/language/zh-CN.umd.js +4 -1
- package/lib/language/zh-TC.min.js +1 -1
- package/lib/print/src/print.js +4 -0
- package/lib/print/src/print.min.js +1 -1
- package/lib/print/src/util.js +45 -2
- package/lib/print/src/util.min.js +1 -1
- package/lib/pulldown/style/style.css +15 -0
- package/lib/pulldown/style/style.min.css +1 -1
- package/lib/select/style/style.css +15 -0
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table-select/style/style.css +15 -0
- package/lib/table-select/style/style.min.css +1 -1
- package/lib/tree-select/style/style.css +15 -0
- package/lib/tree-select/style/style.min.css +1 -1
- package/lib/ui/index.js +31 -6
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-date-panel/index.js +22 -0
- package/lib/vxe-date-panel/index.min.js +1 -0
- package/lib/vxe-date-panel/style/index.js +1 -0
- package/lib/vxe-date-panel/style/style.css +443 -0
- package/lib/vxe-date-panel/style/style.min.css +1 -0
- package/lib/vxe-date-picker/style/style.css +68 -810
- package/lib/vxe-date-picker/style/style.min.css +1 -1
- package/lib/vxe-date-range-picker/index.js +22 -0
- package/lib/vxe-date-range-picker/index.min.js +1 -0
- package/lib/vxe-date-range-picker/style/index.js +1 -0
- package/lib/vxe-date-range-picker/style/style.css +284 -0
- package/lib/vxe-date-range-picker/style/style.min.css +1 -0
- package/lib/vxe-form/style/style.css +3 -0
- package/lib/vxe-form/style/style.min.css +1 -1
- package/lib/vxe-pulldown/style/style.css +15 -0
- package/lib/vxe-pulldown/style/style.min.css +1 -1
- package/lib/vxe-select/style/style.css +15 -0
- package/lib/vxe-select/style/style.min.css +1 -1
- package/lib/vxe-table-select/style/style.css +15 -0
- package/lib/vxe-table-select/style/style.min.css +1 -1
- package/lib/vxe-tree-select/style/style.css +15 -0
- package/lib/vxe-tree-select/style/style.min.css +1 -1
- package/package.json +4 -5
- package/packages/calendar/src/calendar.ts +10 -10
- package/packages/components.ts +6 -0
- package/packages/date-panel/index.ts +16 -0
- package/packages/date-panel/src/date-panel.ts +1654 -0
- package/packages/date-panel/src/util.ts +212 -0
- package/packages/date-picker/index.ts +0 -1
- package/packages/date-picker/src/date-picker.ts +298 -1697
- package/packages/date-range-picker/index.ts +16 -0
- package/packages/date-range-picker/src/date-range-picker.ts +1196 -0
- package/packages/form/render/index.ts +76 -22
- package/packages/input/src/input.ts +15 -15
- package/packages/language/ar-EG.ts +4 -1
- package/packages/language/de-DE.ts +4 -1
- package/packages/language/en-US.ts +4 -1
- package/packages/language/es-ES.ts +4 -1
- package/packages/language/fr-FR.ts +4 -1
- package/packages/language/hu-HU.ts +4 -1
- package/packages/language/hy-AM.ts +4 -1
- package/packages/language/id-ID.ts +4 -1
- package/packages/language/it-IT.ts +4 -1
- package/packages/language/ja-JP.ts +4 -1
- package/packages/language/ko-KR.ts +4 -1
- package/packages/language/ms-MY.ts +711 -0
- package/packages/language/nb-NO.ts +4 -1
- package/packages/language/pt-BR.ts +4 -1
- package/packages/language/ru-RU.ts +4 -1
- package/packages/language/th-TH.ts +4 -1
- package/packages/language/ug-CN.ts +4 -1
- package/packages/language/uk-UA.ts +4 -1
- package/packages/language/uz-UZ.ts +711 -0
- package/packages/language/vi-VN.ts +4 -1
- package/packages/language/zh-CHT.ts +4 -1
- package/packages/language/zh-CN.ts +4 -1
- package/packages/print/src/print.ts +4 -0
- package/packages/print/src/util.ts +47 -4
- package/packages/ui/index.ts +30 -5
- package/styles/all.scss +2 -0
- package/styles/components/date-panel.scss +491 -0
- package/styles/components/date-picker.scss +62 -652
- package/styles/components/date-range-picker.scss +284 -0
- package/styles/components/form.scss +3 -0
- package/styles/components/pulldown.scss +10 -0
- package/styles/components/select.scss +8 -0
- package/styles/components/table-select.scss +8 -0
- package/styles/components/tree-select.scss +8 -0
- package/styles/helpers/baseMixin.scss +13 -0
- package/types/all.d.ts +6 -0
- package/types/components/button-group.d.ts +1 -1
- package/types/components/column.d.ts +9 -0
- package/types/components/date-panel.d.ts +240 -0
- package/types/components/date-picker.d.ts +35 -142
- package/types/components/date-range-picker.d.ts +267 -0
- package/types/components/form-item.d.ts +4 -0
- package/types/components/print.d.ts +8 -0
- package/types/ui/commands.d.ts +28 -2
- package/types/ui/global-config.d.ts +4 -0
- package/es/date-picker/src/util.js +0 -41
- package/lib/date-picker/src/util.js +0 -46
- package/lib/date-picker/src/util.min.js +0 -1
- package/lib/language/zh-TC.umd.js +0 -23
- package/packages/date-picker/src/util.ts +0 -42
- /package/es/icon/{iconfont.1746417522210.ttf → iconfont.1746801282055.ttf} +0 -0
- /package/es/icon/{iconfont.1746417522210.woff → iconfont.1746801282055.woff} +0 -0
- /package/es/icon/{iconfont.1746417522210.woff2 → iconfont.1746801282055.woff2} +0 -0
- /package/es/{iconfont.1746417522210.ttf → iconfont.1746801282055.ttf} +0 -0
- /package/es/{iconfont.1746417522210.woff → iconfont.1746801282055.woff} +0 -0
- /package/es/{iconfont.1746417522210.woff2 → iconfont.1746801282055.woff2} +0 -0
- /package/es/language/{zh-TC.d.ts → ar-EG.d.ts} +0 -0
- /package/{lib/language/zh-TC.d.ts → es/language/de-DE.d.ts} +0 -0
- /package/lib/icon/style/{iconfont.1746417522210.ttf → iconfont.1746801282055.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1746417522210.woff → iconfont.1746801282055.woff} +0 -0
- /package/lib/icon/style/{iconfont.1746417522210.woff2 → iconfont.1746801282055.woff2} +0 -0
- /package/lib/{iconfont.1746417522210.ttf → iconfont.1746801282055.ttf} +0 -0
- /package/lib/{iconfont.1746417522210.woff → iconfont.1746801282055.woff} +0 -0
- /package/lib/{iconfont.1746417522210.woff2 → iconfont.1746801282055.woff2} +0 -0
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { defineComponent, h, Teleport, ref, Ref, computed, reactive, inject, nextTick, watch,
|
|
1
|
+
import { defineComponent, h, Teleport, ref, Ref, computed, provide, reactive, inject, nextTick, watch, PropType, onUnmounted } from 'vue'
|
|
2
2
|
import XEUtils from 'xe-utils'
|
|
3
|
-
import { getConfig, getIcon, getI18n,
|
|
3
|
+
import { getConfig, getIcon, getI18n, commands, createEvent, globalEvents, useSize, renderEmptyElement } from '../../ui'
|
|
4
4
|
import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils'
|
|
5
5
|
import { getAbsolutePos, getEventTargetNode } from '../../ui/src/dom'
|
|
6
|
-
import { toStringTimeDate, getDateQuarter } from './util'
|
|
7
6
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
7
|
+
import { parseDateObj, getDateByCode } from '../../date-panel/src/util'
|
|
8
|
+
import { errLog } from '../../ui/src/log'
|
|
9
|
+
import VxeDatePanelComponent from '../../date-panel/src/date-panel'
|
|
10
|
+
import VxeButtonComponent from '../../button/src/button'
|
|
8
11
|
import VxeButtonGroupComponent from '../../button/src/button-group'
|
|
9
12
|
|
|
10
|
-
import type { VxeDatePickerConstructor, VxeDatePickerEmits, DatePickerInternalData, DatePickerReactData, VxeComponentStyleType, DatePickerMethods, VxeDatePickerPropTypes, DatePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDatePickerDefines, VxeButtonGroupEvents } from '../../../types'
|
|
13
|
+
import type { VxeDatePickerConstructor, VxeDatePickerEmits, DatePickerInternalData, DatePickerReactData, VxeComponentStyleType, DatePickerMethods, VxeDatePickerPropTypes, DatePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDatePickerDefines, VxeButtonGroupEvents, VxeDatePanelConstructor } from '../../../types'
|
|
11
14
|
import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
|
|
12
15
|
|
|
13
16
|
export default defineComponent({
|
|
@@ -36,12 +39,10 @@ export default defineComponent({
|
|
|
36
39
|
default: null
|
|
37
40
|
},
|
|
38
41
|
placeholder: String as PropType<VxeDatePickerPropTypes.Placeholder>,
|
|
39
|
-
maxLength: [String, Number] as PropType<VxeDatePickerPropTypes.MaxLength>,
|
|
40
42
|
autoComplete: {
|
|
41
43
|
type: String as PropType<VxeDatePickerPropTypes.AutoComplete>,
|
|
42
44
|
default: 'off'
|
|
43
45
|
},
|
|
44
|
-
align: String as PropType<VxeDatePickerPropTypes.Align>,
|
|
45
46
|
form: String as PropType<VxeDatePickerPropTypes.Form>,
|
|
46
47
|
className: String as PropType<VxeDatePickerPropTypes.ClassName>,
|
|
47
48
|
size: {
|
|
@@ -89,6 +90,18 @@ export default defineComponent({
|
|
|
89
90
|
type: [String, Number] as PropType<VxeDatePickerPropTypes.SelectDay>,
|
|
90
91
|
default: () => getConfig().datePicker.selectDay
|
|
91
92
|
},
|
|
93
|
+
showClearButton: {
|
|
94
|
+
type: Boolean as PropType<VxeDatePickerPropTypes.ShowClearButton>,
|
|
95
|
+
default: () => getConfig().datePicker.showClearButton
|
|
96
|
+
},
|
|
97
|
+
showConfirmButton: {
|
|
98
|
+
type: Boolean as PropType<VxeDatePickerPropTypes.ShowConfirmButton>,
|
|
99
|
+
default: () => getConfig().datePicker.showConfirmButton
|
|
100
|
+
},
|
|
101
|
+
autoClose: {
|
|
102
|
+
type: Boolean as PropType<VxeDatePickerPropTypes.AutoClose>,
|
|
103
|
+
default: () => getConfig().datePicker.autoClose
|
|
104
|
+
},
|
|
92
105
|
|
|
93
106
|
prefixIcon: String as PropType<VxeDatePickerPropTypes.PrefixIcon>,
|
|
94
107
|
suffixIcon: String as PropType<VxeDatePickerPropTypes.SuffixIcon>,
|
|
@@ -101,11 +114,7 @@ export default defineComponent({
|
|
|
101
114
|
shortcutConfig: Object as PropType<VxeDatePickerPropTypes.ShortcutConfig>,
|
|
102
115
|
|
|
103
116
|
// 已废弃 startWeek,被 startDay 替换
|
|
104
|
-
startWeek: Number as PropType<VxeDatePickerPropTypes.StartDay
|
|
105
|
-
// 已废弃
|
|
106
|
-
maxlength: [String, Number] as PropType<VxeDatePickerPropTypes.MaxLength>,
|
|
107
|
-
// 已废弃
|
|
108
|
-
autocomplete: String as PropType<VxeDatePickerPropTypes.AutoComplete>
|
|
117
|
+
startWeek: Number as PropType<VxeDatePickerPropTypes.StartDay>
|
|
109
118
|
},
|
|
110
119
|
emits: [
|
|
111
120
|
'update:modelValue',
|
|
@@ -146,26 +155,19 @@ export default defineComponent({
|
|
|
146
155
|
panelPlacement: '',
|
|
147
156
|
isActivated: false,
|
|
148
157
|
inputValue: '',
|
|
149
|
-
|
|
150
|
-
datePanelValue: null,
|
|
151
|
-
datePanelLabel: '',
|
|
152
|
-
datePanelType: 'day',
|
|
153
|
-
selectMonth: null,
|
|
154
|
-
currentDate: null
|
|
158
|
+
inputLabel: ''
|
|
155
159
|
})
|
|
156
160
|
|
|
157
161
|
const internalData: DatePickerInternalData = {
|
|
158
|
-
yearSize: 12,
|
|
159
|
-
monthSize: 20,
|
|
160
|
-
quarterSize: 8,
|
|
161
162
|
hpTimeout: undefined
|
|
162
163
|
}
|
|
163
164
|
|
|
164
165
|
const refElem = ref() as Ref<HTMLDivElement>
|
|
165
166
|
const refInputTarget = ref() as Ref<HTMLInputElement>
|
|
166
|
-
const refInputPanel = ref
|
|
167
|
-
const refPanelWrapper = ref
|
|
168
|
-
|
|
167
|
+
const refInputPanel = ref<HTMLDivElement>()
|
|
168
|
+
const refPanelWrapper = ref<HTMLDivElement>()
|
|
169
|
+
|
|
170
|
+
const refDatePanel = ref<VxeDatePanelConstructor>()
|
|
169
171
|
|
|
170
172
|
const refMaps: DatePickerPrivateRef = {
|
|
171
173
|
refElem,
|
|
@@ -181,8 +183,6 @@ export default defineComponent({
|
|
|
181
183
|
getRefMaps: () => refMaps
|
|
182
184
|
} as unknown as VxeDatePickerConstructor
|
|
183
185
|
|
|
184
|
-
let datePickerMethods = {} as DatePickerMethods
|
|
185
|
-
|
|
186
186
|
const computeBtnTransfer = computed(() => {
|
|
187
187
|
const { transfer } = props
|
|
188
188
|
if (transfer === null) {
|
|
@@ -233,58 +233,49 @@ export default defineComponent({
|
|
|
233
233
|
return props.clearable
|
|
234
234
|
})
|
|
235
235
|
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
const computeDateEndTime = computed(() => {
|
|
241
|
-
return props.endDate ? XEUtils.toStringDate(props.endDate) : null
|
|
242
|
-
})
|
|
243
|
-
|
|
244
|
-
const computeSupportMultiples = computed(() => {
|
|
245
|
-
return ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1
|
|
236
|
+
const computeInputReadonly = computed(() => {
|
|
237
|
+
const { type, editable, multiple } = props
|
|
238
|
+
const formReadonly = computeFormReadonly.value
|
|
239
|
+
return formReadonly || multiple || !editable || type === 'week' || type === 'quarter'
|
|
246
240
|
})
|
|
247
241
|
|
|
248
|
-
const
|
|
249
|
-
const {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
if (multiple && modelValue && isDatePickerType) {
|
|
253
|
-
return XEUtils.toValueString(modelValue).split(',').map(item => {
|
|
254
|
-
const date = parseDate(item, dateValueFormat)
|
|
255
|
-
if (XEUtils.isValidDate(date)) {
|
|
256
|
-
return date
|
|
257
|
-
}
|
|
258
|
-
return date
|
|
259
|
-
})
|
|
242
|
+
const computeInpPlaceholder = computed(() => {
|
|
243
|
+
const { placeholder } = props
|
|
244
|
+
if (placeholder) {
|
|
245
|
+
return getFuncText(placeholder)
|
|
260
246
|
}
|
|
261
|
-
|
|
247
|
+
const globalPlaceholder = getConfig().datePicker.placeholder
|
|
248
|
+
if (globalPlaceholder) {
|
|
249
|
+
return getFuncText(globalPlaceholder)
|
|
250
|
+
}
|
|
251
|
+
return getI18n('vxe.base.pleaseSelect')
|
|
262
252
|
})
|
|
263
253
|
|
|
264
|
-
const
|
|
265
|
-
const
|
|
266
|
-
|
|
267
|
-
return dateListValue.map(date => XEUtils.toDateString(date, dateValueFormat))
|
|
254
|
+
const computeInpImmediate = computed(() => {
|
|
255
|
+
const { immediate } = props
|
|
256
|
+
return immediate
|
|
268
257
|
})
|
|
269
258
|
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
const dateLabelFormat = computeDateLabelFormat.value
|
|
273
|
-
return dateListValue.map(date => XEUtils.toDateString(date, dateLabelFormat)).join(', ')
|
|
259
|
+
const computeShortcutOpts = computed(() => {
|
|
260
|
+
return Object.assign({}, getConfig().datePicker.shortcutConfig, props.shortcutConfig)
|
|
274
261
|
})
|
|
275
262
|
|
|
276
|
-
const
|
|
277
|
-
|
|
263
|
+
const computeShortcutList = computed(() => {
|
|
264
|
+
const shortcutOpts = computeShortcutOpts.value
|
|
265
|
+
const { options } = shortcutOpts
|
|
266
|
+
if (options) {
|
|
267
|
+
return options.map((option, index) => {
|
|
268
|
+
return Object.assign({
|
|
269
|
+
name: `${option.name || option.code || index}`
|
|
270
|
+
}, option)
|
|
271
|
+
})
|
|
272
|
+
}
|
|
273
|
+
return []
|
|
278
274
|
})
|
|
279
275
|
|
|
280
|
-
const
|
|
281
|
-
const {
|
|
282
|
-
|
|
283
|
-
const dateMultipleValue = computeDateMultipleValue.value
|
|
284
|
-
if (multiple && limitMaxCount) {
|
|
285
|
-
return dateMultipleValue.length >= limitMaxCount
|
|
286
|
-
}
|
|
287
|
-
return false
|
|
276
|
+
const computeDateLabelFormat = computed(() => {
|
|
277
|
+
const { labelFormat } = props
|
|
278
|
+
return labelFormat || getI18n(`vxe.input.date.labelFormat.${props.type}`)
|
|
288
279
|
})
|
|
289
280
|
|
|
290
281
|
const computeDateValueFormat = computed(() => {
|
|
@@ -301,360 +292,30 @@ export default defineComponent({
|
|
|
301
292
|
return 'yyyy-MM-dd'
|
|
302
293
|
})
|
|
303
294
|
|
|
304
|
-
const computeDateValue = computed(() => {
|
|
305
|
-
const { modelValue } = props
|
|
306
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
307
|
-
const dateValueFormat = computeDateValueFormat.value
|
|
308
|
-
let val = null
|
|
309
|
-
if (modelValue && isDatePickerType) {
|
|
310
|
-
const date = parseDate(modelValue, dateValueFormat)
|
|
311
|
-
if (XEUtils.isValidDate(date)) {
|
|
312
|
-
val = date
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
return val
|
|
316
|
-
})
|
|
317
|
-
|
|
318
|
-
const computeIsDisabledPrevDateBtn = computed(() => {
|
|
319
|
-
const dateStartTime = computeDateStartTime.value
|
|
320
|
-
const { selectMonth } = reactData
|
|
321
|
-
if (selectMonth && dateStartTime) {
|
|
322
|
-
return selectMonth <= dateStartTime
|
|
323
|
-
}
|
|
324
|
-
return false
|
|
325
|
-
})
|
|
326
|
-
|
|
327
|
-
const computeIsDisabledNextDateBtn = computed(() => {
|
|
328
|
-
const dateEndTime = computeDateEndTime.value
|
|
329
|
-
const { selectMonth } = reactData
|
|
330
|
-
if (selectMonth && dateEndTime) {
|
|
331
|
-
return selectMonth >= dateEndTime
|
|
332
|
-
}
|
|
333
|
-
return false
|
|
334
|
-
})
|
|
335
|
-
|
|
336
|
-
const computeDateTimeLabel = computed(() => {
|
|
337
|
-
const { datetimePanelValue } = reactData
|
|
338
|
-
const hasTimeSecond = computeHasTimeSecond.value
|
|
339
|
-
if (datetimePanelValue) {
|
|
340
|
-
return XEUtils.toDateString(datetimePanelValue, hasTimeSecond ? 'HH:mm:ss' : 'HH:mm')
|
|
341
|
-
}
|
|
342
|
-
return ''
|
|
343
|
-
})
|
|
344
|
-
|
|
345
|
-
const computeDateHMSTime = computed(() => {
|
|
346
|
-
const dateValue = computeDateValue.value
|
|
347
|
-
const isDateTimeType = computeIsDateTimeType.value
|
|
348
|
-
return dateValue && isDateTimeType ? (dateValue.getHours() * 3600 + dateValue.getMinutes() * 60 + dateValue.getSeconds()) * 1000 : 0
|
|
349
|
-
})
|
|
350
|
-
|
|
351
|
-
const computeDateLabelFormat = computed(() => {
|
|
352
|
-
const { labelFormat } = props
|
|
353
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
354
|
-
if (isDatePickerType) {
|
|
355
|
-
return labelFormat || getI18n(`vxe.input.date.labelFormat.${props.type}`)
|
|
356
|
-
}
|
|
357
|
-
return null
|
|
358
|
-
})
|
|
359
|
-
|
|
360
|
-
const computeYearList = computed(() => {
|
|
361
|
-
const { yearSize } = internalData
|
|
362
|
-
const { selectMonth, currentDate } = reactData
|
|
363
|
-
const years: VxeDatePickerDefines.DateYearItem[] = []
|
|
364
|
-
if (selectMonth && currentDate) {
|
|
365
|
-
const currFullYear = currentDate.getFullYear()
|
|
366
|
-
const selectFullYear = selectMonth.getFullYear()
|
|
367
|
-
const startYearDate = new Date(selectFullYear - selectFullYear % yearSize, 0, 1)
|
|
368
|
-
for (let index = -4; index < yearSize + 4; index++) {
|
|
369
|
-
const date = XEUtils.getWhatYear(startYearDate, index, 'first')
|
|
370
|
-
const itemFullYear = date.getFullYear()
|
|
371
|
-
years.push({
|
|
372
|
-
date,
|
|
373
|
-
isCurrent: true,
|
|
374
|
-
isPrev: index < 0,
|
|
375
|
-
isNow: currFullYear === itemFullYear,
|
|
376
|
-
isNext: index >= yearSize,
|
|
377
|
-
year: itemFullYear
|
|
378
|
-
})
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
return years
|
|
382
|
-
})
|
|
383
|
-
|
|
384
|
-
const computeSelectDatePanelObj = computed(() => {
|
|
385
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
386
|
-
let y = ''
|
|
387
|
-
let m = ''
|
|
388
|
-
if (isDatePickerType) {
|
|
389
|
-
const { datePanelType, selectMonth } = reactData
|
|
390
|
-
const yearList = computeYearList.value
|
|
391
|
-
let year = ''
|
|
392
|
-
let month
|
|
393
|
-
if (selectMonth) {
|
|
394
|
-
year = selectMonth.getFullYear()
|
|
395
|
-
month = selectMonth.getMonth() + 1
|
|
396
|
-
}
|
|
397
|
-
if (datePanelType === 'quarter' || datePanelType === 'month') {
|
|
398
|
-
y = getI18n('vxe.datePicker.yearTitle', [year])
|
|
399
|
-
} else if (datePanelType === 'year') {
|
|
400
|
-
y = yearList.length ? `${yearList[0].year} - ${yearList[yearList.length - 1].year}` : ''
|
|
401
|
-
} else {
|
|
402
|
-
y = getI18n('vxe.datePicker.yearTitle', [year])
|
|
403
|
-
m = month ? getI18n(`vxe.input.date.m${month}`) : '-'
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
return {
|
|
407
|
-
y,
|
|
408
|
-
m
|
|
409
|
-
}
|
|
410
|
-
})
|
|
411
|
-
|
|
412
295
|
const computeFirstDayOfWeek = computed(() => {
|
|
413
|
-
const { startDay
|
|
414
|
-
return XEUtils.toNumber(
|
|
415
|
-
})
|
|
416
|
-
|
|
417
|
-
const computeWeekDatas = computed(() => {
|
|
418
|
-
const weeks: number[] = []
|
|
419
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
420
|
-
if (isDatePickerType) {
|
|
421
|
-
let sWeek = computeFirstDayOfWeek.value
|
|
422
|
-
weeks.push(sWeek)
|
|
423
|
-
for (let index = 0; index < 6; index++) {
|
|
424
|
-
if (sWeek >= 6) {
|
|
425
|
-
sWeek = 0
|
|
426
|
-
} else {
|
|
427
|
-
sWeek++
|
|
428
|
-
}
|
|
429
|
-
weeks.push(sWeek)
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
return weeks
|
|
296
|
+
const { startDay } = props
|
|
297
|
+
return XEUtils.toNumber(startDay) as VxeDatePickerPropTypes.StartDay
|
|
433
298
|
})
|
|
434
299
|
|
|
435
|
-
const
|
|
436
|
-
const
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
return weekDatas.map((day) => {
|
|
440
|
-
return {
|
|
441
|
-
value: day,
|
|
442
|
-
label: getI18n(`vxe.input.date.weeks.w${day}`)
|
|
443
|
-
}
|
|
444
|
-
})
|
|
445
|
-
}
|
|
446
|
-
return []
|
|
447
|
-
})
|
|
448
|
-
|
|
449
|
-
const computeWeekHeaders = computed(() => {
|
|
450
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
451
|
-
if (isDatePickerType) {
|
|
452
|
-
const dateHeaders = computeDateHeaders.value
|
|
453
|
-
return [{ label: getI18n('vxe.input.date.weeks.w') }].concat(dateHeaders)
|
|
454
|
-
}
|
|
455
|
-
return []
|
|
456
|
-
})
|
|
457
|
-
|
|
458
|
-
const computeYearDatas = computed(() => {
|
|
459
|
-
const yearList = computeYearList.value
|
|
460
|
-
return XEUtils.chunk(yearList, 4)
|
|
461
|
-
})
|
|
462
|
-
|
|
463
|
-
const computeQuarterList = computed(() => {
|
|
464
|
-
const { quarterSize } = internalData
|
|
465
|
-
const { selectMonth, currentDate } = reactData
|
|
466
|
-
const quarters: VxeDatePickerDefines.DateQuarterItem[] = []
|
|
467
|
-
if (selectMonth && currentDate) {
|
|
468
|
-
const currFullYear = currentDate.getFullYear()
|
|
469
|
-
const currQuarter = getDateQuarter(currentDate)
|
|
470
|
-
const firstYear = XEUtils.getWhatYear(selectMonth, 0, 'first')
|
|
471
|
-
const selFullYear = firstYear.getFullYear()
|
|
472
|
-
for (let index = -2; index < quarterSize - 2; index++) {
|
|
473
|
-
const date = XEUtils.getWhatQuarter(firstYear, index)
|
|
474
|
-
const itemFullYear = date.getFullYear()
|
|
475
|
-
const itemQuarter = getDateQuarter(date)
|
|
476
|
-
const isPrev = itemFullYear < selFullYear
|
|
477
|
-
quarters.push({
|
|
478
|
-
date,
|
|
479
|
-
isPrev,
|
|
480
|
-
isCurrent: itemFullYear === selFullYear,
|
|
481
|
-
isNow: itemFullYear === currFullYear && itemQuarter === currQuarter,
|
|
482
|
-
isNext: !isPrev && itemFullYear > selFullYear,
|
|
483
|
-
quarter: itemQuarter
|
|
484
|
-
})
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
return quarters
|
|
488
|
-
})
|
|
489
|
-
|
|
490
|
-
const computeQuarterDatas = computed(() => {
|
|
491
|
-
const quarterList = computeQuarterList.value
|
|
492
|
-
return XEUtils.chunk(quarterList, 2)
|
|
493
|
-
})
|
|
494
|
-
|
|
495
|
-
const computeMonthList = computed(() => {
|
|
496
|
-
const { monthSize } = internalData
|
|
497
|
-
const { selectMonth, currentDate } = reactData
|
|
498
|
-
const months: VxeDatePickerDefines.DateMonthItem[] = []
|
|
499
|
-
if (selectMonth && currentDate) {
|
|
500
|
-
const currFullYear = currentDate.getFullYear()
|
|
501
|
-
const currMonth = currentDate.getMonth()
|
|
502
|
-
const selFullYear = XEUtils.getWhatYear(selectMonth, 0, 'first').getFullYear()
|
|
503
|
-
for (let index = -4; index < monthSize - 4; index++) {
|
|
504
|
-
const date = XEUtils.getWhatYear(selectMonth, 0, index)
|
|
505
|
-
const itemFullYear = date.getFullYear()
|
|
506
|
-
const itemMonth = date.getMonth()
|
|
507
|
-
const isPrev = itemFullYear < selFullYear
|
|
508
|
-
months.push({
|
|
509
|
-
date,
|
|
510
|
-
isPrev,
|
|
511
|
-
isCurrent: itemFullYear === selFullYear,
|
|
512
|
-
isNow: itemFullYear === currFullYear && itemMonth === currMonth,
|
|
513
|
-
isNext: !isPrev && itemFullYear > selFullYear,
|
|
514
|
-
month: itemMonth
|
|
515
|
-
})
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
return months
|
|
519
|
-
})
|
|
520
|
-
|
|
521
|
-
const computeMonthDatas = computed(() => {
|
|
522
|
-
const monthList = computeMonthList.value
|
|
523
|
-
return XEUtils.chunk(monthList, 4)
|
|
524
|
-
})
|
|
525
|
-
|
|
526
|
-
const computeDayList = computed(() => {
|
|
527
|
-
const { selectMonth, currentDate } = reactData
|
|
528
|
-
const days: VxeDatePickerDefines.DateDayItem[] = []
|
|
529
|
-
if (selectMonth && currentDate) {
|
|
530
|
-
const dateHMSTime = computeDateHMSTime.value
|
|
531
|
-
const weekDatas = computeWeekDatas.value
|
|
532
|
-
const currFullYear = currentDate.getFullYear()
|
|
533
|
-
const currMonth = currentDate.getMonth()
|
|
534
|
-
const currDate = currentDate.getDate()
|
|
535
|
-
const selFullYear = selectMonth.getFullYear()
|
|
536
|
-
const selMonth = selectMonth.getMonth()
|
|
537
|
-
const selDay = selectMonth.getDay()
|
|
538
|
-
const prevOffsetDate = -weekDatas.indexOf(selDay)
|
|
539
|
-
const startDayDate = new Date(XEUtils.getWhatDay(selectMonth, prevOffsetDate).getTime() + dateHMSTime)
|
|
540
|
-
for (let index = 0; index < 42; index++) {
|
|
541
|
-
const date = XEUtils.getWhatDay(startDayDate, index)
|
|
542
|
-
const itemFullYear = date.getFullYear()
|
|
543
|
-
const itemMonth = date.getMonth()
|
|
544
|
-
const itemDate = date.getDate()
|
|
545
|
-
const isPrev = date < selectMonth
|
|
546
|
-
days.push({
|
|
547
|
-
date,
|
|
548
|
-
isPrev,
|
|
549
|
-
isCurrent: itemFullYear === selFullYear && itemMonth === selMonth,
|
|
550
|
-
isNow: itemFullYear === currFullYear && itemMonth === currMonth && itemDate === currDate,
|
|
551
|
-
isNext: !isPrev && selMonth !== itemMonth,
|
|
552
|
-
label: itemDate
|
|
553
|
-
})
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
return days
|
|
557
|
-
})
|
|
558
|
-
|
|
559
|
-
const computeDayDatas = computed(() => {
|
|
560
|
-
const dayList = computeDayList.value
|
|
561
|
-
return XEUtils.chunk(dayList, 7)
|
|
562
|
-
})
|
|
563
|
-
|
|
564
|
-
const computeWeekDates = computed(() => {
|
|
565
|
-
const dayDatas = computeDayDatas.value
|
|
566
|
-
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
567
|
-
return dayDatas.map((list) => {
|
|
568
|
-
const firstItem = list[0]
|
|
569
|
-
const item: VxeDatePickerDefines.DateDayItem = {
|
|
570
|
-
date: firstItem.date,
|
|
571
|
-
isWeekNumber: true,
|
|
572
|
-
isPrev: false,
|
|
573
|
-
isCurrent: false,
|
|
574
|
-
isNow: false,
|
|
575
|
-
isNext: false,
|
|
576
|
-
label: XEUtils.getYearWeek(firstItem.date, firstDayOfWeek)
|
|
577
|
-
}
|
|
578
|
-
return [item].concat(list)
|
|
579
|
-
})
|
|
580
|
-
})
|
|
581
|
-
|
|
582
|
-
const computeHourList = computed(() => {
|
|
583
|
-
const list: VxeDatePickerDefines.DateHourMinuteSecondItem[] = []
|
|
584
|
-
const isDateTimeType = computeIsDateTimeType.value
|
|
585
|
-
if (isDateTimeType) {
|
|
586
|
-
for (let index = 0; index < 24; index++) {
|
|
587
|
-
list.push({
|
|
588
|
-
value: index,
|
|
589
|
-
label: ('' + index).padStart(2, '0')
|
|
590
|
-
})
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
return list
|
|
594
|
-
})
|
|
595
|
-
|
|
596
|
-
const computeMinuteList = computed(() => {
|
|
597
|
-
const list: VxeDatePickerDefines.DateHourMinuteSecondItem[] = []
|
|
598
|
-
const isDateTimeType = computeIsDateTimeType.value
|
|
599
|
-
if (isDateTimeType) {
|
|
600
|
-
for (let index = 0; index < 60; index++) {
|
|
601
|
-
list.push({
|
|
602
|
-
value: index,
|
|
603
|
-
label: ('' + index).padStart(2, '0')
|
|
604
|
-
})
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
return list
|
|
608
|
-
})
|
|
609
|
-
|
|
610
|
-
const computeHasTimeMinute = computed(() => {
|
|
611
|
-
const dateValueFormat = computeDateValueFormat.value
|
|
612
|
-
return !/HH/.test(dateValueFormat) || /mm/.test(dateValueFormat)
|
|
613
|
-
})
|
|
614
|
-
|
|
615
|
-
const computeHasTimeSecond = computed(() => {
|
|
300
|
+
const computePanelLabel = computed(() => {
|
|
301
|
+
const { type, multiple } = props
|
|
302
|
+
const { inputValue } = reactData
|
|
303
|
+
const dateLabelFormat = computeDateLabelFormat.value
|
|
616
304
|
const dateValueFormat = computeDateValueFormat.value
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
const formReadonly = computeFormReadonly.value
|
|
628
|
-
return formReadonly || multiple || !editable || type === 'week' || type === 'quarter'
|
|
629
|
-
})
|
|
630
|
-
|
|
631
|
-
const computeDatePickerType = computed(() => {
|
|
632
|
-
return 'text'
|
|
633
|
-
})
|
|
634
|
-
|
|
635
|
-
const computeInpPlaceholder = computed(() => {
|
|
636
|
-
const { placeholder } = props
|
|
637
|
-
if (placeholder) {
|
|
638
|
-
return getFuncText(placeholder)
|
|
639
|
-
}
|
|
640
|
-
const globalPlaceholder = getConfig().datePicker.placeholder
|
|
641
|
-
if (globalPlaceholder) {
|
|
642
|
-
return getFuncText(globalPlaceholder)
|
|
643
|
-
}
|
|
644
|
-
return getI18n('vxe.base.pleaseSelect')
|
|
645
|
-
})
|
|
646
|
-
|
|
647
|
-
const computeInpImmediate = computed(() => {
|
|
648
|
-
const { immediate } = props
|
|
649
|
-
return immediate
|
|
650
|
-
})
|
|
651
|
-
|
|
652
|
-
const computeShortcutOpts = computed(() => {
|
|
653
|
-
return Object.assign({}, getConfig().datePicker.shortcutConfig, props.shortcutConfig)
|
|
305
|
+
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
306
|
+
const vals: string[] = inputValue ? (multiple ? inputValue.split(',') : [inputValue]) : []
|
|
307
|
+
return vals.map(val => {
|
|
308
|
+
const dateObj = parseDateObj(val, type, {
|
|
309
|
+
valueFormat: dateValueFormat,
|
|
310
|
+
labelFormat: dateLabelFormat,
|
|
311
|
+
firstDay: firstDayOfWeek
|
|
312
|
+
})
|
|
313
|
+
return dateObj.label
|
|
314
|
+
}).join(', ')
|
|
654
315
|
})
|
|
655
316
|
|
|
656
|
-
const updateModelValue = (
|
|
657
|
-
const {
|
|
317
|
+
const updateModelValue = () => {
|
|
318
|
+
const { modelValue } = props
|
|
658
319
|
let val: any = ''
|
|
659
320
|
if (modelValue) {
|
|
660
321
|
if (XEUtils.isNumber(modelValue) && /^[0-9]{11,15}$/.test(`${modelValue}`)) {
|
|
@@ -664,23 +325,6 @@ export default defineComponent({
|
|
|
664
325
|
}
|
|
665
326
|
}
|
|
666
327
|
reactData.inputValue = val
|
|
667
|
-
if (isActivated && visiblePanel) {
|
|
668
|
-
dateOpenPanel()
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
const parseDate = (value: VxeDatePickerPropTypes.ModelValue, format: string) => {
|
|
673
|
-
const { type, multiple } = props
|
|
674
|
-
if (type === 'time') {
|
|
675
|
-
return toStringTimeDate(value)
|
|
676
|
-
}
|
|
677
|
-
if (XEUtils.isArray(value)) {
|
|
678
|
-
return XEUtils.toStringDate(value[0], format)
|
|
679
|
-
}
|
|
680
|
-
if (XEUtils.isString(value)) {
|
|
681
|
-
return XEUtils.toStringDate(multiple ? XEUtils.last(value.split(',')) : value, format)
|
|
682
|
-
}
|
|
683
|
-
return XEUtils.toStringDate(value, format)
|
|
684
328
|
}
|
|
685
329
|
|
|
686
330
|
const triggerEvent = (evnt: Event & { type: 'input' | 'change' | 'keydown' | 'keyup' | 'click' | 'focus' | 'blur' }) => {
|
|
@@ -688,10 +332,11 @@ export default defineComponent({
|
|
|
688
332
|
dispatchEvent(evnt.type, { value: inputValue }, evnt)
|
|
689
333
|
}
|
|
690
334
|
|
|
691
|
-
const handleChange = (value: string, evnt: Event | { type: string }) => {
|
|
335
|
+
const handleChange = (value: string | number | Date, evnt: Event | { type: string }) => {
|
|
336
|
+
const { modelValue } = props
|
|
692
337
|
reactData.inputValue = value
|
|
693
338
|
emit('update:modelValue', value)
|
|
694
|
-
if (XEUtils.toValueString(
|
|
339
|
+
if (XEUtils.toValueString(modelValue) !== value) {
|
|
695
340
|
dispatchEvent('change', { value }, evnt as any)
|
|
696
341
|
// 自动更新校验状态
|
|
697
342
|
if ($xeForm && formItemInfo) {
|
|
@@ -701,18 +346,10 @@ export default defineComponent({
|
|
|
701
346
|
}
|
|
702
347
|
|
|
703
348
|
const inputEvent = (evnt: Event & { type: 'input' }) => {
|
|
704
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
705
|
-
const inpImmediate = computeInpImmediate.value
|
|
706
349
|
const inputElem = evnt.target as HTMLInputElement
|
|
707
350
|
const value = inputElem.value
|
|
708
|
-
reactData.
|
|
709
|
-
|
|
710
|
-
if (inpImmediate) {
|
|
711
|
-
handleChange(value, evnt)
|
|
712
|
-
} else {
|
|
713
|
-
dispatchEvent('input', { value }, evnt)
|
|
714
|
-
}
|
|
715
|
-
}
|
|
351
|
+
reactData.inputLabel = value
|
|
352
|
+
dispatchEvent('input', { value }, evnt)
|
|
716
353
|
}
|
|
717
354
|
|
|
718
355
|
const changeEvent = (evnt: Event & { type: 'change' }) => {
|
|
@@ -752,661 +389,117 @@ export default defineComponent({
|
|
|
752
389
|
const clearValueEvent = (evnt: Event, value: VxeDatePickerPropTypes.ModelValue) => {
|
|
753
390
|
const isDatePickerType = computeIsDatePickerType.value
|
|
754
391
|
if (isDatePickerType) {
|
|
755
|
-
hidePanel()
|
|
756
|
-
}
|
|
757
|
-
handleChange('', evnt)
|
|
758
|
-
dispatchEvent('clear', { value }, evnt)
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
const clickSuffixEvent = (evnt: Event) => {
|
|
762
|
-
const isDisabled = computeIsDisabled.value
|
|
763
|
-
if (!isDisabled) {
|
|
764
|
-
const { inputValue } = reactData
|
|
765
|
-
dispatchEvent('suffix-click', { value: inputValue }, evnt)
|
|
766
|
-
}
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
const dateParseValue = (value?: VxeDatePickerPropTypes.ModelValue) => {
|
|
770
|
-
const { type } = props
|
|
771
|
-
const dateLabelFormat = computeDateLabelFormat.value
|
|
772
|
-
const dateValueFormat = computeDateValueFormat.value
|
|
773
|
-
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
774
|
-
let dValue: Date | null = null
|
|
775
|
-
let dLabel = ''
|
|
776
|
-
if (value) {
|
|
777
|
-
dValue = parseDate(value, dateValueFormat)
|
|
778
|
-
}
|
|
779
|
-
if (XEUtils.isValidDate(dValue)) {
|
|
780
|
-
dLabel = XEUtils.toDateString(dValue, dateLabelFormat, { firstDay: firstDayOfWeek })
|
|
781
|
-
// 周选择器,由于年份和第几周是冲突的行为,所以需要特殊处理,判断是否跨年,例如
|
|
782
|
-
// '2024-12-31' 'yyyy-MM-dd W' >> '2024-12-31 1'
|
|
783
|
-
// '2025-01-01' 'yyyy-MM-dd W' >> '2025-01-01 1'
|
|
784
|
-
if (dateLabelFormat && type === 'week') {
|
|
785
|
-
const weekNum = XEUtils.getYearWeek(dValue, firstDayOfWeek)
|
|
786
|
-
const weekDate = XEUtils.getWhatWeek(dValue, 0, weekNum === 1 ? ((6 + firstDayOfWeek) % 7) as VxeDatePickerPropTypes.StartDay : firstDayOfWeek, firstDayOfWeek)
|
|
787
|
-
const weekFullYear = weekDate.getFullYear()
|
|
788
|
-
if (weekFullYear !== dValue.getFullYear()) {
|
|
789
|
-
const yyIndex = dateLabelFormat.indexOf('yyyy')
|
|
790
|
-
if (yyIndex > -1) {
|
|
791
|
-
const yyNum = Number(dLabel.substring(yyIndex, yyIndex + 4))
|
|
792
|
-
if (yyNum && !isNaN(yyNum)) {
|
|
793
|
-
dLabel = dLabel.replace(`${yyNum}`, `${weekFullYear}`)
|
|
794
|
-
}
|
|
795
|
-
}
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
} else {
|
|
799
|
-
dValue = null
|
|
800
|
-
}
|
|
801
|
-
reactData.datePanelValue = dValue
|
|
802
|
-
reactData.datePanelLabel = dLabel
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
/**
|
|
806
|
-
* 值变化时处理
|
|
807
|
-
*/
|
|
808
|
-
const changeValue = () => {
|
|
809
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
810
|
-
const { inputValue } = reactData
|
|
811
|
-
if (isDatePickerType) {
|
|
812
|
-
dateParseValue(inputValue)
|
|
813
|
-
reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
|
|
817
|
-
/**
|
|
818
|
-
* 检查初始值
|
|
819
|
-
*/
|
|
820
|
-
const initValue = () => {
|
|
821
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
822
|
-
updateModelValue(props.modelValue)
|
|
823
|
-
if (isDatePickerType) {
|
|
824
|
-
changeValue()
|
|
825
|
-
}
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
const dateRevert = () => {
|
|
829
|
-
reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel
|
|
830
|
-
}
|
|
831
|
-
|
|
832
|
-
const dateCheckMonth = (date: Date) => {
|
|
833
|
-
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
834
|
-
const weekNum = XEUtils.getYearWeek(date, firstDayOfWeek)
|
|
835
|
-
const weekStartDate = XEUtils.getWhatWeek(date, 0, firstDayOfWeek, firstDayOfWeek)
|
|
836
|
-
const month = XEUtils.getWhatMonth(weekNum === 1 ? XEUtils.getWhatDay(weekStartDate, 6) : date, 0, 'first')
|
|
837
|
-
if (!XEUtils.isEqual(month, reactData.selectMonth)) {
|
|
838
|
-
reactData.selectMonth = month
|
|
839
|
-
}
|
|
840
|
-
}
|
|
841
|
-
|
|
842
|
-
const dateChange = (date: Date, isReload?: boolean) => {
|
|
843
|
-
const { modelValue, multiple } = props
|
|
844
|
-
const { datetimePanelValue } = reactData
|
|
845
|
-
const isDateTimeType = computeIsDateTimeType.value
|
|
846
|
-
const dateValueFormat = computeDateValueFormat.value
|
|
847
|
-
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
848
|
-
if (props.type === 'week') {
|
|
849
|
-
const sWeek = XEUtils.toNumber(props.selectDay) as VxeDatePickerPropTypes.SelectDay
|
|
850
|
-
date = XEUtils.getWhatWeek(date, 0, sWeek, firstDayOfWeek)
|
|
851
|
-
} else if (isDateTimeType) {
|
|
852
|
-
if (datetimePanelValue) {
|
|
853
|
-
date.setHours(datetimePanelValue.getHours())
|
|
854
|
-
date.setMinutes(datetimePanelValue.getMinutes())
|
|
855
|
-
date.setSeconds(datetimePanelValue.getSeconds())
|
|
856
|
-
}
|
|
857
|
-
}
|
|
858
|
-
const inpVal = XEUtils.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek })
|
|
859
|
-
dateCheckMonth(date)
|
|
860
|
-
if (multiple) {
|
|
861
|
-
const overCount = computeOverCount.value
|
|
862
|
-
// 如果为多选
|
|
863
|
-
if (isDateTimeType) {
|
|
864
|
-
// 如果是datetime特殊类型
|
|
865
|
-
const dateListValue = isReload ? [] : [...computeDateListValue.value]
|
|
866
|
-
const datetimeRest: Date[] = []
|
|
867
|
-
const eqIndex = XEUtils.findIndexOf(dateListValue, val => XEUtils.isDateSame(date, val, 'yyyyMMdd'))
|
|
868
|
-
if (eqIndex === -1) {
|
|
869
|
-
if (overCount) {
|
|
870
|
-
// 如果超出最大多选数量
|
|
871
|
-
return
|
|
872
|
-
}
|
|
873
|
-
dateListValue.push(date)
|
|
874
|
-
} else {
|
|
875
|
-
dateListValue.splice(eqIndex, 1)
|
|
876
|
-
}
|
|
877
|
-
dateListValue.forEach(item => {
|
|
878
|
-
if (item) {
|
|
879
|
-
if (datetimePanelValue) {
|
|
880
|
-
item.setHours(datetimePanelValue.getHours())
|
|
881
|
-
item.setMinutes(datetimePanelValue.getMinutes())
|
|
882
|
-
item.setSeconds(datetimePanelValue.getSeconds())
|
|
883
|
-
}
|
|
884
|
-
datetimeRest.push(item)
|
|
885
|
-
}
|
|
886
|
-
})
|
|
887
|
-
handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' })
|
|
888
|
-
} else {
|
|
889
|
-
const dateMultipleValue = isReload ? [] : computeDateMultipleValue.value
|
|
890
|
-
// 如果是日期类型
|
|
891
|
-
if (dateMultipleValue.some(val => XEUtils.isEqual(val, inpVal))) {
|
|
892
|
-
handleChange(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' })
|
|
893
|
-
} else {
|
|
894
|
-
if (overCount) {
|
|
895
|
-
// 如果超出最大多选数量
|
|
896
|
-
return
|
|
897
|
-
}
|
|
898
|
-
handleChange(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' })
|
|
899
|
-
}
|
|
900
|
-
}
|
|
901
|
-
} else {
|
|
902
|
-
// 如果为单选
|
|
903
|
-
if (!XEUtils.isEqual(modelValue, inpVal)) {
|
|
904
|
-
handleChange(inpVal, { type: 'update' })
|
|
905
|
-
}
|
|
906
|
-
}
|
|
907
|
-
}
|
|
908
|
-
|
|
909
|
-
const afterCheckValue = () => {
|
|
910
|
-
const { type } = props
|
|
911
|
-
const { inputValue, datetimePanelValue } = reactData
|
|
912
|
-
const dateLabelFormat = computeDateLabelFormat.value
|
|
913
|
-
const inputReadonly = computeInputReadonly.value
|
|
914
|
-
if (!inputReadonly) {
|
|
915
|
-
if (inputValue) {
|
|
916
|
-
let inpDateVal: VxeDatePickerPropTypes.ModelValue = parseDate(inputValue, dateLabelFormat as string)
|
|
917
|
-
if (XEUtils.isValidDate(inpDateVal)) {
|
|
918
|
-
if (type === 'time') {
|
|
919
|
-
inpDateVal = XEUtils.toDateString(inpDateVal, dateLabelFormat)
|
|
920
|
-
if (inputValue !== inpDateVal) {
|
|
921
|
-
handleChange(inpDateVal, { type: 'check' })
|
|
922
|
-
}
|
|
923
|
-
reactData.inputValue = inpDateVal
|
|
924
|
-
} else {
|
|
925
|
-
let isChange = false
|
|
926
|
-
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
927
|
-
if (type === 'datetime') {
|
|
928
|
-
const dateValue = computeDateValue.value
|
|
929
|
-
if (inputValue !== XEUtils.toDateString(dateValue, dateLabelFormat) || inputValue !== XEUtils.toDateString(inpDateVal, dateLabelFormat)) {
|
|
930
|
-
isChange = true
|
|
931
|
-
if (datetimePanelValue) {
|
|
932
|
-
datetimePanelValue.setHours(inpDateVal.getHours())
|
|
933
|
-
datetimePanelValue.setMinutes(inpDateVal.getMinutes())
|
|
934
|
-
datetimePanelValue.setSeconds(inpDateVal.getSeconds())
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
|
-
} else {
|
|
938
|
-
isChange = true
|
|
939
|
-
}
|
|
940
|
-
reactData.inputValue = XEUtils.toDateString(inpDateVal, dateLabelFormat, { firstDay: firstDayOfWeek })
|
|
941
|
-
if (isChange) {
|
|
942
|
-
dateChange(inpDateVal)
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
} else {
|
|
946
|
-
dateRevert()
|
|
947
|
-
}
|
|
948
|
-
} else {
|
|
949
|
-
handleChange('', { type: 'check' })
|
|
950
|
-
}
|
|
951
|
-
}
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
const blurEvent = (evnt: Event & { type: 'blur' }) => {
|
|
955
|
-
const { inputValue } = reactData
|
|
956
|
-
const inpImmediate = computeInpImmediate.value
|
|
957
|
-
const value = inputValue
|
|
958
|
-
if (!inpImmediate) {
|
|
959
|
-
handleChange(value, evnt)
|
|
960
|
-
}
|
|
961
|
-
afterCheckValue()
|
|
962
|
-
if (!reactData.visiblePanel) {
|
|
963
|
-
reactData.isActivated = false
|
|
964
|
-
}
|
|
965
|
-
dispatchEvent('blur', { value }, evnt)
|
|
966
|
-
// 自动更新校验状态
|
|
967
|
-
if ($xeForm && formItemInfo) {
|
|
968
|
-
$xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
|
|
969
|
-
}
|
|
970
|
-
}
|
|
971
|
-
|
|
972
|
-
const keydownEvent = (evnt: KeyboardEvent & { type: 'keydown' }) => {
|
|
973
|
-
triggerEvent(evnt)
|
|
974
|
-
}
|
|
975
|
-
|
|
976
|
-
const keyupEvent = (evnt: KeyboardEvent & { type: 'keyup' }) => {
|
|
977
|
-
triggerEvent(evnt)
|
|
978
|
-
}
|
|
979
|
-
|
|
980
|
-
// 日期
|
|
981
|
-
const dateMonthHandle = (date: Date, offsetMonth: number) => {
|
|
982
|
-
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
983
|
-
const weekNum = XEUtils.getYearWeek(date, firstDayOfWeek)
|
|
984
|
-
const weekStartDate = XEUtils.getWhatWeek(date, 0, firstDayOfWeek, firstDayOfWeek)
|
|
985
|
-
const month = XEUtils.getWhatMonth(weekNum === 1 ? XEUtils.getWhatDay(weekStartDate, 6) : date, offsetMonth, 'first')
|
|
986
|
-
reactData.selectMonth = month
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
const dateNowHandle = () => {
|
|
990
|
-
const { type } = props
|
|
991
|
-
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
992
|
-
let currentDate = new Date()
|
|
993
|
-
switch (type) {
|
|
994
|
-
case 'week':
|
|
995
|
-
currentDate = XEUtils.getWhatWeek(currentDate, 0, firstDayOfWeek)
|
|
996
|
-
break
|
|
997
|
-
case 'datetime':
|
|
998
|
-
currentDate = new Date()
|
|
999
|
-
reactData.datetimePanelValue = new Date()
|
|
1000
|
-
break
|
|
1001
|
-
default:
|
|
1002
|
-
currentDate = XEUtils.getWhatDay(Date.now(), 0, 'first')
|
|
1003
|
-
break
|
|
1004
|
-
}
|
|
1005
|
-
reactData.currentDate = currentDate
|
|
1006
|
-
dateMonthHandle(currentDate, 0)
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
const dateToggleYearTypeEvent = () => {
|
|
1010
|
-
reactData.datePanelType = 'year'
|
|
1011
|
-
}
|
|
1012
|
-
|
|
1013
|
-
const dateToggleMonthTypeEvent = () => {
|
|
1014
|
-
let { datePanelType } = reactData
|
|
1015
|
-
if (datePanelType === 'month' || datePanelType === 'quarter') {
|
|
1016
|
-
datePanelType = 'year'
|
|
1017
|
-
} else {
|
|
1018
|
-
datePanelType = 'month'
|
|
1019
|
-
}
|
|
1020
|
-
reactData.datePanelType = datePanelType
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
|
-
const datePrevEvent = (evnt: Event) => {
|
|
1024
|
-
const { type } = props
|
|
1025
|
-
const { datePanelType, selectMonth, inputValue } = reactData
|
|
1026
|
-
const { yearSize } = internalData
|
|
1027
|
-
const value = inputValue
|
|
1028
|
-
const isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value
|
|
1029
|
-
if (!isDisabledPrevDateBtn) {
|
|
1030
|
-
let viewDate
|
|
1031
|
-
if (type === 'year') {
|
|
1032
|
-
viewDate = XEUtils.getWhatYear(selectMonth, -yearSize, 'first')
|
|
1033
|
-
} else if (type === 'month' || type === 'quarter') {
|
|
1034
|
-
if (datePanelType === 'year') {
|
|
1035
|
-
viewDate = XEUtils.getWhatYear(selectMonth, -yearSize, 'first')
|
|
1036
|
-
} else {
|
|
1037
|
-
viewDate = XEUtils.getWhatYear(selectMonth, -1, 'first')
|
|
1038
|
-
}
|
|
1039
|
-
} else {
|
|
1040
|
-
if (datePanelType === 'year') {
|
|
1041
|
-
viewDate = XEUtils.getWhatYear(selectMonth, -yearSize, 'first')
|
|
1042
|
-
} else if (datePanelType === 'month') {
|
|
1043
|
-
viewDate = XEUtils.getWhatYear(selectMonth, -1, 'first')
|
|
1044
|
-
} else {
|
|
1045
|
-
viewDate = XEUtils.getWhatMonth(selectMonth, -1, 'first')
|
|
1046
|
-
}
|
|
1047
|
-
}
|
|
1048
|
-
reactData.selectMonth = viewDate
|
|
1049
|
-
dispatchEvent('date-prev', { viewType: datePanelType, viewDate, value, type }, evnt)
|
|
1050
|
-
}
|
|
1051
|
-
}
|
|
1052
|
-
|
|
1053
|
-
const dateTodayMonthEvent = (evnt: Event) => {
|
|
1054
|
-
dateNowHandle()
|
|
1055
|
-
dateChange(reactData.currentDate, true)
|
|
1056
|
-
if (!props.multiple) {
|
|
1057
|
-
hidePanel()
|
|
1058
|
-
}
|
|
1059
|
-
dispatchEvent('date-today', { type: props.type }, evnt)
|
|
1060
|
-
}
|
|
1061
|
-
|
|
1062
|
-
const dateNextEvent = (evnt: Event) => {
|
|
1063
|
-
const { type } = props
|
|
1064
|
-
const { datePanelType, selectMonth, inputValue } = reactData
|
|
1065
|
-
const { yearSize } = internalData
|
|
1066
|
-
const value = inputValue
|
|
1067
|
-
const isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value
|
|
1068
|
-
if (!isDisabledNextDateBtn) {
|
|
1069
|
-
let viewDate
|
|
1070
|
-
if (type === 'year') {
|
|
1071
|
-
viewDate = XEUtils.getWhatYear(selectMonth, yearSize, 'first')
|
|
1072
|
-
} else if (type === 'month' || type === 'quarter') {
|
|
1073
|
-
if (datePanelType === 'year') {
|
|
1074
|
-
viewDate = XEUtils.getWhatYear(selectMonth, yearSize, 'first')
|
|
1075
|
-
} else {
|
|
1076
|
-
viewDate = XEUtils.getWhatYear(selectMonth, 1, 'first')
|
|
1077
|
-
}
|
|
1078
|
-
} else {
|
|
1079
|
-
if (datePanelType === 'year') {
|
|
1080
|
-
viewDate = XEUtils.getWhatYear(selectMonth, yearSize, 'first')
|
|
1081
|
-
} else if (datePanelType === 'month') {
|
|
1082
|
-
viewDate = XEUtils.getWhatYear(selectMonth, 1, 'first')
|
|
1083
|
-
} else {
|
|
1084
|
-
viewDate = XEUtils.getWhatMonth(selectMonth, 1, 'first')
|
|
1085
|
-
}
|
|
1086
|
-
}
|
|
1087
|
-
reactData.selectMonth = viewDate
|
|
1088
|
-
dispatchEvent('date-next', { viewType: datePanelType, value, type }, evnt)
|
|
1089
|
-
}
|
|
1090
|
-
}
|
|
1091
|
-
|
|
1092
|
-
const isDateDisabled = (item: { date: Date }) => {
|
|
1093
|
-
const { disabledMethod } = props
|
|
1094
|
-
const { datePanelType } = reactData
|
|
1095
|
-
const dateStartTime = computeDateStartTime.value
|
|
1096
|
-
const dateEndTime = computeDateEndTime.value
|
|
1097
|
-
const { date } = item
|
|
1098
|
-
if (dateStartTime && dateStartTime.getTime() > date.getTime()) {
|
|
1099
|
-
return true
|
|
1100
|
-
}
|
|
1101
|
-
if (dateEndTime && dateEndTime.getTime() < date.getTime()) {
|
|
1102
|
-
return true
|
|
1103
|
-
}
|
|
1104
|
-
if (disabledMethod) {
|
|
1105
|
-
return disabledMethod({ type: datePanelType, viewType: datePanelType, date, $datePicker: $xeDatePicker })
|
|
1106
|
-
}
|
|
1107
|
-
return false
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
const dateSelectItem = (date: Date) => {
|
|
1111
|
-
const { type, multiple } = props
|
|
1112
|
-
const { datePanelType } = reactData
|
|
1113
|
-
if (type === 'month') {
|
|
1114
|
-
if (datePanelType === 'year') {
|
|
1115
|
-
reactData.datePanelType = 'month'
|
|
1116
|
-
dateCheckMonth(date)
|
|
1117
|
-
} else {
|
|
1118
|
-
dateChange(date)
|
|
1119
|
-
if (!multiple) {
|
|
1120
|
-
hidePanel()
|
|
1121
|
-
}
|
|
1122
|
-
}
|
|
1123
|
-
} else if (type === 'year') {
|
|
1124
|
-
dateChange(date)
|
|
1125
|
-
if (!multiple) {
|
|
1126
|
-
hidePanel()
|
|
1127
|
-
}
|
|
1128
|
-
} else if (type === 'quarter') {
|
|
1129
|
-
if (datePanelType === 'year') {
|
|
1130
|
-
reactData.datePanelType = 'quarter'
|
|
1131
|
-
dateCheckMonth(date)
|
|
1132
|
-
} else {
|
|
1133
|
-
dateChange(date)
|
|
1134
|
-
if (!multiple) {
|
|
1135
|
-
hidePanel()
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
} else {
|
|
1139
|
-
if (datePanelType === 'month') {
|
|
1140
|
-
reactData.datePanelType = type === 'week' ? type : 'day'
|
|
1141
|
-
dateCheckMonth(date)
|
|
1142
|
-
} else if (datePanelType === 'year') {
|
|
1143
|
-
reactData.datePanelType = 'month'
|
|
1144
|
-
dateCheckMonth(date)
|
|
1145
|
-
} else {
|
|
1146
|
-
dateChange(date)
|
|
1147
|
-
if (type === 'datetime') {
|
|
1148
|
-
// 日期带时间
|
|
1149
|
-
} else {
|
|
1150
|
-
if (!multiple) {
|
|
1151
|
-
hidePanel()
|
|
1152
|
-
}
|
|
1153
|
-
}
|
|
1154
|
-
}
|
|
1155
|
-
}
|
|
1156
|
-
}
|
|
1157
|
-
|
|
1158
|
-
const dateSelectEvent = (item: VxeDatePickerDefines.DateYearItem | VxeDatePickerDefines.DateQuarterItem | VxeDatePickerDefines.DateMonthItem | VxeDatePickerDefines.DateDayItem) => {
|
|
1159
|
-
if (!isDateDisabled(item)) {
|
|
1160
|
-
dateSelectItem(item.date)
|
|
1161
|
-
}
|
|
1162
|
-
}
|
|
1163
|
-
|
|
1164
|
-
const dateMoveDay = (offsetDay: Date) => {
|
|
1165
|
-
if (!isDateDisabled({ date: offsetDay })) {
|
|
1166
|
-
const dayList = computeDayList.value
|
|
1167
|
-
if (!dayList.some((item) => XEUtils.isDateSame(item.date, offsetDay, 'yyyyMMdd'))) {
|
|
1168
|
-
dateCheckMonth(offsetDay)
|
|
1169
|
-
}
|
|
1170
|
-
dateParseValue(offsetDay)
|
|
1171
|
-
}
|
|
1172
|
-
}
|
|
1173
|
-
|
|
1174
|
-
const dateMoveYear = (offsetYear: Date) => {
|
|
1175
|
-
if (!isDateDisabled({ date: offsetYear })) {
|
|
1176
|
-
const yearList = computeYearList.value
|
|
1177
|
-
if (!yearList.some((item) => XEUtils.isDateSame(item.date, offsetYear, 'yyyy'))) {
|
|
1178
|
-
dateCheckMonth(offsetYear)
|
|
1179
|
-
}
|
|
1180
|
-
dateParseValue(offsetYear)
|
|
1181
|
-
}
|
|
1182
|
-
}
|
|
1183
|
-
|
|
1184
|
-
const dateMoveQuarter = (offsetQuarter: Date) => {
|
|
1185
|
-
if (!isDateDisabled({ date: offsetQuarter })) {
|
|
1186
|
-
const quarterList = computeQuarterList.value
|
|
1187
|
-
if (!quarterList.some((item) => XEUtils.isDateSame(item.date, offsetQuarter, 'yyyyq'))) {
|
|
1188
|
-
dateCheckMonth(offsetQuarter)
|
|
1189
|
-
}
|
|
1190
|
-
dateParseValue(offsetQuarter)
|
|
392
|
+
hidePanel()
|
|
1191
393
|
}
|
|
394
|
+
handleChange('', evnt)
|
|
395
|
+
dispatchEvent('clear', { value }, evnt)
|
|
1192
396
|
}
|
|
1193
397
|
|
|
1194
|
-
const
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
}
|
|
1200
|
-
dateParseValue(offsetMonth)
|
|
398
|
+
const clickSuffixEvent = (evnt: Event) => {
|
|
399
|
+
const isDisabled = computeIsDisabled.value
|
|
400
|
+
if (!isDisabled) {
|
|
401
|
+
const { inputValue } = reactData
|
|
402
|
+
dispatchEvent('suffix-click', { value: inputValue }, evnt)
|
|
1201
403
|
}
|
|
1202
404
|
}
|
|
1203
405
|
|
|
1204
|
-
const
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
} else if (datePanelType === 'year') {
|
|
1212
|
-
dateMoveYear(item.date)
|
|
1213
|
-
} else {
|
|
1214
|
-
dateMoveDay(item.date)
|
|
1215
|
-
}
|
|
406
|
+
const blurEvent = (evnt: Event & { type: 'blur' }) => {
|
|
407
|
+
const $datePanel = refDatePanel.value
|
|
408
|
+
const { inputValue } = reactData
|
|
409
|
+
const inpImmediate = computeInpImmediate.value
|
|
410
|
+
const value = inputValue
|
|
411
|
+
if (!inpImmediate) {
|
|
412
|
+
handleChange(value, evnt)
|
|
1216
413
|
}
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
if (
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
414
|
+
if (!reactData.visiblePanel) {
|
|
415
|
+
reactData.isActivated = false
|
|
416
|
+
}
|
|
417
|
+
if ($datePanel) {
|
|
418
|
+
$datePanel.checkValue(reactData.inputLabel)
|
|
419
|
+
}
|
|
420
|
+
dispatchEvent('blur', { value }, evnt)
|
|
421
|
+
// 自动更新校验状态
|
|
422
|
+
if ($xeForm && formItemInfo) {
|
|
423
|
+
$xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
|
|
1224
424
|
}
|
|
1225
425
|
}
|
|
1226
426
|
|
|
1227
|
-
const
|
|
1228
|
-
|
|
1229
|
-
reactData.datetimePanelValue = datetimePanelValue ? new Date(datetimePanelValue.getTime()) : new Date()
|
|
1230
|
-
updateTimePos(evnt.currentTarget as HTMLLIElement)
|
|
427
|
+
const keydownEvent = (evnt: KeyboardEvent & { type: 'keydown' }) => {
|
|
428
|
+
triggerEvent(evnt)
|
|
1231
429
|
}
|
|
1232
430
|
|
|
1233
|
-
const
|
|
1234
|
-
|
|
1235
|
-
if (datetimePanelValue) {
|
|
1236
|
-
datetimePanelValue.setHours(item.value)
|
|
1237
|
-
}
|
|
1238
|
-
dateTimeChangeEvent(evnt)
|
|
431
|
+
const keyupEvent = (evnt: KeyboardEvent & { type: 'keyup' }) => {
|
|
432
|
+
triggerEvent(evnt)
|
|
1239
433
|
}
|
|
1240
434
|
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
// }
|
|
1246
|
-
|
|
1247
|
-
const dateConfirmEvent = () => {
|
|
1248
|
-
const { multiple } = props
|
|
1249
|
-
const { datetimePanelValue } = reactData
|
|
1250
|
-
const dateValue = computeDateValue.value
|
|
1251
|
-
const isDateTimeType = computeIsDateTimeType.value
|
|
1252
|
-
if (isDateTimeType) {
|
|
1253
|
-
const dateValueFormat = computeDateValueFormat.value
|
|
1254
|
-
if (multiple) {
|
|
1255
|
-
// 如果为多选
|
|
1256
|
-
const dateMultipleValue = computeDateMultipleValue.value
|
|
1257
|
-
if (isDateTimeType) {
|
|
1258
|
-
// 如果是datetime特殊类型
|
|
1259
|
-
const dateListValue = [...computeDateListValue.value]
|
|
1260
|
-
const datetimeRest: Date[] = []
|
|
1261
|
-
dateListValue.forEach(item => {
|
|
1262
|
-
if (item) {
|
|
1263
|
-
if (datetimePanelValue) {
|
|
1264
|
-
item.setHours(datetimePanelValue.getHours())
|
|
1265
|
-
item.setMinutes(datetimePanelValue.getMinutes())
|
|
1266
|
-
item.setSeconds(datetimePanelValue.getSeconds())
|
|
1267
|
-
}
|
|
1268
|
-
datetimeRest.push(item)
|
|
1269
|
-
}
|
|
1270
|
-
})
|
|
1271
|
-
handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' })
|
|
1272
|
-
} else {
|
|
1273
|
-
// 如果是日期类型
|
|
1274
|
-
handleChange(dateMultipleValue.join(','), { type: 'update' })
|
|
1275
|
-
}
|
|
1276
|
-
} else {
|
|
1277
|
-
dateChange(dateValue || reactData.currentDate)
|
|
1278
|
-
}
|
|
435
|
+
const confirmEvent = (evnt: MouseEvent) => {
|
|
436
|
+
const $datePanel = refDatePanel.value
|
|
437
|
+
if ($datePanel) {
|
|
438
|
+
$datePanel.confirmByEvent(evnt)
|
|
1279
439
|
}
|
|
1280
440
|
hidePanel()
|
|
1281
441
|
}
|
|
1282
442
|
|
|
1283
|
-
const
|
|
1284
|
-
const {
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
const dateSecondEvent = (evnt: MouseEvent, item: VxeDatePickerDefines.DateHourMinuteSecondItem) => {
|
|
1292
|
-
const { datetimePanelValue } = reactData
|
|
1293
|
-
if (datetimePanelValue) {
|
|
1294
|
-
datetimePanelValue.setSeconds(item.value)
|
|
443
|
+
const panelChangeEvent = (params: any) => {
|
|
444
|
+
const { multiple } = props
|
|
445
|
+
const { value, $event } = params
|
|
446
|
+
const isDateTimeType = computeIsDateTimeType.value
|
|
447
|
+
handleChange(value, $event)
|
|
448
|
+
if (!multiple && !isDateTimeType) {
|
|
449
|
+
hidePanel()
|
|
1295
450
|
}
|
|
1296
|
-
dateTimeChangeEvent(evnt)
|
|
1297
451
|
}
|
|
1298
452
|
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
if (
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
offsetYear = XEUtils.getWhatYear(offsetYear, 1)
|
|
1315
|
-
} else if (isDwArrow) {
|
|
1316
|
-
offsetYear = XEUtils.getWhatYear(offsetYear, 4)
|
|
1317
|
-
}
|
|
1318
|
-
dateMoveYear(offsetYear)
|
|
1319
|
-
} else if (datePanelType === 'quarter') {
|
|
1320
|
-
let offsetQuarter = XEUtils.getWhatQuarter(datePanelValue || Date.now(), 0, 'first')
|
|
1321
|
-
if (isLeftArrow) {
|
|
1322
|
-
offsetQuarter = XEUtils.getWhatQuarter(offsetQuarter, -1)
|
|
1323
|
-
} else if (isUpArrow) {
|
|
1324
|
-
offsetQuarter = XEUtils.getWhatQuarter(offsetQuarter, -2)
|
|
1325
|
-
} else if (isRightArrow) {
|
|
1326
|
-
offsetQuarter = XEUtils.getWhatQuarter(offsetQuarter, 1)
|
|
1327
|
-
} else if (isDwArrow) {
|
|
1328
|
-
offsetQuarter = XEUtils.getWhatQuarter(offsetQuarter, 2)
|
|
1329
|
-
}
|
|
1330
|
-
dateMoveQuarter(offsetQuarter)
|
|
1331
|
-
} else if (datePanelType === 'month') {
|
|
1332
|
-
let offsetMonth = XEUtils.getWhatMonth(datePanelValue || Date.now(), 0, 'first')
|
|
1333
|
-
if (isLeftArrow) {
|
|
1334
|
-
offsetMonth = XEUtils.getWhatMonth(offsetMonth, -1)
|
|
1335
|
-
} else if (isUpArrow) {
|
|
1336
|
-
offsetMonth = XEUtils.getWhatMonth(offsetMonth, -4)
|
|
1337
|
-
} else if (isRightArrow) {
|
|
1338
|
-
offsetMonth = XEUtils.getWhatMonth(offsetMonth, 1)
|
|
1339
|
-
} else if (isDwArrow) {
|
|
1340
|
-
offsetMonth = XEUtils.getWhatMonth(offsetMonth, 4)
|
|
1341
|
-
}
|
|
1342
|
-
dateMoveMonth(offsetMonth)
|
|
1343
|
-
} else if (datePanelType === 'week') {
|
|
1344
|
-
let offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
|
|
1345
|
-
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
1346
|
-
if (isUpArrow) {
|
|
1347
|
-
offsetDay = XEUtils.getWhatWeek(offsetDay, -1, firstDayOfWeek)
|
|
1348
|
-
} else if (isDwArrow) {
|
|
1349
|
-
offsetDay = XEUtils.getWhatWeek(offsetDay, 1, firstDayOfWeek)
|
|
1350
|
-
}
|
|
1351
|
-
dateMoveDay(offsetDay)
|
|
1352
|
-
} else {
|
|
1353
|
-
let offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
|
|
1354
|
-
if (isLeftArrow) {
|
|
1355
|
-
offsetDay = XEUtils.getWhatDay(offsetDay, -1)
|
|
1356
|
-
} else if (isUpArrow) {
|
|
1357
|
-
offsetDay = XEUtils.getWhatWeek(offsetDay, -1, offsetDay.getDay() as VxeDatePickerPropTypes.StartDay)
|
|
1358
|
-
} else if (isRightArrow) {
|
|
1359
|
-
offsetDay = XEUtils.getWhatDay(offsetDay, 1)
|
|
1360
|
-
} else if (isDwArrow) {
|
|
1361
|
-
offsetDay = XEUtils.getWhatWeek(offsetDay, 1, offsetDay.getDay() as VxeDatePickerPropTypes.StartDay)
|
|
453
|
+
// 全局事件
|
|
454
|
+
const handleGlobalMousedownEvent = (evnt: Event) => {
|
|
455
|
+
const $datePanel = refDatePanel.value
|
|
456
|
+
const { visiblePanel, isActivated } = reactData
|
|
457
|
+
const el = refElem.value
|
|
458
|
+
const panelWrapperElem = refPanelWrapper.value
|
|
459
|
+
const isDisabled = computeIsDisabled.value
|
|
460
|
+
if (!isDisabled && isActivated) {
|
|
461
|
+
reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelWrapperElem).flag
|
|
462
|
+
if (!reactData.isActivated) {
|
|
463
|
+
if (visiblePanel) {
|
|
464
|
+
hidePanel()
|
|
465
|
+
if ($datePanel) {
|
|
466
|
+
$datePanel.checkValue(reactData.inputLabel)
|
|
467
|
+
}
|
|
1362
468
|
}
|
|
1363
|
-
dateMoveDay(offsetDay)
|
|
1364
469
|
}
|
|
1365
470
|
}
|
|
1366
471
|
}
|
|
1367
472
|
|
|
1368
|
-
const
|
|
1369
|
-
const {
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
473
|
+
const handleGlobalMousewheelEvent = (evnt: Event) => {
|
|
474
|
+
const { visiblePanel } = reactData
|
|
475
|
+
const isDisabled = computeIsDisabled.value
|
|
476
|
+
if (!isDisabled) {
|
|
477
|
+
if (visiblePanel) {
|
|
478
|
+
const panelWrapperElem = refPanelWrapper.value
|
|
479
|
+
if (getEventTargetNode(evnt, panelWrapperElem).flag) {
|
|
480
|
+
updatePlacement()
|
|
481
|
+
} else {
|
|
482
|
+
hidePanel()
|
|
483
|
+
}
|
|
1377
484
|
}
|
|
1378
485
|
}
|
|
1379
486
|
}
|
|
1380
487
|
|
|
1381
|
-
const
|
|
1382
|
-
const
|
|
1383
|
-
const
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
}
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
dateParseValue(dateValue)
|
|
1394
|
-
} else {
|
|
1395
|
-
dateNowHandle()
|
|
1396
|
-
}
|
|
1397
|
-
if (isDateTimeType) {
|
|
1398
|
-
reactData.datetimePanelValue = reactData.datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
|
|
1399
|
-
nextTick(() => {
|
|
1400
|
-
const timeBodyElem = refInputTimeBody.value
|
|
1401
|
-
XEUtils.arrayEach(timeBodyElem.querySelectorAll('li.is--selected'), (elem) => {
|
|
1402
|
-
updateTimePos(elem)
|
|
1403
|
-
})
|
|
1404
|
-
})
|
|
488
|
+
const handleGlobalBlurEvent = () => {
|
|
489
|
+
const $datePanel = refDatePanel.value
|
|
490
|
+
const { isActivated, visiblePanel } = reactData
|
|
491
|
+
if (visiblePanel) {
|
|
492
|
+
hidePanel()
|
|
493
|
+
if ($datePanel) {
|
|
494
|
+
$datePanel.checkValue(reactData.inputLabel)
|
|
495
|
+
}
|
|
496
|
+
} else if (isActivated) {
|
|
497
|
+
if ($datePanel) {
|
|
498
|
+
$datePanel.checkValue(reactData.inputLabel)
|
|
499
|
+
}
|
|
1405
500
|
}
|
|
1406
501
|
}
|
|
1407
502
|
|
|
1408
|
-
// 日期
|
|
1409
|
-
|
|
1410
503
|
// 弹出面板
|
|
1411
504
|
const updateZindex = () => {
|
|
1412
505
|
if (reactData.panelIndex < getLastZIndex()) {
|
|
@@ -1490,7 +583,6 @@ export default defineComponent({
|
|
|
1490
583
|
const showPanel = () => {
|
|
1491
584
|
const { visiblePanel } = reactData
|
|
1492
585
|
const isDisabled = computeIsDisabled.value
|
|
1493
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
1494
586
|
if (!isDisabled && !visiblePanel) {
|
|
1495
587
|
if (!reactData.initialized) {
|
|
1496
588
|
reactData.initialized = true
|
|
@@ -1501,9 +593,6 @@ export default defineComponent({
|
|
|
1501
593
|
}
|
|
1502
594
|
reactData.isActivated = true
|
|
1503
595
|
reactData.isAniVisible = true
|
|
1504
|
-
if (isDatePickerType) {
|
|
1505
|
-
dateOpenPanel()
|
|
1506
|
-
}
|
|
1507
596
|
setTimeout(() => {
|
|
1508
597
|
reactData.visiblePanel = true
|
|
1509
598
|
}, 10)
|
|
@@ -1526,143 +615,72 @@ export default defineComponent({
|
|
|
1526
615
|
}
|
|
1527
616
|
|
|
1528
617
|
const handleShortcutEvent: VxeButtonGroupEvents.Click = ({ option, $event }) => {
|
|
618
|
+
const { type } = props
|
|
619
|
+
const { inputValue } = reactData
|
|
1529
620
|
const shortcutOpts = computeShortcutOpts.value
|
|
1530
621
|
const { autoClose } = shortcutOpts
|
|
1531
|
-
const clickMethod =
|
|
622
|
+
const { code, clickMethod } = option as VxeDatePickerDefines.ShortcutOption
|
|
623
|
+
let value = inputValue
|
|
1532
624
|
const shortcutParams = {
|
|
1533
625
|
$datePicker: $xeDatePicker,
|
|
1534
|
-
option
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
}
|
|
1561
|
-
} else {
|
|
1562
|
-
afterCheckValue()
|
|
1563
|
-
}
|
|
1564
|
-
}
|
|
1565
|
-
}
|
|
1566
|
-
}
|
|
1567
|
-
|
|
1568
|
-
const handleGlobalKeydownEvent = (evnt: KeyboardEvent) => {
|
|
1569
|
-
const { clearable } = props
|
|
1570
|
-
const { visiblePanel } = reactData
|
|
1571
|
-
const isDatePickerType = computeIsDatePickerType.value
|
|
1572
|
-
const isDisabled = computeIsDisabled.value
|
|
1573
|
-
if (!isDisabled) {
|
|
1574
|
-
const isTab = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.TAB)
|
|
1575
|
-
const isDel = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.DELETE)
|
|
1576
|
-
const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE)
|
|
1577
|
-
const isEnter = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ENTER)
|
|
1578
|
-
const isLeftArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_LEFT)
|
|
1579
|
-
const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP)
|
|
1580
|
-
const isRightArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_RIGHT)
|
|
1581
|
-
const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN)
|
|
1582
|
-
const isPgUp = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.PAGE_UP)
|
|
1583
|
-
const isPgDn = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.PAGE_DOWN)
|
|
1584
|
-
const operArrow = isLeftArrow || isUpArrow || isRightArrow || isDwArrow
|
|
1585
|
-
let isActivated = reactData.isActivated
|
|
1586
|
-
if (isTab) {
|
|
1587
|
-
if (isActivated) {
|
|
1588
|
-
afterCheckValue()
|
|
1589
|
-
}
|
|
1590
|
-
isActivated = false
|
|
1591
|
-
reactData.isActivated = isActivated
|
|
1592
|
-
} else if (operArrow) {
|
|
1593
|
-
if (isDatePickerType) {
|
|
1594
|
-
if (isActivated) {
|
|
1595
|
-
if (visiblePanel) {
|
|
1596
|
-
dateOffsetEvent(evnt)
|
|
1597
|
-
} else if (isUpArrow || isDwArrow) {
|
|
1598
|
-
datePickerOpenEvent(evnt)
|
|
1599
|
-
}
|
|
1600
|
-
}
|
|
1601
|
-
}
|
|
1602
|
-
} else if (isEnter) {
|
|
1603
|
-
if (isDatePickerType) {
|
|
1604
|
-
if (visiblePanel) {
|
|
1605
|
-
if (reactData.datePanelValue) {
|
|
1606
|
-
dateSelectItem(reactData.datePanelValue)
|
|
1607
|
-
} else {
|
|
1608
|
-
hidePanel()
|
|
1609
|
-
}
|
|
1610
|
-
} else if (isActivated) {
|
|
1611
|
-
datePickerOpenEvent(evnt)
|
|
1612
|
-
}
|
|
1613
|
-
}
|
|
1614
|
-
} else if (isPgUp || isPgDn) {
|
|
1615
|
-
if (isDatePickerType) {
|
|
1616
|
-
if (isActivated) {
|
|
1617
|
-
datePgOffsetEvent(evnt)
|
|
626
|
+
option,
|
|
627
|
+
value,
|
|
628
|
+
code
|
|
629
|
+
}
|
|
630
|
+
if (!clickMethod && code) {
|
|
631
|
+
const gCommandOpts = commands.get(code)
|
|
632
|
+
const dpCommandMethod = gCommandOpts ? gCommandOpts.datePickerCommandMethod : null
|
|
633
|
+
if (dpCommandMethod) {
|
|
634
|
+
dpCommandMethod(shortcutParams)
|
|
635
|
+
} else {
|
|
636
|
+
const dateValueFormat = computeDateValueFormat.value
|
|
637
|
+
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
638
|
+
switch (code) {
|
|
639
|
+
case 'now':
|
|
640
|
+
case 'prev':
|
|
641
|
+
case 'next':
|
|
642
|
+
case 'minus':
|
|
643
|
+
case 'plus': {
|
|
644
|
+
const restObj = getDateByCode(code, value, type, {
|
|
645
|
+
valueFormat: dateValueFormat,
|
|
646
|
+
firstDay: firstDayOfWeek
|
|
647
|
+
})
|
|
648
|
+
value = restObj.value
|
|
649
|
+
shortcutParams.value = value
|
|
650
|
+
handleChange(value, $event)
|
|
651
|
+
break
|
|
1618
652
|
}
|
|
653
|
+
default:
|
|
654
|
+
errLog('vxe.error.notCommands', [code])
|
|
655
|
+
break
|
|
1619
656
|
}
|
|
1620
657
|
}
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
} else if (isDel && clearable) {
|
|
1626
|
-
if (isActivated) {
|
|
1627
|
-
clearValueEvent(evnt, null)
|
|
1628
|
-
}
|
|
1629
|
-
}
|
|
1630
|
-
}
|
|
1631
|
-
}
|
|
1632
|
-
|
|
1633
|
-
const handleGlobalMousewheelEvent = (evnt: Event) => {
|
|
1634
|
-
const { visiblePanel } = reactData
|
|
1635
|
-
const isDisabled = computeIsDisabled.value
|
|
1636
|
-
if (!isDisabled) {
|
|
1637
|
-
if (visiblePanel) {
|
|
1638
|
-
const panelWrapperElem = refPanelWrapper.value
|
|
1639
|
-
if (getEventTargetNode(evnt, panelWrapperElem).flag) {
|
|
1640
|
-
updatePlacement()
|
|
1641
|
-
} else {
|
|
1642
|
-
hidePanel()
|
|
1643
|
-
afterCheckValue()
|
|
1644
|
-
}
|
|
658
|
+
} else {
|
|
659
|
+
const optClickMethod = clickMethod || shortcutOpts.clickMethod
|
|
660
|
+
if (optClickMethod) {
|
|
661
|
+
optClickMethod(shortcutParams)
|
|
1645
662
|
}
|
|
1646
663
|
}
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
const handleGlobalBlurEvent = () => {
|
|
1650
|
-
const { isActivated, visiblePanel } = reactData
|
|
1651
|
-
if (visiblePanel) {
|
|
664
|
+
if (autoClose) {
|
|
1652
665
|
hidePanel()
|
|
1653
|
-
afterCheckValue()
|
|
1654
|
-
} else if (isActivated) {
|
|
1655
|
-
afterCheckValue()
|
|
1656
666
|
}
|
|
667
|
+
dispatchEvent('shortcut-click', shortcutParams, $event)
|
|
1657
668
|
}
|
|
1658
669
|
|
|
1659
670
|
const dispatchEvent = (type: ValueOf<VxeDatePickerEmits>, params: Record<string, any>, evnt: Event | null) => {
|
|
1660
671
|
emit(type, createEvent(evnt, { $datePicker: $xeDatePicker }, params))
|
|
1661
672
|
}
|
|
1662
673
|
|
|
1663
|
-
datePickerMethods = {
|
|
674
|
+
const datePickerMethods: DatePickerMethods = {
|
|
1664
675
|
dispatchEvent,
|
|
1665
676
|
|
|
677
|
+
setModelValue (value) {
|
|
678
|
+
reactData.inputValue = value
|
|
679
|
+
emit('update:modelValue', value)
|
|
680
|
+
},
|
|
681
|
+
setModelValueByEvent (evnt, value) {
|
|
682
|
+
handleChange(value || '', evnt)
|
|
683
|
+
},
|
|
1666
684
|
focus () {
|
|
1667
685
|
const inputElem = refInputTarget.value
|
|
1668
686
|
reactData.isActivated = true
|
|
@@ -1688,435 +706,16 @@ export default defineComponent({
|
|
|
1688
706
|
|
|
1689
707
|
Object.assign($xeDatePicker, datePickerMethods)
|
|
1690
708
|
|
|
1691
|
-
const renderDateLabel = (item: VxeDatePickerDefines.DateYearItem | VxeDatePickerDefines.DateQuarterItem | VxeDatePickerDefines.DateMonthItem | VxeDatePickerDefines.DateDayItem, label: string | number) => {
|
|
1692
|
-
const { festivalMethod } = props
|
|
1693
|
-
if (festivalMethod) {
|
|
1694
|
-
const { datePanelType } = reactData
|
|
1695
|
-
const festivalRest = festivalMethod({ type: datePanelType, viewType: datePanelType, date: item.date, $datePicker: $xeDatePicker })
|
|
1696
|
-
const festivalItem = festivalRest ? (XEUtils.isString(festivalRest) ? { label: festivalRest } : festivalRest) : {}
|
|
1697
|
-
const extraItem = festivalItem.extra ? (XEUtils.isString(festivalItem.extra) ? { label: festivalItem.extra } : festivalItem.extra) : null
|
|
1698
|
-
const labels = [
|
|
1699
|
-
h('span', {
|
|
1700
|
-
class: ['vxe-date-picker--date-label', {
|
|
1701
|
-
'is-notice': festivalItem.notice
|
|
1702
|
-
}]
|
|
1703
|
-
}, extraItem && extraItem.label
|
|
1704
|
-
? [
|
|
1705
|
-
h('span', `${label}`),
|
|
1706
|
-
h('span', {
|
|
1707
|
-
class: ['vxe-date-picker--date-label--extra', extraItem.important ? 'is-important' : '', extraItem.className],
|
|
1708
|
-
style: extraItem.style
|
|
1709
|
-
}, XEUtils.toValueString(extraItem.label))
|
|
1710
|
-
]
|
|
1711
|
-
: `${label}`)
|
|
1712
|
-
]
|
|
1713
|
-
const festivalLabel = festivalItem.label
|
|
1714
|
-
if (festivalLabel) {
|
|
1715
|
-
// 默认最多支持3个节日重叠
|
|
1716
|
-
const festivalLabels = XEUtils.toValueString(festivalLabel).split(',')
|
|
1717
|
-
labels.push(
|
|
1718
|
-
h('span', {
|
|
1719
|
-
class: ['vxe-date-picker--date-festival', festivalItem.important ? 'is-important' : '', festivalItem.className],
|
|
1720
|
-
style: festivalItem.style
|
|
1721
|
-
}, [
|
|
1722
|
-
festivalLabels.length > 1
|
|
1723
|
-
? h('span', {
|
|
1724
|
-
class: ['vxe-date-picker--date-festival--overlap', `overlap--${festivalLabels.length}`]
|
|
1725
|
-
}, festivalLabels.map(label => h('span', label.substring(0, 3))))
|
|
1726
|
-
: h('span', {
|
|
1727
|
-
class: 'vxe-date-picker--date-festival--label'
|
|
1728
|
-
}, festivalLabels[0].substring(0, 3))
|
|
1729
|
-
])
|
|
1730
|
-
)
|
|
1731
|
-
}
|
|
1732
|
-
return labels
|
|
1733
|
-
}
|
|
1734
|
-
return label
|
|
1735
|
-
}
|
|
1736
|
-
|
|
1737
|
-
const renderDateDayTable = () => {
|
|
1738
|
-
const { multiple } = props
|
|
1739
|
-
const { datePanelType, datePanelValue } = reactData
|
|
1740
|
-
const dateValue = computeDateValue.value
|
|
1741
|
-
const dateHeaders = computeDateHeaders.value
|
|
1742
|
-
const dayDatas = computeDayDatas.value
|
|
1743
|
-
const dateListValue = computeDateListValue.value
|
|
1744
|
-
const overCount = computeOverCount.value
|
|
1745
|
-
const matchFormat = 'yyyyMMdd'
|
|
1746
|
-
return [
|
|
1747
|
-
h('table', {
|
|
1748
|
-
class: `vxe-date-picker--date-${datePanelType}-view`,
|
|
1749
|
-
cellspacing: 0,
|
|
1750
|
-
cellpadding: 0,
|
|
1751
|
-
border: 0
|
|
1752
|
-
}, [
|
|
1753
|
-
h('thead', [
|
|
1754
|
-
h('tr', dateHeaders.map((item) => {
|
|
1755
|
-
return h('th', item.label)
|
|
1756
|
-
}))
|
|
1757
|
-
]),
|
|
1758
|
-
h('tbody', dayDatas.map((rows) => {
|
|
1759
|
-
return h('tr', rows.map((item) => {
|
|
1760
|
-
const isSelected = multiple ? dateListValue.some(val => XEUtils.isDateSame(val, item.date, matchFormat)) : XEUtils.isDateSame(dateValue, item.date, matchFormat)
|
|
1761
|
-
return h('td', {
|
|
1762
|
-
class: {
|
|
1763
|
-
'is--prev': item.isPrev,
|
|
1764
|
-
'is--current': item.isCurrent,
|
|
1765
|
-
'is--now': item.isNow,
|
|
1766
|
-
'is--next': item.isNext,
|
|
1767
|
-
'is--disabled': isDateDisabled(item),
|
|
1768
|
-
'is--selected': isSelected,
|
|
1769
|
-
'is--over': overCount && !isSelected,
|
|
1770
|
-
'is--hover': !overCount && XEUtils.isDateSame(datePanelValue, item.date, matchFormat)
|
|
1771
|
-
},
|
|
1772
|
-
onClick: () => dateSelectEvent(item),
|
|
1773
|
-
onMouseenter: () => dateMouseenterEvent(item)
|
|
1774
|
-
}, renderDateLabel(item, item.label))
|
|
1775
|
-
}))
|
|
1776
|
-
}))
|
|
1777
|
-
])
|
|
1778
|
-
]
|
|
1779
|
-
}
|
|
1780
|
-
|
|
1781
|
-
const renderDateWeekTable = () => {
|
|
1782
|
-
const { multiple } = props
|
|
1783
|
-
const { datePanelType, datePanelValue } = reactData
|
|
1784
|
-
const dateValue = computeDateValue.value
|
|
1785
|
-
const weekHeaders = computeWeekHeaders.value
|
|
1786
|
-
const weekDates = computeWeekDates.value
|
|
1787
|
-
const dateListValue = computeDateListValue.value
|
|
1788
|
-
const overCount = computeOverCount.value
|
|
1789
|
-
const matchFormat = 'yyyyMMdd'
|
|
1790
|
-
return [
|
|
1791
|
-
h('table', {
|
|
1792
|
-
class: `vxe-date-picker--date-${datePanelType}-view`,
|
|
1793
|
-
cellspacing: 0,
|
|
1794
|
-
cellpadding: 0,
|
|
1795
|
-
border: 0
|
|
1796
|
-
}, [
|
|
1797
|
-
h('thead', [
|
|
1798
|
-
h('tr', weekHeaders.map((item) => {
|
|
1799
|
-
return h('th', item.label)
|
|
1800
|
-
}))
|
|
1801
|
-
]),
|
|
1802
|
-
h('tbody', weekDates.map((rows) => {
|
|
1803
|
-
const isSelected = multiple ? rows.some((item) => dateListValue.some(val => XEUtils.isDateSame(val, item.date, matchFormat))) : rows.some((item) => XEUtils.isDateSame(dateValue, item.date, matchFormat))
|
|
1804
|
-
const isHover = rows.some((item) => XEUtils.isDateSame(datePanelValue, item.date, matchFormat))
|
|
1805
|
-
return h('tr', rows.map((item) => {
|
|
1806
|
-
return h('td', {
|
|
1807
|
-
class: {
|
|
1808
|
-
'is--prev': item.isPrev,
|
|
1809
|
-
'is--current': item.isCurrent,
|
|
1810
|
-
'is--now': item.isNow,
|
|
1811
|
-
'is--next': item.isNext,
|
|
1812
|
-
'is--disabled': isDateDisabled(item),
|
|
1813
|
-
'is--selected': isSelected,
|
|
1814
|
-
'is--over': overCount && !isSelected,
|
|
1815
|
-
'is--hover': !overCount && isHover
|
|
1816
|
-
},
|
|
1817
|
-
// event
|
|
1818
|
-
onClick: () => dateSelectEvent(item),
|
|
1819
|
-
onMouseenter: () => dateMouseenterEvent(item)
|
|
1820
|
-
}, renderDateLabel(item, item.label))
|
|
1821
|
-
}))
|
|
1822
|
-
}))
|
|
1823
|
-
])
|
|
1824
|
-
]
|
|
1825
|
-
}
|
|
1826
|
-
|
|
1827
|
-
const renderDateMonthTable = () => {
|
|
1828
|
-
const { multiple } = props
|
|
1829
|
-
const { datePanelType, datePanelValue } = reactData
|
|
1830
|
-
const dateValue = computeDateValue.value
|
|
1831
|
-
const monthDatas = computeMonthDatas.value
|
|
1832
|
-
const dateListValue = computeDateListValue.value
|
|
1833
|
-
const overCount = computeOverCount.value
|
|
1834
|
-
const matchFormat = 'yyyyMM'
|
|
1835
|
-
return [
|
|
1836
|
-
h('table', {
|
|
1837
|
-
class: `vxe-date-picker--date-${datePanelType}-view`,
|
|
1838
|
-
cellspacing: 0,
|
|
1839
|
-
cellpadding: 0,
|
|
1840
|
-
border: 0
|
|
1841
|
-
}, [
|
|
1842
|
-
h('tbody', monthDatas.map((rows) => {
|
|
1843
|
-
return h('tr', rows.map((item) => {
|
|
1844
|
-
const isSelected = multiple ? dateListValue.some(val => XEUtils.isDateSame(val, item.date, matchFormat)) : XEUtils.isDateSame(dateValue, item.date, matchFormat)
|
|
1845
|
-
return h('td', {
|
|
1846
|
-
class: {
|
|
1847
|
-
'is--prev': item.isPrev,
|
|
1848
|
-
'is--current': item.isCurrent,
|
|
1849
|
-
'is--now': item.isNow,
|
|
1850
|
-
'is--next': item.isNext,
|
|
1851
|
-
'is--disabled': isDateDisabled(item),
|
|
1852
|
-
'is--selected': isSelected,
|
|
1853
|
-
'is--over': overCount && !isSelected,
|
|
1854
|
-
'is--hover': !overCount && XEUtils.isDateSame(datePanelValue, item.date, matchFormat)
|
|
1855
|
-
},
|
|
1856
|
-
onClick: () => dateSelectEvent(item),
|
|
1857
|
-
onMouseenter: () => dateMouseenterEvent(item)
|
|
1858
|
-
}, renderDateLabel(item, getI18n(`vxe.input.date.months.m${item.month}`)))
|
|
1859
|
-
}))
|
|
1860
|
-
}))
|
|
1861
|
-
])
|
|
1862
|
-
]
|
|
1863
|
-
}
|
|
1864
|
-
|
|
1865
|
-
const renderDateQuarterTable = () => {
|
|
1866
|
-
const { multiple } = props
|
|
1867
|
-
const { datePanelType, datePanelValue } = reactData
|
|
1868
|
-
const dateValue = computeDateValue.value
|
|
1869
|
-
const quarterDatas = computeQuarterDatas.value
|
|
1870
|
-
const dateListValue = computeDateListValue.value
|
|
1871
|
-
const overCount = computeOverCount.value
|
|
1872
|
-
const matchFormat = 'yyyyq'
|
|
1873
|
-
return [
|
|
1874
|
-
h('table', {
|
|
1875
|
-
class: `vxe-date-picker--date-${datePanelType}-view`,
|
|
1876
|
-
cellspacing: 0,
|
|
1877
|
-
cellpadding: 0,
|
|
1878
|
-
border: 0
|
|
1879
|
-
}, [
|
|
1880
|
-
h('tbody', quarterDatas.map((rows) => {
|
|
1881
|
-
return h('tr', rows.map((item) => {
|
|
1882
|
-
const isSelected = multiple ? dateListValue.some(val => XEUtils.isDateSame(val, item.date, matchFormat)) : XEUtils.isDateSame(dateValue, item.date, matchFormat)
|
|
1883
|
-
return h('td', {
|
|
1884
|
-
class: {
|
|
1885
|
-
'is--prev': item.isPrev,
|
|
1886
|
-
'is--current': item.isCurrent,
|
|
1887
|
-
'is--now': item.isNow,
|
|
1888
|
-
'is--next': item.isNext,
|
|
1889
|
-
'is--disabled': isDateDisabled(item),
|
|
1890
|
-
'is--selected': isSelected,
|
|
1891
|
-
'is--over': overCount && !isSelected,
|
|
1892
|
-
'is--hover': !overCount && XEUtils.isDateSame(datePanelValue, item.date, matchFormat)
|
|
1893
|
-
},
|
|
1894
|
-
onClick: () => dateSelectEvent(item),
|
|
1895
|
-
onMouseenter: () => dateMouseenterEvent(item)
|
|
1896
|
-
}, renderDateLabel(item, getI18n(`vxe.input.date.quarters.q${item.quarter}`)))
|
|
1897
|
-
}))
|
|
1898
|
-
}))
|
|
1899
|
-
])
|
|
1900
|
-
]
|
|
1901
|
-
}
|
|
1902
|
-
|
|
1903
|
-
const renderDateYearTable = () => {
|
|
1904
|
-
const { multiple } = props
|
|
1905
|
-
const { datePanelType, datePanelValue } = reactData
|
|
1906
|
-
const dateValue = computeDateValue.value
|
|
1907
|
-
const yearDatas = computeYearDatas.value
|
|
1908
|
-
const dateListValue = computeDateListValue.value
|
|
1909
|
-
const overCount = computeOverCount.value
|
|
1910
|
-
const matchFormat = 'yyyy'
|
|
1911
|
-
return [
|
|
1912
|
-
h('table', {
|
|
1913
|
-
class: `vxe-date-picker--date-${datePanelType}-view`,
|
|
1914
|
-
cellspacing: 0,
|
|
1915
|
-
cellpadding: 0,
|
|
1916
|
-
border: 0
|
|
1917
|
-
}, [
|
|
1918
|
-
h('tbody', yearDatas.map((rows) => {
|
|
1919
|
-
return h('tr', rows.map((item) => {
|
|
1920
|
-
const isSelected = multiple ? dateListValue.some(val => XEUtils.isDateSame(val, item.date, matchFormat)) : XEUtils.isDateSame(dateValue, item.date, matchFormat)
|
|
1921
|
-
return h('td', {
|
|
1922
|
-
class: {
|
|
1923
|
-
'is--prev': item.isPrev,
|
|
1924
|
-
'is--current': item.isCurrent,
|
|
1925
|
-
'is--now': item.isNow,
|
|
1926
|
-
'is--next': item.isNext,
|
|
1927
|
-
'is--disabled': isDateDisabled(item),
|
|
1928
|
-
'is--selected': isSelected,
|
|
1929
|
-
'is--over': overCount && !isSelected,
|
|
1930
|
-
'is--hover': !overCount && XEUtils.isDateSame(datePanelValue, item.date, matchFormat)
|
|
1931
|
-
},
|
|
1932
|
-
onClick: () => dateSelectEvent(item),
|
|
1933
|
-
onMouseenter: () => dateMouseenterEvent(item)
|
|
1934
|
-
}, renderDateLabel(item, item.year))
|
|
1935
|
-
}))
|
|
1936
|
-
}))
|
|
1937
|
-
])
|
|
1938
|
-
]
|
|
1939
|
-
}
|
|
1940
|
-
|
|
1941
|
-
const renderDateTable = () => {
|
|
1942
|
-
const { datePanelType } = reactData
|
|
1943
|
-
switch (datePanelType) {
|
|
1944
|
-
case 'week' :
|
|
1945
|
-
return renderDateWeekTable()
|
|
1946
|
-
case 'month' :
|
|
1947
|
-
return renderDateMonthTable()
|
|
1948
|
-
case 'quarter' :
|
|
1949
|
-
return renderDateQuarterTable()
|
|
1950
|
-
case 'year' :
|
|
1951
|
-
return renderDateYearTable()
|
|
1952
|
-
}
|
|
1953
|
-
return renderDateDayTable()
|
|
1954
|
-
}
|
|
1955
|
-
|
|
1956
|
-
const renderDatePanel = () => {
|
|
1957
|
-
const { multiple } = props
|
|
1958
|
-
const { datePanelType } = reactData
|
|
1959
|
-
const isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value
|
|
1960
|
-
const isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value
|
|
1961
|
-
const selectDatePanelObj = computeSelectDatePanelObj.value
|
|
1962
|
-
const supportMultiples = computeSupportMultiples.value
|
|
1963
|
-
return [
|
|
1964
|
-
h('div', {
|
|
1965
|
-
class: 'vxe-date-picker--date-picker-header'
|
|
1966
|
-
}, [
|
|
1967
|
-
h('div', {
|
|
1968
|
-
class: 'vxe-date-picker--date-picker-type-wrapper'
|
|
1969
|
-
}, [
|
|
1970
|
-
datePanelType === 'year'
|
|
1971
|
-
? h('span', {
|
|
1972
|
-
class: 'vxe-date-picker--date-picker-label'
|
|
1973
|
-
}, selectDatePanelObj.y)
|
|
1974
|
-
: h('span', {
|
|
1975
|
-
class: 'vxe-date-picker--date-picker-btns'
|
|
1976
|
-
}, [
|
|
1977
|
-
h('span', {
|
|
1978
|
-
class: 'vxe-date-picker--date-picker-btn',
|
|
1979
|
-
onClick: dateToggleYearTypeEvent
|
|
1980
|
-
}, selectDatePanelObj.y),
|
|
1981
|
-
selectDatePanelObj.m
|
|
1982
|
-
? h('span', {
|
|
1983
|
-
class: 'vxe-date-picker--date-picker-btn',
|
|
1984
|
-
onClick: dateToggleMonthTypeEvent
|
|
1985
|
-
}, selectDatePanelObj.m)
|
|
1986
|
-
: renderEmptyElement($xeDatePicker)
|
|
1987
|
-
])
|
|
1988
|
-
]),
|
|
1989
|
-
h('div', {
|
|
1990
|
-
class: 'vxe-date-picker--date-picker-btn-wrapper'
|
|
1991
|
-
}, [
|
|
1992
|
-
h('span', {
|
|
1993
|
-
class: ['vxe-date-picker--date-picker-btn vxe-date-picker--date-picker-prev-btn', {
|
|
1994
|
-
'is--disabled': isDisabledPrevDateBtn
|
|
1995
|
-
}],
|
|
1996
|
-
onClick: datePrevEvent
|
|
1997
|
-
}, [
|
|
1998
|
-
h('i', {
|
|
1999
|
-
class: 'vxe-icon-caret-left'
|
|
2000
|
-
})
|
|
2001
|
-
]),
|
|
2002
|
-
h('span', {
|
|
2003
|
-
class: 'vxe-date-picker--date-picker-btn vxe-date-picker--date-picker-current-btn',
|
|
2004
|
-
onClick: dateTodayMonthEvent
|
|
2005
|
-
}, [
|
|
2006
|
-
h('i', {
|
|
2007
|
-
class: 'vxe-icon-dot'
|
|
2008
|
-
})
|
|
2009
|
-
]),
|
|
2010
|
-
h('span', {
|
|
2011
|
-
class: ['vxe-date-picker--date-picker-btn vxe-date-picker--date-picker-next-btn', {
|
|
2012
|
-
'is--disabled': isDisabledNextDateBtn
|
|
2013
|
-
}],
|
|
2014
|
-
onClick: dateNextEvent
|
|
2015
|
-
}, [
|
|
2016
|
-
h('i', {
|
|
2017
|
-
class: 'vxe-icon-caret-right'
|
|
2018
|
-
})
|
|
2019
|
-
]),
|
|
2020
|
-
multiple && supportMultiples
|
|
2021
|
-
? h('span', {
|
|
2022
|
-
class: 'vxe-date-picker--date-picker-btn vxe-date-picker--date-picker-confirm-btn'
|
|
2023
|
-
}, [
|
|
2024
|
-
h('button', {
|
|
2025
|
-
class: 'vxe-date-picker--date-picker-confirm',
|
|
2026
|
-
type: 'button',
|
|
2027
|
-
onClick: dateConfirmEvent
|
|
2028
|
-
}, getI18n('vxe.button.confirm'))
|
|
2029
|
-
])
|
|
2030
|
-
: null
|
|
2031
|
-
])
|
|
2032
|
-
]),
|
|
2033
|
-
h('div', {
|
|
2034
|
-
class: 'vxe-date-picker--date-picker-body'
|
|
2035
|
-
}, renderDateTable())
|
|
2036
|
-
]
|
|
2037
|
-
}
|
|
2038
|
-
|
|
2039
|
-
const renderTimePanel = () => {
|
|
2040
|
-
const { datetimePanelValue } = reactData
|
|
2041
|
-
const dateTimeLabel = computeDateTimeLabel.value
|
|
2042
|
-
const hourList = computeHourList.value
|
|
2043
|
-
const hasTimeMinute = computeHasTimeMinute.value
|
|
2044
|
-
const minuteList = computeMinuteList.value
|
|
2045
|
-
const hasTimeSecond = computeHasTimeSecond.value
|
|
2046
|
-
const secondList = computeSecondList.value
|
|
2047
|
-
return [
|
|
2048
|
-
h('div', {
|
|
2049
|
-
class: 'vxe-date-picker--time-picker-header'
|
|
2050
|
-
}, [
|
|
2051
|
-
hasTimeMinute
|
|
2052
|
-
? h('div', {
|
|
2053
|
-
class: 'vxe-date-picker--time-picker-title'
|
|
2054
|
-
}, dateTimeLabel)
|
|
2055
|
-
: createCommentVNode(),
|
|
2056
|
-
h('div', {
|
|
2057
|
-
class: 'vxe-date-picker--time-picker-btn'
|
|
2058
|
-
}, [
|
|
2059
|
-
h('button', {
|
|
2060
|
-
class: 'vxe-date-picker--time-picker-confirm',
|
|
2061
|
-
type: 'button',
|
|
2062
|
-
onClick: dateConfirmEvent
|
|
2063
|
-
}, getI18n('vxe.button.confirm'))
|
|
2064
|
-
])
|
|
2065
|
-
]),
|
|
2066
|
-
h('div', {
|
|
2067
|
-
ref: refInputTimeBody,
|
|
2068
|
-
class: 'vxe-date-picker--time-picker-body'
|
|
2069
|
-
}, [
|
|
2070
|
-
h('ul', {
|
|
2071
|
-
class: 'vxe-date-picker--time-picker-hour-list'
|
|
2072
|
-
}, hourList.map((item, index) => {
|
|
2073
|
-
return h('li', {
|
|
2074
|
-
key: index,
|
|
2075
|
-
class: {
|
|
2076
|
-
'is--selected': datetimePanelValue && datetimePanelValue.getHours() === item.value
|
|
2077
|
-
},
|
|
2078
|
-
onClick: (evnt: MouseEvent) => dateHourEvent(evnt, item)
|
|
2079
|
-
}, item.label)
|
|
2080
|
-
})),
|
|
2081
|
-
hasTimeMinute
|
|
2082
|
-
? h('ul', {
|
|
2083
|
-
class: 'vxe-date-picker--time-picker-minute-list'
|
|
2084
|
-
}, minuteList.map((item, index) => {
|
|
2085
|
-
return h('li', {
|
|
2086
|
-
key: index,
|
|
2087
|
-
class: {
|
|
2088
|
-
'is--selected': datetimePanelValue && datetimePanelValue.getMinutes() === item.value
|
|
2089
|
-
},
|
|
2090
|
-
onClick: (evnt: MouseEvent) => dateMinuteEvent(evnt, item)
|
|
2091
|
-
}, item.label)
|
|
2092
|
-
}))
|
|
2093
|
-
: createCommentVNode(),
|
|
2094
|
-
hasTimeMinute && hasTimeSecond
|
|
2095
|
-
? h('ul', {
|
|
2096
|
-
class: 'vxe-date-picker--time-picker-second-list'
|
|
2097
|
-
}, secondList.map((item, index) => {
|
|
2098
|
-
return h('li', {
|
|
2099
|
-
key: index,
|
|
2100
|
-
class: {
|
|
2101
|
-
'is--selected': datetimePanelValue && datetimePanelValue.getSeconds() === item.value
|
|
2102
|
-
},
|
|
2103
|
-
onClick: (evnt: MouseEvent) => dateSecondEvent(evnt, item)
|
|
2104
|
-
}, item.label)
|
|
2105
|
-
}))
|
|
2106
|
-
: createCommentVNode()
|
|
2107
|
-
])
|
|
2108
|
-
]
|
|
2109
|
-
}
|
|
2110
|
-
|
|
2111
709
|
const renderShortcutBtn = (pos: 'top' | 'bottom' | 'left' | 'right' | 'header' | 'footer', isVertical?: boolean) => {
|
|
2112
710
|
const shortcutOpts = computeShortcutOpts.value
|
|
2113
|
-
const {
|
|
2114
|
-
|
|
711
|
+
const { position, align, mode } = shortcutOpts
|
|
712
|
+
const shortcutList = computeShortcutList.value
|
|
713
|
+
if (isEnableConf(shortcutOpts) && shortcutList.length && (position || 'left') === pos) {
|
|
2115
714
|
return h('div', {
|
|
2116
|
-
class: `vxe-date-picker--
|
|
715
|
+
class: `vxe-date-picker--layout-${pos}-wrapper`
|
|
2117
716
|
}, [
|
|
2118
717
|
h(VxeButtonGroupComponent, {
|
|
2119
|
-
options,
|
|
718
|
+
options: shortcutList,
|
|
2120
719
|
mode,
|
|
2121
720
|
align,
|
|
2122
721
|
vertical: isVertical,
|
|
@@ -2127,49 +726,25 @@ export default defineComponent({
|
|
|
2127
726
|
return renderEmptyElement($xeDatePicker)
|
|
2128
727
|
}
|
|
2129
728
|
|
|
2130
|
-
const renderPickerPanel = () => {
|
|
2131
|
-
const { type } = props
|
|
2132
|
-
if (type === 'datetime') {
|
|
2133
|
-
return h('div', {
|
|
2134
|
-
key: type,
|
|
2135
|
-
ref: refPanelWrapper,
|
|
2136
|
-
class: 'vxe-date-picker--panel-datetime-layout-wrapper'
|
|
2137
|
-
}, [
|
|
2138
|
-
h('div', {
|
|
2139
|
-
class: 'vxe-date-picker--panel-datetime-left-wrapper'
|
|
2140
|
-
}, renderDatePanel()),
|
|
2141
|
-
h('div', {
|
|
2142
|
-
class: 'vxe-date-picker--panel-datetime-right-wrapper'
|
|
2143
|
-
}, renderTimePanel())
|
|
2144
|
-
])
|
|
2145
|
-
} else if (type === 'time') {
|
|
2146
|
-
return h('div', {
|
|
2147
|
-
key: type,
|
|
2148
|
-
ref: refPanelWrapper,
|
|
2149
|
-
class: 'vxe-date-picker--panel-wrapper'
|
|
2150
|
-
}, renderTimePanel())
|
|
2151
|
-
}
|
|
2152
|
-
return h('div', {
|
|
2153
|
-
key: type || 'default',
|
|
2154
|
-
ref: refPanelWrapper,
|
|
2155
|
-
class: 'vxe-date-picker--panel-wrapper'
|
|
2156
|
-
}, renderDatePanel())
|
|
2157
|
-
}
|
|
2158
|
-
|
|
2159
729
|
const renderPanel = () => {
|
|
2160
|
-
const { type } = props
|
|
2161
|
-
const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle } = reactData
|
|
730
|
+
const { type, multiple, showClearButton, showConfirmButton } = props
|
|
731
|
+
const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, inputValue } = reactData
|
|
2162
732
|
const vSize = computeSize.value
|
|
2163
733
|
const btnTransfer = computeBtnTransfer.value
|
|
2164
734
|
const shortcutOpts = computeShortcutOpts.value
|
|
2165
|
-
const
|
|
735
|
+
const isClearable = computeIsClearable.value
|
|
736
|
+
const isDateTimeType = computeIsDateTimeType.value
|
|
737
|
+
const shortcutList = computeShortcutList.value
|
|
738
|
+
const { position } = shortcutOpts
|
|
2166
739
|
const headerSlot = slots.header
|
|
2167
740
|
const footerSlot = slots.footer
|
|
2168
741
|
const topSlot = slots.top
|
|
2169
742
|
const bottomSlot = slots.bottom
|
|
2170
743
|
const leftSlot = slots.left
|
|
2171
744
|
const rightSlot = slots.right
|
|
2172
|
-
const hasShortcutBtn =
|
|
745
|
+
const hasShortcutBtn = shortcutList.length > 0
|
|
746
|
+
const showConfirmBtn = (showConfirmButton === null ? (isDateTimeType || multiple) : showConfirmButton)
|
|
747
|
+
const showClearBtn = (showClearButton === null ? (isClearable && showConfirmBtn && type !== 'time') : showClearButton)
|
|
2173
748
|
return h(Teleport, {
|
|
2174
749
|
to: 'body',
|
|
2175
750
|
disabled: btnTransfer ? !initialized : true
|
|
@@ -2191,49 +766,95 @@ export default defineComponent({
|
|
|
2191
766
|
}, initialized && (visiblePanel || isAniVisible)
|
|
2192
767
|
? [
|
|
2193
768
|
h('div', {
|
|
2194
|
-
|
|
769
|
+
ref: refPanelWrapper,
|
|
770
|
+
class: ['vxe-date-picker--layout-all-wrapper', `type--${type}`, {
|
|
771
|
+
[`size--${vSize}`]: vSize
|
|
772
|
+
}]
|
|
2195
773
|
}, [
|
|
2196
774
|
topSlot
|
|
2197
775
|
? h('div', {
|
|
2198
|
-
class: 'vxe-date-picker--
|
|
776
|
+
class: 'vxe-date-picker--layout-top-wrapper'
|
|
2199
777
|
}, topSlot({}))
|
|
2200
778
|
: renderShortcutBtn('top'),
|
|
2201
779
|
h('div', {
|
|
2202
|
-
class: 'vxe-date-picker--
|
|
780
|
+
class: 'vxe-date-picker--layout-body-layout-wrapper'
|
|
2203
781
|
}, [
|
|
2204
782
|
leftSlot
|
|
2205
783
|
? h('div', {
|
|
2206
|
-
class: 'vxe-date-picker--
|
|
784
|
+
class: 'vxe-date-picker--layout-left-wrapper'
|
|
2207
785
|
}, leftSlot({}))
|
|
2208
786
|
: renderShortcutBtn('left', true),
|
|
2209
787
|
h('div', {
|
|
2210
|
-
class: 'vxe-date-picker--
|
|
788
|
+
class: 'vxe-date-picker--layout-body-content-wrapper'
|
|
2211
789
|
}, [
|
|
2212
790
|
headerSlot
|
|
2213
791
|
? h('div', {
|
|
2214
|
-
class: 'vxe-date-picker--
|
|
792
|
+
class: 'vxe-date-picker--layout-header-wrapper'
|
|
2215
793
|
}, headerSlot({}))
|
|
2216
794
|
: renderShortcutBtn('header'),
|
|
2217
795
|
h('div', {
|
|
2218
|
-
class: 'vxe-date-picker--
|
|
796
|
+
class: 'vxe-date-picker--layout-body-wrapper'
|
|
2219
797
|
}, [
|
|
2220
|
-
|
|
798
|
+
h(VxeDatePanelComponent, {
|
|
799
|
+
ref: refDatePanel,
|
|
800
|
+
modelValue: reactData.inputValue,
|
|
801
|
+
type: props.type,
|
|
802
|
+
className: props.className,
|
|
803
|
+
multiple: props.multiple,
|
|
804
|
+
limitCount: props.limitCount,
|
|
805
|
+
startDate: props.startDate,
|
|
806
|
+
endDate: props.endDate,
|
|
807
|
+
minDate: props.minDate,
|
|
808
|
+
maxDate: props.maxDate,
|
|
809
|
+
startDay: props.startDay,
|
|
810
|
+
labelFormat: props.labelFormat,
|
|
811
|
+
valueFormat: props.valueFormat,
|
|
812
|
+
festivalMethod: props.festivalMethod,
|
|
813
|
+
disabledMethod: props.disabledMethod,
|
|
814
|
+
selectDay: props.selectDay,
|
|
815
|
+
onChange: panelChangeEvent,
|
|
816
|
+
onDateToday: hidePanel
|
|
817
|
+
})
|
|
2221
818
|
]),
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
819
|
+
h('div', {
|
|
820
|
+
class: 'vxe-date-picker--layout-footer-wrapper'
|
|
821
|
+
}, [
|
|
822
|
+
h('div', {
|
|
823
|
+
class: 'vxe-date-picker--layout-footer-custom'
|
|
824
|
+
}, footerSlot ? footerSlot({}) : [renderShortcutBtn('footer')]),
|
|
825
|
+
showClearBtn || showConfirmBtn
|
|
826
|
+
? h('div', {
|
|
827
|
+
class: 'vxe-date-picker--layout-footer-btns'
|
|
828
|
+
}, [
|
|
829
|
+
showClearBtn
|
|
830
|
+
? h(VxeButtonComponent, {
|
|
831
|
+
size: 'mini',
|
|
832
|
+
disabled: inputValue === '' || XEUtils.eqNull(inputValue),
|
|
833
|
+
content: getI18n('vxe.button.clear'),
|
|
834
|
+
onClick: clearValueEvent
|
|
835
|
+
})
|
|
836
|
+
: renderEmptyElement($xeDatePicker),
|
|
837
|
+
showConfirmBtn
|
|
838
|
+
? h(VxeButtonComponent, {
|
|
839
|
+
size: 'mini',
|
|
840
|
+
status: 'primary',
|
|
841
|
+
content: getI18n('vxe.button.confirm'),
|
|
842
|
+
onClick: confirmEvent
|
|
843
|
+
})
|
|
844
|
+
: renderEmptyElement($xeDatePicker)
|
|
845
|
+
])
|
|
846
|
+
: renderEmptyElement($xeDatePicker)
|
|
847
|
+
])
|
|
2227
848
|
]),
|
|
2228
849
|
rightSlot
|
|
2229
850
|
? h('div', {
|
|
2230
|
-
class: 'vxe-date-picker--
|
|
851
|
+
class: 'vxe-date-picker--layout-right-wrapper'
|
|
2231
852
|
}, rightSlot({}))
|
|
2232
853
|
: renderShortcutBtn('right', true)
|
|
2233
854
|
]),
|
|
2234
855
|
bottomSlot
|
|
2235
856
|
? h('div', {
|
|
2236
|
-
class: 'vxe-date-picker--
|
|
857
|
+
class: 'vxe-date-picker--layout-bottom-wrapper'
|
|
2237
858
|
}, bottomSlot({}))
|
|
2238
859
|
: renderShortcutBtn('bottom')
|
|
2239
860
|
])
|
|
@@ -2283,7 +904,7 @@ export default defineComponent({
|
|
|
2283
904
|
class: getIcon().INPUT_CLEAR
|
|
2284
905
|
})
|
|
2285
906
|
])
|
|
2286
|
-
:
|
|
907
|
+
: renderEmptyElement($xeDatePicker),
|
|
2287
908
|
renderExtraSuffixIcon(),
|
|
2288
909
|
suffixSlot || suffixIcon
|
|
2289
910
|
? h('div', {
|
|
@@ -2296,7 +917,7 @@ export default defineComponent({
|
|
|
2296
917
|
class: suffixIcon
|
|
2297
918
|
})
|
|
2298
919
|
])
|
|
2299
|
-
:
|
|
920
|
+
: renderEmptyElement($xeDatePicker)
|
|
2300
921
|
])
|
|
2301
922
|
}
|
|
2302
923
|
|
|
@@ -2312,19 +933,19 @@ export default defineComponent({
|
|
|
2312
933
|
}
|
|
2313
934
|
|
|
2314
935
|
const renderVN = () => {
|
|
2315
|
-
const { className, type,
|
|
2316
|
-
const { inputValue, visiblePanel, isActivated } = reactData
|
|
936
|
+
const { className, type, name, autoComplete } = props
|
|
937
|
+
const { inputValue, inputLabel, visiblePanel, isActivated } = reactData
|
|
2317
938
|
const vSize = computeSize.value
|
|
2318
939
|
const isDisabled = computeIsDisabled.value
|
|
2319
940
|
const formReadonly = computeFormReadonly.value
|
|
941
|
+
const panelLabel = computePanelLabel.value
|
|
2320
942
|
if (formReadonly) {
|
|
2321
943
|
return h('div', {
|
|
2322
944
|
ref: refElem,
|
|
2323
945
|
class: ['vxe-date-picker--readonly', `type--${type}`, className]
|
|
2324
|
-
},
|
|
946
|
+
}, panelLabel)
|
|
2325
947
|
}
|
|
2326
948
|
const inputReadonly = computeInputReadonly.value
|
|
2327
|
-
const inputType = computeDatePickerType.value
|
|
2328
949
|
const inpPlaceholder = computeInpPlaceholder.value
|
|
2329
950
|
const isClearable = computeIsClearable.value
|
|
2330
951
|
const prefix = renderPrefixIcon()
|
|
@@ -2333,7 +954,6 @@ export default defineComponent({
|
|
|
2333
954
|
ref: refElem,
|
|
2334
955
|
class: ['vxe-date-picker', `type--${type}`, className, {
|
|
2335
956
|
[`size--${vSize}`]: vSize,
|
|
2336
|
-
[`is--${align}`]: align,
|
|
2337
957
|
'is--prefix': !!prefix,
|
|
2338
958
|
'is--suffix': !!suffix,
|
|
2339
959
|
'is--visible': visiblePanel,
|
|
@@ -2343,20 +963,20 @@ export default defineComponent({
|
|
|
2343
963
|
}],
|
|
2344
964
|
spellcheck: false
|
|
2345
965
|
}, [
|
|
2346
|
-
prefix ||
|
|
966
|
+
prefix || renderEmptyElement($xeDatePicker),
|
|
2347
967
|
h('div', {
|
|
2348
968
|
class: 'vxe-date-picker--wrapper'
|
|
2349
969
|
}, [
|
|
2350
970
|
h('input', {
|
|
2351
971
|
ref: refInputTarget,
|
|
2352
972
|
class: 'vxe-date-picker--inner',
|
|
2353
|
-
value:
|
|
973
|
+
value: inputLabel,
|
|
2354
974
|
name,
|
|
2355
|
-
type:
|
|
975
|
+
type: 'text',
|
|
2356
976
|
placeholder: inpPlaceholder,
|
|
2357
977
|
readonly: inputReadonly,
|
|
2358
978
|
disabled: isDisabled,
|
|
2359
|
-
autocomplete: autoComplete
|
|
979
|
+
autocomplete: autoComplete,
|
|
2360
980
|
onKeydown: keydownEvent,
|
|
2361
981
|
onKeyup: keyupEvent,
|
|
2362
982
|
onClick: clickEvent,
|
|
@@ -2366,54 +986,35 @@ export default defineComponent({
|
|
|
2366
986
|
onBlur: blurEvent
|
|
2367
987
|
})
|
|
2368
988
|
]),
|
|
2369
|
-
suffix ||
|
|
989
|
+
suffix || renderEmptyElement($xeDatePicker),
|
|
2370
990
|
// 下拉面板
|
|
2371
991
|
renderPanel()
|
|
2372
992
|
])
|
|
2373
993
|
}
|
|
2374
994
|
|
|
2375
|
-
watch(
|
|
2376
|
-
|
|
2377
|
-
changeValue()
|
|
2378
|
-
})
|
|
2379
|
-
|
|
2380
|
-
watch(() => props.type, () => {
|
|
2381
|
-
// 切换类型是重置内置变量
|
|
2382
|
-
Object.assign(reactData, {
|
|
2383
|
-
inputValue: '',
|
|
2384
|
-
datetimePanelValue: null,
|
|
2385
|
-
datePanelValue: null,
|
|
2386
|
-
datePanelLabel: '',
|
|
2387
|
-
datePanelType: 'day',
|
|
2388
|
-
selectMonth: null,
|
|
2389
|
-
currentDate: null
|
|
2390
|
-
})
|
|
2391
|
-
initValue()
|
|
995
|
+
watch(computePanelLabel, (val) => {
|
|
996
|
+
reactData.inputLabel = val
|
|
2392
997
|
})
|
|
2393
998
|
|
|
2394
|
-
watch(
|
|
2395
|
-
|
|
2396
|
-
if (isDatePickerType) {
|
|
2397
|
-
dateParseValue(reactData.datePanelValue)
|
|
2398
|
-
reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel
|
|
2399
|
-
}
|
|
999
|
+
watch(() => props.modelValue, () => {
|
|
1000
|
+
updateModelValue()
|
|
2400
1001
|
})
|
|
2401
1002
|
|
|
2402
1003
|
nextTick(() => {
|
|
2403
1004
|
globalEvents.on($xeDatePicker, 'mousewheel', handleGlobalMousewheelEvent)
|
|
2404
1005
|
globalEvents.on($xeDatePicker, 'mousedown', handleGlobalMousedownEvent)
|
|
2405
|
-
globalEvents.on($xeDatePicker, 'keydown', handleGlobalKeydownEvent)
|
|
2406
1006
|
globalEvents.on($xeDatePicker, 'blur', handleGlobalBlurEvent)
|
|
2407
1007
|
})
|
|
2408
1008
|
|
|
2409
1009
|
onUnmounted(() => {
|
|
2410
1010
|
globalEvents.off($xeDatePicker, 'mousewheel')
|
|
2411
1011
|
globalEvents.off($xeDatePicker, 'mousedown')
|
|
2412
|
-
globalEvents.off($xeDatePicker, 'keydown')
|
|
2413
1012
|
globalEvents.off($xeDatePicker, 'blur')
|
|
2414
1013
|
})
|
|
2415
1014
|
|
|
2416
|
-
|
|
1015
|
+
updateModelValue()
|
|
1016
|
+
|
|
1017
|
+
provide('$xeDatePicker', $xeDatePicker)
|
|
2417
1018
|
|
|
2418
1019
|
$xeDatePicker.renderVN = renderVN
|
|
2419
1020
|
|