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