vxe-table 3.13.5 → 3.13.6
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 +2 -1
- 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/id-ID.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 +2 -1
- 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 +2 -1
- 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/export/export-panel.js +7 -4
- package/es/table/module/export/mixin.js +2 -2
- package/es/table/src/methods.js +247 -215
- package/es/table/style.css +1 -1
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +1 -1
- 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 +296 -271
- 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 +2 -1
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +2 -1
- 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/id-ID.js +2 -1
- package/lib/locale/lang/id-ID.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 +2 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +2 -1
- 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 +2 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +2 -1
- 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/export/export-panel.js +7 -4
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +2 -2
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/src/methods.js +283 -262
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/style/style.css +1 -1
- package/lib/table/style/style.min.css +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-table/style/style.css +1 -1
- 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 +2 -1
- 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/id-ID.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 +2 -1
- 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 +2 -1
- 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/export/export-panel.ts +7 -4
- package/packages/table/module/export/mixin.ts +2 -2
- package/packages/table/src/methods.ts +264 -216
- package/styles/components/table.scss +1 -1
- /package/es/{iconfont.1740038065641.ttf → iconfont.1740103990490.ttf} +0 -0
- /package/es/{iconfont.1740038065641.woff → iconfont.1740103990490.woff} +0 -0
- /package/es/{iconfont.1740038065641.woff2 → iconfont.1740103990490.woff2} +0 -0
- /package/lib/{iconfont.1740038065641.ttf → iconfont.1740103990490.ttf} +0 -0
- /package/lib/{iconfont.1740038065641.woff → iconfont.1740103990490.woff} +0 -0
- /package/lib/{iconfont.1740038065641.woff2 → iconfont.1740103990490.woff2} +0 -0
|
@@ -1030,7 +1030,7 @@ function handleExportAndPrint($xeTable, options, isPrint) {
|
|
|
1030
1030
|
isMerge: hasMerge,
|
|
1031
1031
|
useStyle: true,
|
|
1032
1032
|
current: 'current',
|
|
1033
|
-
modes: ['current', 'selected'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : [])
|
|
1033
|
+
modes: ['current', 'selected', 'empty'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : [])
|
|
1034
1034
|
}, options);
|
|
1035
1035
|
const types = defOpts.types || XEUtils.keys(exportOpts._typeMaps);
|
|
1036
1036
|
const modes = defOpts.modes || [];
|
|
@@ -1206,7 +1206,7 @@ export default {
|
|
|
1206
1206
|
isMerge: hasMerge,
|
|
1207
1207
|
useStyle: true,
|
|
1208
1208
|
current: 'current',
|
|
1209
|
-
modes: ['current', 'selected'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []),
|
|
1209
|
+
modes: ['current', 'selected', 'empty'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []),
|
|
1210
1210
|
download: true,
|
|
1211
1211
|
type: 'csv'
|
|
1212
1212
|
// filename: '',
|
package/es/table/src/methods.js
CHANGED
|
@@ -38,8 +38,9 @@ const setCustomStorageMap = (id, data) => {
|
|
|
38
38
|
maps._v = version;
|
|
39
39
|
localStorage.setItem(customStorageKey, XEUtils.toJSONString(maps));
|
|
40
40
|
};
|
|
41
|
-
const getRecoverRowMaps = (
|
|
42
|
-
const
|
|
41
|
+
const getRecoverRowMaps = ($xeTable, keyMaps) => {
|
|
42
|
+
const internalData = $xeTable;
|
|
43
|
+
const { fullAllDataRowIdData } = internalData;
|
|
43
44
|
const restKeys = {};
|
|
44
45
|
XEUtils.each(keyMaps, (row, rowid) => {
|
|
45
46
|
if (fullAllDataRowIdData[rowid]) {
|
|
@@ -48,8 +49,9 @@ const getRecoverRowMaps = (_vm, keyMaps) => {
|
|
|
48
49
|
});
|
|
49
50
|
return restKeys;
|
|
50
51
|
};
|
|
51
|
-
function handleReserveRow(
|
|
52
|
-
const
|
|
52
|
+
function handleReserveRow($xeTable, reserveRowMap) {
|
|
53
|
+
const internalData = $xeTable;
|
|
54
|
+
const { fullDataRowIdData } = internalData;
|
|
53
55
|
const reserveList = [];
|
|
54
56
|
XEUtils.each(reserveRowMap, (item, rowid) => {
|
|
55
57
|
if (fullDataRowIdData[rowid] && reserveList.indexOf(fullDataRowIdData[rowid].row) === -1) {
|
|
@@ -716,6 +718,215 @@ function updateStyle($xeTable) {
|
|
|
716
718
|
}
|
|
717
719
|
return $xeTable.$nextTick();
|
|
718
720
|
}
|
|
721
|
+
function handleRadioReserveRow($xeTable, row) {
|
|
722
|
+
const internalData = $xeTable;
|
|
723
|
+
const radioOpts = $xeTable.computeRadioOpts;
|
|
724
|
+
if (radioOpts.reserve) {
|
|
725
|
+
internalData.radioReserveRow = row;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
function handleCheckboxReserveRow($xeTable, row, checked) {
|
|
729
|
+
const internalData = $xeTable;
|
|
730
|
+
const { checkboxReserveRowMap } = internalData;
|
|
731
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
732
|
+
if (checkboxOpts.reserve) {
|
|
733
|
+
const rowid = getRowid($xeTable, row);
|
|
734
|
+
if (checked) {
|
|
735
|
+
checkboxReserveRowMap[rowid] = row;
|
|
736
|
+
}
|
|
737
|
+
else if (checkboxReserveRowMap[rowid]) {
|
|
738
|
+
delete checkboxReserveRowMap[rowid];
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
function handleCheckedRadioRow($xeTable, row, isForce) {
|
|
743
|
+
const reactData = $xeTable;
|
|
744
|
+
const radioOpts = $xeTable.computeRadioOpts;
|
|
745
|
+
const { checkMethod } = radioOpts;
|
|
746
|
+
if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
|
|
747
|
+
reactData.selectRadioRow = row;
|
|
748
|
+
handleRadioReserveRow($xeTable, row);
|
|
749
|
+
}
|
|
750
|
+
return $xeTable.$nextTick();
|
|
751
|
+
}
|
|
752
|
+
function handleCheckedCheckboxRow($xeTable, rows, value, isForce) {
|
|
753
|
+
if (rows && !XEUtils.isArray(rows)) {
|
|
754
|
+
rows = [rows];
|
|
755
|
+
}
|
|
756
|
+
$xeTable.handleBatchSelectRows(rows, !!value, isForce);
|
|
757
|
+
$xeTable.checkSelectionStatus();
|
|
758
|
+
return $xeTable.$nextTick();
|
|
759
|
+
}
|
|
760
|
+
function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
|
|
761
|
+
const props = $xeTable;
|
|
762
|
+
const reactData = $xeTable;
|
|
763
|
+
const internalData = $xeTable;
|
|
764
|
+
const { treeConfig } = props;
|
|
765
|
+
const { selectCheckboxMaps } = reactData;
|
|
766
|
+
const { afterFullData, checkboxReserveRowMap } = internalData;
|
|
767
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
768
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
769
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
770
|
+
const { checkField, reserve, checkMethod } = checkboxOpts;
|
|
771
|
+
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
772
|
+
const selectRowMaps = {};
|
|
773
|
+
/**
|
|
774
|
+
* 绑定属性方式(高性能,有污染)
|
|
775
|
+
* 必须在行数据存在对应的属性,否则将不响应
|
|
776
|
+
*/
|
|
777
|
+
if (checkField) {
|
|
778
|
+
const checkValFn = (row) => {
|
|
779
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
780
|
+
if (checked) {
|
|
781
|
+
selectRowMaps[getRowid($xeTable, row)] = row;
|
|
782
|
+
}
|
|
783
|
+
XEUtils.set(row, checkField, checked);
|
|
784
|
+
}
|
|
785
|
+
if (treeConfig && indeterminateField) {
|
|
786
|
+
XEUtils.set(row, indeterminateField, false);
|
|
787
|
+
}
|
|
788
|
+
};
|
|
789
|
+
// 如果存在选中方法
|
|
790
|
+
// 如果方法成立,则更新值,否则忽略该数据
|
|
791
|
+
if (treeConfig) {
|
|
792
|
+
XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField });
|
|
793
|
+
}
|
|
794
|
+
else {
|
|
795
|
+
afterFullData.forEach(checkValFn);
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
else {
|
|
799
|
+
/**
|
|
800
|
+
* 默认方式(低性能,无污染)
|
|
801
|
+
* 无需任何属性,直接绑定
|
|
802
|
+
*/
|
|
803
|
+
if (treeConfig) {
|
|
804
|
+
if (checked) {
|
|
805
|
+
/**
|
|
806
|
+
* 如果是树勾选
|
|
807
|
+
* 如果方法成立,则添加到临时集合中
|
|
808
|
+
*/
|
|
809
|
+
XEUtils.eachTree(afterFullData, (row) => {
|
|
810
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
811
|
+
selectRowMaps[getRowid($xeTable, row)] = row;
|
|
812
|
+
}
|
|
813
|
+
}, { children: childrenField });
|
|
814
|
+
}
|
|
815
|
+
else {
|
|
816
|
+
/**
|
|
817
|
+
* 如果是树取消
|
|
818
|
+
* 如果方法成立,则不添加到临时集合中
|
|
819
|
+
*/
|
|
820
|
+
if (!isForce && checkMethod) {
|
|
821
|
+
XEUtils.eachTree(afterFullData, (row) => {
|
|
822
|
+
const rowid = getRowid($xeTable, row);
|
|
823
|
+
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
824
|
+
selectRowMaps[rowid] = row;
|
|
825
|
+
}
|
|
826
|
+
}, { children: childrenField });
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
else {
|
|
831
|
+
if (checked) {
|
|
832
|
+
/**
|
|
833
|
+
* 如果是行勾选
|
|
834
|
+
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
835
|
+
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
836
|
+
*/
|
|
837
|
+
if (!isForce && checkMethod) {
|
|
838
|
+
afterFullData.forEach((row) => {
|
|
839
|
+
const rowid = getRowid($xeTable, row);
|
|
840
|
+
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
841
|
+
selectRowMaps[rowid] = row;
|
|
842
|
+
}
|
|
843
|
+
});
|
|
844
|
+
}
|
|
845
|
+
else {
|
|
846
|
+
afterFullData.forEach(row => {
|
|
847
|
+
selectRowMaps[getRowid($xeTable, row)] = row;
|
|
848
|
+
});
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
else {
|
|
852
|
+
/**
|
|
853
|
+
* 如果是行取消
|
|
854
|
+
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
855
|
+
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
856
|
+
*/
|
|
857
|
+
if (!isForce && checkMethod) {
|
|
858
|
+
afterFullData.forEach((row) => {
|
|
859
|
+
const rowid = getRowid($xeTable, row);
|
|
860
|
+
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
861
|
+
selectRowMaps[rowid] = row;
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
if (reserve) {
|
|
869
|
+
if (checked) {
|
|
870
|
+
XEUtils.each(selectRowMaps, (row, rowid) => {
|
|
871
|
+
checkboxReserveRowMap[rowid] = row;
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
else {
|
|
875
|
+
afterFullData.forEach((row) => handleCheckboxReserveRow($xeTable, row, false));
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
|
|
879
|
+
reactData.isAllSelected = checked;
|
|
880
|
+
reactData.isIndeterminate = false;
|
|
881
|
+
reactData.treeIndeterminateMaps = {};
|
|
882
|
+
internalData.treeIndeterminateRowMaps = {};
|
|
883
|
+
$xeTable.checkSelectionStatus();
|
|
884
|
+
return $xeTable.$nextTick();
|
|
885
|
+
}
|
|
886
|
+
// 还原展开、选中等相关状态
|
|
887
|
+
function handleReserveStatus($xeTable) {
|
|
888
|
+
const props = $xeTable;
|
|
889
|
+
const reactData = $xeTable;
|
|
890
|
+
const internalData = $xeTable;
|
|
891
|
+
const { treeConfig } = props;
|
|
892
|
+
const { expandColumn, currentRow, selectCheckboxMaps, selectRadioRow, rowExpandedMaps, treeExpandedMaps } = reactData;
|
|
893
|
+
const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData;
|
|
894
|
+
const expandOpts = $xeTable.computeExpandOpts;
|
|
895
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
896
|
+
const radioOpts = $xeTable.computeRadioOpts;
|
|
897
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
898
|
+
// 单选框
|
|
899
|
+
if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
|
|
900
|
+
reactData.selectRadioRow = null; // 刷新单选行状态
|
|
901
|
+
}
|
|
902
|
+
// 还原保留选中状态
|
|
903
|
+
if (radioOpts.reserve && radioReserveRow) {
|
|
904
|
+
const rowid = getRowid($xeTable, radioReserveRow);
|
|
905
|
+
if (fullDataRowIdData[rowid]) {
|
|
906
|
+
handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
// 复选框
|
|
910
|
+
reactData.selectCheckboxMaps = getRecoverRowMaps($xeTable, selectCheckboxMaps); // 刷新多选行状态
|
|
911
|
+
// 还原保留选中状态
|
|
912
|
+
if (checkboxOpts.reserve) {
|
|
913
|
+
handleCheckedCheckboxRow($xeTable, handleReserveRow($xeTable, internalData.checkboxReserveRowMap), true, true);
|
|
914
|
+
}
|
|
915
|
+
if (currentRow && !fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
|
|
916
|
+
reactData.currentRow = null; // 刷新当前行状态
|
|
917
|
+
}
|
|
918
|
+
// 行展开
|
|
919
|
+
reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps($xeTable, rowExpandedMaps) : {}; // 刷新行展开状态
|
|
920
|
+
// 还原保留状态
|
|
921
|
+
if (expandColumn && expandOpts.reserve) {
|
|
922
|
+
$xeTable.setRowExpand(handleReserveRow($xeTable, internalData.rowExpandedReserveRowMap), true);
|
|
923
|
+
}
|
|
924
|
+
// 树展开
|
|
925
|
+
reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps($xeTable, treeExpandedMaps) : {}; // 刷新树展开状态
|
|
926
|
+
if (treeConfig && treeOpts.reserve) {
|
|
927
|
+
$xeTable.setTreeExpand(handleReserveRow($xeTable, internalData.treeExpandedReserveRowMap), true);
|
|
928
|
+
}
|
|
929
|
+
}
|
|
719
930
|
function calcVarRowHeightConfig($xeTable, sizeKey, sizeEl) {
|
|
720
931
|
const reactData = $xeTable;
|
|
721
932
|
const { rowHeightStore } = reactData;
|
|
@@ -2162,7 +2373,7 @@ const Methods = {
|
|
|
2162
2373
|
}
|
|
2163
2374
|
}
|
|
2164
2375
|
}
|
|
2165
|
-
|
|
2376
|
+
handleReserveStatus($xeTable);
|
|
2166
2377
|
this.checkSelectionStatus();
|
|
2167
2378
|
return new Promise(resolve => {
|
|
2168
2379
|
this.$nextTick()
|
|
@@ -4987,10 +5198,11 @@ const Methods = {
|
|
|
4987
5198
|
* 处理默认勾选
|
|
4988
5199
|
*/
|
|
4989
5200
|
handleDefaultSelectionChecked() {
|
|
5201
|
+
const $xeTable = this;
|
|
4990
5202
|
const { fullDataRowIdData, checkboxOpts } = this;
|
|
4991
5203
|
const { checkAll, checkRowKeys } = checkboxOpts;
|
|
4992
5204
|
if (checkAll) {
|
|
4993
|
-
|
|
5205
|
+
handleCheckedAllCheckboxRow($xeTable, true, true);
|
|
4994
5206
|
}
|
|
4995
5207
|
else if (checkRowKeys) {
|
|
4996
5208
|
const defSelection = [];
|
|
@@ -4999,17 +5211,12 @@ const Methods = {
|
|
|
4999
5211
|
defSelection.push(fullDataRowIdData[rowid].row);
|
|
5000
5212
|
}
|
|
5001
5213
|
});
|
|
5002
|
-
|
|
5214
|
+
handleCheckedCheckboxRow($xeTable, defSelection, true, true);
|
|
5003
5215
|
}
|
|
5004
5216
|
},
|
|
5005
5217
|
handleCheckedCheckboxRow(rows, value, isForce) {
|
|
5006
5218
|
const $xeTable = this;
|
|
5007
|
-
|
|
5008
|
-
rows = [rows];
|
|
5009
|
-
}
|
|
5010
|
-
$xeTable.handleBatchSelectRows(rows, !!value, isForce);
|
|
5011
|
-
$xeTable.checkSelectionStatus();
|
|
5012
|
-
return this.$nextTick();
|
|
5219
|
+
return handleCheckedCheckboxRow($xeTable, rows, value, isForce);
|
|
5013
5220
|
},
|
|
5014
5221
|
/**
|
|
5015
5222
|
* 用于多选行,设置行为选中状态,第二个参数为选中与否
|
|
@@ -5021,7 +5228,7 @@ const Methods = {
|
|
|
5021
5228
|
if (rows && !XEUtils.isArray(rows)) {
|
|
5022
5229
|
rows = [rows];
|
|
5023
5230
|
}
|
|
5024
|
-
return $xeTable
|
|
5231
|
+
return handleCheckedCheckboxRow($xeTable, rows, checked, true);
|
|
5025
5232
|
},
|
|
5026
5233
|
setCheckboxRowKey(keys, checked) {
|
|
5027
5234
|
const $xeTable = this;
|
|
@@ -5037,7 +5244,7 @@ const Methods = {
|
|
|
5037
5244
|
rows.push(rowRest.row);
|
|
5038
5245
|
}
|
|
5039
5246
|
});
|
|
5040
|
-
return $xeTable
|
|
5247
|
+
return handleCheckedCheckboxRow($xeTable, rows, checked, true);
|
|
5041
5248
|
},
|
|
5042
5249
|
isCheckedByCheckboxRow(row) {
|
|
5043
5250
|
const $xeTable = this;
|
|
@@ -5106,7 +5313,7 @@ const Methods = {
|
|
|
5106
5313
|
if (indeterminateField) {
|
|
5107
5314
|
XEUtils.set(row, indeterminateField, false);
|
|
5108
5315
|
}
|
|
5109
|
-
$xeTable
|
|
5316
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
5110
5317
|
}
|
|
5111
5318
|
}, { children: transform ? mapChildrenField : childrenField });
|
|
5112
5319
|
reactData.selectCheckboxMaps = selectRowMaps;
|
|
@@ -5117,7 +5324,7 @@ const Methods = {
|
|
|
5117
5324
|
rows.forEach(row => {
|
|
5118
5325
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5119
5326
|
XEUtils.set(row, checkField, checked);
|
|
5120
|
-
$xeTable
|
|
5327
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
5121
5328
|
}
|
|
5122
5329
|
});
|
|
5123
5330
|
}
|
|
@@ -5138,7 +5345,7 @@ const Methods = {
|
|
|
5138
5345
|
delete selectRowMaps[rowid];
|
|
5139
5346
|
}
|
|
5140
5347
|
}
|
|
5141
|
-
$xeTable
|
|
5348
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
5142
5349
|
}
|
|
5143
5350
|
}, { children: transform ? mapChildrenField : childrenField });
|
|
5144
5351
|
reactData.selectCheckboxMaps = selectRowMaps;
|
|
@@ -5158,7 +5365,7 @@ const Methods = {
|
|
|
5158
5365
|
delete selectRowMaps[rowid];
|
|
5159
5366
|
}
|
|
5160
5367
|
}
|
|
5161
|
-
$xeTable
|
|
5368
|
+
handleCheckboxReserveRow($xeTable, row, checked);
|
|
5162
5369
|
}
|
|
5163
5370
|
});
|
|
5164
5371
|
reactData.selectCheckboxMaps = selectRowMaps;
|
|
@@ -5194,6 +5401,7 @@ const Methods = {
|
|
|
5194
5401
|
}
|
|
5195
5402
|
},
|
|
5196
5403
|
triggerCheckRowEvent(evnt, params, checked) {
|
|
5404
|
+
const $xeTable = this;
|
|
5197
5405
|
const { checkboxOpts, afterFullData } = this;
|
|
5198
5406
|
const { checkMethod, trigger } = checkboxOpts;
|
|
5199
5407
|
const { row } = params;
|
|
@@ -5210,7 +5418,7 @@ const Methods = {
|
|
|
5210
5418
|
if (_rowIndex !== _firstRowIndex) {
|
|
5211
5419
|
this.setAllCheckboxRow(false);
|
|
5212
5420
|
const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
|
|
5213
|
-
|
|
5421
|
+
handleCheckedCheckboxRow($xeTable, rangeRows, true, false);
|
|
5214
5422
|
this.emitEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
|
|
5215
5423
|
return;
|
|
5216
5424
|
}
|
|
@@ -5239,147 +5447,13 @@ const Methods = {
|
|
|
5239
5447
|
$xeTable.checkSelectionStatus();
|
|
5240
5448
|
return $xeTable.$nextTick();
|
|
5241
5449
|
},
|
|
5242
|
-
handleCheckedAllCheckboxRow(checked, isForce) {
|
|
5243
|
-
const $xeTable = this;
|
|
5244
|
-
const reactData = $xeTable;
|
|
5245
|
-
const { afterFullData, treeConfig, treeOpts, selectCheckboxMaps, checkboxReserveRowMap, checkboxOpts, afterFullRowMaps } = this;
|
|
5246
|
-
const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts;
|
|
5247
|
-
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
5248
|
-
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
5249
|
-
const selectRowMaps = {};
|
|
5250
|
-
// 疑惑!
|
|
5251
|
-
if (!treeConfig) {
|
|
5252
|
-
XEUtils.each(selectCheckboxMaps, (row, rowid) => {
|
|
5253
|
-
if (!afterFullRowMaps[rowid]) {
|
|
5254
|
-
selectRowMaps[rowid] = row;
|
|
5255
|
-
}
|
|
5256
|
-
});
|
|
5257
|
-
}
|
|
5258
|
-
// 疑惑!
|
|
5259
|
-
if (checkStrictly) {
|
|
5260
|
-
this.isAllSelected = checked;
|
|
5261
|
-
}
|
|
5262
|
-
else {
|
|
5263
|
-
/**
|
|
5264
|
-
* 绑定属性方式(高性能,有污染)
|
|
5265
|
-
* 必须在行数据存在对应的属性,否则将不响应
|
|
5266
|
-
*/
|
|
5267
|
-
if (checkField) {
|
|
5268
|
-
const checkValFn = (row) => {
|
|
5269
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5270
|
-
if (checked) {
|
|
5271
|
-
selectRowMaps[getRowid(this, row)] = row;
|
|
5272
|
-
}
|
|
5273
|
-
XEUtils.set(row, checkField, checked);
|
|
5274
|
-
}
|
|
5275
|
-
if (treeConfig && indeterminateField) {
|
|
5276
|
-
XEUtils.set(row, indeterminateField, false);
|
|
5277
|
-
}
|
|
5278
|
-
};
|
|
5279
|
-
// 如果存在选中方法
|
|
5280
|
-
// 如果方法成立,则更新值,否则忽略该数据
|
|
5281
|
-
if (treeConfig) {
|
|
5282
|
-
XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField });
|
|
5283
|
-
}
|
|
5284
|
-
else {
|
|
5285
|
-
afterFullData.forEach(checkValFn);
|
|
5286
|
-
}
|
|
5287
|
-
}
|
|
5288
|
-
else {
|
|
5289
|
-
/**
|
|
5290
|
-
* 默认方式(低性能,无污染)
|
|
5291
|
-
* 无需任何属性,直接绑定
|
|
5292
|
-
*/
|
|
5293
|
-
if (treeConfig) {
|
|
5294
|
-
if (checked) {
|
|
5295
|
-
/**
|
|
5296
|
-
* 如果是树勾选
|
|
5297
|
-
* 如果方法成立,则添加到临时集合中
|
|
5298
|
-
*/
|
|
5299
|
-
XEUtils.eachTree(afterFullData, (row) => {
|
|
5300
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
5301
|
-
selectRowMaps[getRowid(this, row)] = row;
|
|
5302
|
-
}
|
|
5303
|
-
}, { children: childrenField });
|
|
5304
|
-
}
|
|
5305
|
-
else {
|
|
5306
|
-
/**
|
|
5307
|
-
* 如果是树取消
|
|
5308
|
-
* 如果方法成立,则不添加到临时集合中
|
|
5309
|
-
*/
|
|
5310
|
-
if (!isForce && checkMethod) {
|
|
5311
|
-
XEUtils.eachTree(afterFullData, (row) => {
|
|
5312
|
-
const rowid = getRowid(this, row);
|
|
5313
|
-
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
5314
|
-
selectRowMaps[rowid] = row;
|
|
5315
|
-
}
|
|
5316
|
-
}, { children: childrenField });
|
|
5317
|
-
}
|
|
5318
|
-
}
|
|
5319
|
-
}
|
|
5320
|
-
else {
|
|
5321
|
-
if (checked) {
|
|
5322
|
-
/**
|
|
5323
|
-
* 如果是行勾选
|
|
5324
|
-
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
5325
|
-
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
5326
|
-
*/
|
|
5327
|
-
if (!isForce && checkMethod) {
|
|
5328
|
-
afterFullData.forEach((row) => {
|
|
5329
|
-
const rowid = getRowid(this, row);
|
|
5330
|
-
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
|
|
5331
|
-
selectRowMaps[rowid] = row;
|
|
5332
|
-
}
|
|
5333
|
-
});
|
|
5334
|
-
}
|
|
5335
|
-
else {
|
|
5336
|
-
afterFullData.forEach((row) => {
|
|
5337
|
-
selectRowMaps[getRowid(this, row)] = row;
|
|
5338
|
-
});
|
|
5339
|
-
}
|
|
5340
|
-
}
|
|
5341
|
-
else {
|
|
5342
|
-
/**
|
|
5343
|
-
* 如果是行取消
|
|
5344
|
-
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
5345
|
-
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
5346
|
-
*/
|
|
5347
|
-
if (!isForce && checkMethod) {
|
|
5348
|
-
afterFullData.forEach((row) => {
|
|
5349
|
-
const rowid = getRowid(this, row);
|
|
5350
|
-
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
|
|
5351
|
-
selectRowMaps[rowid] = row;
|
|
5352
|
-
}
|
|
5353
|
-
});
|
|
5354
|
-
}
|
|
5355
|
-
}
|
|
5356
|
-
}
|
|
5357
|
-
}
|
|
5358
|
-
if (reserve) {
|
|
5359
|
-
if (checked) {
|
|
5360
|
-
XEUtils.each(selectRowMaps, (row, rowid) => {
|
|
5361
|
-
checkboxReserveRowMap[rowid] = row;
|
|
5362
|
-
});
|
|
5363
|
-
}
|
|
5364
|
-
else {
|
|
5365
|
-
afterFullData.forEach((row) => this.handleCheckboxReserveRow(row, false));
|
|
5366
|
-
}
|
|
5367
|
-
}
|
|
5368
|
-
this.selectCheckboxMaps = checkField ? {} : selectRowMaps;
|
|
5369
|
-
}
|
|
5370
|
-
reactData.isAllSelected = checked;
|
|
5371
|
-
reactData.isIndeterminate = false;
|
|
5372
|
-
this.treeIndeterminateMaps = {};
|
|
5373
|
-
this.treeIndeterminateRowMaps = {};
|
|
5374
|
-
this.checkSelectionStatus();
|
|
5375
|
-
return this.$nextTick();
|
|
5376
|
-
},
|
|
5377
5450
|
/**
|
|
5378
5451
|
* 用于多选行,设置所有行的选中状态
|
|
5379
5452
|
* @param {Boolean} value 是否选中
|
|
5380
5453
|
*/
|
|
5381
5454
|
setAllCheckboxRow(value) {
|
|
5382
|
-
|
|
5455
|
+
const $xeTable = this;
|
|
5456
|
+
return handleCheckedAllCheckboxRow($xeTable, value, true);
|
|
5383
5457
|
},
|
|
5384
5458
|
updateCheckboxStatus() {
|
|
5385
5459
|
const $xeTable = this;
|
|
@@ -5541,42 +5615,6 @@ const Methods = {
|
|
|
5541
5615
|
$xeTable.updateCheckboxStatus();
|
|
5542
5616
|
$xeTable.updateAllCheckboxStatus();
|
|
5543
5617
|
},
|
|
5544
|
-
// 还原展开、选中等相关状态
|
|
5545
|
-
handleReserveStatus() {
|
|
5546
|
-
const $xeTable = this;
|
|
5547
|
-
const { expandColumn, treeOpts, treeConfig, fullDataRowIdData, fullAllDataRowIdData, currentRow, selectRadioRow, radioReserveRow, radioOpts, checkboxOpts, selectCheckboxMaps, rowExpandedMaps, treeExpandedMaps, expandOpts } = this;
|
|
5548
|
-
// 单选框
|
|
5549
|
-
if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
|
|
5550
|
-
this.selectRadioRow = null; // 刷新单选行状态
|
|
5551
|
-
}
|
|
5552
|
-
// 还原保留选中状态
|
|
5553
|
-
if (radioOpts.reserve && radioReserveRow) {
|
|
5554
|
-
const rowid = getRowid(this, radioReserveRow);
|
|
5555
|
-
if (fullDataRowIdData[rowid]) {
|
|
5556
|
-
this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
|
|
5557
|
-
}
|
|
5558
|
-
}
|
|
5559
|
-
// 复选框
|
|
5560
|
-
this.selectCheckboxMaps = getRecoverRowMaps(this, selectCheckboxMaps); // 刷新多选行状态
|
|
5561
|
-
// 还原保留选中状态
|
|
5562
|
-
if (checkboxOpts.reserve) {
|
|
5563
|
-
this.handleCheckedCheckboxRow(handleReserveRow(this, this.checkboxReserveRowMap), true, true);
|
|
5564
|
-
}
|
|
5565
|
-
if (currentRow && !this.fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
|
|
5566
|
-
this.currentRow = null; // 刷新当前行状态
|
|
5567
|
-
}
|
|
5568
|
-
// 行展开
|
|
5569
|
-
this.rowExpandedMaps = expandColumn ? getRecoverRowMaps(this, rowExpandedMaps) : []; // 刷新行展开状态
|
|
5570
|
-
// 还原保留状态
|
|
5571
|
-
if (expandColumn && expandOpts.reserve) {
|
|
5572
|
-
this.setRowExpand(handleReserveRow(this, this.rowExpandedReserveRowMap), true);
|
|
5573
|
-
}
|
|
5574
|
-
// 树展开
|
|
5575
|
-
this.treeExpandedMaps = treeConfig ? getRecoverRowMaps(this, treeExpandedMaps) : []; // 刷新树展开状态
|
|
5576
|
-
if (treeConfig && treeOpts.reserve) {
|
|
5577
|
-
this.setTreeExpand(handleReserveRow(this, this.treeExpandedReserveRowMap), true);
|
|
5578
|
-
}
|
|
5579
|
-
},
|
|
5580
5618
|
/**
|
|
5581
5619
|
* 获取单选框保留选中的行
|
|
5582
5620
|
*/
|
|
@@ -5611,12 +5649,6 @@ const Methods = {
|
|
|
5611
5649
|
this.radioReserveRow = null;
|
|
5612
5650
|
return this.$nextTick();
|
|
5613
5651
|
},
|
|
5614
|
-
handleRadioReserveRow(row) {
|
|
5615
|
-
const { radioOpts } = this;
|
|
5616
|
-
if (radioOpts.reserve) {
|
|
5617
|
-
this.radioReserveRow = row;
|
|
5618
|
-
}
|
|
5619
|
-
},
|
|
5620
5652
|
/**
|
|
5621
5653
|
* 获取复选框保留选中的行
|
|
5622
5654
|
*/
|
|
@@ -5670,15 +5702,22 @@ const Methods = {
|
|
|
5670
5702
|
}
|
|
5671
5703
|
},
|
|
5672
5704
|
handleCheckAllEvent(evnt, value) {
|
|
5673
|
-
this
|
|
5705
|
+
const $xeTable = this;
|
|
5706
|
+
handleCheckedAllCheckboxRow($xeTable, value);
|
|
5674
5707
|
if (evnt) {
|
|
5675
|
-
|
|
5708
|
+
$xeTable.dispatchEvent('checkbox-all', {
|
|
5709
|
+
records: $xeTable.getCheckboxRecords(),
|
|
5710
|
+
reserves: $xeTable.getCheckboxReserveRecords(),
|
|
5711
|
+
indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
|
|
5712
|
+
checked: value
|
|
5713
|
+
}, evnt);
|
|
5676
5714
|
}
|
|
5677
5715
|
},
|
|
5678
5716
|
/**
|
|
5679
5717
|
* 多选,选中所有事件
|
|
5680
5718
|
*/
|
|
5681
5719
|
triggerCheckAllEvent(evnt, value) {
|
|
5720
|
+
const $xeTable = this;
|
|
5682
5721
|
const { checkboxOpts } = this;
|
|
5683
5722
|
const { trigger } = checkboxOpts;
|
|
5684
5723
|
if (trigger === 'manual') {
|
|
@@ -5687,7 +5726,7 @@ const Methods = {
|
|
|
5687
5726
|
if (evnt) {
|
|
5688
5727
|
evnt.stopPropagation();
|
|
5689
5728
|
}
|
|
5690
|
-
|
|
5729
|
+
$xeTable.handleCheckAllEvent(evnt, value);
|
|
5691
5730
|
},
|
|
5692
5731
|
/**
|
|
5693
5732
|
* 多选,切换所有行的选中状态
|
|
@@ -5732,11 +5771,12 @@ const Methods = {
|
|
|
5732
5771
|
* 处理单选框默认勾选
|
|
5733
5772
|
*/
|
|
5734
5773
|
handleDefaultRadioChecked() {
|
|
5774
|
+
const $xeTable = this;
|
|
5735
5775
|
const { radioOpts, fullDataRowIdData } = this;
|
|
5736
5776
|
const { checkRowKey: rowid, reserve } = radioOpts;
|
|
5737
5777
|
if (rowid) {
|
|
5738
5778
|
if (fullDataRowIdData[rowid]) {
|
|
5739
|
-
|
|
5779
|
+
handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
|
|
5740
5780
|
}
|
|
5741
5781
|
if (reserve) {
|
|
5742
5782
|
const rowkey = getRowkey(this);
|
|
@@ -5748,6 +5788,7 @@ const Methods = {
|
|
|
5748
5788
|
* 单选,行选中事件
|
|
5749
5789
|
*/
|
|
5750
5790
|
triggerRadioRowEvent(evnt, params) {
|
|
5791
|
+
const $xeTable = this;
|
|
5751
5792
|
const { selectRadioRow: oldValue, radioOpts } = this;
|
|
5752
5793
|
const { row } = params;
|
|
5753
5794
|
const { trigger } = radioOpts;
|
|
@@ -5758,7 +5799,7 @@ const Methods = {
|
|
|
5758
5799
|
let newValue = row;
|
|
5759
5800
|
let isChange = oldValue !== newValue;
|
|
5760
5801
|
if (isChange) {
|
|
5761
|
-
|
|
5802
|
+
handleCheckedRadioRow($xeTable, newValue);
|
|
5762
5803
|
}
|
|
5763
5804
|
else if (!radioOpts.strict) {
|
|
5764
5805
|
isChange = oldValue === newValue;
|
|
@@ -5829,22 +5870,13 @@ const Methods = {
|
|
|
5829
5870
|
}
|
|
5830
5871
|
return false;
|
|
5831
5872
|
},
|
|
5832
|
-
handleCheckedRadioRow(row, isForce) {
|
|
5833
|
-
const { radioOpts } = this;
|
|
5834
|
-
const { checkMethod } = radioOpts;
|
|
5835
|
-
if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
|
|
5836
|
-
this.selectRadioRow = row;
|
|
5837
|
-
this.handleRadioReserveRow(row);
|
|
5838
|
-
}
|
|
5839
|
-
return this.$nextTick();
|
|
5840
|
-
},
|
|
5841
5873
|
/**
|
|
5842
5874
|
* 用于单选行,设置某一行为选中状态
|
|
5843
5875
|
* @param {Row} row 行对象
|
|
5844
5876
|
*/
|
|
5845
5877
|
setRadioRow(row) {
|
|
5846
5878
|
const $xeTable = this;
|
|
5847
|
-
return $xeTable
|
|
5879
|
+
return handleCheckedRadioRow($xeTable, row, true);
|
|
5848
5880
|
},
|
|
5849
5881
|
/**
|
|
5850
5882
|
* 用于单选行,设置某一行为选中状态
|
|
@@ -5856,7 +5888,7 @@ const Methods = {
|
|
|
5856
5888
|
const { fullAllDataRowIdData } = internalData;
|
|
5857
5889
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
5858
5890
|
if (rowRest) {
|
|
5859
|
-
return $xeTable
|
|
5891
|
+
return handleCheckedRadioRow($xeTable, rowRest.row, true);
|
|
5860
5892
|
}
|
|
5861
5893
|
return $xeTable.$nextTick();
|
|
5862
5894
|
},
|
|
@@ -7598,7 +7630,7 @@ const Methods = {
|
|
|
7598
7630
|
}
|
|
7599
7631
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
7600
7632
|
if (!checkStrictly && this.isCheckedByCheckboxRow(row)) {
|
|
7601
|
-
|
|
7633
|
+
handleCheckedCheckboxRow($xeTable, childRows, true);
|
|
7602
7634
|
}
|
|
7603
7635
|
return this.$nextTick().then(() => {
|
|
7604
7636
|
if (transform) {
|
package/es/table/style.css
CHANGED
|
@@ -2383,7 +2383,7 @@
|
|
|
2383
2383
|
background-color: var(--vxe-ui-layout-background-color);
|
|
2384
2384
|
}
|
|
2385
2385
|
.vxe-table--render-default .vxe-table--footer-wrapper {
|
|
2386
|
-
margin-top: -
|
|
2386
|
+
margin-top: calc(var(--vxe-ui-table-border-width) * -1);
|
|
2387
2387
|
background-color: var(--vxe-ui-table-footer-background-color);
|
|
2388
2388
|
}
|
|
2389
2389
|
.vxe-table--render-default .vxe-table--header,
|