@wangxinowo/vue-datepicker-next 1.0.3 → 1.0.5

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.
@@ -1,174 +1,180 @@
1
- import PropTypes from '../../../_util/vue-types';
2
- import BaseMixin from '../../../_util/BaseMixin';
3
- import { getOptionProps, getComponentFromProp, getListeners } from '../../../_util/props-util';
4
- import { cloneElement } from '../../../_util/vnode';
5
- import CalendarHeader from '../calendar/CalendarHeader';
6
- import DateTable from '../date/DateTable';
7
- import DateInput from '../date/DateInput';
8
- import { getTimeConfig } from '../util/index';
9
- function noop() {}
10
- const CalendarPart = {
11
- mixins: [BaseMixin],
12
- props: {
13
- prefixCls: PropTypes.string,
14
- value: PropTypes.any,
15
- hoverValue: PropTypes.any,
16
- selectedValue: PropTypes.any,
17
- direction: PropTypes.any,
18
- locale: PropTypes.any,
19
- showDateInput: PropTypes.bool,
20
- showTimePicker: PropTypes.bool,
21
- showWeekNumber: PropTypes.bool,
22
- format: PropTypes.any,
23
- placeholder: PropTypes.any,
24
- disabledDate: PropTypes.any,
25
- timePicker: PropTypes.any,
26
- disabledTime: PropTypes.any,
27
- disabledMonth: PropTypes.any,
28
- mode: PropTypes.any,
29
- // onInputSelect: PropTypes.func,
30
- timePickerDisabledTime: PropTypes.object,
31
- enableNext: PropTypes.any,
32
- enablePrev: PropTypes.any,
33
- clearIcon: PropTypes.any,
34
- dateRender: PropTypes.func,
35
- inputMode: PropTypes.string,
36
- inputReadOnly: PropTypes.bool,
37
- },
38
- render() {
39
- const { $props: props } = this;
40
- const {
41
- prefixCls,
42
- value,
43
- hoverValue,
44
- selectedValue,
45
- mode,
46
- direction,
47
- locale,
48
- format,
49
- placeholder,
50
- disabledDate,
51
- timePicker,
52
- disabledTime,
53
- timePickerDisabledTime,
54
- showTimePicker,
55
- enablePrev,
56
- enableNext,
57
- disabledMonth,
58
- showDateInput,
59
- dateRender,
60
- showWeekNumber,
61
- showClear,
62
- inputMode,
63
- inputReadOnly,
64
- } = props;
65
- const clearIcon = getComponentFromProp(this, 'clearIcon');
66
- const {
67
- inputChange = noop,
68
- inputSelect = noop,
69
- valueChange = noop,
70
- panelChange = noop,
71
- select = noop,
72
- dayHover = noop,
73
- } = getListeners(this);
74
- const shouldShowTimePicker = showTimePicker && timePicker;
75
- const disabledTimeConfig =
76
- shouldShowTimePicker && disabledTime ? getTimeConfig(selectedValue, disabledTime) : null;
77
- const rangeClassName = `${prefixCls}-range`;
78
- const newProps = {
79
- locale,
80
- value,
81
- prefixCls,
82
- showTimePicker,
83
- };
84
- const index = direction === 'left' ? 0 : 1;
85
- let timePickerEle = null;
86
- if (shouldShowTimePicker) {
87
- const timePickerProps = getOptionProps(timePicker);
88
- timePickerEle = cloneElement(timePicker, {
89
- props: {
90
- showHour: true,
91
- showMinute: true,
92
- showSecond: true,
93
- ...timePickerProps,
94
- ...disabledTimeConfig,
95
- ...timePickerDisabledTime,
96
- defaultOpenValue: value,
97
- value: selectedValue[index],
98
- },
99
- on: {
100
- change: inputChange,
101
- },
102
- });
103
- }
104
-
105
- const dateInputElement = showDateInput && (
106
- <DateInput
107
- format={format}
108
- locale={locale}
109
- prefixCls={prefixCls}
110
- timePicker={timePicker}
111
- disabledDate={disabledDate}
112
- placeholder={placeholder}
113
- disabledTime={disabledTime}
114
- value={value}
115
- showClear={showClear || false}
116
- selectedValue={selectedValue[index]}
117
- onChange={inputChange}
118
- onSelect={inputSelect}
119
- clearIcon={clearIcon}
120
- inputMode={inputMode}
121
- inputReadOnly={inputReadOnly}
122
- />
123
- );
124
- const headerProps = {
125
- props: {
126
- ...newProps,
127
- mode,
128
- enableNext,
129
- enablePrev,
130
- disabledMonth,
131
- // 传递完整的 selectedValue 数组,让 YearPanel/MonthPanel 支持范围选中效果
132
- selectedValue: selectedValue,
133
- // 保留 direction 信息,用于判断是左面板还是右面板
134
- direction,
135
- },
136
- on: {
137
- valueChange,
138
- panelChange,
139
- },
140
- };
141
- const tableProps = {
142
- props: {
143
- ...newProps,
144
- hoverValue,
145
- selectedValue,
146
- dateRender,
147
- disabledDate,
148
- showWeekNumber,
149
- },
150
- on: {
151
- select,
152
- dayHover,
153
- },
154
- };
155
- return (
156
- <div class={`${rangeClassName}-part ${rangeClassName}-${direction}`}>
157
- {dateInputElement}
158
- <div style={{ outline: 'none' }}>
159
- <CalendarHeader {...headerProps} />
160
- {showTimePicker ? (
161
- <div class={`${prefixCls}-time-picker`}>
162
- <div class={`${prefixCls}-time-picker-panel`}>{timePickerEle}</div>
163
- </div>
164
- ) : null}
165
- <div class={`${prefixCls}-body`}>
166
- <DateTable {...tableProps} />
167
- </div>
168
- </div>
169
- </div>
170
- );
171
- },
172
- };
173
-
174
- export default CalendarPart;
1
+ import PropTypes from '../../../_util/vue-types';
2
+ import BaseMixin from '../../../_util/BaseMixin';
3
+ import { getOptionProps, getComponentFromProp, getListeners } from '../../../_util/props-util';
4
+ import { cloneElement } from '../../../_util/vnode';
5
+ import CalendarHeader from '../calendar/CalendarHeader';
6
+ import DateTable from '../date/DateTable';
7
+ import DateInput from '../date/DateInput';
8
+ import { getTimeConfig } from '../util/index';
9
+ function noop() {}
10
+ const CalendarPart = {
11
+ mixins: [BaseMixin],
12
+ props: {
13
+ prefixCls: PropTypes.string,
14
+ value: PropTypes.any,
15
+ hoverValue: PropTypes.any,
16
+ selectedValue: PropTypes.any,
17
+ direction: PropTypes.any,
18
+ locale: PropTypes.any,
19
+ showDateInput: PropTypes.bool,
20
+ showTimePicker: PropTypes.bool,
21
+ showWeekNumber: PropTypes.bool,
22
+ format: PropTypes.any,
23
+ placeholder: PropTypes.any,
24
+ disabledDate: PropTypes.any,
25
+ timePicker: PropTypes.any,
26
+ disabledTime: PropTypes.any,
27
+ disabledMonth: PropTypes.any,
28
+ mode: PropTypes.any,
29
+ // onInputSelect: PropTypes.func,
30
+ timePickerDisabledTime: PropTypes.object,
31
+ enableNext: PropTypes.any,
32
+ enablePrev: PropTypes.any,
33
+ clearIcon: PropTypes.any,
34
+ dateRender: PropTypes.func,
35
+ inputMode: PropTypes.string,
36
+ inputReadOnly: PropTypes.bool,
37
+ },
38
+ render() {
39
+ const { $props: props } = this;
40
+ const {
41
+ prefixCls,
42
+ value,
43
+ hoverValue,
44
+ selectedValue,
45
+ mode,
46
+ direction,
47
+ locale,
48
+ format,
49
+ placeholder,
50
+ disabledDate,
51
+ timePicker,
52
+ disabledTime,
53
+ timePickerDisabledTime,
54
+ showTimePicker,
55
+ enablePrev,
56
+ enableNext,
57
+ disabledMonth,
58
+ showDateInput,
59
+ dateRender,
60
+ showWeekNumber,
61
+ showClear,
62
+ inputMode,
63
+ inputReadOnly,
64
+ } = props;
65
+ const clearIcon = getComponentFromProp(this, 'clearIcon');
66
+ const {
67
+ inputChange = noop,
68
+ inputSelect = noop,
69
+ valueChange = noop,
70
+ panelChange = noop,
71
+ select = noop,
72
+ dayHover = noop,
73
+ yearHover = noop,
74
+ monthHover = noop,
75
+ } = getListeners(this);
76
+ const shouldShowTimePicker = showTimePicker && timePicker;
77
+ const disabledTimeConfig =
78
+ shouldShowTimePicker && disabledTime ? getTimeConfig(selectedValue, disabledTime) : null;
79
+ const rangeClassName = `${prefixCls}-range`;
80
+ const newProps = {
81
+ locale,
82
+ value,
83
+ prefixCls,
84
+ showTimePicker,
85
+ };
86
+ const index = direction === 'left' ? 0 : 1;
87
+ let timePickerEle = null;
88
+ if (shouldShowTimePicker) {
89
+ const timePickerProps = getOptionProps(timePicker);
90
+ timePickerEle = cloneElement(timePicker, {
91
+ props: {
92
+ showHour: true,
93
+ showMinute: true,
94
+ showSecond: true,
95
+ ...timePickerProps,
96
+ ...disabledTimeConfig,
97
+ ...timePickerDisabledTime,
98
+ defaultOpenValue: value,
99
+ value: selectedValue[index],
100
+ },
101
+ on: {
102
+ change: inputChange,
103
+ },
104
+ });
105
+ }
106
+
107
+ const dateInputElement = showDateInput && (
108
+ <DateInput
109
+ format={format}
110
+ locale={locale}
111
+ prefixCls={prefixCls}
112
+ timePicker={timePicker}
113
+ disabledDate={disabledDate}
114
+ placeholder={placeholder}
115
+ disabledTime={disabledTime}
116
+ value={value}
117
+ showClear={showClear || false}
118
+ selectedValue={selectedValue[index]}
119
+ onChange={inputChange}
120
+ onSelect={inputSelect}
121
+ clearIcon={clearIcon}
122
+ inputMode={inputMode}
123
+ inputReadOnly={inputReadOnly}
124
+ />
125
+ );
126
+ const headerProps = {
127
+ props: {
128
+ ...newProps,
129
+ mode,
130
+ enableNext,
131
+ enablePrev,
132
+ disabledMonth,
133
+ // 传递完整的 selectedValue 数组,让 YearPanel/MonthPanel 支持范围选中效果
134
+ selectedValue: selectedValue,
135
+ // 传递 hoverValue,用于范围预览
136
+ hoverValue: hoverValue,
137
+ // 保留 direction 信息,用于判断是左面板还是右面板
138
+ direction,
139
+ },
140
+ on: {
141
+ valueChange,
142
+ panelChange,
143
+ yearHover,
144
+ monthHover,
145
+ },
146
+ };
147
+ const tableProps = {
148
+ props: {
149
+ ...newProps,
150
+ hoverValue,
151
+ selectedValue,
152
+ dateRender,
153
+ disabledDate,
154
+ showWeekNumber,
155
+ },
156
+ on: {
157
+ select,
158
+ dayHover,
159
+ },
160
+ };
161
+ return (
162
+ <div class={`${rangeClassName}-part ${rangeClassName}-${direction}`}>
163
+ {dateInputElement}
164
+ <div style={{ outline: 'none' }}>
165
+ <CalendarHeader {...headerProps} />
166
+ {showTimePicker ? (
167
+ <div class={`${prefixCls}-time-picker`}>
168
+ <div class={`${prefixCls}-time-picker-panel`}>{timePickerEle}</div>
169
+ </div>
170
+ ) : null}
171
+ <div class={`${prefixCls}-body`}>
172
+ <DateTable {...tableProps} />
173
+ </div>
174
+ </div>
175
+ </div>
176
+ );
177
+ },
178
+ };
179
+
180
+ export default CalendarPart;