vxe-table 3.12.10-beta.9 → 3.12.11
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/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/locale/lang/ar-EG.js +2 -1
- package/es/locale/lang/de-DE.js +2 -1
- package/es/locale/lang/en-US.js +4 -3
- package/es/locale/lang/es-ES.js +2 -1
- package/es/locale/lang/fr-FR.js +2 -1
- package/es/locale/lang/hu-HU.js +2 -1
- package/es/locale/lang/hy-AM.js +2 -1
- package/es/locale/lang/it-IT.js +2 -1
- package/es/locale/lang/ja-JP.js +2 -1
- package/es/locale/lang/ko-KR.js +2 -1
- package/es/locale/lang/nb-NO.js +2 -1
- package/es/locale/lang/pt-BR.js +2 -1
- package/es/locale/lang/ru-RU.js +4 -3
- package/es/locale/lang/th-TH.js +2 -1
- package/es/locale/lang/ug-CN.js +2 -1
- package/es/locale/lang/uk-UA.js +518 -517
- package/es/locale/lang/vi-VN.js +2 -1
- package/es/locale/lang/zh-CHT.js +2 -1
- package/es/locale/lang/zh-CN.js +2 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/edit/mixin.js +7 -7
- package/es/table/module/export/mixin.js +105 -69
- package/es/table/module/keyboard/mixin.js +68 -25
- package/es/table/module/menu/mixin.js +3 -1
- package/es/table/src/body.js +114 -87
- package/es/table/src/cell.js +43 -57
- package/es/table/src/column.js +43 -8
- package/es/table/src/columnInfo.js +3 -0
- package/es/table/src/footer.js +47 -6
- package/es/table/src/header.js +67 -165
- package/es/table/src/methods.js +962 -480
- package/es/table/src/props.js +14 -4
- package/es/table/src/table.js +114 -33
- package/es/table/src/util.js +74 -58
- package/es/table/style.css +246 -191
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +20 -6
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +246 -191
- package/es/vxe-table/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +1725 -1022
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +2 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +2 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +4 -3
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +4 -3
- package/lib/locale/lang/es-ES.js +2 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +2 -1
- package/lib/locale/lang/fr-FR.js +2 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +2 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +2 -1
- package/lib/locale/lang/hy-AM.js +2 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/it-IT.js +2 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +2 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +2 -1
- package/lib/locale/lang/ko-KR.js +2 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +2 -1
- package/lib/locale/lang/nb-NO.js +2 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +2 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +2 -1
- package/lib/locale/lang/ru-RU.js +4 -3
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +4 -3
- package/lib/locale/lang/th-TH.js +2 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +2 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +518 -517
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +518 -517
- package/lib/locale/lang/vi-VN.js +2 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +2 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +2 -1
- package/lib/locale/lang/zh-CN.js +2 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +2 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/edit/mixin.js +7 -2
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/mixin.js +105 -64
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +73 -27
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +3 -1
- package/lib/table/src/body.js +114 -80
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +32 -42
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/column.js +12 -0
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +3 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +43 -4
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +49 -172
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +1072 -538
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +14 -4
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +113 -36
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +88 -71
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +246 -191
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +20 -6
- 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-table/style/style.css +246 -191
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +2 -1
- package/packages/locale/lang/de-DE.ts +2 -1
- package/packages/locale/lang/en-US.ts +4 -3
- package/packages/locale/lang/es-ES.ts +2 -1
- package/packages/locale/lang/fr-FR.ts +2 -1
- package/packages/locale/lang/hu-HU.ts +2 -1
- package/packages/locale/lang/hy-AM.ts +2 -1
- package/packages/locale/lang/it-IT.ts +2 -1
- package/packages/locale/lang/ja-JP.ts +2 -1
- package/packages/locale/lang/ko-KR.ts +2 -1
- package/packages/locale/lang/nb-NO.ts +2 -1
- package/packages/locale/lang/pt-BR.ts +2 -1
- package/packages/locale/lang/ru-RU.ts +4 -3
- package/packages/locale/lang/th-TH.ts +2 -1
- package/packages/locale/lang/ug-CN.ts +2 -1
- package/packages/locale/lang/uk-UA.ts +518 -517
- package/packages/locale/lang/vi-VN.ts +2 -1
- package/packages/locale/lang/zh-CHT.ts +2 -1
- package/packages/locale/lang/zh-CN.ts +2 -1
- package/packages/table/module/edit/mixin.ts +7 -7
- package/packages/table/module/export/mixin.ts +138 -80
- package/packages/table/module/keyboard/mixin.ts +65 -24
- package/packages/table/module/menu/mixin.ts +4 -1
- package/packages/table/src/body.ts +126 -90
- package/packages/table/src/cell.ts +45 -67
- package/packages/table/src/column.ts +48 -10
- package/packages/table/src/columnInfo.ts +3 -0
- package/packages/table/src/footer.ts +50 -7
- package/packages/table/src/header.ts +67 -166
- package/packages/table/src/methods.ts +1007 -492
- package/packages/table/src/props.ts +16 -6
- package/packages/table/src/table.ts +124 -33
- package/packages/table/src/util.ts +83 -63
- package/packages/ui/index.ts +19 -5
- package/styles/components/table.scss +313 -274
- package/styles/theme/base.scss +4 -6
- package/styles/theme/dark.scss +1 -0
- package/styles/theme/light.scss +1 -0
- package/styles/variable.scss +1 -0
- /package/es/{iconfont.1736854649055.ttf → iconfont.1739008141486.ttf} +0 -0
- /package/es/{iconfont.1736854649055.woff → iconfont.1739008141486.woff} +0 -0
- /package/es/{iconfont.1736854649055.woff2 → iconfont.1739008141486.woff2} +0 -0
- /package/lib/{iconfont.1736854649055.ttf → iconfont.1739008141486.ttf} +0 -0
- /package/lib/{iconfont.1736854649055.woff → iconfont.1739008141486.woff} +0 -0
- /package/lib/{iconfont.1736854649055.woff2 → iconfont.1739008141486.woff2} +0 -0
|
@@ -623,7 +623,18 @@ function getTxtCellValue(val, vMaps) {
|
|
|
623
623
|
const rest = replaceTxtCell(val, vMaps);
|
|
624
624
|
return rest.replace(/^"+$/g, (qVal) => '"'.repeat(Math.ceil(qVal.length / 2)));
|
|
625
625
|
}
|
|
626
|
-
function
|
|
626
|
+
function toExportField(tableConf, field) {
|
|
627
|
+
const { fieldMaps, titleMaps } = tableConf;
|
|
628
|
+
// title 转 field
|
|
629
|
+
if (!fieldMaps[field]) {
|
|
630
|
+
const teCol = titleMaps[field];
|
|
631
|
+
if (teCol && teCol.field) {
|
|
632
|
+
field = teCol.field;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
return field;
|
|
636
|
+
}
|
|
637
|
+
function parseCsvAndTxt(tableConf, content, cellSeparator) {
|
|
627
638
|
const list = content.split(enterSymbol);
|
|
628
639
|
const rows = [];
|
|
629
640
|
let fields = [];
|
|
@@ -644,12 +655,12 @@ function parseCsvAndTxt(columns, content, cellSeparator) {
|
|
|
644
655
|
});
|
|
645
656
|
const cells = rVal.split(cellSeparator);
|
|
646
657
|
if (!fields.length) {
|
|
647
|
-
fields = cells.map((val) => getTxtCellValue(val.trim(), vMaps));
|
|
658
|
+
fields = cells.map((val) => toExportField(tableConf, getTxtCellValue(val.trim(), vMaps)));
|
|
648
659
|
}
|
|
649
660
|
else {
|
|
650
661
|
cells.forEach((val, colIndex) => {
|
|
651
662
|
if (colIndex < fields.length) {
|
|
652
|
-
item[fields[colIndex]] = getTxtCellValue(val, vMaps);
|
|
663
|
+
item[fields[colIndex]] = getTxtCellValue(val.trim(), vMaps);
|
|
653
664
|
}
|
|
654
665
|
});
|
|
655
666
|
rows.push(item);
|
|
@@ -659,13 +670,13 @@ function parseCsvAndTxt(columns, content, cellSeparator) {
|
|
|
659
670
|
}
|
|
660
671
|
return { fields, rows };
|
|
661
672
|
}
|
|
662
|
-
function parseCsv(
|
|
663
|
-
return parseCsvAndTxt(
|
|
673
|
+
function parseCsv(tableConf, content) {
|
|
674
|
+
return parseCsvAndTxt(tableConf, content, ',');
|
|
664
675
|
}
|
|
665
|
-
function parseTxt(
|
|
666
|
-
return parseCsvAndTxt(
|
|
676
|
+
function parseTxt(tableConf, content) {
|
|
677
|
+
return parseCsvAndTxt(tableConf, content, '\t');
|
|
667
678
|
}
|
|
668
|
-
function parseHTML(
|
|
679
|
+
function parseHTML(tableConf, content) {
|
|
669
680
|
const domParser = new DOMParser();
|
|
670
681
|
const xmlDoc = domParser.parseFromString(content, 'text/html');
|
|
671
682
|
const bodyNodes = getElementsByTagName(xmlDoc, 'body');
|
|
@@ -676,9 +687,9 @@ function parseHTML(columns, content) {
|
|
|
676
687
|
if (tableNodes.length) {
|
|
677
688
|
const theadNodes = getElementsByTagName(tableNodes[0], 'thead');
|
|
678
689
|
if (theadNodes.length) {
|
|
679
|
-
XEUtils.arrayEach(getElementsByTagName(theadNodes[0], 'tr'),
|
|
680
|
-
XEUtils.arrayEach(getElementsByTagName(rowNode, 'th'),
|
|
681
|
-
fields.push(cellNode.textContent);
|
|
690
|
+
XEUtils.arrayEach(getElementsByTagName(theadNodes[0], 'tr'), rowNode => {
|
|
691
|
+
XEUtils.arrayEach(getElementsByTagName(rowNode, 'th'), cellNode => {
|
|
692
|
+
fields.push(toExportField(tableConf, cellNode.textContent || ''));
|
|
682
693
|
});
|
|
683
694
|
});
|
|
684
695
|
const tbodyNodes = getElementsByTagName(tableNodes[0], 'tbody');
|
|
@@ -698,7 +709,7 @@ function parseHTML(columns, content) {
|
|
|
698
709
|
}
|
|
699
710
|
return { fields, rows };
|
|
700
711
|
}
|
|
701
|
-
function parseXML(
|
|
712
|
+
function parseXML(tableConf, content) {
|
|
702
713
|
const domParser = new DOMParser();
|
|
703
714
|
const xmlDoc = domParser.parseFromString(content, 'application/xml');
|
|
704
715
|
const sheetNodes = getElementsByTagName(xmlDoc, 'Worksheet');
|
|
@@ -709,8 +720,8 @@ function parseXML(columns, content) {
|
|
|
709
720
|
if (tableNodes.length) {
|
|
710
721
|
const rowNodes = getElementsByTagName(tableNodes[0], 'Row');
|
|
711
722
|
if (rowNodes.length) {
|
|
712
|
-
XEUtils.arrayEach(getElementsByTagName(rowNodes[0], 'Cell'),
|
|
713
|
-
fields.push(cellNode.textContent);
|
|
723
|
+
XEUtils.arrayEach(getElementsByTagName(rowNodes[0], 'Cell'), cellNode => {
|
|
724
|
+
fields.push(toExportField(tableConf, cellNode.textContent || ''));
|
|
714
725
|
});
|
|
715
726
|
XEUtils.arrayEach(rowNodes, (rowNode, index) => {
|
|
716
727
|
if (index) {
|
|
@@ -729,52 +740,54 @@ function parseXML(columns, content) {
|
|
|
729
740
|
}
|
|
730
741
|
return { fields, rows };
|
|
731
742
|
}
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
columns.forEach((column) => {
|
|
743
|
+
function handleImport($xeTable, content, opts) {
|
|
744
|
+
const internalData = $xeTable;
|
|
745
|
+
const { tableFullColumn, _importResolve, _importReject } = internalData;
|
|
746
|
+
let rest = { fields: [], rows: [] };
|
|
747
|
+
const tableFieldMaps = {};
|
|
748
|
+
const tableTitleMaps = {};
|
|
749
|
+
tableFullColumn.forEach((column) => {
|
|
740
750
|
const field = column.field;
|
|
751
|
+
const title = column.getTitle();
|
|
741
752
|
if (field) {
|
|
742
|
-
|
|
753
|
+
tableFieldMaps[field] = column;
|
|
754
|
+
}
|
|
755
|
+
if (title) {
|
|
756
|
+
tableTitleMaps[column.getTitle()] = column;
|
|
743
757
|
}
|
|
744
758
|
});
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
let rest = { fields: [], rows: [] };
|
|
759
|
+
const tableConf = {
|
|
760
|
+
fieldMaps: tableFieldMaps,
|
|
761
|
+
titleMaps: tableTitleMaps
|
|
762
|
+
};
|
|
750
763
|
switch (opts.type) {
|
|
751
764
|
case 'csv':
|
|
752
|
-
rest = parseCsv(
|
|
765
|
+
rest = parseCsv(tableConf, content);
|
|
753
766
|
break;
|
|
754
767
|
case 'txt':
|
|
755
|
-
rest = parseTxt(
|
|
768
|
+
rest = parseTxt(tableConf, content);
|
|
756
769
|
break;
|
|
757
770
|
case 'html':
|
|
758
|
-
rest = parseHTML(
|
|
771
|
+
rest = parseHTML(tableConf, content);
|
|
759
772
|
break;
|
|
760
773
|
case 'xml':
|
|
761
|
-
rest = parseXML(
|
|
774
|
+
rest = parseXML(tableConf, content);
|
|
762
775
|
break;
|
|
763
776
|
}
|
|
764
777
|
const { fields, rows } = rest;
|
|
765
|
-
const status =
|
|
778
|
+
const status = fields.some(field => tableFieldMaps[field] || tableTitleMaps[field]);
|
|
766
779
|
if (status) {
|
|
767
|
-
$
|
|
780
|
+
$xeTable.createData(rows)
|
|
768
781
|
.then((data) => {
|
|
769
782
|
let loadRest;
|
|
770
783
|
if (opts.mode === 'insert' || opts.mode === 'insertBottom') {
|
|
771
|
-
loadRest = $
|
|
784
|
+
loadRest = $xeTable.insertAt(data, -1);
|
|
772
785
|
}
|
|
773
786
|
if (opts.mode === 'insertTop') {
|
|
774
|
-
loadRest = $
|
|
787
|
+
loadRest = $xeTable.insert(data);
|
|
775
788
|
}
|
|
776
789
|
else {
|
|
777
|
-
loadRest = $
|
|
790
|
+
loadRest = $xeTable.reloadData(data);
|
|
778
791
|
}
|
|
779
792
|
if (opts.message !== false) {
|
|
780
793
|
// 检测弹窗模块
|
|
@@ -943,6 +956,48 @@ export function readLocalFile(options = {}) {
|
|
|
943
956
|
fileInput.click();
|
|
944
957
|
});
|
|
945
958
|
}
|
|
959
|
+
function handleFilterColumns(exportOpts, column, columns) {
|
|
960
|
+
return columns.some((item) => {
|
|
961
|
+
if (isColumnInfo(item)) {
|
|
962
|
+
return column.id === item.id;
|
|
963
|
+
}
|
|
964
|
+
else if (XEUtils.isString(item)) {
|
|
965
|
+
return column.field === item;
|
|
966
|
+
}
|
|
967
|
+
else {
|
|
968
|
+
const colid = item.id || item.colId;
|
|
969
|
+
const type = item.type;
|
|
970
|
+
const field = item.field;
|
|
971
|
+
if (colid) {
|
|
972
|
+
return column.id === colid;
|
|
973
|
+
}
|
|
974
|
+
else if (field && type) {
|
|
975
|
+
return column.field === field && column.type === type;
|
|
976
|
+
}
|
|
977
|
+
else if (field) {
|
|
978
|
+
return column.field === field;
|
|
979
|
+
}
|
|
980
|
+
else if (type) {
|
|
981
|
+
return column.type === type;
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
return false;
|
|
985
|
+
});
|
|
986
|
+
}
|
|
987
|
+
function handleFilterFields(exportOpts, column, includeFields, excludeFields) {
|
|
988
|
+
if (excludeFields) {
|
|
989
|
+
if (XEUtils.includes(excludeFields, column.field)) {
|
|
990
|
+
return false;
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
if (includeFields) {
|
|
994
|
+
if (XEUtils.includes(includeFields, column.field)) {
|
|
995
|
+
return true;
|
|
996
|
+
}
|
|
997
|
+
return false;
|
|
998
|
+
}
|
|
999
|
+
return exportOpts.original ? column.field : defaultFilterExportColumn(column);
|
|
1000
|
+
}
|
|
946
1001
|
function handleExportAndPrint($xeTable, options, isPrint) {
|
|
947
1002
|
const props = $xeTable;
|
|
948
1003
|
const reactData = $xeTable;
|
|
@@ -972,7 +1027,7 @@ function handleExportAndPrint($xeTable, options, isPrint) {
|
|
|
972
1027
|
const modes = defOpts.modes || [];
|
|
973
1028
|
const checkMethod = customOpts.checkMethod;
|
|
974
1029
|
const exportColumns = collectColumn.slice(0);
|
|
975
|
-
const { columns } = defOpts;
|
|
1030
|
+
const { columns, excludeFields, includeFields } = defOpts;
|
|
976
1031
|
// 处理类型
|
|
977
1032
|
const typeList = types.map((value) => {
|
|
978
1033
|
return {
|
|
@@ -995,38 +1050,19 @@ function handleExportAndPrint($xeTable, options, isPrint) {
|
|
|
995
1050
|
// 默认选中
|
|
996
1051
|
XEUtils.eachTree(exportColumns, (column, index, items, path, parent) => {
|
|
997
1052
|
const isColGroup = column.children && column.children.length;
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
else {
|
|
1008
|
-
const colid = item.id || item.colId;
|
|
1009
|
-
const type = item.type;
|
|
1010
|
-
const field = item.field;
|
|
1011
|
-
if (colid) {
|
|
1012
|
-
return column.id === colid;
|
|
1013
|
-
}
|
|
1014
|
-
else if (field && type) {
|
|
1015
|
-
return column.field === field && column.type === type;
|
|
1016
|
-
}
|
|
1017
|
-
else if (field) {
|
|
1018
|
-
return column.field === field;
|
|
1019
|
-
}
|
|
1020
|
-
else if (type) {
|
|
1021
|
-
return column.type === type;
|
|
1022
|
-
}
|
|
1023
|
-
}
|
|
1024
|
-
return false;
|
|
1025
|
-
})
|
|
1026
|
-
: column.visible;
|
|
1027
|
-
column.halfChecked = false;
|
|
1028
|
-
column.disabled = (parent && parent.disabled) || (checkMethod ? !checkMethod({ column }) : false);
|
|
1053
|
+
let isChecked = false;
|
|
1054
|
+
if (columns && columns.length) {
|
|
1055
|
+
isChecked = handleFilterColumns(defOpts, column, columns);
|
|
1056
|
+
}
|
|
1057
|
+
else if (excludeFields || includeFields) {
|
|
1058
|
+
isChecked = handleFilterFields(defOpts, column, includeFields, excludeFields);
|
|
1059
|
+
}
|
|
1060
|
+
else {
|
|
1061
|
+
isChecked = column.visible && (isColGroup || defaultFilterExportColumn(column));
|
|
1029
1062
|
}
|
|
1063
|
+
column.checked = isChecked;
|
|
1064
|
+
column.halfChecked = false;
|
|
1065
|
+
column.disabled = (parent && parent.disabled) || (checkMethod ? !checkMethod({ column }) : false);
|
|
1030
1066
|
});
|
|
1031
1067
|
// 更新条件
|
|
1032
1068
|
Object.assign(exportStore, {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
|
+
import { getRefElem } from '../../src/util';
|
|
2
3
|
import { browse, hasClass, getAbsolutePos, addClass, removeClass } from '../../../ui/src/dom';
|
|
3
4
|
function getTargetOffset(target, container) {
|
|
4
5
|
let offsetTop = 0;
|
|
@@ -22,36 +23,66 @@ function getTargetOffset(target, container) {
|
|
|
22
23
|
return { offsetTop, offsetLeft };
|
|
23
24
|
}
|
|
24
25
|
function getCheckboxRangeRows($xeTable, evnt, params, targetTrElem, trRect, offsetClientTop, moveRange) {
|
|
26
|
+
const props = $xeTable;
|
|
25
27
|
const reactData = $xeTable;
|
|
26
28
|
const internalData = $xeTable;
|
|
29
|
+
const { showOverflow } = props;
|
|
30
|
+
const { fullAllDataRowIdData, isResizeCellHeight } = internalData;
|
|
31
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
32
|
+
const cellOpts = $xeTable.computeCellOpts;
|
|
33
|
+
const defaultRowHeight = $xeTable.computeDefaultRowHeight;
|
|
34
|
+
const { row } = params;
|
|
27
35
|
let countHeight = 0;
|
|
28
36
|
let rangeRows = [];
|
|
29
37
|
let moveSize = 0;
|
|
30
38
|
const isDown = moveRange > 0;
|
|
31
|
-
const { scrollYLoad
|
|
39
|
+
const { scrollYLoad } = reactData;
|
|
32
40
|
const { afterFullData } = internalData;
|
|
41
|
+
if (isDown) {
|
|
42
|
+
moveSize = offsetClientTop + moveRange;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
moveSize = (trRect.height - offsetClientTop) + Math.abs(moveRange);
|
|
46
|
+
}
|
|
33
47
|
if (scrollYLoad) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
const _rowIndex = $xeTable.getVTRowIndex(row);
|
|
49
|
+
const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
|
|
50
|
+
if (!isCustomCellHeight && showOverflow) {
|
|
51
|
+
if (isDown) {
|
|
52
|
+
rangeRows = afterFullData.slice(_rowIndex, _rowIndex + Math.ceil(moveSize / defaultRowHeight));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
rangeRows = afterFullData.slice(_rowIndex - Math.floor(moveSize / defaultRowHeight), _rowIndex + 1);
|
|
56
|
+
}
|
|
43
57
|
}
|
|
44
58
|
else {
|
|
45
|
-
|
|
59
|
+
if (isDown) {
|
|
60
|
+
for (let i = _rowIndex; i < afterFullData.length; i++) {
|
|
61
|
+
const item = afterFullData[i];
|
|
62
|
+
const rowid = $xeTable.getRowid(item);
|
|
63
|
+
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
64
|
+
countHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
|
|
65
|
+
rangeRows.push(item);
|
|
66
|
+
if (countHeight > moveSize) {
|
|
67
|
+
return rangeRows;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
for (let len = _rowIndex; len >= 0; len--) {
|
|
73
|
+
const item = afterFullData[len];
|
|
74
|
+
const rowid = $xeTable.getRowid(item);
|
|
75
|
+
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
76
|
+
countHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
|
|
77
|
+
rangeRows.push(item);
|
|
78
|
+
if (countHeight > moveSize) {
|
|
79
|
+
return rangeRows;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
46
83
|
}
|
|
47
84
|
}
|
|
48
85
|
else {
|
|
49
|
-
if (isDown) {
|
|
50
|
-
moveSize = evnt.clientY - trRect.y;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
moveSize = trRect.y - evnt.clientY + trRect.height;
|
|
54
|
-
}
|
|
55
86
|
const siblingProp = isDown ? 'next' : 'previous';
|
|
56
87
|
while (targetTrElem && countHeight < moveSize) {
|
|
57
88
|
const rowNodeRest = $xeTable.getRowNode(targetTrElem);
|
|
@@ -217,15 +248,27 @@ export default {
|
|
|
217
248
|
},
|
|
218
249
|
handleCheckboxRangeEvent(evnt, params) {
|
|
219
250
|
const $xeTable = this;
|
|
251
|
+
const internalData = $xeTable;
|
|
252
|
+
const { elemStore } = internalData;
|
|
253
|
+
const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
|
|
254
|
+
const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
|
|
255
|
+
const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
|
|
220
256
|
const { column, cell } = params;
|
|
221
257
|
if (column.type === 'checkbox') {
|
|
222
|
-
|
|
258
|
+
let bodyWrapperElem = bodyScrollElem;
|
|
259
|
+
if (leftScrollElem && column.fixed === 'left') {
|
|
260
|
+
bodyWrapperElem = leftScrollElem;
|
|
261
|
+
}
|
|
262
|
+
else if (rightScrollElem && column.fixed === 'right') {
|
|
263
|
+
bodyWrapperElem = rightScrollElem;
|
|
264
|
+
}
|
|
265
|
+
if (!bodyWrapperElem) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
const el = $xeTable.$refs.refElem;
|
|
223
269
|
const disX = evnt.clientX;
|
|
224
270
|
const disY = evnt.clientY;
|
|
225
|
-
const bodyWrapperElem = elemStore[`${column.fixed || 'main'}-body-wrapper`] || elemStore['main-body-wrapper'];
|
|
226
271
|
const checkboxRangeElem = bodyWrapperElem.querySelector('.vxe-table--checkbox-range');
|
|
227
|
-
const domMousemove = document.onmousemove;
|
|
228
|
-
const domMouseup = document.onmouseup;
|
|
229
272
|
const trElem = cell.parentNode;
|
|
230
273
|
const selectRecords = this.getCheckboxRecords();
|
|
231
274
|
let lastRangeRows = [];
|
|
@@ -331,7 +374,7 @@ export default {
|
|
|
331
374
|
}
|
|
332
375
|
}, 50);
|
|
333
376
|
};
|
|
334
|
-
addClass(
|
|
377
|
+
addClass(el, 'drag--range');
|
|
335
378
|
document.onmousemove = evnt => {
|
|
336
379
|
evnt.preventDefault();
|
|
337
380
|
evnt.stopPropagation();
|
|
@@ -359,10 +402,10 @@ export default {
|
|
|
359
402
|
};
|
|
360
403
|
document.onmouseup = (evnt) => {
|
|
361
404
|
stopMouseScroll();
|
|
362
|
-
removeClass(
|
|
405
|
+
removeClass(el, 'drag--range');
|
|
363
406
|
checkboxRangeElem.removeAttribute('style');
|
|
364
|
-
document.onmousemove =
|
|
365
|
-
document.onmouseup =
|
|
407
|
+
document.onmousemove = null;
|
|
408
|
+
document.onmouseup = null;
|
|
366
409
|
triggerEvent('end', evnt);
|
|
367
410
|
};
|
|
368
411
|
triggerEvent('start', evnt);
|
|
@@ -57,6 +57,8 @@ export default {
|
|
|
57
57
|
* 快捷菜单事件处理
|
|
58
58
|
*/
|
|
59
59
|
handleGlobalContextmenuEvent(evnt) {
|
|
60
|
+
const $xeTable = this;
|
|
61
|
+
const internalData = $xeTable;
|
|
60
62
|
const { $refs, tId, editStore, menuConfig, contextMenu, ctxMenuStore, ctxMenuOpts, mouseConfig, mouseOpts } = this;
|
|
61
63
|
const { selected } = editStore;
|
|
62
64
|
const layoutList = ['header', 'body', 'footer'];
|
|
@@ -65,7 +67,7 @@ export default {
|
|
|
65
67
|
evnt.preventDefault();
|
|
66
68
|
return;
|
|
67
69
|
}
|
|
68
|
-
if (
|
|
70
|
+
if (internalData._keyCtx) {
|
|
69
71
|
const type = 'body';
|
|
70
72
|
const params = { type, $grid: this.$xegrid, $table: this, keyboard: true, columns: this.visibleColumn.slice(0), $event: evnt };
|
|
71
73
|
// 如果开启单元格区域
|