@kdcloudjs/table 1.1.5-canary.1 → 1.1.5-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 +74 -65
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +7 -7
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/es/table/base/styles.js +2 -2
- package/es/table/base/table.d.ts +1 -1
- package/es/table/base/table.js +3 -2
- package/es/table/common-views.js +1 -1
- package/es/table/pipeline/features/colGroupExtendable.d.ts +2 -0
- package/es/table/pipeline/features/colGroupExtendable.js +5 -3
- package/es/table/pipeline/features/columnFilter.d.ts +5 -1
- package/es/table/pipeline/features/columnFilter.js +6 -2
- package/es/table/pipeline/features/contextMenu.d.ts +5 -1
- package/es/table/pipeline/features/contextMenu.js +18 -28
- package/es/table/pipeline/features/filter/DefaultFilterContent.js +5 -5
- package/es/table/pipeline/features/filter/Filter.d.ts +3 -1
- package/es/table/pipeline/features/filter/Filter.js +21 -12
- package/es/table/pipeline/features/rangeSelection.js +10 -0
- package/es/table/pipeline/pipeline.d.ts +0 -4
- package/es/table/pipeline/pipeline.js +4 -10
- package/lib/table/base/styles.js +2 -2
- package/lib/table/base/table.d.ts +1 -1
- package/lib/table/base/table.js +3 -2
- package/lib/table/common-views.js +1 -1
- package/lib/table/pipeline/features/colGroupExtendable.d.ts +2 -0
- package/lib/table/pipeline/features/colGroupExtendable.js +5 -3
- package/lib/table/pipeline/features/columnFilter.d.ts +5 -1
- package/lib/table/pipeline/features/columnFilter.js +6 -2
- package/lib/table/pipeline/features/contextMenu.d.ts +5 -1
- package/lib/table/pipeline/features/contextMenu.js +17 -28
- package/lib/table/pipeline/features/filter/DefaultFilterContent.js +5 -5
- package/lib/table/pipeline/features/filter/Filter.d.ts +3 -1
- package/lib/table/pipeline/features/filter/Filter.js +21 -12
- package/lib/table/pipeline/features/rangeSelection.js +10 -0
- package/lib/table/pipeline/pipeline.d.ts +0 -4
- package/lib/table/pipeline/pipeline.js +4 -11
- package/package.json +1 -1
package/lib/table/base/table.js
CHANGED
|
@@ -81,7 +81,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
|
81
81
|
|
|
82
82
|
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; }
|
|
83
83
|
|
|
84
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(
|
|
84
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
85
85
|
|
|
86
86
|
function _unsupportedIterableToArray(o, minLen) { var _context2; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context2 = Object.prototype.toString.call(o)).call(_context2, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
87
87
|
|
|
@@ -543,7 +543,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
543
543
|
}, {
|
|
544
544
|
key: "componentDidMount",
|
|
545
545
|
value: function componentDidMount() {
|
|
546
|
-
var _a, _b, _c, _d; // console.log('did mount start')
|
|
546
|
+
var _a, _b, _c, _d, _e, _f; // console.log('did mount start')
|
|
547
547
|
// console.log('update dom helper start')
|
|
548
548
|
|
|
549
549
|
|
|
@@ -564,6 +564,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
564
564
|
});
|
|
565
565
|
(_b = (_a = this.props).setTableWidth) === null || _b === void 0 ? void 0 : _b.call(_a, this.domHelper.tableBody.clientWidth);
|
|
566
566
|
(_d = (_c = this.props).setTableDomHelper) === null || _d === void 0 ? void 0 : _d.call(_c, this.domHelper);
|
|
567
|
+
(_f = (_e = this.props).setRowHeightManager) === null || _f === void 0 ? void 0 : _f.call(_e, this.rowHeightManager);
|
|
567
568
|
}
|
|
568
569
|
}, {
|
|
569
570
|
key: "componentDidUpdate",
|
|
@@ -85,6 +85,6 @@ var icons = {
|
|
|
85
85
|
};
|
|
86
86
|
exports.icons = icons;
|
|
87
87
|
|
|
88
|
-
var ContextMenuStyleWrap = _styledComponents.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n &.", "{\n border: 1px solid #e9ecf1;\n border-radius: 2px;\n background-color: #Fff;\n box-shadow: 0px 0px 5px 0px rgb(154 154 154 / 50%);\n cursor: default;\n font-size:
|
|
88
|
+
var ContextMenuStyleWrap = _styledComponents.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n &.", "{\n border: 1px solid #e9ecf1;\n border-radius: 2px;\n background-color: #Fff;\n box-shadow: 0px 0px 5px 0px rgb(154 154 154 / 50%);\n cursor: default;\n font-size: 12px;\n position:absolute;\n z-index: 1050;\n max-width: 600px;\n padding: 8px 0;\n }\n\n .", "{\n width:100%;\n display: table;\n }\n\n .", " .", "{\n display: table-row;\n color: #212121;\n }\n\n .", " .", "{\n background-color: var(--hover-bgcolor);\n }\n\n .", " .", " .", "{\n display: table-cell;\n padding: 8px 12px;\n max-width: 576px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n .", " .", ".", "{\n opacity: .5;\n }\n\n"])), _styles.MenuClasses.menu, _styles.MenuClasses.menuList, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOption, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOptionActive, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOption, _styles.MenuClasses.menuOptionText, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOption, _styles.MenuClasses.menuOptionDisable);
|
|
89
89
|
|
|
90
90
|
exports.ContextMenuStyleWrap = ContextMenuStyleWrap;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { TablePipeline } from "../pipeline";
|
|
2
|
+
import { ReactNode } from 'react';
|
|
2
3
|
export interface colGroupExtendOption {
|
|
3
4
|
onChangeExtendStatus?({}: any, {}: any): void;
|
|
4
5
|
extendStatus?: {};
|
|
6
|
+
extendIcon?: ReactNode | ((extendStatus: boolean) => ReactNode);
|
|
5
7
|
}
|
|
6
8
|
export declare const colGroupExtendable: (opts?: colGroupExtendOption) => (pipeline: TablePipeline) => TablePipeline;
|
|
@@ -77,12 +77,14 @@ var colGroupExtendable = function colGroupExtendable() {
|
|
|
77
77
|
|
|
78
78
|
var addIcon = function addIcon(col) {
|
|
79
79
|
var result = (0, _extends2.default)({}, col);
|
|
80
|
+
var curColState = curState[col.code];
|
|
81
|
+
var displaycolExtendIcon = typeof opts.extendIcon === 'function' ? opts.extendIcon(curColState) : opts.extendIcon;
|
|
80
82
|
|
|
81
83
|
var addIconNode = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, _internals.internals.safeRenderHeader((0, _extends2.default)({}, col)), /*#__PURE__*/_react.default.createElement(ExtendIconStyle, {
|
|
82
84
|
onClick: function onClick() {
|
|
83
85
|
toggle(col);
|
|
84
86
|
}
|
|
85
|
-
}, /*#__PURE__*/_react.default.createElement(ExpandIcon, {
|
|
87
|
+
}, displaycolExtendIcon || /*#__PURE__*/_react.default.createElement(ExpandIcon, {
|
|
86
88
|
style: {
|
|
87
89
|
userSelect: 'none',
|
|
88
90
|
marginLeft: 2,
|
|
@@ -91,8 +93,8 @@ var colGroupExtendable = function colGroupExtendable() {
|
|
|
91
93
|
verticalAlign: 'middle'
|
|
92
94
|
},
|
|
93
95
|
className: (0, _classnames.default)((0, _defineProperty2.default)({}, _styles.Classes.tableExtendIcon, true)),
|
|
94
|
-
size:
|
|
95
|
-
isExtend:
|
|
96
|
+
size: 14,
|
|
97
|
+
isExtend: curColState
|
|
96
98
|
})));
|
|
97
99
|
|
|
98
100
|
result.title = addIconNode;
|
|
@@ -16,7 +16,11 @@ export interface FilterFeatureOptions {
|
|
|
16
16
|
filterIcon?: ReactNode | ((filtered: boolean) => ReactNode);
|
|
17
17
|
/** 是否对触发弹出过滤面板 的 click 事件调用 event.stopPropagation() */
|
|
18
18
|
stopClickEventPropagation?: boolean;
|
|
19
|
-
/**
|
|
19
|
+
/** 是否对按ESC键时关闭面板的 keydown 事件调用 event.stopPropagation() */
|
|
20
|
+
stopESCKeyDownEventPropagation?: boolean;
|
|
21
|
+
/** 是否隐藏过滤面板的header区域 */
|
|
20
22
|
hideFilterPopupHeader?: boolean;
|
|
23
|
+
/** 指定过滤面板渲染的父节点 */
|
|
24
|
+
getPopupParent?: (triggerElement: HTMLElement) => HTMLElement;
|
|
21
25
|
}
|
|
22
26
|
export declare function filter(opts?: FilterFeatureOptions): (pipeline: TablePipeline) => TablePipeline;
|
|
@@ -55,7 +55,9 @@ function filter() {
|
|
|
55
55
|
mode = opts.mode,
|
|
56
56
|
filterIcon = opts.filterIcon,
|
|
57
57
|
stopClickEventPropagation = opts.stopClickEventPropagation,
|
|
58
|
-
|
|
58
|
+
stopESCKeyDownEventPropagation = opts.stopESCKeyDownEventPropagation,
|
|
59
|
+
hideFilterPopupHeader = opts.hideFilterPopupHeader,
|
|
60
|
+
getPopupParent = opts.getPopupParent;
|
|
59
61
|
var inputFilters = (_b = (_a = filters !== null && filters !== void 0 ? filters : pipeline.getStateAtKey(stateKey)) !== null && _a !== void 0 ? _a : defaultFilters) !== null && _b !== void 0 ? _b : [];
|
|
60
62
|
inputFilters = mode === 'single' ? (0, _slice.default)(inputFilters).call(inputFilters, 0, 1) : inputFilters;
|
|
61
63
|
var inputFiltersMap = new _map.default((0, _map2.default)(inputFilters).call(inputFilters, function (filterItem) {
|
|
@@ -116,7 +118,9 @@ function filter() {
|
|
|
116
118
|
isFilterActive: filterActive,
|
|
117
119
|
className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, _styles.Classes.tableFilterTrigger, true), (0, _defineProperty2.default)(_cx, "active", filterActive), _cx)),
|
|
118
120
|
stopClickEventPropagation: stopClickEventPropagation,
|
|
119
|
-
|
|
121
|
+
stopESCKeyDownEventPropagation: stopESCKeyDownEventPropagation,
|
|
122
|
+
hideFilterPopupHeader: hideFilterPopupHeader,
|
|
123
|
+
getPopupParent: getPopupParent
|
|
120
124
|
})]); // result.headerCellProps = mergeCellProps(col.headerCellProps, {
|
|
121
125
|
// style: {
|
|
122
126
|
// paddingRight: '18px'
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { TablePipeline } from '../pipeline';
|
|
2
2
|
interface ContextMenuItem {
|
|
3
|
+
key?: string;
|
|
3
4
|
name: string;
|
|
4
|
-
action: () =>
|
|
5
|
+
action: () => void;
|
|
5
6
|
disabled?: boolean;
|
|
7
|
+
className?: string;
|
|
6
8
|
}
|
|
7
9
|
export interface ContextMenuFeatureOptions {
|
|
8
10
|
/** 获得自定义菜单 */
|
|
9
11
|
getContextMenuItems?: (params: any) => ContextMenuItem[];
|
|
10
12
|
/** 弹出框的父容器 */
|
|
11
13
|
popupParent?: HTMLElement;
|
|
14
|
+
/** 右键菜单className */
|
|
15
|
+
menuClassName?: string;
|
|
12
16
|
}
|
|
13
17
|
export declare function contextMenu(opts?: ContextMenuFeatureOptions): (pipeline: TablePipeline) => TablePipeline;
|
|
14
18
|
export {};
|
|
@@ -43,12 +43,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
|
43
43
|
|
|
44
44
|
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; }
|
|
45
45
|
|
|
46
|
-
var stateKey = 'contextMenu';
|
|
47
|
-
|
|
48
46
|
function contextMenu() {
|
|
49
47
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
50
48
|
return function step(pipeline) {
|
|
51
49
|
var popupParent = opts.popupParent || document.body;
|
|
50
|
+
var menuClassName = opts.menuClassName;
|
|
52
51
|
var menuHelper = new MenuHelper();
|
|
53
52
|
|
|
54
53
|
var addPopup = function addPopup(menu) {
|
|
@@ -82,13 +81,11 @@ function contextMenu() {
|
|
|
82
81
|
};
|
|
83
82
|
|
|
84
83
|
var onContextMenu = function onContextMenu(e) {
|
|
85
|
-
if (
|
|
86
|
-
|
|
84
|
+
if (canShowContextMenu(e, pipeline)) {
|
|
85
|
+
e.preventDefault();
|
|
86
|
+
e.stopPropagation();
|
|
87
|
+
showContextMenu(e);
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
-
e.preventDefault();
|
|
90
|
-
e.stopPropagation();
|
|
91
|
-
showContextMenu(e);
|
|
92
89
|
};
|
|
93
90
|
|
|
94
91
|
pipeline.addTableProps({
|
|
@@ -162,7 +159,8 @@ function contextMenu() {
|
|
|
162
159
|
options: options,
|
|
163
160
|
hideContextMenu: hideContextMenu,
|
|
164
161
|
position: position,
|
|
165
|
-
getPopupParent: getPopupParent
|
|
162
|
+
getPopupParent: getPopupParent,
|
|
163
|
+
className: menuClassName
|
|
166
164
|
});
|
|
167
165
|
|
|
168
166
|
var _hidePopup = addPopup(menu);
|
|
@@ -195,7 +193,8 @@ function getMenuItemKey(_ref) {
|
|
|
195
193
|
}
|
|
196
194
|
|
|
197
195
|
function Menu(props) {
|
|
198
|
-
var
|
|
196
|
+
var className = props.className,
|
|
197
|
+
_props$options = props.options,
|
|
199
198
|
options = _props$options === void 0 ? [] : _props$options,
|
|
200
199
|
hideContextMenu = props.hideContextMenu,
|
|
201
200
|
position = props.position,
|
|
@@ -216,7 +215,7 @@ function Menu(props) {
|
|
|
216
215
|
}
|
|
217
216
|
}, [position]);
|
|
218
217
|
return /*#__PURE__*/_react.default.createElement(_commonViews.ContextMenuStyleWrap, {
|
|
219
|
-
className: _styles.MenuClasses.menu,
|
|
218
|
+
className: (0, _classnames.default)(_styles.MenuClasses.menu, className),
|
|
220
219
|
ref: menuRef,
|
|
221
220
|
style: {
|
|
222
221
|
left: position.x,
|
|
@@ -232,6 +231,7 @@ function Menu(props) {
|
|
|
232
231
|
}),
|
|
233
232
|
name: item.name,
|
|
234
233
|
action: item.action,
|
|
234
|
+
className: item.className,
|
|
235
235
|
disabled: item.disabled,
|
|
236
236
|
hideContextMenu: hideContextMenu
|
|
237
237
|
});
|
|
@@ -241,6 +241,7 @@ function Menu(props) {
|
|
|
241
241
|
function MenuItem(props) {
|
|
242
242
|
var name = props.name,
|
|
243
243
|
action = props.action,
|
|
244
|
+
className = props.className,
|
|
244
245
|
disabled = props.disabled,
|
|
245
246
|
hideContextMenu = props.hideContextMenu;
|
|
246
247
|
var itemRef = (0, _react.useRef)();
|
|
@@ -281,7 +282,7 @@ function MenuItem(props) {
|
|
|
281
282
|
};
|
|
282
283
|
|
|
283
284
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
284
|
-
className: (0, _classnames.default)(_styles.MenuClasses.menuOption, (0, _defineProperty2.default)({}, _styles.MenuClasses.menuOptionDisable, disabled)),
|
|
285
|
+
className: (0, _classnames.default)(_styles.MenuClasses.menuOption, className, (0, _defineProperty2.default)({}, _styles.MenuClasses.menuOptionDisable, disabled)),
|
|
285
286
|
ref: itemRef,
|
|
286
287
|
onClick: handleClick,
|
|
287
288
|
onMouseEnter: handleMouseEnter,
|
|
@@ -424,24 +425,12 @@ function isElementInsideTheFooter(ele) {
|
|
|
424
425
|
}
|
|
425
426
|
|
|
426
427
|
return false;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
function suppressShowContextMenu(e) {
|
|
431
|
-
var path = (0, _utils.getEventPath)(e.nativeEvent);
|
|
432
|
-
var pointIndex = 0;
|
|
433
|
-
|
|
434
|
-
while (pointIndex < path.length) {
|
|
435
|
-
var ele = path[pointIndex];
|
|
436
|
-
|
|
437
|
-
if (ele.classList.contains(_styles.Classes.tableBody) || ele.classList.contains(_styles.Classes.tableFooter)) {
|
|
438
|
-
return false;
|
|
439
|
-
}
|
|
428
|
+
}
|
|
440
429
|
|
|
441
|
-
|
|
442
|
-
|
|
430
|
+
function canShowContextMenu(e, pipeline) {
|
|
431
|
+
var _a, _b;
|
|
443
432
|
|
|
444
|
-
return
|
|
433
|
+
return ((_a = pipeline.ref.current.domHelper) === null || _a === void 0 ? void 0 : _a.tableBody.contains(e.target)) || ((_b = pipeline.ref.current.domHelper) === null || _b === void 0 ? void 0 : _b.tableFooter.contains(e.target));
|
|
445
434
|
} // 默认选项
|
|
446
435
|
|
|
447
436
|
|
|
@@ -55,7 +55,7 @@ function DefaultFilterContent(_ref) {
|
|
|
55
55
|
selectedValue = _React$useState2[0],
|
|
56
56
|
setSelectedValue = _React$useState2[1];
|
|
57
57
|
|
|
58
|
-
var _React$useState3 = _react.default.useState((filterModel === null || filterModel === void 0 ? void 0 : (0, _filter.default)(filterModel)) ||
|
|
58
|
+
var _React$useState3 = _react.default.useState((filterModel === null || filterModel === void 0 ? void 0 : (0, _filter.default)(filterModel)) || []),
|
|
59
59
|
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
|
|
60
60
|
innerValue = _React$useState4[0],
|
|
61
61
|
setInnerValue = _React$useState4[1];
|
|
@@ -74,7 +74,7 @@ function DefaultFilterContent(_ref) {
|
|
|
74
74
|
var confirm = function confirm() {
|
|
75
75
|
hidePanel();
|
|
76
76
|
setFilterModel({
|
|
77
|
-
filter:
|
|
77
|
+
filter: innerValue,
|
|
78
78
|
filterCondition: selectedValue
|
|
79
79
|
});
|
|
80
80
|
};
|
|
@@ -87,7 +87,7 @@ function DefaultFilterContent(_ref) {
|
|
|
87
87
|
|
|
88
88
|
(0, _react.useEffect)(function () {
|
|
89
89
|
setSelectedValue((filterModel === null || filterModel === void 0 ? void 0 : filterModel.filterCondition) || 'contain');
|
|
90
|
-
setInnerValue((filterModel === null || filterModel === void 0 ? void 0 : (0, _filter.default)(filterModel)) ||
|
|
90
|
+
setInnerValue((filterModel === null || filterModel === void 0 ? void 0 : (0, _filter.default)(filterModel)) || []);
|
|
91
91
|
}, [filterModel]);
|
|
92
92
|
(0, _react.useEffect)(function () {
|
|
93
93
|
// 兼容设置焦点后发生滚动
|
|
@@ -117,9 +117,9 @@ function DefaultFilterContent(_ref) {
|
|
|
117
117
|
className: 'filter-search'
|
|
118
118
|
}, /*#__PURE__*/_react.default.createElement("input", {
|
|
119
119
|
className: 'filter-search-inner',
|
|
120
|
-
value: innerValue,
|
|
120
|
+
value: innerValue[0],
|
|
121
121
|
onChange: function onChange(e) {
|
|
122
|
-
setInnerValue(e.target.value);
|
|
122
|
+
setInnerValue([e.target.value]);
|
|
123
123
|
},
|
|
124
124
|
onKeyDown: handleKeyDown,
|
|
125
125
|
ref: inputRef
|
|
@@ -12,7 +12,9 @@ interface FilterProps {
|
|
|
12
12
|
setFilter: CustomeFilterPanelProps['setFilter'];
|
|
13
13
|
onClick?: (e: React.MouseEvent) => any;
|
|
14
14
|
stopClickEventPropagation?: boolean;
|
|
15
|
+
stopESCKeyDownEventPropagation?: boolean;
|
|
15
16
|
hideFilterPopupHeader?: boolean;
|
|
17
|
+
getPopupParent?: (triggerElement: HTMLElement) => HTMLElement;
|
|
16
18
|
}
|
|
17
|
-
declare function Filter({ size, style, className, FilterPanelContent, filterIcon, setFilter, setFilterModel, filterModel, isFilterActive, stopClickEventPropagation, hideFilterPopupHeader }: FilterProps): JSX.Element;
|
|
19
|
+
declare function Filter({ size, style, className, FilterPanelContent, filterIcon, setFilter, setFilterModel, filterModel, isFilterActive, stopClickEventPropagation, stopESCKeyDownEventPropagation, hideFilterPopupHeader, getPopupParent }: FilterProps): JSX.Element;
|
|
18
20
|
export default Filter;
|
|
@@ -58,11 +58,12 @@ function Panel(_ref) {
|
|
|
58
58
|
filterIcon = _ref.filterIcon,
|
|
59
59
|
hidePanel = _ref.hidePanel,
|
|
60
60
|
renderPanelContent = _ref.renderPanelContent,
|
|
61
|
-
hideFilterPopupHeader = _ref.hideFilterPopupHeader
|
|
61
|
+
hideFilterPopupHeader = _ref.hideFilterPopupHeader,
|
|
62
|
+
popupParent = _ref.popupParent;
|
|
62
63
|
|
|
63
64
|
var filterPanelRef = _react.default.useRef(null);
|
|
64
65
|
|
|
65
|
-
var _React$useState = _react.default.useState((0, _utils.calculatePopupRelative)(ele,
|
|
66
|
+
var _React$useState = _react.default.useState((0, _utils.calculatePopupRelative)(ele, popupParent, _getPanelOffset(ele, hideFilterPopupHeader))),
|
|
66
67
|
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
|
67
68
|
position = _React$useState2[0],
|
|
68
69
|
setPosition = _React$useState2[1];
|
|
@@ -73,7 +74,7 @@ function Panel(_ref) {
|
|
|
73
74
|
};
|
|
74
75
|
|
|
75
76
|
var handleFilterPanelResize = function handleFilterPanelResize(resize) {
|
|
76
|
-
setPosition((0, _utils.calculatePopupRelative)(ele,
|
|
77
|
+
setPosition((0, _utils.calculatePopupRelative)(ele, popupParent, _getPanelOffset(ele, hideFilterPopupHeader)));
|
|
77
78
|
};
|
|
78
79
|
|
|
79
80
|
(0, _react.useEffect)(function () {
|
|
@@ -107,7 +108,9 @@ function Filter(_ref2) {
|
|
|
107
108
|
filterModel = _ref2.filterModel,
|
|
108
109
|
isFilterActive = _ref2.isFilterActive,
|
|
109
110
|
stopClickEventPropagation = _ref2.stopClickEventPropagation,
|
|
110
|
-
|
|
111
|
+
stopESCKeyDownEventPropagation = _ref2.stopESCKeyDownEventPropagation,
|
|
112
|
+
hideFilterPopupHeader = _ref2.hideFilterPopupHeader,
|
|
113
|
+
getPopupParent = _ref2.getPopupParent;
|
|
111
114
|
|
|
112
115
|
var _React$useState3 = _react.default.useState(false),
|
|
113
116
|
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
|
|
@@ -143,25 +146,30 @@ function Filter(_ref2) {
|
|
|
143
146
|
var handleIconClick = function handleIconClick(e) {
|
|
144
147
|
// 只有当icon区域点击会触发面板展开
|
|
145
148
|
// 防止 createPortal 区域的点击触发该事件
|
|
146
|
-
if (
|
|
147
|
-
|
|
149
|
+
if (e.currentTarget.contains(e.target)) {
|
|
150
|
+
setShowPanel(true);
|
|
148
151
|
}
|
|
149
152
|
|
|
150
153
|
if (stopClickEventPropagation) {
|
|
151
154
|
e.stopPropagation();
|
|
152
155
|
}
|
|
153
|
-
|
|
154
|
-
setShowPanel(true);
|
|
155
156
|
};
|
|
156
157
|
|
|
157
158
|
var handleKeyDown = function handleKeyDown(e) {
|
|
158
|
-
if (e.
|
|
159
|
-
|
|
159
|
+
if (e.keyCode === _keyCode.default.ESC) {
|
|
160
|
+
if (e.currentTarget.contains(e.target)) {
|
|
161
|
+
setShowPanel(false);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (stopESCKeyDownEventPropagation) {
|
|
165
|
+
e.stopPropagation();
|
|
166
|
+
}
|
|
160
167
|
}
|
|
161
168
|
};
|
|
162
169
|
|
|
163
170
|
var iconClassName = (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, className, true), (0, _defineProperty2.default)(_cx, 'filter-panel-open', showPanel), _cx));
|
|
164
171
|
var displayFilterIcon = typeof filterIcon === 'function' ? filterIcon(isFilterActive) : filterIcon;
|
|
172
|
+
var popupParent = (getPopupParent === null || getPopupParent === void 0 ? void 0 : getPopupParent(iconWrapRef.current)) || document.body;
|
|
165
173
|
return /*#__PURE__*/_react.default.createElement(FilterIconSpanStyle, {
|
|
166
174
|
style: style,
|
|
167
175
|
className: iconClassName,
|
|
@@ -180,8 +188,9 @@ function Filter(_ref2) {
|
|
|
180
188
|
filterIcon: displayFilterIcon,
|
|
181
189
|
hidePanel: hidePanel,
|
|
182
190
|
renderPanelContent: renderPanelContent,
|
|
183
|
-
hideFilterPopupHeader: hideFilterPopupHeader
|
|
184
|
-
|
|
191
|
+
hideFilterPopupHeader: hideFilterPopupHeader,
|
|
192
|
+
popupParent: popupParent
|
|
193
|
+
}), popupParent));
|
|
185
194
|
}
|
|
186
195
|
|
|
187
196
|
function _getPanelOffset(ele, hideFilterPopupHeader) {
|
|
@@ -45,6 +45,7 @@ function rangeSelection(opts) {
|
|
|
45
45
|
var SCROLL_SIZE = 30;
|
|
46
46
|
var tableBody = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableBody;
|
|
47
47
|
var tableFooter = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableFooter;
|
|
48
|
+
var artTable = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.artTable;
|
|
48
49
|
|
|
49
50
|
if (!tableBody) {
|
|
50
51
|
return pipeline;
|
|
@@ -76,6 +77,13 @@ function rangeSelection(opts) {
|
|
|
76
77
|
startColumn: startDragCell.column,
|
|
77
78
|
footerRowRange: footerRowRange
|
|
78
79
|
};
|
|
80
|
+
|
|
81
|
+
if (isCellRangeSingleCell(rangeSelection)) {
|
|
82
|
+
artTable.classList.remove((0, _classnames.default)(_styles.Classes.rangeSelection));
|
|
83
|
+
} else {
|
|
84
|
+
artTable.classList.add((0, _classnames.default)(_styles.Classes.rangeSelection));
|
|
85
|
+
}
|
|
86
|
+
|
|
79
87
|
rangeSelectedChange(rangeSelection);
|
|
80
88
|
};
|
|
81
89
|
|
|
@@ -105,6 +113,7 @@ function rangeSelection(opts) {
|
|
|
105
113
|
// shift + 点击选中
|
|
106
114
|
|
|
107
115
|
shiftKeySelect(mouseDownEvent);
|
|
116
|
+
if (mouseDownEvent.shiftKey) return;
|
|
108
117
|
var target = mouseDownEvent.target;
|
|
109
118
|
var startDragCell = getTargetCell(target, columns);
|
|
110
119
|
var mousemove$ = (0, _rxjs.fromEvent)(window, 'mousemove');
|
|
@@ -165,6 +174,7 @@ function rangeSelection(opts) {
|
|
|
165
174
|
|
|
166
175
|
if (columns.length && rowLen && !getElementEditable(e.target)) {
|
|
167
176
|
opts.preventkDefaultOfKeyDownEvent !== false && e.preventDefault();
|
|
177
|
+
artTable.classList.add((0, _classnames.default)(_styles.Classes.rangeSelection));
|
|
168
178
|
rangeSelectedChange({
|
|
169
179
|
startRow: 0,
|
|
170
180
|
endRow: rowLen - 1,
|
|
@@ -88,10 +88,6 @@ 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;
|
|
95
91
|
}
|
|
96
92
|
export declare function useTablePipeline(ctx?: Partial<TablePipelineCtx>): TablePipeline;
|
|
97
93
|
export {};
|
|
@@ -28,8 +28,6 @@ var _utils = require("../utils");
|
|
|
28
28
|
|
|
29
29
|
var _autoFill = require("./features/autoFill");
|
|
30
30
|
|
|
31
|
-
var _rangeSelection = require("./features/rangeSelection");
|
|
32
|
-
|
|
33
31
|
/**
|
|
34
32
|
* 表格数据处理流水线。TablePipeline 提供了表格数据处理过程中的一些上下方与工具方法,包括……
|
|
35
33
|
*
|
|
@@ -296,16 +294,11 @@ var TablePipeline = /*#__PURE__*/function () {
|
|
|
296
294
|
_this2.ref.current.domHelper = domHelper;
|
|
297
295
|
};
|
|
298
296
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
* 清除范围选中内容
|
|
303
|
-
*/
|
|
297
|
+
result.setRowHeightManager = function (rowHeightManager) {
|
|
298
|
+
_this2.ref.current.rowHeightManager = rowHeightManager;
|
|
299
|
+
};
|
|
304
300
|
|
|
305
|
-
|
|
306
|
-
key: "clearRangeSelection",
|
|
307
|
-
value: function clearRangeSelection() {
|
|
308
|
-
this.setStateAtKey(_rangeSelection.rangeSelectionKey, null);
|
|
301
|
+
return result;
|
|
309
302
|
}
|
|
310
303
|
}]);
|
|
311
304
|
return TablePipeline;
|