es-grid-template 1.9.102 → 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.
Files changed (33) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/es/ali-table/base-table/renderFilter.js +1 -1
  3. package/es/grid-component/GridRefreshButton.css +9 -9
  4. package/es/group-component/ColumnsGroup/ColumnsGroup.js +1 -1
  5. package/es/group-component/header/TableHeadCell.js +8 -6
  6. package/es/group-component/header/TableHeadCell2.js +7 -4
  7. package/es/group-component/header/renderFilter.js +1 -1
  8. package/es/group-component/hook/utils.d.ts +3 -3
  9. package/es/table-component/header/TableHeadCell.js +8 -4
  10. package/es/table-component/header/TableHeadCell2.js +9 -8
  11. package/es/table-component/header/renderFilter.js +1 -1
  12. package/es/table-virtuoso/ColumnsGroup/ColumnsGroup.js +2 -2
  13. package/es/table-virtuoso/body/TableBodyRow.js +3 -1
  14. package/es/table-virtuoso/header/TableHeadCell.js +27 -1
  15. package/es/table-virtuoso/header/renderFilter.js +1 -1
  16. package/es/table-virtuoso/style.js +1 -1
  17. package/es/table-virtuoso/table/TableWrapper.js +6 -4
  18. package/lib/ali-table/base-table/renderFilter.js +1 -1
  19. package/lib/grid-component/GridRefreshButton.css +9 -9
  20. package/lib/group-component/ColumnsGroup/ColumnsGroup.js +1 -1
  21. package/lib/group-component/header/TableHeadCell.js +8 -6
  22. package/lib/group-component/header/TableHeadCell2.js +7 -4
  23. package/lib/group-component/header/renderFilter.js +1 -1
  24. package/lib/table-component/header/TableHeadCell.js +8 -4
  25. package/lib/table-component/header/TableHeadCell2.js +9 -8
  26. package/lib/table-component/header/renderFilter.js +1 -1
  27. package/lib/table-virtuoso/ColumnsGroup/ColumnsGroup.js +2 -2
  28. package/lib/table-virtuoso/body/TableBodyRow.js +3 -1
  29. package/lib/table-virtuoso/header/TableHeadCell.js +27 -1
  30. package/lib/table-virtuoso/header/renderFilter.js +1 -1
  31. package/lib/table-virtuoso/style.js +1 -1
  32. package/lib/table-virtuoso/table/TableWrapper.js +6 -4
  33. 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 ?? `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
- }, "Nh\xF3m d\u1EEF li\u1EC7u theo c\u1ED9t"), /*#__PURE__*/React.createElement("div", {
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
- // selectedKeys: (header.column.getFilterValue() ?? []) as string[],
159
- // setSelectedKeys: header.column.setFilterValue,
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
- // header.column.setFilterValue([])
181
- // header.column.setFilterOperator('')
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
- // column.setFilterValue([])
183
- // column.setFilterOperator('')
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 ?? `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, "right" | "left" | "width" | "display" | "minWidth" | "position"> | ((cellValue: any, cell: import("@tanstack/react-table").Cell<RecordType, unknown>) => Omit<CSSProperties, "right" | "left" | "width" | "display" | "minWidth" | "position">);
200
- onCellHeaderStyles?: Omit<CSSProperties, "right" | "left" | "width" | "display" | "minWidth" | "position"> | ((cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "right" | "left" | "width" | "display" | "minWidth" | "position">);
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, "right" | "left" | "width" | "display" | "minWidth" | "position"> | ((cellValue: any, cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "right" | "left" | "width" | "display" | "minWidth" | "position">);
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;
@@ -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
- // header.column.setFilterValue([])
189
- // header.column.setFilterOperator('')
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
- if (fieldOriginal) {
139
- fieldOriginal.setFilterValue(undefined);
140
- } else {
141
- column.setFilterValue(undefined);
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
- // column.setFilterValue([])
235
- // column.setFilterOperator('')
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 ?? `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
- }, "Nh\xF3m d\u1EEF li\u1EC7u theo c\u1ED9t"), /*#__PURE__*/React.createElement("div", {
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') : 'Nhóm dữ liệu'
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
- height: rowheight
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') : `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 ", ";.", "-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 ", ";&.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 ", ";&.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.$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, 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);
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 : rowheight,
204
+ rowheight: editAble ? 37 : undefined,
203
205
  isEditing: isEditing,
204
206
  isRowEditable: isRowEditable,
205
207
  editAble: editAble,
@@ -291,7 +291,7 @@ const renderFilter = args => {
291
291
  }
292
292
  // placeholder={t ? t('Search') : `Search`}
293
293
  ,
294
- placeholder: tableLocal?.search ?? `Search`
294
+ placeholder: t ? t('Search') : tableLocal?.search || 'Search'
295
295
 
296
296
  // value={selectedKeys[0]}
297
297
  ,
@@ -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
- }, "Nh\xF3m d\u1EEF li\u1EC7u theo c\u1ED9t"), /*#__PURE__*/_react.default.createElement("div", {
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
- // selectedKeys: (header.column.getFilterValue() ?? []) as string[],
168
- // setSelectedKeys: header.column.setFilterValue,
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
- // header.column.setFilterValue([])
190
- // header.column.setFilterOperator('')
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
- // column.setFilterValue([])
192
- // column.setFilterOperator('')
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 ?? `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)}
@@ -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
- // header.column.setFilterValue([])
197
- // header.column.setFilterOperator('')
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
- if (fieldOriginal) {
147
- fieldOriginal.setFilterValue(undefined);
148
- } else {
149
- column.setFilterValue(undefined);
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
- // column.setFilterValue([])
243
- // column.setFilterOperator('')
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 ?? `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
- }, "Nh\xF3m d\u1EEF li\u1EC7u theo c\u1ED9t"), /*#__PURE__*/_react.default.createElement("div", {
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') : 'Nhóm dữ liệu'
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
- height: rowheight
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') : `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 ", ";.", "-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 ", ";&.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 ", ";&.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.$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, 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);
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 : rowheight,
215
+ rowheight: editAble ? 37 : undefined,
214
216
  isEditing: isEditing,
215
217
  isRowEditable: isRowEditable,
216
218
  editAble: editAble,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "es-grid-template",
3
- "version": "1.9.102",
3
+ "version": "1.9.103",
4
4
  "description": "es-grid-template",
5
5
  "keywords": [
6
6
  "react",