qbs-react-grid 1.2.0 → 1.2.2

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 (56) hide show
  1. package/dist/css/qbs-react-grid.css +1 -1095
  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/Pagination.js +3 -1
  5. package/es/Table.js +19 -19
  6. package/es/less/index.less +3 -0
  7. package/es/qbsTable/QbsTable.js +34 -7
  8. package/es/qbsTable/TableCardList.d.ts +5 -0
  9. package/es/qbsTable/TableCardList.js +564 -0
  10. package/es/qbsTable/Toolbar.js +16 -2
  11. package/es/qbsTable/commontypes.d.ts +9 -0
  12. package/es/qbsTable/utilities/CardComponent.d.ts +12 -0
  13. package/es/qbsTable/utilities/CardComponent.js +64 -0
  14. package/es/qbsTable/utilities/CardMenuDropdown.d.ts +13 -0
  15. package/es/qbsTable/utilities/CardMenuDropdown.js +89 -0
  16. package/es/qbsTable/utilities/SwitchCardColumns.d.ts +2 -0
  17. package/es/qbsTable/utilities/SwitchCardColumns.js +24 -0
  18. package/es/qbsTable/utilities/icons.d.ts +3 -0
  19. package/es/qbsTable/utilities/icons.js +45 -0
  20. package/es/utils/getTotalByColumns.js +1 -1
  21. package/es/utils/mergeCells.js +1 -1
  22. package/es/utils/useCellDescriptor.js +11 -11
  23. package/es/utils/useClassNames.js +2 -0
  24. package/lib/Pagination.js +2 -2
  25. package/lib/Table.js +19 -19
  26. package/lib/less/index.less +3 -0
  27. package/lib/qbsTable/QbsTable.js +34 -7
  28. package/lib/qbsTable/TableCardList.d.ts +5 -0
  29. package/lib/qbsTable/TableCardList.js +571 -0
  30. package/lib/qbsTable/Toolbar.js +16 -2
  31. package/lib/qbsTable/commontypes.d.ts +9 -0
  32. package/lib/qbsTable/utilities/CardComponent.d.ts +12 -0
  33. package/lib/qbsTable/utilities/CardComponent.js +72 -0
  34. package/lib/qbsTable/utilities/CardMenuDropdown.d.ts +13 -0
  35. package/lib/qbsTable/utilities/CardMenuDropdown.js +95 -0
  36. package/lib/qbsTable/utilities/SwitchCardColumns.d.ts +2 -0
  37. package/lib/qbsTable/utilities/SwitchCardColumns.js +30 -0
  38. package/lib/qbsTable/utilities/icons.d.ts +3 -0
  39. package/lib/qbsTable/utilities/icons.js +50 -2
  40. package/lib/utils/getTotalByColumns.js +1 -1
  41. package/lib/utils/mergeCells.js +1 -1
  42. package/lib/utils/useCellDescriptor.js +11 -11
  43. package/lib/utils/useClassNames.js +2 -0
  44. package/package.json +11 -6
  45. package/src/Pagination.tsx +4 -1
  46. package/src/less/index.less +3 -0
  47. package/src/qbsTable/QbsTable.tsx +201 -173
  48. package/src/qbsTable/TableCardList.tsx +629 -0
  49. package/src/qbsTable/Toolbar.tsx +22 -2
  50. package/src/qbsTable/commontypes.ts +9 -0
  51. package/src/qbsTable/utilities/CardComponent.tsx +102 -0
  52. package/src/qbsTable/utilities/CardMenuDropdown.tsx +118 -0
  53. package/src/qbsTable/utilities/SwitchCardColumns.tsx +29 -0
  54. package/src/qbsTable/utilities/icons.tsx +51 -0
  55. /package/es/{CustomSelect.d.ts → customSelect.d.ts} +0 -0
  56. /package/lib/{CustomSelect.d.ts → customSelect.d.ts} +0 -0
