vxe-pc-ui 3.15.0 → 3.15.2
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/es/cascader/src/cascader.js +91 -10
- package/es/date-panel/src/util.js +12 -0
- package/es/date-picker/src/date-picker.js +81 -10
- package/es/date-range-picker/src/date-range-picker.js +20 -8
- package/es/form/render/index.js +28 -14
- package/es/form/style.css +4 -2
- package/es/form/style.min.css +1 -1
- package/es/number-input/src/number-input.js +2 -3
- package/es/splitter/src/splitter.js +6 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tree-select/src/tree-select.js +14 -2
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-form/style.css +4 -2
- package/es/vxe-form/style.min.css +1 -1
- package/lib/cascader/src/cascader.js +96 -12
- package/lib/cascader/src/cascader.min.js +1 -1
- package/lib/date-panel/src/util.js +13 -0
- package/lib/date-panel/src/util.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +79 -9
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +18 -8
- package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
- package/lib/form/render/index.js +31 -14
- package/lib/form/render/index.min.js +1 -1
- package/lib/form/style/style.css +4 -2
- package/lib/form/style/style.min.css +1 -1
- package/lib/index.umd.js +264 -51
- package/lib/index.umd.min.js +1 -1
- package/lib/number-input/src/number-input.js +2 -3
- package/lib/splitter/src/splitter.js +6 -1
- package/lib/splitter/src/splitter.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tree-select/src/tree-select.js +18 -2
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-form/style/style.css +4 -2
- package/lib/vxe-form/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/cascader/src/cascader.ts +93 -10
- package/packages/date-panel/src/util.ts +13 -0
- package/packages/date-picker/src/date-picker.ts +82 -10
- package/packages/date-range-picker/src/date-range-picker.ts +18 -8
- package/packages/form/render/index.ts +28 -14
- package/packages/number-input/src/number-input.ts +2 -6
- package/packages/splitter/src/splitter.ts +6 -1
- package/packages/tree-select/src/tree-select.ts +14 -2
- package/styles/components/form.scss +4 -2
- package/types/components/cascader.d.ts +6 -2
- package/types/components/date-picker.d.ts +18 -0
- package/types/components/date-range-picker.d.ts +4 -0
- package/types/components/splitter.d.ts +1 -0
- package/types/components/table.d.ts +33 -4
- package/types/components/tree-select.d.ts +20 -1
- /package/es/icon/{iconfont.1781659223842.ttf → iconfont.1781753586592.ttf} +0 -0
- /package/es/icon/{iconfont.1781659223842.woff → iconfont.1781753586592.woff} +0 -0
- /package/es/icon/{iconfont.1781659223842.woff2 → iconfont.1781753586592.woff2} +0 -0
- /package/es/{iconfont.1781659223842.ttf → iconfont.1781753586592.ttf} +0 -0
- /package/es/{iconfont.1781659223842.woff → iconfont.1781753586592.woff} +0 -0
- /package/es/{iconfont.1781659223842.woff2 → iconfont.1781753586592.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1781659223842.ttf → iconfont.1781753586592.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1781659223842.woff → iconfont.1781753586592.woff} +0 -0
- /package/lib/icon/style/{iconfont.1781659223842.woff2 → iconfont.1781753586592.woff2} +0 -0
- /package/lib/{iconfont.1781659223842.ttf → iconfont.1781753586592.ttf} +0 -0
- /package/lib/{iconfont.1781659223842.woff → iconfont.1781753586592.woff} +0 -0
- /package/lib/{iconfont.1781659223842.woff2 → iconfont.1781753586592.woff2} +0 -0
|
@@ -51,6 +51,10 @@ function createReactData() {
|
|
|
51
51
|
function createInternalData() {
|
|
52
52
|
return {
|
|
53
53
|
// hpTimeout: undefined,
|
|
54
|
+
listVirtualYOpts: {
|
|
55
|
+
enabled: true,
|
|
56
|
+
gt: 20
|
|
57
|
+
},
|
|
54
58
|
afterTreeList: [],
|
|
55
59
|
treeFullData: [],
|
|
56
60
|
afterVisibleList: [],
|
|
@@ -109,7 +113,15 @@ export default {
|
|
|
109
113
|
default: () => getConfig().cascader.size || getConfig().size
|
|
110
114
|
},
|
|
111
115
|
treeConfig: Object,
|
|
116
|
+
showRadio: {
|
|
117
|
+
type: Boolean,
|
|
118
|
+
default: () => getConfig().cascader.showRadio
|
|
119
|
+
},
|
|
112
120
|
radioConfig: Object,
|
|
121
|
+
showCheckbox: {
|
|
122
|
+
type: Boolean,
|
|
123
|
+
default: () => getConfig().cascader.showCheckbox
|
|
124
|
+
},
|
|
113
125
|
checkboxConfig: Object,
|
|
114
126
|
remote: Boolean,
|
|
115
127
|
remoteConfig: Function,
|
|
@@ -414,6 +426,59 @@ export default {
|
|
|
414
426
|
return item;
|
|
415
427
|
}));
|
|
416
428
|
},
|
|
429
|
+
handleSetCheckboxByNodeId(nodeKeys, checked) {
|
|
430
|
+
const $xeCascader = this;
|
|
431
|
+
const internalData = $xeCascader.internalData;
|
|
432
|
+
const { nodeMaps } = internalData;
|
|
433
|
+
if (nodeKeys) {
|
|
434
|
+
if (!XEUtils.isArray(nodeKeys)) {
|
|
435
|
+
nodeKeys = [nodeKeys];
|
|
436
|
+
}
|
|
437
|
+
const nodeList = [];
|
|
438
|
+
nodeKeys.forEach((nodeKey) => {
|
|
439
|
+
const nodeid = enNodeValue(nodeKey);
|
|
440
|
+
const nodeItem = nodeMaps[nodeid];
|
|
441
|
+
if (nodeItem) {
|
|
442
|
+
nodeList.push(nodeItem.item);
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
$xeCascader.handleCheckedCheckboxNode(nodeList, checked);
|
|
446
|
+
}
|
|
447
|
+
return $xeCascader.$nextTick();
|
|
448
|
+
},
|
|
449
|
+
updateCheckboxChecked(nodeKeys) {
|
|
450
|
+
const $xeCascader = this;
|
|
451
|
+
const internalData = $xeCascader.internalData;
|
|
452
|
+
internalData.selectCheckboxMaps = {};
|
|
453
|
+
$xeCascader.handleSetCheckboxByNodeId(nodeKeys, true);
|
|
454
|
+
},
|
|
455
|
+
updateModelChecked() {
|
|
456
|
+
const $xeCascader = this;
|
|
457
|
+
const props = $xeCascader;
|
|
458
|
+
const reactData = $xeCascader.reactData;
|
|
459
|
+
const internalData = $xeCascader.internalData;
|
|
460
|
+
const { value: modelValue } = props;
|
|
461
|
+
const { nodeMaps } = internalData;
|
|
462
|
+
const expandedMaps = {};
|
|
463
|
+
if (props.multiple) {
|
|
464
|
+
if (modelValue && modelValue.length) {
|
|
465
|
+
$xeCascader.updateCheckboxChecked(modelValue);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
if (modelValue) {
|
|
470
|
+
const nodeid = enNodeValue(XEUtils.isArray(modelValue) ? modelValue[0] : modelValue);
|
|
471
|
+
const itemRest = nodeMaps[nodeid];
|
|
472
|
+
if (itemRest) {
|
|
473
|
+
itemRest.nodes.forEach(item => {
|
|
474
|
+
expandedMaps[$xeCascader.getNodeId(item)] = true;
|
|
475
|
+
});
|
|
476
|
+
reactData.selectRadioKey = nodeid;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
internalData.treeExpandedMaps = expandedMaps;
|
|
481
|
+
},
|
|
417
482
|
cacheNodeMap() {
|
|
418
483
|
const $xeCascader = this;
|
|
419
484
|
const props = $xeCascader;
|
|
@@ -647,6 +712,7 @@ export default {
|
|
|
647
712
|
internalData.treeFullData = fullData;
|
|
648
713
|
$xeCascader.cacheNodeMap();
|
|
649
714
|
$xeCascader.handleData(true);
|
|
715
|
+
$xeCascader.updateModelChecked();
|
|
650
716
|
$xeCascader.handleCurrentItems();
|
|
651
717
|
$xeCascader.updateCurrentChunk();
|
|
652
718
|
return $xeCascader.$nextTick();
|
|
@@ -682,11 +748,14 @@ export default {
|
|
|
682
748
|
const { treeFullData } = internalData;
|
|
683
749
|
const selectVals = $xeCascader.computeSelectVals;
|
|
684
750
|
const childrenField = $xeCascader.computeChildrenField;
|
|
751
|
+
const mapChildrenField = $xeCascader.computeMapChildrenField;
|
|
752
|
+
const treeOpts = $xeCascader.computeTreeOpts;
|
|
753
|
+
const { transform } = treeOpts;
|
|
685
754
|
const stItems = [];
|
|
686
755
|
const expandedMaps = {};
|
|
687
756
|
if (selectVals.length) {
|
|
688
|
-
const lastVal = XEUtils.last(selectVals);
|
|
689
|
-
const stRest = XEUtils.findTree(treeFullData, (item) => lastVal === $xeCascader.getNodeId(item), { children: childrenField });
|
|
757
|
+
const lastVal = enNodeValue(XEUtils.last(selectVals));
|
|
758
|
+
const stRest = XEUtils.findTree(treeFullData, (item) => lastVal === $xeCascader.getNodeId(item), { children: transform ? mapChildrenField : childrenField });
|
|
690
759
|
if (stRest) {
|
|
691
760
|
const { nodes } = stRest;
|
|
692
761
|
nodes.forEach(item => {
|
|
@@ -1292,7 +1361,7 @@ export default {
|
|
|
1292
1361
|
handleNodeClickEvent(evnt, node, chunks, chunkIndex) {
|
|
1293
1362
|
const $xeCascader = this;
|
|
1294
1363
|
const props = $xeCascader;
|
|
1295
|
-
const { multiple } = props;
|
|
1364
|
+
const { multiple, showCheckbox, showRadio } = props;
|
|
1296
1365
|
const treeOpts = $xeCascader.computeTreeOpts;
|
|
1297
1366
|
const radioOpts = $xeCascader.computeRadioOpts;
|
|
1298
1367
|
const checkboxOpts = $xeCascader.computeCheckboxOpts;
|
|
@@ -1311,13 +1380,13 @@ export default {
|
|
|
1311
1380
|
$xeCascader.toggleExpandEvent(evnt, node, chunks, chunkIndex);
|
|
1312
1381
|
}
|
|
1313
1382
|
if (multiple) {
|
|
1314
|
-
if (checkboxOpts.trigger === 'node' || (!
|
|
1383
|
+
if (checkboxOpts.trigger === 'node' || (!showCheckbox && (!childList || !childList.length))) {
|
|
1315
1384
|
triggerCheckbox = true;
|
|
1316
1385
|
$xeCascader.changeCheckboxEvent(evnt, node);
|
|
1317
1386
|
}
|
|
1318
1387
|
}
|
|
1319
1388
|
else {
|
|
1320
|
-
if (radioOpts.trigger === 'node' || (!
|
|
1389
|
+
if (radioOpts.trigger === 'node' || (!showRadio && (!childList || !childList.length))) {
|
|
1321
1390
|
triggerRadio = true;
|
|
1322
1391
|
$xeCascader.changeRadioEvent(evnt, node);
|
|
1323
1392
|
}
|
|
@@ -1450,10 +1519,12 @@ export default {
|
|
|
1450
1519
|
//
|
|
1451
1520
|
renderRadio(h, node, isExistChild, nLevel, isChecked) {
|
|
1452
1521
|
const $xeCascader = this;
|
|
1522
|
+
const props = $xeCascader;
|
|
1523
|
+
const { showRadio } = props;
|
|
1453
1524
|
const radioOpts = $xeCascader.computeRadioOpts;
|
|
1454
|
-
const {
|
|
1525
|
+
const { checkMode, checkMethod, visibleMode, visibleMethod } = radioOpts;
|
|
1455
1526
|
const isVisible = visibleMethod ? visibleMethod({ $cascader: $xeCascader, node }) : handleVisibleOrCheckMode(visibleMode, isExistChild, nLevel);
|
|
1456
|
-
if (
|
|
1527
|
+
if (showRadio && isVisible) {
|
|
1457
1528
|
const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
|
|
1458
1529
|
return h('div', {
|
|
1459
1530
|
class: ['vxe-tree--radio-option', {
|
|
@@ -1477,10 +1548,12 @@ export default {
|
|
|
1477
1548
|
},
|
|
1478
1549
|
renderCheckbox(h, node, isExistChild, nLevel, isChecked, isIndeterminate) {
|
|
1479
1550
|
const $xeCascader = this;
|
|
1551
|
+
const props = $xeCascader;
|
|
1552
|
+
const { showCheckbox } = props;
|
|
1480
1553
|
const checkboxOpts = $xeCascader.computeCheckboxOpts;
|
|
1481
|
-
const {
|
|
1554
|
+
const { checkMode, checkMethod, visibleMode, visibleMethod } = checkboxOpts;
|
|
1482
1555
|
const isVisible = visibleMethod ? visibleMethod({ $cascader: $xeCascader, node }) : handleVisibleOrCheckMode(visibleMode, isExistChild, nLevel);
|
|
1483
|
-
if (
|
|
1556
|
+
if (showCheckbox && isVisible) {
|
|
1484
1557
|
const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
|
|
1485
1558
|
return h('div', {
|
|
1486
1559
|
class: ['vxe-cascader--checkbox-option', {
|
|
@@ -1606,9 +1679,11 @@ export default {
|
|
|
1606
1679
|
const $xeCascader = this;
|
|
1607
1680
|
const props = $xeCascader;
|
|
1608
1681
|
const reactData = $xeCascader.reactData;
|
|
1682
|
+
const internalData = $xeCascader.internalData;
|
|
1609
1683
|
const slots = $xeCascader.$scopedSlots;
|
|
1610
1684
|
const { className, value: modelValue, multiple, loading, filterable, showTotalButton, showCheckedButton, showClearButton, showCloseButton } = props;
|
|
1611
1685
|
const { initialized, isActivated, isAniVisible, visiblePanel, searchValue, currentCunkList } = reactData;
|
|
1686
|
+
const { listVirtualYOpts } = internalData;
|
|
1612
1687
|
const vSize = $xeCascader.computeSize;
|
|
1613
1688
|
const isDisabled = $xeCascader.computeIsDisabled;
|
|
1614
1689
|
const selectLabel = $xeCascader.computeSelectLabel;
|
|
@@ -1760,7 +1835,8 @@ export default {
|
|
|
1760
1835
|
}, [
|
|
1761
1836
|
h(VxeListComponent, {
|
|
1762
1837
|
props: {
|
|
1763
|
-
data: chunks
|
|
1838
|
+
data: chunks,
|
|
1839
|
+
virtualYConfig: listVirtualYOpts
|
|
1764
1840
|
},
|
|
1765
1841
|
scopedSlots: {
|
|
1766
1842
|
default(slotParams) {
|
|
@@ -1819,6 +1895,7 @@ export default {
|
|
|
1819
1895
|
const $xeCascader = this;
|
|
1820
1896
|
const reactData = $xeCascader.reactData;
|
|
1821
1897
|
if (!reactData.visiblePanel) {
|
|
1898
|
+
$xeCascader.updateModelChecked();
|
|
1822
1899
|
$xeCascader.handleCurrentItems();
|
|
1823
1900
|
$xeCascader.updateCurrentChunk();
|
|
1824
1901
|
}
|
|
@@ -1832,6 +1909,10 @@ export default {
|
|
|
1832
1909
|
created() {
|
|
1833
1910
|
const $xeCascader = this;
|
|
1834
1911
|
const props = $xeCascader;
|
|
1912
|
+
const reactData = $xeCascader.reactData;
|
|
1913
|
+
if (!props.multiple) {
|
|
1914
|
+
reactData.selectRadioKey = enNodeValue(props.value);
|
|
1915
|
+
}
|
|
1835
1916
|
$xeCascader.loadData(props.options || []);
|
|
1836
1917
|
},
|
|
1837
1918
|
mounted() {
|
|
@@ -19,6 +19,18 @@ export function handleValueFormat(type, valueFormat) {
|
|
|
19
19
|
}
|
|
20
20
|
return 'yyyy-MM-dd';
|
|
21
21
|
}
|
|
22
|
+
export function handleInputFormat(type, inputFormat) {
|
|
23
|
+
if (inputFormat) {
|
|
24
|
+
return inputFormat;
|
|
25
|
+
}
|
|
26
|
+
if (type === 'time') {
|
|
27
|
+
return 'HH:mm:ss';
|
|
28
|
+
}
|
|
29
|
+
if (type === 'datetime') {
|
|
30
|
+
return 'yyyy-MM-dd HH:mm:ss';
|
|
31
|
+
}
|
|
32
|
+
return 'yyyy-MM-dd';
|
|
33
|
+
}
|
|
22
34
|
export function toStringTimeDate(str) {
|
|
23
35
|
const rest = new Date(2e3, 0, 1);
|
|
24
36
|
if (str) {
|
|
@@ -4,7 +4,7 @@ import { getConfig, getIcon, getI18n, commands, createEvent, globalEvents, GLOBA
|
|
|
4
4
|
import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils';
|
|
5
5
|
import { updatePanelPlacement, getEventTargetNode } from '../../ui/src/dom';
|
|
6
6
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
7
|
-
import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, hasDateValueType, hasTimestampValueType } from '../../date-panel/src/util';
|
|
7
|
+
import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, handleInputFormat, hasDateValueType, hasTimestampValueType } from '../../date-panel/src/util';
|
|
8
8
|
import { errLog } from '../../ui/src/log';
|
|
9
9
|
import VxeDatePanelComponent from '../../date-panel/src/date-panel';
|
|
10
10
|
import VxeButtonComponent from '../../button/src/button';
|
|
@@ -78,6 +78,7 @@ export default {
|
|
|
78
78
|
labelFormat: String,
|
|
79
79
|
valueFormat: String,
|
|
80
80
|
timeFormat: String,
|
|
81
|
+
inputFormat: String,
|
|
81
82
|
editable: {
|
|
82
83
|
type: Boolean,
|
|
83
84
|
default: true
|
|
@@ -107,6 +108,7 @@ export default {
|
|
|
107
108
|
type: Boolean,
|
|
108
109
|
default: () => getConfig().datePicker.autoClose
|
|
109
110
|
},
|
|
111
|
+
controlConfig: Object,
|
|
110
112
|
prefixIcon: String,
|
|
111
113
|
suffixIcon: String,
|
|
112
114
|
placement: String,
|
|
@@ -158,7 +160,8 @@ export default {
|
|
|
158
160
|
inputLabel: ''
|
|
159
161
|
};
|
|
160
162
|
const internalData = {
|
|
161
|
-
hpTimeout: undefined
|
|
163
|
+
// hpTimeout: undefined,
|
|
164
|
+
parseInputKayMaps: {}
|
|
162
165
|
};
|
|
163
166
|
return {
|
|
164
167
|
xID,
|
|
@@ -298,6 +301,12 @@ export default {
|
|
|
298
301
|
const { type, valueFormat } = props;
|
|
299
302
|
return handleValueFormat(type, valueFormat);
|
|
300
303
|
},
|
|
304
|
+
computeDateInputFormat() {
|
|
305
|
+
const $xeDatePicker = this;
|
|
306
|
+
const props = $xeDatePicker;
|
|
307
|
+
const { type, inputFormat } = props;
|
|
308
|
+
return handleInputFormat(type, inputFormat);
|
|
309
|
+
},
|
|
301
310
|
computeFirstDayOfWeek() {
|
|
302
311
|
const $xeDatePicker = this;
|
|
303
312
|
const props = $xeDatePicker;
|
|
@@ -322,6 +331,11 @@ export default {
|
|
|
322
331
|
});
|
|
323
332
|
return dateObj.label;
|
|
324
333
|
}).join(', ');
|
|
334
|
+
},
|
|
335
|
+
computeControlOpts() {
|
|
336
|
+
const $xeDatePicker = this;
|
|
337
|
+
const props = $xeDatePicker;
|
|
338
|
+
return Object.assign({}, getConfig().datePicker.controlConfig, props.controlConfig);
|
|
325
339
|
} }),
|
|
326
340
|
methods: {
|
|
327
341
|
//
|
|
@@ -430,6 +444,9 @@ export default {
|
|
|
430
444
|
if (!trigger || trigger === 'default') {
|
|
431
445
|
$xeDatePicker.datePickerOpenEvent(evnt);
|
|
432
446
|
}
|
|
447
|
+
else if (trigger === 'icon') {
|
|
448
|
+
$xeDatePicker.hidePanel();
|
|
449
|
+
}
|
|
433
450
|
$xeDatePicker.triggerEvent(evnt);
|
|
434
451
|
},
|
|
435
452
|
clickPrefixEvent(evnt) {
|
|
@@ -471,6 +488,35 @@ export default {
|
|
|
471
488
|
$xeDatePicker.dispatchEvent('suffix-click', { value: inputValue }, evnt);
|
|
472
489
|
}
|
|
473
490
|
},
|
|
491
|
+
handleArrowInputDate(evnt, isUpArrow) {
|
|
492
|
+
const $xeDatePicker = this;
|
|
493
|
+
const props = $xeDatePicker;
|
|
494
|
+
const reactData = $xeDatePicker.reactData;
|
|
495
|
+
const internalData = $xeDatePicker.internalData;
|
|
496
|
+
const { multiple } = props;
|
|
497
|
+
if (multiple) {
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
const { inputValue } = reactData;
|
|
501
|
+
if (!inputValue) {
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
const targetElem = $xeDatePicker.$refs.refInputTarget;
|
|
505
|
+
if (!targetElem) {
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
const { parseInputKayMaps } = internalData;
|
|
509
|
+
const inputFormat = $xeDatePicker.computeDateInputFormat;
|
|
510
|
+
const selectionStart = targetElem.selectionStart || 0;
|
|
511
|
+
let selectKey = inputFormat[selectionStart];
|
|
512
|
+
if (!parseInputKayMaps[selectKey]) {
|
|
513
|
+
selectKey = inputFormat[selectionStart - 1];
|
|
514
|
+
}
|
|
515
|
+
const inputPaesrFn = parseInputKayMaps[selectKey];
|
|
516
|
+
if (inputPaesrFn) {
|
|
517
|
+
inputPaesrFn(evnt, targetElem, isUpArrow);
|
|
518
|
+
}
|
|
519
|
+
},
|
|
474
520
|
blurEvent(evnt) {
|
|
475
521
|
const $xeDatePicker = this;
|
|
476
522
|
const reactData = $xeDatePicker.reactData;
|
|
@@ -498,6 +544,14 @@ export default {
|
|
|
498
544
|
},
|
|
499
545
|
keydownEvent(evnt) {
|
|
500
546
|
const $xeDatePicker = this;
|
|
547
|
+
const props = $xeDatePicker;
|
|
548
|
+
const { controlConfig } = props;
|
|
549
|
+
const controlOpts = $xeDatePicker.computeControlOpts;
|
|
550
|
+
const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP);
|
|
551
|
+
const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN);
|
|
552
|
+
if ((isUpArrow || isDwArrow) && controlOpts.isArrow && (controlConfig || controlOpts.enabled)) {
|
|
553
|
+
$xeDatePicker.handleArrowInputDate(evnt, isUpArrow);
|
|
554
|
+
}
|
|
501
555
|
$xeDatePicker.triggerEvent(evnt);
|
|
502
556
|
},
|
|
503
557
|
keyupEvent(evnt) {
|
|
@@ -641,6 +695,9 @@ export default {
|
|
|
641
695
|
const { panelIndex } = reactData;
|
|
642
696
|
const targetElem = $xeDatePicker.$refs.refInputTarget;
|
|
643
697
|
const panelElem = $xeDatePicker.$refs.refInputPanel;
|
|
698
|
+
if (!panelElem) {
|
|
699
|
+
return $xeDatePicker.$nextTick();
|
|
700
|
+
}
|
|
644
701
|
const btnTransfer = $xeDatePicker.computeBtnTransfer;
|
|
645
702
|
const popupOpts = $xeDatePicker.computePopupOpts;
|
|
646
703
|
const handleStyle = () => {
|
|
@@ -667,13 +724,9 @@ export default {
|
|
|
667
724
|
const btnTransfer = $xeDatePicker.computeBtnTransfer;
|
|
668
725
|
const panelElem = $xeDatePicker.$refs.refInputPanel;
|
|
669
726
|
if (!isDisabled && !visiblePanel) {
|
|
670
|
-
if (!reactData.initialized) {
|
|
727
|
+
if (!reactData.initialized && btnTransfer && panelElem) {
|
|
671
728
|
reactData.initialized = true;
|
|
672
|
-
|
|
673
|
-
if (panelElem) {
|
|
674
|
-
document.body.appendChild(panelElem);
|
|
675
|
-
}
|
|
676
|
-
}
|
|
729
|
+
document.body.appendChild(panelElem);
|
|
677
730
|
}
|
|
678
731
|
if (internalData.hpTimeout) {
|
|
679
732
|
clearTimeout(internalData.hpTimeout);
|
|
@@ -700,10 +753,17 @@ export default {
|
|
|
700
753
|
},
|
|
701
754
|
clickIconEvent(evnt) {
|
|
702
755
|
const $xeDatePicker = this;
|
|
756
|
+
const reactData = $xeDatePicker.reactData;
|
|
757
|
+
const { visiblePanel } = reactData;
|
|
703
758
|
const popupOpts = $xeDatePicker.computePopupOpts;
|
|
704
759
|
const { trigger } = popupOpts;
|
|
705
760
|
if (!trigger || trigger === 'default' || trigger === 'icon') {
|
|
706
|
-
|
|
761
|
+
if (visiblePanel) {
|
|
762
|
+
$xeDatePicker.hidePanel();
|
|
763
|
+
}
|
|
764
|
+
else {
|
|
765
|
+
$xeDatePicker.datePickerOpenEvent(evnt);
|
|
766
|
+
}
|
|
707
767
|
}
|
|
708
768
|
},
|
|
709
769
|
clickEvent(evnt) {
|
|
@@ -833,6 +893,10 @@ export default {
|
|
|
833
893
|
const props = $xeDatePicker;
|
|
834
894
|
const slots = $xeDatePicker.$scopedSlots;
|
|
835
895
|
const reactData = $xeDatePicker.reactData;
|
|
896
|
+
const popupOpts = $xeDatePicker.computePopupOpts;
|
|
897
|
+
if (popupOpts.enabled === false) {
|
|
898
|
+
return renderEmptyElement($xeDatePicker);
|
|
899
|
+
}
|
|
836
900
|
const { type, multiple, showClearButton, showConfirmButton } = props;
|
|
837
901
|
const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, inputValue } = reactData;
|
|
838
902
|
const vSize = $xeDatePicker.computeSize;
|
|
@@ -842,7 +906,6 @@ export default {
|
|
|
842
906
|
const isDateTimeType = $xeDatePicker.computeIsDateTimeType;
|
|
843
907
|
const shortcutList = $xeDatePicker.computeShortcutList;
|
|
844
908
|
const timeOpts = $xeDatePicker.computeTimeOpts;
|
|
845
|
-
const popupOpts = $xeDatePicker.computePopupOpts;
|
|
846
909
|
const { position } = shortcutOpts;
|
|
847
910
|
const headerSlot = slots.header;
|
|
848
911
|
const footerSlot = slots.footer;
|
|
@@ -1151,6 +1214,14 @@ export default {
|
|
|
1151
1214
|
},
|
|
1152
1215
|
created() {
|
|
1153
1216
|
const $xeDatePicker = this;
|
|
1217
|
+
const internalData = $xeDatePicker.internalData;
|
|
1218
|
+
const { parseInputKayMaps } = internalData;
|
|
1219
|
+
const inputKeys = ['y', 'M', 'd', 'H', 'm', 'n'];
|
|
1220
|
+
inputKeys.forEach(key => {
|
|
1221
|
+
parseInputKayMaps[key] = (evnt) => {
|
|
1222
|
+
evnt.preventDefault();
|
|
1223
|
+
};
|
|
1224
|
+
});
|
|
1154
1225
|
$xeDatePicker.updateModelValue();
|
|
1155
1226
|
globalEvents.on($xeDatePicker, 'mousewheel', $xeDatePicker.handleGlobalMousewheelEvent);
|
|
1156
1227
|
globalEvents.on($xeDatePicker, 'mousedown', $xeDatePicker.handleGlobalMousedownEvent);
|
|
@@ -533,6 +533,9 @@ export default {
|
|
|
533
533
|
if (!trigger || trigger === 'default') {
|
|
534
534
|
$xeDateRangePicker.dateRangePickerOpenEvent(evnt);
|
|
535
535
|
}
|
|
536
|
+
else if (trigger === 'icon') {
|
|
537
|
+
$xeDateRangePicker.hidePanel();
|
|
538
|
+
}
|
|
536
539
|
$xeDateRangePicker.triggerEvent(evnt);
|
|
537
540
|
},
|
|
538
541
|
clickPrefixEvent(evnt) {
|
|
@@ -891,6 +894,9 @@ export default {
|
|
|
891
894
|
const { panelIndex } = reactData;
|
|
892
895
|
const targetElem = $xeDateRangePicker.$refs.refInputTarget;
|
|
893
896
|
const panelElem = $xeDateRangePicker.$refs.refInputPanel;
|
|
897
|
+
if (!panelElem) {
|
|
898
|
+
return $xeDateRangePicker.$nextTick();
|
|
899
|
+
}
|
|
894
900
|
const btnTransfer = $xeDateRangePicker.computeBtnTransfer;
|
|
895
901
|
const popupOpts = $xeDateRangePicker.computePopupOpts;
|
|
896
902
|
const handleStyle = () => {
|
|
@@ -917,13 +923,9 @@ export default {
|
|
|
917
923
|
const btnTransfer = $xeDateRangePicker.computeBtnTransfer;
|
|
918
924
|
const panelElem = $xeDateRangePicker.$refs.refInputPanel;
|
|
919
925
|
if (!isDisabled && !visiblePanel) {
|
|
920
|
-
if (!reactData.initialized) {
|
|
926
|
+
if (!reactData.initialized && btnTransfer && panelElem) {
|
|
921
927
|
reactData.initialized = true;
|
|
922
|
-
|
|
923
|
-
if (panelElem) {
|
|
924
|
-
document.body.appendChild(panelElem);
|
|
925
|
-
}
|
|
926
|
-
}
|
|
928
|
+
document.body.appendChild(panelElem);
|
|
927
929
|
}
|
|
928
930
|
if (internalData.hpTimeout) {
|
|
929
931
|
clearTimeout(internalData.hpTimeout);
|
|
@@ -951,10 +953,17 @@ export default {
|
|
|
951
953
|
},
|
|
952
954
|
clickIconEvent(evnt) {
|
|
953
955
|
const $xeDateRangePicker = this;
|
|
956
|
+
const reactData = $xeDateRangePicker.reactData;
|
|
957
|
+
const { visiblePanel } = reactData;
|
|
954
958
|
const popupOpts = $xeDateRangePicker.computePopupOpts;
|
|
955
959
|
const { trigger } = popupOpts;
|
|
956
960
|
if (!trigger || trigger === 'default' || trigger === 'icon') {
|
|
957
|
-
|
|
961
|
+
if (visiblePanel) {
|
|
962
|
+
$xeDateRangePicker.hidePanel();
|
|
963
|
+
}
|
|
964
|
+
else {
|
|
965
|
+
$xeDateRangePicker.dateRangePickerOpenEvent(evnt);
|
|
966
|
+
}
|
|
958
967
|
}
|
|
959
968
|
},
|
|
960
969
|
clickEvent(evnt) {
|
|
@@ -1095,6 +1104,10 @@ export default {
|
|
|
1095
1104
|
const props = $xeDateRangePicker;
|
|
1096
1105
|
const slots = $xeDateRangePicker.$scopedSlots;
|
|
1097
1106
|
const reactData = $xeDateRangePicker.reactData;
|
|
1107
|
+
const popupOpts = $xeDateRangePicker.computePopupOpts;
|
|
1108
|
+
if (popupOpts.enabled === false) {
|
|
1109
|
+
return renderEmptyElement($xeDateRangePicker);
|
|
1110
|
+
}
|
|
1098
1111
|
const { type, separator, autoClose, showConfirmButton, showClearButton } = props;
|
|
1099
1112
|
const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData;
|
|
1100
1113
|
const vSize = $xeDateRangePicker.computeSize;
|
|
@@ -1107,7 +1120,6 @@ export default {
|
|
|
1107
1120
|
const defaultDates = $xeDateRangePicker.computeDefaultDates;
|
|
1108
1121
|
const defaultTimes = $xeDateRangePicker.computeDefaultTimes;
|
|
1109
1122
|
const timeOpts = $xeDateRangePicker.computeTimeOpts;
|
|
1110
|
-
const popupOpts = $xeDateRangePicker.computePopupOpts;
|
|
1111
1123
|
const { startLabel, endLabel } = panelLabelObj;
|
|
1112
1124
|
const { position } = shortcutOpts;
|
|
1113
1125
|
const headerSlot = slots.header;
|
package/es/form/render/index.js
CHANGED
|
@@ -314,15 +314,15 @@ function oldFormItemRadioAndCheckboxRender(h, renderOpts, params) {
|
|
|
314
314
|
*/
|
|
315
315
|
renderer.mixin({
|
|
316
316
|
input: {
|
|
317
|
-
formItemAutoFocus:
|
|
317
|
+
formItemAutoFocus: true,
|
|
318
318
|
renderFormItemContent: nativeItemRender
|
|
319
319
|
},
|
|
320
320
|
textarea: {
|
|
321
|
-
formItemAutoFocus:
|
|
321
|
+
formItemAutoFocus: true,
|
|
322
322
|
renderFormItemContent: nativeItemRender
|
|
323
323
|
},
|
|
324
324
|
select: {
|
|
325
|
-
formItemAutoFocus:
|
|
325
|
+
formItemAutoFocus: true,
|
|
326
326
|
renderFormItemContent(h, renderOpts, params) {
|
|
327
327
|
return [
|
|
328
328
|
h('select', {
|
|
@@ -334,27 +334,27 @@ renderer.mixin({
|
|
|
334
334
|
}
|
|
335
335
|
},
|
|
336
336
|
VxeInput: {
|
|
337
|
-
formItemAutoFocus:
|
|
337
|
+
formItemAutoFocus: true,
|
|
338
338
|
renderFormItemContent: defaultItemRender
|
|
339
339
|
},
|
|
340
340
|
VxeNumberInput: {
|
|
341
|
-
formItemAutoFocus:
|
|
341
|
+
formItemAutoFocus: true,
|
|
342
342
|
renderFormItemContent: defaultItemRender
|
|
343
343
|
},
|
|
344
344
|
VxePasswordInput: {
|
|
345
|
-
formItemAutoFocus:
|
|
345
|
+
formItemAutoFocus: true,
|
|
346
346
|
renderFormItemContent: defaultItemRender
|
|
347
347
|
},
|
|
348
348
|
VxeTextarea: {
|
|
349
|
-
formItemAutoFocus:
|
|
349
|
+
formItemAutoFocus: true,
|
|
350
350
|
renderFormItemContent: defaultItemRender
|
|
351
351
|
},
|
|
352
352
|
VxeDatePicker: {
|
|
353
|
-
formItemAutoFocus:
|
|
353
|
+
formItemAutoFocus: true,
|
|
354
354
|
renderFormItemContent: defaultItemRender
|
|
355
355
|
},
|
|
356
356
|
VxeDateRangePicker: {
|
|
357
|
-
formItemAutoFocus:
|
|
357
|
+
formItemAutoFocus: true,
|
|
358
358
|
renderFormItemContent(h, renderOpts, params) {
|
|
359
359
|
const { startField, endField } = renderOpts;
|
|
360
360
|
const { $form, data, field } = params;
|
|
@@ -412,7 +412,7 @@ renderer.mixin({
|
|
|
412
412
|
}
|
|
413
413
|
},
|
|
414
414
|
VxeSelect: {
|
|
415
|
-
formItemAutoFocus:
|
|
415
|
+
formItemAutoFocus: true,
|
|
416
416
|
renderFormItemContent(h, renderOpts, params) {
|
|
417
417
|
const { data, field } = params;
|
|
418
418
|
const { options, optionProps, optionGroups, optionGroupProps } = renderOpts;
|
|
@@ -426,7 +426,21 @@ renderer.mixin({
|
|
|
426
426
|
}
|
|
427
427
|
},
|
|
428
428
|
VxeTreeSelect: {
|
|
429
|
-
formItemAutoFocus:
|
|
429
|
+
formItemAutoFocus: true,
|
|
430
|
+
renderFormItemContent(h, renderOpts, params) {
|
|
431
|
+
const { data, field } = params;
|
|
432
|
+
const { options, optionProps } = renderOpts;
|
|
433
|
+
const itemValue = XEUtils.get(data, field);
|
|
434
|
+
return [
|
|
435
|
+
h(getDefaultComponent(renderOpts), {
|
|
436
|
+
props: getComponentFormItemProps(renderOpts, params, itemValue, { options, optionProps }),
|
|
437
|
+
on: getItemOns(renderOpts, params)
|
|
438
|
+
})
|
|
439
|
+
];
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
VxeCascader: {
|
|
443
|
+
formItemAutoFocus: true,
|
|
430
444
|
renderFormItemContent(h, renderOpts, params) {
|
|
431
445
|
const { data, field } = params;
|
|
432
446
|
const { options, optionProps } = renderOpts;
|
|
@@ -440,7 +454,7 @@ renderer.mixin({
|
|
|
440
454
|
}
|
|
441
455
|
},
|
|
442
456
|
VxeTableSelect: {
|
|
443
|
-
formItemAutoFocus:
|
|
457
|
+
formItemAutoFocus: true,
|
|
444
458
|
renderFormItemContent(h, renderOpts, params) {
|
|
445
459
|
const { data, field } = params;
|
|
446
460
|
const { options, optionProps } = renderOpts;
|
|
@@ -454,7 +468,7 @@ renderer.mixin({
|
|
|
454
468
|
}
|
|
455
469
|
},
|
|
456
470
|
VxeColorPicker: {
|
|
457
|
-
formItemAutoFocus:
|
|
471
|
+
formItemAutoFocus: true,
|
|
458
472
|
renderFormItemContent(h, renderOpts, params) {
|
|
459
473
|
const { data, field } = params;
|
|
460
474
|
const { options } = renderOpts;
|
|
@@ -468,7 +482,7 @@ renderer.mixin({
|
|
|
468
482
|
}
|
|
469
483
|
},
|
|
470
484
|
VxeIconPicker: {
|
|
471
|
-
formItemAutoFocus:
|
|
485
|
+
formItemAutoFocus: true,
|
|
472
486
|
renderFormItemContent(h, renderOpts, params) {
|
|
473
487
|
const { data, field } = params;
|
|
474
488
|
const { options } = renderOpts;
|
package/es/form/style.css
CHANGED
|
@@ -357,7 +357,8 @@
|
|
|
357
357
|
.vxe-form--item.is--span .vxe-select,
|
|
358
358
|
.vxe-form--item.is--span .vxe-tree-select,
|
|
359
359
|
.vxe-form--item.is--span .vxe-table-select,
|
|
360
|
-
.vxe-form--item.is--span .vxe-ico-picker
|
|
360
|
+
.vxe-form--item.is--span .vxe-ico-picker,
|
|
361
|
+
.vxe-form--item.is--span .vxe-cascader {
|
|
361
362
|
width: 100%;
|
|
362
363
|
}
|
|
363
364
|
.vxe-form--item.is--error.show--err-msg > .vxe-form--item-content {
|
|
@@ -384,7 +385,8 @@
|
|
|
384
385
|
.vxe-form--item.is--error .vxe-default-input,
|
|
385
386
|
.vxe-form--item.is--error .vxe-default-textarea,
|
|
386
387
|
.vxe-form--item.is--error .vxe-default-select,
|
|
387
|
-
.vxe-form--item.is--error .vxe-ico-picker
|
|
388
|
+
.vxe-form--item.is--error .vxe-ico-picker,
|
|
389
|
+
.vxe-form--item.is--error .vxe-cascader {
|
|
388
390
|
border-color: var(--vxe-ui-form-validate-error-color);
|
|
389
391
|
}
|
|
390
392
|
.vxe-form--item.is--error .vxe-input:focus,
|