@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 +6 -0
- package/DEV-cjs/core/ComboBox/ComboBoxMenu.js +6 -7
- package/DEV-cjs/core/Table/Table.js +6 -5
- package/DEV-cjs/core/Table/TableRowMemoized.js +13 -11
- package/DEV-cjs/core/Tree/Tree.js +7 -7
- package/DEV-cjs/styles.js +1 -1
- package/DEV-cjs/utils/hooks/useVirtualScroll.js +27 -6
- package/DEV-esm/core/ComboBox/ComboBoxMenu.js +6 -7
- package/DEV-esm/core/Table/Table.js +6 -5
- package/DEV-esm/core/Table/TableRowMemoized.js +13 -11
- package/DEV-esm/core/Tree/Tree.js +7 -7
- package/DEV-esm/styles.js +1 -1
- package/DEV-esm/utils/hooks/useVirtualScroll.js +27 -6
- package/cjs/core/ComboBox/ComboBoxMenu.js +6 -7
- package/cjs/core/Table/Table.js +5 -4
- package/cjs/core/Table/TableRowMemoized.js +17 -15
- package/cjs/core/Tree/Tree.js +6 -6
- package/cjs/styles.js +1 -1
- package/cjs/utils/hooks/useVirtualScroll.d.ts +25 -5
- package/cjs/utils/hooks/useVirtualScroll.js +28 -6
- package/esm/core/ComboBox/ComboBoxMenu.js +6 -7
- package/esm/core/Table/Table.js +5 -4
- package/esm/core/Table/TableRowMemoized.js +17 -15
- package/esm/core/Tree/Tree.js +6 -6
- package/esm/styles.js +1 -1
- package/esm/utils/hooks/useVirtualScroll.d.ts +25 -5
- package/esm/utils/hooks/useVirtualScroll.js +28 -6
- package/package.json +1 -1
- package/styles.css +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -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,
|
|
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,
|
|
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
|
-
|
|
63
|
-
'iui-table-row
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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,
|
|
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.
|
|
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
|
|
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
|
-
|
|
38
|
+
_virtualizer.scrollToIndex(index, {
|
|
24
39
|
align: 'auto',
|
|
25
40
|
...options
|
|
26
41
|
});
|
|
27
42
|
});
|
|
28
43
|
}, [
|
|
29
|
-
|
|
44
|
+
_virtualizer
|
|
30
45
|
]);
|
|
31
|
-
|
|
32
|
-
...
|
|
46
|
+
let virtualizer = _react.default.useMemo(()=>({
|
|
47
|
+
..._virtualizer,
|
|
33
48
|
scrollToIndex
|
|
34
49
|
}), [
|
|
35
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
43
|
-
'iui-table-row
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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,
|
|
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,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
|
|
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
|
-
|
|
27
|
+
_virtualizer.scrollToIndex(index, {
|
|
13
28
|
align: 'auto',
|
|
14
29
|
...options
|
|
15
30
|
});
|
|
16
31
|
});
|
|
17
32
|
}, [
|
|
18
|
-
|
|
33
|
+
_virtualizer
|
|
19
34
|
]);
|
|
20
|
-
|
|
21
|
-
...
|
|
35
|
+
let virtualizer = React.useMemo(()=>({
|
|
36
|
+
..._virtualizer,
|
|
22
37
|
scrollToIndex
|
|
23
38
|
}), [
|
|
24
|
-
|
|
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
|
-
|
|
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
|
},
|
package/cjs/core/Table/Table.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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,
|
package/cjs/core/Tree/Tree.js
CHANGED
|
@@ -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
|
-
|
|
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
|
@@ -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
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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]) =>
|
|
31
|
+
export declare const useVirtualScroll: (params: Parameters<typeof useVirtualizer>[0]) => {
|
|
32
|
+
virtualizer: Virtualizer<Element, Element>;
|
|
33
|
+
css: string;
|
|
34
|
+
};
|