qbs-react-grid 2.2.16 → 2.2.18

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 (79) hide show
  1. package/dist/css/qbs-react-grid.css +1 -1
  2. package/dist/css/qbs-react-grid.min.css +1 -1
  3. package/dist/css/qbs-react-grid.min.css.map +1 -1
  4. package/es/Cell.js +2 -1
  5. package/es/Pagination.d.ts +3 -0
  6. package/es/Pagination.js +8 -3
  7. package/es/Table.d.ts +3 -0
  8. package/es/Table.js +18 -12
  9. package/es/index.d.ts +1 -1
  10. package/es/index.js +1 -1
  11. package/es/less/pagination.less +9 -9
  12. package/es/less/qbs-table.less +1 -2
  13. package/es/qbsTable/QbsTable.js +110 -73
  14. package/es/qbsTable/TableCardList.js +2 -0
  15. package/es/qbsTable/Toolbar.js +6 -3
  16. package/es/qbsTable/commontypes.d.ts +21 -12
  17. package/es/qbsTable/labels.d.ts +6 -2
  18. package/es/qbsTable/labels.js +10 -1
  19. package/es/qbsTable/utilities/CardComponent.d.ts +2 -0
  20. package/es/qbsTable/utilities/CardComponent.js +7 -3
  21. package/es/qbsTable/utilities/CardMenuDropdown.d.ts +2 -0
  22. package/es/qbsTable/utilities/CardMenuDropdown.js +7 -7
  23. package/es/qbsTable/utilities/SearchInput.d.ts +1 -0
  24. package/es/qbsTable/utilities/SearchInput.js +3 -1
  25. package/es/qbsTable/utilities/empty.js +1 -1
  26. package/es/qbsTable/utilities/tablecalc.d.ts +1 -1
  27. package/es/qbsTable/utilities/tablecalc.js +7 -2
  28. package/es/utils/useCellDescriptor.js +0 -1
  29. package/es/utils/useScrollListener.d.ts +1 -0
  30. package/es/utils/useScrollListener.js +5 -3
  31. package/lib/Cell.js +2 -1
  32. package/lib/Pagination.d.ts +3 -0
  33. package/lib/Pagination.js +8 -3
  34. package/lib/Table.d.ts +3 -0
  35. package/lib/Table.js +18 -12
  36. package/lib/index.d.ts +1 -1
  37. package/lib/index.js +3 -1
  38. package/lib/less/pagination.less +9 -9
  39. package/lib/less/qbs-table.less +1 -2
  40. package/lib/qbsTable/QbsTable.js +110 -73
  41. package/lib/qbsTable/TableCardList.js +2 -0
  42. package/lib/qbsTable/Toolbar.js +6 -3
  43. package/lib/qbsTable/commontypes.d.ts +21 -12
  44. package/lib/qbsTable/labels.d.ts +6 -2
  45. package/lib/qbsTable/labels.js +13 -2
  46. package/lib/qbsTable/utilities/CardComponent.d.ts +2 -0
  47. package/lib/qbsTable/utilities/CardComponent.js +7 -3
  48. package/lib/qbsTable/utilities/CardMenuDropdown.d.ts +2 -0
  49. package/lib/qbsTable/utilities/CardMenuDropdown.js +6 -5
  50. package/lib/qbsTable/utilities/SearchInput.d.ts +1 -0
  51. package/lib/qbsTable/utilities/SearchInput.js +3 -1
  52. package/lib/qbsTable/utilities/empty.js +1 -1
  53. package/lib/qbsTable/utilities/tablecalc.d.ts +1 -1
  54. package/lib/qbsTable/utilities/tablecalc.js +7 -2
  55. package/lib/utils/useCellDescriptor.js +0 -1
  56. package/lib/utils/useScrollListener.d.ts +1 -0
  57. package/lib/utils/useScrollListener.js +5 -3
  58. package/package.json +2 -2
  59. package/src/Cell.tsx +3 -1
  60. package/src/HeaderCell.tsx +0 -1
  61. package/src/Pagination.tsx +10 -3
  62. package/src/Table.tsx +23 -10
  63. package/src/customSelect.tsx +88 -88
  64. package/src/index.ts +2 -0
  65. package/src/less/pagination.less +9 -9
  66. package/src/less/qbs-table.less +1 -2
  67. package/src/qbsTable/QbsTable.tsx +84 -39
  68. package/src/qbsTable/TableCardList.tsx +2 -0
  69. package/src/qbsTable/Toolbar.tsx +4 -2
  70. package/src/qbsTable/commontypes.ts +21 -12
  71. package/src/qbsTable/labels.ts +9 -2
  72. package/src/qbsTable/utilities/CardComponent.tsx +7 -2
  73. package/src/qbsTable/utilities/CardMenuDropdown.tsx +11 -6
  74. package/src/qbsTable/utilities/SearchInput.tsx +3 -1
  75. package/src/qbsTable/utilities/empty.tsx +2 -2
  76. package/src/qbsTable/utilities/tablecalc.ts +8 -2
  77. package/src/utils/useCellDescriptor.ts +0 -1
  78. package/src/utils/useScrollListener.ts +13 -3
  79. package/src/utils/useTableRows.ts +1 -1
package/es/Pagination.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import CustomSelect from './customSelect';
3
+ import { mergeLabels } from './qbsTable/labels';
3
4
  import { getRowDisplayRange } from './qbsTable/utilities/tablecalc';
4
5
 
5
6
  // Import the custom select component
