es-grid-template 1.9.102 → 1.9.104

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 (48) hide show
  1. package/es/ali-table/Grid.js +1 -1
  2. package/es/ali-table/base-table/cell/EditCell.js +3 -2
  3. package/es/ali-table/base-table/cell/HeaderEditCell.js +3 -2
  4. package/es/ali-table/base-table/renderFilter.js +1 -1
  5. package/es/grid-component/GridToolbar.d.ts +3 -0
  6. package/es/grid-component/GridToolbar.js +16 -0
  7. package/es/group-component/ColumnsGroup/ColumnsGroup.js +1 -1
  8. package/es/group-component/TableContainerEdit.js +2 -1
  9. package/es/group-component/body/EditableCell.js +3 -2
  10. package/es/group-component/header/TableHeadCell.js +8 -6
  11. package/es/group-component/header/TableHeadCell2.js +7 -4
  12. package/es/group-component/header/renderFilter.js +1 -1
  13. package/es/group-component/hook/utils.d.ts +3 -3
  14. package/es/table-component/TableContainerEdit.js +1 -1
  15. package/es/table-component/body/EditableCell.js +3 -2
  16. package/es/table-component/header/TableHeadCell.js +8 -4
  17. package/es/table-component/header/TableHeadCell2.js +9 -8
  18. package/es/table-component/header/renderFilter.js +1 -1
  19. package/es/table-virtuoso/ColumnsGroup/ColumnsGroup.js +2 -2
  20. package/es/table-virtuoso/body/TableBodyRow.js +3 -1
  21. package/es/table-virtuoso/header/TableHeadCell.js +27 -1
  22. package/es/table-virtuoso/header/renderFilter.js +1 -1
  23. package/es/table-virtuoso/style.js +1 -1
  24. package/es/table-virtuoso/table/TableWrapper.js +6 -4
  25. package/lib/ali-table/Grid.js +4 -4
  26. package/lib/ali-table/base-table/cell/EditCell.js +3 -2
  27. package/lib/ali-table/base-table/cell/HeaderEditCell.js +3 -2
  28. package/lib/ali-table/base-table/renderFilter.js +1 -1
  29. package/lib/grid-component/GridToolbar.d.ts +3 -0
  30. package/lib/grid-component/GridToolbar.js +25 -0
  31. package/lib/group-component/ColumnsGroup/ColumnsGroup.js +1 -1
  32. package/lib/group-component/TableContainerEdit.js +4 -3
  33. package/lib/group-component/body/EditableCell.js +3 -2
  34. package/lib/group-component/header/TableHeadCell.js +8 -6
  35. package/lib/group-component/header/TableHeadCell2.js +7 -4
  36. package/lib/group-component/header/renderFilter.js +1 -1
  37. package/lib/table-component/TableContainerEdit.js +4 -3
  38. package/lib/table-component/body/EditableCell.js +3 -2
  39. package/lib/table-component/header/TableHeadCell.js +8 -4
  40. package/lib/table-component/header/TableHeadCell2.js +9 -8
  41. package/lib/table-component/header/renderFilter.js +1 -1
  42. package/lib/table-virtuoso/ColumnsGroup/ColumnsGroup.js +2 -2
  43. package/lib/table-virtuoso/body/TableBodyRow.js +3 -1
  44. package/lib/table-virtuoso/header/TableHeadCell.js +27 -1
  45. package/lib/table-virtuoso/header/renderFilter.js +1 -1
  46. package/lib/table-virtuoso/style.js +1 -1
  47. package/lib/table-virtuoso/table/TableWrapper.js +6 -4
  48. package/package.json +1 -1
@@ -5,7 +5,7 @@ import React, { useContext } from "react";
5
5
  import { Tooltip } from "react-tooltip";
6
6
  import "./base-table/styles.scss";
7
7
  // import type { TableProps } from "../table-component"
8
- import { Toolbar } from 'rc-master-ui';
8
+ import Toolbar from "../grid-component/GridToolbar";
9
9
  import classNames from "classnames";
10
10
  import Pagination from "rc-master-ui/es/pagination";
11
11
  import { Maximize, Minimize } from "becoxy-icons";
@@ -626,8 +626,9 @@ const EditCell = props => {
626
626
  } : filterOption,
627
627
  optionRender: column.editSelectSettings?.formatOptionLabel,
628
628
  fieldNames: {
629
- value: keySelect,
630
- label: inputKey ?? 'label'
629
+ ...fieldNames,
630
+ value: fieldNames?.value ?? keySelect,
631
+ label: fieldNames?.label ?? inputKey ?? 'label'
631
632
  },
