@itwin/itwinui-react 1.34.2 → 1.37.0

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 (158) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/cjs/core/ButtonGroup/ButtonGroup.js +1 -0
  3. package/cjs/core/Carousel/Carousel.d.ts +68 -0
  4. package/cjs/core/Carousel/Carousel.js +130 -0
  5. package/cjs/core/Carousel/CarouselContext.d.ts +37 -0
  6. package/cjs/core/Carousel/CarouselContext.js +12 -0
  7. package/cjs/core/Carousel/CarouselDot.d.ts +13 -0
  8. package/cjs/core/Carousel/CarouselDot.js +46 -0
  9. package/cjs/core/Carousel/CarouselDotsList.d.ts +32 -0
  10. package/cjs/core/Carousel/CarouselDotsList.js +132 -0
  11. package/cjs/core/Carousel/CarouselNavigation.d.ts +15 -0
  12. package/cjs/core/Carousel/CarouselNavigation.js +88 -0
  13. package/cjs/core/Carousel/CarouselSlide.d.ts +14 -0
  14. package/cjs/core/Carousel/CarouselSlide.js +63 -0
  15. package/cjs/core/Carousel/CarouselSlider.d.ts +5 -0
  16. package/cjs/core/Carousel/CarouselSlider.js +94 -0
  17. package/cjs/core/Carousel/index.d.ts +4 -0
  18. package/cjs/core/Carousel/index.js +10 -0
  19. package/cjs/core/ColorPicker/ColorSwatch.d.ts +1 -1
  20. package/cjs/core/DatePicker/DatePicker.d.ts +5 -0
  21. package/cjs/core/DatePicker/DatePicker.js +38 -13
  22. package/cjs/core/Header/HeaderButton.js +1 -0
  23. package/cjs/core/Menu/Menu.js +8 -3
  24. package/cjs/core/Modal/Modal.d.ts +5 -0
  25. package/cjs/core/Modal/Modal.js +11 -9
  26. package/cjs/core/Modal/ModalContent.d.ts +14 -0
  27. package/cjs/core/Modal/ModalContent.js +46 -0
  28. package/cjs/core/Modal/index.d.ts +2 -0
  29. package/cjs/core/Modal/index.js +3 -1
  30. package/cjs/core/SkipToContentLink/SkipToContentLink.d.ts +33 -0
  31. package/cjs/core/SkipToContentLink/SkipToContentLink.js +50 -0
  32. package/cjs/core/SkipToContentLink/index.d.ts +4 -0
  33. package/cjs/core/SkipToContentLink/index.js +10 -0
  34. package/cjs/core/Surface/Surface.d.ts +32 -0
  35. package/cjs/core/Surface/Surface.js +70 -0
  36. package/cjs/core/Surface/index.d.ts +4 -0
  37. package/cjs/core/Surface/index.js +10 -0
  38. package/cjs/core/Table/Table.d.ts +7 -0
  39. package/cjs/core/Table/Table.js +51 -27
  40. package/cjs/core/Table/TableCell.js +3 -3
  41. package/cjs/core/Table/TableRowMemoized.js +12 -7
  42. package/cjs/core/Table/actionHandlers/index.d.ts +2 -1
  43. package/cjs/core/Table/actionHandlers/index.js +5 -1
  44. package/cjs/core/Table/cells/DefaultCell.d.ts +1 -1
  45. package/cjs/core/Table/cells/DefaultCell.js +5 -2
  46. package/cjs/core/Table/columns/actionColumn.d.ts +35 -0
  47. package/cjs/core/Table/columns/actionColumn.js +91 -0
  48. package/cjs/core/Table/columns/expanderColumn.d.ts +47 -0
  49. package/cjs/core/Table/columns/expanderColumn.js +81 -0
  50. package/cjs/core/Table/columns/index.d.ts +3 -0
  51. package/cjs/core/Table/columns/index.js +15 -0
  52. package/cjs/core/Table/columns/selectionColumn.d.ts +35 -0
  53. package/cjs/core/Table/columns/selectionColumn.js +67 -0
  54. package/cjs/core/Table/hooks/index.d.ts +2 -2
  55. package/cjs/core/Table/hooks/index.js +1 -3
  56. package/cjs/core/Table/hooks/useExpanderCell.d.ts +0 -1
  57. package/cjs/core/Table/hooks/useExpanderCell.js +25 -39
  58. package/cjs/core/Table/hooks/useResizeColumns.js +8 -2
  59. package/cjs/core/Table/hooks/useSelectionCell.d.ts +1 -2
  60. package/cjs/core/Table/hooks/useSelectionCell.js +8 -53
  61. package/cjs/core/Table/index.d.ts +1 -0
  62. package/cjs/core/Table/index.js +5 -1
  63. package/cjs/core/Table/utils.js +1 -1
  64. package/cjs/core/Tag/Tag.js +6 -3
  65. package/cjs/core/Tile/Tile.d.ts +6 -2
  66. package/cjs/core/Tile/Tile.js +7 -2
  67. package/cjs/core/Toast/Toast.js +1 -1
  68. package/cjs/core/Typography/Anchor/Anchor.d.ts +1 -0
  69. package/cjs/core/Typography/Anchor/Anchor.js +1 -0
  70. package/cjs/core/index.d.ts +9 -3
  71. package/cjs/core/index.js +13 -2
  72. package/cjs/core/utils/components/Popover.js +13 -1
  73. package/cjs/core/utils/hooks/index.d.ts +1 -0
  74. package/cjs/core/utils/hooks/index.js +1 -0
  75. package/cjs/core/utils/hooks/useMediaQuery.d.ts +2 -0
  76. package/cjs/core/utils/hooks/useMediaQuery.js +46 -0
  77. package/cjs/core/utils/hooks/useTheme.d.ts +5 -0
  78. package/cjs/core/utils/hooks/useTheme.js +20 -14
  79. package/cjs/types/react-table-config.d.ts +18 -0
  80. package/esm/core/ButtonGroup/ButtonGroup.js +1 -0
  81. package/esm/core/Carousel/Carousel.d.ts +68 -0
  82. package/esm/core/Carousel/Carousel.js +124 -0
  83. package/esm/core/Carousel/CarouselContext.d.ts +37 -0
  84. package/esm/core/Carousel/CarouselContext.js +6 -0
  85. package/esm/core/Carousel/CarouselDot.d.ts +13 -0
  86. package/esm/core/Carousel/CarouselDot.js +40 -0
  87. package/esm/core/Carousel/CarouselDotsList.d.ts +32 -0
  88. package/esm/core/Carousel/CarouselDotsList.js +126 -0
  89. package/esm/core/Carousel/CarouselNavigation.d.ts +15 -0
  90. package/esm/core/Carousel/CarouselNavigation.js +82 -0
  91. package/esm/core/Carousel/CarouselSlide.d.ts +14 -0
  92. package/esm/core/Carousel/CarouselSlide.js +57 -0
  93. package/esm/core/Carousel/CarouselSlider.d.ts +5 -0
  94. package/esm/core/Carousel/CarouselSlider.js +88 -0
  95. package/esm/core/Carousel/index.d.ts +4 -0
  96. package/esm/core/Carousel/index.js +6 -0
  97. package/esm/core/ColorPicker/ColorSwatch.d.ts +1 -1
  98. package/esm/core/DatePicker/DatePicker.d.ts +5 -0
  99. package/esm/core/DatePicker/DatePicker.js +38 -13
  100. package/esm/core/Header/HeaderButton.js +1 -0
  101. package/esm/core/Menu/Menu.js +8 -3
  102. package/esm/core/Modal/Modal.d.ts +5 -0
  103. package/esm/core/Modal/Modal.js +11 -9
  104. package/esm/core/Modal/ModalContent.d.ts +14 -0
  105. package/esm/core/Modal/ModalContent.js +39 -0
  106. package/esm/core/Modal/index.d.ts +2 -0
  107. package/esm/core/Modal/index.js +1 -0
  108. package/esm/core/SkipToContentLink/SkipToContentLink.d.ts +33 -0
  109. package/esm/core/SkipToContentLink/SkipToContentLink.js +44 -0
  110. package/esm/core/SkipToContentLink/index.d.ts +4 -0
  111. package/esm/core/SkipToContentLink/index.js +6 -0
  112. package/esm/core/Surface/Surface.d.ts +32 -0
  113. package/esm/core/Surface/Surface.js +64 -0
  114. package/esm/core/Surface/index.d.ts +4 -0
  115. package/esm/core/Surface/index.js +6 -0
  116. package/esm/core/Table/Table.d.ts +7 -0
  117. package/esm/core/Table/Table.js +47 -23
  118. package/esm/core/Table/TableCell.js +2 -2
  119. package/esm/core/Table/TableRowMemoized.js +12 -7
  120. package/esm/core/Table/actionHandlers/index.d.ts +2 -1
  121. package/esm/core/Table/actionHandlers/index.js +2 -1
  122. package/esm/core/Table/cells/DefaultCell.d.ts +1 -1
  123. package/esm/core/Table/cells/DefaultCell.js +5 -2
  124. package/esm/core/Table/columns/actionColumn.d.ts +35 -0
  125. package/esm/core/Table/columns/actionColumn.js +84 -0
  126. package/esm/core/Table/columns/expanderColumn.d.ts +47 -0
  127. package/esm/core/Table/columns/expanderColumn.js +74 -0
  128. package/esm/core/Table/columns/index.d.ts +3 -0
  129. package/esm/core/Table/columns/index.js +7 -0
  130. package/esm/core/Table/columns/selectionColumn.d.ts +35 -0
  131. package/esm/core/Table/columns/selectionColumn.js +60 -0
  132. package/esm/core/Table/hooks/index.d.ts +2 -2
  133. package/esm/core/Table/hooks/index.js +2 -2
  134. package/esm/core/Table/hooks/useExpanderCell.d.ts +0 -1
  135. package/esm/core/Table/hooks/useExpanderCell.js +24 -35
  136. package/esm/core/Table/hooks/useResizeColumns.js +8 -2
  137. package/esm/core/Table/hooks/useSelectionCell.d.ts +1 -2
  138. package/esm/core/Table/hooks/useSelectionCell.js +7 -49
  139. package/esm/core/Table/index.d.ts +1 -0
  140. package/esm/core/Table/index.js +1 -0
  141. package/esm/core/Table/utils.js +1 -1
  142. package/esm/core/Tag/Tag.js +6 -3
  143. package/esm/core/Tile/Tile.d.ts +6 -2
  144. package/esm/core/Tile/Tile.js +7 -2
  145. package/esm/core/Toast/Toast.js +1 -1
  146. package/esm/core/Typography/Anchor/Anchor.d.ts +1 -0
  147. package/esm/core/Typography/Anchor/Anchor.js +1 -0
  148. package/esm/core/index.d.ts +9 -3
  149. package/esm/core/index.js +5 -2
  150. package/esm/core/utils/components/Popover.js +13 -1
  151. package/esm/core/utils/hooks/index.d.ts +1 -0
  152. package/esm/core/utils/hooks/index.js +1 -0
  153. package/esm/core/utils/hooks/useMediaQuery.d.ts +2 -0
  154. package/esm/core/utils/hooks/useMediaQuery.js +39 -0
  155. package/esm/core/utils/hooks/useTheme.d.ts +5 -0
  156. package/esm/core/utils/hooks/useTheme.js +20 -14
  157. package/esm/types/react-table-config.d.ts +18 -0
  158. package/package.json +3 -2
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SkipToContentLink = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ var SkipToContentLink_1 = require("./SkipToContentLink");
9
+ Object.defineProperty(exports, "SkipToContentLink", { enumerable: true, get: function () { return SkipToContentLink_1.SkipToContentLink; } });
10
+ exports.default = './SkipToContentLink';
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { CommonProps } from '../utils';
3
+ import '@itwin/itwinui-css/css/surface.css';
4
+ export declare type SurfaceProps = {
5
+ /**
6
+ * Sets the elevation of the surface
7
+ * @default 0
8
+ */
9
+ elevation?: 0 | 1 | 2 | 3 | 4 | 5;
10
+ /**
11
+ * Content in the surface.
12
+ */
13
+ children: React.ReactNode;
14
+ } & Omit<CommonProps, 'title'>;
15
+ /**
16
+ * The Surface container allows content to appear elevated through the use of a drop shadow
17
+ * @example
18
+ * <Surface>Surface Content</Surface>
19
+ * <Surface elevation={2}>Surface Content</Surface>
20
+ */
21
+ export declare const Surface: React.ForwardRefExoticComponent<{
22
+ /**
23
+ * Sets the elevation of the surface
24
+ * @default 0
25
+ */
26
+ elevation?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
27
+ /**
28
+ * Content in the surface.
29
+ */
30
+ children: React.ReactNode;
31
+ } & Omit<CommonProps, "title"> & React.RefAttributes<HTMLDivElement>>;
32
+ export default Surface;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.Surface = void 0;
29
+ /*---------------------------------------------------------------------------------------------
30
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
31
+ * See LICENSE.md in the project root for license terms and full copyright notice.
32
+ *--------------------------------------------------------------------------------------------*/
33
+ var react_1 = __importDefault(require("react"));
34
+ var classnames_1 = __importDefault(require("classnames"));
35
+ var utils_1 = require("../utils");
36
+ require("@itwin/itwinui-css/css/surface.css");
37
+ /**
38
+ * Helper function that returns one of the preset surface elevation values.
39
+ */
40
+ var getSurfaceElevationValue = function (elevation) {
41
+ switch (elevation) {
42
+ case 1:
43
+ return '0 1px 5px rgba(0, 0, 0, 0.25)';
44
+ case 2:
45
+ return '0 1px 10px rgba(0, 0, 0, 0.25)';
46
+ case 3:
47
+ return '0 3px 14px rgba(0, 0, 0, 0.25)';
48
+ case 4:
49
+ return '0 6px 30px rgba(0, 0, 0, 0.25)';
50
+ case 5:
51
+ return '0 9px 46px rgba(0, 0, 0, 0.25)';
52
+ default:
53
+ return 'none';
54
+ }
55
+ };
56
+ /**
57
+ * The Surface container allows content to appear elevated through the use of a drop shadow
58
+ * @example
59
+ * <Surface>Surface Content</Surface>
60
+ * <Surface elevation={2}>Surface Content</Surface>
61
+ */
62
+ exports.Surface = react_1.default.forwardRef(function (props, ref) {
63
+ var _a, _b, _c;
64
+ var _d = props.elevation, elevation = _d === void 0 ? 0 : _d, className = props.className, style = props.style, children = props.children, rest = __rest(props, ["elevation", "className", "style", "children"]);
65
+ (0, utils_1.useTheme)();
66
+ var _style = ((_c = (_b = (_a = (0, utils_1.getWindow)()) === null || _a === void 0 ? void 0 : _a.CSS) === null || _b === void 0 ? void 0 : _b.supports) === null || _c === void 0 ? void 0 : _c.call(_b, "--iui-surface-elevation: " + getSurfaceElevationValue(elevation)))
67
+ ? __assign({ '--iui-surface-elevation': getSurfaceElevationValue(elevation) }, style) : __assign({ boxShadow: getSurfaceElevationValue(elevation) }, style);
68
+ return (react_1.default.createElement("div", __assign({ className: (0, classnames_1.default)('iui-surface', className), style: _style, ref: ref }, rest), children));
69
+ });
70
+ exports.default = exports.Surface;
@@ -0,0 +1,4 @@
1
+ export { Surface } from './Surface';
2
+ export type { SurfaceProps } from './Surface';
3
+ declare const _default: "./Surface";
4
+ export default _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Surface = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ var Surface_1 = require("./Surface");
9
+ Object.defineProperty(exports, "Surface", { enumerable: true, get: function () { return Surface_1.Surface; } });
10
+ exports.default = './Surface';
@@ -3,6 +3,7 @@ import { CellProps, TableOptions, Row, TableState } from 'react-table';
3
3
  import { CommonProps } from '../utils';
