es-grid-template 1.9.92 → 1.9.94

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 (61) hide show
  1. package/es/ali-table/pipeline/features/columnCustom.js +6 -0
  2. package/es/grid-component/GridRefreshButton.css +9 -9
  3. package/es/grid-component/hooks/rowFocus.d.ts +11 -0
  4. package/es/grid-component/hooks/rowFocus.js +25 -0
  5. package/es/grid-component/index.d.ts +2 -2
  6. package/es/grid-component/type.d.ts +8 -0
  7. package/es/group-component/TableContainer.js +2 -0
  8. package/es/group-component/TableContainerEdit.js +2 -0
  9. package/es/group-component/body/TableBodyCell.js +4 -0
  10. package/es/group-component/body/TableBodyCellEdit.js +4 -0
  11. package/es/group-component/body/TableBodyCellEmpty.js +4 -0
  12. package/es/group-component/body/TableBodyRow.js +6 -3
  13. package/es/group-component/body/TableBodyRowGroupCell.js +4 -0
  14. package/es/group-component/hook/utils.d.ts +9 -9
  15. package/es/group-component/useContext.d.ts +2 -0
  16. package/es/index.d.ts +1 -1
  17. package/es/table-component/TableContainer.js +2 -0
  18. package/es/table-component/TableContainerEdit.js +2 -0
  19. package/es/table-component/body/TableBody.js +4 -0
  20. package/es/table-component/body/TableBodyCell.js +4 -0
  21. package/es/table-component/body/TableBodyCellEdit.js +9 -4
  22. package/es/table-component/body/TableBodyRow.js +12 -4
  23. package/es/table-component/style.js +1 -1
  24. package/es/table-component/style.scss +6 -2
  25. package/es/table-component/useContext.d.ts +2 -0
  26. package/es/table-virtuoso/body/TableBodyCell.js +4 -0
  27. package/es/table-virtuoso/body/TableBodyCellRowGroup.js +4 -0
  28. package/es/table-virtuoso/body/TableBodyRow.js +4 -1
  29. package/es/table-virtuoso/table/TableContainer.js +2 -0
  30. package/es/table-virtuoso/useContext.d.ts +2 -0
  31. package/lib/ali-table/pipeline/features/columnCustom.js +6 -0
  32. package/lib/grid-component/GridRefreshButton.css +9 -9
  33. package/lib/grid-component/hooks/rowFocus.d.ts +11 -0
  34. package/lib/grid-component/hooks/rowFocus.js +32 -0
  35. package/lib/grid-component/index.d.ts +2 -2
  36. package/lib/grid-component/type.d.ts +8 -0
  37. package/lib/group-component/TableContainer.js +2 -0
  38. package/lib/group-component/TableContainerEdit.js +2 -0
  39. package/lib/group-component/body/TableBodyCell.js +4 -0
  40. package/lib/group-component/body/TableBodyCellEdit.js +4 -0
  41. package/lib/group-component/body/TableBodyCellEmpty.js +4 -0
  42. package/lib/group-component/body/TableBodyRow.js +6 -3
  43. package/lib/group-component/body/TableBodyRowGroupCell.js +4 -0
  44. package/lib/group-component/useContext.d.ts +2 -0
  45. package/lib/index.d.ts +1 -1
  46. package/lib/table-component/TableContainer.js +2 -0
  47. package/lib/table-component/TableContainerEdit.js +2 -0
  48. package/lib/table-component/body/TableBody.js +4 -0
  49. package/lib/table-component/body/TableBodyCell.js +4 -0
  50. package/lib/table-component/body/TableBodyCellEdit.js +9 -4
  51. package/lib/table-component/body/TableBodyRow.js +12 -4
  52. package/lib/table-component/style.js +1 -1
  53. package/lib/table-component/style.scss +6 -2
  54. package/lib/table-component/useContext.d.ts +2 -0
  55. package/lib/table-virtuoso/body/TableBodyCell.js +4 -0
  56. package/lib/table-virtuoso/body/TableBodyCellRowGroup.js +4 -0
  57. package/lib/table-virtuoso/body/TableBodyRow.js +4 -1
  58. package/lib/table-virtuoso/table/TableContainer.js +2 -0
  59. package/lib/table-virtuoso/useContext.d.ts +2 -0
  60. package/package.json +1 -1
  61. package/CHANGELOG.md +0 -6
