@kdcloudjs/table 1.1.4-canary.2 → 1.1.5-canary.1
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 +259 -54
- 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/styles.d.ts +1 -0
- package/es/table/base/styles.js +2 -1
- package/es/table/base/table.js +1 -1
- package/es/table/base/utils.js +7 -1
- package/es/table/pipeline/features/colGroupExtendable.d.ts +6 -0
- package/es/table/pipeline/features/colGroupExtendable.js +103 -0
- package/es/table/pipeline/features/columnFilter.js +1 -3
- package/es/table/pipeline/features/filter/Filter.js +11 -2
- package/es/table/pipeline/features/filter/FilterPanel.js +11 -1
- package/es/table/pipeline/features/index.d.ts +1 -0
- package/es/table/pipeline/features/index.js +2 -1
- package/es/table/pipeline/features/rangeSelection.js +15 -3
- package/es/table/pipeline/features/treeMode.js +2 -1
- package/es/table/utils/element.d.ts +1 -0
- package/es/table/utils/element.js +4 -0
- package/es/table/utils/keyCode.d.ts +1 -0
- package/es/table/utils/keyCode.js +2 -1
- package/lib/table/base/styles.d.ts +1 -0
- package/lib/table/base/styles.js +2 -1
- package/lib/table/base/table.js +1 -1
- package/lib/table/base/utils.js +8 -1
- package/lib/table/pipeline/features/colGroupExtendable.d.ts +6 -0
- package/lib/table/pipeline/features/colGroupExtendable.js +124 -0
- package/lib/table/pipeline/features/columnFilter.js +1 -3
- package/lib/table/pipeline/features/filter/Filter.js +12 -2
- package/lib/table/pipeline/features/filter/FilterPanel.js +12 -1
- package/lib/table/pipeline/features/index.d.ts +1 -0
- package/lib/table/pipeline/features/index.js +9 -1
- package/lib/table/pipeline/features/rangeSelection.js +16 -3
- package/lib/table/pipeline/features/treeMode.js +2 -1
- package/lib/table/utils/element.d.ts +1 -0
- package/lib/table/utils/element.js +6 -0
- package/lib/table/utils/keyCode.d.ts +1 -0
- package/lib/table/utils/keyCode.js +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,124 @@
|
|
|
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.colGroupExtendable = void 0;
|
|
9
|
+
|
|
10
|
+
var _splice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/splice"));
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
15
|
+
|
|
16
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/taggedTemplateLiteral"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireDefault(require("react"));
|
|
19
|
+
|
|
20
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
21
|
+
|
|
22
|
+
var _internals = require("../../internals");
|
|
23
|
+
|
|
24
|
+
var _utils = require("../../utils");
|
|
25
|
+
|
|
26
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
27
|
+
|
|
28
|
+
var _styles = require("../../base/styles");
|
|
29
|
+
|
|
30
|
+
var _templateObject;
|
|
31
|
+
|
|
32
|
+
var ExtendIconStyle = _styledComponents.default.span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n font-size:12px;\n margin-left:4px;\n"])));
|
|
33
|
+
|
|
34
|
+
var stateKey = 'colExtend';
|
|
35
|
+
|
|
36
|
+
var ExpandIcon = function ExpandIcon(_ref) {
|
|
37
|
+
var style = _ref.style,
|
|
38
|
+
className = _ref.className,
|
|
39
|
+
size = _ref.size,
|
|
40
|
+
isExtend = _ref.isExtend;
|
|
41
|
+
return isExtend ? /*#__PURE__*/_react.default.createElement("svg", {
|
|
42
|
+
className: className,
|
|
43
|
+
width: size,
|
|
44
|
+
height: size,
|
|
45
|
+
style: style,
|
|
46
|
+
viewBox: "96 96 896 896"
|
|
47
|
+
}, /*#__PURE__*/_react.default.createElement("path", {
|
|
48
|
+
d: "M678.347087 178.347087C690.550972 166.143203 690.550972 146.356797 678.347087 134.152913C666.143203 121.949029 646.356797 121.949029 634.152913 134.152913L290.402913 477.902913C278.199029 490.106797 278.199029 509.893203 290.402913 522.097087L634.152913 865.847087C646.356797 878.050972 666.143203 878.050972 678.347087 865.847087C690.550972 853.643203 690.550972 833.856797 678.347087 821.652913L356.694175 500L678.347087 178.347087z"
|
|
49
|
+
})) : /*#__PURE__*/_react.default.createElement("svg", {
|
|
50
|
+
className: className,
|
|
51
|
+
width: size,
|
|
52
|
+
height: size,
|
|
53
|
+
style: style,
|
|
54
|
+
viewBox: "96 96 896 896"
|
|
55
|
+
}, /*#__PURE__*/_react.default.createElement("path", {
|
|
56
|
+
d: "M321.652913 178.347087C309.449029 166.143203 309.449029 146.356797 321.652913 134.152913C333.856797 121.949029 353.643203 121.949029 365.847088 134.152913L709.597087 477.902913C721.800972 490.106797 721.800972 509.893203 709.597087 522.097087L365.847088 865.847087C353.643203 878.050972 333.856797 878.050972 321.652913 865.847087C309.449029 853.643203 309.449029 833.856797 321.652913 821.652913L643.305825 500L321.652913 178.347087z"
|
|
57
|
+
}));
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var colGroupExtendable = function colGroupExtendable() {
|
|
61
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
62
|
+
return function (pipeline) {
|
|
63
|
+
var _a, _b;
|
|
64
|
+
|
|
65
|
+
var columns = pipeline.getColumns();
|
|
66
|
+
var curState = (_b = (_a = opts.extendStatus) !== null && _a !== void 0 ? _a : pipeline.getStateAtKey(stateKey)) !== null && _b !== void 0 ? _b : {};
|
|
67
|
+
|
|
68
|
+
var processColumns = function processColumns(columns) {
|
|
69
|
+
// 当组合列可伸缩,且处于收缩状态时,只渲染一个子列,其他不渲染
|
|
70
|
+
var toggle = function toggle(col) {
|
|
71
|
+
// 对应的 col 进行状态切换
|
|
72
|
+
var changedValue = (0, _defineProperty2.default)({}, col.code, !curState[col.code]);
|
|
73
|
+
curState[col.code] = !curState[col.code];
|
|
74
|
+
pipeline.setStateAtKey(stateKey, (0, _extends2.default)({}, curState));
|
|
75
|
+
(opts === null || opts === void 0 ? void 0 : opts.onChangeExtendStatus) && opts.onChangeExtendStatus(curState, changedValue);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
var addIcon = function addIcon(col) {
|
|
79
|
+
var result = (0, _extends2.default)({}, col);
|
|
80
|
+
|
|
81
|
+
var addIconNode = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, _internals.internals.safeRenderHeader((0, _extends2.default)({}, col)), /*#__PURE__*/_react.default.createElement(ExtendIconStyle, {
|
|
82
|
+
onClick: function onClick() {
|
|
83
|
+
toggle(col);
|
|
84
|
+
}
|
|
85
|
+
}, /*#__PURE__*/_react.default.createElement(ExpandIcon, {
|
|
86
|
+
style: {
|
|
87
|
+
userSelect: 'none',
|
|
88
|
+
marginLeft: 2,
|
|
89
|
+
flexShrink: 0,
|
|
90
|
+
cursor: "pointer",
|
|
91
|
+
verticalAlign: 'middle'
|
|
92
|
+
},
|
|
93
|
+
className: (0, _classnames.default)((0, _defineProperty2.default)({}, _styles.Classes.tableExtendIcon, true)),
|
|
94
|
+
size: 16,
|
|
95
|
+
isExtend: curState[col.code]
|
|
96
|
+
})));
|
|
97
|
+
|
|
98
|
+
result.title = addIconNode;
|
|
99
|
+
return result;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
return (0, _utils.makeRecursiveMapper)(function (col) {
|
|
103
|
+
var _a;
|
|
104
|
+
|
|
105
|
+
var _ref2 = (col === null || col === void 0 ? void 0 : col.features) || {},
|
|
106
|
+
showExtendIcon = _ref2.showExtendIcon;
|
|
107
|
+
|
|
108
|
+
if (showExtendIcon === true && ((_a = col.children) === null || _a === void 0 ? void 0 : _a.length) > 1) {
|
|
109
|
+
var _context;
|
|
110
|
+
|
|
111
|
+
col = addIcon(col);
|
|
112
|
+
curState[col.code] === false && (0, _splice.default)(_context = col.children).call(_context, 1, col.children.length);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return col;
|
|
116
|
+
})(columns);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
pipeline.columns(processColumns(columns));
|
|
120
|
+
return pipeline;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
exports.colGroupExtendable = colGroupExtendable;
|
|
@@ -106,9 +106,7 @@ function filter() {
|
|
|
106
106
|
|
|
107
107
|
var filterPanel = (_d = col.features) === null || _d === void 0 ? void 0 : _d.filterPanel;
|
|
108
108
|
var colFilterIcon = (_f = (_e = col.features) === null || _e === void 0 ? void 0 : _e.filterIcon) !== null && _f !== void 0 ? _f : filterIcon;
|
|
109
|
-
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)(
|
|
110
|
-
title: null
|
|
111
|
-
}))])), [/*#__PURE__*/_react.default.createElement(_filter2.Filter, {
|
|
109
|
+
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)({}, col))])), [/*#__PURE__*/_react.default.createElement(_filter2.Filter, {
|
|
112
110
|
key: "filter",
|
|
113
111
|
FilterPanelContent: filterPanel,
|
|
114
112
|
filterIcon: colFilterIcon,
|
|
@@ -25,6 +25,8 @@ var _reactDom = require("react-dom");
|
|
|
25
25
|
|
|
26
26
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
27
27
|
|
|
28
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
29
|
+
|
|
28
30
|
var _styles = require("../../../base/styles");
|
|
29
31
|
|
|
30
32
|
var _FilterPanel = _interopRequireDefault(require("./FilterPanel"));
|
|
@@ -37,7 +39,7 @@ var _utils = require("../../../utils");
|
|
|
37
39
|
|
|
38
40
|
var _utils2 = require("../../../base/utils");
|
|
39
41
|
|
|
40
|
-
var
|
|
42
|
+
var _keyCode = _interopRequireDefault(require("../../../utils/keyCode"));
|
|
41
43
|
|
|
42
44
|
var _templateObject;
|
|
43
45
|
|
|
@@ -152,13 +154,21 @@ function Filter(_ref2) {
|
|
|
152
154
|
setShowPanel(true);
|
|
153
155
|
};
|
|
154
156
|
|
|
157
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
158
|
+
if (e.currentTarget.contains(e.target) && e.keyCode === _keyCode.default.ESC) {
|
|
159
|
+
setShowPanel(false);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
|
|
155
163
|
var iconClassName = (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, className, true), (0, _defineProperty2.default)(_cx, 'filter-panel-open', showPanel), _cx));
|
|
156
164
|
var displayFilterIcon = typeof filterIcon === 'function' ? filterIcon(isFilterActive) : filterIcon;
|
|
157
165
|
return /*#__PURE__*/_react.default.createElement(FilterIconSpanStyle, {
|
|
158
166
|
style: style,
|
|
159
167
|
className: iconClassName,
|
|
160
168
|
onClick: handleIconClick,
|
|
161
|
-
|
|
169
|
+
onKeyDown: handleKeyDown,
|
|
170
|
+
ref: iconWrapRef,
|
|
171
|
+
tabIndex: -1
|
|
162
172
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
163
173
|
ref: iconRef,
|
|
164
174
|
className: _styles.Classes.filterIcon
|
|
@@ -29,6 +29,8 @@ var _DefaultFilterIcon = _interopRequireDefault(require("./DefaultFilterIcon"));
|
|
|
29
29
|
|
|
30
30
|
var _styles = require("../../../base/styles");
|
|
31
31
|
|
|
32
|
+
var _keyCode = _interopRequireDefault(require("../../../utils/keyCode"));
|
|
33
|
+
|
|
32
34
|
var _templateObject;
|
|
33
35
|
|
|
34
36
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -91,6 +93,13 @@ function FilterPanel(_ref) {
|
|
|
91
93
|
!isContainPanel(e) && !hasPopupMouseEvent.current && onClose();
|
|
92
94
|
hasPopupMouseEvent.current = false;
|
|
93
95
|
}, ['click']);
|
|
96
|
+
|
|
97
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
98
|
+
if (e.currentTarget.contains(e.target) && e.keyCode === _keyCode.default.ESC) {
|
|
99
|
+
onClose();
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
|
|
94
103
|
return /*#__PURE__*/_react.default.createElement(FilterPanelStyle, {
|
|
95
104
|
className: _styles.Classes.popup,
|
|
96
105
|
style: (0, _extends2.default)((0, _extends2.default)({}, style), {
|
|
@@ -100,7 +109,9 @@ function FilterPanel(_ref) {
|
|
|
100
109
|
}),
|
|
101
110
|
onMouseDown: handleMouseEvent,
|
|
102
111
|
onMouseUp: handleMouseEvent,
|
|
103
|
-
|
|
112
|
+
onKeyDown: handleKeyDown,
|
|
113
|
+
ref: ref,
|
|
114
|
+
tabIndex: -1
|
|
104
115
|
}, !hideFilterPopupHeader ? /*#__PURE__*/_react.default.createElement("div", {
|
|
105
116
|
className: _styles.Classes.popupHeader
|
|
106
117
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
@@ -17,3 +17,4 @@ export { filter, FilterFeatureOptions } from './columnFilter';
|
|
|
17
17
|
export { rangeSelection, RangeSelectionFeatureOptions } from './rangeSelection';
|
|
18
18
|
export { mergeCellHover } from './mergeCellHover';
|
|
19
19
|
export { footerDataSource, FooterDataSourceFeatureOptions, footerRowMetaSymbol } from './footerDataSource';
|
|
20
|
+
export { colGroupExtendable, colGroupExtendOption } from './colGroupExtendable';
|
|
@@ -19,6 +19,12 @@ Object.defineProperty(exports, "buildTree", {
|
|
|
19
19
|
return _buildTree.buildTree;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
+
Object.defineProperty(exports, "colGroupExtendable", {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function get() {
|
|
25
|
+
return _colGroupExtendable.colGroupExtendable;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
22
28
|
Object.defineProperty(exports, "columnDrag", {
|
|
23
29
|
enumerable: true,
|
|
24
30
|
get: function get() {
|
|
@@ -170,4 +176,6 @@ var _rangeSelection = require("./rangeSelection");
|
|
|
170
176
|
|
|
171
177
|
var _mergeCellHover = require("./mergeCellHover");
|
|
172
178
|
|
|
173
|
-
var _footerDataSource = require("./footerDataSource");
|
|
179
|
+
var _footerDataSource = require("./footerDataSource");
|
|
180
|
+
|
|
181
|
+
var _colGroupExtendable = require("./colGroupExtendable");
|
|
@@ -21,6 +21,8 @@ var _findIndex = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-
|
|
|
21
21
|
|
|
22
22
|
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
23
23
|
|
|
24
|
+
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
25
|
+
|
|
24
26
|
var _utils = require("../../utils");
|
|
25
27
|
|
|
26
28
|
var _others = require("../../utils/others");
|
|
@@ -159,14 +161,14 @@ function rangeSelection(opts) {
|
|
|
159
161
|
|
|
160
162
|
if ((e.ctrlKey || e.metaKey) && e.key === 'a') {
|
|
161
163
|
var rowLen = pipeline.getDataSource().length;
|
|
162
|
-
var footerDataSource = pipeline.getFooterDataSource() || [];
|
|
164
|
+
var footerDataSource = pipeline.getFooterDataSource() || []; // 焦点位于可编辑的单元格内不做全选
|
|
163
165
|
|
|
164
|
-
if (columns.length && rowLen) {
|
|
166
|
+
if (columns.length && rowLen && !getElementEditable(e.target)) {
|
|
165
167
|
opts.preventkDefaultOfKeyDownEvent !== false && e.preventDefault();
|
|
166
168
|
rangeSelectedChange({
|
|
167
169
|
startRow: 0,
|
|
168
170
|
endRow: rowLen - 1,
|
|
169
|
-
columns: columns,
|
|
171
|
+
columns: (0, _utils.collectNodes)(columns, 'leaf-only'),
|
|
170
172
|
startColumn: columns[0],
|
|
171
173
|
footerRowRange: footerDataSource.length > 0 ? {
|
|
172
174
|
startRow: 0,
|
|
@@ -383,4 +385,15 @@ function getFooterRowIndex(footerRowRange) {
|
|
|
383
385
|
startRowIndex: -1,
|
|
384
386
|
endRowIndex: -1
|
|
385
387
|
};
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
function getElementEditable(target) {
|
|
391
|
+
var _context2;
|
|
392
|
+
|
|
393
|
+
if (!target) return;
|
|
394
|
+
|
|
395
|
+
if ((0, _includes.default)(_context2 = ['input', 'textarea']).call(_context2, target.tagName.toLowerCase())) {
|
|
396
|
+
if (target.type === 'checkbox') return;
|
|
397
|
+
return !target.disabled && !target.readOnly;
|
|
398
|
+
}
|
|
386
399
|
}
|
|
@@ -251,7 +251,8 @@ function treeMode() {
|
|
|
251
251
|
columns[expandColIndex] = (0, _extends3.default)((0, _extends3.default)({}, expandCol), {
|
|
252
252
|
title: /*#__PURE__*/_react.default.createElement("span", {
|
|
253
253
|
style: {
|
|
254
|
-
marginLeft: iconIndent + iconWidth + iconGap
|
|
254
|
+
marginLeft: iconIndent + iconWidth + iconGap,
|
|
255
|
+
display: 'flex'
|
|
255
256
|
}
|
|
256
257
|
}, _internals.internals.safeRenderHeader(expandCol)),
|
|
257
258
|
render: render,
|
|
@@ -7,6 +7,7 @@ exports.calculatePointerRelative = calculatePointerRelative;
|
|
|
7
7
|
exports.calculatePopupRelative = calculatePopupRelative;
|
|
8
8
|
exports.getEventPath = getEventPath;
|
|
9
9
|
exports.getTargetEleInEventPath = getTargetEleInEventPath;
|
|
10
|
+
exports.hasScroll = hasScroll;
|
|
10
11
|
exports.isElementInEventPath = isElementInEventPath;
|
|
11
12
|
exports.keepWithinBounds = keepWithinBounds;
|
|
12
13
|
|
|
@@ -240,4 +241,9 @@ function keepWithinBounds(popupParent, popup, x, y, isPerfect) {
|
|
|
240
241
|
x: x,
|
|
241
242
|
y: y
|
|
242
243
|
};
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function hasScroll(ele) {
|
|
247
|
+
var isHorizontal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
248
|
+
return isHorizontal ? ele.scrollWidth > ele.clientWidth : ele.scrollHeight > ele.clientHeight;
|
|
243
249
|
}
|