@itwin/itwinui-react 3.13.2 → 3.13.4

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.13.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2138](https://github.com/iTwin/iTwinUI/pull/2138): Fixed an issue in `Table` column resizing where passing in a `width` value that was less than the column's default `minWidth` would cause an undesirable shift when the column was resized.
8
+ - [#2170](https://github.com/iTwin/iTwinUI/pull/2170): Fixed an issue in virtualized `Tree` where the `style` prop passed to `TreeNode` was not respected.
9
+ - [#2170](https://github.com/iTwin/iTwinUI/pull/2170): Fixed an issue in virtualized `Tree` where horizontal scroll was impossible to achieve.
10
+ - [#2174](https://github.com/iTwin/iTwinUI/pull/2174): Fixed an issue in `Table` where the virtualizer was being initialized when the `enableVirtualization` prop wasn't set to `true`.
11
+
12
+ ## 3.13.3
13
+
14
+ ### Patch Changes
15
+
16
+ - [#2163](https://github.com/iTwin/iTwinUI/pull/2163): Fixed an issue in virtualized `Table` where horizontal scroll was broken.
17
+
3
18
  ## 3.13.2
4
19
 
5
20
  ### Patch Changes
@@ -34,7 +34,7 @@ const VirtualizedComboBoxMenu = (props)=>{
34
34
  focusedIndex,
35
35
  menuRef
36
36
  ]);
37
- let virtualizer = (0, _index.useVirtualScroll)({
37
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
38
38
  count: filteredOptions.length || 1,
39
39
  getScrollElement: ()=>menuRef.current,
40
40
  estimateSize: ()=>mostlySubLabeled ? 48 : 36,
@@ -51,10 +51,8 @@ const VirtualizedComboBoxMenu = (props)=>{
51
51
  return _react.cloneElement(menuItem, {
52
52
  key: virtualItem.key,
53
53
  ref: virtualizer.measureElement,
54
+ 'data-iui-virtualizer': 'item',
54
55
  style: {
55
- position: 'absolute',
56
- top: 0,
57
- left: 0,
58
56
  width: '100%',
59
57
  transform: `translateY(${virtualItem.start}px)`
60
58
  }
@@ -65,13 +63,14 @@ const VirtualizedComboBoxMenu = (props)=>{
65
63
  children,
66
64
  virtualizer.measureElement
67
65
  ]);
68
- return _react.createElement(_react.Fragment, null, _react.createElement(_index.ShadowRoot, null, _react.createElement(_index.Box, {
66
+ return _react.createElement(_react.Fragment, null, _react.createElement(_index.ShadowRoot, {
67
+ css: virtualizerCss
68
+ }, _react.createElement(_index.Box, {
69
69
  as: "div",
70
+ "data-iui-virtualizer": "root",
70
71
  ...rest,
71
72
  style: {
72
73
  minBlockSize: virtualizer.getTotalSize(),
73
- minInlineSize: '100%',
74
- contain: 'strict',
75
74
  ...props.style
76
75
  }
77
76
  }, _react.createElement("slot", null))), _react.createElement(_react.Fragment, null, virtualizer.getVirtualItems().map((virtualItem)=>virtualItemRenderer(virtualItem))));
@@ -290,7 +290,8 @@ const Table = (props)=>{
290
290
  });
291
291
  }
292
292
  });
293
- let virtualizer = (0, _index.useVirtualScroll)({
293
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
294
+ enabled: enableVirtualization,
294
295
  count: page.length,
295
296
  getScrollElement: ()=>tableRef.current,
296
297
  estimateSize: ()=>rowHeight,
@@ -411,7 +412,10 @@ const Table = (props)=>{
411
412
  if ([
412
413
  void 0,
413
414
  0
414
- ].includes(column.minWidth)) column.minWidth = columnHasExpanders ? COLUMN_MIN_WIDTHS.withExpander : COLUMN_MIN_WIDTHS.default;
415
+ ].includes(column.minWidth)) {
416
+ column.minWidth = columnHasExpanders ? COLUMN_MIN_WIDTHS.withExpander : COLUMN_MIN_WIDTHS.default;
417
+ if ('number' == typeof column.width && column.minWidth > column.width) column.minWidth = column.width;
418
+ }
415
419
  let columnProps = column.getHeaderProps({
416
420
  ...restSortProps,
417
421
  className: (0, _classnames.default)('iui-table-cell', {
@@ -500,11 +504,12 @@ const Table = (props)=>{
500
504
  }),
501
505
  tabIndex: -1,
502
506
  "aria-multiselectable": isSelectable && 'multi' === selectionMode || void 0
503
- }, _react.createElement(_index.ShadowRoot, null, enableVirtualization && 0 !== data.length ? _react.createElement("div", {
507
+ }, _react.createElement(_index.ShadowRoot, {
508
+ css: virtualizerCss
509
+ }, enableVirtualization && 0 !== data.length ? _react.createElement("div", {
510
+ "data-iui-virtualizer": "root",
504
511
  style: {
505
- minBlockSize: virtualizer.getTotalSize(),
506
- minInlineSize: '100%',
507
- contain: 'strict'
512
+ minBlockSize: virtualizer.getTotalSize()
508
513
  }
509
514
  }, _react.createElement("slot", null)) : _react.createElement("slot", null)), 0 !== data.length && _react.createElement(_react.Fragment, null, enableVirtualization ? virtualizer.getVirtualItems().map((virtualItem)=>getPreparedRow(virtualItem.index, virtualItem, virtualizer)) : page.map((_, index)=>getPreparedRow(index))), isLoading && 0 === data.length && _react.createElement(_index.Box, {
510
515
  as: "div",
@@ -51,22 +51,24 @@ const TableRow = (props)=>{
51
51
  flex: "0 0 auto",
52
52
  minWidth: '100%',
53
53
  ...null != virtualItem ? {
54
- position: 'absolute',
55
- top: 0,
56
- left: 0,
57
54
  transform: `translateY(${virtualItem.start}px)`
58
55
  } : {}
59
56
  }
60
57
  }),
61
58
  ...restUserRowProps,
62
- className: (0, _classnames.default)('iui-table-row', {
63
- 'iui-table-row-expanded': row.isExpanded && subComponent,
64
- 'iui-loading': isLoading
65
- }, userRowProps?.className),
66
- 'aria-selected': row.isSelected || void 0,
67
- 'aria-disabled': isDisabled || void 0,
68
- 'data-iui-status': status,
69
- 'data-iui-index': virtualItem?.index
59
+ ...{
60
+ className: (0, _classnames.default)('iui-table-row', {
61
+ 'iui-table-row-expanded': row.isExpanded && subComponent,
62
+ 'iui-loading': isLoading
63
+ }, userRowProps?.className),
64
+ 'aria-selected': row.isSelected || void 0,
65
+ 'aria-disabled': isDisabled || void 0,
66
+ 'data-iui-status': status,
67
+ 'data-iui-index': virtualItem?.index,
68
+ ...null != virtualItem && {
69
+ 'data-iui-virtualizer': 'item'
70
+ }
71
+ }
70
72
  };
71
73
  let refs = (0, _index.useMergedRefs)(intersectionRef, mergedProps.ref, tableRowRef, virtualizer?.measureElement);
72
74
  return _react.createElement(_react.Fragment, null, _react.createElement(_index.Box, {
@@ -105,12 +105,11 @@ const Tree = (props)=>{
105
105
  ...children.props,
106
106
  key: virtualItem.key,
107
107
  'data-iui-index': virtualItem.index,
108
+ 'data-iui-virtualizer': 'item',
108
109
  ref: virtualizer.measureElement,
109
110
  style: {
110
- position: 'absolute',
111
- top: 0,
112
- left: 0,
113
- width: '100%',
111
+ ...children.props.style,
112
+ '--_iui-width': '100%',
114
113
  transform: `translateY(${virtualItem.start}px)`
115
114
  }
116
115
  })) : nodeRenderer(node.nodeProps));
@@ -174,7 +173,7 @@ const VirtualizedTree = _react.forwardRef(({ flatNodesList, itemRenderer, scroll
174
173
  let getItemKey = _react.useCallback((index)=>flatNodesList[index].nodeProps.nodeId, [
175
174
  flatNodesList
176
175
  ]);
177
- let virtualizer = (0, _index.useVirtualScroll)({
176
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
178
177
  count: flatNodesList.length,
179
178
  getScrollElement: ()=>parentRef.current,
180
179
  estimateSize: ()=>39,
@@ -189,10 +188,12 @@ const VirtualizedTree = _react.forwardRef(({ flatNodesList, itemRenderer, scroll
189
188
  return _react.createElement(TreeElement, {
190
189
  ...rest,
191
190
  ref: (0, _index.useMergedRefs)(ref, parentRef)
192
- }, _react.createElement(_index.ShadowRoot, null, _react.createElement("div", {
191
+ }, _react.createElement(_index.ShadowRoot, {
192
+ css: virtualizerCss
193
+ }, _react.createElement("div", {
194
+ "data-iui-virtualizer": "root",
193
195
  style: {
194
- minBlockSize: virtualizer.getTotalSize(),
195
- contain: 'strict'
196
+ minBlockSize: virtualizer.getTotalSize()
196
197
  }
197
198
  }, _react.createElement("slot", null))), _react.createElement(_react.Fragment, null, virtualizer.getVirtualItems().map((virtualItem)=>itemRenderer(virtualItem.index, virtualItem, virtualizer))));
198
199
  });
package/DEV-cjs/styles.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="3.13.2";const u=new Proxy({},{get(t,i){if(typeof i=="string"&&i.startsWith("iui-"))return i.replace("iui-",`_iui${e.replace(/\./g,"")}-`)},has(t,i){return typeof i=="string"&&i.startsWith("iui-")}});exports.styles=u;exports.version=e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="3.13.4";const u=new Proxy({},{get(t,i){if(typeof i=="string"&&i.startsWith("iui-"))return i.replace("iui-",`_iui${e.replace(/\./g,"")}-`)},has(t,i){return typeof i=="string"&&i.startsWith("iui-")}});exports.styles=u;exports.version=e;
@@ -11,28 +11,49 @@ Object.defineProperty(exports, "useVirtualScroll", {
11
11
  const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
12
12
  const _reactvirtual = require("@tanstack/react-virtual");
13
13
  const _react = _interop_require_default._(require("react"));
14
+ const css = `
15
+ :host {
16
+ contain: layout;
17
+ background-color: var(--iui-color-background);
18
+ }
19
+ [data-iui-virtualizer='root'] {
20
+ min-inline-size: 100%;
21
+ position: relative;
22
+ }
23
+ ::slotted([data-iui-virtualizer='item']) {
24
+ position: absolute !important;
25
+ top: 0 !important;
26
+ left: 0 !important;
27
+ }
28
+ `;
14
29
  const useVirtualScroll = (params)=>{
15
30
  let { ...rest } = params;
16
- let virtualizer = (0, _reactvirtual.useVirtualizer)({
31
+ let _virtualizer = (0, _reactvirtual.useVirtualizer)({
17
32
  indexAttribute: 'data-iui-index',
18
33
  overscan: 10,
19
34
  ...rest
20
35
  });
21
36
  let scrollToIndex = _react.default.useCallback((index, options)=>{
22
37
  setTimeout(()=>{
23
- virtualizer.scrollToIndex(index, {
38
+ _virtualizer.scrollToIndex(index, {
24
39
  align: 'auto',
25
40
  ...options
26
41
  });
27
42
  });
28
43
  }, [
29
- virtualizer
44
+ _virtualizer
30
45
  ]);
31
- return _react.default.useMemo(()=>({
32
- ...virtualizer,
46
+ let virtualizer = _react.default.useMemo(()=>({
47
+ ..._virtualizer,
33
48
  scrollToIndex
34
49
  }), [
35
- virtualizer,
50
+ _virtualizer,
36
51
  scrollToIndex
37
52
  ]);
53
+ return _react.default.useMemo(()=>({
54
+ virtualizer,
55
+ css
56
+ }), [
57
+ virtualizer
58
+ ]);
38
59
  };
@@ -22,7 +22,7 @@ let VirtualizedComboBoxMenu = (props)=>{
22
22
  focusedIndex,
23
23
  menuRef
24
24
  ]);
25
- let virtualizer = useVirtualScroll({
25
+ let { virtualizer, css: virtualizerCss } = useVirtualScroll({
26
26
  count: filteredOptions.length || 1,
27
27
  getScrollElement: ()=>menuRef.current,
28
28
  estimateSize: ()=>mostlySubLabeled ? 48 : 36,
@@ -39,10 +39,8 @@ let VirtualizedComboBoxMenu = (props)=>{
39
39
  return React.cloneElement(menuItem, {
40
40
  key: virtualItem.key,
41
41
  ref: virtualizer.measureElement,
42
+ 'data-iui-virtualizer': 'item',
42
43
  style: {
43
- position: 'absolute',
44
- top: 0,
45
- left: 0,
46
44
  width: '100%',
47
45
  transform: `translateY(${virtualItem.start}px)`
48
46
  }
@@ -53,13 +51,14 @@ let VirtualizedComboBoxMenu = (props)=>{
53
51
  children,
54
52
  virtualizer.measureElement
55
53
  ]);
56
- return React.createElement(React.Fragment, null, React.createElement(ShadowRoot, null, React.createElement(Box, {
54
+ return React.createElement(React.Fragment, null, React.createElement(ShadowRoot, {
55
+ css: virtualizerCss
56
+ }, React.createElement(Box, {
57
57
  as: "div",
58
+ "data-iui-virtualizer": "root",
58
59
  ...rest,
59
60
  style: {
60
61
  minBlockSize: virtualizer.getTotalSize(),
61
- minInlineSize: '100%',
62
- contain: 'strict',
63
62
  ...props.style
64
63
  }
65
64
  }, React.createElement("slot", null))), React.createElement(React.Fragment, null, virtualizer.getVirtualItems().map((virtualItem)=>virtualItemRenderer(virtualItem))));
@@ -270,7 +270,8 @@ export const Table = (props)=>{
270
270
  });
271
271
  }
272
272
  });
273
- let virtualizer = useVirtualScroll({
273
+ let { virtualizer, css: virtualizerCss } = useVirtualScroll({
274
+ enabled: enableVirtualization,
274
275
  count: page.length,
275
276
  getScrollElement: ()=>tableRef.current,
276
277
  estimateSize: ()=>rowHeight,
@@ -391,7 +392,10 @@ export const Table = (props)=>{
391
392
  if ([
392
393
  void 0,
393
394
  0
394
- ].includes(column.minWidth)) column.minWidth = columnHasExpanders ? COLUMN_MIN_WIDTHS.withExpander : COLUMN_MIN_WIDTHS.default;
395
+ ].includes(column.minWidth)) {
396
+ column.minWidth = columnHasExpanders ? COLUMN_MIN_WIDTHS.withExpander : COLUMN_MIN_WIDTHS.default;
397
+ if ('number' == typeof column.width && column.minWidth > column.width) column.minWidth = column.width;
398
+ }
395
399
  let columnProps = column.getHeaderProps({
396
400
  ...restSortProps,
397
401
  className: cx('iui-table-cell', {
@@ -480,11 +484,12 @@ export const Table = (props)=>{
480
484
  }),
481
485
  tabIndex: -1,
482
486
  "aria-multiselectable": isSelectable && 'multi' === selectionMode || void 0
483
- }, React.createElement(ShadowRoot, null, enableVirtualization && 0 !== data.length ? React.createElement("div", {
487
+ }, React.createElement(ShadowRoot, {
488
+ css: virtualizerCss
489
+ }, enableVirtualization && 0 !== data.length ? React.createElement("div", {
490
+ "data-iui-virtualizer": "root",
484
491
  style: {
485
- minBlockSize: virtualizer.getTotalSize(),
486
- minInlineSize: '100%',
487
- contain: 'strict'
492
+ minBlockSize: virtualizer.getTotalSize()
488
493
  }
489
494
  }, React.createElement("slot", null)) : React.createElement("slot", null)), 0 !== data.length && React.createElement(React.Fragment, null, enableVirtualization ? virtualizer.getVirtualItems().map((virtualItem)=>getPreparedRow(virtualItem.index, virtualItem, virtualizer)) : page.map((_, index)=>getPreparedRow(index))), isLoading && 0 === data.length && React.createElement(Box, {
490
495
  as: "div",
@@ -31,22 +31,24 @@ export const TableRow = (props)=>{
31
31
  flex: "0 0 auto",
32
32
  minWidth: '100%',
33
33
  ...null != virtualItem ? {
34
- position: 'absolute',
35
- top: 0,
36
- left: 0,
37
34
  transform: `translateY(${virtualItem.start}px)`
38
35
  } : {}
39
36
  }
40
37
  }),
41
38
  ...restUserRowProps,
42
- className: cx('iui-table-row', {
43
- 'iui-table-row-expanded': row.isExpanded && subComponent,
44
- 'iui-loading': isLoading
45
- }, userRowProps?.className),
46
- 'aria-selected': row.isSelected || void 0,
47
- 'aria-disabled': isDisabled || void 0,
48
- 'data-iui-status': status,
49
- 'data-iui-index': virtualItem?.index
39
+ ...{
40
+ className: cx('iui-table-row', {
41
+ 'iui-table-row-expanded': row.isExpanded && subComponent,
42
+ 'iui-loading': isLoading
43
+ }, userRowProps?.className),
44
+ 'aria-selected': row.isSelected || void 0,
45
+ 'aria-disabled': isDisabled || void 0,
46
+ 'data-iui-status': status,
47
+ 'data-iui-index': virtualItem?.index,
48
+ ...null != virtualItem && {
49
+ 'data-iui-virtualizer': 'item'
50
+ }
51
+ }
50
52
  };
51
53
  let refs = useMergedRefs(intersectionRef, mergedProps.ref, tableRowRef, virtualizer?.measureElement);
52
54
  return React.createElement(React.Fragment, null, React.createElement(Box, {
@@ -94,12 +94,11 @@ export const Tree = (props)=>{
94
94
  ...children.props,
95
95
  key: virtualItem.key,
96
96
  'data-iui-index': virtualItem.index,
97
+ 'data-iui-virtualizer': 'item',
97
98
  ref: virtualizer.measureElement,
98
99
  style: {
99
- position: 'absolute',
100
- top: 0,
101
- left: 0,
102
- width: '100%',
100
+ ...children.props.style,
101
+ '--_iui-width': '100%',
103
102
  transform: `translateY(${virtualItem.start}px)`
104
103
  }
105
104
  })) : nodeRenderer(node.nodeProps));
@@ -163,7 +162,7 @@ let VirtualizedTree = React.forwardRef(({ flatNodesList, itemRenderer, scrollToI
163
162
  let getItemKey = React.useCallback((index)=>flatNodesList[index].nodeProps.nodeId, [
164
163
  flatNodesList
165
164
  ]);
166
- let virtualizer = useVirtualScroll({
165
+ let { virtualizer, css: virtualizerCss } = useVirtualScroll({
167
166
  count: flatNodesList.length,
168
167
  getScrollElement: ()=>parentRef.current,
169
168
  estimateSize: ()=>39,
@@ -178,10 +177,12 @@ let VirtualizedTree = React.forwardRef(({ flatNodesList, itemRenderer, scrollToI
178
177
  return React.createElement(TreeElement, {
179
178
  ...rest,
180
179
  ref: useMergedRefs(ref, parentRef)
181
- }, React.createElement(ShadowRoot, null, React.createElement("div", {
180
+ }, React.createElement(ShadowRoot, {
181
+ css: virtualizerCss
182
+ }, React.createElement("div", {
183
+ "data-iui-virtualizer": "root",
182
184
  style: {
183
- minBlockSize: virtualizer.getTotalSize(),
184
- contain: 'strict'
185
+ minBlockSize: virtualizer.getTotalSize()
185
186
  }
186
187
  }, React.createElement("slot", null))), React.createElement(React.Fragment, null, virtualizer.getVirtualItems().map((virtualItem)=>itemRenderer(virtualItem.index, virtualItem, virtualizer))));
187
188
  });
package/DEV-esm/styles.js CHANGED
@@ -1,4 +1,4 @@
1
- const t = "3.13.2";
1
+ const t = "3.13.4";
2
2
  const u = new Proxy(
3
3
  {},
4
4
  {
@@ -1,27 +1,48 @@
1
1
  import { useVirtualizer } from '@tanstack/react-virtual';
2
2
  import React from 'react';
3
+ let css = `
4
+ :host {
5
+ contain: layout;
6
+ background-color: var(--iui-color-background);
7
+ }
8
+ [data-iui-virtualizer='root'] {
9
+ min-inline-size: 100%;
10
+ position: relative;
11
+ }
12
+ ::slotted([data-iui-virtualizer='item']) {
13
+ position: absolute !important;
14
+ top: 0 !important;
15
+ left: 0 !important;
16
+ }
17
+ `;
3
18
  export const useVirtualScroll = (params)=>{
4
19
  let { ...rest } = params;
5
- let virtualizer = useVirtualizer({
20
+ let _virtualizer = useVirtualizer({
6
21
  indexAttribute: 'data-iui-index',
7
22
  overscan: 10,
8
23
  ...rest
9
24
  });
10
25
  let scrollToIndex = React.useCallback((index, options)=>{
11
26
  setTimeout(()=>{
12
- virtualizer.scrollToIndex(index, {
27
+ _virtualizer.scrollToIndex(index, {
13
28
  align: 'auto',
14
29
  ...options
15
30
  });
16
31
  });
17
32
  }, [
18
- virtualizer
33
+ _virtualizer
19
34
  ]);
20
- return React.useMemo(()=>({
21
- ...virtualizer,
35
+ let virtualizer = React.useMemo(()=>({
36
+ ..._virtualizer,
22
37
  scrollToIndex
23
38
  }), [
24
- virtualizer,
39
+ _virtualizer,
25
40
  scrollToIndex
26
41
  ]);
42
+ return React.useMemo(()=>({
43
+ virtualizer,
44
+ css
45
+ }), [
46
+ virtualizer
47
+ ]);
27
48
  };
@@ -35,7 +35,7 @@ const VirtualizedComboBoxMenu = (props) => {
35
35
  currentElement.getAttribute('data-iui-filtered-index') ?? focusedIndex,
36
36
  );
37
37
  }, [focusedIndex, menuRef]);
38
- let virtualizer = (0, _index.useVirtualScroll)({
38
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
39
39
  count: filteredOptions.length || 1,
40
40
  getScrollElement: () => menuRef.current,
41
41
  estimateSize: () => (mostlySubLabeled ? 48 : 36),
@@ -53,10 +53,8 @@ const VirtualizedComboBoxMenu = (props) => {
53
53
  return _react.cloneElement(menuItem, {
54
54
  key: virtualItem.key,
55
55
  ref: virtualizer.measureElement,
56
+ 'data-iui-virtualizer': 'item',
56
57
  style: {
57
- position: 'absolute',
58
- top: 0,
59
- left: 0,
60
58
  width: '100%',
61
59
  transform: `translateY(${virtualItem.start}px)`,
62
60
  },
@@ -69,16 +67,17 @@ const VirtualizedComboBoxMenu = (props) => {
69
67
  null,
70
68
  _react.createElement(
71
69
  _index.ShadowRoot,
72
- null,
70
+ {
71
+ css: virtualizerCss,
72
+ },
73
73
  _react.createElement(
74
74
  _index.Box,
75
75
  {
76
76
  as: 'div',
77
+ 'data-iui-virtualizer': 'root',
77
78
  ...rest,
78
79
  style: {
79
80
  minBlockSize: virtualizer.getTotalSize(),
80
- minInlineSize: '100%',
81
- contain: 'strict',
82
81
  ...props.style,
83
82
  },
84
83
  },
@@ -429,7 +429,8 @@ const Table = (props) => {
429
429
  });
430
430
  }
431
431
  });
432
- let virtualizer = (0, _index.useVirtualScroll)({
432
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
433
+ enabled: enableVirtualization,
433
434
  count: page.length,
434
435
  getScrollElement: () => tableRef.current,
435
436
  estimateSize: () => rowHeight,
@@ -589,10 +590,16 @@ const Table = (props) => {
589
590
  headerGroup.headers.findIndex(
590
591
  (c) => c.id !== _index4.SELECTION_CELL_ID,
591
592
  );
592
- if ([void 0, 0].includes(column.minWidth))
593
+ if ([void 0, 0].includes(column.minWidth)) {
593
594
  column.minWidth = columnHasExpanders
594
595
  ? COLUMN_MIN_WIDTHS.withExpander
595
596
  : COLUMN_MIN_WIDTHS.default;
597
+ if (
598
+ 'number' == typeof column.width &&
599
+ column.minWidth > column.width
600
+ )
601
+ column.minWidth = column.width;
602
+ }
596
603
  let columnProps = column.getHeaderProps({
597
604
  ...restSortProps,
598
605
  className: (0, _classnames.default)(
@@ -760,15 +767,16 @@ const Table = (props) => {
760
767
  },
761
768
  _react.createElement(
762
769
  _index.ShadowRoot,
763
- null,
770
+ {
771
+ css: virtualizerCss,
772
+ },
764
773
  enableVirtualization && 0 !== data.length
765
774
  ? _react.createElement(
766
775
  'div',
767
776
  {
777
+ 'data-iui-virtualizer': 'root',
768
778
  style: {
769
779
  minBlockSize: virtualizer.getTotalSize(),
770
- minInlineSize: '100%',
771
- contain: 'strict',
772
780
  },
773
781
  },
774
782
  _react.createElement('slot', null),
@@ -66,27 +66,29 @@ const TableRow = (props) => {
66
66
  minWidth: '100%',
67
67
  ...(null != virtualItem
68
68
  ? {
69
- position: 'absolute',
70
- top: 0,
71
- left: 0,
72
69
  transform: `translateY(${virtualItem.start}px)`,
73
70
  }
74
71
  : {}),
75
72
  },
76
73
  }),
77
74
  ...restUserRowProps,
78
- className: (0, _classnames.default)(
79
- 'iui-table-row',
80
- {
81
- 'iui-table-row-expanded': row.isExpanded && subComponent,
82
- 'iui-loading': isLoading,
83
- },
84
- userRowProps?.className,
85
- ),
86
- 'aria-selected': row.isSelected || void 0,
87
- 'aria-disabled': isDisabled || void 0,
88
- 'data-iui-status': status,
89
- 'data-iui-index': virtualItem?.index,
75
+ ...{
76
+ className: (0, _classnames.default)(
77
+ 'iui-table-row',
78
+ {
79
+ 'iui-table-row-expanded': row.isExpanded && subComponent,
80
+ 'iui-loading': isLoading,
81
+ },
82
+ userRowProps?.className,
83
+ ),
84
+ 'aria-selected': row.isSelected || void 0,
85
+ 'aria-disabled': isDisabled || void 0,
86
+ 'data-iui-status': status,
87
+ 'data-iui-index': virtualItem?.index,
88
+ ...(null != virtualItem && {
89
+ 'data-iui-virtualizer': 'item',
90
+ }),
91
+ },
90
92
  };
91
93
  let refs = (0, _index.useMergedRefs)(
92
94
  intersectionRef,
@@ -122,12 +122,11 @@ const Tree = (props) => {
122
122
  ...children.props,
123
123
  key: virtualItem.key,
124
124
  'data-iui-index': virtualItem.index,
125
+ 'data-iui-virtualizer': 'item',
125
126
  ref: virtualizer.measureElement,
126
127
  style: {
127
- position: 'absolute',
128
- top: 0,
129
- left: 0,
130
- width: '100%',
128
+ ...children.props.style,
129
+ '--_iui-width': '100%',
131
130
  transform: `translateY(${virtualItem.start}px)`,
132
131
  },
133
132
  }),
@@ -200,7 +199,7 @@ const VirtualizedTree = _react.forwardRef(
200
199
  (index) => flatNodesList[index].nodeProps.nodeId,
201
200
  [flatNodesList],
202
201
  );
203
- let virtualizer = (0, _index.useVirtualScroll)({
202
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
204
203
  count: flatNodesList.length,
205
204
  getScrollElement: () => parentRef.current,
206
205
  estimateSize: () => 39,
@@ -217,13 +216,15 @@ const VirtualizedTree = _react.forwardRef(
217
216
  },
218
217
  _react.createElement(
219
218
  _index.ShadowRoot,
220
- null,
219
+ {
220
+ css: virtualizerCss,
221
+ },
221
222
  _react.createElement(
222
223
  'div',
223
224
  {
225
+ 'data-iui-virtualizer': 'root',
224
226
  style: {
225
227
  minBlockSize: virtualizer.getTotalSize(),
226
- contain: 'strict',
227
228
  },
228
229
  },
229
230
  _react.createElement('slot', null),
package/cjs/styles.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
- const e = '3.13.2';
3
+ const e = '3.13.4';
4
4
  const u = new Proxy(
5
5
  {},
6
6
  {