@itwin/itwinui-react 3.13.2 → 3.13.3

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,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.13.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2163](https://github.com/iTwin/iTwinUI/pull/2163): Fixed an issue in virtualized `Table` where horizontal scroll was broken.
8
+
3
9
  ## 3.13.2
4
10
 
5
11
  ### 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,7 @@ const Table = (props)=>{
290
290
  });
291
291
  }
292
292
  });
293
- let virtualizer = (0, _index.useVirtualScroll)({
293
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
294
294
  count: page.length,
295
295
  getScrollElement: ()=>tableRef.current,
296
296
  estimateSize: ()=>rowHeight,
@@ -500,11 +500,12 @@ const Table = (props)=>{
500
500
  }),
501
501
  tabIndex: -1,
502
502
  "aria-multiselectable": isSelectable && 'multi' === selectionMode || void 0
503
- }, _react.createElement(_index.ShadowRoot, null, enableVirtualization && 0 !== data.length ? _react.createElement("div", {
503
+ }, _react.createElement(_index.ShadowRoot, {
504
+ css: virtualizerCss
505
+ }, enableVirtualization && 0 !== data.length ? _react.createElement("div", {
506
+ "data-iui-virtualizer": "root",
504
507
  style: {
505
- minBlockSize: virtualizer.getTotalSize(),
506
- minInlineSize: '100%',
507
- contain: 'strict'
508
+ minBlockSize: virtualizer.getTotalSize()
508
509
  }
509
510
  }, _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
511
  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,11 +105,9 @@ 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
111
  width: '100%',
114
112
  transform: `translateY(${virtualItem.start}px)`
115
113
  }
@@ -174,7 +172,7 @@ const VirtualizedTree = _react.forwardRef(({ flatNodesList, itemRenderer, scroll
174
172
  let getItemKey = _react.useCallback((index)=>flatNodesList[index].nodeProps.nodeId, [
175
173
  flatNodesList
176
174
  ]);
177
- let virtualizer = (0, _index.useVirtualScroll)({
175
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
178
176
  count: flatNodesList.length,
179
177
  getScrollElement: ()=>parentRef.current,
180
178
  estimateSize: ()=>39,
@@ -189,10 +187,12 @@ const VirtualizedTree = _react.forwardRef(({ flatNodesList, itemRenderer, scroll
189
187
  return _react.createElement(TreeElement, {
190
188
  ...rest,
191
189
  ref: (0, _index.useMergedRefs)(ref, parentRef)
192
- }, _react.createElement(_index.ShadowRoot, null, _react.createElement("div", {
190
+ }, _react.createElement(_index.ShadowRoot, {
191
+ css: virtualizerCss
192
+ }, _react.createElement("div", {
193
+ "data-iui-virtualizer": "root",
193
194
  style: {
194
- minBlockSize: virtualizer.getTotalSize(),
195
- contain: 'strict'
195
+ minBlockSize: virtualizer.getTotalSize()
196
196
  }
197
197
  }, _react.createElement("slot", null))), _react.createElement(_react.Fragment, null, virtualizer.getVirtualItems().map((virtualItem)=>itemRenderer(virtualItem.index, virtualItem, virtualizer))));
198
198
  });
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.3";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,7 @@ export const Table = (props)=>{
270
270
  });
271
271
  }
272
272
  });
273
- let virtualizer = useVirtualScroll({
273
+ let { virtualizer, css: virtualizerCss } = useVirtualScroll({
274
274
  count: page.length,
275
275
  getScrollElement: ()=>tableRef.current,
276
276
  estimateSize: ()=>rowHeight,
@@ -480,11 +480,12 @@ export const Table = (props)=>{
480
480
  }),
481
481
  tabIndex: -1,
482
482
  "aria-multiselectable": isSelectable && 'multi' === selectionMode || void 0
483
- }, React.createElement(ShadowRoot, null, enableVirtualization && 0 !== data.length ? React.createElement("div", {
483
+ }, React.createElement(ShadowRoot, {
484
+ css: virtualizerCss
485
+ }, enableVirtualization && 0 !== data.length ? React.createElement("div", {
486
+ "data-iui-virtualizer": "root",
484
487
  style: {
485
- minBlockSize: virtualizer.getTotalSize(),
486
- minInlineSize: '100%',
487
- contain: 'strict'
488
+ minBlockSize: virtualizer.getTotalSize()
488
489
  }
489
490
  }, 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
491
  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,11 +94,9 @@ 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
100
  width: '100%',
103
101
  transform: `translateY(${virtualItem.start}px)`
104
102
  }
@@ -163,7 +161,7 @@ let VirtualizedTree = React.forwardRef(({ flatNodesList, itemRenderer, scrollToI
163
161
  let getItemKey = React.useCallback((index)=>flatNodesList[index].nodeProps.nodeId, [
164
162
  flatNodesList
165
163
  ]);
166
- let virtualizer = useVirtualScroll({
164
+ let { virtualizer, css: virtualizerCss } = useVirtualScroll({
167
165
  count: flatNodesList.length,
168
166
  getScrollElement: ()=>parentRef.current,
169
167
  estimateSize: ()=>39,
@@ -178,10 +176,12 @@ let VirtualizedTree = React.forwardRef(({ flatNodesList, itemRenderer, scrollToI
178
176
  return React.createElement(TreeElement, {
179
177
  ...rest,
180
178
  ref: useMergedRefs(ref, parentRef)
181
- }, React.createElement(ShadowRoot, null, React.createElement("div", {
179
+ }, React.createElement(ShadowRoot, {
180
+ css: virtualizerCss
181
+ }, React.createElement("div", {
182
+ "data-iui-virtualizer": "root",
182
183
  style: {
183
- minBlockSize: virtualizer.getTotalSize(),
184
- contain: 'strict'
184
+ minBlockSize: virtualizer.getTotalSize()
185
185
  }
186
186
  }, React.createElement("slot", null))), React.createElement(React.Fragment, null, virtualizer.getVirtualItems().map((virtualItem)=>itemRenderer(virtualItem.index, virtualItem, virtualizer))));
187
187
  });
package/DEV-esm/styles.js CHANGED
@@ -1,4 +1,4 @@
1
- const t = "3.13.2";
1
+ const t = "3.13.3";
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,7 @@ const Table = (props) => {
429
429
  });
430
430
  }
431
431
  });
432
- let virtualizer = (0, _index.useVirtualScroll)({
432
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
433
433
  count: page.length,
434
434
  getScrollElement: () => tableRef.current,
435
435
  estimateSize: () => rowHeight,
@@ -760,15 +760,16 @@ const Table = (props) => {
760
760
  },
761
761
  _react.createElement(
762
762
  _index.ShadowRoot,
763
- null,
763
+ {
764
+ css: virtualizerCss,
765
+ },
764
766
  enableVirtualization && 0 !== data.length
765
767
  ? _react.createElement(
766
768
  'div',
767
769
  {
770
+ 'data-iui-virtualizer': 'root',
768
771
  style: {
769
772
  minBlockSize: virtualizer.getTotalSize(),
770
- minInlineSize: '100%',
771
- contain: 'strict',
772
773
  },
773
774
  },
774
775
  _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,11 +122,9 @@ 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
128
  width: '100%',
131
129
  transform: `translateY(${virtualItem.start}px)`,
132
130
  },
@@ -200,7 +198,7 @@ const VirtualizedTree = _react.forwardRef(
200
198
  (index) => flatNodesList[index].nodeProps.nodeId,
201
199
  [flatNodesList],
202
200
  );
203
- let virtualizer = (0, _index.useVirtualScroll)({
201
+ let { virtualizer, css: virtualizerCss } = (0, _index.useVirtualScroll)({
204
202
  count: flatNodesList.length,
205
203
  getScrollElement: () => parentRef.current,
206
204
  estimateSize: () => 39,
@@ -217,13 +215,15 @@ const VirtualizedTree = _react.forwardRef(
217
215
  },
218
216
  _react.createElement(
219
217
  _index.ShadowRoot,
220
- null,
218
+ {
219
+ css: virtualizerCss,
220
+ },
221
221
  _react.createElement(
222
222
  'div',
223
223
  {
224
+ 'data-iui-virtualizer': 'root',
224
225
  style: {
225
226
  minBlockSize: virtualizer.getTotalSize(),
226
- contain: 'strict',
227
227
  },
228
228
  },
229
229
  _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.3';
4
4
  const u = new Proxy(
5
5
  {},
6
6
  {
@@ -5,10 +5,30 @@ import type { Virtualizer } from '@tanstack/react-virtual';
5
5
  * `data-iui-index` and adds wraps the `scrollToIndex` function in a `setTimeout` so it can be used in `useLayoutEffect`.
6
6
  *
7
7
  * @example
8
- * const virtualizer = useVirtualScroll({
9
- * count: item.length,
10
- * getScrollElement: () => parentRef.current,
11
- * estimateSize: () => 30,
8
+ * const { virtualizer, css } = useVirtualScroll({
9
+ * count: item.length,
10
+ * getScrollElement: () => parentRef.current,
11
+ * estimateSize: () => 30,
12
12
  * });
13
+ *
14
+ * <Parent ref={parentRef}>
15
+ * <ShadowRoot css={css}>
16
+ * <div data-iui-virtualizer="root" style={{ height: virtualizer.getTotalSize() }}>
17
+ * <slot />
18
+ * </div>
19
+ * </ShadowRoot>
20
+ *
21
+ * {virtualizer.getVirtualItems().map((item) => (
22
+ * <Item
23
+ * data-iui-virtualizer="item"
24
+ * data-iui-index={item.index}
25
+ * style={{ transform: `translateY(${item.start}px)`}}
26
+ * ref={virtualizer.measureElement}
27
+ * />
28
+ * ))}
29
+ * </Parent>
13
30
  */
14
- export declare const useVirtualScroll: (params: Parameters<typeof useVirtualizer>[0]) => Virtualizer<Element, Element>;
31
+ export declare const useVirtualScroll: (params: Parameters<typeof useVirtualizer>[0]) => {
32
+ virtualizer: Virtualizer<Element, Element>;
33
+ css: string;
34
+ };