vxe-table 3.18.1 → 3.18.3
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/grid/src/grid.js +5 -1
- 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/menu/mixin.js +67 -43
- package/es/table/module/menu/panel.js +10 -8
- package/es/table/src/body.js +12 -14
- 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 +233 -39
- package/es/table/src/props.js +23 -6
- package/es/table/src/table.js +43 -19
- package/es/table/src/util.js +70 -2
- package/es/table/style.css +11 -21
- 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/ui/src/vn.js +16 -11
- package/es/vxe-table/style.css +11 -21
- package/es/vxe-table/style.min.css +1 -1
- package/lib/grid/src/grid.js +6 -0
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +610 -185
- 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/menu/mixin.js +84 -58
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/menu/panel.js +11 -10
- package/lib/table/module/menu/panel.min.js +1 -1
- package/lib/table/src/body.js +11 -13
- package/lib/table/src/body.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 +259 -42
- 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/table.js +46 -16
- 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 -21
- 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/ui/src/vn.js +16 -10
- package/lib/ui/src/vn.min.js +1 -1
- package/lib/vxe-table/style/style.css +11 -21
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/grid/src/grid.ts +5 -1
- package/packages/table/module/menu/mixin.ts +79 -50
- package/packages/table/module/menu/panel.ts +11 -9
- package/packages/table/src/body.ts +11 -13
- 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 +245 -40
- package/packages/table/src/props.ts +29 -12
- package/packages/table/src/table.ts +53 -16
- package/packages/table/src/util.ts +76 -2
- package/packages/ui/src/vn.ts +16 -11
- package/styles/components/table.scss +33 -56
- /package/es/{iconfont.1756272539382.ttf → iconfont.1756629700380.ttf} +0 -0
- /package/es/{iconfont.1756272539382.woff → iconfont.1756629700380.woff} +0 -0
- /package/es/{iconfont.1756272539382.woff2 → iconfont.1756629700380.woff2} +0 -0
- /package/lib/{iconfont.1756272539382.ttf → iconfont.1756629700380.ttf} +0 -0
- /package/lib/{iconfont.1756272539382.woff → iconfont.1756629700380.woff} +0 -0
- /package/lib/{iconfont.1756272539382.woff2 → iconfont.1756629700380.woff2} +0 -0
package/es/table/src/methods.js
CHANGED
|
@@ -1022,7 +1022,7 @@ function updateStyle($xeTable) {
|
|
|
1022
1022
|
}
|
|
1023
1023
|
if (xRightCornerEl) {
|
|
1024
1024
|
xRightCornerEl.style.width = scrollbarXToTop ? '' : `${osbWidth}px`;
|
|
1025
|
-
xRightCornerEl.style.display = scrollbarXToTop ? '' : (
|
|
1025
|
+
xRightCornerEl.style.display = scrollbarXToTop ? '' : (xScrollbarVisible === 'visible' ? 'block' : '');
|
|
1026
1026
|
}
|
|
1027
1027
|
const scrollYVirtualEl = $xeTable.$refs.refScrollYVirtualElem;
|
|
1028
1028
|
if (scrollYVirtualEl) {
|
|
@@ -1033,7 +1033,7 @@ function updateStyle($xeTable) {
|
|
|
1033
1033
|
const yTopCornerEl = $xeTable.$refs.refScrollYTopCornerElem;
|
|
1034
1034
|
if (yTopCornerEl) {
|
|
1035
1035
|
yTopCornerEl.style.height = `${tHeaderHeight}px`;
|
|
1036
|
-
yTopCornerEl.style.display =
|
|
1036
|
+
yTopCornerEl.style.display = tHeaderHeight && yScrollbarVisible === 'visible' ? 'block' : '';
|
|
1037
1037
|
}
|
|
1038
1038
|
const yWrapperEl = $xeTable.$refs.refScrollYWrapperElem;
|
|
1039
1039
|
if (yWrapperEl) {
|
|
@@ -1044,7 +1044,7 @@ function updateStyle($xeTable) {
|
|
|
1044
1044
|
if (yBottomCornerEl) {
|
|
1045
1045
|
yBottomCornerEl.style.height = `${tFooterHeight}px`;
|
|
1046
1046
|
yBottomCornerEl.style.top = `${tHeaderHeight + tbHeight}px`;
|
|
1047
|
-
yBottomCornerEl.style.display =
|
|
1047
|
+
yBottomCornerEl.style.display = tFooterHeight && yScrollbarVisible === 'visible' ? 'block' : '';
|
|
1048
1048
|
}
|
|
1049
1049
|
const rowExpandEl = $xeTable.$refs.refRowExpandElem;
|
|
1050
1050
|
if (rowExpandEl) {
|
|
@@ -1934,11 +1934,59 @@ function handleBodyMerge($xeTable, merges) {
|
|
|
1934
1934
|
});
|
|
1935
1935
|
}
|
|
1936
1936
|
}
|
|
1937
|
-
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) {
|
|
1938
1986
|
const reactData = $xeTable;
|
|
1939
1987
|
const internalData = $xeTable;
|
|
1940
1988
|
const { footerTableData } = reactData;
|
|
1941
|
-
const {
|
|
1989
|
+
const { mergeHeaderList, mergeHeaderMaps, fullColumnIdData } = internalData;
|
|
1942
1990
|
if (merges) {
|
|
1943
1991
|
const { visibleColumn } = internalData;
|
|
1944
1992
|
if (!XEUtils.isArray(merges)) {
|
|
@@ -1964,7 +2012,7 @@ function handleFooterMerge($xeTable, merges) {
|
|
|
1964
2012
|
if (rowspan > 1 || colspan > 1) {
|
|
1965
2013
|
const row = footerTableData[mergeRowIndex];
|
|
1966
2014
|
const column = visibleColumn[mergeColumnIndex];
|
|
1967
|
-
let mergeItem =
|
|
2015
|
+
let mergeItem = mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1968
2016
|
if (mergeItem) {
|
|
1969
2017
|
mergeItem.rowspan = rowspan;
|
|
1970
2018
|
mergeItem.colspan = colspan;
|
|
@@ -1982,37 +2030,26 @@ function handleFooterMerge($xeTable, merges) {
|
|
|
1982
2030
|
_rowspan: rowspan,
|
|
1983
2031
|
_colspan: colspan
|
|
1984
2032
|
};
|
|
1985
|
-
|
|
1986
|
-
|
|
2033
|
+
mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
2034
|
+
mergeHeaderList.push(mergeItem);
|
|
1987
2035
|
}
|
|
1988
2036
|
}
|
|
1989
2037
|
}
|
|
1990
2038
|
});
|
|
1991
2039
|
}
|
|
1992
2040
|
}
|
|
1993
|
-
function
|
|
2041
|
+
function removeHeaderMerges($xeTable, merges) {
|
|
1994
2042
|
const internalData = $xeTable;
|
|
1995
|
-
const {
|
|
2043
|
+
const { mergeHeaderList, fullColumnIdData, mergeHeaderMaps } = internalData;
|
|
1996
2044
|
const rest = [];
|
|
1997
2045
|
if (merges) {
|
|
1998
|
-
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1999
2046
|
if (!XEUtils.isArray(merges)) {
|
|
2000
2047
|
merges = [merges];
|
|
2001
2048
|
}
|
|
2002
2049
|
merges.forEach((item) => {
|
|
2003
2050
|
const { row: margeRow, col: margeCol } = item;
|
|
2004
|
-
|
|
2051
|
+
const mergeRowIndex = XEUtils.isNumber(margeRow) ? margeRow : -1;
|
|
2005
2052
|
let mergeColumnIndex = -1;
|
|
2006
|
-
if (XEUtils.isNumber(margeRow)) {
|
|
2007
|
-
mergeRowIndex = margeRow;
|
|
2008
|
-
}
|
|
2009
|
-
else {
|
|
2010
|
-
const rowid = margeRow ? handleGetRowId(margeRow) : null;
|
|
2011
|
-
const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
|
|
2012
|
-
if (rowRest) {
|
|
2013
|
-
mergeRowIndex = rowRest._index;
|
|
2014
|
-
}
|
|
2015
|
-
}
|
|
2016
2053
|
if (XEUtils.isNumber(margeCol)) {
|
|
2017
2054
|
mergeColumnIndex = margeCol;
|
|
2018
2055
|
}
|
|
@@ -2023,14 +2060,14 @@ function removeBodyMerges($xeTable, merges) {
|
|
|
2023
2060
|
mergeColumnIndex = colRest._index;
|
|
2024
2061
|
}
|
|
2025
2062
|
}
|
|
2026
|
-
const mcIndex = XEUtils.findIndexOf(
|
|
2063
|
+
const mcIndex = XEUtils.findIndexOf(mergeHeaderList, item => item.row === mergeRowIndex && item.col === mergeColumnIndex);
|
|
2027
2064
|
if (mcIndex > -1) {
|
|
2028
|
-
const rItems =
|
|
2065
|
+
const rItems = mergeHeaderList.splice(mcIndex, 1);
|
|
2029
2066
|
const item = rItems[0];
|
|
2030
2067
|
if (item) {
|
|
2031
|
-
rest.push(
|
|
2032
|
-
if (
|
|
2033
|
-
delete
|
|
2068
|
+
rest.push(item);
|
|
2069
|
+
if (mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
|
|
2070
|
+
delete mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
2034
2071
|
}
|
|
2035
2072
|
}
|
|
2036
2073
|
}
|
|
@@ -2038,6 +2075,62 @@ function removeBodyMerges($xeTable, merges) {
|
|
|
2038
2075
|
}
|
|
2039
2076
|
return rest;
|
|
2040
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
|
+
}
|
|
2041
2134
|
function removeFooterMerges($xeTable, merges) {
|
|
2042
2135
|
const internalData = $xeTable;
|
|
2043
2136
|
const { mergeFooterList, fullColumnIdData, mergeFooterMaps } = internalData;
|
|
@@ -2148,8 +2241,23 @@ function clearAllSort($xeTable) {
|
|
|
2148
2241
|
function calcTableHeight($xeTable, key) {
|
|
2149
2242
|
const props = $xeTable;
|
|
2150
2243
|
const reactData = $xeTable;
|
|
2244
|
+
const { editConfig } = props;
|
|
2151
2245
|
const { parentHeight } = reactData;
|
|
2152
|
-
|
|
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
|
+
}
|
|
2153
2261
|
let num = 0;
|
|
2154
2262
|
if (val) {
|
|
2155
2263
|
if (val === '100%' || val === 'auto') {
|
|
@@ -2648,11 +2756,19 @@ function handleDefaultMergeCells($xeTable) {
|
|
|
2648
2756
|
$xeTable.setMergeCells(mergeCells);
|
|
2649
2757
|
}
|
|
2650
2758
|
}
|
|
2759
|
+
function handleDefaultMergeHeaderItems($xeTable) {
|
|
2760
|
+
const props = $xeTable;
|
|
2761
|
+
const { mergeHeaderCells } = props;
|
|
2762
|
+
if (mergeHeaderCells) {
|
|
2763
|
+
$xeTable.setMergeHeaderCells(mergeHeaderCells);
|
|
2764
|
+
}
|
|
2765
|
+
}
|
|
2651
2766
|
function handleDefaultMergeFooterItems($xeTable) {
|
|
2652
2767
|
const props = $xeTable;
|
|
2653
|
-
const { mergeFooterItems } = props;
|
|
2654
|
-
|
|
2655
|
-
|
|
2768
|
+
const { mergeFooterCells, mergeFooterItems } = props;
|
|
2769
|
+
const mFooterCells = mergeFooterCells || mergeFooterItems;
|
|
2770
|
+
if (mFooterCells) {
|
|
2771
|
+
$xeTable.setMergeFooterCells(mFooterCells);
|
|
2656
2772
|
}
|
|
2657
2773
|
}
|
|
2658
2774
|
// 计算可视渲染相关数据
|
|
@@ -3105,6 +3221,10 @@ function loadTableData($xeTable, datas, isReset) {
|
|
|
3105
3221
|
}
|
|
3106
3222
|
handleReserveStatus($xeTable);
|
|
3107
3223
|
$xeTable.checkSelectionStatus();
|
|
3224
|
+
$xeTable.dispatchEvent('data-change', {
|
|
3225
|
+
visibleColumn: internalData.visibleColumn,
|
|
3226
|
+
visibleData: internalData.afterFullData
|
|
3227
|
+
}, null);
|
|
3108
3228
|
return new Promise(resolve => {
|
|
3109
3229
|
$xeTable.$nextTick()
|
|
3110
3230
|
.then(() => handleRecalculateStyle($xeTable, false, false, false))
|
|
@@ -3167,6 +3287,7 @@ function handleLoadDefaults($xeTable) {
|
|
|
3167
3287
|
handleDefaultTreeExpand($xeTable);
|
|
3168
3288
|
handleDefaultRowGroupExpand($xeTable);
|
|
3169
3289
|
handleDefaultMergeCells($xeTable);
|
|
3290
|
+
handleDefaultMergeHeaderItems($xeTable);
|
|
3170
3291
|
handleDefaultMergeFooterItems($xeTable);
|
|
3171
3292
|
$xeTable.$nextTick(() => setTimeout(() => $xeTable.recalculate()));
|
|
3172
3293
|
}
|
|
@@ -6677,6 +6798,14 @@ const Methods = {
|
|
|
6677
6798
|
internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
|
|
6678
6799
|
reactData.mergeBodyFlag++;
|
|
6679
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
|
+
},
|
|
6680
6809
|
handleUpdateFooterMerge() {
|
|
6681
6810
|
const $xeTable = this;
|
|
6682
6811
|
const reactData = $xeTable;
|
|
@@ -11139,6 +11268,10 @@ const Methods = {
|
|
|
11139
11268
|
}
|
|
11140
11269
|
reactData.footerTableData = footData;
|
|
11141
11270
|
$xeTable.handleUpdateFooterMerge();
|
|
11271
|
+
$xeTable.dispatchEvent('footer-data-change', {
|
|
11272
|
+
visibleColumn: internalData.visibleColumn,
|
|
11273
|
+
footData
|
|
11274
|
+
}, null);
|
|
11142
11275
|
return $xeTable.$nextTick();
|
|
11143
11276
|
},
|
|
11144
11277
|
/**
|
|
@@ -11219,45 +11352,101 @@ const Methods = {
|
|
|
11219
11352
|
return updateStyle($xeTable);
|
|
11220
11353
|
});
|
|
11221
11354
|
},
|
|
11222
|
-
|
|
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) {
|
|
11223
11399
|
const $xeTable = this;
|
|
11224
11400
|
const props = $xeTable;
|
|
11225
11401
|
if (props.footerSpanMethod) {
|
|
11226
|
-
errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
11402
|
+
errLog('vxe.error.errConflicts', ['merge-footer-cells | merge-footer-items', 'footer-span-method']);
|
|
11227
11403
|
}
|
|
11228
11404
|
handleFooterMerge($xeTable, merges);
|
|
11229
11405
|
$xeTable.handleUpdateFooterMerge();
|
|
11230
11406
|
return $xeTable.$nextTick().then(() => {
|
|
11231
|
-
$xeTable.updateCellAreas();
|
|
11232
11407
|
return updateStyle($xeTable);
|
|
11233
11408
|
});
|
|
11234
11409
|
},
|
|
11235
|
-
|
|
11410
|
+
setMergeFooterItems(merges) {
|
|
11411
|
+
const $xeTable = this;
|
|
11412
|
+
// errLog('vxe.error.delFunc', ['setMergeFooterItems', 'setMergeFooterCells'])
|
|
11413
|
+
return $xeTable.setMergeFooterCells(merges);
|
|
11414
|
+
},
|
|
11415
|
+
removeMergeFooterCells(merges) {
|
|
11236
11416
|
const $xeTable = this;
|
|
11237
11417
|
const props = $xeTable;
|
|
11238
11418
|
if (props.footerSpanMethod) {
|
|
11239
|
-
errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
11419
|
+
errLog('vxe.error.errConflicts', ['merge-footer-cells | merge-footer-items', 'footer-span-method']);
|
|
11240
11420
|
}
|
|
11241
11421
|
const rest = removeFooterMerges($xeTable, merges);
|
|
11242
11422
|
$xeTable.handleUpdateFooterMerge();
|
|
11243
11423
|
return $xeTable.$nextTick().then(() => {
|
|
11244
|
-
$xeTable.updateCellAreas();
|
|
11245
11424
|
updateStyle($xeTable);
|
|
11246
11425
|
return rest;
|
|
11247
11426
|
});
|
|
11248
11427
|
},
|
|
11428
|
+
removeMergeFooterItems(merges) {
|
|
11429
|
+
const $xeTable = this;
|
|
11430
|
+
// errLog('vxe.error.delFunc', ['removeMergeFooterItems', 'removeMergeFooterCells'])
|
|
11431
|
+
return $xeTable.removeMergeFooterCells(merges);
|
|
11432
|
+
},
|
|
11249
11433
|
/**
|
|
11250
11434
|
* 获取所有被合并的表尾
|
|
11251
11435
|
*/
|
|
11252
|
-
|
|
11436
|
+
getMergeFooterCells() {
|
|
11253
11437
|
const $xeTable = this;
|
|
11254
11438
|
const internalData = $xeTable;
|
|
11255
11439
|
return internalData.mergeFooterList.slice(0);
|
|
11256
11440
|
},
|
|
11441
|
+
getMergeFooterItems() {
|
|
11442
|
+
const $xeTable = this;
|
|
11443
|
+
// errLog('vxe.error.delFunc', ['getMergeFooterItems', 'getMergeFooterCells'])
|
|
11444
|
+
return $xeTable.getMergeFooterCells();
|
|
11445
|
+
},
|
|
11257
11446
|
/**
|
|
11258
11447
|
* 清除所有表尾合并
|
|
11259
11448
|
*/
|
|
11260
|
-
|
|
11449
|
+
clearMergeFooterCells() {
|
|
11261
11450
|
const $xeTable = this;
|
|
11262
11451
|
const reactData = $xeTable;
|
|
11263
11452
|
const internalData = $xeTable;
|
|
@@ -11269,6 +11458,11 @@ const Methods = {
|
|
|
11269
11458
|
return updateStyle($xeTable);
|
|
11270
11459
|
});
|
|
11271
11460
|
},
|
|
11461
|
+
clearMergeFooterItems() {
|
|
11462
|
+
const $xeTable = this;
|
|
11463
|
+
// errLog('vxe.error.delFunc', ['clearMergeFooterItems', 'clearMergeFooterCells'])
|
|
11464
|
+
return $xeTable.clearMergeFooterCells();
|
|
11465
|
+
},
|
|
11272
11466
|
handleUpdateAggData() {
|
|
11273
11467
|
const $xeTable = this;
|
|
11274
11468
|
const internalData = $xeTable;
|
package/es/table/src/props.js
CHANGED
|
@@ -10,7 +10,7 @@ export const tableProps = {
|
|
|
10
10
|
// 表格的最小高度
|
|
11
11
|
minHeight: {
|
|
12
12
|
type: [Number, String],
|
|
13
|
-
default: () =>
|
|
13
|
+
default: () => null
|
|
14
14
|
},
|
|
15
15
|
// 表格的最大高度
|
|
16
16
|
maxHeight: [Number, String],
|
|
@@ -129,20 +129,37 @@ export const tableProps = {
|
|
|
129
129
|
headerRowStyle: [Object, Function],
|
|
130
130
|
// 给表尾行附加样式
|
|
131
131
|
footerRowStyle: [Object, Function],
|
|
132
|
-
//
|
|
132
|
+
// 用于分组表头,显示为自定义列头,配合 mergeHeaderCells 灵活实现自定义合并
|
|
133
|
+
showCustomHeader: {
|
|
134
|
+
type: Boolean,
|
|
135
|
+
default: () => getConfig().table.showCustomHeader
|
|
136
|
+
},
|
|
137
|
+
// 临时合并指定的表头单元格
|
|
138
|
+
mergeHeaderCells: Array,
|
|
139
|
+
// 临时合并指定的单元格
|
|
133
140
|
mergeCells: Array,
|
|
134
|
-
//
|
|
141
|
+
// 临时合并指定的表尾单元格
|
|
142
|
+
mergeFooterCells: Array,
|
|
135
143
|
mergeFooterItems: Array,
|
|
136
144
|
// 自定义合并行或列的方法
|
|
137
145
|
spanMethod: Function,
|
|
138
146
|
// 表尾合并行或列
|
|
139
147
|
footerSpanMethod: Function,
|
|
140
148
|
// 设置所有内容过长时显示为省略号
|
|
141
|
-
showOverflow: {
|
|
149
|
+
showOverflow: {
|
|
150
|
+
type: [Boolean, String],
|
|
151
|
+
default: () => getConfig().table.showOverflow
|
|
152
|
+
},
|
|
142
153
|
// 设置表头所有内容过长时显示为省略号
|
|
143
|
-
showHeaderOverflow: {
|
|
154
|
+
showHeaderOverflow: {
|
|
155
|
+
type: [Boolean, String],
|
|
156
|
+
default: () => getConfig().table.showHeaderOverflow
|
|
157
|
+
},
|
|
144
158
|
// 设置表尾所有内容过长时显示为省略号
|
|
145
|
-
showFooterOverflow: {
|
|
159
|
+
showFooterOverflow: {
|
|
160
|
+
type: [Boolean, String],
|
|
161
|
+
default: () => getConfig().table.showFooterOverflow
|
|
162
|
+
},
|
|
146
163
|
/** 高级属性 */
|
|
147
164
|
/**
|
|
148
165
|
* (即将废弃)columnKey 已废弃,被 column-config.useKey 替换
|
package/es/table/src/table.js
CHANGED
|
@@ -31,12 +31,19 @@ function handleUpdateMergeBodyCells($xeTable, merges) {
|
|
|
31
31
|
internalData.mergeBodyCellMaps = {};
|
|
32
32
|
$xeTable.setMergeCells(merges);
|
|
33
33
|
}
|
|
34
|
+
function handleUpdateMergeHeaderCells($xeTable, merges) {
|
|
35
|
+
const internalData = $xeTable;
|
|
36
|
+
internalData.mergeHeaderList = [];
|
|
37
|
+
internalData.mergeHeaderMaps = {};
|
|
38
|
+
internalData.mergeHeaderCellMaps = {};
|
|
39
|
+
$xeTable.setMergeHeaderCells(merges);
|
|
40
|
+
}
|
|
34
41
|
function handleUpdateMergeFooterCells($xeTable, merges) {
|
|
35
42
|
const internalData = $xeTable;
|
|
36
43
|
internalData.mergeFooterList = [];
|
|
37
44
|
internalData.mergeFooterMaps = {};
|
|
38
45
|
internalData.mergeFooterCellMaps = {};
|
|
39
|
-
$xeTable.
|
|
46
|
+
$xeTable.setMergeFooterCells(merges);
|
|
40
47
|
}
|
|
41
48
|
function handleKeyField($xeTable) {
|
|
42
49
|
const internalData = $xeTable;
|
|
@@ -331,7 +338,10 @@ function renderScrollX(h, $xeTable) {
|
|
|
331
338
|
ref: 'refScrollXSpaceElem',
|
|
332
339
|
class: 'vxe-table--scroll-x-space'
|
|
333
340
|
})
|
|
334
|
-
])
|
|
341
|
+
]),
|
|
342
|
+
h('div', {
|
|
343
|
+
class: 'vxe-table--scroll-x-handle-appearance'
|
|
344
|
+
})
|
|
335
345
|
]),
|
|
336
346
|
h('div', {
|
|
337
347
|
ref: 'refScrollXRightCornerElem',
|
|
@@ -475,9 +485,7 @@ export default {
|
|
|
475
485
|
},
|
|
476
486
|
data() {
|
|
477
487
|
const xID = XEUtils.uniqueId();
|
|
478
|
-
|
|
479
|
-
xID,
|
|
480
|
-
tId: xID,
|
|
488
|
+
const reactData = {
|
|
481
489
|
// 低性能的静态列
|
|
482
490
|
staticColumns: [],
|
|
483
491
|
// 渲染的列分组
|
|
@@ -498,6 +506,8 @@ export default {
|
|
|
498
506
|
scrollbarWidth: 0,
|
|
499
507
|
// 横向滚动条的高度
|
|
500
508
|
scrollbarHeight: 0,
|
|
509
|
+
// 最后滚动时间戳
|
|
510
|
+
lastScrollTime: 0,
|
|
501
511
|
// 行高
|
|
502
512
|
rowHeight: 0,
|
|
503
513
|
// 表格父容器的高度
|
|
@@ -523,9 +533,13 @@ export default {
|
|
|
523
533
|
expandColumn: null,
|
|
524
534
|
checkboxColumn: null,
|
|
525
535
|
radioColumn: null,
|
|
526
|
-
hasFixedColumn: false,
|
|
527
536
|
// 树节点列信息
|
|
528
537
|
treeNodeColumn: null,
|
|
538
|
+
hasFixedColumn: false,
|
|
539
|
+
// 刷新列标识,当列筛选被改变时,触发表格刷新数据
|
|
540
|
+
upDataFlag: 0,
|
|
541
|
+
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
542
|
+
reColumnFlag: 0,
|
|
529
543
|
// 初始化标识
|
|
530
544
|
initStore: {
|
|
531
545
|
filter: false,
|
|
@@ -533,11 +547,6 @@ export default {
|
|
|
533
547
|
export: false,
|
|
534
548
|
custom: false
|
|
535
549
|
},
|
|
536
|
-
customColumnList: [],
|
|
537
|
-
// 刷新列标识,当列筛选被改变时,触发表格刷新数据
|
|
538
|
-
upDataFlag: 0,
|
|
539
|
-
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
540
|
-
reColumnFlag: 0,
|
|
541
550
|
// 自定义列相关的信息
|
|
542
551
|
customStore: {
|
|
543
552
|
btnEl: null,
|
|
@@ -551,6 +560,7 @@ export default {
|
|
|
551
560
|
oldFixedMaps: {},
|
|
552
561
|
oldVisibleMaps: {}
|
|
553
562
|
},
|
|
563
|
+
customColumnList: [],
|
|
554
564
|
// 当前选中的筛选列
|
|
555
565
|
filterStore: {
|
|
556
566
|
isAllSelected: false,
|
|
@@ -619,6 +629,7 @@ export default {
|
|
|
619
629
|
tooltipStore: {
|
|
620
630
|
row: null,
|
|
621
631
|
column: null,
|
|
632
|
+
content: null,
|
|
622
633
|
visible: false,
|
|
623
634
|
currOpts: {}
|
|
624
635
|
},
|
|
@@ -651,8 +662,8 @@ export default {
|
|
|
651
662
|
columns: [],
|
|
652
663
|
isPrint: false,
|
|
653
664
|
hasFooter: false,
|
|
654
|
-
hasTree: false,
|
|
655
665
|
hasMerge: false,
|
|
666
|
+
hasTree: false,
|
|
656
667
|
hasColgroup: false,
|
|
657
668
|
visible: false
|
|
658
669
|
},
|
|
@@ -683,6 +694,7 @@ export default {
|
|
|
683
694
|
pendingRowFlag: 1,
|
|
684
695
|
insertRowFlag: 1,
|
|
685
696
|
removeRowFlag: 1,
|
|
697
|
+
mergeHeadFlag: 1,
|
|
686
698
|
mergeBodyFlag: 1,
|
|
687
699
|
mergeFootFlag: 1,
|
|
688
700
|
rowHeightStore: {
|
|
@@ -699,6 +711,7 @@ export default {
|
|
|
699
711
|
scrollXLeft: 0,
|
|
700
712
|
scrollXWidth: 0,
|
|
701
713
|
isScrollXBig: false,
|
|
714
|
+
lazScrollLoading: false,
|
|
702
715
|
rowExpandHeightFlag: 1,
|
|
703
716
|
calcCellHeightFlag: 1,
|
|
704
717
|
resizeHeightFlag: 1,
|
|
@@ -711,12 +724,11 @@ export default {
|
|
|
711
724
|
dragTipText: '',
|
|
712
725
|
isDragResize: false,
|
|
713
726
|
isRowLoading: false,
|
|
714
|
-
isColLoading: false
|
|
715
|
-
reScrollFlag: 0,
|
|
716
|
-
reLayoutFlag: 0,
|
|
717
|
-
footFlag: 0,
|
|
718
|
-
crossTableDragRowInfo: crossTableDragRowGlobal
|
|
727
|
+
isColLoading: false
|
|
719
728
|
};
|
|
729
|
+
return Object.assign(Object.assign({ xID }, reactData), {
|
|
730
|
+
// 私有属性
|
|
731
|
+
reScrollFlag: 0, reLayoutFlag: 0, footFlag: 0, mergeFooteCellFlag: 0, crossTableDragRowInfo: crossTableDragRowGlobal });
|
|
720
732
|
},
|
|
721
733
|
computed: Object.assign(Object.assign({}, {}), { tableId() {
|
|
722
734
|
return this.computeTableId;
|
|
@@ -1395,9 +1407,21 @@ export default {
|
|
|
1395
1407
|
const $xeTable = this;
|
|
1396
1408
|
handleUpdateMergeBodyCells($xeTable, value);
|
|
1397
1409
|
},
|
|
1398
|
-
|
|
1410
|
+
mergeHeaderCells(value) {
|
|
1411
|
+
const $xeTable = this;
|
|
1412
|
+
handleUpdateMergeHeaderCells($xeTable, value);
|
|
1413
|
+
},
|
|
1414
|
+
mergeFooterCells() {
|
|
1415
|
+
this.mergeFooteCellFlag++;
|
|
1416
|
+
},
|
|
1417
|
+
mergeFooterItems() {
|
|
1418
|
+
this.mergeFooteCellFlag++;
|
|
1419
|
+
},
|
|
1420
|
+
mergeFooteCellFlag() {
|
|
1399
1421
|
const $xeTable = this;
|
|
1400
|
-
|
|
1422
|
+
const props = $xeTable;
|
|
1423
|
+
const mFooterCells = props.mergeFooterCells || props.mergeFooterItems;
|
|
1424
|
+
handleUpdateMergeFooterCells($xeTable, mFooterCells || []);
|
|
1401
1425
|
},
|
|
1402
1426
|
computeRowGroupFields(val) {
|
|
1403
1427
|
const $xeTable = this;
|