632
633
  onBlur: event => {
633
634
  if (event.inputValue && column?.editSelectSettings?.searchTextAsValue && isMulti !== true) {
@@ -622,8 +622,9 @@ const HeaderEditCell = props => {
622
622
  } : filterOption,
623
623
  optionRender: column.editSelectSettings?.formatOptionLabel,
624
624
  fieldNames: {
625
- value: keySelect,
626
- label: inputKey ?? 'label'
625
+ ...fieldNames,
626
+ value: fieldNames?.value ?? keySelect,
627
+ label: fieldNames?.label ?? inputKey ?? 'label'
627
628
  },
628
629
  onBlur: event => {
629
630
  if (event.inputValue && column?.editSelectSettings?.searchTextAsValue && isMulti !== true) {
@@ -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
  ,
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ import { Toolbar } from 'rc-master-ui';
3
+ export default function GridToolbar({ items, ...props }: React.ComponentProps<typeof Toolbar>): JSX.Element;
@@ -0,0 +1,16 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { Toolbar } from 'rc-master-ui';
4
+ export default function GridToolbar({
5
+ items,
6
+ ...props
7
+ }) {
8
+ const visibleItems = items.filter(item => item.visible !== false);
9
+ const layoutKey = JSON.stringify(visibleItems.map(item => [item.key ?? item.value, item.align ?? 'left']));
10
+
11
+ // rc-master-ui leaves old alignment classes on reused items when the layout changes.
12
+ return /*#__PURE__*/React.createElement(Toolbar, _extends({}, props, {
13
+ key: layoutKey,
14
+ items: visibleItems
15
+ }));
16
+ }
@@ -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'
@@ -11,7 +11,8 @@ import Pagination from "rc-master-ui/es/pagination";
11
11
  import { numericFormatter, removeNumericFormat } from "react-numeric-component";
12
12
  import { TableContext } from "./useContext";
13
13
  import { yupResolver } from "@hookform/resolvers/yup";
14
- import { Dropdown, Toolbar, Modal, Typography } from "rc-master-ui";
14
+ import { Dropdown, Modal, Typography } from "rc-master-ui";
15
+ import Toolbar from "../grid-component/GridToolbar";
15
16
  import classNames from "classnames";
16
17
  import { Collapse2, Expand2, Maximize, Minimize } from "becoxy-icons";
17
18
  // import { ColumnsChoose } from "./ColumnsChoose";
@@ -622,8 +622,9 @@ const EditableCell = props => {
622
622
  } : filterOption,
623
623
  optionRender: column.editSelectSettings?.formatOptionLabel,
624
624
  fieldNames: {
625
- value: keySelect,
626
- label: inputKey ?? 'label'
625
+ ...fieldNames,
626
+ value: fieldNames?.value ?? keySelect,
627
+ label: fieldNames?.label ?? inputKey ?? 'label'
627
628
  },
628
629
  onBlur: event => {
629
630
  if (event.inputValue && column?.editSelectSettings?.searchTextAsValue && isMulti !== true) {
@@ -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" | "display" | "right" | "left" | "minWidth" | "position"> | ((cellValue: any, cell: import("@tanstack/react-table").Cell<RecordType, unknown>) => Omit<CSSProperties, "width" | "display" | "right" | "left" | "minWidth" | "position">);
200
+ onCellHeaderStyles?: Omit<CSSProperties, "width" | "display" | "right" | "left" | "minWidth" | "position"> | ((cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "width" | "display" | "right" | "left" | "minWidth" | "position">);
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" | "display" | "right" | "left" | "minWidth" | "position"> | ((cellValue: any, cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "width" | "display" | "right" | "left" | "minWidth" | "position">);
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;
@@ -20,7 +20,7 @@ import Pagination from "rc-master-ui/es/pagination";
20
20
  import { numericFormatter, removeNumericFormat } from "react-numeric-component";
21
21
  import { TableContext } from "./useContext";
22
22
  import { yupResolver } from "@hookform/resolvers/yup";
23
- import { Toolbar } from "rc-master-ui";
23
+ import Toolbar from "../grid-component/GridToolbar";
24
24
  import classNames from "classnames";
25
25
  import { Maximize, Minimize } from "becoxy-icons";
26
26
  import TableWrapper from "./table/TableWrapper";
@@ -625,8 +625,9 @@ const EditableCell = props => {
625
625
  } : filterOption,
626
626
  optionRender: column.editSelectSettings?.formatOptionLabel,
627
627
  fieldNames: {
628
- value: keySelect,
629
- label: inputKey ?? 'label'
628
+ ...fieldNames,
629
+ value: fieldNames?.value ?? keySelect,
630
+ label: fieldNames?.label ?? inputKey ?? 'label'
630
631
  },
631
632
  onBlur: event => {
632
633
  if (event.inputValue && column?.editSelectSettings?.searchTextAsValue && isMulti !== true) {
@@ -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,
@@ -11,7 +11,7 @@ var _locale = require("rc-master-ui/es/locale");
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _reactTooltip = require("react-tooltip");
13
13
  require("./base-table/styles.scss");
14
- var _rcMasterUi = require("rc-master-ui");
14
+ var _GridToolbar = _interopRequireDefault(require("../grid-component/GridToolbar"));
15
15
  var _classnames = _interopRequireDefault(require("classnames"));
16
16
  var _pagination = _interopRequireDefault(require("rc-master-ui/es/pagination"));
17
17
  var _becoxyIcons = require("becoxy-icons");
@@ -246,7 +246,7 @@ const Grid = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
246
246
  className: (0, _classnames.default)('ui-rc-toolbar-bottom border-0', {
247
247
  'ui-rc-toolbar-bottom_border-bottom': !pagination || infiniteScroll
248
248
  })
249
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
249
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
250
250
  style: {
251
251
  width: '100%'
252
252
  },
@@ -276,7 +276,7 @@ const Grid = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
276
276
  flex: 1,
277
277
  overflow: 'hidden'
278
278
  }
279
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
279
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
280
280
  items: toolbarItemTopRight,
281
281
  mode: toolbarMode
282
282
  })), fullScreen !== false && (isFullScreen ? /*#__PURE__*/_react.default.createElement(_becoxyIcons.Minimize, {
@@ -394,7 +394,7 @@ const Grid = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
394
394
  className: (0, _classnames.default)('ui-rc-toolbar-bottom', {
395
395
  'ui-rc-toolbar-bottom_border-bottom': !pagination || infiniteScroll
396
396
  })
397
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
397
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
398
398
  style: {
399
399
  width: '100%'
400
400
  },
@@ -633,8 +633,9 @@ const EditCell = props => {
633
633
  } : filterOption,
634
634
  optionRender: column.editSelectSettings?.formatOptionLabel,
635
635
  fieldNames: {
636
- value: keySelect,
637
- label: inputKey ?? 'label'
636
+ ...fieldNames,
637
+ value: fieldNames?.value ?? keySelect,
638
+ label: fieldNames?.label ?? inputKey ?? 'label'
638
639
  },
639
640
  onBlur: event => {
640
641
  if (event.inputValue && column?.editSelectSettings?.searchTextAsValue && isMulti !== true) {
@@ -629,8 +629,9 @@ const HeaderEditCell = props => {
629
629
  } : filterOption,
630
630
  optionRender: column.editSelectSettings?.formatOptionLabel,
631
631
  fieldNames: {
632
- value: keySelect,
633
- label: inputKey ?? 'label'
632
+ ...fieldNames,
633
+ value: fieldNames?.value ?? keySelect,
634
+ label: fieldNames?.label ?? inputKey ?? 'label'
634
635
  },
635
636
  onBlur: event => {
636
637
  if (event.inputValue && column?.editSelectSettings?.searchTextAsValue && isMulti !== true) {
@@ -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
  ,
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ import { Toolbar } from 'rc-master-ui';
3
+ export default function GridToolbar({ items, ...props }: React.ComponentProps<typeof Toolbar>): JSX.Element;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = GridToolbar;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _rcMasterUi = require("rc-master-ui");
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ function GridToolbar({
14
+ items,
15
+ ...props
16
+ }) {
17
+ const visibleItems = items.filter(item => item.visible !== false);
18
+ const layoutKey = JSON.stringify(visibleItems.map(item => [item.key ?? item.value, item.align ?? 'left']));
19
+
20
+ // rc-master-ui leaves old alignment classes on reused items when the layout changes.
21
+ return /*#__PURE__*/React.createElement(_rcMasterUi.Toolbar, (0, _extends2.default)({}, props, {
22
+ key: layoutKey,
23
+ items: visibleItems
24
+ }));
25
+ }
@@ -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'
@@ -17,6 +17,7 @@ var _reactNumericComponent = require("react-numeric-component");
17
17
  var _useContext = require("./useContext");
18
18
  var _yup = require("@hookform/resolvers/yup");
19
19
  var _rcMasterUi = require("rc-master-ui");
20
+ var _GridToolbar = _interopRequireDefault(require("../grid-component/GridToolbar"));
20
21
  var _classnames = _interopRequireDefault(require("classnames"));
21
22
  var _becoxyIcons = require("becoxy-icons");
22
23
  var _TableWrapper = _interopRequireDefault(require("./table/TableWrapper"));
@@ -2142,7 +2143,7 @@ const TableContainerEdit = props => {
2142
2143
  flex: 1,
2143
2144
  overflow: 'hidden'
2144
2145
  }
2145
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
2146
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
2146
2147
  items: toolbarItemsTop ?? [],
2147
2148
  mode: 'scroll'
2148
2149
  })), /*#__PURE__*/_react.default.createElement("div", {
@@ -2165,7 +2166,7 @@ const TableContainerEdit = props => {
2165
2166
  flex: 1,
2166
2167
  overflow: 'hidden'
2167
2168
  }
2168
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
2169
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
2169
2170
  items: toolbarItemTopRight,
2170
2171
  mode: 'responsive'
2171
2172
  })), /*#__PURE__*/_react.default.createElement(_GridRefreshButton.default, {
@@ -2303,7 +2304,7 @@ const TableContainerEdit = props => {
2303
2304
  // borderRight: '1px solid #e0e0e0',
2304
2305
  // borderLeft: '1px solid #e0e0e0'
2305
2306
  // }}
2306
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
2307
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
2307
2308
  style: {
2308
2309
  width: '100%'
2309
2310
  },
@@ -629,8 +629,9 @@ const EditableCell = props => {
629
629
  } : filterOption,
630
630
  optionRender: column.editSelectSettings?.formatOptionLabel,
631
631
  fieldNames: {
632
- value: keySelect,
633
- label: inputKey ?? 'label'
632
+ ...fieldNames,
633
+ value: fieldNames?.value ?? keySelect,
634
+ label: fieldNames?.label ?? inputKey ?? 'label'
634
635
  },
635
636
  onBlur: event => {
636
637
  if (event.inputValue && column?.editSelectSettings?.searchTextAsValue && isMulti !== true) {
@@ -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)}
@@ -18,6 +18,7 @@ var _pagination = _interopRequireDefault(require("rc-master-ui/es/pagination"));
18
18
  var _reactNumericComponent = require("react-numeric-component");
19
19
  var _useContext = require("./useContext");
20
20
  var _yup = require("@hookform/resolvers/yup");
21
+ var _GridToolbar = _interopRequireDefault(require("../grid-component/GridToolbar"));
21
22
  var _classnames = _interopRequireDefault(require("classnames"));
22
23
  var _becoxyIcons = require("becoxy-icons");
23
24
  var _TableWrapper = _interopRequireDefault(require("./table/TableWrapper"));
@@ -2148,7 +2149,7 @@ const TableContainerEdit = props => {
2148
2149
  className: (0, _classnames.default)('ui-rc-toolbar-bottom border-0', {
2149
2150
  'ui-rc-toolbar-bottom_border-bottom': !pagination || infiniteScroll
2150
2151
  })
2151
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
2152
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
2152
2153
  style: {
2153
2154
  width: '100%'
2154
2155
  },
@@ -2177,7 +2178,7 @@ const TableContainerEdit = props => {
2177
2178
  flex: 1,
2178
2179
  overflow: 'hidden'
2179
2180
  }
2180
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
2181
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
2181
2182
  items: toolbarItemTopRight,
2182
2183
  mode: toolbarMode
2183
2184
  })), fullScreen !== false && (isFullScreen ? /*#__PURE__*/_react.default.createElement(_becoxyIcons.Minimize, {
@@ -2312,7 +2313,7 @@ const TableContainerEdit = props => {
2312
2313
  className: (0, _classnames.default)('ui-rc-toolbar-bottom', {
2313
2314
  'ui-rc-toolbar-bottom_border-bottom': !pagination || infiniteScroll
2314
2315
  })
2315
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
2316
+ }, /*#__PURE__*/_react.default.createElement(_GridToolbar.default, {
2316
2317
  style: {
2317
2318
  width: '100%'
2318
2319
  },
@@ -632,8 +632,9 @@ const EditableCell = props => {
632
632
  } : filterOption,
633
633
  optionRender: column.editSelectSettings?.formatOptionLabel,
634
634
  fieldNames: {
635
- value: keySelect,
636
- label: inputKey ?? 'label'
635
+ ...fieldNames,
636
+ value: fieldNames?.value ?? keySelect,
637
+ label: fieldNames?.label ?? inputKey ?? 'label'
637
638
  },
638
639
  onBlur: event => {
639
640
  if (event.inputValue && column?.editSelectSettings?.searchTextAsValue && isMulti !== true) {
@@ -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.104",
4
4
  "description": "es-grid-template",
5
5
  "keywords": [
6
6
  "react",