es-grid-template 1.9.101 → 1.9.103
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/CHANGELOG.md +34 -0
- package/es/ali-table/base-table/renderFilter.js +1 -1
- package/es/grid-component/GridRefreshButton.css +9 -9
- package/es/group-component/ColumnsGroup/ColumnsGroup.js +1 -1
- package/es/group-component/header/TableHeadCell.js +8 -6
- package/es/group-component/header/TableHeadCell2.js +7 -4
- package/es/group-component/header/renderFilter.js +1 -1
- package/es/group-component/hook/utils.d.ts +3 -3
- package/es/table-component/components/async-table-select/index.d.ts +1 -1
- package/es/table-component/components/async-table-select/index.js +37 -12
- package/es/table-component/header/TableHeadCell.js +8 -4
- package/es/table-component/header/TableHeadCell2.js +9 -8
- package/es/table-component/header/renderFilter.js +1 -1
- package/es/table-virtuoso/ColumnsGroup/ColumnsGroup.js +2 -2
- package/es/table-virtuoso/body/TableBodyRow.js +3 -1
- package/es/table-virtuoso/header/TableHeadCell.js +27 -1
- package/es/table-virtuoso/header/renderFilter.js +1 -1
- package/es/table-virtuoso/style.js +1 -1
- package/es/table-virtuoso/table/TableWrapper.js +6 -4
- package/lib/ali-table/base-table/renderFilter.js +1 -1
- package/lib/grid-component/GridRefreshButton.css +9 -9
- package/lib/group-component/ColumnsGroup/ColumnsGroup.js +1 -1
- package/lib/group-component/header/TableHeadCell.js +8 -6
- package/lib/group-component/header/TableHeadCell2.js +7 -4
- package/lib/group-component/header/renderFilter.js +1 -1
- package/lib/table-component/components/async-table-select/index.d.ts +1 -1
- package/lib/table-component/components/async-table-select/index.js +36 -11
- package/lib/table-component/header/TableHeadCell.js +8 -4
- package/lib/table-component/header/TableHeadCell2.js +9 -8
- package/lib/table-component/header/renderFilter.js +1 -1
- package/lib/table-virtuoso/ColumnsGroup/ColumnsGroup.js +2 -2
- package/lib/table-virtuoso/body/TableBodyRow.js +3 -1
- package/lib/table-virtuoso/header/TableHeadCell.js +27 -1
- package/lib/table-virtuoso/header/renderFilter.js +1 -1
- package/lib/table-virtuoso/style.js +1 -1
- package/lib/table-virtuoso/table/TableWrapper.js +6 -4
- package/package.json +1 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.9.103 / 10-11-2026
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- Fixed infinite jitter/oscillation at table bottom in `TableVirtuoso` when rows have wrapped text (`wrapMode: 'Both'`).
|
|
7
|
+
- Removed hardcoded inline `height` on non-editable rows (`editAble={false}`) in `TableWrapper` and `TableBodyRow`, allowing dynamic row height expansion with natural `ResizeObserver` measurement.
|
|
8
|
+
- Added `overscroll-behavior: none` and `overflow-anchor: none` to virtuoso scroller container to prevent scroll anchoring artifacts at bottom boundary.
|
|
9
|
+
- Provided consistent `computeItemKey` and `100%` height style to `TableVirtuoso`.
|
|
10
|
+
- Fixed filter operator reset logic in `TableHeadCell`: resetting filter now restores column's default operator instead of remaining empty.
|
|
11
|
+
- Fixed filter dropdown state synchronization on open/close in `TableHeadCell`.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- Added multi-line text wrapping styles (`white-space: normal`, `word-break: break-word`, `line-height: 1.4`) for `*-grid-cell-text-wrap` across all table components.
|
|
15
|
+
- Added `searchTextAsValue` support to `SelectTable` and `async-table-select`.
|
|
16
|
+
- Added `i18n` translation fallback support for filter search inputs and column grouping labels.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Converted rigid cell/row height styles (`height: 36px/32px`) to `minHeight` in `group-component` and `table-component` with row remeasuring on virtual index change.
|
|
20
|
+
|
|
21
|
+
## 1.9.95 / 06-11-2026
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- Added opt-in `selectionSettings.pruneSelection` (default `false`) to keep selected rows within the current filtered data view.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- Preserved existing selection on sorting, grouping, expand/collapse and virtual scrolling when rows remain in the view.
|
|
28
|
+
- Synchronized selection callbacks with current view rows, preserving original `children` data.
|
|
29
|
+
- Fixed group selection with disabled child rows, including `getCheckboxProps` rules based on tree structure.
|
|
30
|
+
- Kept existing selection during temporary loading and preserved legacy behavior when the option is disabled.
|
|
31
|
+
|
|
32
|
+
## 0.0.1 / 20-02-2025
|
|
33
|
+
|
|
34
|
+
add package
|
|
@@ -282,7 +282,7 @@ export const renderFilter = args => {
|
|
|
282
282
|
}
|
|
283
283
|
// placeholder={t ? t('Search') : `Search`}
|
|
284
284
|
,
|
|
285
|
-
placeholder: tableLocal?.search
|
|
285
|
+
placeholder: t ? t('Search') : tableLocal?.search || 'Search'
|
|
286
286
|
|
|
287
287
|
// value={selectedKeys[0]}
|
|
288
288
|
,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
.ui-rc-grid-refresh-spin {
|
|
2
|
-
transform-origin: center;
|
|
3
|
-
transform-box: fill-box;
|
|
4
|
-
animation: ui-rc-grid-refresh-spin 0.8s linear infinite;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
@keyframes ui-rc-grid-refresh-spin {
|
|
8
|
-
to { transform: rotate(360deg); }
|
|
9
|
-
}
|
|
1
|
+
.ui-rc-grid-refresh-spin {
|
|
2
|
+
transform-origin: center;
|
|
3
|
+
transform-box: fill-box;
|
|
4
|
+
animation: ui-rc-grid-refresh-spin 0.8s linear infinite;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@keyframes ui-rc-grid-refresh-spin {
|
|
8
|
+
to { transform: rotate(360deg); }
|
|
9
|
+
}
|
|
@@ -101,7 +101,7 @@ export const ColumnsGroup = props => {
|
|
|
101
101
|
}
|
|
102
102
|
}, /*#__PURE__*/React.createElement("p", {
|
|
103
103
|
className: 'fw-bold'
|
|
104
|
-
},
|
|
104
|
+
}, t ? t('Group data by column') : 'Group data by column'), /*#__PURE__*/React.createElement("div", {
|
|
105
105
|
className: 'mb-1',
|
|
106
106
|
style: {
|
|
107
107
|
marginBottom: '1rem'
|
|
@@ -99,7 +99,9 @@ const TableHeadCell = props => {
|
|
|
99
99
|
if (type) {
|
|
100
100
|
header.column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys);
|
|
101
101
|
} else {
|
|
102
|
+
const defaultOp = getDefaultOperator(originalColumn) ?? 'contains';
|
|
102
103
|
header.column.setFilterValue(undefined);
|
|
104
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
103
105
|
setSelectedKeys([]);
|
|
104
106
|
}
|
|
105
107
|
setFilterChange(true);
|
|
@@ -154,9 +156,10 @@ const TableHeadCell = props => {
|
|
|
154
156
|
column: column,
|
|
155
157
|
selectedKeys,
|
|
156
158
|
setSelectedKeys,
|
|
157
|
-
tableLocal: undefined
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
tableLocal: undefined,
|
|
160
|
+
t,
|
|
161
|
+
locale,
|
|
162
|
+
doFilter
|
|
160
163
|
})), /*#__PURE__*/React.createElement(Space, {
|
|
161
164
|
style: {
|
|
162
165
|
justifyContent: 'end',
|
|
@@ -177,9 +180,8 @@ const TableHeadCell = props => {
|
|
|
177
180
|
type: "link",
|
|
178
181
|
size: "small",
|
|
179
182
|
onClick: () => {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
const defaultOp = getDefaultOperator(originalColumn) ?? 'contains';
|
|
184
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
183
185
|
setSelectedKeys([]);
|
|
184
186
|
doFilter(false);
|
|
185
187
|
}
|
|
@@ -100,7 +100,9 @@ const TableHeadCell2 = props => {
|
|
|
100
100
|
if (type) {
|
|
101
101
|
column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys);
|
|
102
102
|
} else {
|
|
103
|
+
const defaultOp = getDefaultOperator(originalColumn) ?? 'contains';
|
|
103
104
|
column.setFilterValue(undefined);
|
|
105
|
+
column.setFilterOperator?.(defaultOp);
|
|
104
106
|
setSelectedKeys([]);
|
|
105
107
|
}
|
|
106
108
|
setFilterChange(true);
|
|
@@ -158,7 +160,9 @@ const TableHeadCell2 = props => {
|
|
|
158
160
|
doFilter,
|
|
159
161
|
format,
|
|
160
162
|
dataSourceFilter,
|
|
161
|
-
tableLocal
|
|
163
|
+
tableLocal,
|
|
164
|
+
t,
|
|
165
|
+
locale
|
|
162
166
|
})), /*#__PURE__*/React.createElement(Space, {
|
|
163
167
|
style: {
|
|
164
168
|
justifyContent: 'end',
|
|
@@ -179,9 +183,8 @@ const TableHeadCell2 = props => {
|
|
|
179
183
|
type: "link",
|
|
180
184
|
size: "small",
|
|
181
185
|
onClick: () => {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
186
|
+
const defaultOp = getDefaultOperator(originalColumn) ?? 'contains';
|
|
187
|
+
column.setFilterOperator?.(defaultOp);
|
|
185
188
|
setSelectedKeys([]);
|
|
186
189
|
doFilter(false);
|
|
187
190
|
}
|
|
@@ -272,7 +272,7 @@ export const renderFilter = args => {
|
|
|
272
272
|
}
|
|
273
273
|
// placeholder={t ? t('Search') : `Search`}
|
|
274
274
|
,
|
|
275
|
-
placeholder: tableLocal?.search
|
|
275
|
+
placeholder: t ? t('Search') : tableLocal?.search || 'Search',
|
|
276
276
|
value: selectedKeys[0],
|
|
277
277
|
onChange: e => setSelectedKeys(e.target.value ? [e.target.value] : [])
|
|
278
278
|
// onPressEnter={() => handleSearch(selectedKeys as string[], confirm)}
|
|
@@ -196,10 +196,10 @@ export declare const fixColumnsLeft: <RecordType>(columns: ColumnTable<RecordTyp
|
|
|
196
196
|
value: any;
|
|
197
197
|
rowData: RecordType;
|
|
198
198
|
}) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode);
|
|
199
|
-
onCellStyles?: Omit<CSSProperties, "
|
|
200
|
-
onCellHeaderStyles?: Omit<CSSProperties, "
|
|
199
|
+
onCellStyles?: Omit<CSSProperties, "width" | "minWidth" | "left" | "right" | "position" | "display"> | ((cellValue: any, cell: import("@tanstack/react-table").Cell<RecordType, unknown>) => Omit<CSSProperties, "width" | "minWidth" | "left" | "right" | "position" | "display">);
|
|
200
|
+
onCellHeaderStyles?: Omit<CSSProperties, "width" | "minWidth" | "left" | "right" | "position" | "display"> | ((cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "width" | "minWidth" | "left" | "right" | "position" | "display">);
|
|
201
201
|
onCell?: (rowData: RecordType, index: number) => import("react").TdHTMLAttributes<HTMLTableCellElement>;
|
|
202
|
-
onCellFooterStyles?: Omit<CSSProperties, "
|
|
202
|
+
onCellFooterStyles?: Omit<CSSProperties, "width" | "minWidth" | "left" | "right" | "position" | "display"> | ((cellValue: any, cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "width" | "minWidth" | "left" | "right" | "position" | "display">);
|
|
203
203
|
getValue?: (row: any, rowIndex: number) => any;
|
|
204
204
|
getCellProps?: (value: any, row: any, rowIndex: number) => import("./../../grid-component/type").CellProps;
|
|
205
205
|
headerCellProps?: import("./../../grid-component/type").CellProps;
|
|
@@ -9,4 +9,4 @@ export interface DebounceSelectProps<OptionType extends BaseOptionType = Default
|
|
|
9
9
|
rowData?: any;
|
|
10
10
|
searchTextAsValue?: boolean;
|
|
11
11
|
}
|
|
12
|
-
export declare function AsyncTableSelect<OptionType extends BaseOptionType>({ loadOptions, debounceTimeout, defaultOptions, columns, rowData, searchTextAsValue, ...props }: DebounceSelectProps<OptionType>): JSX.Element;
|
|
12
|
+
export declare function AsyncTableSelect<OptionType extends BaseOptionType>({ loadOptions, debounceTimeout, defaultOptions, columns, rowData, searchTextAsValue, onChange, ...props }: DebounceSelectProps<OptionType>): JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import debounce from 'lodash/debounce';
|
|
4
4
|
import { TableSelect } from "rc-master-ui";
|
|
5
5
|
export function AsyncTableSelect({
|
|
@@ -9,11 +9,42 @@ export function AsyncTableSelect({
|
|
|
9
9
|
columns,
|
|
10
10
|
rowData,
|
|
11
11
|
searchTextAsValue,
|
|
12
|
+
onChange,
|
|
12
13
|
...props
|
|
13
14
|
}) {
|
|
14
15
|
const [options, setOptions] = useState(defaultOptions ?? []);
|
|
16
|
+
const selectRef = useRef(null);
|
|
15
17
|
const searchText = useRef('');
|
|
16
|
-
const allowSearchText = searchTextAsValue && !props.mode && props.selectMode !== 'checkbox';
|
|
18
|
+
const allowSearchText = searchTextAsValue && !props.disabled && !props.mode && props.selectMode !== 'checkbox';
|
|
19
|
+
const popupClass = `es-grid-select-table-popup-${useId().replace(/:/g, '')}`;
|
|
20
|
+
const popupClassName = allowSearchText ? [props.popupClassName || props.dropdownClassName, popupClass].filter(Boolean).join(' ') : props.popupClassName;
|
|
21
|
+
const commitSearchText = useCallback(() => {
|
|
22
|
+
const value = searchText.current;
|
|
23
|
+
searchText.current = '';
|
|
24
|
+
if (allowSearchText && value) {
|
|
25
|
+
onChange?.(value, {
|
|
26
|
+
value,
|
|
27
|
+
label: value,
|
|
28
|
+
searchTextAsValue: true
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}, [allowSearchText, onChange]);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
const element = selectRef.current?.nativeElement;
|
|
34
|
+
if (!allowSearchText || !element) return;
|
|
35
|
+
|
|
36
|
+
// The grid can unmount the editor on mousedown before the browser dispatches blur.
|
|
37
|
+
const commitOnOutsideMouseDown = event => {
|
|
38
|
+
if (!searchText.current) return;
|
|
39
|
+
const path = event.composedPath();
|
|
40
|
+
const isInsidePopup = path.some(node => node instanceof Element && node.classList.contains(popupClass));
|
|
41
|
+
if (path.includes(element) || isInsidePopup) return;
|
|
42
|
+
commitSearchText();
|
|
43
|
+
};
|
|
44
|
+
const ownerDocument = element.ownerDocument;
|
|
45
|
+
ownerDocument.addEventListener('mousedown', commitOnOutsideMouseDown, true);
|
|
46
|
+
return () => ownerDocument.removeEventListener('mousedown', commitOnOutsideMouseDown, true);
|
|
47
|
+
}, [allowSearchText, commitSearchText, popupClass]);
|
|
17
48
|
const debounceFetcher = useMemo(() => {
|
|
18
49
|
const fetchOptions = value => {
|
|
19
50
|
if (value.trim().length === 0) {
|
|
@@ -34,6 +65,8 @@ export function AsyncTableSelect({
|
|
|
34
65
|
setOptions(defaultOptions ?? []);
|
|
35
66
|
}, [defaultOptions]);
|
|
36
67
|
return /*#__PURE__*/React.createElement(TableSelect, _extends({}, props, {
|
|
68
|
+
ref: selectRef,
|
|
69
|
+
popupClassName: popupClassName,
|
|
37
70
|
filterOption: loadOptions ? false : props?.filterOption,
|
|
38
71
|
onSearch: value => {
|
|
39
72
|
searchText.current = value;
|
|
@@ -41,22 +74,14 @@ export function AsyncTableSelect({
|
|
|
41
74
|
},
|
|
42
75
|
onChange: (value, option) => {
|
|
43
76
|
searchText.current = '';
|
|
44
|
-
|
|
77
|
+
onChange?.(value, option);
|
|
45
78
|
},
|
|
46
79
|
onSelect: () => {
|
|
47
80
|
searchText.current = '';
|
|
48
81
|
setOptions(defaultOptions ?? []);
|
|
49
82
|
},
|
|
50
83
|
onBlur: event => {
|
|
51
|
-
|
|
52
|
-
searchText.current = '';
|
|
53
|
-
if (allowSearchText && value) {
|
|
54
|
-
props.onChange?.(value, {
|
|
55
|
-
value,
|
|
56
|
-
label: value,
|
|
57
|
-
searchTextAsValue: true
|
|
58
|
-
});
|
|
59
|
-
}
|
|
84
|
+
commitSearchText();
|
|
60
85
|
props.onBlur?.(event);
|
|
61
86
|
},
|
|
62
87
|
onInputKeyDown: event => {
|
|
@@ -105,7 +105,9 @@ const TableHeadCell = props => {
|
|
|
105
105
|
const filterValue = isEmptyOperator ? [''] : !originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys;
|
|
106
106
|
header.column.setFilterValue(filterValue);
|
|
107
107
|
} else {
|
|
108
|
+
const defaultOp = getDefaultOperator(originalColumn) ?? 'contains';
|
|
108
109
|
header.column.setFilterValue(undefined);
|
|
110
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
109
111
|
setSelectedKeys([]);
|
|
110
112
|
}
|
|
111
113
|
setFilterChange(true);
|
|
@@ -164,7 +166,10 @@ const TableHeadCell = props => {
|
|
|
164
166
|
column: column,
|
|
165
167
|
selectedKeys,
|
|
166
168
|
setSelectedKeys,
|
|
167
|
-
tableLocal: undefined
|
|
169
|
+
tableLocal: undefined,
|
|
170
|
+
t,
|
|
171
|
+
locale,
|
|
172
|
+
doFilter
|
|
168
173
|
})), /*#__PURE__*/React.createElement(Space, {
|
|
169
174
|
style: {
|
|
170
175
|
justifyContent: 'end',
|
|
@@ -185,9 +190,8 @@ const TableHeadCell = props => {
|
|
|
185
190
|
type: "link",
|
|
186
191
|
size: "small",
|
|
187
192
|
onClick: () => {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
193
|
+
const defaultOp = getDefaultOperator(originalColumn) ?? 'contains';
|
|
194
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
191
195
|
setSelectedKeys([]);
|
|
192
196
|
doFilter(false);
|
|
193
197
|
}
|
|
@@ -135,11 +135,11 @@ const TableHeadCell2 = props => {
|
|
|
135
135
|
|
|
136
136
|
// column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? (selectedKeys.length === 0 ? [''] : selectedKeys) : selectedKeys)
|
|
137
137
|
} else {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
const filterCol = fieldOriginal ?? column;
|
|
139
|
+
const defaultFilterOption = defaultFilter?.find(it => it.field === originalColumn.field);
|
|
140
|
+
const defaultOp = defaultFilterOption?.operator ?? getDefaultOperator(originalColumn) ?? 'contains';
|
|
141
|
+
filterCol.setFilterValue(undefined);
|
|
142
|
+
filterCol.setFilterOperator?.(defaultOp);
|
|
143
143
|
setSelectedKeys([]);
|
|
144
144
|
}
|
|
145
145
|
setFilterChange(true);
|
|
@@ -231,9 +231,10 @@ const TableHeadCell2 = props => {
|
|
|
231
231
|
type: "link",
|
|
232
232
|
size: "small",
|
|
233
233
|
onClick: () => {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
const filterCol = fieldOriginal ?? column;
|
|
235
|
+
const defaultFilterOption = defaultFilter?.find(it => it.field === originalColumn.field);
|
|
236
|
+
const defaultOp = defaultFilterOption?.operator ?? getDefaultOperator(originalColumn) ?? 'contains';
|
|
237
|
+
filterCol.setFilterOperator?.(defaultOp);
|
|
237
238
|
setSelectedKeys([]);
|
|
238
239
|
doFilter(false);
|
|
239
240
|
}
|
|
@@ -314,7 +314,7 @@ export const renderFilter = args => {
|
|
|
314
314
|
}
|
|
315
315
|
// placeholder={t ? t('Search') : `Search`}
|
|
316
316
|
,
|
|
317
|
-
placeholder: tableLocal?.search
|
|
317
|
+
placeholder: t ? t('Search') : tableLocal?.search || 'Search',
|
|
318
318
|
value: selectedKeys[0],
|
|
319
319
|
onChange: e => setSelectedKeys(e.target.value ? [e.target.value] : [])
|
|
320
320
|
// onPressEnter={() => handleSearch(selectedKeys as string[], confirm)}
|
|
@@ -108,7 +108,7 @@ export const ColumnsGroup = props => {
|
|
|
108
108
|
}
|
|
109
109
|
}, /*#__PURE__*/React.createElement("p", {
|
|
110
110
|
className: 'fw-bold'
|
|
111
|
-
},
|
|
111
|
+
}, t ? t('Group data by column') : 'Group data by column'), /*#__PURE__*/React.createElement("div", {
|
|
112
112
|
className: 'mb-1',
|
|
113
113
|
style: {
|
|
114
114
|
marginBottom: '1rem'
|
|
@@ -225,6 +225,6 @@ export const ColumnsGroup = props => {
|
|
|
225
225
|
cursor: 'pointer'
|
|
226
226
|
},
|
|
227
227
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
228
|
-
"data-tooltip-content": t ? t('Group data') : '
|
|
228
|
+
"data-tooltip-content": t ? t('Group data') : 'Group data'
|
|
229
229
|
})));
|
|
230
230
|
};
|
|
@@ -62,7 +62,9 @@ const TableBodyRow = ({
|
|
|
62
62
|
onMouseLeave: handleMouseLeave,
|
|
63
63
|
style: {
|
|
64
64
|
...rowStyles,
|
|
65
|
-
|
|
65
|
+
...(rowheight !== undefined && rowheight !== null ? {
|
|
66
|
+
height: rowheight
|
|
67
|
+
} : {})
|
|
66
68
|
}
|
|
67
69
|
}, getRowFocusHandlers(row.original, rowFocus), {
|
|
68
70
|
onDoubleClick: e => {
|
|
@@ -101,7 +101,13 @@ const TableHeadCell = props => {
|
|
|
101
101
|
header.column.setFilterValue(nextFilterValue);
|
|
102
102
|
header.column.setFilterOperator?.(currentFilter.ope);
|
|
103
103
|
} else {
|
|
104
|
+
const defaultOp = getDefaultOperator(column?.meta ?? {}) ?? 'contains';
|
|
104
105
|
header.column.setFilterValue(undefined);
|
|
106
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
107
|
+
setCurrentFilter(prev => ({
|
|
108
|
+
...prev,
|
|
109
|
+
ope: defaultOp
|
|
110
|
+
}));
|
|
105
111
|
setSelectedKeys([]);
|
|
106
112
|
}
|
|
107
113
|
setFilterChange(true);
|
|
@@ -120,6 +126,17 @@ const TableHeadCell = props => {
|
|
|
120
126
|
// onOpenChange: onVisibleChange,
|
|
121
127
|
|
|
122
128
|
destroyPopupOnHide: true,
|
|
129
|
+
onOpenChange: open => {
|
|
130
|
+
if (open) {
|
|
131
|
+
const currentOp = header.column.getFilterOperator() ?? getDefaultOperator(column?.meta ?? {});
|
|
132
|
+
const currentVal = header.column.getFilterValue() ?? [];
|
|
133
|
+
setCurrentFilter(prev => ({
|
|
134
|
+
...prev,
|
|
135
|
+
ope: currentOp
|
|
136
|
+
}));
|
|
137
|
+
setSelectedKeys(['empty', 'notempty'].includes(currentOp) ? [] : currentVal);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
123
140
|
dropdownRender: () => {
|
|
124
141
|
const type = getTypeFilter(originalColumn);
|
|
125
142
|
const hideFilterInput = ['empty', 'notempty'].includes(currentFilter.ope);
|
|
@@ -164,7 +181,10 @@ const TableHeadCell = props => {
|
|
|
164
181
|
}, renderFilter({
|
|
165
182
|
column: column,
|
|
166
183
|
selectedKeys,
|
|
167
|
-
setSelectedKeys
|
|
184
|
+
setSelectedKeys,
|
|
185
|
+
t,
|
|
186
|
+
locale,
|
|
187
|
+
doFilter
|
|
168
188
|
})), /*#__PURE__*/React.createElement(Space, {
|
|
169
189
|
style: {
|
|
170
190
|
justifyContent: 'end',
|
|
@@ -183,6 +203,12 @@ const TableHeadCell = props => {
|
|
|
183
203
|
type: "link",
|
|
184
204
|
size: "small",
|
|
185
205
|
onClick: () => {
|
|
206
|
+
const defaultOp = getDefaultOperator(column?.meta ?? {}) ?? 'contains';
|
|
207
|
+
setCurrentFilter(prev => ({
|
|
208
|
+
...prev,
|
|
209
|
+
ope: defaultOp
|
|
210
|
+
}));
|
|
211
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
186
212
|
setSelectedKeys([]);
|
|
187
213
|
doFilter(false);
|
|
188
214
|
}
|
|
@@ -273,7 +273,7 @@ export const renderFilter = args => {
|
|
|
273
273
|
classNames: {
|
|
274
274
|
input: 'filter-input'
|
|
275
275
|
},
|
|
276
|
-
placeholder: t ? t('Search') :
|
|
276
|
+
placeholder: t ? t('Search') : 'Search',
|
|
277
277
|
value: selectedKeys[0],
|
|
278
278
|
onChange: e => setSelectedKeys(e.target.value ? [e.target.value] : [])
|
|
279
279
|
// onPressEnter={() => handleSearch(selectedKeys as string[], confirm)}
|
|
@@ -11,4 +11,4 @@ const colorDark = '#e6e4f3e6';
|
|
|
11
11
|
export const GridStyle = styled.div.withConfig({
|
|
12
12
|
displayName: "GridStyle",
|
|
13
13
|
componentId: "es-grid-template__sc-rs980s-0"
|
|
14
|
-
})(["&.", "-grid{color:", ";font-size:12px;background-color:", ";table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", "
|
|
14
|
+
})(["&.", "-grid{color:", ";font-size:12px;background-color:", ";table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", ";[data-virtuoso-scroller='true']{overscroll-behavior:none;overflow-anchor:none;}.", "-grid-thead{&:has(.resizer.isResizing){.", "-grid-cell{touch-action:none;user-select:none;}}.", "-grid-cell{background-color:#ffffff;&:has(.resizer.isResizing){touch-action:none;user-select:none;}.resizer{cursor:col-resize;height:100%;position:absolute;right:0;top:0;touch-action:none;user-select:none;width:5px;}}}tbody{.", "-grid-row{font-weight:500;&.", "-grid-row-parent{.", "-grid-cell{font-weight:700;background-color:#f5f5f5;}}}}.", "-grid-tfoot{z-index:3 !important;.ui-rc-grid-footer-row{.ui-rc-grid-cell{border-top:1px solid ", ";border-bottom:1px solid ", ";font-weight:500;}}}.", "-grid-cell{padding:5px 8px;&.", "-grid-cell-fix-left-last{.", "-grid-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}&::after{position:absolute;top:0;right:0;bottom:-1px;width:30px;transform:translateX(100%);transition:box-shadow 0.3s;content:'';pointer-events:none;box-shadow:inset 10px 0 8px -8px rgba(5,5,5,0.09);}}&.", "-grid-cell-fix-right-first{.", "-grid-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}&::after{position:absolute;top:0;bottom:-1px;left:0;width:30px;transform:translateX(-100%);transition:box-shadow 0.3s;content:'';pointer-events:none;box-shadow:inset -10px 0 8px -8px rgba(5,5,5,0.09);}&::before{content:'';position:absolute;inset-block:0;inset-inline-start:-1px;border-inline-start:1px solid #e0e0e0;}}&.", "-grid-cell-ellipsis{.group-content{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}.class-content:has(*){background:lightblue;}.class-content:not(:has(*)){background:lightgreen;}&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-righ{text-align:right;justify-content:flex-end;}}.", "-grid-cell:not(:has(*)){&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-right{text-align:right;justify-content:flex-end;}&.", "-grid-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}}&.", "-grid-light{.", "-grid-container{.", "-grid-thead{z-index:3 !important;background-color:", ";font-weight:600;.", "-grid-cell{font-weight:inherit;color:", ";background-color:#ffffff;border-inline-end:1px solid ", ";border-bottom:1px solid ", ";&.", "-grid-cell-text-wrap{white-space:normal;word-break:break-word;line-height:1.4;}&.ui-rc-grid-cell-ellipsis{.ui-rc-table-column-title,.", "-grid-cell-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}&.ui-rc-grid-cell-wrap{.ui-rc-table-column-title,.", "-grid-cell-text-wrap{white-space:normal;word-break:break-word;overflow:hidden;}}&:hover{.ui-rc-header-trigger{.ui-rc-table-column-sorter-cancel{opacity:1;}}}.", "-grid-filter-column{display:flex;justify-content:space-between;width:100%;align-items:center;position:relative;}.ui-rc-header-trigger{padding-left:6px;display:flex;align-items:center;.ui-rc-table-column-sorter-cancel{opacity:0;}}.resizer{cursor:col-resize;height:100%;position:absolute;right:0;top:0;touch-action:none;user-select:none;width:5px;}.resizer.isResizing{opacity:1;}}}.", "-grid-tbody{.", "-grid-row{background-color:", ";color:", ";}}tbody{background-color:", ";color:", ";.", "-grid-row{&.ui-rc-grid-row-selected{.", "-grid-cell{background-color:", ";}}}.", "-grid-cell{outline:none;background-color:#ffffff;border-inline-end:1px solid ", ";border-bottom:1px solid ", ";&.", "-grid-cell-text-wrap{white-space:normal;word-break:break-word;line-height:1.4;}&.ui-rc-grid-cell-selected{background-color:", " !important;}&.disable{background-color:#f0f0f0;}&.cell-editable{user-select:none;&.cell-border-top{&::after{content:'';position:absolute;top:0px;left:0;height:1px;width:100%;border-top:1px solid ", ";pointer-events:none;z-index:1;}}&.cell-border-bottom{border-bottom:1px solid ", ";}&.cell-border-left{&::before{content:'';position:absolute;top:0;left:0;height:102%;width:1px;border-left:1px solid ", ";pointer-events:none;z-index:1;}}&.cell-border-right{border-inline-end:1px solid ", ";}&.cell-paste-border-top{&::after{content:'';position:absolute;top:0px;left:0;height:1px;width:100%;border-top:1px dashed #949494;pointer-events:none;z-index:1;}&.ui-rc-grid-cell-fix-left-last{&::after{left:-100%;}}&.ui-rc-grid-cell-fix-right-first{&::after{left:100%;}}}&.cell-paste-border-bottom{border-bottom:1px dashed #949494;}&.cell-paste-border-left{&::before{content:'';position:absolute;top:0;left:0;height:102%;width:1px;border-left:1px dashed #949494;pointer-events:none;z-index:1;}}&.cell-paste-border-right{border-inline-end:1px dashed #949494;}.dragging-point{width:6px;height:6px;position:absolute;cursor:crosshair;right:0px;bottom:0px;&.hidden{display:none;}.dot-point{position:absolute;width:6px;height:6px;border-radius:0px;background-color:", ";bottom:0;right:0;}}}&.cell-editing{padding:0;&:focus-visible{outline:none;}.ant-form-item,.ant-row.ant-form-item-row,.ant-col.ant-form-item-control,.ant-form-item-control-input,.ant-form-item-control-input-content,.ant-input{height:100% !important;&:focus-visible{outline:none;}}textarea.ant-input{line-height:1.8;height:36px !important;min-height:36px !important;}input.be-cell-editing,.ant-picker,.ui-rc-select-selector,.ui-rc-table-select-selector{padding-inline:7px;}.", "-checkbox-wrapper{.", "-checkbox{background-color:red;}.", "-checkbox-input{&:focus-visible{outline:none;}}}.ant-input,.ant-picker{border-radius:0;}.ant-color-picker-trigger{height:100%;border-radius:0;.ant-color-picker-color-block{height:100%;width:100%;}}.", "-table-select-single .", "-table-select-selector,.", "-select-single .", "-select-selector,.ui-rc-table-select-selector{border-radius:0 !important;}.", "-table-select-single:not(.", "-table-select-customize-input){.", "-table-select-selector{.", "-table-select-selection-search-input{height:auto;}}}}}}.", "-grid-tfoot{.", "-grid-footer-row{border-bottom-width:1px;border-bottom-color:", ";border-bottom-style:solid;border-top-width:1px;border-top-color:", ";border-top-style:solid;background-color:#fafafa;}.", "-grid-cell{background-color:inherit;border-inline-end:1px solid ", ";}}}}&.", "-grid-dark{background-color:", ";color:", ";.", "-grid-container{border-color:", ";&::after{border-right-color:", ";}}}}"], props => props.$prefix, color, BgColor, props => props.$prefix, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : BgColor}`, props => props.$prefix, props => `${props.$theme.color ? props.$theme.color : color}`, tableBorderColor, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : BgColor}`, props => `${props.$theme.color ? props.$theme.color : color}`, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : BgColor}`, props => `${props.$theme.color ? props.$theme.color : color}`, props => props.$prefix, props => props.$prefix, rowSelectedBg, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, cellSelectedBg, borderSelectedColor, borderSelectedColor, borderSelectedColor, borderSelectedColor, borderSelectedColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, tableBorderColor, props => props.$prefix, BgColorDark, colorDark, props => props.$prefix, tableBorderColorDark, tableBorderColorDark);
|
|
@@ -133,9 +133,12 @@ const TableWrapper = props => {
|
|
|
133
133
|
}, /*#__PURE__*/React.createElement(TableVirtuoso, _extends({
|
|
134
134
|
ref: virtuosoRef,
|
|
135
135
|
data: table.getRowModel().rows,
|
|
136
|
-
totalCount: rows.length
|
|
136
|
+
totalCount: rows.length,
|
|
137
|
+
computeItemKey: (_index, row) => row?.id ?? _index,
|
|
138
|
+
style: {
|
|
139
|
+
height: '100%'
|
|
140
|
+
}
|
|
137
141
|
}, onVisibleRowsChange ? {
|
|
138
|
-
computeItemKey: (_index, row) => row.id,
|
|
139
142
|
rangeChanged: ({
|
|
140
143
|
startIndex,
|
|
141
144
|
endIndex
|
|
@@ -189,7 +192,6 @@ const TableWrapper = props => {
|
|
|
189
192
|
...rest
|
|
190
193
|
} = props;
|
|
191
194
|
const index = props["data-index"];
|
|
192
|
-
const rowheight = props["data-known-size"];
|
|
193
195
|
const row = rows[index];
|
|
194
196
|
const isEditing = row.id === editingKey;
|
|
195
197
|
const isRowEditable = rowEditable ? rowEditable(row.original) : true;
|
|
@@ -199,7 +201,7 @@ const TableWrapper = props => {
|
|
|
199
201
|
scrollToRow: scrollToRow,
|
|
200
202
|
table: table,
|
|
201
203
|
commandClick: commandClick,
|
|
202
|
-
rowheight: editAble ? 37 :
|
|
204
|
+
rowheight: editAble ? 37 : undefined,
|
|
203
205
|
isEditing: isEditing,
|
|
204
206
|
isRowEditable: isRowEditable,
|
|
205
207
|
editAble: editAble,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
.ui-rc-grid-refresh-spin {
|
|
2
|
-
transform-origin: center;
|
|
3
|
-
transform-box: fill-box;
|
|
4
|
-
animation: ui-rc-grid-refresh-spin 0.8s linear infinite;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
@keyframes ui-rc-grid-refresh-spin {
|
|
8
|
-
to { transform: rotate(360deg); }
|
|
9
|
-
}
|
|
1
|
+
.ui-rc-grid-refresh-spin {
|
|
2
|
+
transform-origin: center;
|
|
3
|
+
transform-box: fill-box;
|
|
4
|
+
animation: ui-rc-grid-refresh-spin 0.8s linear infinite;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@keyframes ui-rc-grid-refresh-spin {
|
|
8
|
+
to { transform: rotate(360deg); }
|
|
9
|
+
}
|
|
@@ -110,7 +110,7 @@ const ColumnsGroup = props => {
|
|
|
110
110
|
}
|
|
111
111
|
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
112
112
|
className: 'fw-bold'
|
|
113
|
-
},
|
|
113
|
+
}, t ? t('Group data by column') : 'Group data by column'), /*#__PURE__*/_react.default.createElement("div", {
|
|
114
114
|
className: 'mb-1',
|
|
115
115
|
style: {
|
|
116
116
|
marginBottom: '1rem'
|
|
@@ -108,7 +108,9 @@ const TableHeadCell = props => {
|
|
|
108
108
|
if (type) {
|
|
109
109
|
header.column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys);
|
|
110
110
|
} else {
|
|
111
|
+
const defaultOp = (0, _utils.getDefaultOperator)(originalColumn) ?? 'contains';
|
|
111
112
|
header.column.setFilterValue(undefined);
|
|
113
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
112
114
|
setSelectedKeys([]);
|
|
113
115
|
}
|
|
114
116
|
setFilterChange(true);
|
|
@@ -163,9 +165,10 @@ const TableHeadCell = props => {
|
|
|
163
165
|
column: column,
|
|
164
166
|
selectedKeys,
|
|
165
167
|
setSelectedKeys,
|
|
166
|
-
tableLocal: undefined
|
|
167
|
-
|
|
168
|
-
|
|
168
|
+
tableLocal: undefined,
|
|
169
|
+
t,
|
|
170
|
+
locale,
|
|
171
|
+
doFilter
|
|
169
172
|
})), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Space, {
|
|
170
173
|
style: {
|
|
171
174
|
justifyContent: 'end',
|
|
@@ -186,9 +189,8 @@ const TableHeadCell = props => {
|
|
|
186
189
|
type: "link",
|
|
187
190
|
size: "small",
|
|
188
191
|
onClick: () => {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
+
const defaultOp = (0, _utils.getDefaultOperator)(originalColumn) ?? 'contains';
|
|
193
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
192
194
|
setSelectedKeys([]);
|
|
193
195
|
doFilter(false);
|
|
194
196
|
}
|
|
@@ -109,7 +109,9 @@ const TableHeadCell2 = props => {
|
|
|
109
109
|
if (type) {
|
|
110
110
|
column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys);
|
|
111
111
|
} else {
|
|
112
|
+
const defaultOp = (0, _utils.getDefaultOperator)(originalColumn) ?? 'contains';
|
|
112
113
|
column.setFilterValue(undefined);
|
|
114
|
+
column.setFilterOperator?.(defaultOp);
|
|
113
115
|
setSelectedKeys([]);
|
|
114
116
|
}
|
|
115
117
|
setFilterChange(true);
|
|
@@ -167,7 +169,9 @@ const TableHeadCell2 = props => {
|
|
|
167
169
|
doFilter,
|
|
168
170
|
format,
|
|
169
171
|
dataSourceFilter,
|
|
170
|
-
tableLocal
|
|
172
|
+
tableLocal,
|
|
173
|
+
t,
|
|
174
|
+
locale
|
|
171
175
|
})), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Space, {
|
|
172
176
|
style: {
|
|
173
177
|
justifyContent: 'end',
|
|
@@ -188,9 +192,8 @@ const TableHeadCell2 = props => {
|
|
|
188
192
|
type: "link",
|
|
189
193
|
size: "small",
|
|
190
194
|
onClick: () => {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
195
|
+
const defaultOp = (0, _utils.getDefaultOperator)(originalColumn) ?? 'contains';
|
|
196
|
+
column.setFilterOperator?.(defaultOp);
|
|
194
197
|
setSelectedKeys([]);
|
|
195
198
|
doFilter(false);
|
|
196
199
|
}
|
|
@@ -281,7 +281,7 @@ const renderFilter = args => {
|
|
|
281
281
|
}
|
|
282
282
|
// placeholder={t ? t('Search') : `Search`}
|
|
283
283
|
,
|
|
284
|
-
placeholder: tableLocal?.search
|
|
284
|
+
placeholder: t ? t('Search') : tableLocal?.search || 'Search',
|
|
285
285
|
value: selectedKeys[0],
|
|
286
286
|
onChange: e => setSelectedKeys(e.target.value ? [e.target.value] : [])
|
|
287
287
|
// onPressEnter={() => handleSearch(selectedKeys as string[], confirm)}
|
|
@@ -9,4 +9,4 @@ export interface DebounceSelectProps<OptionType extends BaseOptionType = Default
|
|
|
9
9
|
rowData?: any;
|
|
10
10
|
searchTextAsValue?: boolean;
|
|
11
11
|
}
|
|
12
|
-
export declare function AsyncTableSelect<OptionType extends BaseOptionType>({ loadOptions, debounceTimeout, defaultOptions, columns, rowData, searchTextAsValue, ...props }: DebounceSelectProps<OptionType>): JSX.Element;
|
|
12
|
+
export declare function AsyncTableSelect<OptionType extends BaseOptionType>({ loadOptions, debounceTimeout, defaultOptions, columns, rowData, searchTextAsValue, onChange, ...props }: DebounceSelectProps<OptionType>): JSX.Element;
|
|
@@ -18,11 +18,42 @@ function AsyncTableSelect({
|
|
|
18
18
|
columns,
|
|
19
19
|
rowData,
|
|
20
20
|
searchTextAsValue,
|
|
21
|
+
onChange,
|
|
21
22
|
...props
|
|
22
23
|
}) {
|
|
23
24
|
const [options, setOptions] = (0, _react.useState)(defaultOptions ?? []);
|
|
25
|
+
const selectRef = (0, _react.useRef)(null);
|
|
24
26
|
const searchText = (0, _react.useRef)('');
|
|
25
|
-
const allowSearchText = searchTextAsValue && !props.mode && props.selectMode !== 'checkbox';
|
|
27
|
+
const allowSearchText = searchTextAsValue && !props.disabled && !props.mode && props.selectMode !== 'checkbox';
|
|
28
|
+
const popupClass = `es-grid-select-table-popup-${(0, _react.useId)().replace(/:/g, '')}`;
|
|
29
|
+
const popupClassName = allowSearchText ? [props.popupClassName || props.dropdownClassName, popupClass].filter(Boolean).join(' ') : props.popupClassName;
|
|
30
|
+
const commitSearchText = (0, _react.useCallback)(() => {
|
|
31
|
+
const value = searchText.current;
|
|
32
|
+
searchText.current = '';
|
|
33
|
+
if (allowSearchText && value) {
|
|
34
|
+
onChange?.(value, {
|
|
35
|
+
value,
|
|
36
|
+
label: value,
|
|
37
|
+
searchTextAsValue: true
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}, [allowSearchText, onChange]);
|
|
41
|
+
(0, _react.useEffect)(() => {
|
|
42
|
+
const element = selectRef.current?.nativeElement;
|
|
43
|
+
if (!allowSearchText || !element) return;
|
|
44
|
+
|
|
45
|
+
// The grid can unmount the editor on mousedown before the browser dispatches blur.
|
|
46
|
+
const commitOnOutsideMouseDown = event => {
|
|
47
|
+
if (!searchText.current) return;
|
|
48
|
+
const path = event.composedPath();
|
|
49
|
+
const isInsidePopup = path.some(node => node instanceof Element && node.classList.contains(popupClass));
|
|
50
|
+
if (path.includes(element) || isInsidePopup) return;
|
|
51
|
+
commitSearchText();
|
|
52
|
+
};
|
|
53
|
+
const ownerDocument = element.ownerDocument;
|
|
54
|
+
ownerDocument.addEventListener('mousedown', commitOnOutsideMouseDown, true);
|
|
55
|
+
return () => ownerDocument.removeEventListener('mousedown', commitOnOutsideMouseDown, true);
|
|
56
|
+
}, [allowSearchText, commitSearchText, popupClass]);
|
|
26
57
|
const debounceFetcher = (0, _react.useMemo)(() => {
|
|
27
58
|
const fetchOptions = value => {
|
|
28
59
|
if (value.trim().length === 0) {
|
|
@@ -43,6 +74,8 @@ function AsyncTableSelect({
|
|
|
43
74
|
setOptions(defaultOptions ?? []);
|
|
44
75
|
}, [defaultOptions]);
|
|
45
76
|
return /*#__PURE__*/_react.default.createElement(_rcMasterUi.TableSelect, (0, _extends2.default)({}, props, {
|
|
77
|
+
ref: selectRef,
|
|
78
|
+
popupClassName: popupClassName,
|
|
46
79
|
filterOption: loadOptions ? false : props?.filterOption,
|
|
47
80
|
onSearch: value => {
|
|
48
81
|
searchText.current = value;
|
|
@@ -50,22 +83,14 @@ function AsyncTableSelect({
|
|
|
50
83
|
},
|
|
51
84
|
onChange: (value, option) => {
|
|
52
85
|
searchText.current = '';
|
|
53
|
-
|
|
86
|
+
onChange?.(value, option);
|
|
54
87
|
},
|
|
55
88
|
onSelect: () => {
|
|
56
89
|
searchText.current = '';
|
|
57
90
|
setOptions(defaultOptions ?? []);
|
|
58
91
|
},
|
|
59
92
|
onBlur: event => {
|
|
60
|
-
|
|
61
|
-
searchText.current = '';
|
|
62
|
-
if (allowSearchText && value) {
|
|
63
|
-
props.onChange?.(value, {
|
|
64
|
-
value,
|
|
65
|
-
label: value,
|
|
66
|
-
searchTextAsValue: true
|
|
67
|
-
});
|
|
68
|
-
}
|
|
93
|
+
commitSearchText();
|
|
69
94
|
props.onBlur?.(event);
|
|
70
95
|
},
|
|
71
96
|
onInputKeyDown: event => {
|
|
@@ -113,7 +113,9 @@ const TableHeadCell = props => {
|
|
|
113
113
|
const filterValue = isEmptyOperator ? [''] : !originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys;
|
|
114
114
|
header.column.setFilterValue(filterValue);
|
|
115
115
|
} else {
|
|
116
|
+
const defaultOp = (0, _utils.getDefaultOperator)(originalColumn) ?? 'contains';
|
|
116
117
|
header.column.setFilterValue(undefined);
|
|
118
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
117
119
|
setSelectedKeys([]);
|
|
118
120
|
}
|
|
119
121
|
setFilterChange(true);
|
|
@@ -172,7 +174,10 @@ const TableHeadCell = props => {
|
|
|
172
174
|
column: column,
|
|
173
175
|
selectedKeys,
|
|
174
176
|
setSelectedKeys,
|
|
175
|
-
tableLocal: undefined
|
|
177
|
+
tableLocal: undefined,
|
|
178
|
+
t,
|
|
179
|
+
locale,
|
|
180
|
+
doFilter
|
|
176
181
|
})), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Space, {
|
|
177
182
|
style: {
|
|
178
183
|
justifyContent: 'end',
|
|
@@ -193,9 +198,8 @@ const TableHeadCell = props => {
|
|
|
193
198
|
type: "link",
|
|
194
199
|
size: "small",
|
|
195
200
|
onClick: () => {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
201
|
+
const defaultOp = (0, _utils.getDefaultOperator)(originalColumn) ?? 'contains';
|
|
202
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
199
203
|
setSelectedKeys([]);
|
|
200
204
|
doFilter(false);
|
|
201
205
|
}
|
|
@@ -143,11 +143,11 @@ const TableHeadCell2 = props => {
|
|
|
143
143
|
|
|
144
144
|
// column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? (selectedKeys.length === 0 ? [''] : selectedKeys) : selectedKeys)
|
|
145
145
|
} else {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
146
|
+
const filterCol = fieldOriginal ?? column;
|
|
147
|
+
const defaultFilterOption = defaultFilter?.find(it => it.field === originalColumn.field);
|
|
148
|
+
const defaultOp = defaultFilterOption?.operator ?? (0, _utils.getDefaultOperator)(originalColumn) ?? 'contains';
|
|
149
|
+
filterCol.setFilterValue(undefined);
|
|
150
|
+
filterCol.setFilterOperator?.(defaultOp);
|
|
151
151
|
setSelectedKeys([]);
|
|
152
152
|
}
|
|
153
153
|
setFilterChange(true);
|
|
@@ -239,9 +239,10 @@ const TableHeadCell2 = props => {
|
|
|
239
239
|
type: "link",
|
|
240
240
|
size: "small",
|
|
241
241
|
onClick: () => {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
242
|
+
const filterCol = fieldOriginal ?? column;
|
|
243
|
+
const defaultFilterOption = defaultFilter?.find(it => it.field === originalColumn.field);
|
|
244
|
+
const defaultOp = defaultFilterOption?.operator ?? (0, _utils.getDefaultOperator)(originalColumn) ?? 'contains';
|
|
245
|
+
filterCol.setFilterOperator?.(defaultOp);
|
|
245
246
|
setSelectedKeys([]);
|
|
246
247
|
doFilter(false);
|
|
247
248
|
}
|
|
@@ -323,7 +323,7 @@ const renderFilter = args => {
|
|
|
323
323
|
}
|
|
324
324
|
// placeholder={t ? t('Search') : `Search`}
|
|
325
325
|
,
|
|
326
|
-
placeholder: tableLocal?.search
|
|
326
|
+
placeholder: t ? t('Search') : tableLocal?.search || 'Search',
|
|
327
327
|
value: selectedKeys[0],
|
|
328
328
|
onChange: e => setSelectedKeys(e.target.value ? [e.target.value] : [])
|
|
329
329
|
// onPressEnter={() => handleSearch(selectedKeys as string[], confirm)}
|
|
@@ -117,7 +117,7 @@ const ColumnsGroup = props => {
|
|
|
117
117
|
}
|
|
118
118
|
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
119
119
|
className: 'fw-bold'
|
|
120
|
-
},
|
|
120
|
+
}, t ? t('Group data by column') : 'Group data by column'), /*#__PURE__*/_react.default.createElement("div", {
|
|
121
121
|
className: 'mb-1',
|
|
122
122
|
style: {
|
|
123
123
|
marginBottom: '1rem'
|
|
@@ -234,7 +234,7 @@ const ColumnsGroup = props => {
|
|
|
234
234
|
cursor: 'pointer'
|
|
235
235
|
},
|
|
236
236
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
237
|
-
"data-tooltip-content": t ? t('Group data') : '
|
|
237
|
+
"data-tooltip-content": t ? t('Group data') : 'Group data'
|
|
238
238
|
})));
|
|
239
239
|
};
|
|
240
240
|
exports.ColumnsGroup = ColumnsGroup;
|
|
@@ -69,7 +69,9 @@ const TableBodyRow = ({
|
|
|
69
69
|
onMouseLeave: handleMouseLeave,
|
|
70
70
|
style: {
|
|
71
71
|
...rowStyles,
|
|
72
|
-
|
|
72
|
+
...(rowheight !== undefined && rowheight !== null ? {
|
|
73
|
+
height: rowheight
|
|
74
|
+
} : {})
|
|
73
75
|
}
|
|
74
76
|
}, (0, _rowFocus.getRowFocusHandlers)(row.original, rowFocus), {
|
|
75
77
|
onDoubleClick: e => {
|
|
@@ -109,7 +109,13 @@ const TableHeadCell = props => {
|
|
|
109
109
|
header.column.setFilterValue(nextFilterValue);
|
|
110
110
|
header.column.setFilterOperator?.(currentFilter.ope);
|
|
111
111
|
} else {
|
|
112
|
+
const defaultOp = (0, _utils.getDefaultOperator)(column?.meta ?? {}) ?? 'contains';
|
|
112
113
|
header.column.setFilterValue(undefined);
|
|
114
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
115
|
+
setCurrentFilter(prev => ({
|
|
116
|
+
...prev,
|
|
117
|
+
ope: defaultOp
|
|
118
|
+
}));
|
|
113
119
|
setSelectedKeys([]);
|
|
114
120
|
}
|
|
115
121
|
setFilterChange(true);
|
|
@@ -128,6 +134,17 @@ const TableHeadCell = props => {
|
|
|
128
134
|
// onOpenChange: onVisibleChange,
|
|
129
135
|
|
|
130
136
|
destroyPopupOnHide: true,
|
|
137
|
+
onOpenChange: open => {
|
|
138
|
+
if (open) {
|
|
139
|
+
const currentOp = header.column.getFilterOperator() ?? (0, _utils.getDefaultOperator)(column?.meta ?? {});
|
|
140
|
+
const currentVal = header.column.getFilterValue() ?? [];
|
|
141
|
+
setCurrentFilter(prev => ({
|
|
142
|
+
...prev,
|
|
143
|
+
ope: currentOp
|
|
144
|
+
}));
|
|
145
|
+
setSelectedKeys(['empty', 'notempty'].includes(currentOp) ? [] : currentVal);
|
|
146
|
+
}
|
|
147
|
+
},
|
|
131
148
|
dropdownRender: () => {
|
|
132
149
|
const type = (0, _utils.getTypeFilter)(originalColumn);
|
|
133
150
|
const hideFilterInput = ['empty', 'notempty'].includes(currentFilter.ope);
|
|
@@ -172,7 +189,10 @@ const TableHeadCell = props => {
|
|
|
172
189
|
}, (0, _renderFilter.renderFilter)({
|
|
173
190
|
column: column,
|
|
174
191
|
selectedKeys,
|
|
175
|
-
setSelectedKeys
|
|
192
|
+
setSelectedKeys,
|
|
193
|
+
t,
|
|
194
|
+
locale,
|
|
195
|
+
doFilter
|
|
176
196
|
})), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Space, {
|
|
177
197
|
style: {
|
|
178
198
|
justifyContent: 'end',
|
|
@@ -191,6 +211,12 @@ const TableHeadCell = props => {
|
|
|
191
211
|
type: "link",
|
|
192
212
|
size: "small",
|
|
193
213
|
onClick: () => {
|
|
214
|
+
const defaultOp = (0, _utils.getDefaultOperator)(column?.meta ?? {}) ?? 'contains';
|
|
215
|
+
setCurrentFilter(prev => ({
|
|
216
|
+
...prev,
|
|
217
|
+
ope: defaultOp
|
|
218
|
+
}));
|
|
219
|
+
header.column.setFilterOperator?.(defaultOp);
|
|
194
220
|
setSelectedKeys([]);
|
|
195
221
|
doFilter(false);
|
|
196
222
|
}
|
|
@@ -282,7 +282,7 @@ const renderFilter = args => {
|
|
|
282
282
|
classNames: {
|
|
283
283
|
input: 'filter-input'
|
|
284
284
|
},
|
|
285
|
-
placeholder: t ? t('Search') :
|
|
285
|
+
placeholder: t ? t('Search') : 'Search',
|
|
286
286
|
value: selectedKeys[0],
|
|
287
287
|
onChange: e => setSelectedKeys(e.target.value ? [e.target.value] : [])
|
|
288
288
|
// onPressEnter={() => handleSearch(selectedKeys as string[], confirm)}
|
|
@@ -18,4 +18,4 @@ const colorDark = '#e6e4f3e6';
|
|
|
18
18
|
const GridStyle = exports.GridStyle = _styledComponents.default.div.withConfig({
|
|
19
19
|
displayName: "GridStyle",
|
|
20
20
|
componentId: "es-grid-template__sc-rs980s-0"
|
|
21
|
-
})(["&.", "-grid{color:", ";font-size:12px;background-color:", ";table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", "
|
|
21
|
+
})(["&.", "-grid{color:", ";font-size:12px;background-color:", ";table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", ";[data-virtuoso-scroller='true']{overscroll-behavior:none;overflow-anchor:none;}.", "-grid-thead{&:has(.resizer.isResizing){.", "-grid-cell{touch-action:none;user-select:none;}}.", "-grid-cell{background-color:#ffffff;&:has(.resizer.isResizing){touch-action:none;user-select:none;}.resizer{cursor:col-resize;height:100%;position:absolute;right:0;top:0;touch-action:none;user-select:none;width:5px;}}}tbody{.", "-grid-row{font-weight:500;&.", "-grid-row-parent{.", "-grid-cell{font-weight:700;background-color:#f5f5f5;}}}}.", "-grid-tfoot{z-index:3 !important;.ui-rc-grid-footer-row{.ui-rc-grid-cell{border-top:1px solid ", ";border-bottom:1px solid ", ";font-weight:500;}}}.", "-grid-cell{padding:5px 8px;&.", "-grid-cell-fix-left-last{.", "-grid-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}&::after{position:absolute;top:0;right:0;bottom:-1px;width:30px;transform:translateX(100%);transition:box-shadow 0.3s;content:'';pointer-events:none;box-shadow:inset 10px 0 8px -8px rgba(5,5,5,0.09);}}&.", "-grid-cell-fix-right-first{.", "-grid-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}&::after{position:absolute;top:0;bottom:-1px;left:0;width:30px;transform:translateX(-100%);transition:box-shadow 0.3s;content:'';pointer-events:none;box-shadow:inset -10px 0 8px -8px rgba(5,5,5,0.09);}&::before{content:'';position:absolute;inset-block:0;inset-inline-start:-1px;border-inline-start:1px solid #e0e0e0;}}&.", "-grid-cell-ellipsis{.group-content{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}.class-content:has(*){background:lightblue;}.class-content:not(:has(*)){background:lightgreen;}&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-righ{text-align:right;justify-content:flex-end;}}.", "-grid-cell:not(:has(*)){&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-right{text-align:right;justify-content:flex-end;}&.", "-grid-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}}&.", "-grid-light{.", "-grid-container{.", "-grid-thead{z-index:3 !important;background-color:", ";font-weight:600;.", "-grid-cell{font-weight:inherit;color:", ";background-color:#ffffff;border-inline-end:1px solid ", ";border-bottom:1px solid ", ";&.", "-grid-cell-text-wrap{white-space:normal;word-break:break-word;line-height:1.4;}&.ui-rc-grid-cell-ellipsis{.ui-rc-table-column-title,.", "-grid-cell-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}&.ui-rc-grid-cell-wrap{.ui-rc-table-column-title,.", "-grid-cell-text-wrap{white-space:normal;word-break:break-word;overflow:hidden;}}&:hover{.ui-rc-header-trigger{.ui-rc-table-column-sorter-cancel{opacity:1;}}}.", "-grid-filter-column{display:flex;justify-content:space-between;width:100%;align-items:center;position:relative;}.ui-rc-header-trigger{padding-left:6px;display:flex;align-items:center;.ui-rc-table-column-sorter-cancel{opacity:0;}}.resizer{cursor:col-resize;height:100%;position:absolute;right:0;top:0;touch-action:none;user-select:none;width:5px;}.resizer.isResizing{opacity:1;}}}.", "-grid-tbody{.", "-grid-row{background-color:", ";color:", ";}}tbody{background-color:", ";color:", ";.", "-grid-row{&.ui-rc-grid-row-selected{.", "-grid-cell{background-color:", ";}}}.", "-grid-cell{outline:none;background-color:#ffffff;border-inline-end:1px solid ", ";border-bottom:1px solid ", ";&.", "-grid-cell-text-wrap{white-space:normal;word-break:break-word;line-height:1.4;}&.ui-rc-grid-cell-selected{background-color:", " !important;}&.disable{background-color:#f0f0f0;}&.cell-editable{user-select:none;&.cell-border-top{&::after{content:'';position:absolute;top:0px;left:0;height:1px;width:100%;border-top:1px solid ", ";pointer-events:none;z-index:1;}}&.cell-border-bottom{border-bottom:1px solid ", ";}&.cell-border-left{&::before{content:'';position:absolute;top:0;left:0;height:102%;width:1px;border-left:1px solid ", ";pointer-events:none;z-index:1;}}&.cell-border-right{border-inline-end:1px solid ", ";}&.cell-paste-border-top{&::after{content:'';position:absolute;top:0px;left:0;height:1px;width:100%;border-top:1px dashed #949494;pointer-events:none;z-index:1;}&.ui-rc-grid-cell-fix-left-last{&::after{left:-100%;}}&.ui-rc-grid-cell-fix-right-first{&::after{left:100%;}}}&.cell-paste-border-bottom{border-bottom:1px dashed #949494;}&.cell-paste-border-left{&::before{content:'';position:absolute;top:0;left:0;height:102%;width:1px;border-left:1px dashed #949494;pointer-events:none;z-index:1;}}&.cell-paste-border-right{border-inline-end:1px dashed #949494;}.dragging-point{width:6px;height:6px;position:absolute;cursor:crosshair;right:0px;bottom:0px;&.hidden{display:none;}.dot-point{position:absolute;width:6px;height:6px;border-radius:0px;background-color:", ";bottom:0;right:0;}}}&.cell-editing{padding:0;&:focus-visible{outline:none;}.ant-form-item,.ant-row.ant-form-item-row,.ant-col.ant-form-item-control,.ant-form-item-control-input,.ant-form-item-control-input-content,.ant-input{height:100% !important;&:focus-visible{outline:none;}}textarea.ant-input{line-height:1.8;height:36px !important;min-height:36px !important;}input.be-cell-editing,.ant-picker,.ui-rc-select-selector,.ui-rc-table-select-selector{padding-inline:7px;}.", "-checkbox-wrapper{.", "-checkbox{background-color:red;}.", "-checkbox-input{&:focus-visible{outline:none;}}}.ant-input,.ant-picker{border-radius:0;}.ant-color-picker-trigger{height:100%;border-radius:0;.ant-color-picker-color-block{height:100%;width:100%;}}.", "-table-select-single .", "-table-select-selector,.", "-select-single .", "-select-selector,.ui-rc-table-select-selector{border-radius:0 !important;}.", "-table-select-single:not(.", "-table-select-customize-input){.", "-table-select-selector{.", "-table-select-selection-search-input{height:auto;}}}}}}.", "-grid-tfoot{.", "-grid-footer-row{border-bottom-width:1px;border-bottom-color:", ";border-bottom-style:solid;border-top-width:1px;border-top-color:", ";border-top-style:solid;background-color:#fafafa;}.", "-grid-cell{background-color:inherit;border-inline-end:1px solid ", ";}}}}&.", "-grid-dark{background-color:", ";color:", ";.", "-grid-container{border-color:", ";&::after{border-right-color:", ";}}}}"], props => props.$prefix, color, BgColor, props => props.$prefix, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : BgColor}`, props => props.$prefix, props => `${props.$theme.color ? props.$theme.color : color}`, tableBorderColor, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : BgColor}`, props => `${props.$theme.color ? props.$theme.color : color}`, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : BgColor}`, props => `${props.$theme.color ? props.$theme.color : color}`, props => props.$prefix, props => props.$prefix, rowSelectedBg, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, cellSelectedBg, borderSelectedColor, borderSelectedColor, borderSelectedColor, borderSelectedColor, borderSelectedColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, tableBorderColor, props => props.$prefix, BgColorDark, colorDark, props => props.$prefix, tableBorderColorDark, tableBorderColorDark);
|
|
@@ -144,9 +144,12 @@ const TableWrapper = props => {
|
|
|
144
144
|
}, /*#__PURE__*/_react.default.createElement(_reactVirtuoso.TableVirtuoso, (0, _extends2.default)({
|
|
145
145
|
ref: virtuosoRef,
|
|
146
146
|
data: table.getRowModel().rows,
|
|
147
|
-
totalCount: rows.length
|
|
147
|
+
totalCount: rows.length,
|
|
148
|
+
computeItemKey: (_index, row) => row?.id ?? _index,
|
|
149
|
+
style: {
|
|
150
|
+
height: '100%'
|
|
151
|
+
}
|
|
148
152
|
}, onVisibleRowsChange ? {
|
|
149
|
-
computeItemKey: (_index, row) => row.id,
|
|
150
153
|
rangeChanged: ({
|
|
151
154
|
startIndex,
|
|
152
155
|
endIndex
|
|
@@ -200,7 +203,6 @@ const TableWrapper = props => {
|
|
|
200
203
|
...rest
|
|
201
204
|
} = props;
|
|
202
205
|
const index = props["data-index"];
|
|
203
|
-
const rowheight = props["data-known-size"];
|
|
204
206
|
const row = rows[index];
|
|
205
207
|
const isEditing = row.id === editingKey;
|
|
206
208
|
const isRowEditable = rowEditable ? rowEditable(row.original) : true;
|
|
@@ -210,7 +212,7 @@ const TableWrapper = props => {
|
|
|
210
212
|
scrollToRow: scrollToRow,
|
|
211
213
|
table: table,
|
|
212
214
|
commandClick: commandClick,
|
|
213
|
-
rowheight: editAble ? 37 :
|
|
215
|
+
rowheight: editAble ? 37 : undefined,
|
|
214
216
|
isEditing: isEditing,
|
|
215
217
|
isRowEditable: isRowEditable,
|
|
216
218
|
editAble: editAble,
|