17e1fcf1
梁灏
init DatePicker
|
1
|
<template>
|
ecaf8d51
梁灏
Date add transfer...
|
2
|
<div :class="[prefixCls]" v-clickoutside="handleClose">
|
531cd165
梁灏
support DatePicke...
|
3
|
<div ref="reference" :class="[prefixCls + '-rel']">
|
e9dd4dab
梁灏
publish 0.9.11-rc-1
|
4
5
|
<slot>
<i-input
|
4863a75d
Sergio Crisostomo
Correct logic whe...
|
6
|
:key="forceInputRerender"
|
acb79ba3
梁灏
fixed #433
|
7
|
:element-id="elementId"
|
e9dd4dab
梁灏
publish 0.9.11-rc-1
|
8
9
10
11
12
13
|
:class="[prefixCls + '-editor']"
:readonly="!editable || readonly"
:disabled="disabled"
:size="size"
:placeholder="placeholder"
:value="visualValue"
|
0460a1e8
梁灏
fixed #812
|
14
|
:name="name"
|
531cd165
梁灏
support DatePicke...
|
15
|
@on-input-change="handleInputChange"
|
e9dd4dab
梁灏
publish 0.9.11-rc-1
|
16
|
@on-focus="handleFocus"
|
030a522d
Sergio Crisostomo
make picker close...
|
17
|
@on-blur="handleBlur"
|
e9dd4dab
梁灏
publish 0.9.11-rc-1
|
18
|
@on-click="handleIconClick"
|
531cd165
梁灏
support DatePicke...
|
19
20
|
@mouseenter.native="handleInputMouseenter"
@mouseleave.native="handleInputMouseleave"
|
e55ba7a2
Sergio Crisostomo
Add week numbers
|
21
22
23
|
:icon="iconType"
></i-input>
|
e9dd4dab
梁灏
publish 0.9.11-rc-1
|
24
25
|
</slot>
</div>
|
e09b07b7
huanghong
解决drop弹出动画异常
|
26
|
<transition name="transition-drop">
|
ecaf8d51
梁灏
Date add transfer...
|
27
28
29
30
31
32
33
34
|
<Drop
@click.native="handleTransferClick"
v-show="opened"
:class="{ [prefixCls + '-transfer']: transfer }"
:placement="placement"
ref="drop"
:data-transfer="transfer"
v-transfer-dom>
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
35
36
37
|
<div>
<component
:is="panel"
|
46726afd
Sergio Crisostomo
Fix panels reset ...
|
38
|
ref="pickerPanel"
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
39
40
41
42
43
44
45
|
:visible="visible"
:showTime="type === 'datetime' || type === 'datetimerange'"
:confirm="isConfirm"
:selectionMode="selectionMode"
:steps="steps"
:format="format"
:value="internalValue"
|
63bd0f7d
Sergio Crisostomo
Add start-date pr...
|
46
|
:start-date="startDate"
|
435bf781
Sergio Crisostomo
add split panel p...
|
47
|
:split-panels="splitPanels"
|
e55ba7a2
Sergio Crisostomo
Add week numbers
|
48
|
:show-week-numbers="showWeekNumbers"
|
b52e02e4
Sergio Crisostomo
Fix month|year pr...
|
49
|
:picker-type="type"
|
02859de9
Sergio Crisostomo
Use the last pic...
|
50
|
:multiple="multiple"
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
51
|
|
79ac2457
Sergio Crisostomo
Allow DatePicker ...
|
52
53
|
:time-picker-options="timePickerOptions"
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
54
55
56
57
58
59
60
61
62
|
v-bind="ownPickerProps"
@on-pick="onPick"
@on-pick-clear="handleClear"
@on-pick-success="onPickSuccess"
@on-pick-click="disableClickOutSide = true"
@on-selection-mode-change="onSelectionModeChange"
></component>
</div>
|
531cd165
梁灏
support DatePicke...
|
63
64
|
</Drop>
</transition>
|
0f677893
梁灏
update DatePicker
|
65
|
</div>
|
17e1fcf1
梁灏
init DatePicker
|
66
67
|
</template>
<script>
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
68
69
|
|
0f677893
梁灏
update DatePicker
|
70
71
72
|
import iInput from '../../components/input/input.vue';
import Drop from '../../components/select/dropdown.vue';
import clickoutside from '../../directives/clickoutside';
|
ecaf8d51
梁灏
Date add transfer...
|
73
|
import TransferDom from '../../directives/transfer-dom';
|
0f677893
梁灏
update DatePicker
|
74
|
import { oneOf } from '../../utils/assist';
|
524dc2a5
Sergio Crisostomo
Fix date parsing
|
75
|
import { DEFAULT_FORMATS, RANGE_SEPARATOR, TYPE_VALUE_RESOLVER_MAP } from './util';
|
cd78c9c4
梁灏
some comps suppor...
|
76
|
import Emitter from '../../mixins/emitter';
|
0f677893
梁灏
update DatePicker
|
77
78
79
|
const prefixCls = 'ivu-date-picker';
|
34867ff9
Sergio Crisostomo
normalise empty i...
|
80
81
|
const isEmptyArray = val => val.reduce((isEmpty, str) => isEmpty && !str || (typeof str === 'string' && str.trim() === ''), true);
|
17e1fcf1
梁灏
init DatePicker
|
82
|
export default {
|
21dad188
梁灏
prevent dispatch ...
|
83
|
name: 'CalendarPicker',
|
cd78c9c4
梁灏
some comps suppor...
|
84
|
mixins: [ Emitter ],
|
0f677893
梁灏
update DatePicker
|
85
|
components: { iInput, Drop },
|
ecaf8d51
梁灏
Date add transfer...
|
86
|
directives: { clickoutside, TransferDom },
|
0f677893
梁灏
update DatePicker
|
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
props: {
format: {
type: String
},
readonly: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
editable: {
type: Boolean,
default: true
},
|
fe44201b
梁灏
DatePicker add cl...
|
103
104
105
106
|
clearable: {
type: Boolean,
default: true
},
|
b9041a0d
梁灏
DatePicker add co...
|
107
108
109
110
|
confirm: {
type: Boolean,
default: false
},
|
e9dd4dab
梁灏
publish 0.9.11-rc-1
|
111
112
113
114
|
open: {
type: Boolean,
default: null
},
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
115
116
117
118
|
multiple: {
type: Boolean,
default: false
},
|
79ac2457
Sergio Crisostomo
Allow DatePicker ...
|
119
120
121
122
|
timePickerOptions: {
default: () => ({}),
type: Object,
},
|
435bf781
Sergio Crisostomo
add split panel p...
|
123
124
125
126
|
splitPanels: {
type: Boolean,
default: false
},
|
e55ba7a2
Sergio Crisostomo
Add week numbers
|
127
128
129
130
|
showWeekNumbers: {
type: Boolean,
default: false
},
|
63bd0f7d
Sergio Crisostomo
Add start-date pr...
|
131
132
133
|
startDate: {
type: Date
},
|
0f677893
梁灏
update DatePicker
|
134
135
|
size: {
validator (value) {
|
f00a037c
梁灏
some Components's...
|
136
|
return oneOf(value, ['small', 'large', 'default']);
|
0f677893
梁灏
update DatePicker
|
137
138
139
140
141
142
|
}
},
placeholder: {
type: String,
default: ''
},
|
68e9b100
梁灏
update DatePicker
|
143
|
placement: {
|
0f677893
梁灏
update DatePicker
|
144
|
validator (value) {
|
68e9b100
梁灏
update DatePicker
|
145
|
return oneOf(value, ['top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end']);
|
0f677893
梁灏
update DatePicker
|
146
|
},
|
68e9b100
梁灏
update DatePicker
|
147
|
default: 'bottom-start'
|
0f677893
梁灏
update DatePicker
|
148
|
},
|
ecaf8d51
梁灏
Date add transfer...
|
149
150
151
|
transfer: {
type: Boolean,
default: false
|
0460a1e8
梁灏
fixed #812
|
152
153
154
|
},
name: {
type: String
|
acb79ba3
梁灏
fixed #433
|
155
156
157
|
},
elementId: {
type: String
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
158
159
160
161
162
163
|
},
steps: {
type: Array,
default: () => []
},
value: {
|
8878e4a3
Sergio Crisostomo
Remove validator ...
|
164
|
type: [Date, String, Array]
|
4863a75d
Sergio Crisostomo
Correct logic whe...
|
165
166
167
168
|
},
options: {
type: Object,
default: () => ({})
|
0f677893
梁灏
update DatePicker
|
169
170
|
}
},
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
171
|
data(){
|
34867ff9
Sergio Crisostomo
normalise empty i...
|
172
173
|
const isRange = this.type.includes('range');
const emptyArray = isRange ? [null, null] : [null];
|
4a1734b7
Sergio Crisostomo
fix time and time...
|
174
175
|
const initialValue = isEmptyArray((isRange ? this.value : [this.value]) || []) ? emptyArray : this.parseDate(this.value);
|
0f677893
梁灏
update DatePicker
|
176
177
178
|
return {
prefixCls: prefixCls,
showClose: false,
|
0f677893
梁灏
update DatePicker
|
179
|
visible: false,
|
34867ff9
Sergio Crisostomo
normalise empty i...
|
180
|
internalValue: initialValue,
|
531cd165
梁灏
support DatePicke...
|
181
|
disableClickOutSide: false, // fixed when click a date,trigger clickoutside to close picker
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
182
|
disableCloseUnderTransfer: false, // transfer 模式下,点击Drop也会触发关闭,
|
4863a75d
Sergio Crisostomo
Correct logic whe...
|
183
184
|
selectionMode: this.onSelectionModeChange(this.type),
forceInputRerender: 1
|
b0893113
jingsam
add eslint
|
185
|
};
|
0f677893
梁灏
update DatePicker
|
186
187
|
},
computed: {
|
b42322fe
Sergio Crisostomo
Pass Strings to @...
|
188
|
publicVModelValue(){
|
d07b4f33
Sergio Crisostomo
fix logic for mul...
|
189
|
if (this.multiple){
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
190
|
return this.internalValue.slice();
|
d07b4f33
Sergio Crisostomo
fix logic for mul...
|
191
192
|
} else {
const isRange = this.type.includes('range');
|
57f0582b
Sergio Crisostomo
Pass correct argu...
|
193
194
195
|
let val = this.internalValue.map(date => date instanceof Date ? new Date(date) : (date || ''));
if (this.type.match(/^time/)) val = val.map(this.formatDate);
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
196
|
return (isRange || this.multiple) ? val : val[0];
|
d07b4f33
Sergio Crisostomo
fix logic for mul...
|
197
|
}
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
198
|
},
|
b42322fe
Sergio Crisostomo
Pass Strings to @...
|
199
200
201
|
publicStringValue(){
const {formatDate, publicVModelValue, type} = this;
if (type.match(/^time/)) return publicVModelValue;
|
2332ac9b
Sergio Crisostomo
Fix error in form...
|
202
|
if (this.multiple) return formatDate(publicVModelValue);
|
b42322fe
Sergio Crisostomo
Pass Strings to @...
|
203
204
|
return Array.isArray(publicVModelValue) ? publicVModelValue.map(formatDate) : formatDate(publicVModelValue);
},
|
e9dd4dab
梁灏
publish 0.9.11-rc-1
|
205
206
207
|
opened () {
return this.open === null ? this.visible : this.open;
},
|
0f677893
梁灏
update DatePicker
|
208
|
iconType () {
|
9d844d53
梁灏
fixed Layout bug
|
209
|
let icon = 'ios-calendar-outline';
|
456877a1
梁灏
update TimePicker
|
210
|
if (this.type === 'time' || this.type === 'timerange') icon = 'ios-clock-outline';
|
9d844d53
梁灏
fixed Layout bug
|
211
212
|
if (this.showClose) icon = 'ios-close';
return icon;
|
0f677893
梁灏
update DatePicker
|
213
|
},
|
d20fe0ee
梁灏
update DatePicker
|
214
|
transition () {
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
215
216
|
const bottomPlaced = this.placement.match(/^bottom/);
return bottomPlaced ? 'slide-up' : 'slide-down';
|
d20fe0ee
梁灏
update DatePicker
|
217
|
},
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
218
|
visualValue() {
|
2fb29fae
Sergio Crisostomo
export utilities ...
|
219
|
return this.formatDate(this.internalValue);
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
220
221
|
},
isConfirm(){
|
d07b4f33
Sergio Crisostomo
fix logic for mul...
|
222
|
return this.confirm || this.type === 'datetime' || this.type === 'datetimerange' || this.multiple;
|
0f677893
梁灏
update DatePicker
|
223
224
225
|
}
},
methods: {
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
226
|
onSelectionModeChange(type){
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
227
|
if (type.match(/^date/)) type = 'date';
|
46726afd
Sergio Crisostomo
Fix panels reset ...
|
228
229
|
this.selectionMode = oneOf(type, ['year', 'month', 'date', 'time']) && type;
return this.selectionMode;
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
230
|
},
|
ecaf8d51
梁灏
Date add transfer...
|
231
232
233
234
|
// 开启 transfer 时,点击 Drop 即会关闭,这里不让其关闭
handleTransferClick () {
if (this.transfer) this.disableCloseUnderTransfer = true;
},
|
0f677893
梁灏
update DatePicker
|
235
|
handleClose () {
|
ecaf8d51
梁灏
Date add transfer...
|
236
237
238
239
|
if (this.disableCloseUnderTransfer) {
this.disableCloseUnderTransfer = false;
return false;
}
|
1b7aefea
梁灏
update Picker
|
240
|
if (this.open !== null) return;
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
241
|
|
762c8ddf
梁灏
update DatePicker
|
242
|
this.visible = false;
|
68e9b100
梁灏
update DatePicker
|
243
|
this.disableClickOutSide = false;
|
0f677893
梁灏
update DatePicker
|
244
245
|
},
handleFocus () {
|
e1874103
梁灏
update DatePicker
|
246
|
if (this.readonly) return;
|
0f677893
梁灏
update DatePicker
|
247
|
this.visible = true;
|
6017ed75
Sergio Crisostomo
update scroll whe...
|
248
|
this.$refs.pickerPanel.onToggleVisibility(true);
|
0f677893
梁灏
update DatePicker
|
249
|
},
|
030a522d
Sergio Crisostomo
make picker close...
|
250
251
|
handleBlur () {
this.visible = false;
|
46726afd
Sergio Crisostomo
Fix panels reset ...
|
252
|
this.onSelectionModeChange(this.type);
|
c2b7fed0
Sergio Crisostomo
Reset panel selec...
|
253
|
this.internalValue = this.internalValue.slice(); // trigger panel watchers to reset views
|
46726afd
Sergio Crisostomo
Fix panels reset ...
|
254
|
this.reset();
|
6017ed75
Sergio Crisostomo
update scroll whe...
|
255
256
|
this.$refs.pickerPanel.onToggleVisibility(false);
|
46726afd
Sergio Crisostomo
Fix panels reset ...
|
257
258
259
|
},
reset(){
this.$refs.pickerPanel.reset && this.$refs.pickerPanel.reset();
|
030a522d
Sergio Crisostomo
make picker close...
|
260
|
},
|
e1874103
梁灏
update DatePicker
|
261
|
handleInputChange (event) {
|
4863a75d
Sergio Crisostomo
Correct logic whe...
|
262
|
const isArrayValue = this.type.includes('range') || this.multiple;
|
e1874103
梁灏
update DatePicker
|
263
|
const oldValue = this.visualValue;
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
264
|
const newValue = event.target.value;
|
4863a75d
Sergio Crisostomo
Correct logic whe...
|
265
266
267
268
269
270
|
const newDate = this.parseDate(newValue);
const disabledDateFn =
this.options &&
typeof this.options.disabledDate === 'function' &&
this.options.disabledDate;
const valueToTest = isArrayValue ? newDate : newDate[0];
|
d9ff845f
Sergio Crisostomo
Emit input event ...
|
271
|
const isDisabled = disabledDateFn && disabledDateFn(valueToTest);
|
72f225e9
Sergio Crisostomo
Fix date manual i...
|
272
|
const isValidDate = newDate.reduce((valid, date) => valid && date instanceof Date, true);
|
e1874103
梁灏
update DatePicker
|
273
|
|
72f225e9
Sergio Crisostomo
Fix date manual i...
|
274
|
if (newValue !== oldValue && !isDisabled && isValidDate) {
|
90ebd5a7
Sergio Crisostomo
Expose changed da...
|
275
|
this.emitChange(this.type);
|
4863a75d
Sergio Crisostomo
Correct logic whe...
|
276
277
278
|
this.internalValue = newDate;
} else {
this.forceInputRerender++;
|
7c5ccdab
梁灏
update DatePicker
|
279
|
}
|
c46f385a
梁灏
update DatePicker
|
280
281
|
},
handleInputMouseenter () {
|
0f677893
梁灏
update DatePicker
|
282
|
if (this.readonly || this.disabled) return;
|
fe44201b
梁灏
DatePicker add cl...
|
283
|
if (this.visualValue && this.clearable) {
|
0f677893
梁灏
update DatePicker
|
284
285
286
|
this.showClose = true;
}
},
|
c46f385a
梁灏
update DatePicker
|
287
|
handleInputMouseleave () {
|
0f677893
梁灏
update DatePicker
|
288
289
290
|
this.showClose = false;
},
handleIconClick () {
|
7b7178f1
梁灏
fixed #528
|
291
292
|
if (this.showClose) {
this.handleClear();
|
f1f0206c
Aresn
fixed Date bug
|
293
|
} else if (!this.disabled) {
|
7b7178f1
梁灏
fixed #528
|
294
295
|
this.handleFocus();
}
|
b9041a0d
梁灏
DatePicker add co...
|
296
297
|
},
handleClear () {
|
c46f385a
梁灏
update DatePicker
|
298
|
this.visible = false;
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
299
|
this.internalValue = this.internalValue.map(() => null);
|
d20fe0ee
梁灏
update DatePicker
|
300
|
this.$emit('on-clear');
|
cd78c9c4
梁灏
some comps suppor...
|
301
|
this.dispatch('FormItem', 'on-form-change', '');
|
90ebd5a7
Sergio Crisostomo
Expose changed da...
|
302
|
this.emitChange(this.type);
|
46726afd
Sergio Crisostomo
Fix panels reset ...
|
303
|
this.reset();
|
9d844d53
梁灏
fixed Layout bug
|
304
|
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
305
306
307
308
|
setTimeout(
() => this.onSelectionModeChange(this.type),
500 // delay to improve dropdown close visual effect
);
|
344131a7
梁灏
update DatePicker
|
309
|
},
|
90ebd5a7
Sergio Crisostomo
Expose changed da...
|
310
|
emitChange (type) {
|
fc0c4c78
梁灏
fixed #494
|
311
|
this.$nextTick(() => {
|
90ebd5a7
Sergio Crisostomo
Expose changed da...
|
312
|
this.$emit('on-change', this.publicStringValue, type);
|
b42322fe
Sergio Crisostomo
Pass Strings to @...
|
313
|
this.dispatch('FormItem', 'on-form-change', this.publicStringValue);
|
fc0c4c78
梁灏
fixed #494
|
314
|
});
|
21dad188
梁灏
prevent dispatch ...
|
315
|
},
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
316
|
parseDate(val) {
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
317
|
const isRange = this.type.includes('range');
|
456877a1
梁灏
update TimePicker
|
318
|
const type = this.type;
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
319
|
const parser = (
|
456877a1
梁灏
update TimePicker
|
320
|
TYPE_VALUE_RESOLVER_MAP[type] ||
|
699a9dc8
梁灏
update DatePicker
|
321
|
TYPE_VALUE_RESOLVER_MAP['default']
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
322
|
).parser;
|
2fb29fae
Sergio Crisostomo
export utilities ...
|
323
324
|
const format = this.format || DEFAULT_FORMATS[type];
const multipleParser = TYPE_VALUE_RESOLVER_MAP['multiple'].parser;
|
699a9dc8
梁灏
update DatePicker
|
325
|
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
326
|
if (val && type === 'time' && !(val instanceof Date)) {
|
2fb29fae
Sergio Crisostomo
export utilities ...
|
327
328
329
|
val = parser(val, format);
} else if (this.multiple && val) {
val = multipleParser(val, format);
|
4863a75d
Sergio Crisostomo
Correct logic whe...
|
330
|
} else if (isRange) {
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
331
332
333
|
if (!val){
val = [null, null];
} else {
|
283b90aa
Sergio Crisostomo
Fix daterange man...
|
334
335
|
if (typeof val === 'string') {
val = parser(val, format);
|
4a1734b7
Sergio Crisostomo
fix time and time...
|
336
|
} else if (type === 'timerange') {
|
94790b84
Sergio Crisostomo
Fix type passed w...
|
337
|
val = parser(val, format).map(v => v || '');
|
283b90aa
Sergio Crisostomo
Fix daterange man...
|
338
|
} else {
|
524dc2a5
Sergio Crisostomo
Fix date parsing
|
339
340
341
342
343
344
345
346
|
const [start, end] = val;
if (start instanceof Date && end instanceof Date){
val = val.map(date => new Date(date));
} else if (typeof start === 'string' && typeof end === 'string'){
val = parser(val.join(RANGE_SEPARATOR), format);
} else if (!start || !end){
val = [null, null];
}
|
283b90aa
Sergio Crisostomo
Fix daterange man...
|
347
|
}
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
348
|
}
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
349
|
} else if (typeof val === 'string' && type.indexOf('time') !== 0){
|
72f225e9
Sergio Crisostomo
Fix date manual i...
|
350
|
val = parser(val, format) || null;
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
351
|
}
|
2fb29fae
Sergio Crisostomo
export utilities ...
|
352
353
|
return (isRange || this.multiple) ? (val || []) : [val];
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
354
|
},
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
355
|
formatDate(value){
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
356
|
const format = DEFAULT_FORMATS[this.type];
|
2fb29fae
Sergio Crisostomo
export utilities ...
|
357
358
359
360
361
362
363
364
365
366
367
|
if (this.multiple) {
const formatter = TYPE_VALUE_RESOLVER_MAP.multiple.formatter;
return formatter(value, this.format || format);
} else {
const {formatter} = (
TYPE_VALUE_RESOLVER_MAP[this.type] ||
TYPE_VALUE_RESOLVER_MAP['default']
);
return formatter(value, this.format || format);
}
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
368
|
},
|
90ebd5a7
Sergio Crisostomo
Expose changed da...
|
369
|
onPick(dates, visible = false, type) {
|
d07b4f33
Sergio Crisostomo
fix logic for mul...
|
370
|
if (this.multiple){
|
88d24200
Sergio Crisostomo
Fix date toggle i...
|
371
372
|
const pickedTimeStamp = dates.getTime();
const indexOfPickedDate = this.internalValue.findIndex(date => date && date.getTime() === pickedTimeStamp);
|
d07b4f33
Sergio Crisostomo
fix logic for mul...
|
373
|
const allDates = [...this.internalValue, dates].filter(Boolean);
|
88d24200
Sergio Crisostomo
Fix date toggle i...
|
374
|
const timeStamps = allDates.map(date => date.getTime()).filter((ts, i, arr) => arr.indexOf(ts) === i && i !== indexOfPickedDate); // filter away duplicates
|
d07b4f33
Sergio Crisostomo
fix logic for mul...
|
375
|
this.internalValue = timeStamps.map(ts => new Date(ts));
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
376
377
|
} else {
this.internalValue = Array.isArray(dates) ? dates : [dates];
|
0fd13696
梁灏
fixed DatePicker ...
|
378
|
}
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
379
380
381
|
if (!this.isConfirm) this.onSelectionModeChange(this.type); // reset the selectionMode
if (!this.isConfirm) this.visible = visible;
|
90ebd5a7
Sergio Crisostomo
Expose changed da...
|
382
|
this.emitChange(type);
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
383
384
385
386
|
},
onPickSuccess(){
this.visible = false;
this.$emit('on-ok');
|
46726afd
Sergio Crisostomo
Fix panels reset ...
|
387
|
this.reset();
|
e55ba7a2
Sergio Crisostomo
Add week numbers
|
388
|
},
|
0f677893
梁灏
update DatePicker
|
389
390
|
},
watch: {
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
391
392
|
visible (state) {
if (state === false){
|
0f677893
梁灏
update DatePicker
|
393
|
this.$refs.drop.destroy();
|
030a522d
Sergio Crisostomo
make picker close...
|
394
395
|
const input = this.$el.querySelector('input');
if (input) input.blur();
|
c46f385a
梁灏
update DatePicker
|
396
|
}
|
65ce6ced
Sergio Crisostomo
keep `this.$refs....
|
397
|
this.$refs.drop.update();
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
398
|
this.$emit('on-open-change', state);
|
c46f385a
梁灏
update DatePicker
|
399
|
},
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
400
|
value(val) {
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
401
|
this.internalValue = this.parseDate(val);
|
0dd7b94a
梁灏
update TimePicker
|
402
|
|
d20fe0ee
梁灏
update DatePicker
|
403
404
|
},
open (val) {
|
95eae081
Sergio Crisostomo
refactor Datepicker
|
405
406
407
408
|
this.visible = val === true;
},
type(type){
this.onSelectionModeChange(type);
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
409
|
},
|
b42322fe
Sergio Crisostomo
Pass Strings to @...
|
410
|
publicVModelValue(now, before){
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
411
412
|
const newValue = JSON.stringify(now);
const oldValue = JSON.stringify(before);
|
d9ff845f
Sergio Crisostomo
Emit input event ...
|
413
414
|
const shouldEmitInput = newValue !== oldValue || typeof now !== typeof before;
if (shouldEmitInput) this.$emit('input', now); // to update v-model
|
8f6aeda4
Sergio Crisostomo
Fix parser and fo...
|
415
|
},
|
e9dd4dab
梁灏
publish 0.9.11-rc-1
|
416
|
},
|
531cd165
梁灏
support DatePicke...
|
417
|
mounted () {
|
d9ff845f
Sergio Crisostomo
Emit input event ...
|
418
|
const initialValue = this.value;
|
b42322fe
Sergio Crisostomo
Pass Strings to @...
|
419
|
const parsedValue = this.publicVModelValue;
|
d9ff845f
Sergio Crisostomo
Emit input event ...
|
420
|
if (typeof initialValue !== typeof parsedValue || JSON.stringify(initialValue) !== JSON.stringify(parsedValue)){
|
b42322fe
Sergio Crisostomo
Pass Strings to @...
|
421
|
this.$emit('input', this.publicVModelValue); // to update v-model
|
d9ff845f
Sergio Crisostomo
Emit input event ...
|
422
|
}
|
d20fe0ee
梁灏
update DatePicker
|
423
|
if (this.open !== null) this.visible = this.open;
|
0f677893
梁灏
update DatePicker
|
424
|
}
|
b0893113
jingsam
add eslint
|
425
426
|
};
</script>
|