@kdcloudjs/table 1.1.3-canary.1 → 1.1.3-canary.10
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/dist/@kdcloudjs/table.css +1 -1
- package/dist/@kdcloudjs/table.js +602 -205
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +6 -6
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/es/table/base/helpers/TableDOMUtils.d.ts +2 -0
- package/es/table/base/helpers/TableDOMUtils.js +48 -12
- package/es/table/base/helpers/getRichVisibleRectsStream.js +1 -1
- package/es/table/base/html-table.js +1 -1
- package/es/table/base/styles.d.ts +2 -0
- package/es/table/base/styles.js +4 -2
- package/es/table/base/table.d.ts +0 -1
- package/es/table/base/table.js +13 -27
- package/es/table/pipeline/features/columnDrag.js +27 -16
- package/es/table/pipeline/features/columnFilter.d.ts +2 -2
- package/es/table/pipeline/features/columnFilter.js +33 -12
- package/es/table/pipeline/features/contextMenu.js +1 -0
- package/es/table/pipeline/features/filter/DefaultFilterIcon.d.ts +5 -0
- package/es/table/pipeline/features/filter/DefaultFilterIcon.js +20 -0
- package/es/table/pipeline/features/filter/Filter.d.ts +1 -1
- package/es/table/pipeline/features/filter/Filter.js +16 -20
- package/es/table/pipeline/features/filter/FilterPanel.js +25 -16
- package/es/table/pipeline/features/filter/util.js +4 -4
- package/es/table/pipeline/features/footerDataSource.d.ts +9 -0
- package/es/table/pipeline/features/footerDataSource.js +25 -0
- package/es/table/pipeline/features/index.d.ts +2 -0
- package/es/table/pipeline/features/index.js +3 -1
- package/es/table/pipeline/features/mergeCellHover.d.ts +2 -0
- package/es/table/pipeline/features/mergeCellHover.js +32 -0
- package/es/table/pipeline/features/multiSelect.js +7 -2
- package/es/table/pipeline/features/rangeSelection.d.ts +1 -1
- package/es/table/pipeline/features/rangeSelection.js +156 -28
- package/es/table/pipeline/features/singleSelect.js +4 -0
- package/es/table/pipeline/features/treeMode.d.ts +2 -0
- package/es/table/pipeline/features/treeMode.js +18 -20
- package/es/table/pipeline/pipeline.d.ts +5 -1
- package/es/table/pipeline/pipeline.js +11 -10
- package/lib/table/base/helpers/TableDOMUtils.d.ts +2 -0
- package/lib/table/base/helpers/TableDOMUtils.js +51 -12
- package/lib/table/base/helpers/getRichVisibleRectsStream.js +1 -1
- package/lib/table/base/html-table.js +1 -1
- package/lib/table/base/styles.d.ts +2 -0
- package/lib/table/base/styles.js +4 -2
- package/lib/table/base/table.d.ts +0 -1
- package/lib/table/base/table.js +13 -27
- package/lib/table/pipeline/features/columnDrag.js +27 -16
- package/lib/table/pipeline/features/columnFilter.d.ts +2 -2
- package/lib/table/pipeline/features/columnFilter.js +31 -12
- package/lib/table/pipeline/features/contextMenu.js +1 -0
- package/lib/table/pipeline/features/filter/DefaultFilterIcon.d.ts +5 -0
- package/lib/table/pipeline/features/filter/DefaultFilterIcon.js +30 -0
- package/lib/table/pipeline/features/filter/Filter.d.ts +1 -1
- package/lib/table/pipeline/features/filter/Filter.js +17 -20
- package/lib/table/pipeline/features/filter/FilterPanel.js +25 -15
- package/lib/table/pipeline/features/filter/util.js +4 -4
- package/lib/table/pipeline/features/footerDataSource.d.ts +9 -0
- package/lib/table/pipeline/features/footerDataSource.js +41 -0
- package/lib/table/pipeline/features/index.d.ts +2 -0
- package/lib/table/pipeline/features/index.js +23 -1
- package/lib/table/pipeline/features/mergeCellHover.d.ts +2 -0
- package/lib/table/pipeline/features/mergeCellHover.js +43 -0
- package/lib/table/pipeline/features/multiSelect.js +6 -1
- package/lib/table/pipeline/features/rangeSelection.d.ts +1 -1
- package/lib/table/pipeline/features/rangeSelection.js +158 -30
- package/lib/table/pipeline/features/singleSelect.js +4 -0
- package/lib/table/pipeline/features/treeMode.d.ts +2 -0
- package/lib/table/pipeline/features/treeMode.js +19 -22
- package/lib/table/pipeline/pipeline.d.ts +5 -1
- package/lib/table/pipeline/pipeline.js +12 -10
- package/package.json +1 -1
|
@@ -36,7 +36,7 @@ export declare class TablePipeline {
|
|
|
36
36
|
private _tableProps;
|
|
37
37
|
private _dataSource;
|
|
38
38
|
private _columns;
|
|
39
|
-
private _footerDataSource
|
|
39
|
+
private _footerDataSource?;
|
|
40
40
|
static defaultIndents: TablePipelineIndentsConfig;
|
|
41
41
|
readonly ctx: TablePipelineCtx;
|
|
42
42
|
private readonly state;
|
|
@@ -88,6 +88,10 @@ export declare class TablePipeline {
|
|
|
88
88
|
setFeatureOptions(optionKey: string, value: any): void;
|
|
89
89
|
/** 获取 BaseTable 的 props,结果中包含 dataSource/columns/primaryKey/getRowProps 四个字段 */
|
|
90
90
|
getProps(this: TablePipeline): TableProps;
|
|
91
|
+
/**
|
|
92
|
+
* 清除范围选中内容
|
|
93
|
+
*/
|
|
94
|
+
clearRangeSelection(): void;
|
|
91
95
|
}
|
|
92
96
|
export declare function useTablePipeline(ctx?: Partial<TablePipelineCtx>): TablePipeline;
|
|
93
97
|
export {};
|
|
@@ -8,6 +8,7 @@ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instan
|
|
|
8
8
|
import { useState, useRef } from 'react';
|
|
9
9
|
import { mergeCellProps } from '../utils';
|
|
10
10
|
import { autoFillTableWidth, tableWidthKey } from './features/autoFill';
|
|
11
|
+
import { rangeSelectionKey } from './features/rangeSelection';
|
|
11
12
|
/**
|
|
12
13
|
* 表格数据处理流水线。TablePipeline 提供了表格数据处理过程中的一些上下方与工具方法,包括……
|
|
13
14
|
*
|
|
@@ -276,19 +277,19 @@ export var TablePipeline = /*#__PURE__*/function () {
|
|
|
276
277
|
|
|
277
278
|
result.setTableDomHelper = function (domHelper) {
|
|
278
279
|
_this2.ref.current.domHelper = domHelper;
|
|
279
|
-
};
|
|
280
|
-
// result.clearRangeSelectionStatus = () => {
|
|
281
|
-
// const { rangeSelectedChange } = this.getFeatureOptions(rangeSelectionKey)
|
|
282
|
-
// const rangeSelection = this.getStateAtKey(rangeSelectionKey)
|
|
283
|
-
// if (rangeSelection) {
|
|
284
|
-
// rangeSelectedChange?.(null)
|
|
285
|
-
// }
|
|
286
|
-
// }
|
|
287
|
-
// }
|
|
288
|
-
|
|
280
|
+
};
|
|
289
281
|
|
|
290
282
|
return result;
|
|
291
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* 清除范围选中内容
|
|
286
|
+
*/
|
|
287
|
+
|
|
288
|
+
}, {
|
|
289
|
+
key: "clearRangeSelection",
|
|
290
|
+
value: function clearRangeSelection() {
|
|
291
|
+
this.setStateAtKey(rangeSelectionKey, null);
|
|
292
|
+
}
|
|
292
293
|
}]);
|
|
293
294
|
|
|
294
295
|
return TablePipeline;
|
|
@@ -18,4 +18,6 @@ export declare class TableDOMHelper {
|
|
|
18
18
|
getRightLockShadow(): HTMLDivElement;
|
|
19
19
|
getLoadingIndicator(): HTMLDivElement;
|
|
20
20
|
getRowTop(rowIndex: number): number;
|
|
21
|
+
getRowNodeListByEvent: (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>) => HTMLElement[];
|
|
22
|
+
getInRangeRowByCellEvent: (e: React.MouseEvent<HTMLTableCellElement, MouseEvent>) => unknown[];
|
|
21
23
|
}
|
|
@@ -7,6 +7,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.TableDOMHelper = void 0;
|
|
9
9
|
|
|
10
|
+
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
11
|
+
|
|
12
|
+
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
|
13
|
+
|
|
10
14
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
11
15
|
|
|
12
16
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
|
|
@@ -54,9 +58,44 @@ var _styles = require("../styles");
|
|
|
54
58
|
// 表格 DOM 结构辅助工具
|
|
55
59
|
var TableDOMHelper = /*#__PURE__*/function () {
|
|
56
60
|
function TableDOMHelper(artTableWrapper) {
|
|
57
|
-
var
|
|
61
|
+
var _this = this,
|
|
62
|
+
_context2;
|
|
58
63
|
|
|
59
64
|
(0, _classCallCheck2.default)(this, TableDOMHelper);
|
|
65
|
+
|
|
66
|
+
this.getRowNodeListByEvent = function (e) {
|
|
67
|
+
var nodeList = null;
|
|
68
|
+
var rowIndex = e.currentTarget.dataset.rowindex;
|
|
69
|
+
|
|
70
|
+
if (rowIndex !== undefined) {
|
|
71
|
+
var targetParent = _this.tableBody.contains(e.currentTarget) ? _this.tableBody : _this.tableFooter;
|
|
72
|
+
nodeList = targetParent.querySelectorAll("tr[data-rowindex=\"".concat(rowIndex, "\"]"));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return nodeList;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
this.getInRangeRowByCellEvent = function (e) {
|
|
79
|
+
var _context;
|
|
80
|
+
|
|
81
|
+
var _a;
|
|
82
|
+
|
|
83
|
+
var getParentNode = function getParentNode(ele, target) {
|
|
84
|
+
if (ele.parentNode.nodeName === target) {
|
|
85
|
+
return ele.parentNode;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return getParentNode(ele.parentNode, target);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
e = e instanceof Array ? e[0] : e;
|
|
92
|
+
var curCell = e === null || e === void 0 ? void 0 : e.currentTarget;
|
|
93
|
+
var curRow = getParentNode(curCell, 'TR');
|
|
94
|
+
var curRowSpan = parseInt(e.currentTarget.getAttribute('rowspan')) || 1;
|
|
95
|
+
var rows = (_a = getParentNode(curCell, 'TABLE')) === null || _a === void 0 ? void 0 : _a.rows;
|
|
96
|
+
return (0, _slice.default)(_context = (0, _from.default)(rows)).call(_context, curRow.rowIndex, curRow.rowIndex + curRowSpan);
|
|
97
|
+
};
|
|
98
|
+
|
|
60
99
|
this.artTableWrapper = artTableWrapper;
|
|
61
100
|
this.artTable = artTableWrapper.querySelector(".".concat(_styles.Classes.artTable));
|
|
62
101
|
this.tableHeader = this.artTable.querySelector(".".concat(_styles.Classes.tableHeader));
|
|
@@ -66,7 +105,7 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
66
105
|
this.tableElement = this.artTable.querySelector(".".concat(_styles.Classes.tableBody, " table"));
|
|
67
106
|
this.tableFooter = this.artTable.querySelector(".".concat(_styles.Classes.tableFooter));
|
|
68
107
|
this.tableFooterMain = this.artTable.querySelector(".".concat(_styles.Classes.tableFooterMain));
|
|
69
|
-
var stickyScrollSelector = (0, _concat.default)(
|
|
108
|
+
var stickyScrollSelector = (0, _concat.default)(_context2 = ".".concat(_styles.Classes.artTable, " + .")).call(_context2, _styles.Classes.stickyScroll);
|
|
70
109
|
this.stickyScroll = artTableWrapper.querySelector(stickyScrollSelector);
|
|
71
110
|
this.stickyScrollItem = this.stickyScroll.querySelector(".".concat(_styles.Classes.stickyScrollItem));
|
|
72
111
|
}
|
|
@@ -79,32 +118,32 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
79
118
|
}, {
|
|
80
119
|
key: "getTableRows",
|
|
81
120
|
value: function getTableRows() {
|
|
82
|
-
var
|
|
121
|
+
var _context3;
|
|
83
122
|
|
|
84
|
-
var tbody = this.artTable.querySelector((0, _concat.default)(
|
|
123
|
+
var tbody = this.artTable.querySelector((0, _concat.default)(_context3 = ".".concat(_styles.Classes.tableBody, " .")).call(_context3, _styles.Classes.virtual, " table tbody"));
|
|
85
124
|
return tbody.childNodes;
|
|
86
125
|
}
|
|
87
126
|
}, {
|
|
88
127
|
key: "getTableBodyHtmlTable",
|
|
89
128
|
value: function getTableBodyHtmlTable() {
|
|
90
|
-
var
|
|
129
|
+
var _context4;
|
|
91
130
|
|
|
92
|
-
return this.artTable.querySelector((0, _concat.default)(
|
|
131
|
+
return this.artTable.querySelector((0, _concat.default)(_context4 = ".".concat(_styles.Classes.tableBody, " .")).call(_context4, _styles.Classes.virtual, " table"));
|
|
93
132
|
}
|
|
94
133
|
}, {
|
|
95
134
|
key: "getLeftLockShadow",
|
|
96
135
|
value: function getLeftLockShadow() {
|
|
97
|
-
var
|
|
136
|
+
var _context5;
|
|
98
137
|
|
|
99
|
-
var selector = (0, _concat.default)(
|
|
138
|
+
var selector = (0, _concat.default)(_context5 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context5, _styles.Classes.leftLockShadow);
|
|
100
139
|
return this.artTable.querySelector(selector);
|
|
101
140
|
}
|
|
102
141
|
}, {
|
|
103
142
|
key: "getRightLockShadow",
|
|
104
143
|
value: function getRightLockShadow() {
|
|
105
|
-
var
|
|
144
|
+
var _context6;
|
|
106
145
|
|
|
107
|
-
var selector = (0, _concat.default)(
|
|
146
|
+
var selector = (0, _concat.default)(_context6 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context6, _styles.Classes.rightLockShadow);
|
|
108
147
|
return this.artTable.querySelector(selector);
|
|
109
148
|
}
|
|
110
149
|
}, {
|
|
@@ -115,10 +154,10 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
115
154
|
}, {
|
|
116
155
|
key: "getRowTop",
|
|
117
156
|
value: function getRowTop(rowIndex) {
|
|
118
|
-
var
|
|
157
|
+
var _context7, _context8;
|
|
119
158
|
|
|
120
159
|
if (rowIndex === 0) return 0;
|
|
121
|
-
var selector = (0, _concat.default)(
|
|
160
|
+
var selector = (0, _concat.default)(_context7 = (0, _concat.default)(_context8 = ".".concat(_styles.Classes.tableBody, " .")).call(_context8, _styles.Classes.tableRow, "[data-rowindex=\"")).call(_context7, rowIndex, "\"]");
|
|
122
161
|
var row = this.artTable.querySelector(selector);
|
|
123
162
|
var rowOffsetTop = row && row.offsetTop || 0;
|
|
124
163
|
var tableOffsetTop = this.tableElement.offsetTop || 0;
|
|
@@ -42,7 +42,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
|
42
42
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
43
|
|
|
44
44
|
function isWindow(arg) {
|
|
45
|
-
return arg.toString() === '[object Window]';
|
|
45
|
+
return arg.toString() === '[object Window]' || arg.toString() === '[object global]';
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
function isBody(arg) {
|
|
@@ -141,7 +141,7 @@ function HtmlTable(_ref) {
|
|
|
141
141
|
positionStyle.left = hozInfo.stickyLeftMap.get(colIndex);
|
|
142
142
|
} else if (colIndex >= fullFlatCount - rightFlatCount) {
|
|
143
143
|
positionStyle.position = 'sticky';
|
|
144
|
-
positionStyle.right = hozInfo.stickyRightMap.get(colIndex) - stickyRightOffset;
|
|
144
|
+
positionStyle.right = hozInfo.stickyRightMap.get(colIndex) - (typeof stickyRightOffset === 'number' ? stickyRightOffset : 0);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
return /*#__PURE__*/_react.default.createElement('td', (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({
|
|
@@ -40,6 +40,8 @@ export declare const Classes: {
|
|
|
40
40
|
readonly button: string;
|
|
41
41
|
readonly buttonPrimary: string;
|
|
42
42
|
readonly filterIcon: string;
|
|
43
|
+
readonly rangeSelection: string;
|
|
44
|
+
readonly tableCellRangeSingleCell: string;
|
|
43
45
|
readonly tableCellRangeSelected: string;
|
|
44
46
|
readonly tableCellRangeTop: string;
|
|
45
47
|
readonly tableCellRangeLeft: string;
|
package/lib/table/base/styles.js
CHANGED
|
@@ -76,6 +76,8 @@ var Classes = {
|
|
|
76
76
|
button: "".concat(prefix, "btn"),
|
|
77
77
|
buttonPrimary: "".concat(prefix, "btn-primary"),
|
|
78
78
|
filterIcon: "".concat(prefix, "filter-icon"),
|
|
79
|
+
rangeSelection: "".concat(prefix, "range-selection"),
|
|
80
|
+
tableCellRangeSingleCell: "".concat(prefix, "table-cell-range-single-cell"),
|
|
79
81
|
tableCellRangeSelected: "".concat(prefix, "table-cell-range-selected"),
|
|
80
82
|
tableCellRangeTop: "".concat(prefix, "table-cell-range-top"),
|
|
81
83
|
tableCellRangeLeft: "".concat(prefix, "table-cell-range-left"),
|
|
@@ -126,7 +128,7 @@ var defaultCSSVariables = {
|
|
|
126
128
|
'--primary-color': '#5582F3',
|
|
127
129
|
'--primary-color-level1': 'rgb(242, 248, 255)',
|
|
128
130
|
'--primary-color-level2': 'rgb(135, 173, 255)',
|
|
129
|
-
'--icon-color': '#
|
|
131
|
+
'--icon-color': '#666666',
|
|
130
132
|
'--strong-border-color': '#d9d9d9',
|
|
131
133
|
'--header-row-height': '32px',
|
|
132
134
|
'--header-color': '#333',
|
|
@@ -148,7 +150,7 @@ exports.defaultCSSVariables = defaultCSSVariables;
|
|
|
148
150
|
var variableConst = getCssVariableText(defaultCSSVariables);
|
|
149
151
|
exports.variableConst = variableConst;
|
|
150
152
|
|
|
151
|
-
var StyledArtTableWrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n :root {\n ", "\n }\n ", "\n\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n cursor: default;\n color: var(--color);\n font-size: var(--font-size);\n line-height: var(--line-height);\n position: relative;\n\n // \u8868\u683C\u5916\u8FB9\u6846\u7531 art-table-wrapper \u63D0\u4F9B\uFF0C\u800C\u4E0D\u662F\u7531\u5355\u5143\u683C\u63D0\u4F9B\n &.use-outer-border {\n ", ";\n }\n\n .no-scrollbar {\n ::-webkit-scrollbar {\n display: none;\n }\n }\n\n .", " {\n overflow: auto;\n flex-shrink: 1;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n
|
|
153
|
+
var StyledArtTableWrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n :root {\n ", "\n }\n ", "\n\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n cursor: default;\n color: var(--color);\n font-size: var(--font-size);\n line-height: var(--line-height);\n position: relative;\n\n // \u8868\u683C\u5916\u8FB9\u6846\u7531 art-table-wrapper \u63D0\u4F9B\uFF0C\u800C\u4E0D\u662F\u7531\u5355\u5143\u683C\u63D0\u4F9B\n &.use-outer-border {\n ", ";\n }\n\n .no-scrollbar {\n ::-webkit-scrollbar {\n display: none;\n }\n }\n\n .", " {\n overflow: auto;\n flex-shrink: 1;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n }\n\n .", " {\n overflow: hidden;\n background: var(--header-bgcolor);\n display: flex;\n flex-shrink: 0;\n border-bottom: var(--header-cell-border-horizontal);\n }\n\n .", " {\n display: flex;\n // justify-content: flex-start;\n align-items: center;\n height: inherit;\n }\n\n .", " {\n overflow-x:auto;\n flex-shrink: 0;\n flex-grow: 0;\n scrollbar-width: none; // \u517C\u5BB9\u706B\u72D0\n & {\n ::-webkit-scrollbar {\n display:none;\n }\n }\n }\n\n .", " {\n display: flex;\n flex: none;\n }\n .", ", .", " {\n background: var(--bgcolor);\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n position:relative;\n &.empty {\n position: relative;\n }\n }\n\n .", " {\n position: relative;\n }\n .", ", .", " {\n .", "{\n background-color: #e6effb !important;\n }\n .", "{\n border-top: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-left: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-bottom: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-right: 1px solid #0E5FD8 !important;\n }\n }\n \n .", " {\n user-select:none;\n }\n\n\n &.sticky-header .", " {\n position: sticky;\n top: 0;\n z-index: ", ";\n }\n\n &.sticky-footer .", " {\n position: sticky;\n bottom: 0;\n z-index: ", ";\n }\n\n table {\n width: 0;\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0;\n display: table;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n flex-grow: 0;\n position:relative;\n }\n\n // \u5728 tr \u4E0A\u8BBE\u7F6E .no-hover \u53EF\u4EE5\u7981\u7528\u9F20\u6807\u60AC\u505C\u6548\u679C\n tr:not(.no-hover):hover > td {\n background: var(--hover-bgcolor);\n }\n // \u4F7F\u7528 js \u6DFB\u52A0\u60AC\u6D6E\u6548\u679C\n tr:not(.no-hover).row-hover > td {\n background: var(--hover-bgcolor);\n }\n // \u5728 tr \u8BBE\u7F6E highlight \u53EF\u4EE5\u4E3A\u5E95\u4E0B\u7684 td \u8BBE\u7F6E\u4E3A\u9AD8\u4EAE\u8272\n // \u800C\u8BBE\u7F6E .no-highlight \u7684\u8BDD\u5219\u53EF\u4EE5\u7981\u7528\u9AD8\u4EAE\u6548\u679C\uFF1B\n tr:not(.no-highlight).highlight > td {\n background: var(--highlight-bgcolor);\n }\n\n th {\n font-weight: normal;\n text-align: left;\n padding: var(--cell-padding);\n height: var(--header-row-height);\n color: var(--header-color);\n background: var(--header-bgcolor);\n border:1px solid transparent;\n border-right: var(--header-cell-border-vertical);\n border-bottom: var(--header-cell-border-horizontal);\n position: relative;\n }\n\n th.resizeable{\n border-right:none\n }\n\n th.", " {\n border-right: none;\n border-bottom: none;\n }\n\n tr.", " th {\n border-top: var(--header-cell-border-horizontal);\n }\n th.", " {\n border-left: var(--header-cell-border-vertical);\n }\n\n td {\n padding: var(--cell-padding);\n background: var(--bgcolor);\n height: var(--row-height);\n border:1px solid transparent;\n border-right: var(--cell-border-vertical);\n border-bottom: var(--cell-border-horizontal);\n word-break: break-all;\n }\n td.", " {\n border-left: var(--cell-border-vertical);\n }\n tr.", " td {\n border-top: var(--cell-border-horizontal);\n }\n &.has-header tbody tr.", " td {\n border-top: none;\n }\n &.has-footer tbody tr.", " td {\n border-bottom: none;\n }\n\n .", ",\n .", " {\n z-index: ", ";\n }\n\n //#region \u9501\u5217\u9634\u5F71\n .", " {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: ", ";\n pointer-events: none;\n overflow: hidden;\n\n .", " {\n height: 100%;\n }\n\n .", " {\n margin-right: ", "px;\n box-shadow: none;\n\n &.show-shadow {\n box-shadow: var(--lock-shadow);\n border-right: var(--cell-border-vertical);\n }\n }\n\n .", " {\n margin-left: ", "px;\n box-shadow: none;\n\n &.show-shadow {\n box-shadow: var(--lock-shadow);\n border-left: var(--cell-border-vertical);\n }\n }\n }\n //#endregion\n\n //#region \u7A7A\u8868\u683C\u5C55\u73B0\n .", " {\n pointer-events: none;\n color: #99a3b3;\n font-size: 12px;\n text-align: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n\n .empty-image {\n width: 50px;\n height: 50px;\n }\n\n .empty-tips {\n margin-top: 16px;\n line-height: 1.5;\n }\n }\n //#endregion\n\n //#region IE\u517C\u5BB9\n &.ie-polyfill-wrapper {\n //\u9501\u5B9A\u5217\u517C\u5BB9 \u4EC5\u5728\u9501\u5B9A\u5217\u7684\u60C5\u51B5\u4E0B\u751F\u6548\n .", " {\n overflow-x: hidden;\n }\n .", ", .", " {\n position:relative;\n }\n .", " {\n overflow: hidden;\n }\n .", " {\n position: relative;\n }\n\n .", " {\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n }\n\n .", ", .", "{\n position: absolute;\n z-index: ", ";\n top: 0;\n }\n .", "{\n left:0;\n }\n .", "{\n right:0;\n }\n\n .", "{\n .", "{\n position: absolute;\n top: 0;\n width: 100%;\n z-index: ", ";\n }\n }\n\n tr:not(.no-hover).row-hover > td {\n background: var(--hover-bgcolor);\n }\n }\n //#endregion\n\n //#region \u7C98\u6027\u6EDA\u52A8\u6761\n .", " {\n overflow-y: hidden;\n overflow-x: auto;\n z-index: ", ";\n flex-shrink: 0;\n flex-grow: 0;\n border-top: 1px solid var(--border-color);\n background: var(--bgcolor);\n }\n\n .", " {\n // \u5FC5\u987B\u6709\u9AD8\u5EA6\u624D\u80FD\u51FA\u73B0\u6EDA\u52A8\u6761\n height: 1px;\n visibility: hidden;\n }\n //#endregion\n\n //#region \u52A0\u8F7D\u6837\u5F0F\n .", " {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: auto;\n\n .", " {\n filter: none;\n width: 100%;\n height: 100%;\n overflow: hidden;//\u5217\u5168\u90E8\u56FA\u5B9A\u65F6\uFF0C\u5B58\u5728\u53CC\u6A2A\u5411\u6EDA\u52A8\u6761\n display: flex;\n position: relative;\n flex-direction: column;\n }\n\n .", " {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n .", " {\n position: sticky;\n z-index: ", ";\n transform: translateY(-50%);\n }\n }\n //#endregion\n\n //#region \u8868\u683C\u8FC7\u6EE4\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n padding: 6px 4px;\n &:hover{\n background-color: #e5e5e5;\n }\n }\n .", " {\n display: flex\n }\n //#endregion\n\n //#region \u8868\u683C\u6392\u5E8F\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n }\n //#endregion\n\n //#region \u6EDA\u52A8\u6761\u5360\u4F4D\n .", " {\n visibility: hidden;\n flex-shrink: 0;\n }\n .", " .", " {\n border-top: var(--cell-border-horizontal);\n }\n //#endregion\n "])), variableConst, variableConst, outerBorderStyleMixin, Classes.artTable, Classes.tableHeader, Classes.tableHeaderCellContent, Classes.virtual, Classes.tableFooter, Classes.tableBody, Classes.tableFooter, Classes.tableRow, Classes.tableBody, Classes.tableFooter, Classes.tableCellRangeSelected, Classes.tableCellRangeTop, Classes.tableCellRangeLeft, Classes.tableCellRangeBottom, Classes.tableCellRangeRight, Classes.rangeSelection, Classes.tableHeader, Z.header, Classes.tableFooter, Z.footer, Classes.leaf, Classes.first, Classes.first, Classes.first, Classes.first, Classes.first, Classes.last, Classes.lockLeft, Classes.lockRight, Z.lock, Classes.lockShadowMask, Z.lockShadow, Classes.lockShadow, Classes.leftLockShadow, LOCK_SHADOW_PADDING, Classes.rightLockShadow, LOCK_SHADOW_PADDING, Classes.emptyWrapper, Classes.virtual, Classes.tableBody, Classes.tableFooter, Classes.tableHeaderMain, Classes.tableHeader, Classes.tableFooterMain, Classes.fixedLeft, Classes.fixedRight, Z.lock, Classes.fixedLeft, Classes.fixedRight, Classes.rowDetailContainer, Classes.rowDetailItem, Z.rowDetail, Classes.stickyScroll, Z.scrollItem, Classes.stickyScrollItem, Classes.loadingWrapper, Classes.loadingContentWrapper, Classes.loadingIndicatorWrapper, Classes.loadingIndicator, Z.loadingIndicator, Classes.tableFilterTrigger, Classes.filterIcon, Classes.tableSortIcon, Classes.verticalScrollPlaceholder, Classes.tableFooter, Classes.verticalScrollPlaceholder);
|
|
152
154
|
|
|
153
155
|
exports.StyledArtTableWrapper = StyledArtTableWrapper;
|
|
154
156
|
var ButtonCSS = (0, _styledComponents.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n //#region \u6309\u94AE\n .", "{\n color: var(--color);\n background:#ffffff;\n border:1px solid var(--strong-border-color);\n border-radius: 2px;\n cursor: pointer;\n &:hover{\n color: var(--primary-color);\n border:1px solid var(--primary-color);\n }\n }\n .", " {\n color:#ffffff;\n background-color: var(--primary-color);\n border:none;\n &:hover{\n color:#ffffff;\n background-color: var(--primary-color-level2);\n border:none;\n }\n }\n//#endregion\n"])), variableConst, Classes.button, Classes.buttonPrimary);
|
|
@@ -145,7 +145,6 @@ export declare class BaseTable extends React.Component<BaseTableProps, BaseTable
|
|
|
145
145
|
/** 同步横向滚动偏移量 */
|
|
146
146
|
private syncHorizontalScroll;
|
|
147
147
|
getVerticalRenderRange(useVirtual: ResolvedUseVirtual): VerticalRenderRange;
|
|
148
|
-
private getRowNodeListByEvent;
|
|
149
148
|
private handleRowMouseEnter;
|
|
150
149
|
private handleRowMouseLeave;
|
|
151
150
|
private renderTableBody;
|
package/lib/table/base/table.js
CHANGED
|
@@ -145,23 +145,8 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
145
145
|
_this.resizeSubject = new _rxjs.Subject();
|
|
146
146
|
_this.offsetY = 0;
|
|
147
147
|
|
|
148
|
-
_this.getRowNodeListByEvent = function (e) {
|
|
149
|
-
var nodeList = null;
|
|
150
|
-
var rowIndex = e.currentTarget.dataset.rowindex;
|
|
151
|
-
|
|
152
|
-
if (rowIndex !== undefined) {
|
|
153
|
-
var _this$domHelper = _this.domHelper,
|
|
154
|
-
tableBody = _this$domHelper.tableBody,
|
|
155
|
-
tableFooter = _this$domHelper.tableFooter;
|
|
156
|
-
var targetParent = tableBody.contains(e.currentTarget) ? tableBody : tableFooter;
|
|
157
|
-
nodeList = targetParent.querySelectorAll("tr[data-rowindex=\"".concat(rowIndex, "\"]"));
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return nodeList;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
148
|
_this.handleRowMouseEnter = function (e) {
|
|
164
|
-
var nodeList = _this.getRowNodeListByEvent(e);
|
|
149
|
+
var nodeList = _this.domHelper.getRowNodeListByEvent(e);
|
|
165
150
|
|
|
166
151
|
nodeList && nodeList.forEach(function (node) {
|
|
167
152
|
node.classList.add('row-hover');
|
|
@@ -169,7 +154,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
169
154
|
};
|
|
170
155
|
|
|
171
156
|
_this.handleRowMouseLeave = function (e) {
|
|
172
|
-
var nodeList = _this.getRowNodeListByEvent(e);
|
|
157
|
+
var nodeList = _this.domHelper.getRowNodeListByEvent(e);
|
|
173
158
|
|
|
174
159
|
nodeList && nodeList.forEach(function (node) {
|
|
175
160
|
node.classList.remove('row-hover');
|
|
@@ -302,10 +287,10 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
302
287
|
value: function updateStickyScroll() {
|
|
303
288
|
var _a, _b;
|
|
304
289
|
|
|
305
|
-
var _this$
|
|
306
|
-
stickyScroll = _this$
|
|
307
|
-
artTable = _this$
|
|
308
|
-
stickyScrollItem = _this$
|
|
290
|
+
var _this$domHelper = this.domHelper,
|
|
291
|
+
stickyScroll = _this$domHelper.stickyScroll,
|
|
292
|
+
artTable = _this$domHelper.artTable,
|
|
293
|
+
stickyScrollItem = _this$domHelper.stickyScrollItem;
|
|
309
294
|
var _lastHasScrollY = this.hasScrollY;
|
|
310
295
|
|
|
311
296
|
if (!artTable) {
|
|
@@ -571,13 +556,14 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
571
556
|
className: artTableWrapperClassName,
|
|
572
557
|
style: style
|
|
573
558
|
}, _utils.STYLED_REF_PROP, this.artTableWrapperRef);
|
|
559
|
+
var tableProps = getTableProps() || {};
|
|
574
560
|
return /*#__PURE__*/_react.default.createElement(_styles.StyledArtTableWrapper, (0, _extends2.default)({}, artTableWrapperProps), /*#__PURE__*/_react.default.createElement(_loading.default, {
|
|
575
561
|
visible: isLoading,
|
|
576
562
|
LoadingIcon: components.LoadingIcon,
|
|
577
563
|
LoadingContentWrapper: components.LoadingContentWrapper
|
|
578
|
-
}, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
579
|
-
className: _styles.Classes.artTable
|
|
580
|
-
}
|
|
564
|
+
}, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, tableProps, {
|
|
565
|
+
className: (0, _classnames.default)(_styles.Classes.artTable, tableProps.className)
|
|
566
|
+
}), this.renderTableHeader(info), this.renderTableBody(info), this.renderTableFooter(info), this.renderLockShadows(info)), this.renderStickyScroll(info)));
|
|
581
567
|
}
|
|
582
568
|
}, {
|
|
583
569
|
key: "componentDidMount",
|
|
@@ -642,9 +628,9 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
642
628
|
value: function initSubscriptions() {
|
|
643
629
|
var _this2 = this;
|
|
644
630
|
|
|
645
|
-
var _this$
|
|
646
|
-
virtual = _this$
|
|
647
|
-
stickyScroll = _this$
|
|
631
|
+
var _this$domHelper2 = this.domHelper,
|
|
632
|
+
virtual = _this$domHelper2.virtual,
|
|
633
|
+
stickyScroll = _this$domHelper2.stickyScroll;
|
|
648
634
|
this.rootSubscription.add(_utils.throttledWindowResize$.subscribe(function () {
|
|
649
635
|
_this2.updateStickyScroll();
|
|
650
636
|
|
|
@@ -22,6 +22,10 @@ var _autoFill = require("./autoFill");
|
|
|
22
22
|
var stateKey = 'columnDrag';
|
|
23
23
|
var SCROLL_SIZE = 30;
|
|
24
24
|
|
|
25
|
+
function disableSelect(event) {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
}
|
|
28
|
+
|
|
25
29
|
function sortColumns(columns, sort) {
|
|
26
30
|
var res = new Array(columns.length);
|
|
27
31
|
var lastColumns = (0, _toConsumableArray2.default)(columns);
|
|
@@ -75,9 +79,11 @@ function columnDrag() {
|
|
|
75
79
|
},
|
|
76
80
|
headerCellProps: (0, _utils.mergeCellProps)(col.headerCellProps, {
|
|
77
81
|
onMouseDown: !isLeaf || path.length > 1 ? undefined : function (e) {
|
|
78
|
-
if (e.button !== 0) {
|
|
82
|
+
if (e.button !== 0 || !e.currentTarget.contains(e.target)) {
|
|
79
83
|
return;
|
|
80
|
-
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
window.addEventListener('selectstart', disableSelect); // const cx = e.clientX
|
|
81
87
|
// const width = col.width
|
|
82
88
|
// const a = startIndex
|
|
83
89
|
// const b = endIndex
|
|
@@ -86,7 +92,6 @@ function columnDrag() {
|
|
|
86
92
|
// let newStartIndex = startIndex
|
|
87
93
|
// let endIdx = endIndex
|
|
88
94
|
|
|
89
|
-
|
|
90
95
|
var columnMoved = false;
|
|
91
96
|
var columns = pipeline.getColumns();
|
|
92
97
|
|
|
@@ -100,6 +105,8 @@ function columnDrag() {
|
|
|
100
105
|
var currentTarget = e.currentTarget;
|
|
101
106
|
var rect = e.currentTarget.parentElement.getClientRects()[0];
|
|
102
107
|
var startX = rect.left;
|
|
108
|
+
var mouseDownClientX = e.clientX;
|
|
109
|
+
var mouseDownClientY = e.clientY;
|
|
103
110
|
var moveData = [];
|
|
104
111
|
var allColumns = (0, _utils.collectNodes)(columns);
|
|
105
112
|
var tableBodyClientRect = tableBody.getBoundingClientRect();
|
|
@@ -119,8 +126,6 @@ function columnDrag() {
|
|
|
119
126
|
}
|
|
120
127
|
};
|
|
121
128
|
|
|
122
|
-
var stopClickPropagationFlag = false;
|
|
123
|
-
|
|
124
129
|
function handleMouseMove(e) {
|
|
125
130
|
var client = {
|
|
126
131
|
clientX: e.clientX,
|
|
@@ -134,12 +139,6 @@ function columnDrag() {
|
|
|
134
139
|
if (e.clientX - leftPosition < 20) {
|
|
135
140
|
return;
|
|
136
141
|
} else {
|
|
137
|
-
// 阻止列头点击事件,防止拖动后触发列头过滤事件
|
|
138
|
-
if (stopClickPropagationFlag === false) {
|
|
139
|
-
stopClickPropagationFlag = true;
|
|
140
|
-
currentTarget.addEventListener('click', stopClickPropagation);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
142
|
e.stopPropagation();
|
|
144
143
|
}
|
|
145
144
|
|
|
@@ -259,10 +258,15 @@ function columnDrag() {
|
|
|
259
258
|
e.stopPropagation();
|
|
260
259
|
document.body.removeEventListener('mousemove', handleMouseMove);
|
|
261
260
|
document.body.removeEventListener('mouseup', handleMouseUp);
|
|
261
|
+
window.removeEventListener('selectstart', disableSelect); // 阻止列头点击事件,防止拖动后触发列头过滤事件
|
|
262
|
+
|
|
263
|
+
if (_isMoveWhenClicking(mouseDownClientX, mouseDownClientY, e.clientX, e.clientY)) {
|
|
264
|
+
currentTarget.addEventListener('click', stopClickPropagation);
|
|
265
|
+
}
|
|
266
|
+
|
|
262
267
|
window.requestAnimationFrame(function () {
|
|
263
268
|
// 取消阻止列头点击事件
|
|
264
269
|
currentTarget.removeEventListener('click', stopClickPropagation);
|
|
265
|
-
stopClickPropagationFlag = false;
|
|
266
270
|
currentTarget = null;
|
|
267
271
|
|
|
268
272
|
var _moveData = moveData,
|
|
@@ -343,10 +347,6 @@ function columnDrag() {
|
|
|
343
347
|
|
|
344
348
|
document.body.addEventListener('mousemove', handleMouseMove);
|
|
345
349
|
document.body.addEventListener('mouseup', handleMouseUp);
|
|
346
|
-
|
|
347
|
-
document.body.onselectstart = function () {
|
|
348
|
-
return false;
|
|
349
|
-
};
|
|
350
350
|
},
|
|
351
351
|
style: style
|
|
352
352
|
})
|
|
@@ -384,4 +384,15 @@ function moveAllChildren(cols, cloumnsTranslateData, width, isMinus) {
|
|
|
384
384
|
moveAllChildren(children, cloumnsTranslateData, width);
|
|
385
385
|
}
|
|
386
386
|
});
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
function _isMoveWhenClicking(mouseDownClientX, mouseDownClientY, mouseUpClientX, mouseUpClientY) {
|
|
390
|
+
var xDiff = mouseUpClientX - mouseDownClientX;
|
|
391
|
+
var yDiff = mouseUpClientY - mouseDownClientY; // 鼠标点按和松开的偏移量大于5px,认为存在移动
|
|
392
|
+
|
|
393
|
+
if (Math.sqrt(xDiff * xDiff + yDiff * yDiff) > 5) {
|
|
394
|
+
return true;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
return false;
|
|
387
398
|
}
|
|
@@ -12,8 +12,8 @@ export interface FilterFeatureOptions {
|
|
|
12
12
|
keepDataSource?: boolean;
|
|
13
13
|
/** 过滤模式。单列过滤 single,多列过滤 multiple,默认为多选 */
|
|
14
14
|
mode?: 'single' | 'multiple';
|
|
15
|
-
|
|
16
|
-
filterIcon?: ReactNode;
|
|
15
|
+
/** 过滤图标 */
|
|
16
|
+
filterIcon?: ReactNode | ((filtered: boolean) => ReactNode);
|
|
17
17
|
/** 是否对触发弹出过滤面板 的 click 事件调用 event.stopPropagation() */
|
|
18
18
|
stopClickEventPropagation?: boolean;
|
|
19
19
|
}
|
|
@@ -65,7 +65,7 @@ function filter() {
|
|
|
65
65
|
return (0, _map2.default)(columns).call(columns, dfs);
|
|
66
66
|
|
|
67
67
|
function dfs(col) {
|
|
68
|
-
var _a, _b, _c, _d, _e;
|
|
68
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
69
69
|
|
|
70
70
|
var result = (0, _extends2.default)({}, col);
|
|
71
71
|
var filterable = col.code && ((_a = col.features) === null || _a === void 0 ? void 0 : _a.filterable);
|
|
@@ -104,12 +104,13 @@ function filter() {
|
|
|
104
104
|
};
|
|
105
105
|
|
|
106
106
|
var filterPanel = (_d = col.features) === null || _d === void 0 ? void 0 : _d.filterPanel;
|
|
107
|
-
|
|
107
|
+
var colFilterIcon = (_f = (_e = col.features) === null || _e === void 0 ? void 0 : _e.filterIcon) !== null && _f !== void 0 ? _f : filterIcon;
|
|
108
|
+
result.title = (0, _concat.default)(_context = []).call(_context, (0, _toConsumableArray2.default)((0, _concat.default)(_context2 = []).call(_context2, (_g = result.title) !== null && _g !== void 0 ? _g : [_internals.internals.safeRenderHeader((0, _extends2.default)((0, _extends2.default)({}, col), {
|
|
108
109
|
title: null
|
|
109
110
|
}))])), [/*#__PURE__*/_react.default.createElement(_filter2.Filter, {
|
|
110
111
|
key: "filter",
|
|
111
112
|
FilterPanelContent: filterPanel,
|
|
112
|
-
filterIcon:
|
|
113
|
+
filterIcon: colFilterIcon,
|
|
113
114
|
filterModel: inputFiltersMap.get(col.code),
|
|
114
115
|
setFilterModel: handleFilterChanged,
|
|
115
116
|
setFilter: setFilter,
|
|
@@ -158,7 +159,7 @@ function filter() {
|
|
|
158
159
|
}));
|
|
159
160
|
|
|
160
161
|
function isMatchedFilterCondition(record) {
|
|
161
|
-
return
|
|
162
|
+
return filtersKeys.every(function (key) {
|
|
162
163
|
var _a, _b;
|
|
163
164
|
|
|
164
165
|
var filterItem = inputFiltersMap.get(key);
|
|
@@ -174,21 +175,39 @@ function filter() {
|
|
|
174
175
|
comparisonFn = (0, _filter.default)(defaultFilterOptionsMap.get('contain'));
|
|
175
176
|
}
|
|
176
177
|
|
|
177
|
-
return
|
|
178
|
+
return comparisonFn((0, _filter.default)(filterItem), filterItem)(_internals.internals.safeGetValue(columnsMap.get(key), record, -1), record);
|
|
178
179
|
});
|
|
179
180
|
}
|
|
180
181
|
|
|
181
|
-
return dataSource
|
|
182
|
-
if (isMatchedFilterCondition(record)) {
|
|
183
|
-
return (0, _concat.default)(pre).call(pre, [record]);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
return pre;
|
|
187
|
-
}, []);
|
|
182
|
+
return layeredFilter(dataSource, isMatchedFilterCondition);
|
|
188
183
|
}
|
|
189
184
|
|
|
190
185
|
pipeline.dataSource(processDataSource(dataSource));
|
|
191
186
|
pipeline.columns(processColumns(columns));
|
|
192
187
|
return pipeline;
|
|
193
188
|
};
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
function layeredFilter(array, matchFn) {
|
|
192
|
+
return dfs(array);
|
|
193
|
+
|
|
194
|
+
function dfs(rows) {
|
|
195
|
+
var _context6;
|
|
196
|
+
|
|
197
|
+
var parentMatched = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
198
|
+
return (0, _filter.default)(_context6 = (0, _map2.default)(rows).call(rows, function (row) {
|
|
199
|
+
var currentMatched = matchFn(row);
|
|
200
|
+
|
|
201
|
+
if ((0, _utils.isLeafNode)(row)) {
|
|
202
|
+
return (parentMatched || currentMatched) && (0, _extends2.default)({}, row);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
var children = row.children;
|
|
206
|
+
var rowAfterFilterChildren = (0, _extends2.default)((0, _extends2.default)({}, row), {
|
|
207
|
+
children: dfs(children, parentMatched || currentMatched)
|
|
208
|
+
});
|
|
209
|
+
var matchedByChildren = !(0, _utils.isLeafNode)(rowAfterFilterChildren);
|
|
210
|
+
return (parentMatched || currentMatched || matchedByChildren) && rowAfterFilterChildren;
|
|
211
|
+
})).call(_context6, Boolean);
|
|
212
|
+
}
|
|
194
213
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = DefaultFilterIcon;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
function DefaultFilterIcon(_ref) {
|
|
13
|
+
var width = _ref.width,
|
|
14
|
+
height = _ref.height;
|
|
15
|
+
return /*#__PURE__*/_react.default.createElement("svg", {
|
|
16
|
+
width: width,
|
|
17
|
+
height: height,
|
|
18
|
+
style: {
|
|
19
|
+
verticalAlign: 'middle'
|
|
20
|
+
},
|
|
21
|
+
viewBox: "0 0 1024 1024",
|
|
22
|
+
focusable: "false",
|
|
23
|
+
"data-icon": "filter",
|
|
24
|
+
fill: "currentColor",
|
|
25
|
+
version: "1.1",
|
|
26
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
27
|
+
}, /*#__PURE__*/_react.default.createElement("path", {
|
|
28
|
+
d: "M891.448889 159.573333L626.460444 460.231111v443.221333c0 32.881778-25.429333 63.658667-55.864888 63.658667l-170.268445-172.942222V456.419556L132.266667 159.857778A59.619556 59.619556 0 0 1 173.511111 56.888889h676.977778c32.995556 0 59.733333 26.680889 59.733333 59.562667 0 17.066667-7.224889 32.312889-18.773333 43.121777z"
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
@@ -6,7 +6,7 @@ interface FilterProps {
|
|
|
6
6
|
size?: number;
|
|
7
7
|
isFilterActive: boolean;
|
|
8
8
|
FilterPanelContent?: FilterPanelType;
|
|
9
|
-
filterIcon?: ReactNode;
|
|
9
|
+
filterIcon?: ReactNode | ((filtered: boolean) => ReactNode);
|
|
10
10
|
setFilterModel: DefaultFilterPanelProps['setFilterModel'];
|
|
11
11
|
filterModel: DefaultFilterPanelProps['filterModel'];
|
|
12
12
|
setFilter: CustomeFilterPanelProps['setFilter'];
|