@@ -338,6 +338,9 @@ export function columnCustom(opts) {
338
338
  // Chức năng edit
339
339
 
340
340
  const handleEdit = (e, record, col, editType, isKeyDown, isHeader) => {
341
+ if (!isHeader && (!isEditable(col, record) || rowEditable?.(record) === false)) {
342
+ return;
343
+ }
341
344
  reset?.();
342
345
  const cell = e.currentTarget;
343
346
  pipeline.setStateAtKey(stateKeyIsEditing, {
@@ -550,6 +553,9 @@ export function columnCustom(opts) {
550
553
  // Không vượt quá số cột
551
554
  return;
552
555
  }
556
+ if (!isEditable(leafColumns[targetCol], newData[targetRow])) {
557
+ return;
558
+ }
553
559
  const columnKey = leafColumns[targetCol].field;
554
560
  newData[targetRow] = {
555
561
  ...newData[targetRow],
@@ -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
+ }
@@ -0,0 +1,11 @@
1
+ import type { MouseEvent } from 'react';
2
+ import type { RowFocusEventArgs } from '../type';
3
+ type RowFocus<T> = (args: RowFocusEventArgs<T>) => void;
4
+ /** Capture clicks even when a cell handles the event itself. */
5
+ export declare function getRowFocusHandlers<T>(rowData: T, rowFocus?: RowFocus<T>): {
6
+ onClickCapture: (event: MouseEvent<HTMLElement>) => void;
7
+ onContextMenuCapture: (event: MouseEvent<HTMLElement>) => void;
8
+ };
9
+ /** Notify arrow focus without changing the existing navigation or selection. */
10
+ export declare function notifyArrowRowFocus<T>(rowData: T, method: 'arrowUp' | 'arrowDown', useArrow?: boolean, rowFocus?: RowFocus<T>): void;
11
+ export {};
@@ -0,0 +1,25 @@
1
+ /** Capture clicks even when a cell handles the event itself. */
2
+ export function getRowFocusHandlers(rowData, rowFocus) {
3
+ return {
4
+ onClickCapture: event => {
5
+ if (event.button === 0) rowFocus?.({
6
+ rowData,
7
+ method: 'mouseLeftClick'
8
+ });
9
+ },
10
+ onContextMenuCapture: event => {
11
+ if (event.button === 2) rowFocus?.({
12
+ rowData,
13
+ method: 'mouseRightClick'
14
+ });
15
+ }
16
+ };
17
+ }
18
+
19
+ /** Notify arrow focus without changing the existing navigation or selection. */
20
+ export function notifyArrowRowFocus(rowData, method, useArrow, rowFocus) {
21
+ if (useArrow === true) rowFocus?.({
22
+ rowData,
23
+ method
24
+ });
25
+ }
@@ -1,5 +1,5 @@
1
1
  import TempTable from './TempTable';
2
- import type { ColumnsTable, TableProps, ColumnTable, CommandItem, ContextMenuItem } from './type';
2
+ import type { ColumnsTable, TableProps, ColumnTable, CommandItem, ContextMenuItem, RowFocusEventArgs } from './type';
3
3
  import type { ToolbarItem } from "rc-master-ui/es/toolbar";
4
- export type { ColumnsTable, TableProps, ColumnTable, ToolbarItem, CommandItem, ContextMenuItem };
4
+ export type { ColumnsTable, TableProps, ColumnTable, ToolbarItem, CommandItem, ContextMenuItem, RowFocusEventArgs };
5
5
  export default TempTable;
@@ -451,6 +451,8 @@ export type TableProps<RecordType = AnyObject> = {
451
451
  recordDoubleClick?: (args: RecordDoubleClickEventArgs<RecordType>) => void;
452
452
  /** Click vào row */
453
453
  recordClick?: (args: RecordDoubleClickEventArgs<RecordType>) => void;
454
+ /** Notify mouse clicks or enabled arrow-key navigation independently of row selection. */
455
+ rowFocus?: (args: RowFocusEventArgs<RecordType>) => void;
454
456
  /** Filter */
455
457
  /** Hiển thị filter nâng cao */
456
458
  showAdvanceFilter?: boolean;
@@ -789,6 +791,8 @@ export type IWrapSettings = {
789
791
  wrapMode?: IWrapMode;
790
792
  };
791
793
  export type SelectionSettings<T = AnyObject> = {
794
+ /** Invoke rowFocus on ArrowUp/ArrowDown. Defaults to false. */
795
+ useArrow?: boolean;
792
796
  mode?: 'checkbox' | 'radio';
793
797
  type?: 'single' | 'multiple';
794
798
  checkboxOnly?: boolean;
@@ -824,6 +828,10 @@ export type RowSelection<T> = {
824
828
  checkboxOnly?: boolean;
825
829
  arrowKey?: boolean;
826
830
  };
831
+ export type RowFocusEventArgs<RecordType> = {
832
+ rowData: RecordType;
833
+ method: 'mouseLeftClick' | 'mouseRightClick' | 'arrowUp' | 'arrowDown';
834
+ };
827
835
  export type RecordDoubleClickEventArgs<RecordType> = {
828
836
  rowData: RecordType;
829
837
  rowIndex: number | undefined;
@@ -30,6 +30,7 @@ const TableContainer = props => {
30
30
  expandable,
31
31
  wrapSettings,
32
32
  recordDoubleClick,
33
+ rowFocus,
33
34
  // triggerFilter,
34
35
  selectionSettings,
35
36
  isSelectionChange,
@@ -317,6 +318,7 @@ const TableContainer = props => {
317
318
  // triggerFilter,
318
319
  wrapSettings,
319
320
  recordDoubleClick,
321
+ rowFocus,
320
322
  selectionSettings,
321
323
  isSelectionChange,
322
324
  setIsSelectionChange,
@@ -78,6 +78,7 @@ const TableContainerEdit = props => {
78
78
  expandable,
79
79
  wrapSettings,
80
80
  recordDoubleClick,
81
+ rowFocus,
81
82
  // triggerFilter,
82
83
  selectionSettings,
83
84
  isSelectionChange,
@@ -2205,6 +2206,7 @@ const TableContainerEdit = props => {
2205
2206
  originData,
2206
2207
  wrapSettings,
2207
2208
  recordDoubleClick,
2209
+ rowFocus,
2208
2210
  selectionSettings: {
2209
2211
  ...selectionSettings,
2210
2212
  checkboxOnly: true
@@ -1,3 +1,4 @@
1
+ import { notifyArrowRowFocus } from "../../grid-component/hooks/rowFocus";
1
2
  import Space from "rc-master-ui/es/space";
2
3
  import Command from "../components/command/Command";
3
4
  import { getCommonPinningStyles, getSelectedCellMatrix } from "../hook/utils";
@@ -156,6 +157,7 @@ const TableBodyCell = props => {
156
157
  id,
157
158
  prefix,
158
159
  focusedCell,
160
+ rowFocus,
159
161
  setFocusedCell,
160
162
  // endCell,
161
163
  // startCell,
@@ -454,6 +456,7 @@ const TableBodyCell = props => {
454
456
  colId: cell.column.id,
455
457
  rowId: nextId
456
458
  });
459
+ notifyArrowRowFocus(table.getRow(nextId).original, 'arrowDown', selectionSettings?.useArrow, rowFocus);
457
460
  const rowQr = document.querySelector(`.ui-rc-grid-row[data-row-key="${nextId}"]`);
458
461
  const cellFocus = rowQr?.querySelector('.ui-rc-grid-cell:not(.ui-rc-grid-cell-selection)');
459
462
  if (cellFocus) {
@@ -467,6 +470,7 @@ const TableBodyCell = props => {
467
470
  colId: cell.column.id,
468
471
  rowId: nextId
469
472
  });
473
+ notifyArrowRowFocus(table.getRow(nextId).original, 'arrowUp', selectionSettings?.useArrow, rowFocus);
470
474
  const rowQr = document.querySelector(`.ui-rc-grid-row[data-row-key="${nextId}"]`);
471
475
  const cellFocus = rowQr?.querySelector('.ui-rc-grid-cell:not(.ui-rc-grid-cell-selection)');
472
476
  if (cellFocus) {
@@ -1,3 +1,4 @@
1
+ import { notifyArrowRowFocus } from "../../grid-component/hooks/rowFocus";
1
2
  import Space from "rc-master-ui/es/space";
2
3
  import Command from "../components/command/Command";
3
4
  import { addRowsDown, addRowsDownWithCtrl, addRowsUp, addRowsUpWithCtrl, findFirst, flattenArray, flattenData, getColIdsBetween, getCommonPinningStyles, getEditType, getRowIdsBetween, getSelectedCellMatrix, isEditable, isObjEmpty, isObjEqual, newGuid, unFlattenData, updateOrInsert } from "../hook/utils";
@@ -195,6 +196,7 @@ const TableBodyCellEdit = props => {
195
196
  editingKey,
196
197
  prefix,
197
198
  focusedCell,
199
+ rowFocus,
198
200
  rangeState,
199
201
  setFocusedCell,
200
202
  setEditingKey,
@@ -803,6 +805,7 @@ const TableBodyCellEdit = props => {
803
805
  rowId: nextRowId,
804
806
  colId
805
807
  });
808
+ notifyArrowRowFocus(table.getRow(nextRowId).original, 'arrowDown', selectionSettings?.useArrow, rowFocus);
806
809
  setStartCell?.({
807
810
  rowId: nextRowId,
808
811
  colId
@@ -850,6 +853,7 @@ const TableBodyCellEdit = props => {
850
853
  rowId: nextRowId,
851
854
  colId
852
855
  });
856
+ notifyArrowRowFocus(table.getRow(nextRowId).original, 'arrowUp', selectionSettings?.useArrow, rowFocus);
853
857
  setStartCell?.({
854
858
  rowId: nextRowId,
855
859
  colId
@@ -1,3 +1,4 @@
1
+ import { notifyArrowRowFocus } from "../../grid-component/hooks/rowFocus";
1
2
  // import ReactDOMServer from 'react-dom/server'
2
3
 
3
4
  import { getCommonPinningStyles } from "../hook/utils";
@@ -15,6 +16,7 @@ const TableBodyCellEmpty = props => {
15
16
  id,
16
17
  prefix,
17
18
  focusedCell,
19
+ rowFocus,
18
20
  setFocusedCell,
19
21
  setIsSelectionChange,
20
22
  isSelectionChange,
@@ -100,6 +102,7 @@ const TableBodyCellEmpty = props => {
100
102
  colId: cell.column.id,
101
103
  rowId: nextId
102
104
  });
105
+ notifyArrowRowFocus(table.getRow(nextId).original, 'arrowDown', selectionSettings?.useArrow, rowFocus);
103
106
  const row = document.querySelector(`.ui-rc-grid-row[data-row-key="${nextId}"]`);
104
107
  const cellFocus = row?.querySelector('.ui-rc-grid-cell:not(.ui-rc-grid-cell-selection)');
105
108
  if (cellFocus) {
@@ -113,6 +116,7 @@ const TableBodyCellEmpty = props => {
113
116
  colId: cell.column.id,
114
117
  rowId: nextId
115
118
  });
119
+ notifyArrowRowFocus(table.getRow(nextId).original, 'arrowUp', selectionSettings?.useArrow, rowFocus);
116
120
  const row = document.querySelector(`.ui-rc-grid-row[data-row-key="${nextId}"]`);
117
121
  const cellFocus = row?.querySelector('.ui-rc-grid-cell:not(.ui-rc-grid-cell-selection)');
118
122
  if (cellFocus) {
@@ -1,4 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { getRowFocusHandlers } from "../../grid-component/hooks/rowFocus";
2
3
  import TableBodyCell from "./TableBodyCell";
3
4
  import TableBodyCellEdit from "./TableBodyCellEdit";
4
5
  import React from "react";
@@ -28,6 +29,7 @@ const TableBodyRow = ({
28
29
  const {
29
30
  prefix,
30
31
  recordDoubleClick,
32
+ rowFocus,
31
33
  focusedCell,
32
34
  rowClassName,
33
35
  rowEditable,
@@ -53,7 +55,7 @@ const TableBodyRow = ({
53
55
  const rowClass = typeof rowClassName === 'function' ? rowClassName(row.original, row.index, row.depth) : rowClassName;
54
56
  const rowStyles = typeof onRowStyles === 'function' ? onRowStyles(row.original, row) : onRowStyles;
55
57
  const isRowEditable = rowEditable ? rowEditable(row.original) : true;
56
- return /*#__PURE__*/React.createElement("div", {
58
+ return /*#__PURE__*/React.createElement("div", _extends({
57
59
  "data-index": virtualRow.index //needed for dynamic row height measurement
58
60
  ,
59
61
  ref: rowVirtualizer.measureElement //measure dynamic row height
@@ -79,7 +81,8 @@ const TableBodyRow = ({
79
81
  height: isEditing ? virtualRow.size : undefined,
80
82
  minHeight: isEditing ? undefined : virtualRow.size,
81
83
  ...rowStyles
82
- },
84
+ }
85
+ }, getRowFocusHandlers(row.original, rowFocus), {
83
86
  onDoubleClick: e => {
84
87
  recordDoubleClick?.({
85
88
  e,
@@ -103,7 +106,7 @@ const TableBodyRow = ({
103
106
  field: colKey
104
107
  })(e);
105
108
  }
106
- }, fixedLeftColumns.length > 0 ? fixedLeftColumns.map(column => {
109
+ }), fixedLeftColumns.length > 0 ? fixedLeftColumns.map(column => {
107
110
  const cell = row.getVisibleCells().find(c => c.column.id === column.id);
108
111
  if (row.subRows && row.subRows.length === 0 && groupColumns?.includes(cell.column.id)) {
109
112
  return /*#__PURE__*/React.createElement(TableBodyCellEmpty, _extends({}, rest, {
@@ -1,3 +1,4 @@
1
+ import { notifyArrowRowFocus } from "../../grid-component/hooks/rowFocus";
1
2
  import Space from "rc-master-ui/es/space";
2
3
  import Command from "../components/command/Command";
3
4
  import { getCommonPinningStyles } from "../hook/utils";
@@ -156,6 +157,7 @@ const TableBodyCell = props => {
156
157
  id,
157
158
  prefix,
158
159
  focusedCell,
160
+ rowFocus,
159
161
  setFocusedCell,
160
162
  // endCell,
161
163
  // startCell,
@@ -434,6 +436,7 @@ const TableBodyCell = props => {
434
436
  colId: cell.column.id,
435
437
  rowId: nextId
436
438
  });
439
+ notifyArrowRowFocus(table.getRow(nextId).original, 'arrowDown', selectionSettings?.useArrow, rowFocus);
437
440
  const rowQr = document.querySelector(`.ui-rc-grid-row[data-row-key="${nextId}"]`);
438
441
  const cellFocus = rowQr?.querySelector('.ui-rc-grid-cell:not(.ui-rc-grid-cell-selection)');
439
442
  if (cellFocus) {
@@ -447,6 +450,7 @@ const TableBodyCell = props => {
447
450
  colId: cell.column.id,
448
451
  rowId: nextId
449
452
  });
453
+ notifyArrowRowFocus(table.getRow(nextId).original, 'arrowUp', selectionSettings?.useArrow, rowFocus);
450
454
  const rowQr = document.querySelector(`.ui-rc-grid-row[data-row-key="${nextId}"]`);
451
455
  const cellFocus = rowQr?.querySelector('.ui-rc-grid-cell:not(.ui-rc-grid-cell-selection)');
452
456
  if (cellFocus) {
@@ -167,7 +167,7 @@ export declare const fixColumnsLeft: <RecordType>(columns: ColumnTable<RecordTyp
167
167
  haveSum?: boolean;
168
168
  isSummary?: boolean;
169
169
  sumGroup?: boolean;
170
- summaryTemplate?: (data: number, key: string) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode;
170
+ summaryTemplate?: (data: number, key: string) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
171
171
  sorter?: boolean;
172
172
  allowFiltering?: boolean;
173
173
  allowSortering?: boolean;
@@ -179,27 +179,27 @@ export declare const fixColumnsLeft: <RecordType>(columns: ColumnTable<RecordTyp
179
179
  showFilterSearch?: boolean;
180
180
  hidden?: boolean;
181
181
  visible?: boolean;
182
- headerTooltip?: string | boolean | (() => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode);
182
+ headerTooltip?: string | boolean | (() => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
183
183
  columnGroupText?: string;
184
184
  headerTextAlign?: import("./../../grid-component/type").ITextAlign;
185
- headerTemplate?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode | ((column: ColumnTable<RecordType>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode);
185
+ headerTemplate?: import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | ((column: ColumnTable<RecordType>) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
186
186
  fixedType?: import("./../../grid-component/type").FixedType;
187
187
  headerTextWrap?: boolean;
188
188
  ellipsis?: boolean;
189
189
  allowResizing?: boolean;
190
190
  align?: import("./../../grid-component/type").ITextAlign;
191
191
  textAlign?: import("./../../grid-component/type").ITextAlign;
192
- template?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode | ((args: import("./../../grid-component/type").ColumnTemplate<RecordType>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode);
193
- linkTemplate?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode | ((args: import("./../../grid-component/type").ColumnTemplate<RecordType>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode);
192
+ template?: import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | ((args: import("./../../grid-component/type").ColumnTemplate<RecordType>) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
193
+ linkTemplate?: import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | ((args: import("./../../grid-component/type").ColumnTemplate<RecordType>) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
194
194
  showTooltip?: boolean;
195
195
  tooltipDescription?: string | ((args: {
196
196
  value: any;
197
197
  rowData: RecordType;
198
- }) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode);
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">);
198
+ }) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
199
+ onCellStyles?: Omit<CSSProperties, "right" | "left" | "position" | "display" | "width" | "minWidth"> | ((cellValue: any, cell: import("@tanstack/react-table").Cell<RecordType, unknown>) => Omit<CSSProperties, "right" | "left" | "position" | "display" | "width" | "minWidth">);
200
+ onCellHeaderStyles?: Omit<CSSProperties, "right" | "left" | "position" | "display" | "width" | "minWidth"> | ((cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "right" | "left" | "position" | "display" | "width" | "minWidth">);
201
201
  onCell?: (rowData: RecordType, index: number) => import("react").TdHTMLAttributes<HTMLTableCellElement>;
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">);
202
+ onCellFooterStyles?: Omit<CSSProperties, "right" | "left" | "position" | "display" | "width" | "minWidth"> | ((cellValue: any, cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "right" | "left" | "position" | "display" | "width" | "minWidth">);
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;
@@ -1,3 +1,4 @@
1
+ import type { RowFocusEventArgs } from "../grid-component/type";
1
2
  import type { Dispatch, SetStateAction } from 'react';
2
3
  import type { ColumnTable, ExpandableConfig, IFormat, IGroupSetting, IWrapSettings, Locale, PaginationConfig, RangeState, RecordDoubleClickEventArgs, RowClassName, SelectionSettings, SourceFilter } from "./../grid-component/type";
3
4
  import type { SubmitHandler } from "react-hook-form";
@@ -19,6 +20,7 @@ export interface IContext<T> {
19
20
  setExpanded: Dispatch<SetStateAction<ExpandedState>>;
20
21
  expanded: ExpandedState;
21
22
  recordDoubleClick?: (args: RecordDoubleClickEventArgs<T>) => void;
23
+ rowFocus?: (args: RowFocusEventArgs<T>) => void;
22
24
  selectionSettings?: SelectionSettings;
23
25
  isSelectionChange?: {
24
26
  isChange: boolean;
package/es/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { default as Dropdown } from './dropdown';
2
2
  export type { DropdownProps as DropDownProps, DropdownProps, } from './dropdown';
3
3
  export { default as GridComponent } from './grid-component';
4
- export type { ColumnsTable, TableProps, ColumnTable, CommandItem, ToolbarItem, ContextMenuItem } from './grid-component';
4
+ export type { ColumnsTable, TableProps, ColumnTable, CommandItem, ToolbarItem, ContextMenuItem, RowFocusEventArgs } from './grid-component';
5
5
  export { default as Tabs } from './tabs';
6
6
  export type { TabPaneProps, TabsProps } from './tabs';
7
7
  export { default as SelectTable } from './select-table';
@@ -29,6 +29,7 @@ const TableContainer = props => {
29
29
  expandable,
30
30
  wrapSettings,
31
31
  recordDoubleClick,
32
+ rowFocus,
32
33
  // triggerFilter,
33
34
  selectionSettings,
34
35
  isSelectionChange,
@@ -325,6 +326,7 @@ const TableContainer = props => {
325
326
  // triggerFilter,
326
327
  wrapSettings,
327
328
  recordDoubleClick,
329
+ rowFocus,
328
330
  recordClick,
329
331
  selectionSettings,
330
332
  isSelectionChange,
@@ -84,6 +84,7 @@ const TableContainerEdit = props => {
84
84
  expandable,
85
85
  wrapSettings,
86
86
  recordDoubleClick,
87
+ rowFocus,
87
88
  selectionSettings,
88
89
  isSelectionChange,
89
90
  setIsSelectionChange,
@@ -2225,6 +2226,7 @@ const TableContainerEdit = props => {
2225
2226
  originData,
2226
2227
  wrapSettings,
2227
2228
  recordDoubleClick,
2229
+ rowFocus,
2228
2230
  selectionSettings,
2229
2231
  isSelectionChange,
2230
2232
  setIsSelectionChange,
@@ -25,9 +25,13 @@ const TableBody = ({
25
25
  locale
26
26
  } = React.useContext(TableContext);
27
27
 
28
+ // Keep measured heights attached to records when expanding, sorting or filtering.
29
+ const getItemKey = React.useCallback(index => rows[index].id, [rows]);
30
+
28
31
  //dynamic row height virtualization - alternatively you could use a simpler fixed row height strategy without the need for `measureElement`
29
32
  const rowVirtualizer = useVirtualizer({
30
33
  count: rows.length,
34
+ getItemKey,
31
35
  estimateSize: () => 32,
32
36
  //estimate row height for accurate scrollbar dragging
33
37
  getScrollElement: () => tableContainerRef.current,
@@ -1,3 +1,4 @@
1
+ import { notifyArrowRowFocus } from "../../grid-component/hooks/rowFocus";
1
2
  import Space from "rc-master-ui/es/space";
2
3
  import Command from "../components/command/Command";
3
4
  import { getCommonPinningStyles, getFormat } from "../hook/utils";
@@ -163,6 +164,7 @@ const TableBodyCell = props => {
163
164
  id,
164
165
  prefix,
165
166
  focusedCell,
167
+ rowFocus,
166
168
  setFocusedCell,
167
169
  // endCell,
168
170
  // startCell,
@@ -443,6 +445,7 @@ const TableBodyCell = props => {
443
445
  colId: cell.column.id,
444
446
  rowId: nextId
445
447
  });
448
+ notifyArrowRowFocus(table.getRow(nextId).original, 'arrowDown', selectionSettings?.useArrow, rowFocus);
446
449
 
447
450
  // if (rowNumber < flatRows.length - 5) {
448
451
  // e.stopPropagation()
@@ -465,6 +468,7 @@ const TableBodyCell = props => {
465
468
  colId: cell.column.id,
466
469
  rowId: nextId
467
470
  });
471
+ notifyArrowRowFocus(table.getRow(nextId).original, 'arrowUp', selectionSettings?.useArrow, rowFocus);
468
472
  const row = document.querySelector(`.ui-rc-grid-row[data-row-key="${nextId}"]`);
469
473
  const cellFocus = row?.querySelector('.ui-rc-grid-cell:not(.ui-rc-grid-cell-selection)');
470
474
  if (cellFocus) {
@@ -1,3 +1,4 @@
1
+ import { notifyArrowRowFocus } from "../../grid-component/hooks/rowFocus";
1
2
  import Space from "rc-master-ui/es/space";
2
3
  import Command from "../components/command/Command";
3
4
  import { addRowsDown, addRowsDownWithCtrl, addRowsUp, addRowsUpWithCtrl, findFirst, flattenArray, flattenData, getColIdsBetween, getCommonPinningStyles, getDragRightData, getEditType, getFormat,
@@ -194,6 +195,7 @@ const TableBodyCellEdit = props => {
194
195
  editingKey,
195
196
  prefix,
196
197
  focusedCell,
198
+ rowFocus,
197
199
  rangeState,
198
200
  setFocusedCell,
199
201
  setEditingKey,
@@ -269,6 +271,7 @@ const TableBodyCellEdit = props => {
269
271
  return selectRowIds.includes(cell.row.id) && colIdss.includes(cell.column.id);
270
272
  }, [cell.column.id, cell.row.id, endCell, selectRowIds, startCell, table]);
271
273
  const editType = typeof columnMeta.editType === 'function' ? columnMeta.editType(record) : columnMeta.editType;
274
+ const isSelectCell = ['select', 'selectTable', 'asyncSelect', 'treeSelect'].includes(editType ?? 'text');
272
275
  const {
273
276
  rowRange,
274
277
  colRange,
@@ -827,6 +830,7 @@ const TableBodyCellEdit = props => {
827
830
  rowId: nextRowId,
828
831
  colId
829
832
  });
833
+ notifyArrowRowFocus(table.getRow(nextRowId).original, 'arrowDown', selectionSettings?.useArrow, rowFocus);
830
834
  setStartCell?.({
831
835
  rowId: nextRowId,
832
836
  colId
@@ -865,6 +869,7 @@ const TableBodyCellEdit = props => {
865
869
  rowId: nextRowId,
866
870
  colId
867
871
  });
872
+ notifyArrowRowFocus(table.getRow(nextRowId).original, 'arrowUp', selectionSettings?.useArrow, rowFocus);
868
873
  setStartCell?.({
869
874
  rowId: nextRowId,
870
875
  colId
@@ -1453,7 +1458,7 @@ const TableBodyCellEdit = props => {
1453
1458
  }, cellContent)))
1454
1459
  }, /*#__PURE__*/React.createElement("div", {
1455
1460
  className: classNames('ui-rc_cell-content', {
1456
- 'select-cell': canEdit && ['select', 'selectTable', 'asyncSelect', 'treeSelect'].includes(getEditType(columnMeta, record))
1461
+ 'select-cell': isSelectCell
1457
1462
  })
1458
1463
  }, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
1459
1464
  className: "ui-rc-table-row-expand-trigger",
@@ -1491,14 +1496,14 @@ const TableBodyCellEdit = props => {
1491
1496
  className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
1492
1497
  })) : /*#__PURE__*/React.createElement("span", {
1493
1498
  className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
1494
- }))), cellContent, (editType === 'select' || editType === 'selectTable' || editType === 'asyncSelect' || editType === 'treeSelect') && canEdit && /*#__PURE__*/React.createElement("span", {
1499
+ }))), cellContent, isSelectCell && canEdit && /*#__PURE__*/React.createElement("span", {
1495
1500
  className: 'caret-down',
1496
1501
  onClick: e => {
1497
1502
  handleEdit(e);
1498
1503
  }
1499
1504
  })))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1500
1505
  className: classNames('ui-rc_cell-content', {
1501
- 'select-cell': canEdit && ['select', 'selectTable', 'asyncSelect', 'treeSelect'].includes(getEditType(columnMeta, record))
1506
+ 'select-cell': isSelectCell
1502
1507
  })
1503
1508
  }, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
1504
1509
  className: "ui-rc-table-row-expand-trigger",
@@ -1536,7 +1541,7 @@ const TableBodyCellEdit = props => {
1536
1541
  className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
1537
1542
  })) : /*#__PURE__*/React.createElement("span", {
1538
1543
  className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
1539
- }))), cellContent, (editType === 'select' || editType === 'selectTable' || editType === 'asyncSelect' || editType === 'treeSelect') && canEdit && /*#__PURE__*/React.createElement("span", {
1544
+ }))), cellContent, isSelectCell && canEdit && /*#__PURE__*/React.createElement("span", {
1540
1545
  className: 'caret-down',
1541
1546
  onClick: e => {
1542
1547
  handleEdit(e);
@@ -1,4 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { getRowFocusHandlers } from "../../grid-component/hooks/rowFocus";
2
3
  import TableBodyCell from "./TableBodyCell";
3
4
  import TableBodyCellEdit from "./TableBodyCellEdit";
4
5
  import React from "react";
@@ -25,6 +26,7 @@ const TableBodyRow = ({
25
26
  const {
26
27
  prefix,
27
28
  recordDoubleClick,
29
+ rowFocus,
28
30
  focusedCell,
29
31
  rowClassName,
30
32
  rowEditable,
@@ -54,10 +56,15 @@ const TableBodyRow = ({
54
56
  isSelected: row.getIsSelected()
55
57
  }) : onRowStyles;
56
58
  const isRowEditable = rowEditable ? rowEditable(row.original) : true;
57
- return /*#__PURE__*/React.createElement("div", {
59
+
60
+ // A reused DOM row needs measuring again when its virtual index changes.
61
+ const measureRow = React.useCallback(element => {
62
+ rowVirtualizer.measureElement(element);
63
+ }, [rowVirtualizer, virtualRow.index]);
64
+ return /*#__PURE__*/React.createElement("div", _extends({
58
65
  "data-index": virtualRow.index //needed for dynamic row height measurement
59
66
  ,
60
- ref: rowVirtualizer.measureElement //measure dynamic row height
67
+ ref: measureRow //measure dynamic row height
61
68
  ,
62
69
  key: row.id,
63
70
  "data-row-key": row.id,
@@ -80,7 +87,8 @@ const TableBodyRow = ({
80
87
  height: isEditing ? virtualRow.size : undefined,
81
88
  minHeight: isEditing ? undefined : virtualRow.size,
82
89
  ...rowStyles
83
- },
90
+ }
91
+ }, getRowFocusHandlers(row.original, rowFocus), {
84
92
  onDoubleClick: e => {
85
93
  recordDoubleClick?.({
86
94
  e,
@@ -99,7 +107,7 @@ const TableBodyRow = ({
99
107
  })(e);
100
108
  // }
101
109
  }
102
- }, fixedLeftColumns.length > 0 ? fixedLeftColumns.map(column => {
110
+ }), fixedLeftColumns.length > 0 ? fixedLeftColumns.map(column => {
103
111
  const cell = row.getVisibleCells().find(c => c.column.id === column.id);
104
112
  if (editAble) {
105
113
  return /*#__PURE__*/React.createElement(TableBodyCellEdit, _extends({}, rest, {
@@ -48,4 +48,4 @@ const colorDark = '#e6e4f3e6 ';
48
48
  export const GridStyle = styled.div.withConfig({
49
49
  displayName: "GridStyle",
50
50
  componentId: "es-grid-template__sc-hdqm5k-0"
51
- })(["--row-height:34px;--color:#333;--bgcolor:white;--body-hover-bgcolor:#f5f5f5;--body-hover-color:#333;--hover-bgcolor:var(--body-hover-bgcolor);--hover-color:var(--body-hover-color);--highlight-bgcolor:#eee;--header-row-height:34px;--header-color:#000000de;--header-bgcolor:#ffffff;--header-hover-bgcolor:#ddd;--header-highlight-bgcolor:#e4e8ed;--cell-padding:7px 8px;--font-size:13px;--line-height:1.28571;--lock-shadow:rgba(152,152,152,0.5) 0 0 6px 2px;--border-color:#dfe3e8;--border-color-select:#eb4619;--cell-border:1px solid var(--border-color);--cell-border-select:1px solid var(--border-color-select);--cell-border-horizontal:var(--cell-border);--cell-border-vertical:var(--cell-border);--header-cell-border:1px solid var(--border-color);--header-cell-border-horizontal:var(--header-cell-border);--header-cell-border-vertical:var(--header-cell-border);--footer-bgcolor:#fafafa;&.", "-grid{color:", ";font-size:", ";background-color:var(--bgcolor);font-family:", ";&.", "-grid-editable{.", "-grid-container{.", "-grid-tbody{.", "-grid-row{background-color:", ";color:", ";&.", "-grid-row-parent{background-color:#ffffff;font-weight:500;}}}}}table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", ";border-right:0;&::after{position:absolute;top:0px;right:0;z-index:1;height:100%;border-right:1px solid ", ";content:'';pointer-events:none;}.", "-grid-cell{padding:5px 8px;&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-right{justify-content:flex-end;text-align:right;}&.", "-grid-cell-link{text-decoration:underline;color:#336cc9;&:has(textarea){text-decoration:none;}}&.editable{.ui-rc_cell-content{height:100%}}&.", "-grid-cell-ellipsis{.ui-rc_cell-content{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;&.select-cell{padding-right:18px;position:relative;}.caret-down{float:right;position:absolute;right:0;&::before{content:'';display:inline-block;margin-left:4px;vertical-align:middle;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #6f7777;}}}}&.", "-grid-cell-wrap{white-space:normal;text-overflow:ellipsis;word-break:break-word;}.", "-grid-header-text-wrap{white-space:normal;overflow:hidden;text-overflow:ellipsis;word-break:break-word;}}.", "-grid-thead{background-color:var(--header-bgcolor);font-weight:", ";.", "-grid-cell{font-weight:inherit;color:", ";background-color:inherit;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;z-index:3;}.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;z-index:3;touch-action:none;user-select:none;width:5px;}.resizer.isResizing{opacity:1;}}}.", "-grid-tbody{.", "-grid-row{font-weight:", ";background-color:var(--bgcolor);color:", ";&.", "-grid-row-odd{background-color:#f9f8fd;}&.", "-grid-row-even{}&.", "-grid-row-parent{background-color:#f5f5f5;font-weight:500;}}}.", "-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:var(--footer-bgcolor);font-weight:600;}.", "-grid-cell{background-color:inherit;border-inline-end:1px solid ", ";}}}&.", "-grid-dark{background-color:", ";color:", ";.", "-grid-container{border-color:", ";&::after{border-right-color:", ";}}}.ui-rc-toolbar-bottom{border-right:1px solid #e0e0e0;border-left:1px solid #e0e0e0;.be-toolbar-item{.ui-rc-btn{font-size:12px;line-height:1.5}.toolbar-dropdown-button{font-size:12px;.ui-rc-btn.ui-rc-btn-default.ui-rc-btn-variant-outlined.ui-rc-btn-compact-item.ui-rc-btn-compact-first-item{border-color:#28c76f;}.ui-rc-btn.ui-rc-btn-default.ui-rc-btn-variant-outlined.ui-rc-btn-compact-item.ui-rc-btn-compact-last-item{border-color:#28c76f;.ui-rc-btn-icon{color:#28c76f;}}}}}.ui-rc-toolbar-bottom_border-bottom{border-bottom:1px solid #e0e0e0;}.ui-rc-toolbar-bottom{position:relative;padding:.15rem 0.5rem;background-color:#ffffff;.toolbar-button{border-radius:3px;}.ui-rc-btn{border-radius:3px;height:28px;&.ui-rc-btn-compact-item.ui-rc-btn-compact-last-item{border-start-start-radius:0;border-end-start-radius:0;}&.ui-rc-btn-compact-item.ui-rc-btn-compact-first-item{border-start-end-radius:0;border-end-end-radius:0;}}}}"], props => props.$prefix, color, fontSize, fontFamily, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : 'var(--bgcolor)'}`, props => `${props.$theme.color ? props.$theme.color : color}`, 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, fwHeader, 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, fwBody, props => `${props.$theme.color ? props.$theme.color : color}`, 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);
51
+ })(["--row-height:34px;--color:#333;--bgcolor:white;--body-hover-bgcolor:#f5f5f5;--body-hover-color:#333;--hover-bgcolor:var(--body-hover-bgcolor);--hover-color:var(--body-hover-color);--highlight-bgcolor:#eee;--header-row-height:34px;--header-color:#000000de;--header-bgcolor:#ffffff;--header-hover-bgcolor:#ddd;--header-highlight-bgcolor:#e4e8ed;--cell-padding:7px 8px;--font-size:13px;--line-height:1.28571;--lock-shadow:rgba(152,152,152,0.5) 0 0 6px 2px;--border-color:#dfe3e8;--border-color-select:#eb4619;--cell-border:1px solid var(--border-color);--cell-border-select:1px solid var(--border-color-select);--cell-border-horizontal:var(--cell-border);--cell-border-vertical:var(--cell-border);--header-cell-border:1px solid var(--border-color);--header-cell-border-horizontal:var(--header-cell-border);--header-cell-border-vertical:var(--header-cell-border);--footer-bgcolor:#fafafa;&.", "-grid{color:", ";font-size:", ";background-color:var(--bgcolor);font-family:", ";&.", "-grid-editable{.", "-grid-container{.", "-grid-tbody{.", "-grid-row{background-color:", ";color:", ";&.", "-grid-row-parent{background-color:#ffffff;font-weight:500;}}}}}table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", ";border-right:0;&::after{position:absolute;top:0px;right:0;z-index:1;height:100%;border-right:1px solid ", ";content:'';pointer-events:none;}.", "-grid-cell{padding:5px 8px;&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-right{justify-content:flex-end;text-align:right;}&.", "-grid-cell-link{text-decoration:underline;color:#336cc9;&:has(textarea){text-decoration:none;}}&.editable{.ui-rc_cell-content{height:100%;}.ui-rc_cell-content.select-cell{--cell-dropdown-width:18px;box-sizing:border-box;width:100%;padding-inline-end:calc(var(--cell-dropdown-width) + 4px);position:relative;.caret-down{position:absolute;inset-inline-end:0;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:var(--cell-dropdown-width);height:16px;cursor:pointer;&::before{content:'';width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #6f7777;}}}}&.", "-grid-cell-ellipsis{.ui-rc_cell-content{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}&.", "-grid-cell-wrap{white-space:normal;text-overflow:ellipsis;word-break:break-word;}.", "-grid-header-text-wrap{white-space:normal;overflow:hidden;text-overflow:ellipsis;word-break:break-word;}}.", "-grid-thead{background-color:var(--header-bgcolor);font-weight:", ";.", "-grid-cell{font-weight:inherit;color:", ";background-color:inherit;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;z-index:3;}.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;z-index:3;touch-action:none;user-select:none;width:5px;}.resizer.isResizing{opacity:1;}}}.", "-grid-tbody{.", "-grid-row{font-weight:", ";background-color:var(--bgcolor);color:", ";&.", "-grid-row-odd{background-color:#f9f8fd;}&.", "-grid-row-even{}&.", "-grid-row-parent{background-color:#f5f5f5;font-weight:500;}}}.", "-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:var(--footer-bgcolor);font-weight:600;}.", "-grid-cell{background-color:inherit;border-inline-end:1px solid ", ";}}}&.", "-grid-dark{background-color:", ";color:", ";.", "-grid-container{border-color:", ";&::after{border-right-color:", ";}}}.ui-rc-toolbar-bottom{border-right:1px solid #e0e0e0;border-left:1px solid #e0e0e0;.be-toolbar-item{.ui-rc-btn{font-size:12px;line-height:1.5}.toolbar-dropdown-button{font-size:12px;.ui-rc-btn.ui-rc-btn-default.ui-rc-btn-variant-outlined.ui-rc-btn-compact-item.ui-rc-btn-compact-first-item{border-color:#28c76f;}.ui-rc-btn.ui-rc-btn-default.ui-rc-btn-variant-outlined.ui-rc-btn-compact-item.ui-rc-btn-compact-last-item{border-color:#28c76f;.ui-rc-btn-icon{color:#28c76f;}}}}}.ui-rc-toolbar-bottom_border-bottom{border-bottom:1px solid #e0e0e0;}.ui-rc-toolbar-bottom{position:relative;padding:.15rem 0.5rem;background-color:#ffffff;.toolbar-button{border-radius:3px;}.ui-rc-btn{border-radius:3px;height:28px;&.ui-rc-btn-compact-item.ui-rc-btn-compact-last-item{border-start-start-radius:0;border-end-start-radius:0;}&.ui-rc-btn-compact-item.ui-rc-btn-compact-first-item{border-start-end-radius:0;border-end-end-radius:0;}}}}"], props => props.$prefix, color, fontSize, fontFamily, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : 'var(--bgcolor)'}`, props => `${props.$theme.color ? props.$theme.color : color}`, 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, fwHeader, 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, fwBody, props => `${props.$theme.color ? props.$theme.color : color}`, 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);
@@ -422,8 +422,12 @@ $cell-index-focus-bg-Dark: #E6EFFD !default;
422
422
  }
423
423
 
424
424
  &.disable {
425
- padding: 7px 8px !important;
425
+ padding: 5px 8px !important;
426
426
  background-color: #f0f0f0;
427
+
428
+ .ui-rc_cell-content {
429
+ height: auto;
430
+ }
427
431
  }
428
432
 
429
433
  &.#{$prefix}-grid-cell-command {
@@ -1196,4 +1200,4 @@ $cell-index-focus-bg-Dark: #E6EFFD !default;
1196
1200
  &:has(input:focus) span {
1197
1201
  border-color: red;
1198
1202
  }
1199
- }
1203
+ }