@kdcloudjs/table 1.1.3-canary.9 → 1.1.4-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 +246 -161
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +10 -9
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/es/table/base/styles.d.ts +5 -2
- package/es/table/base/styles.js +11 -6
- package/es/table/base/table.d.ts +2 -0
- package/es/table/base/table.js +27 -50
- package/es/table/base/utils.d.ts +7 -0
- package/es/table/base/utils.js +29 -1
- package/es/table/pipeline/features/columnDrag.js +5 -4
- package/es/table/pipeline/features/columnFilter.d.ts +1 -1
- package/es/table/pipeline/features/columnResizeWidth.js +1 -1
- package/es/table/pipeline/features/filter/DefaultFilterContent.js +22 -2
- 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 +21 -15
- package/es/table/pipeline/pipeline.js +1 -1
- package/es/table/utils/keyCode.d.ts +4 -0
- package/es/table/utils/keyCode.js +4 -0
- package/es/table/utils/mergeCellProps.js +2 -6
- package/lib/table/base/styles.d.ts +5 -2
- package/lib/table/base/styles.js +11 -6
- package/lib/table/base/table.d.ts +2 -0
- package/lib/table/base/table.js +27 -50
- package/lib/table/base/utils.d.ts +7 -0
- package/lib/table/base/utils.js +35 -1
- package/lib/table/pipeline/features/columnDrag.js +5 -4
- package/lib/table/pipeline/features/columnFilter.d.ts +1 -1
- package/lib/table/pipeline/features/columnResizeWidth.js +1 -1
- package/lib/table/pipeline/features/filter/DefaultFilterContent.js +23 -1
- 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 +21 -14
- package/lib/table/pipeline/pipeline.js +1 -1
- package/lib/table/utils/keyCode.d.ts +4 -0
- package/lib/table/utils/keyCode.js +11 -0
- package/lib/table/utils/mergeCellProps.js +2 -6
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ export declare const LOCK_SHADOW_PADDING = 20;
|
|
|
2
2
|
export declare const Classes: {
|
|
3
3
|
/** BaseTable 表格组件的外层包裹 div */
|
|
4
4
|
readonly artTableWrapper: string;
|
|
5
|
+
readonly artTableBordered: string;
|
|
5
6
|
readonly artTable: string;
|
|
6
7
|
readonly tableHeaderMain: string;
|
|
7
8
|
readonly tableHeader: string;
|
|
@@ -114,13 +115,13 @@ export declare type BaseTableCSSVariables = Partial<{
|
|
|
114
115
|
'--border-color': string;
|
|
115
116
|
/** 单元格边框,默认为 1px solid #dfe3e8 */
|
|
116
117
|
'--cell-border': string;
|
|
117
|
-
/** 单元格上下边框,默认为 #dfe3e8 */
|
|
118
|
+
/** 单元格上下边框,默认为 none ,默认值为 1px solid #dfe3e8 */
|
|
118
119
|
'--cell-border-horizontal': string;
|
|
119
120
|
/** 单元格左右边框,默认为 #dfe3e8 */
|
|
120
121
|
'--cell-border-vertical': string;
|
|
121
122
|
/** 表头单元格边框,默认为 1px solid #dfe3e8 */
|
|
122
123
|
'--header-cell-border': string;
|
|
123
|
-
/** 表头单元格上下边框,默认为 1px solid #dfe3e8 */
|
|
124
|
+
/** 表头单元格上下边框,默认为 none ,默认值为 1px solid #dfe3e8 */
|
|
124
125
|
'--header-cell-border-horizontal': string;
|
|
125
126
|
/** 表头单元格左右边框,默认为 1px solid #dfe3e8 */
|
|
126
127
|
'--header-cell-border-vertical': string;
|
|
@@ -150,7 +151,9 @@ export declare const defaultCSSVariables: {
|
|
|
150
151
|
'--cell-border-horizontal': string;
|
|
151
152
|
'---cell-border-vertical': string;
|
|
152
153
|
'--header-cell-border': string;
|
|
154
|
+
'--cell-border-vertical': string;
|
|
153
155
|
'--header-cell-border-horizontal': string;
|
|
156
|
+
'--header-cell-border-vertical': string;
|
|
154
157
|
};
|
|
155
158
|
export declare const variableConst: string;
|
|
156
159
|
export declare const StyledArtTableWrapper: any;
|
package/es/table/base/styles.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _taggedTemplateLiteral from "@babel/runtime-corejs3/helpers/taggedTemplateLiteral";
|
|
2
2
|
|
|
3
|
-
var _templateObject, _templateObject2, _templateObject3;
|
|
3
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
4
4
|
|
|
5
5
|
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
6
6
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
@@ -10,6 +10,7 @@ var prefix = 'kd-';
|
|
|
10
10
|
export var Classes = {
|
|
11
11
|
/** BaseTable 表格组件的外层包裹 div */
|
|
12
12
|
artTableWrapper: "".concat(prefix, "table-wrapper"),
|
|
13
|
+
artTableBordered: "".concat(prefix, "table-bordered"),
|
|
13
14
|
artTable: "".concat(prefix, "table"),
|
|
14
15
|
tableHeaderMain: "".concat(prefix, "table-header-main"),
|
|
15
16
|
tableHeader: "".concat(prefix, "table-header"),
|
|
@@ -93,7 +94,7 @@ var Z = {
|
|
|
93
94
|
scrollItem: 30,
|
|
94
95
|
loadingIndicator: 40
|
|
95
96
|
};
|
|
96
|
-
var outerBorderStyleMixin = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n border-top: 1px solid #cccccc;\n border-right: 1px solid #cccccc;\n border-bottom: 1px solid #cccccc;\n border-left: 1px solid #cccccc;\n\n td.", ",\n th.", " {\n border-left: none;\n }\n td.", ",\n th.", " {\n
|
|
97
|
+
var outerBorderStyleMixin = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n border-top: 1px solid #cccccc;\n border-right: 1px solid #cccccc;\n border-bottom: 1px solid #cccccc;\n border-left: 1px solid #cccccc;\n\n td.", ",\n th.", " {\n border-left: none;\n }\n td.", ",\n th.", " {\n border-right: none;\n }\n\n thead tr.", " th,\n tbody tr.", " td {\n border-top: none;\n }\n &.has-footer tfoot tr.", " td {\n border-bottom: none;\n }\n &:not(.has-footer) tbody tr.", " td {\n border-bottom: none;\n }\n td.", ":not(.", "){\n border-left: var(---cell-border-vertical);\n }\n td.", ":not(.", "){\n border-right: var(---cell-border-vertical);\n }\n"])), Classes.first, Classes.first, Classes.last, Classes.last, Classes.first, Classes.first, Classes.last, Classes.last, Classes.rowSpan, Classes.first, Classes.rowSpan, Classes.last);
|
|
97
98
|
export var defaultCSSVariables = {
|
|
98
99
|
'--row-height': '48px',
|
|
99
100
|
'--color': '#333',
|
|
@@ -103,7 +104,7 @@ export var defaultCSSVariables = {
|
|
|
103
104
|
'--primary-color': '#5582F3',
|
|
104
105
|
'--primary-color-level1': 'rgb(242, 248, 255)',
|
|
105
106
|
'--primary-color-level2': 'rgb(135, 173, 255)',
|
|
106
|
-
'--icon-color': '#
|
|
107
|
+
'--icon-color': '#666666',
|
|
107
108
|
'--strong-border-color': '#d9d9d9',
|
|
108
109
|
'--header-row-height': '32px',
|
|
109
110
|
'--header-color': '#333',
|
|
@@ -119,11 +120,15 @@ export var defaultCSSVariables = {
|
|
|
119
120
|
'--cell-border-horizontal': '1px solid #dfe3e8',
|
|
120
121
|
'---cell-border-vertical': '1px solid #dfe3e8',
|
|
121
122
|
'--header-cell-border': '1px solid #dfe3e8',
|
|
122
|
-
'--
|
|
123
|
+
'--cell-border-vertical': '1px solid #dfe3e8',
|
|
124
|
+
'--header-cell-border-horizontal': '1px solid #dfe3e8',
|
|
125
|
+
'--header-cell-border-vertical': '1px solid #dfe3e8'
|
|
123
126
|
};
|
|
124
127
|
export var variableConst = getCssVariableText(defaultCSSVariables);
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
var notBorderedStyleMixin = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n --cell-border-vertical: none;\n --header-cell-border-vertical: none;\n"])));
|
|
129
|
+
var borderedStyleMixin = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n //th\u9690\u85CF\u5217\u5BBD\u62D6\u62FD\u7684\u80CC\u666F\u8272\uFF0C\u4F7F\u7528th\u7684\u53F3\u8FB9\u6846\u4EE3\u66FF\n .", "::after{\n background-color: inherit;\n }\n"])), Classes.tableHeaderCellResize);
|
|
130
|
+
export var StyledArtTableWrapper = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\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 // \u8868\u683C\u4E0D\u542F\u7528\u8FB9\u6846\u7EBF\uFF0C\u9690\u85CFth\u3001td\u7684\u5355\u5143\u683C\u5DE6\u53F3\u8FB9\u6846\u7EBF\n &:not(.", ") {\n ", "\n }\n &.", "{\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: var(--header-cell-border-vertical)\n }\n\n th.", " {\n border-right: var(--header-cell-border-vertical);\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 \n //#region \u62D6\u62FD\u5217\u5BBD\u5927\u5C0F\n .", "::after{\n background-color: var(--border-color);\n }\n //#endregion\n\n "])), variableConst, variableConst, outerBorderStyleMixin, Classes.artTableBordered, notBorderedStyleMixin, Classes.artTableBordered, borderedStyleMixin, 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, Classes.tableHeaderCellResize);
|
|
131
|
+
export var ButtonCSS = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\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);
|
|
127
132
|
|
|
128
133
|
function getCssVariableText(obj) {
|
|
129
134
|
return _Object$keys(obj).reduce(function (acc, key) {
|
package/es/table/base/table.d.ts
CHANGED
package/es/table/base/table.js
CHANGED
|
@@ -3,13 +3,13 @@ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
|
|
|
3
3
|
import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
|
|
4
4
|
import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
|
|
5
5
|
import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
|
|
6
|
+
import _extends from "@babel/runtime-corejs3/helpers/extends";
|
|
6
7
|
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
|
|
7
8
|
import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
|
|
8
9
|
import _createClass from "@babel/runtime-corejs3/helpers/createClass";
|
|
9
10
|
import _inherits from "@babel/runtime-corejs3/helpers/inherits";
|
|
10
11
|
import _possibleConstructorReturn from "@babel/runtime-corejs3/helpers/possibleConstructorReturn";
|
|
11
12
|
import _getPrototypeOf from "@babel/runtime-corejs3/helpers/getPrototypeOf";
|
|
12
|
-
import _extends from "@babel/runtime-corejs3/helpers/extends";
|
|
13
13
|
|
|
14
14
|
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(_e) { throw _e; }, 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(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
15
15
|
|
|
@@ -37,37 +37,10 @@ import { getFullRenderRange, makeRowHeightManager } from './helpers/rowHeightMan
|
|
|
37
37
|
import { TableDOMHelper } from './helpers/TableDOMUtils';
|
|
38
38
|
import { HtmlTable } from './html-table';
|
|
39
39
|
import Loading from './loading';
|
|
40
|
-
import { Classes, LOCK_SHADOW_PADDING, StyledArtTableWrapper
|
|
41
|
-
import { addResizeObserver, getScrollbarSize, OVERSCAN_SIZE, shallowEqual, STYLED_REF_PROP, sum, syncScrollLeft, throttledWindowResize$, getTableScrollFooterDOM, getTableScrollHeaderDOM } from './utils';
|
|
42
|
-
import cssVars from 'css-vars-ponyfill';
|
|
40
|
+
import { Classes, LOCK_SHADOW_PADDING, StyledArtTableWrapper } from './styles';
|
|
41
|
+
import { addResizeObserver, getScrollbarSize, OVERSCAN_SIZE, shallowEqual, STYLED_REF_PROP, sum, syncScrollLeft, throttledWindowResize$, getTableScrollFooterDOM, getTableScrollHeaderDOM, cssPolifill } from './utils';
|
|
43
42
|
import { console, browserType } from '../utils';
|
|
44
43
|
import getTableRenderTemplate from './renderTemplates';
|
|
45
|
-
|
|
46
|
-
var cssPolifill = function cssPolifill(_ref) {
|
|
47
|
-
var variables = _ref.variables,
|
|
48
|
-
enableCSSVariables = _ref.enableCSSVariables;
|
|
49
|
-
|
|
50
|
-
// const style = document.createElement('style')
|
|
51
|
-
// style.type = 'text/css'
|
|
52
|
-
// style.innerHTML = '.aaa{ --color: red; }'
|
|
53
|
-
// document.getElementsByTagName('head').item(0).appendChild(style)
|
|
54
|
-
// const variableNames = variableConst.match(/--.*?(?=:)/g)
|
|
55
|
-
// variables = variableNames.map((name) => rootElement.style[name])
|
|
56
|
-
if (enableCSSVariables === false) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
cssVars({
|
|
61
|
-
// exclude: 'link[href*="semantic-ui"]',
|
|
62
|
-
// onlyLegacy: false,
|
|
63
|
-
// rootElement: rootElement,
|
|
64
|
-
include: 'style[data-styled]',
|
|
65
|
-
variables: _extends({}, defaultCSSVariables, variables),
|
|
66
|
-
watch: true,
|
|
67
|
-
silent: true
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
|
|
71
44
|
var propsDotEmptyContentDeprecatedWarned = false;
|
|
72
45
|
|
|
73
46
|
function warnPropsDotEmptyContentIsDeprecated() {
|
|
@@ -477,6 +450,8 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
477
450
|
}, {
|
|
478
451
|
key: "render",
|
|
479
452
|
value: function render() {
|
|
453
|
+
var _cx;
|
|
454
|
+
|
|
480
455
|
// console.log('render table')
|
|
481
456
|
var info = calculateRenderInfo(this);
|
|
482
457
|
this.lastInfo = info;
|
|
@@ -492,17 +467,17 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
492
467
|
isLoading = _this$props6.isLoading,
|
|
493
468
|
getTableProps = _this$props6.getTableProps,
|
|
494
469
|
footerDataSource = _this$props6.footerDataSource,
|
|
495
|
-
components = _this$props6.components
|
|
496
|
-
|
|
470
|
+
components = _this$props6.components,
|
|
471
|
+
bordered = _this$props6.bordered;
|
|
472
|
+
var artTableWrapperClassName = cx(Classes.artTableWrapper, (_cx = {
|
|
497
473
|
'use-outer-border': useOuterBorder,
|
|
498
474
|
empty: dataSource.length === 0,
|
|
499
475
|
lock: info.hasLockColumn,
|
|
500
476
|
'has-header': hasHeader,
|
|
501
477
|
'sticky-header': isStickyHeader !== null && isStickyHeader !== void 0 ? isStickyHeader : isStickyHead,
|
|
502
478
|
'has-footer': footerDataSource.length > 0,
|
|
503
|
-
'sticky-footer': isStickyFooter
|
|
504
|
-
|
|
505
|
-
}, className);
|
|
479
|
+
'sticky-footer': isStickyFooter
|
|
480
|
+
}, _defineProperty(_cx, Classes.artTableBordered, bordered), _defineProperty(_cx, 'ie-polyfill-wrapper', browserType.isIE), _cx), className);
|
|
506
481
|
|
|
507
482
|
var artTableWrapperProps = _defineProperty({
|
|
508
483
|
className: artTableWrapperClassName,
|
|
@@ -533,10 +508,12 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
533
508
|
|
|
534
509
|
var _this$props7 = this.props,
|
|
535
510
|
cssVariables = _this$props7.cssVariables,
|
|
536
|
-
enableCSSVariables = _this$props7.enableCSSVariables
|
|
511
|
+
enableCSSVariables = _this$props7.enableCSSVariables,
|
|
512
|
+
bordered = _this$props7.bordered;
|
|
537
513
|
cssPolifill({
|
|
538
514
|
variables: cssVariables || {},
|
|
539
|
-
enableCSSVariables: enableCSSVariables
|
|
515
|
+
enableCSSVariables: enableCSSVariables,
|
|
516
|
+
bordered: bordered
|
|
540
517
|
});
|
|
541
518
|
(_b = (_a = this.props).setTableWidth) === null || _b === void 0 ? void 0 : _b.call(_a, this.domHelper.tableBody.clientWidth);
|
|
542
519
|
(_d = (_c = this.props).setTableDomHelper) === null || _d === void 0 ? void 0 : _d.call(_c, this.domHelper);
|
|
@@ -608,15 +585,15 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
608
585
|
|
|
609
586
|
this.rootSubscription.add(combineLatest([richVisibleRects$.pipe(op.map(function (p) {
|
|
610
587
|
return p.clipRect;
|
|
611
|
-
}), op.distinctUntilChanged(shallowEqual)), this.props$.pipe(op.startWith(null), op.pairwise(), op.filter(function (
|
|
612
|
-
var
|
|
613
|
-
prevProps =
|
|
614
|
-
props =
|
|
588
|
+
}), op.distinctUntilChanged(shallowEqual)), this.props$.pipe(op.startWith(null), op.pairwise(), op.filter(function (_ref) {
|
|
589
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
590
|
+
prevProps = _ref2[0],
|
|
591
|
+
props = _ref2[1];
|
|
615
592
|
|
|
616
593
|
return prevProps == null || !prevProps.isLoading && props.isLoading;
|
|
617
|
-
}))]).subscribe(function (
|
|
618
|
-
var
|
|
619
|
-
clipRect =
|
|
594
|
+
}))]).subscribe(function (_ref3) {
|
|
595
|
+
var _ref4 = _slicedToArray(_ref3, 1),
|
|
596
|
+
clipRect = _ref4[0];
|
|
620
597
|
|
|
621
598
|
var loadingIndicator = _this2.domHelper.getLoadingIndicator();
|
|
622
599
|
|
|
@@ -635,9 +612,9 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
635
612
|
horizontal = _this2$lastInfo$useVi.horizontal,
|
|
636
613
|
vertical = _this2$lastInfo$useVi.vertical;
|
|
637
614
|
return horizontal || vertical;
|
|
638
|
-
}), op.map(function (
|
|
639
|
-
var clipRect =
|
|
640
|
-
offsetY =
|
|
615
|
+
}), op.map(function (_ref5) {
|
|
616
|
+
var clipRect = _ref5.clipRect,
|
|
617
|
+
offsetY = _ref5.offsetY;
|
|
641
618
|
return {
|
|
642
619
|
maxRenderHeight: clipRect.bottom - clipRect.top,
|
|
643
620
|
maxRenderWidth: clipRect.right - clipRect.left,
|
|
@@ -654,9 +631,9 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
654
631
|
})).subscribe(function (sizeAndOffset) {
|
|
655
632
|
_this2.setState(sizeAndOffset);
|
|
656
633
|
}));
|
|
657
|
-
this.rootSubscription.add(richVisibleRects$.pipe(op.map(function (
|
|
658
|
-
var clipRect =
|
|
659
|
-
offsetY =
|
|
634
|
+
this.rootSubscription.add(richVisibleRects$.pipe(op.map(function (_ref6) {
|
|
635
|
+
var clipRect = _ref6.clipRect,
|
|
636
|
+
offsetY = _ref6.offsetY;
|
|
660
637
|
return {
|
|
661
638
|
maxRenderHeight: clipRect.bottom - clipRect.top,
|
|
662
639
|
maxRenderWidth: clipRect.right - clipRect.left,
|
package/es/table/base/utils.d.ts
CHANGED
|
@@ -36,4 +36,11 @@ export declare function shallowEqual<T>(objA: T, objB: T): boolean;
|
|
|
36
36
|
export declare function composeRowPropsGetter(getRowProps: (record: any, rowIndex: number) => React.HTMLAttributes<HTMLTableRowElement>, pendingRowProps?: React.HTMLAttributes<HTMLTableRowElement>): (record: any, rowIndex: number) => React.HTMLAttributes<HTMLTableRowElement>;
|
|
37
37
|
export declare function getTableScrollHeaderDOM(domHelper: TableDOMHelper): HTMLDivElement;
|
|
38
38
|
export declare function getTableScrollFooterDOM(domHelper: TableDOMHelper): HTMLDivElement;
|
|
39
|
+
export declare const cssPolifill: ({ variables, enableCSSVariables, bordered }: {
|
|
40
|
+
variables: {
|
|
41
|
+
[key: string]: any;
|
|
42
|
+
};
|
|
43
|
+
enableCSSVariables?: boolean;
|
|
44
|
+
bordered?: boolean;
|
|
45
|
+
}) => void;
|
|
39
46
|
export {};
|
package/es/table/base/utils.js
CHANGED
|
@@ -18,8 +18,10 @@ import { asyncScheduler, BehaviorSubject, defer, fromEvent, Subscription } from
|
|
|
18
18
|
import { map, throttleTime } from 'rxjs/operators';
|
|
19
19
|
import ResizeObserver from 'resize-observer-polyfill';
|
|
20
20
|
import * as styledComponents from 'styled-components';
|
|
21
|
+
import cssVars from 'css-vars-ponyfill';
|
|
21
22
|
import mergeCellProps from '../utils/mergeCellProps';
|
|
22
23
|
import { browserType } from '../utils';
|
|
24
|
+
import { defaultCSSVariables } from './styles';
|
|
23
25
|
/** styled-components 类库的版本,ali-react-table 同时支持 v3 和 v5 */
|
|
24
26
|
|
|
25
27
|
export var STYLED_VERSION = styledComponents.createGlobalStyle != null ? 'v5' : 'v3';
|
|
@@ -211,4 +213,30 @@ export function getTableScrollHeaderDOM(domHelper) {
|
|
|
211
213
|
}
|
|
212
214
|
export function getTableScrollFooterDOM(domHelper) {
|
|
213
215
|
return browserType.isIE ? domHelper.tableFooterMain : domHelper.tableFooter;
|
|
214
|
-
}
|
|
216
|
+
}
|
|
217
|
+
export var cssPolifill = function cssPolifill(_ref) {
|
|
218
|
+
var variables = _ref.variables,
|
|
219
|
+
enableCSSVariables = _ref.enableCSSVariables,
|
|
220
|
+
bordered = _ref.bordered;
|
|
221
|
+
|
|
222
|
+
if (enableCSSVariables === false) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
var conditionCSSVariables = {}; // 默认情况下存在td、th无左右边框,开启`bordered`属性后才开启,否则隐藏这两种属性
|
|
227
|
+
|
|
228
|
+
if (!bordered) {
|
|
229
|
+
conditionCSSVariables['--cell-border-vertical'] = 'none';
|
|
230
|
+
conditionCSSVariables['--header-cell-border-vertical'] = 'none';
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
cssVars({
|
|
234
|
+
// exclude: 'link[href*="semantic-ui"]',
|
|
235
|
+
// onlyLegacy: false,
|
|
236
|
+
// rootElement: rootElement,
|
|
237
|
+
include: 'style[data-styled]',
|
|
238
|
+
variables: _extends({}, defaultCSSVariables, variables, conditionCSSVariables),
|
|
239
|
+
watch: true,
|
|
240
|
+
silent: true
|
|
241
|
+
});
|
|
242
|
+
};
|
|
@@ -65,7 +65,7 @@ export function columnDrag() {
|
|
|
65
65
|
},
|
|
66
66
|
headerCellProps: mergeCellProps(col.headerCellProps, {
|
|
67
67
|
onMouseDown: !isLeaf || path.length > 1 ? undefined : function (e) {
|
|
68
|
-
if (e.button !== 0) {
|
|
68
|
+
if (e.button !== 0 || !e.currentTarget.contains(e.target)) {
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
|
|
@@ -241,13 +241,14 @@ export function columnDrag() {
|
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
function handleMouseUp(e) {
|
|
244
|
-
e.stopPropagation();
|
|
245
244
|
document.body.removeEventListener('mousemove', handleMouseMove);
|
|
246
245
|
document.body.removeEventListener('mouseup', handleMouseUp);
|
|
247
|
-
window.removeEventListener('selectstart', disableSelect);
|
|
246
|
+
window.removeEventListener('selectstart', disableSelect);
|
|
248
247
|
|
|
249
248
|
if (_isMoveWhenClicking(mouseDownClientX, mouseDownClientY, e.clientX, e.clientY)) {
|
|
250
|
-
|
|
249
|
+
e.stopPropagation(); // 存在移动就阻止冒泡
|
|
250
|
+
|
|
251
|
+
currentTarget.addEventListener('click', stopClickPropagation); // 阻止列头点击事件,防止拖动后触发列头过滤事件
|
|
251
252
|
}
|
|
252
253
|
|
|
253
254
|
window.requestAnimationFrame(function () {
|
|
@@ -13,7 +13,7 @@ export interface FilterFeatureOptions {
|
|
|
13
13
|
/** 过滤模式。单列过滤 single,多列过滤 multiple,默认为多选 */
|
|
14
14
|
mode?: 'single' | 'multiple';
|
|
15
15
|
/** 过滤图标 */
|
|
16
|
-
filterIcon?: ReactNode;
|
|
16
|
+
filterIcon?: ReactNode | ((filtered: boolean) => ReactNode);
|
|
17
17
|
/** 是否对触发弹出过滤面板 的 click 事件调用 event.stopPropagation() */
|
|
18
18
|
stopClickEventPropagation?: boolean;
|
|
19
19
|
}
|
|
@@ -12,7 +12,7 @@ import * as op from 'rxjs/operators';
|
|
|
12
12
|
import { mergeCellProps, collectNodes, makeRecursiveMapper, isGroupColumn } from '../../utils';
|
|
13
13
|
import { internals } from '../../internals';
|
|
14
14
|
import { Classes } from '../../base/styles';
|
|
15
|
-
var TableHeaderCellResize = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: -5px;\n height: 100%;\n width: 10px;\n cursor: ew-resize;\n display: flex;\n flex-direction: column;\n align-items: center;\n z-index:1;\n\n &:after {\n content: \"\";\n position: absolute;\n display: block;\n left: calc(50% - 1px);\n width: 1px;\n height: calc(100% - 14px);\n top: 7px;\n
|
|
15
|
+
var TableHeaderCellResize = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: -5px;\n height: 100%;\n width: 10px;\n cursor: ew-resize;\n display: flex;\n flex-direction: column;\n align-items: center;\n z-index:1;\n\n &:after {\n content: \"\";\n position: absolute;\n display: block;\n left: calc(50% - 1px);\n width: 1px;\n height: calc(100% - 14px);\n top: 7px;\n }\n"])));
|
|
16
16
|
var TableHeaderGroupCellResize = styled(TableHeaderCellResize)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n &:after {\n height: 100%;\n top: 0;\n }\n"])));
|
|
17
17
|
|
|
18
18
|
function clamp(min, x, max) {
|
|
@@ -6,11 +6,12 @@ var _templateObject;
|
|
|
6
6
|
|
|
7
7
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
8
8
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
9
|
-
import React, { useEffect } from 'react';
|
|
9
|
+
import React, { useEffect, useRef } from 'react';
|
|
10
10
|
import styled from 'styled-components';
|
|
11
11
|
import cx from 'classnames';
|
|
12
12
|
import { DEFAULT_FILTER_OPTIONS } from './util';
|
|
13
13
|
import { Classes, ButtonCSS } from '../../../base/styles';
|
|
14
|
+
import KeyCode from '../../../utils/keyCode';
|
|
14
15
|
var DefaultFilterContentStyle = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n background-color: #ffffff;\n border-radius: 2px;\n width: 100%;\n\n ", "\n .filter-option-list {\n display: flex;\n flex-direction: column;\n margin-top: 8px;\n ul {\n margin: 0;\n padding: 0;\n li {\n display: flex;\n position: relative;\n flex-shrink: 0;\n height: 32px;\n align-items: center;\n border-radius: 2px;\n font-size: 12px;\n color: var(--color);\n padding: 0 12px;\n overflow: hidden;\n cursor: pointer;\n &:hover{\n background-color: var(--primary-color-level1);\n }\n }\n li.active{\n background-color: var(--primary-color-level1);\n }\n }\n }\n\n .filter-search {\n display: flex;\n padding: 6px 12px;\n\n .filter-search-inner {\n width: 100%;\n font-size: 12px;\n color: #333333;\n height: 28px;\n line-height: 28px;\n padding: 0 8px;\n outline: none;\n background-color: #FAFAFA;\n border-radius: 2px;\n border: 1px solid var(--strong-border-color);\n &:hover{\n border-color: var(--primary-color)\n } \n &:focus{\n border-color: var(--primary-color)\n } \n }\n }\n\n .filter-footer {\n display: flex;\n flex-direction: row;\n padding: 8px 12px;\n justify-content: space-between;\n\n .filter-btn {\n text-align: center;\n font-size: 12px;\n width: 60px;\n height: 24px;\n line-height: 24px;\n }\n \n }\n"])), ButtonCSS);
|
|
15
16
|
|
|
16
17
|
function DefaultFilterContent(_ref) {
|
|
@@ -30,6 +31,7 @@ function DefaultFilterContent(_ref) {
|
|
|
30
31
|
innerValue = _React$useState4[0],
|
|
31
32
|
setInnerValue = _React$useState4[1];
|
|
32
33
|
|
|
34
|
+
var inputRef = useRef();
|
|
33
35
|
var handleClick = React.useCallback(function (option) {
|
|
34
36
|
setSelectedValue(option.key);
|
|
35
37
|
}, []);
|
|
@@ -47,10 +49,26 @@ function DefaultFilterContent(_ref) {
|
|
|
47
49
|
});
|
|
48
50
|
};
|
|
49
51
|
|
|
52
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
53
|
+
if (e.keyCode === KeyCode.ENTER) {
|
|
54
|
+
confirm();
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
50
58
|
useEffect(function () {
|
|
51
59
|
setSelectedValue((filterModel === null || filterModel === void 0 ? void 0 : filterModel.filterCondition) || 'contain');
|
|
52
60
|
setInnerValue((filterModel === null || filterModel === void 0 ? void 0 : _filterInstanceProperty(filterModel)) || '');
|
|
53
61
|
}, [filterModel]);
|
|
62
|
+
useEffect(function () {
|
|
63
|
+
// 兼容设置焦点后发生滚动
|
|
64
|
+
setTimeout(function () {
|
|
65
|
+
var _a;
|
|
66
|
+
|
|
67
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus({
|
|
68
|
+
preventScroll: true
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}, []);
|
|
54
72
|
return /*#__PURE__*/React.createElement(DefaultFilterContentStyle, null, /*#__PURE__*/React.createElement("div", {
|
|
55
73
|
className: 'filter-option-list'
|
|
56
74
|
}, /*#__PURE__*/React.createElement("ul", null, _mapInstanceProperty(DEFAULT_FILTER_OPTIONS).call(DEFAULT_FILTER_OPTIONS, function (option, index) {
|
|
@@ -72,7 +90,9 @@ function DefaultFilterContent(_ref) {
|
|
|
72
90
|
value: innerValue,
|
|
73
91
|
onChange: function onChange(e) {
|
|
74
92
|
setInnerValue(e.target.value);
|
|
75
|
-
}
|
|
93
|
+
},
|
|
94
|
+
onKeyDown: handleKeyDown,
|
|
95
|
+
ref: inputRef
|
|
76
96
|
})), /*#__PURE__*/React.createElement("div", {
|
|
77
97
|
className: 'filter-footer'
|
|
78
98
|
}, /*#__PURE__*/React.createElement("button", {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export default function DefaultFilterIcon(_ref) {
|
|
3
|
+
var width = _ref.width,
|
|
4
|
+
height = _ref.height;
|
|
5
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
6
|
+
width: width,
|
|
7
|
+
height: height,
|
|
8
|
+
style: {
|
|
9
|
+
verticalAlign: 'middle'
|
|
10
|
+
},
|
|
11
|
+
viewBox: "0 0 1024 1024",
|
|
12
|
+
focusable: "false",
|
|
13
|
+
"data-icon": "filter",
|
|
14
|
+
fill: "currentColor",
|
|
15
|
+
version: "1.1",
|
|
16
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
17
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
18
|
+
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"
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
@@ -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'];
|
|
@@ -10,10 +10,11 @@ import styled from 'styled-components';
|
|
|
10
10
|
import { Classes } from '../../../base/styles';
|
|
11
11
|
import FilterPanel from './FilterPanel';
|
|
12
12
|
import DefaultFilterContent from './DefaultFilterContent';
|
|
13
|
+
import DefaultFilterIcon from './DefaultFilterIcon';
|
|
13
14
|
import { calculatePopupRelative } from '../../../utils';
|
|
14
15
|
import { addResizeObserver } from '../../../base/utils';
|
|
15
16
|
import cx from 'classnames';
|
|
16
|
-
var HEADER_ICON_OFFSET_Y =
|
|
17
|
+
var HEADER_ICON_OFFSET_Y = 8 + 1; // padding-top + border
|
|
17
18
|
|
|
18
19
|
var HEADER_ICON_OFFSET_X = 16 + 1; // padding-left+ border
|
|
19
20
|
|
|
@@ -88,10 +89,6 @@ function Filter(_ref2) {
|
|
|
88
89
|
return setShowPanel(false);
|
|
89
90
|
};
|
|
90
91
|
|
|
91
|
-
var handleMouseDown = function handleMouseDown(e) {
|
|
92
|
-
e.stopPropagation(); // 阻止触发拖拽
|
|
93
|
-
};
|
|
94
|
-
|
|
95
92
|
var renderPanelContent = function renderPanelContent() {
|
|
96
93
|
if (FilterPanelContent) {
|
|
97
94
|
return /*#__PURE__*/React.createElement(FilterPanelContent, {
|
|
@@ -111,6 +108,12 @@ function Filter(_ref2) {
|
|
|
111
108
|
};
|
|
112
109
|
|
|
113
110
|
var handleIconClick = function handleIconClick(e) {
|
|
111
|
+
// 只有当icon区域点击会触发面板展开
|
|
112
|
+
// 防止 createPortal 区域的点击触发该事件
|
|
113
|
+
if (!e.currentTarget.contains(e.target)) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
114
117
|
if (stopClickEventPropagation) {
|
|
115
118
|
e.stopPropagation();
|
|
116
119
|
}
|
|
@@ -119,27 +122,20 @@ function Filter(_ref2) {
|
|
|
119
122
|
};
|
|
120
123
|
|
|
121
124
|
var iconClassName = cx((_cx = {}, _defineProperty(_cx, className, true), _defineProperty(_cx, 'filter-panel-open', showPanel), _cx));
|
|
125
|
+
var displayFilterIcon = typeof filterIcon === 'function' ? filterIcon(isFilterActive) : filterIcon;
|
|
122
126
|
return /*#__PURE__*/React.createElement(FilterIconSpanStyle, {
|
|
123
127
|
style: style,
|
|
124
128
|
className: iconClassName,
|
|
125
|
-
onMouseDown: handleMouseDown,
|
|
126
|
-
ref: iconRef
|
|
127
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
128
|
-
className: Classes.filterIcon,
|
|
129
129
|
onClick: handleIconClick
|
|
130
|
-
},
|
|
130
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
131
|
+
ref: iconRef,
|
|
132
|
+
className: Classes.filterIcon
|
|
133
|
+
}, displayFilterIcon || /*#__PURE__*/React.createElement(DefaultFilterIcon, {
|
|
131
134
|
width: size,
|
|
132
|
-
height: size
|
|
133
|
-
|
|
134
|
-
focusable: "false",
|
|
135
|
-
"data-icon": "filter",
|
|
136
|
-
fill: "currentColor",
|
|
137
|
-
"aria-hidden": "true"
|
|
138
|
-
}, /*#__PURE__*/React.createElement("path", {
|
|
139
|
-
d: "M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3\n 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5\n 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z"
|
|
140
|
-
}))), showPanel && /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(Panel, {
|
|
135
|
+
height: size
|
|
136
|
+
})), showPanel && /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(Panel, {
|
|
141
137
|
ele: iconRef.current,
|
|
142
|
-
filterIcon:
|
|
138
|
+
filterIcon: displayFilterIcon,
|
|
143
139
|
hidePanel: hidePanel,
|
|
144
140
|
renderPanelContent: renderPanelContent
|
|
145
141
|
}), document.body));
|