@@ -0,0 +1,564 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import Cell from '../Cell';
4
+ import Column from '../Column';
5
+ import ColumnGroup from '../ColumnGroup';
6
+ import HeaderCell from '../HeaderCell';
7
+ import Pagination from '../Pagination';
8
+ import Table from '../Table';
9
+ import { ActionCell, CheckCell, CustomRowStatus, CustomTableCell, ExpandCell } from './CustomTableCell';
10
+ import ToolBar from './Toolbar';
11
+ import ColumToggle from './utilities/ColumShowHide';
12
+ import debounce from './utilities/debounce';
13
+ import { deepEqual } from './utilities/deepEqual';
14
+ import NoData from './utilities/empty';
15
+ import { SettingsIcon } from './utilities/icons';
16
+
17
+ // import 'qbs-react-table/dist/css/qbs-react-grid.css';
18
+
19
+ import '../../dist/css/qbs-react-grid.css';
20
+ var CHECKBOX_LINE_HEIGHT = '36px';
21
+ var COLUMN_WIDTH = 250;
22
+ var QbsTable = function QbsTable(_ref) {
23
+ var _Object$keys;
24
+ var handleColumnSort = _ref.handleColumnSort,
25
+ data = _ref.data,
26
+ propColumn = _ref.columns,
27
+ sortColumn = _ref.sortColumn,
28
+ sortType = _ref.sortType,
29
+ _ref$selection = _ref.selection,
30
+ selection = _ref$selection === void 0 ? false : _ref$selection,
31
+ onSelect = _ref.onSelect,
32
+ _ref$title = _ref.title,
33
+ title = _ref$title === void 0 ? 'My Tabl' : _ref$title,
34
+ _ref$search = _ref.search,
35
+ search = _ref$search === void 0 ? false : _ref$search,
36
+ asyncSearch = _ref.asyncSearch,
37
+ searchValue = _ref.searchValue,
38
+ onSearch = _ref.onSearch,
39
+ handleSearchValue = _ref.handleSearchValue,
40
+ _ref$paginationProps = _ref.paginationProps,
41
+ paginationProps = _ref$paginationProps === void 0 ? {} : _ref$paginationProps,
42
+ _ref$pagination = _ref.pagination,
43
+ pagination = _ref$pagination === void 0 ? false : _ref$pagination,
44
+ _ref$cellBordered = _ref.cellBordered,
45
+ cellBordered = _ref$cellBordered === void 0 ? false : _ref$cellBordered,
46
+ _ref$bordered = _ref.bordered,
47
+ bordered = _ref$bordered === void 0 ? false : _ref$bordered,
48
+ minHeight = _ref.minHeight,
49
+ _ref$height = _ref.height,
50
+ height = _ref$height === void 0 ? 630 : _ref$height,
51
+ onExpandChange = _ref.onExpandChange,
52
+ wordWrap = _ref.wordWrap,
53
+ _ref$dataRowKey = _ref.dataRowKey,
54
+ dataRowKey = _ref$dataRowKey === void 0 ? 'id' : _ref$dataRowKey,
55
+ defaultExpandAllRows = _ref.defaultExpandAllRows,
56
+ handleRowExpanded = _ref.handleRowExpanded,
57
+ _ref$shouldUpdateScro = _ref.shouldUpdateScroll,
58
+ shouldUpdateScroll = _ref$shouldUpdateScro === void 0 ? false : _ref$shouldUpdateScro,
59
+ _ref$rowExpand = _ref.rowExpand,
60
+ rowExpand = _ref$rowExpand === void 0 ? false : _ref$rowExpand,
61
+ _ref$actionProps = _ref.actionProps,
62
+ actionProps = _ref$actionProps === void 0 ? [] : _ref$actionProps,
63
+ theme = _ref.theme,
64
+ handleMenuActions = _ref.handleMenuActions,
65
+ onRowClick = _ref.onRowClick,
66
+ expandedRowKeys = _ref.expandedRowKeys,
67
+ setExpandedRowKeys = _ref.setExpandedRowKeys,
68
+ primaryFilter = _ref.primaryFilter,
69
+ advancefilter = _ref.advancefilter,
70
+ _ref$classes = _ref.classes,
71
+ classes = _ref$classes === void 0 ? {} : _ref$classes,
72
+ toolbar = _ref.toolbar,
73
+ _ref$columnToggle = _ref.columnToggle,
74
+ columnToggle = _ref$columnToggle === void 0 ? true : _ref$columnToggle,
75
+ handleColumnToggle = _ref.handleColumnToggle,
76
+ tableHeaderActions = _ref.tableHeaderActions,
77
+ isLoading = _ref.isLoading,
78
+ selectedRowActions = _ref.selectedRowActions,
79
+ handleResetColumns = _ref.handleResetColumns,
80
+ selectedRows = _ref.selectedRows,
81
+ _ref$headerHeight = _ref.headerHeight,
82
+ headerHeight = _ref$headerHeight === void 0 ? 40 : _ref$headerHeight,
83
+ tableBodyHeight = _ref.tableBodyHeight,
84
+ customRowStatus = _ref.customRowStatus,
85
+ searchPlaceholder = _ref.searchPlaceholder,
86
+ _ref$rowExpandedHeigh = _ref.rowExpandedHeight,
87
+ rowExpandedHeight = _ref$rowExpandedHeigh === void 0 ? 317 : _ref$rowExpandedHeigh,
88
+ renderSortIcon = _ref.renderSortIcon,
89
+ _ref$tableKey = _ref.tableKey,
90
+ tableKey = _ref$tableKey === void 0 ? 'parent' : _ref$tableKey,
91
+ _renderEmpty = _ref.renderEmpty,
92
+ autoHeight = _ref.autoHeight,
93
+ emptySubTitle = _ref.emptySubTitle,
94
+ emptyTitle = _ref.emptyTitle;
95
+ var _useState = useState(false),
96
+ loading = _useState[0],
97
+ setLoading = _useState[1];
98
+ var _useState2 = useState(propColumn),
99
+ columns = _useState2[0],
100
+ setColumns = _useState2[1];
101
+ var _useState3 = useState([]),
102
+ checkedKeys = _useState3[0],
103
+ setCheckedKeys = _useState3[1];
104
+ var dataTheme = useMemo(function () {
105
+ var _localStorage$getItem;
106
+ return (_localStorage$getItem = localStorage.getItem('theme')) != null ? _localStorage$getItem : theme;
107
+ }, [theme]);
108
+ var _useState4 = useState(false),
109
+ isOpen = _useState4[0],
110
+ setIsOpen = _useState4[1];
111
+ var prevColumns = useRef();
112
+ var tableBodyRef = useRef(null);
113
+ var handleSortColumn = useCallback(function (sortColumn, sortType) {
114
+ setLoading(true);
115
+ setTimeout(function () {
116
+ setLoading(false);
117
+ handleColumnSort === null || handleColumnSort === void 0 ? void 0 : handleColumnSort(sortColumn, sortType);
118
+ }, 500);
119
+ }, [handleColumnSort]);
120
+ useEffect(function () {
121
+ if (selectedRows) {
122
+ setCheckedKeys(selectedRows != null ? selectedRows : []);
123
+ } else {
124
+ setCheckedKeys([]);
125
+ }
126
+ }, [selectedRows]);
127
+ var handleChecked = debounce(function (keys) {
128
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(keys);
129
+ }, 500);
130
+ var handleCheckAll = useCallback(function (event) {
131
+ var keys = event.target.checked ? data.map(function (item) {
132
+ return item.id;
133
+ }) : [];
134
+ // let updatedKeys = [...keys];
135
+ // if (checkedKeys) {
136
+ // updatedKeys = [...checkedKeys, ...updatedKeys];
137
+ // } TODO => previous bug fix removed this section
138
+ var updatedKeys = [].concat(keys);
139
+ setCheckedKeys(updatedKeys);
140
+ handleChecked(updatedKeys);
141
+ }, [data]);
142
+ var handleCheck = useCallback(function (event) {
143
+ var value = event.target.value;
144
+ if (value !== undefined) {
145
+ var updatedKeys = event.target.checked ? [].concat(checkedKeys, [value]) : checkedKeys.filter(function (key) {
146
+ return key !== value;
147
+ });
148
+ setCheckedKeys(updatedKeys);
149
+ handleChecked(updatedKeys);
150
+ }
151
+ }, [checkedKeys]);
152
+ var handleToggle = useCallback(function (columnName) {
153
+ var lastVisibleColumn = null;
154
+ var visibleCount = 0;
155
+ var updatedColumns = columns === null || columns === void 0 ? void 0 : columns.map(function (col) {
156
+ // Toggle visibility for the matched column
157
+ if (col.title === columnName) {
158
+ col = _extends({}, col, {
159
+ isVisible: !col.isVisible
160
+ });
161
+ }
162
+ if (col.isVisible) {
163
+ lastVisibleColumn = col;
164
+ visibleCount++;
165
+ }
166
+ return col;
167
+ });
168
+ if (visibleCount > 0 && lastVisibleColumn) {
169
+ updatedColumns.forEach(function (col) {
170
+ var _lastVisibleColumn;
171
+ if (col.field === ((_lastVisibleColumn = lastVisibleColumn) === null || _lastVisibleColumn === void 0 ? void 0 : _lastVisibleColumn.field) && col.title === lastVisibleColumn.title) {
172
+ col.resizable = false;
173
+ } else {
174
+ col.resizable = true;
175
+ }
176
+ });
177
+ }
178
+ setColumns(updatedColumns);
179
+ }, [columns]);
180
+ var handleColumnWidth = useCallback(function (newWidth, dataKey) {
181
+ if (newWidth === undefined || dataKey === undefined) return;
182
+ setColumns(function (prevColumns) {
183
+ return prevColumns.map(function (column) {
184
+ return column.field === dataKey ? _extends({}, column, {
185
+ colWidth: newWidth
186
+ }) : column;
187
+ });
188
+ });
189
+ }, []);
190
+ useEffect(function () {
191
+ if (wordWrap === 'fit-content') {
192
+ setColumns(function (prevColumns) {
193
+ return prevColumns.map(function (column) {
194
+ return column.field ? _extends({}, column, {
195
+ colWidth: calculateWidth(column.field)
196
+ }) : column;
197
+ });
198
+ });
199
+ }
200
+ }, [wordWrap]);
201
+ var onReorder = useCallback(function (columns) {
202
+ setColumns(columns);
203
+ }, []);
204
+
205
+ // useEffect(() => {
206
+ // }, [columns]);
207
+
208
+ var handleClear = function handleClear(_ref2) {
209
+ setCheckedKeys([]);
210
+ handleChecked([]);
211
+ };
212
+ var toolbarProps = {
213
+ title: title,
214
+ search: search,
215
+ searchValue: searchValue,
216
+ pagination: pagination,
217
+ onSearch: onSearch,
218
+ handleSearchValue: handleSearchValue,
219
+ asyncSearch: asyncSearch,
220
+ paginationProps: paginationProps,
221
+ primaryFilter: primaryFilter,
222
+ advancefilter: advancefilter,
223
+ className: classes === null || classes === void 0 ? void 0 : classes.toolbarClass,
224
+ handleToggle: handleToggle,
225
+ onReorder: onReorder,
226
+ columnToggle: columnToggle,
227
+ columns: columns,
228
+ checkedKeys: checkedKeys,
229
+ tableHeaderActions: tableHeaderActions,
230
+ selectedRowActions: selectedRowActions,
231
+ onSelect: handleClear,
232
+ handleColumnToggle: handleColumnToggle,
233
+ dataLength: data === null || data === void 0 ? void 0 : data.length,
234
+ searchPlaceholder: searchPlaceholder
235
+ };
236
+ var themeToggle = useMemo(function () {
237
+ return document.getElementById('themeToggle');
238
+ }, []);
239
+ useEffect(function () {
240
+ var handleThemeToggle = function handleThemeToggle() {
241
+ if (themeToggle !== null && themeToggle !== void 0 && themeToggle.checked) {
242
+ document.body.setAttribute('data-theme', 'dark');
243
+ } else {
244
+ document.body.removeAttribute('data-theme');
245
+ }
246
+ };
247
+ var handleDOMContentLoaded = function handleDOMContentLoaded() {
248
+ if (localStorage.getItem('theme') === 'dark') {
249
+ document.body.setAttribute('data-theme', 'dark');
250
+ if (themeToggle) {
251
+ themeToggle.checked = true;
252
+ }
253
+ }
254
+ };
255
+ themeToggle === null || themeToggle === void 0 ? void 0 : themeToggle.addEventListener('change', handleThemeToggle);
256
+ document.addEventListener('DOMContentLoaded', handleDOMContentLoaded);
257
+ return function () {
258
+ themeToggle === null || themeToggle === void 0 ? void 0 : themeToggle.removeEventListener('change', handleThemeToggle);
259
+ document.removeEventListener('DOMContentLoaded', handleDOMContentLoaded);
260
+ };
261
+ }, [themeToggle]);
262
+ var handleExpanded = useCallback(function (rowData) {
263
+ console.log(rowData);
264
+ var keyValue = dataRowKey;
265
+ var key = rowData[keyValue];
266
+ var nextExpandedRowKeys = new Set(expandedRowKeys);
267
+ if (nextExpandedRowKeys.has(key)) {
268
+ nextExpandedRowKeys["delete"](key);
269
+ } else {
270
+ nextExpandedRowKeys.add(key);
271
+ }
272
+ setExpandedRowKeys === null || setExpandedRowKeys === void 0 ? void 0 : setExpandedRowKeys(Array.from(nextExpandedRowKeys));
273
+ }, [dataRowKey, expandedRowKeys, setExpandedRowKeys]);
274
+ var calculateWidth = function calculateWidth(str, fontSize, characterWidth) {
275
+ if (fontSize === void 0) {
276
+ fontSize = 8;
277
+ }
278
+ if (characterWidth === void 0) {
279
+ characterWidth = 1;
280
+ }
281
+ var result = findLargestCell(str) * fontSize * characterWidth;
282
+ return result > 60 ? result : 60;
283
+ };
284
+ function findLargestCell(columnTitle) {
285
+ var largestCellLength = 0;
286
+ data.forEach(function (row) {
287
+ if (row[columnTitle] && String(row[columnTitle]).length > largestCellLength) {
288
+ largestCellLength = String(row[columnTitle]).length;
289
+ }
290
+ });
291
+ return largestCellLength;
292
+ }
293
+ var handleColumnsResizable = useCallback(function () {
294
+ var _filteredColumns$leng;
295
+ var filteredColumns = columns === null || columns === void 0 ? void 0 : columns.filter(function (item) {
296
+ return item.isVisible;
297
+ });
298
+ var length = (_filteredColumns$leng = filteredColumns === null || filteredColumns === void 0 ? void 0 : filteredColumns.length) != null ? _filteredColumns$leng : 0;
299
+ var lastVisibleColumn = filteredColumns[length - 1];
300
+ var reColumns = columns === null || columns === void 0 ? void 0 : columns.map(function (item) {
301
+ return (item === null || item === void 0 ? void 0 : item.field) === (lastVisibleColumn === null || lastVisibleColumn === void 0 ? void 0 : lastVisibleColumn.field) ? _extends({}, item, {
302
+ resizable: false
303
+ }) : item;
304
+ });
305
+ setColumns(reColumns);
306
+ }, [columns]);
307
+ useEffect(function () {
308
+ setColumns(propColumn);
309
+ }, [propColumn]);
310
+ useEffect(function () {
311
+ if (!deepEqual(columns, prevColumns.current)) {
312
+ handleColumnsResizable();
313
+ }
314
+ prevColumns.current = columns;
315
+ }, [columns, handleColumnsResizable]);
316
+ var findGrouped = function findGrouped() {
317
+ return columns !== null && columns !== void 0 && columns.find(function (item) {
318
+ return item.grouped;
319
+ }) ? true : false;
320
+ };
321
+ var columnsRendered = useMemo(function () {
322
+ return (columns != null ? columns : []).map(function (_ref3) {
323
+ var title = _ref3.title,
324
+ field = _ref3.field,
325
+ resizable = _ref3.resizable,
326
+ sortable = _ref3.sortable,
327
+ colWidth = _ref3.colWidth,
328
+ align = _ref3.align,
329
+ grouped = _ref3.grouped,
330
+ groupHeader = _ref3.groupHeader,
331
+ fixed = _ref3.fixed,
332
+ children = _ref3.children,
333
+ customCell = _ref3.customCell,
334
+ renderCell = _ref3.renderCell,
335
+ isVisible = _ref3.isVisible,
336
+ link = _ref3.link,
337
+ getPath = _ref3.getPath,
338
+ rowClick = _ref3.rowClick,
339
+ sortKey = _ref3.sortKey,
340
+ type = _ref3.type,
341
+ hideLink = _ref3.hideLink;
342
+ return /*#__PURE__*/React.createElement(React.Fragment, null, isVisible && /*#__PURE__*/React.createElement(React.Fragment, null, grouped ? /*#__PURE__*/React.createElement(ColumnGroup, {
343
+ header: groupHeader,
344
+ fixed: fixed,
345
+ align: align,
346
+ verticalAlign: "middle",
347
+ groupHeaderHeight: 40
348
+ }, /*#__PURE__*/React.createElement(React.Fragment, null, children === null || children === void 0 ? void 0 : children.map(function (child) {
349
+ var _child$colWidth;
350
+ return /*#__PURE__*/React.createElement(Column, {
351
+ key: child.title,
352
+ sortable: child.sortable,
353
+ width: (_child$colWidth = child.colWidth) != null ? _child$colWidth : COLUMN_WIDTH,
354
+ resizable: child.resizable,
355
+ align: child.align,
356
+ onResize: handleColumnWidth,
357
+ fixed: child.fixed
358
+ }, /*#__PURE__*/React.createElement(HeaderCell, {
359
+ dataTheme: dataTheme,
360
+ verticalAlign: 'middle',
361
+ className: " " + classes.headerClass,
362
+ sortKey: child.sortKey,
363
+ renderSortIcon: renderSortIcon
364
+ }, child.title), child.customCell || child.link ? /*#__PURE__*/React.createElement(CustomTableCell, {
365
+ renderCell: child.renderCell,
366
+ dataKey: child.field,
367
+ dataTheme: dataTheme,
368
+ type: child.type,
369
+ path: child.getPath,
370
+ link: child.link
371
+ }) : /*#__PURE__*/React.createElement(Cell, {
372
+ className: " " + classes.cellClass,
373
+ dataKey: child.field,
374
+ dataTheme: dataTheme
375
+ }));
376
+ }))) : /*#__PURE__*/React.createElement(Column, {
377
+ key: title,
378
+ sortable: sortable,
379
+ width: colWidth != null ? colWidth : COLUMN_WIDTH,
380
+ resizable: resizable,
381
+ align: align,
382
+ fixed: fixed,
383
+ onResize: handleColumnWidth
384
+ }, /*#__PURE__*/React.createElement(HeaderCell, {
385
+ dataTheme: dataTheme,
386
+ verticalAlign: findGrouped() ? 'middle' : undefined,
387
+ className: " " + classes.headerClass,
388
+ sortKey: sortKey,
389
+ renderSortIcon: renderSortIcon
390
+ }, title), customCell || link ? /*#__PURE__*/React.createElement(CustomTableCell, {
391
+ renderCell: renderCell,
392
+ dataKey: field,
393
+ rowClick: rowClick,
394
+ type: type,
395
+ hideLink: hideLink,
396
+ path: getPath,
397
+ dataTheme: dataTheme,
398
+ link: link
399
+ }) : /*#__PURE__*/React.createElement(Cell, {
400
+ dataKey: field,
401
+ dataTheme: dataTheme,
402
+ className: " " + classes.cellClass
403
+ }))));
404
+ });
405
+ }, [columns, dataTheme]);
406
+ return /*#__PURE__*/React.createElement("div", {
407
+ className: "qbs-table " + classes.tableContainerClass,
408
+ "data-theme": dataTheme
409
+ }, toolbar && /*#__PURE__*/React.createElement(ToolBar, toolbarProps), /*#__PURE__*/React.createElement("div", {
410
+ className: "qbs-table-border-wrap"
411
+ }, /*#__PURE__*/React.createElement(Table, {
412
+ height: autoHeight ? undefined : height,
413
+ key: tableKey,
414
+ tableKey: tableKey,
415
+ data: data,
416
+ tableBodyRef: tableBodyRef,
417
+ dataTheme: dataTheme,
418
+ wordWrap: wordWrap,
419
+ autoHeight: autoHeight,
420
+ sortColumn: sortColumn,
421
+ style: {
422
+ position: 'relative'
423
+ },
424
+ sortType: sortType,
425
+ onSortColumn: handleSortColumn,
426
+ onRowClick: onRowClick,
427
+ tableBodyHeight: tableBodyHeight,
428
+ cellBordered: cellBordered,
429
+ bordered: bordered,
430
+ renderEmpty: function renderEmpty(info) {
431
+ return _renderEmpty ? _renderEmpty(info) : /*#__PURE__*/React.createElement(NoData, {
432
+ title: emptyTitle != null ? emptyTitle : 'No Data Found',
433
+ subtitle: emptySubTitle
434
+ });
435
+ },
436
+ columns: columns,
437
+ minHeight: minHeight,
438
+ headerHeight: headerHeight,
439
+ rowExpandedHeight: rowExpandedHeight,
440
+ loading: isLoading != null ? isLoading : loading,
441
+ showHeader: true,
442
+ defaultChecked: true,
443
+ expandedRowKeys: expandedRowKeys,
444
+ onExpandChange: onExpandChange,
445
+ rowKey: dataRowKey != null ? dataRowKey : 'id',
446
+ defaultExpandAllRows: defaultExpandAllRows,
447
+ shouldUpdateScroll: shouldUpdateScroll,
448
+ renderRowExpanded: function renderRowExpanded(rowData) {
449
+ return handleRowExpanded === null || handleRowExpanded === void 0 ? void 0 : handleRowExpanded(rowData);
450
+ }
451
+ }, rowExpand && /*#__PURE__*/React.createElement(Column, {
452
+ width: 70,
453
+ align: "center",
454
+ fixed: "left"
455
+ }, /*#__PURE__*/React.createElement(HeaderCell, {
456
+ verticalAlign: findGrouped() ? 'middle' : undefined,
457
+ className: " " + classes.headerlClass,
458
+ renderSortIcon: renderSortIcon
459
+ }, "#"), /*#__PURE__*/React.createElement(ExpandCell, {
460
+ dataKey: dataRowKey,
461
+ expandedRowKeys: expandedRowKeys,
462
+ onChange: handleExpanded
463
+ })), selection && /*#__PURE__*/React.createElement(Column, {
464
+ width: 50,
465
+ align: "center",
466
+ fixed: "left"
467
+ }, /*#__PURE__*/React.createElement(HeaderCell, {
468
+ style: {
469
+ padding: 0
470
+ },
471
+ verticalAlign: findGrouped() ? 'middle' : undefined,
472
+ dataTheme: dataTheme,
473
+ renderSortIcon: renderSortIcon,
474
+ className: "qbs-checkbox-border-none " + classes.headerlClass
475
+ }, /*#__PURE__*/React.createElement("div", {
476
+ style: {
477
+ lineHeight: CHECKBOX_LINE_HEIGHT
478
+ },
479
+ className: "qbs-table-checkbox " + classes.selectionCell
480
+ }, /*#__PURE__*/React.createElement("input", {
481
+ type: "checkbox",
482
+ onChange: handleCheckAll,
483
+ id: 'checkbox-all',
484
+ className: "qbs-table-checkbox-input " + classes.tableCheckBoxClass,
485
+ checked: (data === null || data === void 0 ? void 0 : data.length) > 0 && data.every(function (item) {
486
+ return checkedKeys === null || checkedKeys === void 0 ? void 0 : checkedKeys.includes(item.id);
487
+ })
488
+ }), /*#__PURE__*/React.createElement("label", {
489
+ htmlFor: 'checkbox-all'
490
+ }, /*#__PURE__*/React.createElement("svg", {
491
+ width: "8",
492
+ height: "6",
493
+ viewBox: "0 0 8 6",
494
+ fill: "none",
495
+ xmlns: "http://www.w3.org/2000/svg"
496
+ }, /*#__PURE__*/React.createElement("path", {
497
+ d: "M0 3.21739L2.89883 6L8 1.06994L6.89494 0L2.89883 3.86768L1.09728 2.14745L0 3.21739Z",
498
+ fill: "white"
499
+ }))))), /*#__PURE__*/React.createElement(CheckCell, {
500
+ dataKey: "id",
501
+ checkedKeys: checkedKeys,
502
+ className: "" + classes.tableCheckBoxClass,
503
+ onChange: handleCheck,
504
+ dataTheme: dataTheme
505
+ })), customRowStatus && ((_Object$keys = Object.keys(customRowStatus)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.length) > 0 && /*#__PURE__*/React.createElement(Column, {
506
+ width: 50,
507
+ align: "center",
508
+ fixed: "left"
509
+ }, /*#__PURE__*/React.createElement(HeaderCell, {
510
+ verticalAlign: findGrouped() ? 'middle' : undefined,
511
+ className: " " + classes.headerlClass,
512
+ renderSortIcon: renderSortIcon
513
+ }, ' '), /*#__PURE__*/React.createElement(CustomRowStatus, {
514
+ getIcon: customRowStatus.getIcon,
515
+ dataKey: customRowStatus.field,
516
+ rowClick: customRowStatus.onClick,
517
+ path: customRowStatus.getPath,
518
+ link: customRowStatus.link,
519
+ getToolTip: customRowStatus.getToolTip
520
+ })), columnsRendered, !actionProps || (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) === 0 && columnToggle && /*#__PURE__*/React.createElement(Column, {
521
+ width: 40,
522
+ fixed: "right"
523
+ }, /*#__PURE__*/React.createElement(HeaderCell, {
524
+ verticalAlign: findGrouped() ? 'middle' : undefined,
525
+ className: " " + classes.headerlClass,
526
+ dataTheme: dataTheme,
527
+ renderSortIcon: renderSortIcon
528
+ }, /*#__PURE__*/React.createElement(ColumToggle, {
529
+ columns: columns,
530
+ onToggle: handleToggle,
531
+ onReorder: onReorder,
532
+ isOpen: isOpen,
533
+ tableHeight: height,
534
+ setIsOpen: setIsOpen,
535
+ handleResetColumns: handleResetColumns,
536
+ handleColumnToggle: handleColumnToggle
537
+ })), /*#__PURE__*/React.createElement(Cell, null)), actionProps && (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) > 0 && /*#__PURE__*/React.createElement(Column, {
538
+ width: 40,
539
+ fixed: "right"
540
+ }, /*#__PURE__*/React.createElement(HeaderCell, {
541
+ verticalAlign: findGrouped() ? 'middle' : undefined,
542
+ className: " " + classes.headerlClass,
543
+ dataTheme: dataTheme,
544
+ renderSortIcon: renderSortIcon
545
+ }, !columnToggle ? /*#__PURE__*/React.createElement(SettingsIcon, null) : /*#__PURE__*/React.createElement(ColumToggle, {
546
+ columns: columns,
547
+ onToggle: handleToggle,
548
+ tableHeight: height,
549
+ onReorder: onReorder,
550
+ isOpen: isOpen,
551
+ setIsOpen: setIsOpen,
552
+ handleResetColumns: handleResetColumns,
553
+ handleColumnToggle: handleColumnToggle
554
+ })), /*#__PURE__*/React.createElement(ActionCell, {
555
+ tableBodyRef: tableBodyRef,
556
+ actionProps: actionProps,
557
+ className: classes.cellClass + " " + classes.actionCellClass,
558
+ handleMenuActions: handleMenuActions,
559
+ dataTheme: dataTheme
560
+ }))), /*#__PURE__*/React.createElement("div", null, pagination && (data === null || data === void 0 ? void 0 : data.length) > 0 && /*#__PURE__*/React.createElement(Pagination, {
561
+ paginationProps: paginationProps
562
+ }))));
563
+ };
564
+ export default QbsTable;
@@ -2,6 +2,8 @@ import React, { useCallback, useState } from 'react';
2
2
  import debounce from './utilities/debounce';
3
3
  import SearchInput from './utilities/SearchInput';
4
4
  import { getRowDisplayRange } from './utilities/tablecalc';
5
+ import TooltipComponent from './utilities/ToolTip';
6
+ import { CardIcon, TableIcon } from './utilities/icons';
5
7
  var ToolBar = function ToolBar(_ref) {
6
8
  var _paginationProps$tota, _paginationProps$rows, _paginationProps$curr;
7
9
  var pagination = _ref.pagination,
@@ -20,7 +22,11 @@ var ToolBar = function ToolBar(_ref) {
20
22
  checkedKeys = _ref.checkedKeys,
21
23
  onSelect = _ref.onSelect,
22
24
  dataLength = _ref.dataLength,
23
- searchPlaceholder = _ref.searchPlaceholder;
25
+ searchPlaceholder = _ref.searchPlaceholder,
26
+ tableViewToggle = _ref.tableViewToggle,
27
+ setTableViewToggle = _ref.setTableViewToggle,
28
+ _ref$enableTableToggl = _ref.enableTableToggle,
29
+ enableTableToggle = _ref$enableTableToggl === void 0 ? false : _ref$enableTableToggl;
24
30
  var debouncedOnSearch = useCallback(debounce(onSearch != null ? onSearch : function () {}, 1000), [onSearch]);
25
31
  var _useState = useState(searchValue),
26
32
  searchParam = _useState[0],
@@ -66,7 +72,15 @@ var ToolBar = function ToolBar(_ref) {
66
72
  searchValue: searchParam
67
73
  }), primaryFilter)), /*#__PURE__*/React.createElement("div", {
68
74
  className: "end-container"
69
- }, tableHeaderActions)), advancefilter && /*#__PURE__*/React.createElement("div", {
75
+ }, tableHeaderActions, /*#__PURE__*/React.createElement("div", {
76
+ className: " pr-1 cursor-pointer",
77
+ onClick: function onClick() {
78
+ return setTableViewToggle === null || setTableViewToggle === void 0 ? void 0 : setTableViewToggle(!tableViewToggle);
79
+ }
80
+ }, !enableTableToggle && /*#__PURE__*/React.createElement(TooltipComponent, {
81
+ enabled: true,
82
+ title: tableViewToggle ? 'Switch to Card View' : 'Switch to Table View'
83
+ }, !tableViewToggle ? /*#__PURE__*/React.createElement(CardIcon, null) : /*#__PURE__*/React.createElement(TableIcon, null))))), advancefilter && /*#__PURE__*/React.createElement("div", {
70
84
  className: "sub-qbs-table-toolbar"
71
85
  }, advancefilter), (pagination && dataLength > 0 || checkedKeys && (checkedKeys === null || checkedKeys === void 0 ? void 0 : checkedKeys.length) > 0) && /*#__PURE__*/React.createElement("div", {
72
86
  className: "qbs-table-toolbar-sub-container " + (checkedKeys && (checkedKeys === null || checkedKeys === void 0 ? void 0 : checkedKeys.length) > 0 ? 'selected-row' : '')
@@ -42,6 +42,9 @@ export interface ActionProps {
42
42
  toolTip?: string;
43
43
  hidden?: boolean;
44
44
  hide?: (data: any, index?: number) => boolean;
45
+ isWarning?: boolean;
46
+ label?: string;
47
+ iconName?: string;
45
48
  }
46
49
  export interface QbsTableProps {
47
50
  tableKey?: string;
@@ -116,6 +119,8 @@ export interface QbsTableProps {
116
119
  renderEmpty?: (info: React.ReactNode) => React.ReactNode;
117
120
  emptySubTitle?: string;
118
121
  emptyTitle?: string;
122
+ enableTableToggle?: boolean;
123
+ tableView?: boolean;
119
124
  }
120
125
  export interface QbsTableToolbarProps {
121
126
  title?: string;
@@ -140,6 +145,10 @@ export interface QbsTableToolbarProps {
140
145
  dataLength: number;
141
146
  headerHeight?: number;
142
147
  searchPlaceholder?: string;
148
+ tableView?: boolean;
149
+ enableTableToggle?: boolean;
150
+ tableViewToggle?: boolean;
151
+ setTableViewToggle?: (value: boolean) => void;
143
152
  selectedRowActions?: {
144
153
  actionTitle?: string;
145
154
  action: (checked: (number | string)[]) => void;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { QbsColumnProps } from '../commontypes';
3
+ type Props = {
4
+ columns: QbsColumnProps[];
5
+ data: any;
6
+ tableBodyRef: any;
7
+ actionProps?: any;
8
+ index?: number;
9
+ handleMenuActions?: () => void;
10
+ };
11
+ declare const CardComponent: React.FC<Props>;
12
+ export default CardComponent;