@@ -35,7 +36,10 @@ var PageIndex = function PageIndex(_ref) {
35
36
  return /*#__PURE__*/React.createElement(React.Fragment, null, renderPageNumbers());
36
37
  };
37
38
  var Pagination = function Pagination(_ref2) {
38
- var paginationProps = _ref2.paginationProps;
39
+ var paginationProps = _ref2.paginationProps,
40
+ labelsProp = _ref2.labels,
41
+ dataTheme = _ref2.dataTheme;
42
+ var labels = mergeLabels(labelsProp);
39
43
  var _paginationProps$drop = paginationProps.dropOptions,
40
44
  dropOptions = _paginationProps$drop === void 0 ? [10, 20, 50, 100, 200] : _paginationProps$drop,
41
45
  _paginationProps$curr = paginationProps.currentPage,
@@ -76,13 +80,14 @@ var Pagination = function Pagination(_ref2) {
76
80
  };
77
81
  return /*#__PURE__*/React.createElement("div", {
78
82
  className: "qbs-table-custom-pagination",
83
+ "data-theme": dataTheme,
79
84
  style: {
80
85
  display: 'flex',
81
86
  justifyContent: 'space-between'
82
87
  }
83
88
  }, /*#__PURE__*/React.createElement("div", {
84
89
  className: "rows-count"
85
- }, getRowDisplayRange(total, rowsPerPageState, currentPage)), /*#__PURE__*/React.createElement("div", {
90
+ }, getRowDisplayRange(total, rowsPerPageState, currentPage, labels.showingRange)), /*#__PURE__*/React.createElement("div", {
86
91
  className: "qbs-table-pagination-right-block"
87
92
  }, /*#__PURE__*/React.createElement("button", {
88
93
  className: "qbs-table-icon-container",
@@ -161,7 +166,7 @@ var Pagination = function Pagination(_ref2) {
161
166
  className: "qbs-table-pagination-flexBox"
162
167
  }, /*#__PURE__*/React.createElement("span", {
163
168
  className: "qbs-table-pagination-text"
164
- }, "Items per page"), /*#__PURE__*/React.createElement(CustomSelect, {
169
+ }, labels.itemsPerPage), /*#__PURE__*/React.createElement(CustomSelect, {
165
170
  options: dropData,
166
171
  selectedValue: rowsPerPageState,
167
172
  onChange: handleRowsPerPage
package/es/Table.d.ts CHANGED
@@ -99,6 +99,7 @@ export interface TableProps<Row, Key> extends Omit<StandardProps, 'onScroll'> {
99
99
  /** Tree table, the callback function in the expanded node */
100
100
  renderTreeToggle?: (expandButton: React.ReactNode, rowData?: Row, expanded?: boolean) => React.ReactNode;
101
101
  tableKey?: string;
102
+ infiniteLoading?: boolean;
102
103
  /** Customize what you can do to expand a zone */
103
104
  renderRowExpanded?: (rowData?: Row) => React.ReactNode;
104
105
  /** Custom row element */
@@ -123,6 +124,7 @@ export interface TableProps<Row, Key> extends Omit<StandardProps, 'onScroll'> {
123
124
  onTouchMove?: (event: React.TouchEvent) => void;
124
125
  /** Callback for the `touchend` event. */
125
126
  onTouchEnd?: (event: React.TouchEvent) => void;
127
+ handleInfiniteScroll?: (value: number) => void;
126
128
  /**
127
129
  * Callback after table data update.
128
130
  * @deprecated use `shouldUpdateScroll` instead
@@ -132,6 +134,7 @@ export interface TableProps<Row, Key> extends Omit<StandardProps, 'onScroll'> {
132
134
  y: number;
133
135
  }) => void) => void;
134
136
  tableBodyRef: React.RefObject<HTMLDivElement>;
137
+ wheelWrapperRef: React.RefObject<HTMLDivElement | null>;
135
138
  bodyRef?: (ref: HTMLElement) => void;
136
139
  }
137
140
  export interface TableInstance<Row, Key> extends React.FunctionComponent<TableProps<Row, Key>> {
package/es/Table.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- var _excluded = ["affixHeader", "children", "classPrefix", "className", "data", "defaultSortType", "width", "expandedRowKeys", "defaultExpandAllRows", "defaultExpandedRowKeys", "style", "id", "isTree", "hover", "bordered", "cellBordered", "wordWrap", "loading", "locale", "showHeader", "pagination", "paginationProps", "sortColumn", "rowHeight", "sortType", "headerHeight", "minHeight", "height", "autoHeight", "fillHeight", "rtl", "translate3d", "rowKey", "virtualized", "rowClassName", "rowExpandedHeight", "disabledScroll", "affixHorizontalScrollbar", "loadAnimation", "shouldUpdateScroll", "renderRow", "renderRowExpanded", "renderLoading", "renderEmpty", "onSortColumn", "onScroll", "renderTreeToggle", "onRowClick", "onRowContextMenu", "onExpandChange", "onTouchStart", "onTouchMove", "onTouchEnd", "dataTheme", "tableBodyHeight", "columns", "tableBodyRef", "tableKey"],
3
+ var _excluded = ["affixHeader", "children", "classPrefix", "className", "data", "defaultSortType", "width", "expandedRowKeys", "defaultExpandAllRows", "defaultExpandedRowKeys", "style", "id", "isTree", "hover", "bordered", "cellBordered", "wordWrap", "loading", "locale", "showHeader", "sortColumn", "rowHeight", "sortType", "headerHeight", "minHeight", "height", "autoHeight", "fillHeight", "rtl", "translate3d", "rowKey", "virtualized", "rowClassName", "rowExpandedHeight", "disabledScroll", "affixHorizontalScrollbar", "loadAnimation", "shouldUpdateScroll", "renderRow", "renderRowExpanded", "renderLoading", "renderEmpty", "onSortColumn", "onScroll", "renderTreeToggle", "onRowClick", "onRowContextMenu", "onExpandChange", "onTouchStart", "onTouchMove", "onTouchEnd", "tableBodyHeight", "columns", "tableBodyRef", "tableKey", "handleInfiniteScroll", "infiniteLoading", "wheelWrapperRef"],
4
4
  _excluded2 = ["depth", "rowIndex"],
5
5
  _excluded3 = ["cellHeight"];
6
6
  import { getTranslateDOMPositionXY } from 'dom-lib/translateDOMPositionXY';
@@ -70,10 +70,6 @@ var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
70
70
  } : _props$locale,
71
71
  _props$showHeader = props.showHeader,
72
72
  showHeader = _props$showHeader === void 0 ? true : _props$showHeader,
73
- _props$pagination = props.pagination,
74
- pagination = _props$pagination === void 0 ? true : _props$pagination,
75
- _props$paginationProp = props.paginationProps,
76
- paginationProps = _props$paginationProp === void 0 ? {} : _props$paginationProp,
77
73
  sortColumn = props.sortColumn,
78
74
  _props$rowHeight = props.rowHeight,
79
75
  rowHeight = _props$rowHeight === void 0 ? ROW_HEIGHT : _props$rowHeight,
@@ -111,18 +107,19 @@ var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
111
107
  onTouchStart = props.onTouchStart,
112
108
  onTouchMove = props.onTouchMove,
113
109
  onTouchEnd = props.onTouchEnd,
114
- dataTheme = props.dataTheme,
115
110
  tableBodyHeight = props.tableBodyHeight,
116
111
  columns = props.columns,
117
112
  tableBodyRef = props.tableBodyRef,
118
113
  tableKey = props.tableKey,
114
+ handleInfiniteScroll = props.handleInfiniteScroll,
115
+ infiniteLoading = props.infiniteLoading,
116
+ wheelWrapperRef = props.wheelWrapperRef,
119
117
  rest = _objectWithoutPropertiesLoose(props, _excluded);
120
118
  var _useClassNames = useClassNames(classPrefix, typeof classPrefix !== 'undefined'),
121
119
  withClassPrefix = _useClassNames.withClassPrefix,
122
120
  mergeCls = _useClassNames.merge,
123
121
  prefix = _useClassNames.prefix;
124
122
  var childTableRef = useRef(null);
125
-
126
123
  // Use `forceUpdate` to force the component to re-render after manipulating the DOM.
127
124
  var _useReducer = useReducer(function (x) {
128
125
  return x + 1;
@@ -181,7 +178,6 @@ var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
181
178
  var affixHeaderWrapperRef = useRef(null);
182
179
  var headerWrapperRef = useRef(null);
183
180
  // const tableBodyRef = useRef<HTMLDivElement>(null);
184
- var wheelWrapperRef = useRef(null);
185
181
  var scrollbarXRef = useRef(null);
186
182
  var scrollbarYRef = useRef(null);
187
183
  var handleTableResizeChange = function handleTableResizeChange(_prevSize, event) {
@@ -293,7 +289,8 @@ var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
293
289
  onScroll: onScroll,
294
290
  onTouchStart: onTouchStart,
295
291
  onTouchMove: onTouchMove,
296
- onTouchEnd: onTouchEnd
292
+ onTouchEnd: onTouchEnd,
293
+ handleInfiniteScroll: handleInfiniteScroll
297
294
  }),
298
295
  isScrolling = _useScrollListener.isScrolling,
299
296
  isChildFocused = _useScrollListener.isChildFocused,
@@ -617,7 +614,9 @@ var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
617
614
  width: tableWidth.current
618
615
  },
619
616
  length: tableWidth.current,
620
- onScroll: onScrollHorizontal,
617
+ onScroll: function onScroll(delta) {
618
+ onScrollHorizontal(delta);
619
+ },
621
620
  scrollLength: contentWidth.current,
622
621
  ref: scrollbarXRef
623
622
  }));
@@ -781,7 +780,9 @@ var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
781
780
  role: "rowgroup",
782
781
  className: prefix('body-row-wrapper'),
783
782
  style: bodyStyles,
784
- onScroll: onScrollBody
783
+ onScroll: function onScroll(e) {
784
+ onScrollBody === null || onScrollBody === void 0 ? void 0 : onScrollBody(e); // existing handler
785
+ }
785
786
  }, !loading && /*#__PURE__*/React.createElement("div", {
786
787
  style: wheelStyles,
787
788
  className: prefix('body-wheel-area'),
@@ -792,7 +793,12 @@ var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
792
793
  }) : null, visibleRows.current, bottomHideHeight ? /*#__PURE__*/React.createElement(Row, {
793
794
  style: bottomRowStyles,
794
795
  className: "virtualized"
795
- }) : null), /*#__PURE__*/React.createElement(EmptyMessage, {
796
+ }) : null, infiniteLoading && /*#__PURE__*/React.createElement("div", {
797
+ style: {
798
+ padding: 12,
799
+ textAlign: 'center'
800
+ }
801
+ }, /*#__PURE__*/React.createElement("span", null, "Loading more rows\u2026"))), /*#__PURE__*/React.createElement(EmptyMessage, {
796
802
  locale: locale,
797
803
  renderEmpty: renderEmpty,
798
804
  addPrefix: prefix,
package/es/index.d.ts CHANGED
@@ -13,5 +13,5 @@ export type { HeaderCellProps } from './HeaderCell';
13
13
  export type { ColumnGroupProps } from './ColumnGroup';
14
14
  export type { QbsTableProps } from './qbsTable/commontypes';
15
15
  export type { QbsTableLabels } from './qbsTable/labels';
16
- export { mergeQbsTableLabels, defaultQbsTableLabels, formatSelectedItems, } from './qbsTable/labels';
16
+ export { mergeQbsTableLabels, mergeLabels, defaultQbsTableLabels, DEFAULT_QBS_TABLE_LABELS, formatSelectedItems, } from './qbsTable/labels';
17
17
  export type { StandardProps, SortType, RowDataType, RowKeyType, TableSizeChangeEventName } from './@types/common';
package/es/index.js CHANGED
@@ -5,4 +5,4 @@ export { default as Cell } from './Cell';
5
5
  export { default as HeaderCell } from './HeaderCell';
6
6
  export { default as ColumnGroup } from './ColumnGroup';
7
7
  export { default as Pagination } from './Pagination';
8
- export { mergeQbsTableLabels, defaultQbsTableLabels, formatSelectedItems } from './qbsTable/labels';
8
+ export { mergeQbsTableLabels, mergeLabels, defaultQbsTableLabels, DEFAULT_QBS_TABLE_LABELS, formatSelectedItems } from './qbsTable/labels';
@@ -5,8 +5,8 @@
5
5
  min-height: 40px;
6
6
  align-items: center;
7
7
  border-radius: 0 0 4px 4px;
8
- border-top: 1px solid #d6d8dc;
9
- background: #fff;
8
+ border-top: 1px solid var(--base-gray-border, #d6d8dc);
9
+ background: var(--table-bg, #fff);
10
10
  &-header {
11
11
  border-bottom: 1px solid #eee;
12
12
  position: absolute;
@@ -27,8 +27,8 @@
27
27
  font-weight: 500;
28
28
  line-height: 20px;
29
29
  border-radius: 6px;
30
- border: 1px solid #d6d8dc;
31
- background: #fff;
30
+ border: 1px solid var(--base-gray-border, #d6d8dc);
31
+ background: var(--gray-light-1, #fff);
32
32
  }
33
33
  .qbs-table-icon-container {
34
34
  padding: 0;
@@ -109,7 +109,7 @@
109
109
  font-style: normal;
110
110
  font-weight: 500;
111
111
  line-height: 20px;
112
- color: #313131;
112
+ color: var(--gray-dark-3, #313131);
113
113
  }
114
114
  }
115
115
 
@@ -125,7 +125,7 @@
125
125
  .custom-select-trigger {
126
126
  padding: 2px 8px;
127
127
  cursor: pointer;
128
- border: 1px solid #d6d8dc;
128
+ border: 1px solid var(--base-gray-border, #d6d8dc);
129
129
  border-radius: 4px;
130
130
  min-width: 65px;
131
131
  position: relative;
@@ -140,7 +140,7 @@
140
140
  list-style: none;
141
141
  margin: 2px 0 0;
142
142
  padding: 0;
143
- background: #fff;
143
+ background: var(--gray-light-1, #fff);
144
144
  border-radius: 8px;
145
145
  box-shadow: 0 8px 20px 0 #00000026;
146
146
  }
@@ -158,7 +158,7 @@ ul.custom-select-options.top {
158
158
 
159
159
  .custom-select-option:hover,
160
160
  .custom-select-option.selected {
161
- background-color: #f0f0f0;
161
+ background-color: var(--table-row-hover-bg, #f0f0f0);
162
162
  }
163
163
 
164
164
  .custom-select-trigger:before {
@@ -167,7 +167,7 @@ ul.custom-select-options.top {
167
167
  right: 10px;
168
168
  top: 6px;
169
169
  font-weight: bold;
170
- border: solid black;
170
+ border: solid var(--gray-dark-3, black);
171
171
  border-width: 0 1px 1px 0;
172
172
  display: inline-block;
173
173
  padding: 3px;
@@ -644,8 +644,7 @@
644
644
  }
645
645
 
646
646
  .qbs-table-column-popup--rtl .qbs-table-container .qbs-table-checkbox {
647
- flex: 0 0 28px;
648
- min-width: 28px;
647
+ margin-left: 12px;
649
648
  }
650
649
 
651
650
  .qbs-table-reset-link {
@@ -6,6 +6,7 @@ import ColumnGroup from '../ColumnGroup';
6
6
  import HeaderCell from '../HeaderCell';
7
7
  import Pagination from '../Pagination';
8
8
  import Table from '../Table';
9
+ import isRTL from '../utils/isRTL';
9
10
  import useResponsiveStore from '../utils/useResponsiveStore';
10
11
  import { mergeQbsTableLabels } from './labels';
11
12
  import { ActionCell, CheckCell, CustomRowStatus, CustomTableCell, ExpandCell } from './CustomTableCell';
@@ -23,6 +24,7 @@ import { SettingsIcon } from './utilities/icons';
23
24
  import '../../dist/css/qbs-react-grid.css';
24
25
  var CHECKBOX_LINE_HEIGHT = '36px';
25
26
  var COLUMN_WIDTH = 250;
27
+ var REFRESH_KEY = 0;
26
28
  var QbsTable = function QbsTable(_ref) {
27
29
  var _Object$keys;
28
30
  var handleColumnSort = _ref.handleColumnSort,
@@ -53,7 +55,7 @@ var QbsTable = function QbsTable(_ref) {
53
55
  _ref$height = _ref.height,
54
56
  height = _ref$height === void 0 ? 630 : _ref$height,
55
57
  onExpandChange = _ref.onExpandChange,
56
- wordWrap = _ref.wordWrap,
58
+ propsWordWrap = _ref.wordWrap,
57
59
  _ref$dataRowKey = _ref.dataRowKey,
58
60
  dataRowKey = _ref$dataRowKey === void 0 ? 'id' : _ref$dataRowKey,
59
61
  defaultExpandAllRows = _ref.defaultExpandAllRows,
@@ -65,6 +67,7 @@ var QbsTable = function QbsTable(_ref) {
65
67
  _ref$actionProps = _ref.actionProps,
66
68
  actionProps = _ref$actionProps === void 0 ? [] : _ref$actionProps,
67
69
  theme = _ref.theme,
70
+ rtlProp = _ref.rtl,
68
71
  handleMenuActions = _ref.handleMenuActions,
69
72
  onRowClick = _ref.onRowClick,
70
73
  expandedRowKeys = _ref.expandedRowKeys,
@@ -108,10 +111,11 @@ var QbsTable = function QbsTable(_ref) {
108
111
  isCustomTableCardView = _ref$isCustomTableCar === void 0 ? false : _ref$isCustomTableCar,
109
112
  handleTableCardView = _ref.handleTableCardView,
110
113
  handleCustomCardLoader = _ref.handleCustomCardLoader,
111
- dropType = _ref.dropType,
112
- labelsProp = _ref.labels,
113
- _ref$rtl = _ref.rtl,
114
- rtl = _ref$rtl === void 0 ? false : _ref$rtl,
114
+ hasMoreData = _ref.hasMoreData,
115
+ loadMoreData = _ref.loadMoreData,
116
+ infiniteLoading = _ref.infiniteLoading,
117
+ _ref$infiniteScroll = _ref.infiniteScroll,
118
+ infiniteScroll = _ref$infiniteScroll === void 0 ? false : _ref$infiniteScroll,
115
119
  _ref$rowViewToggle = _ref.rowViewToggle,
116
120
  rowViewToggle = _ref$rowViewToggle === void 0 ? false : _ref$rowViewToggle,
117
121
  _ref$defaultRowView = _ref.defaultRowView,
@@ -120,43 +124,50 @@ var QbsTable = function QbsTable(_ref) {
120
124
  fullWidthView = _ref$fullWidthView === void 0 ? false : _ref$fullWidthView,
121
125
  setTableFullView = _ref.setTableFullView,
122
126
  setRowViewToggle = _ref.setRowViewToggle,
123
- _ref$isFullScreen = _ref.isFullScreen,
124
- isFullScreen = _ref$isFullScreen === void 0 ? false : _ref$isFullScreen,
127
+ _ref$dropType = _ref.dropType,
128
+ dropType = _ref$dropType === void 0 ? 'horizondal' : _ref$dropType,
125
129
  rowHeight = _ref.rowHeight,
130
+ isFullScreen = _ref.isFullScreen,
126
131
  _ref$showHeader = _ref.showHeader,
127
- showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader;
132
+ showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
133
+ labelsProp = _ref.labels;
128
134
  var labels = useMemo(function () {
129
135
  return mergeQbsTableLabels(labelsProp);
130
136
  }, [labelsProp]);
131
- var effectiveWordWrap = useMemo(function () {
132
- if (!rowViewToggle) return wordWrap;
133
- return defaultRowView ? false : 'break-word';
134
- }, [rowViewToggle, defaultRowView, wordWrap]);
135
- var _useState = useState(false),
136
- loading = _useState[0],
137
- setLoading = _useState[1];
138
- var _useState2 = useState(propColumn),
139
- columns = _useState2[0],
140
- setColumns = _useState2[1];
141
- var _useState3 = useState([]),
142
- checkedKeys = _useState3[0],
143
- setCheckedKeys = _useState3[1];
137
+ var _useState = useState(0),
138
+ rowViewRefreshKey = _useState[0],
139
+ setRowViewRefreshKey = _useState[1];
140
+ var _useState2 = useState(false),
141
+ loading = _useState2[0],
142
+ setLoading = _useState2[1];
143
+ var _useState3 = useState(propColumn),
144
+ columns = _useState3[0],
145
+ setColumns = _useState3[1];
146
+ var _useState4 = useState([]),
147
+ checkedKeys = _useState4[0],
148
+ setCheckedKeys = _useState4[1];
144
149
  var dataTheme = useMemo(function () {
145
- var _localStorage$getItem;
146
- return (_localStorage$getItem = localStorage.getItem('theme')) != null ? _localStorage$getItem : theme;
150
+ var _ref2;
151
+ return (_ref2 = theme != null ? theme : typeof localStorage !== 'undefined' ? localStorage.getItem('theme') : null) != null ? _ref2 : 'light';
147
152
  }, [theme]);
148
- var _useState4 = useState(false),
149
- isOpen = _useState4[0],
150
- setIsOpen = _useState4[1];
153
+ var rtl = rtlProp != null ? rtlProp : isRTL();
154
+ var _useState5 = useState(false),
155
+ isOpen = _useState5[0],
156
+ setIsOpen = _useState5[1];
151
157
  var prevColumns = useRef(null);
152
- var _useState5 = useState(tableView),
153
- tableViewToggle = _useState5[0],
154
- setTableViewToggle = _useState5[1];
158
+ var _useState6 = useState(tableView),
159
+ tableViewToggle = _useState6[0],
160
+ setTableViewToggle = _useState6[1];
155
161
  var isMobile = useResponsiveStore();
156
162
  var tableBodyRef = useRef(null);
157
- var _useState6 = useState(0),
158
- rowViewRefreshKey = _useState6[0],
159
- setRowViewRefreshKey = _useState6[1];
163
+ var wheelWrapperRef = useRef(null);
164
+ var _useState7 = useState(propsWordWrap != null ? propsWordWrap : false),
165
+ wordWrap = _useState7[0],
166
+ setWordWrap = _useState7[1];
167
+ var effectiveWordWrap = useMemo(function () {
168
+ if (!rowViewToggle) return wordWrap;
169
+ return defaultRowView ? false : 'break-word';
170
+ }, [rowViewToggle, defaultRowView, wordWrap]);
160
171
  useEffect(function () {
161
172
  if (rowViewToggle) {
162
173
  setRowViewRefreshKey(function (key) {
@@ -203,12 +214,6 @@ var QbsTable = function QbsTable(_ref) {
203
214
  handleChecked(updatedKeys);
204
215
  }
205
216
  }, [checkedKeys]);
206
- var rowKeyField = dataRowKey != null ? dataRowKey : 'id';
207
- var getRowClassName = useCallback(function (rowData) {
208
- if (!selection) return '';
209
- var key = rowData === null || rowData === void 0 ? void 0 : rowData[rowKeyField];
210
- return key !== undefined && checkedKeys !== null && checkedKeys !== void 0 && checkedKeys.includes(key) ? 'qbs-table-row-checked' : '';
211
- }, [selection, checkedKeys, rowKeyField]);
212
217
  var handleToggle = useCallback(function (columnName) {
213
218
  var lastVisibleColumn = null;
214
219
  var visibleCount = 0;
@@ -239,6 +244,7 @@ var QbsTable = function QbsTable(_ref) {
239
244
  }, [columns]);
240
245
  var handleColumnWidth = useCallback(function (newWidth, dataKey) {
241
246
  if (newWidth === undefined || dataKey === undefined) return;
247
+ REFRESH_KEY = REFRESH_KEY + 1;
242
248
  setColumns(function (prevColumns) {
243
249
  return prevColumns.map(function (column) {
244
250
  return column.field === dataKey ? _extends({}, column, {
@@ -258,14 +264,21 @@ var QbsTable = function QbsTable(_ref) {
258
264
  });
259
265
  }
260
266
  }, [wordWrap]);
267
+ useEffect(function () {
268
+ if (!defaultRowView) {
269
+ setWordWrap('break-word');
270
+ } else {
271
+ setWordWrap(false);
272
+ }
273
+ REFRESH_KEY = REFRESH_KEY + 1;
274
+ }, [defaultRowView]);
261
275
  var onReorder = useCallback(function (columns) {
262
276
  setColumns(columns);
263
277
  }, []);
264
278
 
265
279
  // useEffect(() => {
266
280
  // }, [columns]);
267
-
268
- var handleClear = function handleClear(_ref2) {
281
+ var handleClear = function handleClear(_ref3) {
269
282
  setCheckedKeys([]);
270
283
  handleChecked([]);
271
284
  };
@@ -304,10 +317,16 @@ var QbsTable = function QbsTable(_ref) {
304
317
  labels: labels,
305
318
  rtl: rtl
306
319
  };
320
+ useEffect(function () {
321
+ if (!dataTheme || typeof document === 'undefined') return;
322
+ document.body.setAttribute('data-theme', dataTheme === 'dark' ? 'dark' : 'light');
323
+ document.documentElement.dataset.theme = dataTheme;
324
+ }, [dataTheme]);
307
325
  var themeToggle = useMemo(function () {
308
- return document.getElementById('themeToggle');
326
+ return typeof document !== 'undefined' ? document.getElementById('themeToggle') : null;
309
327
  }, []);
310
328
  useEffect(function () {
329
+ if (theme || typeof document === 'undefined') return;
311
330
  var handleThemeToggle = function handleThemeToggle() {
312
331
  if (themeToggle !== null && themeToggle !== void 0 && themeToggle.checked) {
313
332
  document.body.setAttribute('data-theme', 'dark');
@@ -329,9 +348,8 @@ var QbsTable = function QbsTable(_ref) {
329
348
  themeToggle === null || themeToggle === void 0 ? void 0 : themeToggle.removeEventListener('change', handleThemeToggle);
330
349
  document.removeEventListener('DOMContentLoaded', handleDOMContentLoaded);
331
350
  };
332
- }, [themeToggle]);
351
+ }, [theme, themeToggle]);
333
352
  var handleExpanded = useCallback(function (rowData) {
334
- console.log(rowData);
335
353
  var keyValue = dataRowKey;
336
354
  var key = rowData[keyValue];
337
355
  var nextExpandedRowKeys = new Set(expandedRowKeys);
@@ -506,26 +524,26 @@ var QbsTable = function QbsTable(_ref) {
506
524
  // [columns, dataTheme]
507
525
  // );
508
526
  var columnsRendered = useMemo(function () {
509
- return (columns != null ? columns : []).map(function (_ref3) {
510
- var title = _ref3.title,
511
- field = _ref3.field,
512
- resizable = _ref3.resizable,
513
- sortable = _ref3.sortable,
514
- colWidth = _ref3.colWidth,
515
- align = _ref3.align,
516
- grouped = _ref3.grouped,
517
- groupHeader = _ref3.groupHeader,
518
- fixed = _ref3.fixed,
519
- children = _ref3.children,
520
- customCell = _ref3.customCell,
521
- renderCell = _ref3.renderCell,
522
- isVisible = _ref3.isVisible,
523
- link = _ref3.link,
524
- getPath = _ref3.getPath,
525
- rowClick = _ref3.rowClick,
526
- sortKey = _ref3.sortKey,
527
- type = _ref3.type,
528
- hideLink = _ref3.hideLink;
527
+ return (columns != null ? columns : []).map(function (_ref4) {
528
+ var title = _ref4.title,
529
+ field = _ref4.field,
530
+ resizable = _ref4.resizable,
531
+ sortable = _ref4.sortable,
532
+ colWidth = _ref4.colWidth,
533
+ align = _ref4.align,
534
+ grouped = _ref4.grouped,
535
+ groupHeader = _ref4.groupHeader,
536
+ fixed = _ref4.fixed,
537
+ children = _ref4.children,
538
+ customCell = _ref4.customCell,
539
+ renderCell = _ref4.renderCell,
540
+ isVisible = _ref4.isVisible,
541
+ link = _ref4.link,
542
+ getPath = _ref4.getPath,
543
+ rowClick = _ref4.rowClick,
544
+ sortKey = _ref4.sortKey,
545
+ type = _ref4.type,
546
+ hideLink = _ref4.hideLink;
529
547
  return isVisible ? grouped ? /*#__PURE__*/React.createElement(ColumnGroup, {
530
548
  header: groupHeader,
531
549
  fixed: fixed,
@@ -593,41 +611,57 @@ var QbsTable = function QbsTable(_ref) {
593
611
  },
594
612
  // ✅ Fix: Type assertion to ReactElement[]
595
613
  [columns, dataTheme]);
614
+ var handleInfiniteScroll = function handleInfiniteScroll(scroll) {
615
+ if (!infiniteScroll) return;
616
+ var wrapper = wheelWrapperRef.current;
617
+ if (!wrapper || !hasMoreData || infiniteLoading) return;
618
+ var scrollTop = wrapper.scrollTop,
619
+ clientHeight = wrapper.clientHeight;
620
+ var scrollHeight = Math.abs(scroll) + (height - headerHeight);
621
+ // Trigger fetch when user scrolls within 100px of bottom
622
+ if (scrollTop + clientHeight >= scrollHeight - 70) {
623
+ loadMoreData === null || loadMoreData === void 0 ? void 0 : loadMoreData(); // fetch next page here
624
+ }
625
+ };
596
626
  return /*#__PURE__*/React.createElement("div", {
597
627
  className: "qbs-table " + classes.tableContainerClass,
598
- "data-theme": dataTheme
628
+ "data-theme": dataTheme,
629
+ dir: rtl ? 'rtl' : 'ltr'
599
630
  }, toolbar && /*#__PURE__*/React.createElement(ToolBar, toolbarProps), /*#__PURE__*/React.createElement("div", {
600
631
  className: "qbs-table-border-wrap"
601
632
  }, tableViewToggle ? /*#__PURE__*/React.createElement(Table, {
602
633
  height: autoHeight ? undefined : height,
603
634
  key: tableKey + "-" + rowViewRefreshKey,
604
635
  tableKey: tableKey,
605
- rtl: rtl,
606
636
  data: data,
637
+ rtl: rtl,
607
638
  tableBodyRef: tableBodyRef,
608
639
  dataTheme: dataTheme,
609
640
  wordWrap: effectiveWordWrap,
641
+ wheelWrapperRef: wheelWrapperRef,
642
+ rowHeight: rowHeight,
610
643
  autoHeight: autoHeight,
644
+ handleInfiniteScroll: handleInfiniteScroll,
611
645
  sortColumn: sortColumn,
612
646
  style: {
613
647
  position: 'relative'
614
648
  },
615
649
  sortType: sortType,
616
650
  onSortColumn: handleSortColumn,
651
+ infiniteLoading: infiniteLoading,
617
652
  onRowClick: onRowClick,
618
653
  tableBodyHeight: tableBodyHeight,
619
654
  cellBordered: cellBordered,
620
655
  bordered: bordered,
621
656
  renderEmpty: function renderEmpty(info) {
622
657
  return _renderEmpty ? _renderEmpty(info) : /*#__PURE__*/React.createElement(NoData, {
623
- title: emptyTitle != null ? emptyTitle : 'No Data Found',
658
+ title: emptyTitle != null ? emptyTitle : labels.noDataFound,
624
659
  subtitle: emptySubTitle
625
660
  });
626
661
  },
627
662
  columns: columns,
628
663
  minHeight: minHeight,
629
664
  headerHeight: headerHeight,
630
- rowHeight: rowHeight,
631
665
  rowExpandedHeight: rowExpandedHeight,
632
666
  loading: isLoading != null ? isLoading : loading,
633
667
  showHeader: showHeader,
@@ -635,7 +669,6 @@ var QbsTable = function QbsTable(_ref) {
635
669
  expandedRowKeys: expandedRowKeys,
636
670
  onExpandChange: onExpandChange,
637
671
  rowKey: dataRowKey != null ? dataRowKey : 'id',
638
- rowClassName: selection ? getRowClassName : undefined,
639
672
  defaultExpandAllRows: defaultExpandAllRows,
640
673
  shouldUpdateScroll: shouldUpdateScroll,
641
674
  renderRowExpanded: function renderRowExpanded(rowData) {
@@ -750,11 +783,12 @@ var QbsTable = function QbsTable(_ref) {
750
783
  rtl: rtl
751
784
  })), /*#__PURE__*/React.createElement(ActionCell, {
752
785
  tableBodyRef: tableBodyRef,
786
+ dropType: dropType,
787
+ wheelWrapperRef: wheelWrapperRef,
753
788
  actionProps: actionProps,
754
789
  className: classes.cellClass + " " + classes.actionCellClass,
755
790
  handleMenuActions: handleMenuActions,
756
- dataTheme: dataTheme,
757
- dropType: dropType
791
+ dataTheme: dataTheme
758
792
  }))) : /*#__PURE__*/React.createElement("div", {
759
793
  className: isCustomTableCardView && ((data === null || data === void 0 ? void 0 : data.length) === 0 || !data) && !isLoading ? 'qbs-card-empty-wrapper' : isCustomTableCardView ? 'qbs-card-wrapper' : ' p-2',
760
794
  style: {
@@ -765,7 +799,7 @@ var QbsTable = function QbsTable(_ref) {
765
799
  }, ((data === null || data === void 0 ? void 0 : data.length) === 0 || !data) && !isLoading && /*#__PURE__*/React.createElement("div", {
766
800
  className: "flex flex-col gap-2 p-2 mt-6 card-empty-container"
767
801
  }, /*#__PURE__*/React.createElement(NoData, {
768
- title: emptyTitle != null ? emptyTitle : 'No Data Found',
802
+ title: emptyTitle != null ? emptyTitle : labels.noDataFound,
769
803
  subtitle: emptySubTitle
770
804
  })), isLoading ? handleCustomCardLoader ? /*#__PURE__*/React.createElement(React.Fragment, null, handleCustomCardLoader()) : /*#__PURE__*/React.createElement("div", {
771
805
  className: "flex flex-col gap-2 p-2"
@@ -780,10 +814,13 @@ var QbsTable = function QbsTable(_ref) {
780
814
  childDetailHeading: childDetailHeading,
781
815
  columns: columns,
782
816
  tableBodyRef: tableBodyRef,
783
- actionProps: actionProps
817
+ actionProps: actionProps,
818
+ labels: labels
784
819
  }));
785
820
  })), /*#__PURE__*/React.createElement("div", null, pagination && (data === null || data === void 0 ? void 0 : data.length) > 0 && /*#__PURE__*/React.createElement(Pagination, {
786
- paginationProps: paginationProps
821
+ paginationProps: paginationProps,
822
+ labels: labels,
823
+ dataTheme: dataTheme
787
824
  }))));
788
825
  };
789
826
  export default QbsTable;
@@ -134,6 +134,7 @@ var QbsTable = function QbsTable(_ref) {
134
134
  setIsOpen = _useState4[1];
135
135
  var prevColumns = useRef(null);
136
136
  var tableBodyRef = useRef(null);
137
+ var wheelWrapperRef = useRef(null);
137
138
  var handleSortColumn = useCallback(function (sortColumn, sortType) {
138
139
  setLoading(true);
139
140
  setTimeout(function () {
@@ -453,6 +454,7 @@ var QbsTable = function QbsTable(_ref) {
453
454
  rtl: rtl,
454
455
  data: data,
455
456
  tableBodyRef: tableBodyRef,
457
+ wheelWrapperRef: wheelWrapperRef,
456
458
  dataTheme: dataTheme,
457
459
  wordWrap: effectiveWordWrap,
458
460
  autoHeight: autoHeight,
@@ -211,18 +211,21 @@ var ToolBar = function ToolBar(_ref) {
211
211
  return onSelect === null || onSelect === void 0 ? void 0 : onSelect([]);
212
212
  }
213
213
  }, labels.clear), selectedRowActions === null || selectedRowActions === void 0 ? void 0 : selectedRowActions.map(function (actions, index) {
214
+ var _actions$buttonClassN;
214
215
  return /*#__PURE__*/React.createElement(React.Fragment, {
215
216
  key: index.toString()
216
217
  }, handleHide(actions) && /*#__PURE__*/React.createElement("button", {
217
218
  type: "button",
218
- className: "btn",
219
+ className: "btn " + ((_actions$buttonClassN = actions === null || actions === void 0 ? void 0 : actions.buttonClassName) != null ? _actions$buttonClassN : ''),
219
220
  disabled: actions.disabled,
220
221
  onClick: function onClick() {
221
222
  return actions === null || actions === void 0 ? void 0 : actions.action(checkedKeys);
222
223
  }
223
- }, actions.actionTitle));
224
+ }, (actions === null || actions === void 0 ? void 0 : actions.icon) && /*#__PURE__*/React.createElement("span", {
225
+ className: "mr-2"
226
+ }, actions.icon), /*#__PURE__*/React.createElement("span", null, actions.actionTitle)));
224
227
  }))) : /*#__PURE__*/React.createElement("div", null, pagination && paginationProps && dataLength > 0 && /*#__PURE__*/React.createElement("div", {
225
228
  className: "rows-count"
226
- }, getRowDisplayRange((_paginationProps$tota = paginationProps.total) != null ? _paginationProps$tota : 0, (_paginationProps$rows = paginationProps.rowsPerPage) != null ? _paginationProps$rows : 0, (_paginationProps$curr = paginationProps.currentPage) != null ? _paginationProps$curr : 0)))));
229
+ }, getRowDisplayRange((_paginationProps$tota = paginationProps.total) != null ? _paginationProps$tota : 0, (_paginationProps$rows = paginationProps.rowsPerPage) != null ? _paginationProps$rows : 0, (_paginationProps$curr = paginationProps.currentPage) != null ? _paginationProps$curr : 0, labels.showingRange)))));
227
230
  };
228
231
  export default ToolBar;