vxe-table 3.18.0 → 3.18.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/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/edit/mixin.js +58 -20
- package/es/table/module/filter/mixin.js +12 -10
- package/es/table/module/menu/mixin.js +16 -9
- package/es/table/module/validator/mixin.js +4 -2
- package/es/table/src/column.js +2 -0
- package/es/table/src/columnInfo.js +1 -0
- package/es/table/src/footer.js +7 -5
- package/es/table/src/header.js +67 -28
- package/es/table/src/methods.js +577 -85
- package/es/table/src/props.js +23 -6
- package/es/table/src/store.js +8 -0
- package/es/table/src/table.js +67 -26
- package/es/table/src/util.js +70 -2
- package/es/table/style.css +11 -17
- 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 +11 -17
- 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 +1002 -200
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/edit/mixin.js +55 -16
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/filter/mixin.js +12 -10
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +20 -13
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/validator/mixin.js +4 -2
- package/lib/table/module/validator/mixin.min.js +1 -1
- package/lib/table/src/column.js +2 -0
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +1 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +7 -5
- package/lib/table/src/header.js +82 -25
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +647 -94
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +11 -3
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/store.js +15 -0
- package/lib/table/src/store.min.js +1 -0
- package/lib/table/src/table.js +74 -25
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +74 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +11 -17
- 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 +11 -17
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/table/module/edit/mixin.ts +59 -23
- package/packages/table/module/filter/mixin.ts +17 -13
- package/packages/table/module/menu/mixin.ts +16 -9
- package/packages/table/module/validator/mixin.ts +8 -4
- package/packages/table/src/column.ts +4 -2
- package/packages/table/src/columnInfo.ts +1 -0
- package/packages/table/src/footer.ts +11 -9
- package/packages/table/src/header.ts +76 -34
- package/packages/table/src/methods.ts +607 -90
- package/packages/table/src/props.ts +29 -12
- package/packages/table/src/store.ts +15 -0
- package/packages/table/src/table.ts +79 -24
- package/packages/table/src/util.ts +76 -2
- package/styles/components/table.scss +33 -55
- /package/es/{iconfont.1756083626568.ttf → iconfont.1756452257212.ttf} +0 -0
- /package/es/{iconfont.1756083626568.woff → iconfont.1756452257212.woff} +0 -0
- /package/es/{iconfont.1756083626568.woff2 → iconfont.1756452257212.woff2} +0 -0
- /package/lib/{iconfont.1756083626568.ttf → iconfont.1756452257212.ttf} +0 -0
- /package/lib/{iconfont.1756083626568.woff → iconfont.1756452257212.woff} +0 -0
- /package/lib/{iconfont.1756083626568.woff2 → iconfont.1756452257212.woff2} +0 -0
package/es/table/src/methods.js
CHANGED
|
@@ -7,12 +7,14 @@ import { getRowUniqueId, clearTableAllStatus, getColumnList, toFilters, getRowke
|
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
8
8
|
import { moveRowAnimateToTb, clearRowAnimate, moveColAnimateToLr, clearColAnimate } from './anime';
|
|
9
9
|
import { warnLog, errLog } from '../../ui/src/log';
|
|
10
|
+
import { getCrossTableDragRowInfo } from './store';
|
|
10
11
|
const { getConfig, getI18n, renderer, formats, interceptor, createEvent } = VxeUI;
|
|
11
12
|
const browseObj = XEUtils.browse();
|
|
12
13
|
const supportMaxRow = 5e6;
|
|
13
14
|
const customStorageKey = 'VXE_CUSTOM_STORE';
|
|
14
15
|
const maxYHeight = 5e6;
|
|
15
16
|
const maxXWidth = 5e6;
|
|
17
|
+
let crossTableDragRowObj = null;
|
|
16
18
|
function eqCellValue(row1, row2, field) {
|
|
17
19
|
const val1 = XEUtils.get(row1, field);
|
|
18
20
|
const val2 = XEUtils.get(row2, field);
|
|
@@ -960,22 +962,28 @@ function updateStyle($xeTable) {
|
|
|
960
962
|
emptyPlaceholderElem.style.top = `${tHeaderHeight}px`;
|
|
961
963
|
emptyPlaceholderElem.style.height = bodyWrapperElem ? `${bodyWrapperElem.offsetHeight - osbHeight}px` : '';
|
|
962
964
|
}
|
|
965
|
+
const scrollbarXConf = scrollbarOpts.x || {};
|
|
963
966
|
const scrollbarXToTop = $xeTable.computeScrollbarXToTop;
|
|
967
|
+
const scrollbarYConf = scrollbarOpts.y || {};
|
|
964
968
|
const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
|
|
965
969
|
let xScrollbarVisible = overflowX ? 'visible' : 'hidden';
|
|
966
|
-
if ($xeGanttView) {
|
|
970
|
+
if (scrollbarXConf.visible === 'visible' || $xeGanttView) {
|
|
967
971
|
osbHeight = scrollbarHeight;
|
|
968
972
|
xScrollbarVisible = 'visible';
|
|
969
973
|
}
|
|
970
|
-
else if (
|
|
974
|
+
else if (scrollbarXConf.visible === 'hidden' || scrollbarXConf.visible === false) {
|
|
971
975
|
osbHeight = 0;
|
|
972
976
|
xScrollbarVisible = 'hidden';
|
|
973
977
|
}
|
|
974
978
|
let yScrollbarVisible = overflowY ? 'visible' : 'hidden';
|
|
975
|
-
if ((
|
|
979
|
+
if ((scrollbarYConf.visible === 'hidden' || scrollbarYConf.visible === false) || ($xeGanttView && !scrollbarYToLeft)) {
|
|
976
980
|
osbWidth = 0;
|
|
977
981
|
yScrollbarVisible = 'hidden';
|
|
978
982
|
}
|
|
983
|
+
else if (scrollbarYConf.visible === 'visible') {
|
|
984
|
+
osbWidth = scrollbarWidth;
|
|
985
|
+
yScrollbarVisible = 'visible';
|
|
986
|
+
}
|
|
979
987
|
let tbHeight = 0;
|
|
980
988
|
let bodyMaxHeight = 0;
|
|
981
989
|
const bodyMinHeight = customMinHeight - tHeaderHeight - tFooterHeight - osbHeight;
|
|
@@ -1014,7 +1022,7 @@ function updateStyle($xeTable) {
|
|
|
1014
1022
|
}
|
|
1015
1023
|
if (xRightCornerEl) {
|
|
1016
1024
|
xRightCornerEl.style.width = scrollbarXToTop ? '' : `${osbWidth}px`;
|
|
1017
|
-
xRightCornerEl.style.display = scrollbarXToTop ? '' : (
|
|
1025
|
+
xRightCornerEl.style.display = scrollbarXToTop ? '' : (xScrollbarVisible === 'visible' ? 'block' : '');
|
|
1018
1026
|
}
|
|
1019
1027
|
const scrollYVirtualEl = $xeTable.$refs.refScrollYVirtualElem;
|
|
1020
1028
|
if (scrollYVirtualEl) {
|
|
@@ -1025,7 +1033,7 @@ function updateStyle($xeTable) {
|
|
|
1025
1033
|
const yTopCornerEl = $xeTable.$refs.refScrollYTopCornerElem;
|
|
1026
1034
|
if (yTopCornerEl) {
|
|
1027
1035
|
yTopCornerEl.style.height = `${tHeaderHeight}px`;
|
|
1028
|
-
yTopCornerEl.style.display =
|
|
1036
|
+
yTopCornerEl.style.display = tHeaderHeight && yScrollbarVisible === 'visible' ? 'block' : '';
|
|
1029
1037
|
}
|
|
1030
1038
|
const yWrapperEl = $xeTable.$refs.refScrollYWrapperElem;
|
|
1031
1039
|
if (yWrapperEl) {
|
|
@@ -1036,7 +1044,7 @@ function updateStyle($xeTable) {
|
|
|
1036
1044
|
if (yBottomCornerEl) {
|
|
1037
1045
|
yBottomCornerEl.style.height = `${tFooterHeight}px`;
|
|
1038
1046
|
yBottomCornerEl.style.top = `${tHeaderHeight + tbHeight}px`;
|
|
1039
|
-
yBottomCornerEl.style.display =
|
|
1047
|
+
yBottomCornerEl.style.display = tFooterHeight && yScrollbarVisible === 'visible' ? 'block' : '';
|
|
1040
1048
|
}
|
|
1041
1049
|
const rowExpandEl = $xeTable.$refs.refRowExpandElem;
|
|
1042
1050
|
if (rowExpandEl) {
|
|
@@ -1926,11 +1934,59 @@ function handleBodyMerge($xeTable, merges) {
|
|
|
1926
1934
|
});
|
|
1927
1935
|
}
|
|
1928
1936
|
}
|
|
1929
|
-
function
|
|
1937
|
+
function removeBodyMerges($xeTable, merges) {
|
|
1938
|
+
const internalData = $xeTable;
|
|
1939
|
+
const { mergeBodyList, fullColumnIdData, fullAllDataRowIdData, mergeBodyMaps } = internalData;
|
|
1940
|
+
const rest = [];
|
|
1941
|
+
if (merges) {
|
|
1942
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1943
|
+
if (!XEUtils.isArray(merges)) {
|
|
1944
|
+
merges = [merges];
|
|
1945
|
+
}
|
|
1946
|
+
merges.forEach((item) => {
|
|
1947
|
+
const { row: margeRow, col: margeCol } = item;
|
|
1948
|
+
let mergeRowIndex = -1;
|
|
1949
|
+
let mergeColumnIndex = -1;
|
|
1950
|
+
if (XEUtils.isNumber(margeRow)) {
|
|
1951
|
+
mergeRowIndex = margeRow;
|
|
1952
|
+
}
|
|
1953
|
+
else {
|
|
1954
|
+
const rowid = margeRow ? handleGetRowId(margeRow) : null;
|
|
1955
|
+
const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
|
|
1956
|
+
if (rowRest) {
|
|
1957
|
+
mergeRowIndex = rowRest._index;
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
if (XEUtils.isNumber(margeCol)) {
|
|
1961
|
+
mergeColumnIndex = margeCol;
|
|
1962
|
+
}
|
|
1963
|
+
else {
|
|
1964
|
+
const colid = margeCol ? margeCol.id : null;
|
|
1965
|
+
const colRest = colid ? fullColumnIdData[colid] : null;
|
|
1966
|
+
if (colRest) {
|
|
1967
|
+
mergeColumnIndex = colRest._index;
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
const mcIndex = XEUtils.findIndexOf(mergeBodyList, item => (item.row === mergeRowIndex) && (item.col === mergeColumnIndex));
|
|
1971
|
+
if (mcIndex > -1) {
|
|
1972
|
+
const rItems = mergeBodyList.splice(mcIndex, 1);
|
|
1973
|
+
const item = rItems[0];
|
|
1974
|
+
if (item) {
|
|
1975
|
+
rest.push(rItems[0]);
|
|
1976
|
+
if (mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
|
|
1977
|
+
delete mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1978
|
+
}
|
|
1979
|
+
}
|
|
1980
|
+
}
|
|
1981
|
+
});
|
|
1982
|
+
}
|
|
1983
|
+
return rest;
|
|
1984
|
+
}
|
|
1985
|
+
function handleHeaderMerge($xeTable, merges) {
|
|
1930
1986
|
const reactData = $xeTable;
|
|
1931
1987
|
const internalData = $xeTable;
|
|
1932
1988
|
const { footerTableData } = reactData;
|
|
1933
|
-
const {
|
|
1989
|
+
const { mergeHeaderList, mergeHeaderMaps, fullColumnIdData } = internalData;
|
|
1934
1990
|
if (merges) {
|
|
1935
1991
|
const { visibleColumn } = internalData;
|
|
1936
1992
|
if (!XEUtils.isArray(merges)) {
|
|
@@ -1956,7 +2012,7 @@ function handleFooterMerge($xeTable, merges) {
|
|
|
1956
2012
|
if (rowspan > 1 || colspan > 1) {
|
|
1957
2013
|
const row = footerTableData[mergeRowIndex];
|
|
1958
2014
|
const column = visibleColumn[mergeColumnIndex];
|
|
1959
|
-
let mergeItem =
|
|
2015
|
+
let mergeItem = mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1960
2016
|
if (mergeItem) {
|
|
1961
2017
|
mergeItem.rowspan = rowspan;
|
|
1962
2018
|
mergeItem.colspan = colspan;
|
|
@@ -1974,37 +2030,26 @@ function handleFooterMerge($xeTable, merges) {
|
|
|
1974
2030
|
_rowspan: rowspan,
|
|
1975
2031
|
_colspan: colspan
|
|
1976
2032
|
};
|
|
1977
|
-
|
|
1978
|
-
|
|
2033
|
+
mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
2034
|
+
mergeHeaderList.push(mergeItem);
|
|
1979
2035
|
}
|
|
1980
2036
|
}
|
|
1981
2037
|
}
|
|
1982
2038
|
});
|
|
1983
2039
|
}
|
|
1984
2040
|
}
|
|
1985
|
-
function
|
|
2041
|
+
function removeHeaderMerges($xeTable, merges) {
|
|
1986
2042
|
const internalData = $xeTable;
|
|
1987
|
-
const {
|
|
2043
|
+
const { mergeHeaderList, fullColumnIdData, mergeHeaderMaps } = internalData;
|
|
1988
2044
|
const rest = [];
|
|
1989
2045
|
if (merges) {
|
|
1990
|
-
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1991
2046
|
if (!XEUtils.isArray(merges)) {
|
|
1992
2047
|
merges = [merges];
|
|
1993
2048
|
}
|
|
1994
2049
|
merges.forEach((item) => {
|
|
1995
2050
|
const { row: margeRow, col: margeCol } = item;
|
|
1996
|
-
|
|
2051
|
+
const mergeRowIndex = XEUtils.isNumber(margeRow) ? margeRow : -1;
|
|
1997
2052
|
let mergeColumnIndex = -1;
|
|
1998
|
-
if (XEUtils.isNumber(margeRow)) {
|
|
1999
|
-
mergeRowIndex = margeRow;
|
|
2000
|
-
}
|
|
2001
|
-
else {
|
|
2002
|
-
const rowid = margeRow ? handleGetRowId(margeRow) : null;
|
|
2003
|
-
const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
|
|
2004
|
-
if (rowRest) {
|
|
2005
|
-
mergeRowIndex = rowRest._index;
|
|
2006
|
-
}
|
|
2007
|
-
}
|
|
2008
2053
|
if (XEUtils.isNumber(margeCol)) {
|
|
2009
2054
|
mergeColumnIndex = margeCol;
|
|
2010
2055
|
}
|
|
@@ -2015,14 +2060,14 @@ function removeBodyMerges($xeTable, merges) {
|
|
|
2015
2060
|
mergeColumnIndex = colRest._index;
|
|
2016
2061
|
}
|
|
2017
2062
|
}
|
|
2018
|
-
const mcIndex = XEUtils.findIndexOf(
|
|
2063
|
+
const mcIndex = XEUtils.findIndexOf(mergeHeaderList, item => item.row === mergeRowIndex && item.col === mergeColumnIndex);
|
|
2019
2064
|
if (mcIndex > -1) {
|
|
2020
|
-
const rItems =
|
|
2065
|
+
const rItems = mergeHeaderList.splice(mcIndex, 1);
|
|
2021
2066
|
const item = rItems[0];
|
|
2022
2067
|
if (item) {
|
|
2023
|
-
rest.push(
|
|
2024
|
-
if (
|
|
2025
|
-
delete
|
|
2068
|
+
rest.push(item);
|
|
2069
|
+
if (mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
|
|
2070
|
+
delete mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
2026
2071
|
}
|
|
2027
2072
|
}
|
|
2028
2073
|
}
|
|
@@ -2030,6 +2075,62 @@ function removeBodyMerges($xeTable, merges) {
|
|
|
2030
2075
|
}
|
|
2031
2076
|
return rest;
|
|
2032
2077
|
}
|
|
2078
|
+
function handleFooterMerge($xeTable, merges) {
|
|
2079
|
+
const reactData = $xeTable;
|
|
2080
|
+
const internalData = $xeTable;
|
|
2081
|
+
const { footerTableData } = reactData;
|
|
2082
|
+
const { mergeFooterList, mergeFooterMaps, fullColumnIdData } = internalData;
|
|
2083
|
+
if (merges) {
|
|
2084
|
+
const { visibleColumn } = internalData;
|
|
2085
|
+
if (!XEUtils.isArray(merges)) {
|
|
2086
|
+
merges = [merges];
|
|
2087
|
+
}
|
|
2088
|
+
merges.forEach((item) => {
|
|
2089
|
+
let { row: margeRow, col: margeCol, rowspan, colspan } = item;
|
|
2090
|
+
const mergeRowIndex = XEUtils.isNumber(margeRow) ? margeRow : -1;
|
|
2091
|
+
let mergeColumnIndex = -1;
|
|
2092
|
+
if (XEUtils.isNumber(margeCol)) {
|
|
2093
|
+
mergeColumnIndex = margeCol;
|
|
2094
|
+
}
|
|
2095
|
+
else {
|
|
2096
|
+
const colid = margeCol ? margeCol.id : null;
|
|
2097
|
+
const colRest = colid ? fullColumnIdData[colid] : null;
|
|
2098
|
+
if (colRest) {
|
|
2099
|
+
mergeColumnIndex = colRest._index;
|
|
2100
|
+
}
|
|
2101
|
+
}
|
|
2102
|
+
if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
|
|
2103
|
+
rowspan = XEUtils.toNumber(rowspan) || 1;
|
|
2104
|
+
colspan = XEUtils.toNumber(colspan) || 1;
|
|
2105
|
+
if (rowspan > 1 || colspan > 1) {
|
|
2106
|
+
const row = footerTableData[mergeRowIndex];
|
|
2107
|
+
const column = visibleColumn[mergeColumnIndex];
|
|
2108
|
+
let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
2109
|
+
if (mergeItem) {
|
|
2110
|
+
mergeItem.rowspan = rowspan;
|
|
2111
|
+
mergeItem.colspan = colspan;
|
|
2112
|
+
mergeItem._rowspan = rowspan;
|
|
2113
|
+
mergeItem._colspan = colspan;
|
|
2114
|
+
}
|
|
2115
|
+
else {
|
|
2116
|
+
mergeItem = {
|
|
2117
|
+
row: mergeRowIndex,
|
|
2118
|
+
col: mergeColumnIndex,
|
|
2119
|
+
rowspan,
|
|
2120
|
+
colspan,
|
|
2121
|
+
_row: row,
|
|
2122
|
+
_col: column,
|
|
2123
|
+
_rowspan: rowspan,
|
|
2124
|
+
_colspan: colspan
|
|
2125
|
+
};
|
|
2126
|
+
mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
2127
|
+
mergeFooterList.push(mergeItem);
|
|
2128
|
+
}
|
|
2129
|
+
}
|
|
2130
|
+
}
|
|
2131
|
+
});
|
|
2132
|
+
}
|
|
2133
|
+
}
|
|
2033
2134
|
function removeFooterMerges($xeTable, merges) {
|
|
2034
2135
|
const internalData = $xeTable;
|
|
2035
2136
|
const { mergeFooterList, fullColumnIdData, mergeFooterMaps } = internalData;
|
|
@@ -2140,8 +2241,23 @@ function clearAllSort($xeTable) {
|
|
|
2140
2241
|
function calcTableHeight($xeTable, key) {
|
|
2141
2242
|
const props = $xeTable;
|
|
2142
2243
|
const reactData = $xeTable;
|
|
2244
|
+
const { editConfig } = props;
|
|
2143
2245
|
const { parentHeight } = reactData;
|
|
2144
|
-
|
|
2246
|
+
let val = props[key];
|
|
2247
|
+
if (key === 'minHeight') {
|
|
2248
|
+
const defMinHeight = getConfig().table.minHeight;
|
|
2249
|
+
if (XEUtils.eqNull(val)) {
|
|
2250
|
+
if (eqEmptyValue(defMinHeight)) {
|
|
2251
|
+
// 编辑模式默认最小高度
|
|
2252
|
+
if (isEnableConf(editConfig)) {
|
|
2253
|
+
val = 144;
|
|
2254
|
+
}
|
|
2255
|
+
}
|
|
2256
|
+
else {
|
|
2257
|
+
val = defMinHeight;
|
|
2258
|
+
}
|
|
2259
|
+
}
|
|
2260
|
+
}
|
|
2145
2261
|
let num = 0;
|
|
2146
2262
|
if (val) {
|
|
2147
2263
|
if (val === '100%' || val === 'auto') {
|
|
@@ -2348,6 +2464,11 @@ function handleTargetEnterEvent($xeTable, isClear) {
|
|
|
2348
2464
|
}
|
|
2349
2465
|
}
|
|
2350
2466
|
}
|
|
2467
|
+
function clearCrossTableDragStatus($xeTable) {
|
|
2468
|
+
const crossTableDragRowInfo = getCrossTableDragRowInfo($xeTable);
|
|
2469
|
+
crossTableDragRowObj = null;
|
|
2470
|
+
crossTableDragRowInfo.row = null;
|
|
2471
|
+
}
|
|
2351
2472
|
function clearDragStatus($xeTable) {
|
|
2352
2473
|
const reactData = $xeTable;
|
|
2353
2474
|
const { dragRow, dragCol } = reactData;
|
|
@@ -2355,6 +2476,7 @@ function clearDragStatus($xeTable) {
|
|
|
2355
2476
|
clearColDropOrigin($xeTable);
|
|
2356
2477
|
clearRowDropOrigin($xeTable);
|
|
2357
2478
|
hideDropTip($xeTable);
|
|
2479
|
+
clearCrossTableDragStatus($xeTable);
|
|
2358
2480
|
reactData.dragRow = null;
|
|
2359
2481
|
reactData.dragCol = null;
|
|
2360
2482
|
}
|
|
@@ -2548,6 +2670,26 @@ function hideDropTip($xeTable) {
|
|
|
2548
2670
|
cdLineEl.style.display = '';
|
|
2549
2671
|
}
|
|
2550
2672
|
}
|
|
2673
|
+
function clearRowDragData($xeTable) {
|
|
2674
|
+
const $xeGantt = $xeTable.$xeGantt;
|
|
2675
|
+
const reactData = $xeTable;
|
|
2676
|
+
const internalData = $xeTable;
|
|
2677
|
+
let wrapperEl = $xeTable.$refs.refElem;
|
|
2678
|
+
const dtClss = ['.vxe-body--row'];
|
|
2679
|
+
if ($xeGantt) {
|
|
2680
|
+
const ganttContainerElem = $xeGantt.$refs.refGanttContainerElem;
|
|
2681
|
+
if (ganttContainerElem) {
|
|
2682
|
+
wrapperEl = ganttContainerElem;
|
|
2683
|
+
}
|
|
2684
|
+
dtClss.push('.vxe-gantt-view--body-row', '.vxe-gantt-view--chart-row');
|
|
2685
|
+
}
|
|
2686
|
+
hideDropTip($xeTable);
|
|
2687
|
+
clearRowDropOrigin($xeTable);
|
|
2688
|
+
clearRowAnimate(wrapperEl, dtClss);
|
|
2689
|
+
internalData.prevDragToChild = false;
|
|
2690
|
+
reactData.dragRow = null;
|
|
2691
|
+
reactData.dragCol = null;
|
|
2692
|
+
}
|
|
2551
2693
|
/**
|
|
2552
2694
|
* 处理显示 tooltip
|
|
2553
2695
|
* @param {Event} evnt 事件
|
|
@@ -2614,11 +2756,19 @@ function handleDefaultMergeCells($xeTable) {
|
|
|
2614
2756
|
$xeTable.setMergeCells(mergeCells);
|
|
2615
2757
|
}
|
|
2616
2758
|
}
|
|
2759
|
+
function handleDefaultMergeHeaderItems($xeTable) {
|
|
2760
|
+
const props = $xeTable;
|
|
2761
|
+
const { mergeHeaderCells } = props;
|
|
2762
|
+
if (mergeHeaderCells) {
|
|
2763
|
+
$xeTable.setMergeHeaderCells(mergeHeaderCells);
|
|
2764
|
+
}
|
|
2765
|
+
}
|
|
2617
2766
|
function handleDefaultMergeFooterItems($xeTable) {
|
|
2618
2767
|
const props = $xeTable;
|
|
2619
|
-
const { mergeFooterItems } = props;
|
|
2620
|
-
|
|
2621
|
-
|
|
2768
|
+
const { mergeFooterCells, mergeFooterItems } = props;
|
|
2769
|
+
const mFooterCells = mergeFooterCells || mergeFooterItems;
|
|
2770
|
+
if (mFooterCells) {
|
|
2771
|
+
$xeTable.setMergeFooterCells(mFooterCells);
|
|
2622
2772
|
}
|
|
2623
2773
|
}
|
|
2624
2774
|
// 计算可视渲染相关数据
|
|
@@ -3071,6 +3221,10 @@ function loadTableData($xeTable, datas, isReset) {
|
|
|
3071
3221
|
}
|
|
3072
3222
|
handleReserveStatus($xeTable);
|
|
3073
3223
|
$xeTable.checkSelectionStatus();
|
|
3224
|
+
$xeTable.dispatchEvent('data-change', {
|
|
3225
|
+
visibleColumn: internalData.visibleColumn,
|
|
3226
|
+
visibleData: internalData.afterFullData
|
|
3227
|
+
}, null);
|
|
3074
3228
|
return new Promise(resolve => {
|
|
3075
3229
|
$xeTable.$nextTick()
|
|
3076
3230
|
.then(() => handleRecalculateStyle($xeTable, false, false, false))
|
|
@@ -3133,6 +3287,7 @@ function handleLoadDefaults($xeTable) {
|
|
|
3133
3287
|
handleDefaultTreeExpand($xeTable);
|
|
3134
3288
|
handleDefaultRowGroupExpand($xeTable);
|
|
3135
3289
|
handleDefaultMergeCells($xeTable);
|
|
3290
|
+
handleDefaultMergeHeaderItems($xeTable);
|
|
3136
3291
|
handleDefaultMergeFooterItems($xeTable);
|
|
3137
3292
|
$xeTable.$nextTick(() => setTimeout(() => $xeTable.recalculate()));
|
|
3138
3293
|
}
|
|
@@ -4778,7 +4933,9 @@ const Methods = {
|
|
|
4778
4933
|
}
|
|
4779
4934
|
}
|
|
4780
4935
|
}
|
|
4781
|
-
|
|
4936
|
+
const rest = $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
|
|
4937
|
+
clearRowDragData($xeTable);
|
|
4938
|
+
return rest;
|
|
4782
4939
|
},
|
|
4783
4940
|
/**
|
|
4784
4941
|
* 获取表格的全量列
|
|
@@ -6162,7 +6319,7 @@ const Methods = {
|
|
|
6162
6319
|
// 如果点击了当前表格之外
|
|
6163
6320
|
!getEventTargetNode(evnt, $el).flag) {
|
|
6164
6321
|
setTimeout(() => {
|
|
6165
|
-
|
|
6322
|
+
$xeTable.handleClearEdit(evnt).then(() => {
|
|
6166
6323
|
// 如果存在校验,点击了表格之外则清除
|
|
6167
6324
|
if (!this.isActivated && editRules && validOpts.autoClear) {
|
|
6168
6325
|
this.validErrorMaps = {};
|
|
@@ -6178,17 +6335,17 @@ const Methods = {
|
|
|
6178
6335
|
}
|
|
6179
6336
|
else if (mouseConfig) {
|
|
6180
6337
|
if (!getEventTargetNode(evnt, $el).flag && !($xeGGWrapper && getEventTargetNode(evnt, $xeGGWrapper.$el).flag) && !(tableMenu && getEventTargetNode(evnt, tableMenu.$el).flag) && !($toolbar && getEventTargetNode(evnt, $toolbar.$el).flag)) {
|
|
6181
|
-
if (
|
|
6182
|
-
|
|
6338
|
+
if ($xeTable.clearSelected) {
|
|
6339
|
+
$xeTable.clearSelected();
|
|
6183
6340
|
}
|
|
6184
6341
|
if (areaOpts.autoClear) {
|
|
6185
|
-
if (
|
|
6186
|
-
const cellAreas =
|
|
6342
|
+
if ($xeTable.getCellAreas) {
|
|
6343
|
+
const cellAreas = $xeTable.getCellAreas();
|
|
6187
6344
|
if (cellAreas && cellAreas.length && !getEventTargetNode(evnt, document.body, 'vxe-table--ignore-areas-clear').flag) {
|
|
6188
|
-
|
|
6189
|
-
|
|
6190
|
-
|
|
6191
|
-
|
|
6345
|
+
$xeTable.preventEvent(evnt, 'event.clearAreas', {}, () => {
|
|
6346
|
+
$xeTable.clearCellAreas();
|
|
6347
|
+
$xeTable.clearCopyCellArea();
|
|
6348
|
+
$xeTable.dispatchEvent('clear-cell-area-selection', { cellAreas }, evnt);
|
|
6192
6349
|
});
|
|
6193
6350
|
}
|
|
6194
6351
|
}
|
|
@@ -6225,13 +6382,14 @@ const Methods = {
|
|
|
6225
6382
|
* 表格键盘事件
|
|
6226
6383
|
*/
|
|
6227
6384
|
keydownEvent(evnt) {
|
|
6385
|
+
const $xeTable = this;
|
|
6228
6386
|
const { filterStore, ctxMenuStore, editStore, keyboardConfig, mouseConfig, mouseOpts, keyboardOpts } = this;
|
|
6229
6387
|
const { actived } = editStore;
|
|
6230
6388
|
const { keyCode } = evnt;
|
|
6231
6389
|
const isEsc = keyCode === 27;
|
|
6232
6390
|
if (isEsc) {
|
|
6233
6391
|
this.preventEvent(evnt, 'event.keydown', null, () => {
|
|
6234
|
-
|
|
6392
|
+
$xeTable.dispatchEvent('keydown-start', {}, evnt);
|
|
6235
6393
|
if (keyboardConfig && mouseConfig && mouseOpts.area && this.handleKeyboardCellAreaEvent) {
|
|
6236
6394
|
this.handleKeyboardCellAreaEvent(evnt);
|
|
6237
6395
|
}
|
|
@@ -6252,8 +6410,8 @@ const Methods = {
|
|
|
6252
6410
|
}
|
|
6253
6411
|
}
|
|
6254
6412
|
}
|
|
6255
|
-
|
|
6256
|
-
|
|
6413
|
+
$xeTable.dispatchEvent('keydown', {}, evnt);
|
|
6414
|
+
$xeTable.dispatchEvent('keydown-end', {}, evnt);
|
|
6257
6415
|
});
|
|
6258
6416
|
}
|
|
6259
6417
|
},
|
|
@@ -6584,6 +6742,7 @@ const Methods = {
|
|
|
6584
6742
|
}
|
|
6585
6743
|
},
|
|
6586
6744
|
handleGlobalPasteEvent(evnt) {
|
|
6745
|
+
const $xeTable = this;
|
|
6587
6746
|
const { isActivated, keyboardConfig, keyboardOpts, mouseConfig, mouseOpts, editStore, filterStore } = this;
|
|
6588
6747
|
const { actived } = editStore;
|
|
6589
6748
|
if (isActivated && !filterStore.visible) {
|
|
@@ -6592,10 +6751,11 @@ const Methods = {
|
|
|
6592
6751
|
this.handlePasteCellAreaEvent(evnt);
|
|
6593
6752
|
}
|
|
6594
6753
|
}
|
|
6595
|
-
|
|
6754
|
+
$xeTable.dispatchEvent('paste', {}, evnt);
|
|
6596
6755
|
}
|
|
6597
6756
|
},
|
|
6598
6757
|
handleGlobalCopyEvent(evnt) {
|
|
6758
|
+
const $xeTable = this;
|
|
6599
6759
|
const { isActivated, keyboardConfig, keyboardOpts, mouseConfig, mouseOpts, editStore, filterStore } = this;
|
|
6600
6760
|
const { actived } = editStore;
|
|
6601
6761
|
if (isActivated && !filterStore.visible) {
|
|
@@ -6604,10 +6764,11 @@ const Methods = {
|
|
|
6604
6764
|
this.handleCopyCellAreaEvent(evnt);
|
|
6605
6765
|
}
|
|
6606
6766
|
}
|
|
6607
|
-
|
|
6767
|
+
$xeTable.dispatchEvent('copy', {}, evnt);
|
|
6608
6768
|
}
|
|
6609
6769
|
},
|
|
6610
6770
|
handleGlobalCutEvent(evnt) {
|
|
6771
|
+
const $xeTable = this;
|
|
6611
6772
|
const { isActivated, keyboardConfig, keyboardOpts, mouseConfig, mouseOpts, editStore, filterStore } = this;
|
|
6612
6773
|
const { actived } = editStore;
|
|
6613
6774
|
if (isActivated && !filterStore.visible) {
|
|
@@ -6616,7 +6777,7 @@ const Methods = {
|
|
|
6616
6777
|
this.handleCutCellAreaEvent(evnt);
|
|
6617
6778
|
}
|
|
6618
6779
|
}
|
|
6619
|
-
|
|
6780
|
+
$xeTable.dispatchEvent('cut', {}, evnt);
|
|
6620
6781
|
}
|
|
6621
6782
|
},
|
|
6622
6783
|
handleGlobalResizeEvent() {
|
|
@@ -6637,6 +6798,14 @@ const Methods = {
|
|
|
6637
6798
|
internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
|
|
6638
6799
|
reactData.mergeBodyFlag++;
|
|
6639
6800
|
},
|
|
6801
|
+
handleUpdateHeaderMerge() {
|
|
6802
|
+
const $xeTable = this;
|
|
6803
|
+
const reactData = $xeTable;
|
|
6804
|
+
const internalData = $xeTable;
|
|
6805
|
+
const { mergeHeaderList } = internalData;
|
|
6806
|
+
internalData.mergeHeaderCellMaps = buildMergeData(mergeHeaderList);
|
|
6807
|
+
reactData.mergeHeadFlag++;
|
|
6808
|
+
},
|
|
6640
6809
|
handleUpdateFooterMerge() {
|
|
6641
6810
|
const $xeTable = this;
|
|
6642
6811
|
const reactData = $xeTable;
|
|
@@ -7789,7 +7958,8 @@ const Methods = {
|
|
|
7789
7958
|
return $xeTable.$nextTick();
|
|
7790
7959
|
},
|
|
7791
7960
|
triggerHeaderCellDblclickEvent(evnt, params) {
|
|
7792
|
-
|
|
7961
|
+
const $xeTable = this;
|
|
7962
|
+
$xeTable.dispatchEvent('header-cell-dblclick', Object.assign({ cell: evnt.currentTarget }, params), evnt);
|
|
7793
7963
|
},
|
|
7794
7964
|
getCurrentColumn() {
|
|
7795
7965
|
return this.columnOpts.isCurrent || this.highlightCurrentColumn ? this.currentColumn : null;
|
|
@@ -7975,7 +8145,7 @@ const Methods = {
|
|
|
7975
8145
|
}
|
|
7976
8146
|
}
|
|
7977
8147
|
}
|
|
7978
|
-
|
|
8148
|
+
$xeTable.dispatchEvent('cell-dblclick', params, evnt);
|
|
7979
8149
|
},
|
|
7980
8150
|
handleColumnSortEvent(evnt, column) {
|
|
7981
8151
|
const $xeTable = this;
|
|
@@ -8399,12 +8569,239 @@ const Methods = {
|
|
|
8399
8569
|
}
|
|
8400
8570
|
return Promise.resolve(errRest);
|
|
8401
8571
|
},
|
|
8402
|
-
|
|
8572
|
+
/**
|
|
8573
|
+
* 处理跨表拖拽完成
|
|
8574
|
+
*/
|
|
8575
|
+
handleCrossTableRowDragFinishEvent(evnt) {
|
|
8576
|
+
const $xeTable = this;
|
|
8577
|
+
const $xeGantt = $xeTable.$xeGantt;
|
|
8578
|
+
const reactData = $xeTable;
|
|
8579
|
+
const internalData = $xeTable;
|
|
8580
|
+
const crossTableDragRowInfo = getCrossTableDragRowInfo($xeTable);
|
|
8581
|
+
const { tableData } = reactData;
|
|
8582
|
+
const { fullAllDataRowIdData } = internalData;
|
|
8583
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
8584
|
+
const cellOpts = $xeTable.computeCellOpts;
|
|
8585
|
+
const defaultRowHeight = $xeTable.computeDefaultRowHeight;
|
|
8586
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
8587
|
+
const { animation, isCrossTableDrag } = rowDragOpts;
|
|
8588
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
8589
|
+
const { mapChildrenField } = treeOpts;
|
|
8590
|
+
const el = $xeTable.$refs.refElem;
|
|
8591
|
+
if (isCrossTableDrag && crossTableDragRowObj && crossTableDragRowInfo) {
|
|
8592
|
+
const { row: dragRow } = crossTableDragRowInfo;
|
|
8593
|
+
if (dragRow) {
|
|
8594
|
+
const dragRowid = getRowid($xeTable, dragRow);
|
|
8595
|
+
const dragRowRest = fullAllDataRowIdData[dragRowid];
|
|
8596
|
+
let dragRowHeight = 0;
|
|
8597
|
+
let rsIndex = -1;
|
|
8598
|
+
if (dragRowRest) {
|
|
8599
|
+
if (animation) {
|
|
8600
|
+
dragRowHeight = getCellRestHeight(dragRowRest, cellOpts, rowOpts, defaultRowHeight);
|
|
8601
|
+
}
|
|
8602
|
+
rsIndex = dragRowRest.$index;
|
|
8603
|
+
}
|
|
8604
|
+
const dragRangeList = rsIndex > -1 && rsIndex < tableData.length - 1 ? tableData.slice(rsIndex + 1) : [];
|
|
8605
|
+
const dragList = XEUtils.toTreeArray([dragRow], {
|
|
8606
|
+
updated: true,
|
|
8607
|
+
children: mapChildrenField
|
|
8608
|
+
});
|
|
8609
|
+
$xeTable.remove(dragList).then(() => {
|
|
8610
|
+
if (animation && dragRowHeight && dragRangeList.length) {
|
|
8611
|
+
const $xeGanttView = internalData.xeGanttView;
|
|
8612
|
+
let wrapperEl = el;
|
|
8613
|
+
if ($xeGantt && $xeGanttView) {
|
|
8614
|
+
const ganttContainerElem = $xeGantt.$refs.refGanttContainerElem;
|
|
8615
|
+
if (ganttContainerElem) {
|
|
8616
|
+
wrapperEl = ganttContainerElem;
|
|
8617
|
+
}
|
|
8618
|
+
}
|
|
8619
|
+
const dtClss = [];
|
|
8620
|
+
dragRangeList.forEach(row => {
|
|
8621
|
+
const rowid = getRowid($xeTable, row);
|
|
8622
|
+
dtClss.push(`.vxe-body--row[rowid="${rowid}"]`);
|
|
8623
|
+
if ($xeGantt) {
|
|
8624
|
+
dtClss.push(`.vxe-gantt-view--body-row[rowid="${rowid}"]`, `.vxe-gantt-view--chart-row[rowid="${rowid}"]`);
|
|
8625
|
+
}
|
|
8626
|
+
});
|
|
8627
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
|
|
8628
|
+
moveRowAnimateToTb(dtTrList, dragRowHeight);
|
|
8629
|
+
}
|
|
8630
|
+
});
|
|
8631
|
+
$xeTable.dispatchEvent('row-remove-dragend', {
|
|
8632
|
+
row: dragRow
|
|
8633
|
+
}, evnt);
|
|
8634
|
+
clearRowDragData($xeTable);
|
|
8635
|
+
clearCrossTableDragStatus($xeTable);
|
|
8636
|
+
}
|
|
8637
|
+
}
|
|
8638
|
+
},
|
|
8639
|
+
/**
|
|
8640
|
+
* 处理跨表拖至新的空表
|
|
8641
|
+
*/
|
|
8642
|
+
handleCrossTableRowDragoverEmptyEvent(evnt) {
|
|
8643
|
+
const $xeTable = this;
|
|
8644
|
+
const reactData = $xeTable;
|
|
8645
|
+
const internalData = $xeTable;
|
|
8646
|
+
const { tableData } = reactData;
|
|
8647
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
8648
|
+
const { isCrossTableDrag } = rowDragOpts;
|
|
8649
|
+
if (isCrossTableDrag && crossTableDragRowObj && !tableData.length) {
|
|
8650
|
+
const { $oldTable } = crossTableDragRowObj;
|
|
8651
|
+
if ($oldTable && $oldTable.xID !== $xeTable.xID) {
|
|
8652
|
+
evnt.preventDefault();
|
|
8653
|
+
crossTableDragRowObj.$newTable = $xeTable;
|
|
8654
|
+
internalData.prevDragRow = null;
|
|
8655
|
+
}
|
|
8656
|
+
}
|
|
8657
|
+
},
|
|
8658
|
+
/**
|
|
8659
|
+
* 处理跨表拖插入
|
|
8660
|
+
*/
|
|
8661
|
+
handleCrossTableRowDragInsertEvent(evnt) {
|
|
8403
8662
|
const $xeTable = this;
|
|
8404
8663
|
const $xeGantt = $xeTable.$xeGantt;
|
|
8405
8664
|
const props = $xeTable;
|
|
8406
8665
|
const reactData = $xeTable;
|
|
8407
8666
|
const internalData = $xeTable;
|
|
8667
|
+
const crossTableDragRowInfo = getCrossTableDragRowInfo($xeTable);
|
|
8668
|
+
const { treeConfig } = props;
|
|
8669
|
+
const { prevDragRow, prevDragPos, prevDragToChild } = internalData;
|
|
8670
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
8671
|
+
const { animation, isSelfToChildDrag, isCrossTableDrag, dragEndMethod, dragToChildMethod } = rowDragOpts;
|
|
8672
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
8673
|
+
const cellOpts = $xeTable.computeCellOpts;
|
|
8674
|
+
const defaultRowHeight = $xeTable.computeDefaultRowHeight;
|
|
8675
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
8676
|
+
const { parentField, mapChildrenField } = treeOpts;
|
|
8677
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
8678
|
+
// 跨表拖拽
|
|
8679
|
+
if (isCrossTableDrag && crossTableDragRowObj && crossTableDragRowInfo) {
|
|
8680
|
+
const { row: oldRow } = crossTableDragRowInfo;
|
|
8681
|
+
const { $oldTable } = crossTableDragRowObj;
|
|
8682
|
+
const el = $xeTable.$refs.refElem;
|
|
8683
|
+
if ($oldTable && oldRow) {
|
|
8684
|
+
const dragRow = oldRow;
|
|
8685
|
+
let dragOffsetIndex = -1;
|
|
8686
|
+
if (prevDragRow) {
|
|
8687
|
+
dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
8688
|
+
}
|
|
8689
|
+
const dragParams = {
|
|
8690
|
+
oldRow: dragRow,
|
|
8691
|
+
newRow: prevDragRow,
|
|
8692
|
+
dragRow,
|
|
8693
|
+
dragPos: prevDragPos,
|
|
8694
|
+
dragToChild: !!prevDragToChild,
|
|
8695
|
+
offsetIndex: dragOffsetIndex
|
|
8696
|
+
};
|
|
8697
|
+
const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
|
|
8698
|
+
const errRest = {
|
|
8699
|
+
status: false
|
|
8700
|
+
};
|
|
8701
|
+
Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then((status) => {
|
|
8702
|
+
if (!status) {
|
|
8703
|
+
return errRest;
|
|
8704
|
+
}
|
|
8705
|
+
let insertRest = Promise.resolve();
|
|
8706
|
+
if (treeConfig) {
|
|
8707
|
+
const dragList = XEUtils.toTreeArray([dragRow], {
|
|
8708
|
+
updated: true,
|
|
8709
|
+
children: mapChildrenField
|
|
8710
|
+
});
|
|
8711
|
+
$oldTable.handleCrossTableRowDragFinishEvent(evnt);
|
|
8712
|
+
if (prevDragRow) {
|
|
8713
|
+
dragRow[parentField] = prevDragRow[parentField];
|
|
8714
|
+
}
|
|
8715
|
+
else {
|
|
8716
|
+
dragRow[parentField] = null;
|
|
8717
|
+
}
|
|
8718
|
+
dragList.forEach(row => {
|
|
8719
|
+
row[childrenField] = undefined;
|
|
8720
|
+
row[mapChildrenField] = undefined;
|
|
8721
|
+
});
|
|
8722
|
+
if (prevDragRow) {
|
|
8723
|
+
if (prevDragPos === 'bottom') {
|
|
8724
|
+
insertRest = $xeTable.insertNextAt(dragList, prevDragRow);
|
|
8725
|
+
}
|
|
8726
|
+
else {
|
|
8727
|
+
insertRest = $xeTable.insertAt(dragList, prevDragRow);
|
|
8728
|
+
}
|
|
8729
|
+
}
|
|
8730
|
+
else {
|
|
8731
|
+
insertRest = $xeTable.insert(dragList);
|
|
8732
|
+
}
|
|
8733
|
+
}
|
|
8734
|
+
else {
|
|
8735
|
+
$oldTable.handleCrossTableRowDragFinishEvent(evnt);
|
|
8736
|
+
if (prevDragRow) {
|
|
8737
|
+
if (prevDragPos === 'bottom') {
|
|
8738
|
+
insertRest = $xeTable.insertNextAt(dragRow, prevDragRow);
|
|
8739
|
+
}
|
|
8740
|
+
else {
|
|
8741
|
+
insertRest = $xeTable.insertAt(dragRow, prevDragRow);
|
|
8742
|
+
}
|
|
8743
|
+
}
|
|
8744
|
+
else {
|
|
8745
|
+
insertRest = $xeTable.insert(dragRow);
|
|
8746
|
+
}
|
|
8747
|
+
}
|
|
8748
|
+
$xeTable.dispatchEvent('row-insert-dragend', {
|
|
8749
|
+
oldRow,
|
|
8750
|
+
newRow: prevDragRow,
|
|
8751
|
+
dragRow,
|
|
8752
|
+
dragPos: prevDragPos,
|
|
8753
|
+
dragToChild: isDragToChildFlag,
|
|
8754
|
+
offsetIndex: dragOffsetIndex
|
|
8755
|
+
}, evnt);
|
|
8756
|
+
clearRowDragData($xeTable);
|
|
8757
|
+
insertRest.then(() => {
|
|
8758
|
+
const { tableData } = reactData;
|
|
8759
|
+
const { fullAllDataRowIdData } = internalData;
|
|
8760
|
+
const oldRowid = getRowid($xeTable, dragRow);
|
|
8761
|
+
const oldRowRest = fullAllDataRowIdData[oldRowid];
|
|
8762
|
+
let dragRowHeight = 0;
|
|
8763
|
+
let rsIndex = -1;
|
|
8764
|
+
if (oldRowRest) {
|
|
8765
|
+
if (animation) {
|
|
8766
|
+
dragRowHeight = getCellRestHeight(oldRowRest, cellOpts, rowOpts, defaultRowHeight);
|
|
8767
|
+
}
|
|
8768
|
+
rsIndex = oldRowRest.$index;
|
|
8769
|
+
}
|
|
8770
|
+
const dragRangeList = rsIndex > -1 ? tableData.slice(rsIndex) : [];
|
|
8771
|
+
if (animation && dragRowHeight && dragRangeList.length) {
|
|
8772
|
+
const $xeGanttView = internalData.xeGanttView;
|
|
8773
|
+
let wrapperEl = el;
|
|
8774
|
+
if ($xeGantt && $xeGanttView) {
|
|
8775
|
+
const ganttContainerElem = $xeGantt.$refs.refGanttContainerElem;
|
|
8776
|
+
if (ganttContainerElem) {
|
|
8777
|
+
wrapperEl = ganttContainerElem;
|
|
8778
|
+
}
|
|
8779
|
+
}
|
|
8780
|
+
const dtClss = [];
|
|
8781
|
+
dragRangeList.forEach(row => {
|
|
8782
|
+
const rowid = getRowid($xeTable, row);
|
|
8783
|
+
dtClss.push(`.vxe-body--row[rowid="${rowid}"]`);
|
|
8784
|
+
if ($xeGantt) {
|
|
8785
|
+
dtClss.push(`.vxe-gantt-view--body-row[rowid="${rowid}"]`, `.vxe-gantt-view--chart-row[rowid="${rowid}"]`);
|
|
8786
|
+
}
|
|
8787
|
+
});
|
|
8788
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
|
|
8789
|
+
moveRowAnimateToTb(dtTrList, -dragRowHeight);
|
|
8790
|
+
}
|
|
8791
|
+
});
|
|
8792
|
+
});
|
|
8793
|
+
}
|
|
8794
|
+
}
|
|
8795
|
+
},
|
|
8796
|
+
hideCrossTableRowDropClearStatus() {
|
|
8797
|
+
const $xeTable = this;
|
|
8798
|
+
hideDropTip($xeTable);
|
|
8799
|
+
},
|
|
8800
|
+
handleRowDragDragendEvent(evnt) {
|
|
8801
|
+
const $xeTable = this;
|
|
8802
|
+
const props = $xeTable;
|
|
8803
|
+
const reactData = $xeTable;
|
|
8804
|
+
const internalData = $xeTable;
|
|
8408
8805
|
const { treeConfig } = props;
|
|
8409
8806
|
const { fullAllDataRowIdData, prevDragToChild } = internalData;
|
|
8410
8807
|
const { dragRow } = reactData;
|
|
@@ -8412,7 +8809,18 @@ const Methods = {
|
|
|
8412
8809
|
const { lazy } = treeOpts;
|
|
8413
8810
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
8414
8811
|
const { prevDragRow, prevDragPos } = internalData;
|
|
8415
|
-
|
|
8812
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
8813
|
+
const { isCrossTableDrag, isCrossDrag } = rowDragOpts;
|
|
8814
|
+
// 跨表拖拽
|
|
8815
|
+
if (isCrossTableDrag && crossTableDragRowObj) {
|
|
8816
|
+
const { $newTable } = crossTableDragRowObj;
|
|
8817
|
+
if ($newTable && $newTable.xID !== $xeTable.xID) {
|
|
8818
|
+
if (!treeConfig || isCrossDrag) {
|
|
8819
|
+
$newTable.handleCrossTableRowDragInsertEvent(evnt);
|
|
8820
|
+
}
|
|
8821
|
+
return;
|
|
8822
|
+
}
|
|
8823
|
+
}
|
|
8416
8824
|
if (treeConfig && lazy && prevDragToChild) {
|
|
8417
8825
|
// 懒加载
|
|
8418
8826
|
const newRowid = getRowid($xeTable, prevDragRow);
|
|
@@ -8429,20 +8837,8 @@ const Methods = {
|
|
|
8429
8837
|
else {
|
|
8430
8838
|
$xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild);
|
|
8431
8839
|
}
|
|
8432
|
-
|
|
8433
|
-
|
|
8434
|
-
const ganttContainerElem = $xeGantt.$refs.refGanttContainerElem;
|
|
8435
|
-
if (ganttContainerElem) {
|
|
8436
|
-
wrapperEl = ganttContainerElem;
|
|
8437
|
-
}
|
|
8438
|
-
dtClss.push('.vxe-gantt-view--body-row', '.vxe-gantt-view--chart-row');
|
|
8439
|
-
}
|
|
8440
|
-
hideDropTip($xeTable);
|
|
8441
|
-
clearRowDropOrigin($xeTable);
|
|
8442
|
-
clearRowAnimate(wrapperEl, dtClss);
|
|
8443
|
-
internalData.prevDragToChild = false;
|
|
8444
|
-
reactData.dragRow = null;
|
|
8445
|
-
reactData.dragCol = null;
|
|
8840
|
+
clearRowDragData($xeTable);
|
|
8841
|
+
clearCrossTableDragStatus($xeTable);
|
|
8446
8842
|
},
|
|
8447
8843
|
handleRowDragDragoverEvent(evnt) {
|
|
8448
8844
|
const $xeTable = this;
|
|
@@ -8456,8 +8852,8 @@ const Methods = {
|
|
|
8456
8852
|
const { lazy, transform, parentField } = treeOpts;
|
|
8457
8853
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
8458
8854
|
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
8459
|
-
const { isPeerDrag, isCrossDrag, isToChildDrag } = rowDragOpts;
|
|
8460
|
-
if (!dragRow) {
|
|
8855
|
+
const { isPeerDrag, isCrossDrag, isToChildDrag, isCrossTableDrag } = rowDragOpts;
|
|
8856
|
+
if (!dragRow && !(isCrossTableDrag && (!treeConfig || isCrossDrag) && crossTableDragRowObj)) {
|
|
8461
8857
|
evnt.preventDefault();
|
|
8462
8858
|
return;
|
|
8463
8859
|
}
|
|
@@ -8466,16 +8862,38 @@ const Methods = {
|
|
|
8466
8862
|
const rowid = trEl.getAttribute('rowid') || '';
|
|
8467
8863
|
const rest = fullAllDataRowIdData[rowid];
|
|
8468
8864
|
if (rest) {
|
|
8865
|
+
evnt.preventDefault();
|
|
8469
8866
|
const row = rest.row;
|
|
8470
8867
|
const rowid = getRowid($xeTable, row);
|
|
8471
8868
|
const rowRest = fullAllDataRowIdData[rowid];
|
|
8472
|
-
evnt.preventDefault();
|
|
8473
|
-
const { dragRow } = reactData;
|
|
8474
8869
|
const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
|
|
8475
8870
|
const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
|
|
8476
|
-
internalData.prevDragToChild = !!(treeConfig && transform && isToChildDrag && isControlKey);
|
|
8871
|
+
internalData.prevDragToChild = !!(treeConfig && transform && (isCrossDrag && isToChildDrag) && isControlKey);
|
|
8477
8872
|
internalData.prevDragRow = row;
|
|
8478
8873
|
internalData.prevDragPos = dragPos;
|
|
8874
|
+
// 跨表拖拽
|
|
8875
|
+
if (isCrossTableDrag && (!treeConfig || isCrossDrag) && crossTableDragRowObj) {
|
|
8876
|
+
const { $oldTable, $newTable } = crossTableDragRowObj;
|
|
8877
|
+
if ($oldTable) {
|
|
8878
|
+
const oldTableReactData = $oldTable;
|
|
8879
|
+
if ($oldTable.xID === $xeTable.xID) {
|
|
8880
|
+
if ($newTable) {
|
|
8881
|
+
$newTable.hideCrossTableRowDropClearStatus();
|
|
8882
|
+
}
|
|
8883
|
+
reactData.isCrossDragRow = false;
|
|
8884
|
+
oldTableReactData.isCrossDragRow = false;
|
|
8885
|
+
crossTableDragRowObj.$newTable = null;
|
|
8886
|
+
}
|
|
8887
|
+
else if (!treeConfig || isCrossDrag) {
|
|
8888
|
+
$oldTable.hideCrossTableRowDropClearStatus();
|
|
8889
|
+
oldTableReactData.isCrossDragRow = true;
|
|
8890
|
+
reactData.dragTipText = oldTableReactData.dragTipText;
|
|
8891
|
+
crossTableDragRowObj.$newTable = $xeTable;
|
|
8892
|
+
showDropTip($xeTable, evnt, trEl, null, true, dragPos);
|
|
8893
|
+
return;
|
|
8894
|
+
}
|
|
8895
|
+
}
|
|
8896
|
+
}
|
|
8479
8897
|
if ($xeTable.eqRow(dragRow, row) ||
|
|
8480
8898
|
(isControlKey && treeConfig && lazy && row[hasChildField] && rowRest && !rowRest.treeLoaded) ||
|
|
8481
8899
|
(!isCrossDrag && treeConfig && transform && (isPeerDrag ? dragRow[parentField] !== row[parentField] : rest.level))) {
|
|
@@ -8495,10 +8913,11 @@ const Methods = {
|
|
|
8495
8913
|
const $xeTable = this;
|
|
8496
8914
|
const props = $xeTable;
|
|
8497
8915
|
const reactData = $xeTable;
|
|
8916
|
+
const crossTableDragRowInfo = getCrossTableDragRowInfo($xeTable);
|
|
8498
8917
|
evnt.stopPropagation();
|
|
8499
8918
|
const { dragConfig } = props;
|
|
8500
8919
|
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
8501
|
-
const { trigger, dragStartMethod } = rowDragOpts;
|
|
8920
|
+
const { isCrossTableDrag, trigger, dragStartMethod } = rowDragOpts;
|
|
8502
8921
|
const { row } = params;
|
|
8503
8922
|
const dragEl = evnt.currentTarget;
|
|
8504
8923
|
const tdEl = trigger === 'cell' || trigger === 'row' ? dragEl : (_a = dragEl.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
|
|
@@ -8509,10 +8928,16 @@ const Methods = {
|
|
|
8509
8928
|
trEl.draggable = false;
|
|
8510
8929
|
reactData.dragRow = null;
|
|
8511
8930
|
reactData.dragCol = null;
|
|
8931
|
+
clearCrossTableDragStatus($xeTable);
|
|
8512
8932
|
hideDropTip($xeTable);
|
|
8513
8933
|
return;
|
|
8514
8934
|
}
|
|
8935
|
+
if (isCrossTableDrag) {
|
|
8936
|
+
crossTableDragRowInfo.row = row;
|
|
8937
|
+
crossTableDragRowObj = { $oldTable: $xeTable, $newTable: null };
|
|
8938
|
+
}
|
|
8515
8939
|
reactData.dragRow = row;
|
|
8940
|
+
reactData.isCrossDragRow = false;
|
|
8516
8941
|
reactData.dragCol = null;
|
|
8517
8942
|
trEl.draggable = true;
|
|
8518
8943
|
updateRowDropOrigin($xeTable, row);
|
|
@@ -8832,6 +9257,7 @@ const Methods = {
|
|
|
8832
9257
|
internalData.prevDragToChild = false;
|
|
8833
9258
|
reactData.dragRow = null;
|
|
8834
9259
|
reactData.dragCol = null;
|
|
9260
|
+
clearCrossTableDragStatus($xeTable);
|
|
8835
9261
|
},
|
|
8836
9262
|
handleHeaderCellDragDragoverEvent(evnt) {
|
|
8837
9263
|
const $xeTable = this;
|
|
@@ -8916,11 +9342,13 @@ const Methods = {
|
|
|
8916
9342
|
reactData.dragRow = null;
|
|
8917
9343
|
reactData.dragCol = null;
|
|
8918
9344
|
hideDropTip($xeTable);
|
|
9345
|
+
clearCrossTableDragStatus($xeTable);
|
|
8919
9346
|
return;
|
|
8920
9347
|
}
|
|
8921
9348
|
reactData.dragCol = column;
|
|
8922
9349
|
reactData.dragRow = null;
|
|
8923
9350
|
thEl.draggable = true;
|
|
9351
|
+
clearCrossTableDragStatus($xeTable);
|
|
8924
9352
|
updateColDropOrigin($xeTable, column);
|
|
8925
9353
|
updateColDropTipContent($xeTable, thEl);
|
|
8926
9354
|
$xeTable.dispatchEvent('column-dragstart', params, evnt);
|
|
@@ -8930,6 +9358,7 @@ const Methods = {
|
|
|
8930
9358
|
const reactData = $xeTable;
|
|
8931
9359
|
clearColDropOrigin($xeTable);
|
|
8932
9360
|
hideDropTip($xeTable);
|
|
9361
|
+
clearCrossTableDragStatus($xeTable);
|
|
8933
9362
|
reactData.dragRow = null;
|
|
8934
9363
|
reactData.dragCol = null;
|
|
8935
9364
|
},
|
|
@@ -10839,6 +11268,10 @@ const Methods = {
|
|
|
10839
11268
|
}
|
|
10840
11269
|
reactData.footerTableData = footData;
|
|
10841
11270
|
$xeTable.handleUpdateFooterMerge();
|
|
11271
|
+
$xeTable.dispatchEvent('footer-data-change', {
|
|
11272
|
+
visibleColumn: internalData.visibleColumn,
|
|
11273
|
+
footData
|
|
11274
|
+
}, null);
|
|
10842
11275
|
return $xeTable.$nextTick();
|
|
10843
11276
|
},
|
|
10844
11277
|
/**
|
|
@@ -10919,45 +11352,101 @@ const Methods = {
|
|
|
10919
11352
|
return updateStyle($xeTable);
|
|
10920
11353
|
});
|
|
10921
11354
|
},
|
|
10922
|
-
|
|
11355
|
+
setMergeHeaderCells(merges) {
|
|
11356
|
+
const $xeTable = this;
|
|
11357
|
+
handleHeaderMerge($xeTable, merges);
|
|
11358
|
+
$xeTable.handleUpdateHeaderMerge();
|
|
11359
|
+
return $xeTable.$nextTick().then(() => {
|
|
11360
|
+
return updateStyle($xeTable);
|
|
11361
|
+
});
|
|
11362
|
+
},
|
|
11363
|
+
/**
|
|
11364
|
+
* 移除表头单元格合并 [{row:Row|number, col:ColumnInfo|number}]
|
|
11365
|
+
*/
|
|
11366
|
+
removeMergeHeaderCells(merges) {
|
|
11367
|
+
const $xeTable = this;
|
|
11368
|
+
const rest = removeHeaderMerges($xeTable, merges);
|
|
11369
|
+
$xeTable.handleUpdateHeaderMerge();
|
|
11370
|
+
return $xeTable.$nextTick().then(() => {
|
|
11371
|
+
updateStyle($xeTable);
|
|
11372
|
+
return rest;
|
|
11373
|
+
});
|
|
11374
|
+
},
|
|
11375
|
+
/**
|
|
11376
|
+
* 获取所有被合并的表头单元格
|
|
11377
|
+
*/
|
|
11378
|
+
getMergeHeaderCells() {
|
|
11379
|
+
const $xeTable = this;
|
|
11380
|
+
const internalData = $xeTable;
|
|
11381
|
+
return internalData.mergeHeaderList.slice(0);
|
|
11382
|
+
},
|
|
11383
|
+
/**
|
|
11384
|
+
* 清除所有表头单元格合并
|
|
11385
|
+
*/
|
|
11386
|
+
clearMergeHeaderCells() {
|
|
11387
|
+
const $xeTable = this;
|
|
11388
|
+
const reactData = $xeTable;
|
|
11389
|
+
const internalData = $xeTable;
|
|
11390
|
+
internalData.mergeHeaderList = [];
|
|
11391
|
+
internalData.mergeHeaderMaps = {};
|
|
11392
|
+
internalData.mergeHeaderCellMaps = {};
|
|
11393
|
+
reactData.mergeHeadFlag++;
|
|
11394
|
+
return $xeTable.$nextTick().then(() => {
|
|
11395
|
+
return updateStyle($xeTable);
|
|
11396
|
+
});
|
|
11397
|
+
},
|
|
11398
|
+
setMergeFooterCells(merges) {
|
|
10923
11399
|
const $xeTable = this;
|
|
10924
11400
|
const props = $xeTable;
|
|
10925
11401
|
if (props.footerSpanMethod) {
|
|
10926
|
-
errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
11402
|
+
errLog('vxe.error.errConflicts', ['merge-footer-cells | merge-footer-items', 'footer-span-method']);
|
|
10927
11403
|
}
|
|
10928
11404
|
handleFooterMerge($xeTable, merges);
|
|
10929
11405
|
$xeTable.handleUpdateFooterMerge();
|
|
10930
11406
|
return $xeTable.$nextTick().then(() => {
|
|
10931
|
-
$xeTable.updateCellAreas();
|
|
10932
11407
|
return updateStyle($xeTable);
|
|
10933
11408
|
});
|
|
10934
11409
|
},
|
|
10935
|
-
|
|
11410
|
+
setMergeFooterItems(merges) {
|
|
11411
|
+
const $xeTable = this;
|
|
11412
|
+
// errLog('vxe.error.delFunc', ['setMergeFooterItems', 'setMergeFooterCells'])
|
|
11413
|
+
return $xeTable.setMergeFooterCells(merges);
|
|
11414
|
+
},
|
|
11415
|
+
removeMergeFooterCells(merges) {
|
|
10936
11416
|
const $xeTable = this;
|
|
10937
11417
|
const props = $xeTable;
|
|
10938
11418
|
if (props.footerSpanMethod) {
|
|
10939
|
-
errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
11419
|
+
errLog('vxe.error.errConflicts', ['merge-footer-cells | merge-footer-items', 'footer-span-method']);
|
|
10940
11420
|
}
|
|
10941
11421
|
const rest = removeFooterMerges($xeTable, merges);
|
|
10942
11422
|
$xeTable.handleUpdateFooterMerge();
|
|
10943
11423
|
return $xeTable.$nextTick().then(() => {
|
|
10944
|
-
$xeTable.updateCellAreas();
|
|
10945
11424
|
updateStyle($xeTable);
|
|
10946
11425
|
return rest;
|
|
10947
11426
|
});
|
|
10948
11427
|
},
|
|
11428
|
+
removeMergeFooterItems(merges) {
|
|
11429
|
+
const $xeTable = this;
|
|
11430
|
+
// errLog('vxe.error.delFunc', ['removeMergeFooterItems', 'removeMergeFooterCells'])
|
|
11431
|
+
return $xeTable.removeMergeFooterCells(merges);
|
|
11432
|
+
},
|
|
10949
11433
|
/**
|
|
10950
11434
|
* 获取所有被合并的表尾
|
|
10951
11435
|
*/
|
|
10952
|
-
|
|
11436
|
+
getMergeFooterCells() {
|
|
10953
11437
|
const $xeTable = this;
|
|
10954
11438
|
const internalData = $xeTable;
|
|
10955
11439
|
return internalData.mergeFooterList.slice(0);
|
|
10956
11440
|
},
|
|
11441
|
+
getMergeFooterItems() {
|
|
11442
|
+
const $xeTable = this;
|
|
11443
|
+
// errLog('vxe.error.delFunc', ['getMergeFooterItems', 'getMergeFooterCells'])
|
|
11444
|
+
return $xeTable.getMergeFooterCells();
|
|
11445
|
+
},
|
|
10957
11446
|
/**
|
|
10958
11447
|
* 清除所有表尾合并
|
|
10959
11448
|
*/
|
|
10960
|
-
|
|
11449
|
+
clearMergeFooterCells() {
|
|
10961
11450
|
const $xeTable = this;
|
|
10962
11451
|
const reactData = $xeTable;
|
|
10963
11452
|
const internalData = $xeTable;
|
|
@@ -10969,6 +11458,11 @@ const Methods = {
|
|
|
10969
11458
|
return updateStyle($xeTable);
|
|
10970
11459
|
});
|
|
10971
11460
|
},
|
|
11461
|
+
clearMergeFooterItems() {
|
|
11462
|
+
const $xeTable = this;
|
|
11463
|
+
// errLog('vxe.error.delFunc', ['clearMergeFooterItems', 'clearMergeFooterCells'])
|
|
11464
|
+
return $xeTable.clearMergeFooterCells();
|
|
11465
|
+
},
|
|
10972
11466
|
handleUpdateAggData() {
|
|
10973
11467
|
const $xeTable = this;
|
|
10974
11468
|
const internalData = $xeTable;
|
|
@@ -11001,9 +11495,7 @@ const Methods = {
|
|
|
11001
11495
|
// 已废弃,使用 dispatchEvent
|
|
11002
11496
|
emitEvent(type, params, evnt) {
|
|
11003
11497
|
const $xeTable = this;
|
|
11004
|
-
|
|
11005
|
-
const $xeGantt = $xeTable.$xeGantt;
|
|
11006
|
-
$xeTable.$emit(type, createEvent(evnt, { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, $event: evnt }));
|
|
11498
|
+
$xeTable.dispatchEvent(type, params, evnt);
|
|
11007
11499
|
},
|
|
11008
11500
|
focus() {
|
|
11009
11501
|
this.isActivated = true;
|