vxe-pc-ui 4.15.2 → 4.15.4
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/dist/all.esm.js +866 -257
- package/es/backtop/src/backtop.js +2 -1
- package/es/button/src/button.js +3 -2
- package/es/calendar/src/calendar.js +2 -1
- package/es/cascader/src/cascader.js +72 -29
- package/es/checkbox/src/group.js +5 -1
- package/es/date-panel/src/util.js +27 -16
- package/es/date-picker/src/date-picker.js +572 -74
- package/es/date-range-picker/src/date-range-picker.js +3 -2
- package/es/drawer/src/drawer.js +2 -0
- package/es/form/render/index.js +3 -2
- package/es/form/src/form.js +6 -5
- package/es/form/src/itemInfo.js +6 -5
- package/es/input/src/input.js +2 -1
- package/es/menu/src/menu.js +2 -1
- package/es/modal/src/modal.js +5 -2
- package/es/pager/src/pager.js +4 -3
- package/es/radio/src/group.js +5 -1
- package/es/select/src/select.js +25 -20
- package/es/splitter/src/splitter.js +7 -6
- package/es/table-select/src/table-select.js +21 -16
- package/es/tabs/src/tabs.js +4 -3
- package/es/textarea/src/textarea.js +2 -1
- package/es/tree/src/tree.js +3 -2
- package/es/tree-select/src/tree-select.js +16 -19
- package/es/ui/index.js +4 -1
- package/es/ui/src/log.js +14 -4
- package/es/upload/src/upload.js +12 -3
- package/lib/backtop/src/backtop.js +5 -2
- package/lib/backtop/src/backtop.min.js +1 -1
- package/lib/button/src/button.js +4 -1
- package/lib/button/src/button.min.js +1 -1
- package/lib/calendar/src/calendar.js +4 -1
- package/lib/calendar/src/calendar.min.js +1 -1
- package/lib/cascader/src/cascader.js +80 -30
- package/lib/cascader/src/cascader.min.js +1 -1
- package/lib/checkbox/src/group.js +5 -1
- package/lib/checkbox/src/group.min.js +1 -1
- package/lib/date-panel/src/util.js +37 -19
- package/lib/date-panel/src/util.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +620 -77
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +4 -1
- package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
- package/lib/drawer/src/drawer.js +2 -0
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/form/render/index.js +4 -1
- package/lib/form/render/index.min.js +1 -1
- package/lib/form/src/form.js +8 -4
- package/lib/form/src/form.min.js +1 -1
- package/lib/form/src/itemInfo.js +7 -4
- package/lib/form/src/itemInfo.min.js +1 -1
- package/lib/index.umd.js +941 -215
- package/lib/index.umd.min.js +1 -1
- package/lib/input/src/input.js +6 -3
- package/lib/input/src/input.min.js +1 -1
- package/lib/menu/src/menu.js +4 -1
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +8 -2
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/pager/src/pager.js +6 -2
- package/lib/pager/src/pager.min.js +1 -1
- package/lib/radio/src/group.js +5 -1
- package/lib/radio/src/group.min.js +1 -1
- package/lib/select/src/select.js +27 -20
- package/lib/select/src/select.min.js +1 -1
- package/lib/splitter/src/splitter.js +12 -8
- package/lib/splitter/src/splitter.min.js +1 -1
- package/lib/table-select/src/table-select.js +22 -15
- package/lib/table-select/src/table-select.min.js +1 -1
- package/lib/tabs/src/tabs.js +7 -3
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/textarea/src/textarea.js +4 -1
- package/lib/textarea/src/textarea.min.js +1 -1
- package/lib/tree/src/tree.js +7 -4
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +14 -10
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +4 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +16 -3
- package/lib/ui/src/log.min.js +1 -1
- package/lib/upload/src/upload.js +20 -3
- package/lib/upload/src/upload.min.js +1 -1
- package/package.json +1 -1
- package/packages/backtop/src/backtop.ts +3 -1
- package/packages/button/src/button.ts +4 -2
- package/packages/calendar/src/calendar.ts +3 -1
- package/packages/cascader/src/cascader.ts +71 -29
- package/packages/checkbox/src/group.ts +6 -2
- package/packages/date-panel/src/util.ts +28 -16
- package/packages/date-picker/src/date-picker.ts +583 -75
- package/packages/date-range-picker/src/date-range-picker.ts +4 -2
- package/packages/drawer/src/drawer.ts +2 -0
- package/packages/form/render/index.ts +4 -2
- package/packages/form/src/form.ts +7 -5
- package/packages/form/src/itemInfo.ts +7 -5
- package/packages/input/src/input.ts +3 -1
- package/packages/menu/src/menu.ts +3 -1
- package/packages/modal/src/modal.ts +6 -2
- package/packages/pager/src/pager.ts +5 -3
- package/packages/radio/src/group.ts +6 -2
- package/packages/select/src/select.ts +29 -22
- package/packages/splitter/src/splitter.ts +8 -6
- package/packages/table-select/src/table-select.ts +24 -17
- package/packages/tabs/src/tabs.ts +5 -3
- package/packages/textarea/src/textarea.ts +3 -1
- package/packages/tree/src/tree.ts +4 -2
- package/packages/tree-select/src/tree-select.ts +17 -19
- package/packages/ui/index.ts +3 -0
- package/packages/ui/src/log.ts +16 -4
- package/packages/upload/src/upload.ts +14 -3
- package/types/components/cascader.d.ts +4 -0
- package/types/components/date-picker.d.ts +14 -6
- package/types/components/drawer.d.ts +2 -0
- package/types/components/modal.d.ts +2 -0
- package/types/components/upload.d.ts +28 -1
- /package/es/icon/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/es/icon/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
- /package/es/icon/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/es/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/es/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
- /package/es/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
- /package/lib/icon/style/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/lib/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/lib/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
- /package/lib/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
|
@@ -17,6 +17,36 @@ var _datePanel = _interopRequireDefault(require("../../date-panel/src/date-panel
|
|
|
17
17
|
var _button = _interopRequireDefault(require("../../button/src/button"));
|
|
18
18
|
var _buttonGroup = _interopRequireDefault(require("../../button/src/button-group"));
|
|
19
19
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
|
+
const {
|
|
21
|
+
warnLog,
|
|
22
|
+
errLog
|
|
23
|
+
} = (0, _log.createComponentLog)('date-picker');
|
|
24
|
+
const maskedTypes = ['year', 'month', 'date', 'datetime', 'time'];
|
|
25
|
+
const inputMaskedKeys = ['y', 'M', 'd', 'H', 'm', 'n', 's'];
|
|
26
|
+
const parseInputKayMaps = {};
|
|
27
|
+
inputMaskedKeys.forEach(key => {
|
|
28
|
+
parseInputKayMaps[key] = true;
|
|
29
|
+
});
|
|
30
|
+
function createReactData() {
|
|
31
|
+
return {
|
|
32
|
+
initialized: false,
|
|
33
|
+
panelIndex: 0,
|
|
34
|
+
visiblePanel: false,
|
|
35
|
+
isAniVisible: false,
|
|
36
|
+
panelStyle: {},
|
|
37
|
+
panelPlacement: '',
|
|
38
|
+
isActivated: false,
|
|
39
|
+
inputValue: '',
|
|
40
|
+
labelFlag: 0
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function createInternalData() {
|
|
44
|
+
return {
|
|
45
|
+
// hpTimeout: undefined,
|
|
46
|
+
inputLabel: '',
|
|
47
|
+
laseFocusMasked: 0
|
|
48
|
+
};
|
|
49
|
+
}
|
|
20
50
|
var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
21
51
|
name: 'VxeDatePicker',
|
|
22
52
|
props: {
|
|
@@ -79,7 +109,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
79
109
|
labelFormat: String,
|
|
80
110
|
valueFormat: String,
|
|
81
111
|
timeFormat: String,
|
|
82
|
-
inputFormat: String,
|
|
83
112
|
editable: {
|
|
84
113
|
type: Boolean,
|
|
85
114
|
default: true
|
|
@@ -109,7 +138,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
109
138
|
type: Boolean,
|
|
110
139
|
default: () => (0, _ui.getConfig)().datePicker.autoClose
|
|
111
140
|
},
|
|
112
|
-
|
|
141
|
+
maskedConfig: Object,
|
|
113
142
|
prefixIcon: String,
|
|
114
143
|
suffixIcon: String,
|
|
115
144
|
placement: String,
|
|
@@ -138,21 +167,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
138
167
|
const {
|
|
139
168
|
computeSize
|
|
140
169
|
} = (0, _ui.useSize)(props);
|
|
141
|
-
const reactData = (0, _vue.reactive)(
|
|
142
|
-
|
|
143
|
-
panelIndex: 0,
|
|
144
|
-
visiblePanel: false,
|
|
145
|
-
isAniVisible: false,
|
|
146
|
-
panelStyle: {},
|
|
147
|
-
panelPlacement: '',
|
|
148
|
-
isActivated: false,
|
|
149
|
-
inputValue: '',
|
|
150
|
-
inputLabel: ''
|
|
151
|
-
});
|
|
152
|
-
const internalData = {
|
|
153
|
-
// hpTimeout: undefined,
|
|
154
|
-
parseInputKayMaps: {}
|
|
155
|
-
};
|
|
170
|
+
const reactData = (0, _vue.reactive)(createReactData());
|
|
171
|
+
const internalData = createInternalData();
|
|
156
172
|
const refElem = (0, _vue.ref)();
|
|
157
173
|
const refInputTarget = (0, _vue.ref)();
|
|
158
174
|
const refInputPanel = (0, _vue.ref)();
|
|
@@ -226,6 +242,50 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
226
242
|
const computeIsClearable = (0, _vue.computed)(() => {
|
|
227
243
|
return props.clearable;
|
|
228
244
|
});
|
|
245
|
+
const computeIsDatePanelType = (0, _vue.computed)(() => {
|
|
246
|
+
const isDateTimeType = computeIsDateTimeType.value;
|
|
247
|
+
return isDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
|
|
248
|
+
});
|
|
249
|
+
const computeDateListValue = (0, _vue.computed)(() => {
|
|
250
|
+
const {
|
|
251
|
+
modelValue,
|
|
252
|
+
type,
|
|
253
|
+
multiple
|
|
254
|
+
} = props;
|
|
255
|
+
const isDatePanelType = computeIsDatePanelType.value;
|
|
256
|
+
const dateValueFormat = computeDateValueFormat.value;
|
|
257
|
+
if (multiple && modelValue && isDatePanelType) {
|
|
258
|
+
return _xeUtils.default.toValueString(modelValue).split(',').map(item => {
|
|
259
|
+
const date = (0, _util.parseDateValue)(item, type, {
|
|
260
|
+
valueFormat: dateValueFormat
|
|
261
|
+
});
|
|
262
|
+
if (_xeUtils.default.isValidDate(date)) {
|
|
263
|
+
return date;
|
|
264
|
+
}
|
|
265
|
+
return date;
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
return [];
|
|
269
|
+
});
|
|
270
|
+
const computeLimitMaxCount = (0, _vue.computed)(() => {
|
|
271
|
+
return props.multiple ? _xeUtils.default.toNumber(props.limitCount) : 0;
|
|
272
|
+
});
|
|
273
|
+
const computeDateMultipleValue = (0, _vue.computed)(() => {
|
|
274
|
+
const dateListValue = computeDateListValue.value;
|
|
275
|
+
const dateValueFormat = computeDateValueFormat.value;
|
|
276
|
+
return dateListValue.map(date => _xeUtils.default.toDateString(date, dateValueFormat));
|
|
277
|
+
});
|
|
278
|
+
const computeOverCount = (0, _vue.computed)(() => {
|
|
279
|
+
const {
|
|
280
|
+
multiple
|
|
281
|
+
} = props;
|
|
282
|
+
const limitMaxCount = computeLimitMaxCount.value;
|
|
283
|
+
const dateMultipleValue = computeDateMultipleValue.value;
|
|
284
|
+
if (multiple && limitMaxCount) {
|
|
285
|
+
return dateMultipleValue.length >= limitMaxCount;
|
|
286
|
+
}
|
|
287
|
+
return false;
|
|
288
|
+
});
|
|
229
289
|
const computeInputReadonly = (0, _vue.computed)(() => {
|
|
230
290
|
const {
|
|
231
291
|
type,
|
|
@@ -290,12 +350,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
290
350
|
} = props;
|
|
291
351
|
return (0, _util.handleValueFormat)(type, valueFormat);
|
|
292
352
|
});
|
|
293
|
-
const
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
inputFormat
|
|
297
|
-
} = props;
|
|
298
|
-
return (0, _util.handleInputFormat)(type, inputFormat);
|
|
353
|
+
const computeDateMaskedFormat = (0, _vue.computed)(() => {
|
|
354
|
+
const dateLabelFormat = computeDateLabelFormat.value;
|
|
355
|
+
return dateLabelFormat;
|
|
299
356
|
});
|
|
300
357
|
const computeFirstDayOfWeek = (0, _vue.computed)(() => {
|
|
301
358
|
const {
|
|
@@ -324,8 +381,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
324
381
|
return dateObj.label;
|
|
325
382
|
}).join(', ');
|
|
326
383
|
});
|
|
327
|
-
const
|
|
328
|
-
return Object.assign({}, (0, _ui.getConfig)().datePicker.
|
|
384
|
+
const computeMaskedOpts = (0, _vue.computed)(() => {
|
|
385
|
+
return Object.assign({}, (0, _ui.getConfig)().datePicker.maskedConfig, props.maskedConfig);
|
|
386
|
+
});
|
|
387
|
+
const computeMaskChar = (0, _vue.computed)(() => {
|
|
388
|
+
const maskedOpts = computeMaskedOpts.value;
|
|
389
|
+
const {
|
|
390
|
+
maskPlaceholder
|
|
391
|
+
} = maskedOpts;
|
|
392
|
+
return (maskPlaceholder ? ('' + maskPlaceholder)[0] : '') || '*';
|
|
329
393
|
});
|
|
330
394
|
const updateModelValue = () => {
|
|
331
395
|
const {
|
|
@@ -341,6 +405,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
341
405
|
}
|
|
342
406
|
reactData.inputValue = val;
|
|
343
407
|
};
|
|
408
|
+
const handleInputLabel = (text, isUpdate) => {
|
|
409
|
+
internalData.inputLabel = text;
|
|
410
|
+
if (isUpdate) {
|
|
411
|
+
reactData.labelFlag++;
|
|
412
|
+
}
|
|
413
|
+
};
|
|
344
414
|
const triggerEvent = evnt => {
|
|
345
415
|
const {
|
|
346
416
|
inputValue
|
|
@@ -402,7 +472,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
402
472
|
const inputEvent = evnt => {
|
|
403
473
|
const inputElem = evnt.target;
|
|
404
474
|
const value = inputElem.value;
|
|
405
|
-
|
|
475
|
+
handleInputLabel(value, true);
|
|
406
476
|
dispatchEvent('input', {
|
|
407
477
|
value
|
|
408
478
|
}, evnt);
|
|
@@ -413,19 +483,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
413
483
|
triggerEvent(evnt);
|
|
414
484
|
}
|
|
415
485
|
};
|
|
416
|
-
const focusEvent = evnt => {
|
|
417
|
-
const popupOpts = computePopupOpts.value;
|
|
418
|
-
const {
|
|
419
|
-
trigger
|
|
420
|
-
} = popupOpts;
|
|
421
|
-
reactData.isActivated = true;
|
|
422
|
-
if (!trigger || trigger === 'default') {
|
|
423
|
-
datePickerOpenEvent(evnt);
|
|
424
|
-
} else if (trigger === 'icon') {
|
|
425
|
-
hidePanel();
|
|
426
|
-
}
|
|
427
|
-
triggerEvent(evnt);
|
|
428
|
-
};
|
|
429
486
|
const clickPrefixEvent = evnt => {
|
|
430
487
|
const isDisabled = computeIsDisabled.value;
|
|
431
488
|
if (!isDisabled) {
|
|
@@ -446,6 +503,125 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
446
503
|
}, 350);
|
|
447
504
|
});
|
|
448
505
|
};
|
|
506
|
+
const dateChange = (date, isReload) => {
|
|
507
|
+
const {
|
|
508
|
+
modelValue,
|
|
509
|
+
multiple
|
|
510
|
+
} = props;
|
|
511
|
+
const isDateTimeType = computeIsDateTimeType.value;
|
|
512
|
+
const dateValueFormat = computeDateValueFormat.value;
|
|
513
|
+
const firstDayOfWeek = computeFirstDayOfWeek.value;
|
|
514
|
+
if (props.type === 'week') {
|
|
515
|
+
const sWeek = _xeUtils.default.toNumber(props.selectDay);
|
|
516
|
+
date = _xeUtils.default.getWhatWeek(date, 0, sWeek, firstDayOfWeek);
|
|
517
|
+
}
|
|
518
|
+
const inpVal = _xeUtils.default.toDateString(date, dateValueFormat, {
|
|
519
|
+
firstDay: firstDayOfWeek
|
|
520
|
+
});
|
|
521
|
+
if (multiple) {
|
|
522
|
+
const overCount = computeOverCount.value;
|
|
523
|
+
// 如果为多选
|
|
524
|
+
if (isDateTimeType) {
|
|
525
|
+
// 如果是datetime特殊类型
|
|
526
|
+
const dateListValue = isReload ? [] : [...computeDateListValue.value];
|
|
527
|
+
const datetimeRest = [];
|
|
528
|
+
const eqIndex = _xeUtils.default.findIndexOf(dateListValue, val => _xeUtils.default.isDateSame(date, val, 'yyyyMMdd'));
|
|
529
|
+
if (eqIndex === -1) {
|
|
530
|
+
if (overCount) {
|
|
531
|
+
// 如果超出最大多选数量
|
|
532
|
+
return;
|
|
533
|
+
}
|
|
534
|
+
dateListValue.push(date);
|
|
535
|
+
} else {
|
|
536
|
+
dateListValue.splice(eqIndex, 1);
|
|
537
|
+
}
|
|
538
|
+
dateListValue.forEach(item => {
|
|
539
|
+
if (item) {
|
|
540
|
+
datetimeRest.push(item);
|
|
541
|
+
}
|
|
542
|
+
});
|
|
543
|
+
handleChange(datetimeRest.map(date => _xeUtils.default.toDateString(date, dateValueFormat)).join(','), {
|
|
544
|
+
type: 'update'
|
|
545
|
+
});
|
|
546
|
+
} else {
|
|
547
|
+
const dateMultipleValue = isReload ? [] : computeDateMultipleValue.value;
|
|
548
|
+
// 如果是日期类型
|
|
549
|
+
if (dateMultipleValue.some(val => _xeUtils.default.isEqual(val, inpVal))) {
|
|
550
|
+
handleChange(dateMultipleValue.filter(val => !_xeUtils.default.isEqual(val, inpVal)).join(','), {
|
|
551
|
+
type: 'update'
|
|
552
|
+
});
|
|
553
|
+
} else {
|
|
554
|
+
if (overCount) {
|
|
555
|
+
// 如果超出最大多选数量
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
handleChange(dateMultipleValue.concat([inpVal]).join(','), {
|
|
559
|
+
type: 'update'
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
} else {
|
|
564
|
+
// 如果为单选
|
|
565
|
+
if (!_xeUtils.default.isEqual(modelValue, inpVal)) {
|
|
566
|
+
handleChange(inpVal, {
|
|
567
|
+
type: 'update'
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
};
|
|
572
|
+
const dateRevert = () => {
|
|
573
|
+
const panelLabel = computePanelLabel.value;
|
|
574
|
+
handleInputLabel(panelLabel, true);
|
|
575
|
+
};
|
|
576
|
+
const afterCheckValue = inpVal => {
|
|
577
|
+
const {
|
|
578
|
+
type
|
|
579
|
+
} = props;
|
|
580
|
+
const {
|
|
581
|
+
inputLabel
|
|
582
|
+
} = internalData;
|
|
583
|
+
const dateLabelFormat = computeDateLabelFormat.value;
|
|
584
|
+
if (!inpVal) {
|
|
585
|
+
handleChange('', {
|
|
586
|
+
type: 'check'
|
|
587
|
+
});
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
590
|
+
let inpDateVal = (0, _util.parseDateValue)(inpVal, type, {
|
|
591
|
+
valueFormat: dateLabelFormat
|
|
592
|
+
});
|
|
593
|
+
if (!_xeUtils.default.isValidDate(inpDateVal)) {
|
|
594
|
+
dateRevert();
|
|
595
|
+
return;
|
|
596
|
+
}
|
|
597
|
+
if (type === 'time') {
|
|
598
|
+
inpDateVal = _xeUtils.default.toDateString(inpDateVal, dateLabelFormat);
|
|
599
|
+
if (inputLabel !== inpDateVal) {
|
|
600
|
+
handleChange(inpDateVal, {
|
|
601
|
+
type: 'check'
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
handleInputLabel(inpDateVal, true);
|
|
605
|
+
return;
|
|
606
|
+
}
|
|
607
|
+
let isChange = false;
|
|
608
|
+
const firstDayOfWeek = computeFirstDayOfWeek.value;
|
|
609
|
+
if (type === 'datetime') {
|
|
610
|
+
const dateValue = reactData.inputValue;
|
|
611
|
+
if (inpVal !== _xeUtils.default.toDateString(dateValue, dateLabelFormat) || inpVal !== _xeUtils.default.toDateString(inpDateVal, dateLabelFormat)) {
|
|
612
|
+
isChange = true;
|
|
613
|
+
}
|
|
614
|
+
} else {
|
|
615
|
+
isChange = true;
|
|
616
|
+
}
|
|
617
|
+
const label = _xeUtils.default.toDateString(inpDateVal, dateLabelFormat, {
|
|
618
|
+
firstDay: firstDayOfWeek
|
|
619
|
+
});
|
|
620
|
+
handleInputLabel(label, true);
|
|
621
|
+
if (isChange) {
|
|
622
|
+
dateChange(inpDateVal);
|
|
623
|
+
}
|
|
624
|
+
};
|
|
449
625
|
const clearValueEvent = (evnt, value) => {
|
|
450
626
|
const isDatePickerType = computeIsDatePickerType.value;
|
|
451
627
|
if (isDatePickerType) {
|
|
@@ -467,17 +643,225 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
467
643
|
}, evnt);
|
|
468
644
|
}
|
|
469
645
|
};
|
|
470
|
-
const handleArrowInputDate = (evnt, isUpArrow) => {
|
|
646
|
+
const handleArrowInputDate = (evnt, isUpArrow, isDwArrow, isLtArrow, isRtArrow) => {
|
|
471
647
|
const {
|
|
648
|
+
type,
|
|
472
649
|
multiple
|
|
473
650
|
} = props;
|
|
474
651
|
if (multiple) {
|
|
475
652
|
return;
|
|
476
653
|
}
|
|
654
|
+
const targetElem = refInputTarget.value;
|
|
655
|
+
if (!targetElem) {
|
|
656
|
+
return;
|
|
657
|
+
}
|
|
658
|
+
const inpValue = targetElem.value;
|
|
659
|
+
if (!inpValue) {
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
const dateMaskedFormat = computeDateMaskedFormat.value;
|
|
663
|
+
const dateLabelFormat = computeDateLabelFormat.value;
|
|
664
|
+
const firstDayOfWeek = computeFirstDayOfWeek.value;
|
|
665
|
+
const maskChar = computeMaskChar.value;
|
|
666
|
+
const selectionStart = targetElem.selectionStart || 0;
|
|
667
|
+
let selectKey = dateMaskedFormat[selectionStart];
|
|
668
|
+
if (!parseInputKayMaps[selectKey]) {
|
|
669
|
+
selectKey = dateMaskedFormat[selectionStart - 1];
|
|
670
|
+
}
|
|
671
|
+
const skRest = dateMaskedFormat.match(new RegExp(selectKey + '+'));
|
|
672
|
+
if (!skRest) {
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
if (isUpArrow || isDwArrow) {
|
|
676
|
+
const chunkFormat = skRest[0] || '';
|
|
677
|
+
const chunkStartIndex = skRest.index || 0;
|
|
678
|
+
const chunkEndIndex = chunkStartIndex + chunkFormat.length;
|
|
679
|
+
const chunkValue = inpValue.slice(chunkStartIndex, chunkEndIndex);
|
|
680
|
+
if (parseInputKayMaps[selectKey]) {
|
|
681
|
+
const chunkNum = ((0, _util.isAllSameChar)(chunkValue, maskChar) ? (0, _util.getChunkDefaultNum)(selectKey) : _xeUtils.default.toNumber(chunkValue)) + (isUpArrow ? 1 : -1);
|
|
682
|
+
const restValue = inpValue.slice(0, chunkStartIndex) + _xeUtils.default.padStart(chunkNum, chunkFormat.length, '0') + inpValue.slice(chunkEndIndex);
|
|
683
|
+
evnt.preventDefault();
|
|
684
|
+
if (restValue.indexOf(maskChar) === -1) {
|
|
685
|
+
// 解析日期
|
|
686
|
+
const inpDateVal = (0, _util.parseDateValue)(restValue, type, {
|
|
687
|
+
valueFormat: dateLabelFormat
|
|
688
|
+
});
|
|
689
|
+
if (_xeUtils.default.isValidDate(inpDateVal)) {
|
|
690
|
+
const label = _xeUtils.default.toDateString(inpDateVal, dateLabelFormat, {
|
|
691
|
+
firstDay: firstDayOfWeek
|
|
692
|
+
});
|
|
693
|
+
targetElem.value = label;
|
|
694
|
+
handleInputLabel(label, false);
|
|
695
|
+
}
|
|
696
|
+
} else {
|
|
697
|
+
targetElem.value = restValue;
|
|
698
|
+
handleInputLabel(restValue, false);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
targetElem.setSelectionRange(chunkStartIndex, chunkEndIndex);
|
|
702
|
+
} else if (isLtArrow || isRtArrow) {
|
|
703
|
+
const currKeyIndex = inputMaskedKeys.indexOf(selectKey);
|
|
704
|
+
if (currKeyIndex > -1) {
|
|
705
|
+
const allMaskedKeys = _xeUtils.default.map(dateMaskedFormat.match(new RegExp(`(${inputMaskedKeys.join('|')})+`, 'g')) || [], fullKey => fullKey[0]);
|
|
706
|
+
const currIndex = _xeUtils.default.findIndexOf(allMaskedKeys, key => selectKey === key[0]);
|
|
707
|
+
const targetFormatKey = isLtArrow ? allMaskedKeys[currIndex - 1] || allMaskedKeys[0] : allMaskedKeys[currIndex + 1] || allMaskedKeys[allMaskedKeys.length - 1];
|
|
708
|
+
const targetKey = targetFormatKey ? targetFormatKey[0] : '';
|
|
709
|
+
const sktRest = dateMaskedFormat.match(new RegExp(targetKey + '+'));
|
|
710
|
+
if (sktRest) {
|
|
711
|
+
evnt.preventDefault();
|
|
712
|
+
const mtStartIndex = sktRest.index || 0;
|
|
713
|
+
const mtEndIndex = mtStartIndex + sktRest[0].length;
|
|
714
|
+
targetElem.setSelectionRange(mtStartIndex, mtEndIndex);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
internalData.isTriggerMasked = true;
|
|
719
|
+
};
|
|
720
|
+
const handleMaskedInputDate = evnt => {
|
|
477
721
|
const {
|
|
478
|
-
|
|
479
|
-
} =
|
|
480
|
-
if (
|
|
722
|
+
multiple
|
|
723
|
+
} = props;
|
|
724
|
+
if (multiple) {
|
|
725
|
+
return;
|
|
726
|
+
}
|
|
727
|
+
const targetElem = refInputTarget.value;
|
|
728
|
+
if (!targetElem) {
|
|
729
|
+
return;
|
|
730
|
+
}
|
|
731
|
+
const isControlKey = (0, _dom.hasControlKey)(evnt);
|
|
732
|
+
if (isControlKey) {
|
|
733
|
+
return;
|
|
734
|
+
}
|
|
735
|
+
evnt.preventDefault();
|
|
736
|
+
const eKey = evnt.key;
|
|
737
|
+
const isDeleleKey = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.DELETE);
|
|
738
|
+
const isBackspaceKey = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.BACKSPACE);
|
|
739
|
+
const isNumKey = eKey >= '0' && eKey <= '9';
|
|
740
|
+
const numKey = isNumKey ? evnt.key : '';
|
|
741
|
+
if (!(isDeleleKey || isBackspaceKey || isNumKey)) {
|
|
742
|
+
return;
|
|
743
|
+
}
|
|
744
|
+
const {
|
|
745
|
+
isTriggerMasked
|
|
746
|
+
} = internalData;
|
|
747
|
+
const dateMaskedFormat = computeDateMaskedFormat.value;
|
|
748
|
+
const maskChar = computeMaskChar.value;
|
|
749
|
+
let inpValue = targetElem.value || dateMaskedFormat;
|
|
750
|
+
const selectionStart = targetElem.selectionStart || 0;
|
|
751
|
+
const selectionEnd = targetElem.selectionEnd || 0;
|
|
752
|
+
let selectKey = dateMaskedFormat[selectionStart];
|
|
753
|
+
if (!parseInputKayMaps[selectKey]) {
|
|
754
|
+
selectKey = dateMaskedFormat[selectionStart - 1];
|
|
755
|
+
}
|
|
756
|
+
const skRest = dateMaskedFormat.match(new RegExp(selectKey + '+'));
|
|
757
|
+
if (!skRest) {
|
|
758
|
+
return;
|
|
759
|
+
}
|
|
760
|
+
const allMaskedKeys = _xeUtils.default.map(dateMaskedFormat.match(new RegExp(`(${inputMaskedKeys.join('|')})+`, 'g')) || [], fullKey => fullKey[0]);
|
|
761
|
+
const chunkFormat = skRest[0] || '';
|
|
762
|
+
const chunkStartIndex = skRest.index || 0;
|
|
763
|
+
const chunkEndIndex = chunkStartIndex + chunkFormat.length;
|
|
764
|
+
const currKeyIndex = allMaskedKeys.indexOf(selectKey);
|
|
765
|
+
// 全选 | 如果无效字符
|
|
766
|
+
const isAllSelected = !selectionStart && selectionEnd === inpValue.length;
|
|
767
|
+
const isNotMasked = inpValue && inpValue.length !== dateMaskedFormat.length;
|
|
768
|
+
if (isAllSelected || isNotMasked) {
|
|
769
|
+
inpValue = dateMaskedFormat;
|
|
770
|
+
}
|
|
771
|
+
let chunkValue = isDeleleKey ? '' : inpValue.slice(chunkStartIndex, chunkEndIndex);
|
|
772
|
+
const chunkNums = chunkValue.match(/\d/g) || [];
|
|
773
|
+
const chunkNumList = isTriggerMasked && !isBackspaceKey ? [] : chunkNums.slice(0);
|
|
774
|
+
if (isNumKey) {
|
|
775
|
+
chunkNumList.push(numKey);
|
|
776
|
+
} else if (isBackspaceKey) {
|
|
777
|
+
chunkNumList.pop();
|
|
778
|
+
}
|
|
779
|
+
chunkValue = chunkNumList.join('').padEnd(chunkFormat.length, maskChar);
|
|
780
|
+
let restValue = inpValue.slice(0, chunkStartIndex) + chunkValue + inpValue.slice(chunkEndIndex);
|
|
781
|
+
restValue = restValue.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar);
|
|
782
|
+
targetElem.value = restValue;
|
|
783
|
+
handleInputLabel(restValue, false);
|
|
784
|
+
// 如果是全选/删除
|
|
785
|
+
if (isAllSelected) {
|
|
786
|
+
if (isBackspaceKey || isDeleleKey) {
|
|
787
|
+
const firstMaskedKeys = allMaskedKeys[0];
|
|
788
|
+
const firstSkRest = dateMaskedFormat.match(new RegExp(`${firstMaskedKeys}+`));
|
|
789
|
+
if (firstSkRest) {
|
|
790
|
+
const firstChunkFormat = firstSkRest[0];
|
|
791
|
+
targetElem.setSelectionRange(0, firstChunkFormat.length);
|
|
792
|
+
internalData.isTriggerMasked = true;
|
|
793
|
+
return;
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
} else {
|
|
797
|
+
if (isBackspaceKey && !chunkNums.length) {
|
|
798
|
+
// 回退到上一个数字块
|
|
799
|
+
for (let i = currKeyIndex - 1; i >= 0; i--) {
|
|
800
|
+
const prveChunkKey = allMaskedKeys[i];
|
|
801
|
+
const prveSkRest = dateMaskedFormat.match(new RegExp(`${prveChunkKey}+`));
|
|
802
|
+
if (prveSkRest) {
|
|
803
|
+
const prveChunkFormat = prveSkRest[0];
|
|
804
|
+
const prveChunkStartIndex = prveSkRest.index || 0;
|
|
805
|
+
const prveChunkEndIndex = prveChunkStartIndex + prveChunkFormat.length;
|
|
806
|
+
let prveChunkValue = restValue.slice(prveChunkStartIndex, prveChunkEndIndex);
|
|
807
|
+
const prveChunkNums = prveChunkValue.match(/\d/g) || [];
|
|
808
|
+
if (prveChunkNums.length) {
|
|
809
|
+
prveChunkNums.pop();
|
|
810
|
+
prveChunkValue = prveChunkNums.join('').padEnd(prveChunkFormat.length, maskChar);
|
|
811
|
+
restValue = restValue.slice(0, prveChunkStartIndex) + prveChunkValue + restValue.slice(prveChunkEndIndex);
|
|
812
|
+
targetElem.value = restValue;
|
|
813
|
+
handleInputLabel(restValue, false);
|
|
814
|
+
targetElem.setSelectionRange(prveChunkStartIndex, prveChunkEndIndex);
|
|
815
|
+
return;
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
const firstMaskedKeys = allMaskedKeys[0];
|
|
820
|
+
const firstSkRest = dateMaskedFormat.match(new RegExp(`${firstMaskedKeys}+`));
|
|
821
|
+
if (firstSkRest) {
|
|
822
|
+
const firstChunkFormat = firstSkRest[0];
|
|
823
|
+
restValue = dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar);
|
|
824
|
+
targetElem.value = restValue;
|
|
825
|
+
handleInputLabel(restValue, false);
|
|
826
|
+
targetElem.setSelectionRange(0, firstChunkFormat.length);
|
|
827
|
+
internalData.isTriggerMasked = true;
|
|
828
|
+
return;
|
|
829
|
+
}
|
|
830
|
+
return;
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
let maskStartIndex = skRest.index || 0;
|
|
834
|
+
let maskEndIndex = maskStartIndex + skRest[0].length;
|
|
835
|
+
// 如果输入完成,跳转下一个
|
|
836
|
+
if (chunkNumList.length >= chunkValue.length) {
|
|
837
|
+
const nextKeys = allMaskedKeys.slice(currKeyIndex + 1);
|
|
838
|
+
if (currKeyIndex > -1) {
|
|
839
|
+
const nextRest = nextKeys.length ? dateMaskedFormat.match(new RegExp(`(${nextKeys.join('|')})+`)) : null;
|
|
840
|
+
// 如果当前数字块已输入,则跳转下一个数字块
|
|
841
|
+
if (nextRest) {
|
|
842
|
+
maskStartIndex = nextRest.index || 0;
|
|
843
|
+
maskEndIndex = maskStartIndex + nextRest[0].length;
|
|
844
|
+
targetElem.setSelectionRange(maskStartIndex, maskEndIndex);
|
|
845
|
+
} else {
|
|
846
|
+
targetElem.setSelectionRange(maskStartIndex, maskEndIndex);
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
internalData.isTriggerMasked = true;
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
targetElem.setSelectionRange(maskStartIndex, maskEndIndex);
|
|
853
|
+
internalData.isTriggerMasked = false;
|
|
854
|
+
};
|
|
855
|
+
const handleMaskedSelectedDate = (evnt, isFocus) => {
|
|
856
|
+
const {
|
|
857
|
+
type,
|
|
858
|
+
multiple,
|
|
859
|
+
modelValue
|
|
860
|
+
} = props;
|
|
861
|
+
if (multiple) {
|
|
862
|
+
return;
|
|
863
|
+
}
|
|
864
|
+
if (!maskedTypes.includes(type)) {
|
|
481
865
|
return;
|
|
482
866
|
}
|
|
483
867
|
const targetElem = refInputTarget.value;
|
|
@@ -485,17 +869,79 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
485
869
|
return;
|
|
486
870
|
}
|
|
487
871
|
const {
|
|
488
|
-
|
|
872
|
+
laseFocusMasked
|
|
489
873
|
} = internalData;
|
|
490
|
-
|
|
874
|
+
if (laseFocusMasked && Date.now() - laseFocusMasked < 100) {
|
|
875
|
+
return;
|
|
876
|
+
}
|
|
877
|
+
const dateMaskedFormat = computeDateMaskedFormat.value;
|
|
878
|
+
const maskChar = computeMaskChar.value;
|
|
491
879
|
const selectionStart = targetElem.selectionStart || 0;
|
|
492
|
-
|
|
880
|
+
const selectionEnd = targetElem.selectionEnd || 0;
|
|
881
|
+
const inpValue = targetElem.value;
|
|
882
|
+
const allMaskedKeys = _xeUtils.default.map(dateMaskedFormat.match(new RegExp(`(${inputMaskedKeys.join('|')})+`, 'g')) || [], fullKey => fullKey[0]);
|
|
883
|
+
// 如果为空
|
|
884
|
+
if (!inpValue) {
|
|
885
|
+
let restValue = dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar);
|
|
886
|
+
// 还原值
|
|
887
|
+
if (isFocus && modelValue) {
|
|
888
|
+
const chunkNums = ('' + _xeUtils.default.toNumber(modelValue)).match(/\d/g) || [];
|
|
889
|
+
let useNumIndex = 0;
|
|
890
|
+
restValue = dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), txt => chunkNums[useNumIndex++] || txt);
|
|
891
|
+
}
|
|
892
|
+
const firstMaskedKeys = allMaskedKeys[0];
|
|
893
|
+
const firstSkRest = dateMaskedFormat.match(new RegExp(`${firstMaskedKeys}+`));
|
|
894
|
+
if (firstSkRest) {
|
|
895
|
+
evnt.preventDefault();
|
|
896
|
+
const firstChunkFormat = firstSkRest[0];
|
|
897
|
+
targetElem.value = restValue;
|
|
898
|
+
handleInputLabel(restValue, false);
|
|
899
|
+
targetElem.setSelectionRange(0, firstChunkFormat.length);
|
|
900
|
+
internalData.laseFocusMasked = Date.now();
|
|
901
|
+
return;
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
// 全选 | 如果无效字符
|
|
905
|
+
const isAllSelected = !selectionStart && selectionEnd === inpValue.length;
|
|
906
|
+
const isNotMasked = inpValue && inpValue.length !== dateMaskedFormat.length;
|
|
907
|
+
if (isAllSelected || isNotMasked) {
|
|
908
|
+
let restValue = '';
|
|
909
|
+
// 还原值
|
|
910
|
+
if (isNotMasked && inpValue) {
|
|
911
|
+
const chunkNums = inpValue.match(/\d/g) || [];
|
|
912
|
+
let useNumIndex = 0;
|
|
913
|
+
restValue = dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), () => chunkNums[useNumIndex++] || maskChar);
|
|
914
|
+
} else {
|
|
915
|
+
dateMaskedFormat.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar);
|
|
916
|
+
}
|
|
917
|
+
const firstMaskedKeys = allMaskedKeys[0];
|
|
918
|
+
const firstSkRest = dateMaskedFormat.match(new RegExp(`${firstMaskedKeys}+`));
|
|
919
|
+
if (firstSkRest) {
|
|
920
|
+
evnt.preventDefault();
|
|
921
|
+
const firstChunkFormat = firstSkRest[0];
|
|
922
|
+
targetElem.value = restValue;
|
|
923
|
+
handleInputLabel(restValue, false);
|
|
924
|
+
targetElem.setSelectionRange(0, firstChunkFormat.length);
|
|
925
|
+
internalData.laseFocusMasked = Date.now();
|
|
926
|
+
return;
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
// 是否选择数字块
|
|
930
|
+
let selectKey = dateMaskedFormat[selectionStart];
|
|
493
931
|
if (!parseInputKayMaps[selectKey]) {
|
|
494
|
-
selectKey =
|
|
932
|
+
selectKey = dateMaskedFormat[selectionStart - 1];
|
|
495
933
|
}
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
934
|
+
if (selectKey) {
|
|
935
|
+
evnt.preventDefault();
|
|
936
|
+
const skRest = dateMaskedFormat.match(new RegExp(selectKey + '+'));
|
|
937
|
+
if (skRest) {
|
|
938
|
+
const chunkFormat = skRest[0] || '';
|
|
939
|
+
const chunkStartIndex = skRest.index || 0;
|
|
940
|
+
const chunkEndIndex = chunkStartIndex + chunkFormat.length;
|
|
941
|
+
targetElem.setSelectionRange(chunkStartIndex, chunkEndIndex);
|
|
942
|
+
internalData.isTriggerMasked = true;
|
|
943
|
+
internalData.laseFocusMasked = Date.now();
|
|
944
|
+
}
|
|
499
945
|
}
|
|
500
946
|
};
|
|
501
947
|
const blurEvent = evnt => {
|
|
@@ -509,10 +955,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
509
955
|
handleChange(value, evnt);
|
|
510
956
|
}
|
|
511
957
|
if (!reactData.visiblePanel) {
|
|
958
|
+
const {
|
|
959
|
+
inputLabel
|
|
960
|
+
} = internalData;
|
|
512
961
|
reactData.isActivated = false;
|
|
513
962
|
// 未打开面板时才校验
|
|
514
963
|
if ($datePanel) {
|
|
515
|
-
$datePanel.checkValue(
|
|
964
|
+
$datePanel.checkValue(inputLabel);
|
|
965
|
+
} else {
|
|
966
|
+
afterCheckValue(inputLabel);
|
|
516
967
|
}
|
|
517
968
|
}
|
|
518
969
|
dispatchEvent('blur', {
|
|
@@ -523,15 +974,92 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
523
974
|
$xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
|
|
524
975
|
}
|
|
525
976
|
};
|
|
977
|
+
const focusEvent = evnt => {
|
|
978
|
+
const {
|
|
979
|
+
multiple,
|
|
980
|
+
editable,
|
|
981
|
+
maskedConfig
|
|
982
|
+
} = props;
|
|
983
|
+
const maskedOpts = computeMaskedOpts.value;
|
|
984
|
+
const popupOpts = computePopupOpts.value;
|
|
985
|
+
const {
|
|
986
|
+
trigger
|
|
987
|
+
} = popupOpts;
|
|
988
|
+
reactData.isActivated = true;
|
|
989
|
+
if (!trigger || trigger === 'default') {
|
|
990
|
+
datePickerOpenEvent(evnt);
|
|
991
|
+
setTimeout(() => {
|
|
992
|
+
if (editable && !multiple && ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled)) {
|
|
993
|
+
handleMaskedSelectedDate(evnt, true);
|
|
994
|
+
}
|
|
995
|
+
}, 15);
|
|
996
|
+
} else if (trigger === 'icon') {
|
|
997
|
+
hidePanel();
|
|
998
|
+
setTimeout(() => {
|
|
999
|
+
if (editable && !multiple && ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled)) {
|
|
1000
|
+
handleMaskedSelectedDate(evnt, true);
|
|
1001
|
+
}
|
|
1002
|
+
}, 15);
|
|
1003
|
+
} else {
|
|
1004
|
+
if (editable && !multiple && ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled)) {
|
|
1005
|
+
handleMaskedSelectedDate(evnt, true);
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
triggerEvent(evnt);
|
|
1009
|
+
};
|
|
1010
|
+
const clickEvent = evnt => {
|
|
1011
|
+
const {
|
|
1012
|
+
editable,
|
|
1013
|
+
maskedConfig
|
|
1014
|
+
} = props;
|
|
1015
|
+
const maskedOpts = computeMaskedOpts.value;
|
|
1016
|
+
if (editable && ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled)) {
|
|
1017
|
+
handleMaskedSelectedDate(evnt);
|
|
1018
|
+
}
|
|
1019
|
+
triggerEvent(evnt);
|
|
1020
|
+
};
|
|
526
1021
|
const keydownEvent = evnt => {
|
|
527
1022
|
const {
|
|
528
|
-
|
|
1023
|
+
type,
|
|
1024
|
+
editable,
|
|
1025
|
+
maskedConfig
|
|
529
1026
|
} = props;
|
|
530
|
-
const
|
|
1027
|
+
const {
|
|
1028
|
+
visiblePanel
|
|
1029
|
+
} = reactData;
|
|
1030
|
+
const maskedOpts = computeMaskedOpts.value;
|
|
531
1031
|
const isUpArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_UP);
|
|
532
1032
|
const isDwArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);
|
|
533
|
-
|
|
534
|
-
|
|
1033
|
+
const isLtArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_LEFT);
|
|
1034
|
+
const isRtArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_RIGHT);
|
|
1035
|
+
const isEnter = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ENTER);
|
|
1036
|
+
if (editable) {
|
|
1037
|
+
if (isEnter) {
|
|
1038
|
+
const $datePanel = refDatePanel.value;
|
|
1039
|
+
const {
|
|
1040
|
+
inputLabel
|
|
1041
|
+
} = internalData;
|
|
1042
|
+
const targetElem = refInputTarget.value;
|
|
1043
|
+
if (visiblePanel) {
|
|
1044
|
+
hidePanel();
|
|
1045
|
+
}
|
|
1046
|
+
if ($datePanel) {
|
|
1047
|
+
$datePanel.checkValue(inputLabel);
|
|
1048
|
+
} else {
|
|
1049
|
+
afterCheckValue(inputLabel);
|
|
1050
|
+
}
|
|
1051
|
+
if (targetElem) {
|
|
1052
|
+
targetElem.blur();
|
|
1053
|
+
}
|
|
1054
|
+
} else if (maskedTypes.includes(type)) {
|
|
1055
|
+
if ((0, _utils.isEnableConf)(maskedConfig) || maskedOpts.enabled) {
|
|
1056
|
+
if (maskedOpts.isArrow && (isUpArrow || isDwArrow || isLtArrow || isRtArrow)) {
|
|
1057
|
+
handleArrowInputDate(evnt, isUpArrow, isDwArrow, isLtArrow, isRtArrow);
|
|
1058
|
+
} else if (maskedOpts.isMasked) {
|
|
1059
|
+
handleMaskedInputDate(evnt);
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
535
1063
|
}
|
|
536
1064
|
triggerEvent(evnt);
|
|
537
1065
|
};
|
|
@@ -566,7 +1094,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
566
1094
|
dispatchEvent('confirm', params, params.$event);
|
|
567
1095
|
};
|
|
568
1096
|
const panelRevertEvent = params => {
|
|
569
|
-
|
|
1097
|
+
handleInputLabel(params.label, true);
|
|
570
1098
|
};
|
|
571
1099
|
// 全局事件
|
|
572
1100
|
const handleGlobalMousedownEvent = evnt => {
|
|
@@ -579,12 +1107,20 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
579
1107
|
const panelWrapperElem = refPanelWrapper.value;
|
|
580
1108
|
const isDisabled = computeIsDisabled.value;
|
|
581
1109
|
if (!isDisabled && isActivated) {
|
|
582
|
-
|
|
583
|
-
if (
|
|
1110
|
+
const currActivated = (0, _dom.getEventTargetNode)(evnt, el).flag || (0, _dom.getEventTargetNode)(evnt, panelWrapperElem).flag;
|
|
1111
|
+
if (currActivated !== isActivated) {
|
|
1112
|
+
reactData.isActivated = currActivated;
|
|
1113
|
+
}
|
|
1114
|
+
if (!currActivated) {
|
|
584
1115
|
if (visiblePanel) {
|
|
585
1116
|
hidePanel();
|
|
1117
|
+
const {
|
|
1118
|
+
inputLabel
|
|
1119
|
+
} = internalData;
|
|
586
1120
|
if ($datePanel) {
|
|
587
|
-
$datePanel.checkValue(
|
|
1121
|
+
$datePanel.checkValue(inputLabel);
|
|
1122
|
+
} else {
|
|
1123
|
+
afterCheckValue(inputLabel);
|
|
588
1124
|
}
|
|
589
1125
|
}
|
|
590
1126
|
}
|
|
@@ -592,6 +1128,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
592
1128
|
};
|
|
593
1129
|
const handleGlobalKeydownEvent = evnt => {
|
|
594
1130
|
const {
|
|
1131
|
+
isActivated,
|
|
595
1132
|
visiblePanel
|
|
596
1133
|
} = reactData;
|
|
597
1134
|
const isDisabled = computeIsDisabled.value;
|
|
@@ -599,7 +1136,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
599
1136
|
const isTab = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.TAB);
|
|
600
1137
|
const isEsc = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ESCAPE);
|
|
601
1138
|
if (isTab) {
|
|
602
|
-
|
|
1139
|
+
if (isActivated) {
|
|
1140
|
+
reactData.isActivated = false;
|
|
1141
|
+
}
|
|
603
1142
|
}
|
|
604
1143
|
if (visiblePanel) {
|
|
605
1144
|
if (isEsc || isTab) {
|
|
@@ -638,7 +1177,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
638
1177
|
}
|
|
639
1178
|
if (visiblePanel || isActivated) {
|
|
640
1179
|
if ($datePanel) {
|
|
641
|
-
$datePanel.checkValue(
|
|
1180
|
+
$datePanel.checkValue(internalData.inputLabel);
|
|
642
1181
|
}
|
|
643
1182
|
const targetElem = refInputTarget.value;
|
|
644
1183
|
if (targetElem) {
|
|
@@ -740,9 +1279,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
740
1279
|
}
|
|
741
1280
|
}
|
|
742
1281
|
};
|
|
743
|
-
const clickEvent = evnt => {
|
|
744
|
-
triggerEvent(evnt);
|
|
745
|
-
};
|
|
746
1282
|
const handleShortcutEvent = ({
|
|
747
1283
|
option,
|
|
748
1284
|
$event
|
|
@@ -793,7 +1329,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
793
1329
|
break;
|
|
794
1330
|
}
|
|
795
1331
|
default:
|
|
796
|
-
|
|
1332
|
+
errLog('vxe.error.notCommands', [code]);
|
|
797
1333
|
break;
|
|
798
1334
|
}
|
|
799
1335
|
}
|
|
@@ -1044,10 +1580,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1044
1580
|
} = props;
|
|
1045
1581
|
const {
|
|
1046
1582
|
inputValue,
|
|
1047
|
-
inputLabel,
|
|
1048
1583
|
visiblePanel,
|
|
1049
|
-
isActivated
|
|
1584
|
+
isActivated,
|
|
1585
|
+
labelFlag
|
|
1050
1586
|
} = reactData;
|
|
1587
|
+
const {
|
|
1588
|
+
inputLabel
|
|
1589
|
+
} = internalData;
|
|
1051
1590
|
const vSize = computeSize.value;
|
|
1052
1591
|
const isDisabled = computeIsDisabled.value;
|
|
1053
1592
|
const formReadonly = computeFormReadonly.value;
|
|
@@ -1080,7 +1619,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1080
1619
|
}, [(0, _vue.h)('input', {
|
|
1081
1620
|
ref: refInputTarget,
|
|
1082
1621
|
class: 'vxe-date-picker--inner',
|
|
1083
|
-
value: inputLabel,
|
|
1622
|
+
value: labelFlag ? inputLabel : '',
|
|
1084
1623
|
name,
|
|
1085
1624
|
type: 'text',
|
|
1086
1625
|
placeholder: inpPlaceholder,
|
|
@@ -1099,7 +1638,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1099
1638
|
renderPanel()]);
|
|
1100
1639
|
};
|
|
1101
1640
|
(0, _vue.watch)(computePanelLabel, val => {
|
|
1102
|
-
|
|
1641
|
+
handleInputLabel(val, true);
|
|
1103
1642
|
});
|
|
1104
1643
|
(0, _vue.watch)(() => props.modelValue, () => {
|
|
1105
1644
|
updateModelValue();
|
|
@@ -1113,14 +1652,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1113
1652
|
});
|
|
1114
1653
|
(0, _vue.onMounted)(() => {
|
|
1115
1654
|
const {
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1655
|
+
type,
|
|
1656
|
+
multiple,
|
|
1657
|
+
maskedConfig
|
|
1658
|
+
} = props;
|
|
1659
|
+
if ((0, _utils.isEnableConf)(maskedConfig)) {
|
|
1660
|
+
if (multiple) {
|
|
1661
|
+
errLog('vxe.error.notSupportProp', ['multiple', 'control-config.enabled=true', 'control-config.enabled=false']);
|
|
1662
|
+
}
|
|
1663
|
+
if (!maskedTypes.includes(type)) {
|
|
1664
|
+
warnLog('vxe.error.notSupportProp', ['control-config.enabled=true', `type=${type}`, `type=${maskedTypes.join('|')}`]);
|
|
1665
|
+
}
|
|
1666
|
+
}
|
|
1124
1667
|
});
|
|
1125
1668
|
(0, _vue.onUnmounted)(() => {
|
|
1126
1669
|
_ui.globalEvents.off($xeDatePicker, 'mousewheel');
|