4
4
  import '@itwin/itwinui-css/css/table.css';
5
5
  import { TableFilterValue } from './filters';
6
+ export declare const tableResizeStartAction = "tableResizeStart";
6
7
  export declare type TablePaginatorRendererProps = {
7
8
  /**
8
9
  * The zero-based index of the current page.
@@ -63,6 +64,12 @@ export declare type TableProps<T extends Record<string, unknown> = Record<string
63
64
  * Handler for when a row is clicked. Must be memoized.
64
65
  */
65
66
  onRowClick?: (event: React.MouseEvent, row: Row<T>) => void;
67
+ /**
68
+ * Modify the selection mode of the table.
69
+ * The column with checkboxes will not be present with 'single' selection mode.
70
+ * @default 'multi'
71
+ */
72
+ selectionMode?: 'multi' | 'single';
66
73
  /**
67
74
  * Flag whether table columns can be sortable.
68
75
  * @default false
@@ -25,7 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  return (mod && mod.__esModule) ? mod : { "default": mod };
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.Table = void 0;
28
+ exports.Table = exports.tableResizeStartAction = void 0;
29
29
  /*---------------------------------------------------------------------------------------------
30
30
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
31
31
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -44,11 +44,10 @@ var filters_1 = require("./filters");
44
44
  var customFilterFunctions_1 = require("./filters/customFilterFunctions");
45
45
  var hooks_1 = require("./hooks");
46
46
  var actionHandlers_1 = require("./actionHandlers");
47
- var selectHandler_1 = require("./actionHandlers/selectHandler");
48
- var resizeHandler_1 = require("./actionHandlers/resizeHandler");
49
47
  var VirtualScroll_1 = __importDefault(require("../utils/components/VirtualScroll"));
48
+ var columns_1 = require("./columns");
50
49
  var singleRowSelectedAction = 'singleRowSelected';
51
- var tableResizeStartAction = 'tableResizeStart';
50
+ exports.tableResizeStartAction = 'tableResizeStart';
52
51
  var tableResizeEndAction = 'tableResizeEnd';
53
52
  /**
54
53
  * Table based on [react-table](https://react-table.tanstack.com/docs/api/overview).
@@ -94,9 +93,10 @@ var tableResizeEndAction = 'tableResizeEnd';
94
93
  */
95
94
  var Table = function (props) {
96
95
  var _a;
97
- var data = props.data, columns = props.columns, _b = props.isLoading, isLoading = _b === void 0 ? false : _b, emptyTableContent = props.emptyTableContent, className = props.className, style = props.style, id = props.id, _c = props.isSelectable, isSelectable = _c === void 0 ? false : _c, onSelect = props.onSelect, onRowClick = props.onRowClick, _d = props.isSortable, isSortable = _d === void 0 ? false : _d, onSort = props.onSort, stateReducer = props.stateReducer, onBottomReached = props.onBottomReached, onRowInViewport = props.onRowInViewport, _e = props.intersectionMargin, intersectionMargin = _e === void 0 ? 300 : _e, subComponent = props.subComponent, onExpand = props.onExpand, onFilter = props.onFilter, emptyFilteredTableContent = props.emptyFilteredTableContent, filterFunctions = props.filterTypes, expanderCell = props.expanderCell, isRowDisabled = props.isRowDisabled, rowProps = props.rowProps, _f = props.density, density = _f === void 0 ? 'default' : _f, _g = props.selectSubRows, selectSubRows = _g === void 0 ? true : _g, getSubRows = props.getSubRows, _h = props.selectRowOnClick, selectRowOnClick = _h === void 0 ? true : _h, paginatorRenderer = props.paginatorRenderer, _j = props.pageSize, pageSize = _j === void 0 ? 25 : _j, _k = props.isResizable, isResizable = _k === void 0 ? false : _k, _l = props.styleType, styleType = _l === void 0 ? 'default' : _l, _m = props.enableVirtualization, enableVirtualization = _m === void 0 ? false : _m, _o = props.enableColumnReordering, enableColumnReordering = _o === void 0 ? false : _o, rest = __rest(props, ["data", "columns", "isLoading", "emptyTableContent", "className", "style", "id", "isSelectable", "onSelect", "onRowClick", "isSortable", "onSort", "stateReducer", "onBottomReached", "onRowInViewport", "intersectionMargin", "subComponent", "onExpand", "onFilter", "emptyFilteredTableContent", "filterTypes", "expanderCell", "isRowDisabled", "rowProps", "density", "selectSubRows", "getSubRows", "selectRowOnClick", "paginatorRenderer", "pageSize", "isResizable", "styleType", "enableVirtualization", "enableColumnReordering"]);
96
+ var _b;
97
+ var data = props.data, columns = props.columns, _c = props.isLoading, isLoading = _c === void 0 ? false : _c, emptyTableContent = props.emptyTableContent, className = props.className, style = props.style, id = props.id, _d = props.isSelectable, isSelectable = _d === void 0 ? false : _d, onSelect = props.onSelect, onRowClick = props.onRowClick, _e = props.selectionMode, selectionMode = _e === void 0 ? 'multi' : _e, _f = props.isSortable, isSortable = _f === void 0 ? false : _f, onSort = props.onSort, stateReducer = props.stateReducer, onBottomReached = props.onBottomReached, onRowInViewport = props.onRowInViewport, _g = props.intersectionMargin, intersectionMargin = _g === void 0 ? 300 : _g, subComponent = props.subComponent, onExpand = props.onExpand, onFilter = props.onFilter, emptyFilteredTableContent = props.emptyFilteredTableContent, filterFunctions = props.filterTypes, expanderCell = props.expanderCell, isRowDisabled = props.isRowDisabled, rowProps = props.rowProps, _h = props.density, density = _h === void 0 ? 'default' : _h, _j = props.selectSubRows, selectSubRows = _j === void 0 ? true : _j, getSubRows = props.getSubRows, _k = props.selectRowOnClick, selectRowOnClick = _k === void 0 ? true : _k, paginatorRenderer = props.paginatorRenderer, _l = props.pageSize, pageSize = _l === void 0 ? 25 : _l, _m = props.isResizable, isResizable = _m === void 0 ? false : _m, _o = props.styleType, styleType = _o === void 0 ? 'default' : _o, _p = props.enableVirtualization, enableVirtualization = _p === void 0 ? false : _p, _q = props.enableColumnReordering, enableColumnReordering = _q === void 0 ? false : _q, rest = __rest(props, ["data", "columns", "isLoading", "emptyTableContent", "className", "style", "id", "isSelectable", "onSelect", "onRowClick", "selectionMode", "isSortable", "onSort", "stateReducer", "onBottomReached", "onRowInViewport", "intersectionMargin", "subComponent", "onExpand", "onFilter", "emptyFilteredTableContent", "filterTypes", "expanderCell", "isRowDisabled", "rowProps", "density", "selectSubRows", "getSubRows", "selectRowOnClick", "paginatorRenderer", "pageSize", "isResizable", "styleType", "enableVirtualization", "enableColumnReordering"]);
98
98
  (0, utils_1.useTheme)();
99
- var _p = react_1.default.useState(), ownerDocument = _p[0], setOwnerDocument = _p[1];
99
+ var _r = react_1.default.useState(), ownerDocument = _r[0], setOwnerDocument = _r[1];
100
100
  var defaultColumn = react_1.default.useMemo(function () { return ({
101
101
  maxWidth: 0,
102
102
  minWidth: 0,
@@ -109,6 +109,7 @@ var Table = function (props) {
109
109
  onBottomReachedRef.current = onBottomReached;
110
110
  onRowInViewportRef.current = onRowInViewport;
111
111
  }, [onBottomReached, onRowInViewport]);
112
+ var hasManualSelectionColumn = (_b = columns[0]) === null || _b === void 0 ? void 0 : _b.columns.some(function (column) { return column.id === columns_1.SELECTION_CELL_ID; });
112
113
  var tableStateReducer = react_1.default.useCallback(function (newState, action, previousState, instance) {
113
114
  switch (action.type) {
114
115
  case react_table_1.actions.toggleSortBy:
@@ -122,21 +123,25 @@ var Table = function (props) {
122
123
  (0, actionHandlers_1.onExpandHandler)(newState, instance, onExpand);
123
124
  break;
124
125
  case singleRowSelectedAction: {
125
- newState = (0, selectHandler_1.onSingleSelectHandler)(newState, action, instance, onSelect, isRowDisabled);
126
+ newState = (0, actionHandlers_1.onSingleSelectHandler)(newState, action, instance, onSelect,
127
+ // If it has manual selection column, then we can't check whether row is disabled
128
+ hasManualSelectionColumn ? undefined : isRowDisabled);
126
129
  break;
127
130
  }
128
131
  case react_table_1.actions.toggleRowSelected:
129
132
  case react_table_1.actions.toggleAllRowsSelected:
130
133
  case react_table_1.actions.toggleAllPageRowsSelected: {
131
- (0, actionHandlers_1.onSelectHandler)(newState, instance, onSelect, isRowDisabled);
134
+ (0, actionHandlers_1.onSelectHandler)(newState, instance, onSelect,
135
+ // If it has manual selection column, then we can't check whether row is disabled
136
+ hasManualSelectionColumn ? undefined : isRowDisabled);
132
137
  break;
133
138
  }
134
- case tableResizeStartAction: {
135
- newState = (0, resizeHandler_1.onTableResizeStart)(newState);
139
+ case exports.tableResizeStartAction: {
140
+ newState = (0, actionHandlers_1.onTableResizeStart)(newState);
136
141
  break;
137
142
  }
138
143
  case tableResizeEndAction: {
139
- newState = (0, resizeHandler_1.onTableResizeEnd)(newState, action);
144
+ newState = (0, actionHandlers_1.onTableResizeEnd)(newState, action);
140
145
  break;
141
146
  }
142
147
  default:
@@ -145,14 +150,22 @@ var Table = function (props) {
145
150
  return stateReducer
146
151
  ? stateReducer(newState, action, previousState, instance)
147
152
  : newState;
148
- }, [isRowDisabled, onExpand, onFilter, onSelect, onSort, stateReducer]);
153
+ }, [
154
+ hasManualSelectionColumn,
155
+ isRowDisabled,
156
+ onExpand,
157
+ onFilter,
158
+ onSelect,
159
+ onSort,
160
+ stateReducer,
161
+ ]);
149
162
  var filterTypes = react_1.default.useMemo(function () { return (__assign(__assign({}, customFilterFunctions_1.customFilterFunctions), filterFunctions)); }, [filterFunctions]);
150
163
  var hasAnySubRows = react_1.default.useMemo(function () {
151
164
  return data.some(function (item, index) {
152
165
  return getSubRows ? getSubRows(item, index) : item.subRows;
153
166
  });
154
167
  }, [data, getSubRows]);
155
- var instance = (0, react_table_1.useTable)(__assign(__assign({ manualPagination: !paginatorRenderer, paginateExpandedRows: false }, props), { columns: columns, defaultColumn: defaultColumn, disableSortBy: !isSortable, stateReducer: tableStateReducer, filterTypes: filterTypes, selectSubRows: selectSubRows, data: data, getSubRows: getSubRows, initialState: __assign({ pageSize: pageSize }, props.initialState) }), react_table_1.useFlexLayout, (0, hooks_1.useResizeColumns)(ownerDocument), react_table_1.useFilters, (0, hooks_1.useSubRowFiltering)(hasAnySubRows), react_table_1.useSortBy, react_table_1.useExpanded, react_table_1.usePagination, react_table_1.useRowSelect, hooks_1.useSubRowSelection, (0, hooks_1.useExpanderCell)(subComponent, expanderCell, isRowDisabled), (0, hooks_1.useSelectionCell)(isSelectable, isRowDisabled), react_table_1.useColumnOrder, (0, hooks_1.useColumnDragAndDrop)(enableColumnReordering));
168
+ var instance = (0, react_table_1.useTable)(__assign(__assign({ manualPagination: !paginatorRenderer, paginateExpandedRows: false }, props), { columns: columns, defaultColumn: defaultColumn, disableSortBy: !isSortable, stateReducer: tableStateReducer, filterTypes: filterTypes, selectSubRows: selectSubRows, data: data, getSubRows: getSubRows, initialState: __assign({ pageSize: pageSize }, props.initialState) }), react_table_1.useFlexLayout, (0, hooks_1.useResizeColumns)(ownerDocument), react_table_1.useFilters, (0, hooks_1.useSubRowFiltering)(hasAnySubRows), react_table_1.useSortBy, react_table_1.useExpanded, react_table_1.usePagination, react_table_1.useRowSelect, hooks_1.useSubRowSelection, (0, hooks_1.useExpanderCell)(subComponent, expanderCell, isRowDisabled), (0, hooks_1.useSelectionCell)(isSelectable, selectionMode, isRowDisabled), react_table_1.useColumnOrder, (0, hooks_1.useColumnDragAndDrop)(enableColumnReordering));
156
169
  var getTableProps = instance.getTableProps, rows = instance.rows, headerGroups = instance.headerGroups, getTableBodyProps = instance.getTableBodyProps, prepareRow = instance.prepareRow, state = instance.state, allColumns = instance.allColumns, filteredFlatRows = instance.filteredFlatRows, dispatch = instance.dispatch, page = instance.page, gotoPage = instance.gotoPage, setPageSize = instance.setPageSize, flatHeaders = instance.flatHeaders;
157
170
  var ariaDataAttributes = Object.entries(rest).reduce(function (result, _a) {
158
171
  var key = _a[0], value = _a[1];
@@ -164,8 +177,14 @@ var Table = function (props) {
164
177
  var areFiltersSet = allColumns.some(function (column) { return !!column.filterValue; });
165
178
  var onRowClickHandler = react_1.default.useCallback(function (event, row) {
166
179
  var isDisabled = isRowDisabled === null || isRowDisabled === void 0 ? void 0 : isRowDisabled(row.original);
167
- if (isSelectable && !isDisabled && selectRowOnClick) {
168
- if (!row.isSelected && !event.ctrlKey) {
180
+ if (!isDisabled) {
181
+ onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(event, row);
182
+ }
183
+ if (isSelectable &&
184
+ !isDisabled &&
185
+ selectRowOnClick &&
186
+ !event.isDefaultPrevented()) {
187
+ if (!row.isSelected && (selectionMode === 'single' || !event.ctrlKey)) {
169
188
  dispatch({
170
189
  type: singleRowSelectedAction,
171
190
  id: row.id,
@@ -175,10 +194,14 @@ var Table = function (props) {
175
194
  row.toggleRowSelected(!row.isSelected);
176
195
  }
177
196
  }
178
- if (!isDisabled) {
179
- onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(event, row);
180
- }
181
- }, [isRowDisabled, isSelectable, selectRowOnClick, dispatch, onRowClick]);
197
+ }, [
198
+ isRowDisabled,
199
+ isSelectable,
200
+ selectRowOnClick,
201
+ selectionMode,
202
+ dispatch,
203
+ onRowClick,
204
+ ]);
182
205
  react_1.default.useEffect(function () {
183
206
  setPageSize(pageSize);
184
207
  }, [pageSize, setPageSize]);
@@ -217,7 +240,7 @@ var Table = function (props) {
217
240
  if (Object.keys(state.columnResizing.columnWidths).length === 0) {
218
241
  return;
219
242
  }
220
- dispatch({ type: tableResizeStartAction });
243
+ dispatch({ type: exports.tableResizeStartAction });
221
244
  }, [dispatch, state.columnResizing.columnWidths, flatHeaders]);
222
245
  var resizeRef = (0, utils_1.useResizeObserver)(onTableResize)[0];
223
246
  // Flexbox handles columns resize so we take new column widths before browser repaints.
@@ -234,11 +257,12 @@ var Table = function (props) {
234
257
  });
235
258
  var headerRef = react_1.default.useRef(null);
236
259
  var bodyRef = react_1.default.useRef(null);
237
- var getPreparedRow = react_1.default.useCallback(function (row) {
260
+ var getPreparedRow = react_1.default.useCallback(function (index) {
261
+ var row = page[index];
238
262
  prepareRow(row);
239
- return (react_1.default.createElement(TableRowMemoized_1.TableRowMemoized, { row: row, rowProps: rowProps, isLast: row.index === data.length - 1, onRowInViewport: onRowInViewportRef, onBottomReached: onBottomReachedRef, intersectionMargin: intersectionMargin, state: state, key: row.getRowProps().key, onClick: onRowClickHandler, subComponent: subComponent, isDisabled: !!(isRowDisabled === null || isRowDisabled === void 0 ? void 0 : isRowDisabled(row.original)), tableHasSubRows: hasAnySubRows, tableInstance: instance, expanderCell: expanderCell }));
263
+ return (react_1.default.createElement(TableRowMemoized_1.TableRowMemoized, { row: row, rowProps: rowProps, isLast: index === page.length - 1, onRowInViewport: onRowInViewportRef, onBottomReached: onBottomReachedRef, intersectionMargin: intersectionMargin, state: state, key: row.getRowProps().key, onClick: onRowClickHandler, subComponent: subComponent, isDisabled: !!(isRowDisabled === null || isRowDisabled === void 0 ? void 0 : isRowDisabled(row.original)), tableHasSubRows: hasAnySubRows, tableInstance: instance, expanderCell: expanderCell }));
240
264
  }, [
241
- data.length,
265
+ page,
242
266
  expanderCell,
243
267
  hasAnySubRows,
244
268
  instance,
@@ -250,7 +274,7 @@ var Table = function (props) {
250
274
  state,
251
275
  subComponent,
252
276
  ]);
253
- var virtualizedItemRenderer = react_1.default.useCallback(function (index) { return getPreparedRow(page[index]); }, [getPreparedRow, page]);
277
+ var virtualizedItemRenderer = react_1.default.useCallback(function (index) { return getPreparedRow(index); }, [getPreparedRow]);
254
278
  return (react_1.default.createElement(react_1.default.Fragment, null,
255
279
  react_1.default.createElement("div", __assign({ ref: function (element) {
256
280
  setOwnerDocument(element === null || element === void 0 ? void 0 : element.ownerDocument);
@@ -274,8 +298,8 @@ var Table = function (props) {
274
298
  }
275
299
  } }),
276
300
  column.render('Header'),
277
- !isLoading && (data.length != 0 || areFiltersSet) && (react_1.default.createElement(filters_1.FilterToggle, { column: column, ownerDocument: ownerDocument })),
278
- !isLoading && data.length != 0 && column.canSort && (react_1.default.createElement("div", { className: 'iui-cell-end-icon' }, column.isSorted && column.isSortedDesc ? (react_1.default.createElement(SortUp_1.default, { className: 'iui-icon iui-sort', "aria-hidden": true })) : (react_1.default.createElement(SortDown_1.default, { className: 'iui-icon iui-sort', "aria-hidden": true })))),
301
+ (data.length !== 0 || areFiltersSet) && (react_1.default.createElement(filters_1.FilterToggle, { column: column, ownerDocument: ownerDocument })),
302
+ data.length !== 0 && column.canSort && (react_1.default.createElement("div", { className: 'iui-cell-end-icon' }, column.isSorted && column.isSortedDesc ? (react_1.default.createElement(SortUp_1.default, { className: 'iui-icon iui-sort', "aria-hidden": true })) : (react_1.default.createElement(SortDown_1.default, { className: 'iui-icon iui-sort', "aria-hidden": true })))),
279
303
  isResizable &&
280
304
  column.isResizerVisible &&
281
305
  index !== headerGroup.headers.length - 1 && (react_1.default.createElement("div", __assign({}, column.getResizerProps(), { className: 'iui-resizer' }),
@@ -293,7 +317,7 @@ var Table = function (props) {
293
317
  headerRef.current.scrollLeft = bodyRef.current.scrollLeft;
294
318
  }
295
319
  }, tabIndex: -1 }),
296
- data.length !== 0 && (react_1.default.createElement(react_1.default.Fragment, null, enableVirtualization ? (react_1.default.createElement(VirtualScroll_1.default, { itemsLength: page.length, itemRenderer: virtualizedItemRenderer })) : (page.map(function (row) { return getPreparedRow(row); })))),
320
+ data.length !== 0 && (react_1.default.createElement(react_1.default.Fragment, null, enableVirtualization ? (react_1.default.createElement(VirtualScroll_1.default, { itemsLength: page.length, itemRenderer: virtualizedItemRenderer })) : (page.map(function (_, index) { return getPreparedRow(index); })))),
297
321
  isLoading && data.length === 0 && (react_1.default.createElement("div", { className: 'iui-table-empty' },
298
322
  react_1.default.createElement(ProgressIndicators_1.ProgressRadial, { indeterminate: true }))),
299
323
  isLoading && data.length !== 0 && (react_1.default.createElement("div", { className: 'iui-row' },
@@ -23,12 +23,12 @@ var react_1 = __importDefault(require("react"));
23
23
  var classnames_1 = __importDefault(require("classnames"));
24
24
  var utils_1 = require("./utils");
25
25
  var SubRowExpander_1 = require("./SubRowExpander");
26
- var hooks_1 = require("./hooks");
26
+ var columns_1 = require("./columns");
27
27
  var cells_1 = require("./cells");
28
28
  var TableCell = function (props) {
29
29
  var cell = props.cell, cellIndex = props.cellIndex, isDisabled = props.isDisabled, tableHasSubRows = props.tableHasSubRows, tableInstance = props.tableInstance, expanderCell = props.expanderCell;
30
30
  var hasSubRowExpander = cellIndex ===
31
- cell.row.cells.findIndex(function (c) { return c.column.id !== hooks_1.SELECTION_CELL_ID; });
31
+ cell.row.cells.findIndex(function (c) { return c.column.id !== columns_1.SELECTION_CELL_ID; });
32
32
  var getSubRowStyle = function () {
33
33
  if (!tableHasSubRows || !hasSubRowExpander) {
34
34
  return undefined;
@@ -52,7 +52,7 @@ var TableCell = function (props) {
52
52
  cellProps: cellProps,
53
53
  children: cellContent,
54
54
  };
55
- return (react_1.default.createElement(react_1.default.Fragment, null, cell.column.cellRenderer ? (cell.column.cellRenderer(cellRendererProps)) : (react_1.default.createElement(cells_1.DefaultCell, __assign({}, cellRendererProps)))));
55
+ return (react_1.default.createElement(react_1.default.Fragment, null, cell.column.cellRenderer ? (cell.column.cellRenderer(__assign(__assign({}, cellRendererProps), { isDisabled: function () { return isDisabled; } }))) : (react_1.default.createElement(cells_1.DefaultCell, __assign({}, cellRendererProps, { isDisabled: function () { return isDisabled; } })))));
56
56
  };
57
57
  exports.TableCell = TableCell;
58
58
  exports.default = exports.TableCell;
@@ -57,7 +57,9 @@ var TableRow = function (props) {
57
57
  return (react_1.default.createElement(TableCell_1.TableCell, { key: cell.getCellProps().key, cell: cell, cellIndex: index, isDisabled: isDisabled, tableHasSubRows: tableHasSubRows, tableInstance: tableInstance, expanderCell: expanderCell }));
58
58
  })),
59
59
  subComponent && (react_1.default.createElement(utils_1.WithCSSTransition, { in: row.isExpanded },
60
- react_1.default.createElement("div", { className: 'iui-row iui-expanded-content' }, subComponent(row))))));
60
+ react_1.default.createElement("div", { className: (0, classnames_1.default)('iui-row', 'iui-expanded-content', {
61
+ 'iui-disabled': isDisabled,
62
+ }) }, subComponent(row))))));
61
63
  };
62
64
  exports.TableRow = TableRow;
63
65
  var hasAnySelectedSubRow = function (row, selectedRowIds) {
@@ -69,14 +71,17 @@ var hasAnySelectedSubRow = function (row, selectedRowIds) {
69
71
  });
70
72
  };
71
73
  exports.TableRowMemoized = react_1.default.memo(exports.TableRow, function (prevProp, nextProp) {
72
- var _a, _b, _c, _d;
74
+ var _a, _b, _c, _d, _e, _f, _g;
73
75
  return prevProp.isLast === nextProp.isLast &&
76
+ ((_a = prevProp.state.hiddenColumns) === null || _a === void 0 ? void 0 : _a.length) ===
77
+ ((_b = nextProp.state.hiddenColumns) === null || _b === void 0 ? void 0 : _b.length) &&
78
+ !!((_c = prevProp.state.hiddenColumns) === null || _c === void 0 ? void 0 : _c.every(function (column, index) { var _a; return ((_a = nextProp.state.hiddenColumns) === null || _a === void 0 ? void 0 : _a[index]) === column; })) &&
74
79
  prevProp.onRowInViewport === nextProp.onRowInViewport &&
75
80
  prevProp.onBottomReached === nextProp.onBottomReached &&
76
81
  prevProp.onClick === nextProp.onClick &&
77
82
  prevProp.row.original === nextProp.row.original &&
78
- ((_a = prevProp.state.selectedRowIds) === null || _a === void 0 ? void 0 : _a[prevProp.row.id]) ===
79
- ((_b = nextProp.state.selectedRowIds) === null || _b === void 0 ? void 0 : _b[nextProp.row.id]) &&
83
+ ((_d = prevProp.state.selectedRowIds) === null || _d === void 0 ? void 0 : _d[prevProp.row.id]) ===
84
+ ((_e = nextProp.state.selectedRowIds) === null || _e === void 0 ? void 0 : _e[nextProp.row.id]) &&
80
85
  // Check if sub-rows selection has changed and whether to show indeterminate state or not
81
86
  prevProp.row.subRows.some(function (subRow) {
82
87
  return hasAnySelectedSubRow(subRow, prevProp.state.selectedRowIds);
@@ -84,8 +89,8 @@ exports.TableRowMemoized = react_1.default.memo(exports.TableRow, function (prev
84
89
  nextProp.row.subRows.some(function (subRow) {
85
90
  return hasAnySelectedSubRow(subRow, nextProp.state.selectedRowIds);
86
91
  }) &&
87
- ((_c = prevProp.state.expanded) === null || _c === void 0 ? void 0 : _c[prevProp.row.id]) ===
88
- ((_d = nextProp.state.expanded) === null || _d === void 0 ? void 0 : _d[nextProp.row.id]) &&
92
+ ((_f = prevProp.state.expanded) === null || _f === void 0 ? void 0 : _f[prevProp.row.id]) ===
93
+ ((_g = nextProp.state.expanded) === null || _g === void 0 ? void 0 : _g[nextProp.row.id]) &&
89
94
  prevProp.subComponent === nextProp.subComponent &&
90
95
  prevProp.row.cells.every(function (cell, index) { return nextProp.row.cells[index].column === cell.column; }) &&
91
96
  prevProp.isDisabled === nextProp.isDisabled &&
@@ -94,5 +99,5 @@ exports.TableRowMemoized = react_1.default.memo(exports.TableRow, function (prev
94
99
  prevProp.tableHasSubRows === nextProp.tableHasSubRows &&
95
100
  prevProp.state.columnOrder === nextProp.state.columnOrder &&
96
101
  !nextProp.state.columnResizing.isResizingColumn &&
97
- !nextProp.state.isTableResizing;
102
+ prevProp.state.isTableResizing === nextProp.state.isTableResizing;
98
103
  });
@@ -1,3 +1,4 @@
1
1
  export { onExpandHandler } from './expandHandler';
2
2
  export { onFilterHandler } from './filterHandler';
3
- export { onSelectHandler } from './selectHandler';
3
+ export { onSelectHandler, onSingleSelectHandler } from './selectHandler';
4
+ export { onTableResizeStart, onTableResizeEnd } from './resizeHandler';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.onSelectHandler = exports.onFilterHandler = exports.onExpandHandler = void 0;
3
+ exports.onTableResizeEnd = exports.onTableResizeStart = exports.onSingleSelectHandler = exports.onSelectHandler = exports.onFilterHandler = exports.onExpandHandler = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
5
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -11,3 +11,7 @@ var filterHandler_1 = require("./filterHandler");
11
11
  Object.defineProperty(exports, "onFilterHandler", { enumerable: true, get: function () { return filterHandler_1.onFilterHandler; } });
12
12
  var selectHandler_1 = require("./selectHandler");
13
13
  Object.defineProperty(exports, "onSelectHandler", { enumerable: true, get: function () { return selectHandler_1.onSelectHandler; } });
14
+ Object.defineProperty(exports, "onSingleSelectHandler", { enumerable: true, get: function () { return selectHandler_1.onSingleSelectHandler; } });
15
+ var resizeHandler_1 = require("./resizeHandler");
16
+ Object.defineProperty(exports, "onTableResizeStart", { enumerable: true, get: function () { return resizeHandler_1.onTableResizeStart; } });
17
+ Object.defineProperty(exports, "onTableResizeEnd", { enumerable: true, get: function () { return resizeHandler_1.onTableResizeEnd; } });
@@ -12,5 +12,5 @@ export declare type DefaultCellProps<T extends Record<string, unknown>> = CellRe
12
12
  * cellRenderer: (props) => <DefaultCell {...props} />,
13
13
  * }
14
14
  */
15
- export declare const DefaultCell: <T extends Record<string, unknown>>(props: CellRendererProps<T>) => JSX.Element;
15
+ export declare const DefaultCell: <T extends Record<string, unknown>>(props: DefaultCellProps<T>) => JSX.Element;
16
16
  export default DefaultCell;
@@ -31,6 +31,7 @@ exports.DefaultCell = void 0;
31
31
  * See LICENSE.md in the project root for license terms and full copyright notice.
32
32
  *--------------------------------------------------------------------------------------------*/
33
33
  var react_1 = __importDefault(require("react"));
34
+ var classnames_1 = __importDefault(require("classnames"));
34
35
  /**
35
36
  * Default cell.
36
37
  * It should be passed to `cellRenderer`.
@@ -45,8 +46,10 @@ var react_1 = __importDefault(require("react"));
45
46
  var DefaultCell = function (props) {
46
47
  // Omitting `cellProps`
47
48
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
48
- var cellElementProps = props.cellElementProps, children = props.children, cellProps = props.cellProps, rest = __rest(props, ["cellElementProps", "children", "cellProps"]);
49
- return (react_1.default.createElement("div", __assign({}, cellElementProps, rest), children));
49
+ var _a = props.cellElementProps, cellElementClassName = _a.className, cellElementStyle = _a.style, cellElementProps = __rest(_a, ["className", "style"]), children = props.children, cellProps = props.cellProps, isDisabled = props.isDisabled, className = props.className, style = props.style, rest = __rest(props, ["cellElementProps", "children", "cellProps", "isDisabled", "className", "style"]);
50
+ return (react_1.default.createElement("div", __assign({}, cellElementProps, rest, { className: (0, classnames_1.default)(cellElementClassName, className, {
51
+ 'iui-disabled': isDisabled === null || isDisabled === void 0 ? void 0 : isDisabled(cellProps.row.original),
52
+ }), style: __assign(__assign({}, cellElementStyle), style) }), children));
50
53
  };
51
54
  exports.DefaultCell = DefaultCell;
52
55
  exports.default = exports.DefaultCell;
@@ -0,0 +1,35 @@
1
+ /// <reference types="react" />
2
+ import { HeaderProps } from 'react-table';
3
+ /**
4
+ * Action column that adds column manager to the Table header.
5
+ * It is recommended to add this column to the end of the Table
6
+ * and to override its `Cell` prop with your row actions menu.
7
+ * @example
8
+ * {
9
+ * ...ActionColumn({ columnManager: true }),
10
+ * Cell: () => (
11
+ * <DropdownMenu menuItems={menuItems}>
12
+ * <IconButton
13
+ * styleType='borderless'
14
+ * onClick={(e) => e.stopPropagation()}
15
+ * >
16
+ * <SvgMore />
17
+ * </IconButton>
18
+ * </DropdownMenu>
19
+ * ),
20
+ * },
21
+ */
22
+ export declare const ActionColumn: <T extends Record<string, unknown>>({ columnManager, }?: {
23
+ columnManager?: boolean | undefined;
24
+ }) => {
25
+ id: string;
26
+ disableResizing: boolean;
27
+ disableGroupBy: boolean;
28
+ minWidth: number;
29
+ width: number;
30
+ maxWidth: number;
31
+ columnClassName: string;
32
+ cellClassName: string;
33
+ disableReordering: boolean;
34
+ Header: ({ allColumns, dispatch, state }: HeaderProps<T>) => JSX.Element | null;
35
+ };
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ActionColumn = void 0;
7
+ /*---------------------------------------------------------------------------------------------
8
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
+ * See LICENSE.md in the project root for license terms and full copyright notice.
10
+ *--------------------------------------------------------------------------------------------*/
11
+ var react_1 = __importDefault(require("react"));
12
+ var Checkbox_1 = require("../../Checkbox");
13
+ var ColumnManager_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/ColumnManager"));
14
+ var DropdownMenu_1 = require("../../DropdownMenu");
15
+ var IconButton_1 = require("../../Buttons/IconButton");
16
+ var Menu_1 = require("../../Menu");
17
+ var Table_1 = require("../Table");
18
+ var selectionColumn_1 = require("./selectionColumn");
19
+ var expanderColumn_1 = require("./expanderColumn");
20
+ var ACTION_CELL_ID = 'iui-table-action';
21
+ /**
22
+ * Action column that adds column manager to the Table header.
23
+ * It is recommended to add this column to the end of the Table
24
+ * and to override its `Cell` prop with your row actions menu.
25
+ * @example
26
+ * {
27
+ * ...ActionColumn({ columnManager: true }),
28
+ * Cell: () => (
29
+ * <DropdownMenu menuItems={menuItems}>
30
+ * <IconButton
31
+ * styleType='borderless'
32
+ * onClick={(e) => e.stopPropagation()}
33
+ * >
34
+ * <SvgMore />
35
+ * </IconButton>
36
+ * </DropdownMenu>
37
+ * ),
38
+ * },
39
+ */
40
+ var ActionColumn = function (_a) {
41
+ var _b = _a === void 0 ? {} : _a, _c = _b.columnManager, columnManager = _c === void 0 ? false : _c;
42
+ return {
43
+ id: ACTION_CELL_ID,
44
+ disableResizing: true,
45
+ disableGroupBy: true,
46
+ minWidth: 48,
47
+ width: 48,
48
+ maxWidth: 48,
49
+ columnClassName: 'iui-slot',
50
+ cellClassName: 'iui-slot',
51
+ disableReordering: true,
52
+ Header: function (_a) {
53
+ var allColumns = _a.allColumns, dispatch = _a.dispatch, state = _a.state;
54
+ var _b = react_1.default.useState(false), isOpen = _b[0], setIsOpen = _b[1];
55
+ if (!columnManager) {
56
+ return null;
57
+ }
58
+ var defaultColumnIds = [
59
+ selectionColumn_1.SELECTION_CELL_ID,
60
+ expanderColumn_1.EXPANDER_CELL_ID,
61
+ ACTION_CELL_ID,
62
+ ];
63
+ var headerCheckBoxes = function () {
64
+ return allColumns
65
+ //Filters out any default columns made such as selection and expansion
66
+ .filter(function (_a) {
67
+ var id = _a.id;
68
+ return !defaultColumnIds.includes(id);
69
+ })
70
+ .map(function (column) {
71
+ var checked = column.getToggleHiddenProps().checked;
72
+ var onClick = function () {
73
+ column.toggleHidden(checked);
74
+ // If no column was resized then leave table resize handling to the flexbox
75
+ if (Object.keys(state.columnResizing.columnWidths).length === 0) {
76
+ return;
77
+ }
78
+ // Triggers an update to resize the widths of all visible columns
79
+ dispatch({ type: Table_1.tableResizeStartAction });
80
+ };
81
+ return (react_1.default.createElement(Menu_1.MenuItem, { key: column.id, icon: react_1.default.createElement(Checkbox_1.Checkbox, { checked: checked, disabled: column.disableToggleVisibility, onClick: function (e) { return e.stopPropagation(); }, onChange: onClick, "aria-labelledby": "iui-column-" + column.id }), onClick: onClick, disabled: column.disableToggleVisibility },
82
+ react_1.default.createElement("div", { id: "iui-column-" + column.id }, column.render('Header'))));
83
+ });
84
+ };
85
+ return (react_1.default.createElement(DropdownMenu_1.DropdownMenu, { menuItems: headerCheckBoxes, onHide: function () { return setIsOpen(false); }, onShow: function () { return setIsOpen(true); } },
86
+ react_1.default.createElement(IconButton_1.IconButton, { styleType: 'borderless', isActive: isOpen },
87
+ react_1.default.createElement(ColumnManager_1.default, null))));
88
+ },
89
+ };
90
+ };
91
+ exports.ActionColumn = ActionColumn;