onekijs-ui 1.0.2 → 1.0.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/dist/components/tree/components/VirtualTreeListComponent.d.ts +1 -1
- package/dist/index.js +39 -12
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +39 -12
- package/dist/index.module.js.map +1 -1
- package/package.json +3 -3
- package/src/components/list/components/ListBodyComponent.tsx +1 -0
- package/src/components/list/components/VirtualListComponent.tsx +2 -0
- package/src/components/list/hooks/useListView.tsx +0 -2
- package/src/components/table/components/FormTableComponent.tsx +1 -1
- package/src/components/tree/components/VirtualTreeListComponent.tsx +61 -24
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "onekijs-ui",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.3",
|
|
5
5
|
"description": "Advanced React Web Components",
|
|
6
6
|
"source": "src/index.ts",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@floating-ui/react": "^0.27.20",
|
|
36
36
|
"@popperjs/core": "^2.11.8",
|
|
37
37
|
"@reach/observe-rect": "^1.2.0",
|
|
38
|
-
"onekijs-framework": "^1.0.
|
|
38
|
+
"onekijs-framework": "^1.0.3",
|
|
39
39
|
"react-virtualized-auto-sizer": "^2.0.3",
|
|
40
40
|
"react-window": "^2.2.7",
|
|
41
41
|
"react-window-infinite-loader": "^2.0.1",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"react-dom": "^19.2.7"
|
|
51
51
|
},
|
|
52
52
|
"sideEffects": false,
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "58f5cbd9afb558e3a4a92941332d71672047c4ea"
|
|
54
54
|
}
|
|
@@ -23,6 +23,7 @@ const findItemIndex = (items?: (Item<unknown> | undefined)[], uid?: string): num
|
|
|
23
23
|
});
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
26
27
|
const ListBodyComponent = <T extends any = any, I extends ListItem<T> = ListItem<T>>({
|
|
27
28
|
autoRefresh,
|
|
28
29
|
bodyRef,
|
|
@@ -4,6 +4,7 @@ import { ListItem, VirtualItemWrapperProps, VirtualListProps } from '../typings'
|
|
|
4
4
|
import ListItemComponent, { ListItemContent } from './ListItemComponent';
|
|
5
5
|
import LoadingItem from './LoadingItem';
|
|
6
6
|
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
7
8
|
const VirtualItemWrapper = <T extends any = any, I extends ListItem<T> = ListItem<T>>({
|
|
8
9
|
virtualItem,
|
|
9
10
|
listItem,
|
|
@@ -83,6 +84,7 @@ const VirtualItemWrapper = <T extends any = any, I extends ListItem<T> = ListIte
|
|
|
83
84
|
);
|
|
84
85
|
};
|
|
85
86
|
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
86
88
|
const VirtualListComponent = <T extends any = any, I extends ListItem<T> = ListItem<T>>({
|
|
87
89
|
items,
|
|
88
90
|
ItemComponent = ListItemComponent,
|
|
@@ -50,7 +50,6 @@ const useListView: <T = any, I extends Item<T> = Item<T>>(
|
|
|
50
50
|
}
|
|
51
51
|
return itemHeight;
|
|
52
52
|
},
|
|
53
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
54
53
|
[itemHeight],
|
|
55
54
|
);
|
|
56
55
|
|
|
@@ -61,7 +60,6 @@ const useListView: <T = any, I extends Item<T> = Item<T>>(
|
|
|
61
60
|
const fn = keyExtractor || defaultKeyExtractor;
|
|
62
61
|
return fn(index);
|
|
63
62
|
},
|
|
64
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
65
63
|
[keyExtractor, force],
|
|
66
64
|
);
|
|
67
65
|
|
|
@@ -24,7 +24,7 @@ const DefaultDeleteRowComponent: React.FC<TableBodyCellProps> = ({ rowIndex }) =
|
|
|
24
24
|
|
|
25
25
|
const metadata = useFormMetadata(tableName);
|
|
26
26
|
let disabled = false;
|
|
27
|
-
if (metadata.readOnly || (metadata.editable === false && form.config.reconfigure)) {
|
|
27
|
+
if (metadata.disabled || metadata.readOnly || (metadata.editable === false && form.config.reconfigure)) {
|
|
28
28
|
disabled = true;
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnonymousObject, useLogger } from 'onekijs-framework';
|
|
2
|
-
import React, { useRef } from 'react';
|
|
1
|
+
import { AnonymousObject, useLogger, useThrottle } from 'onekijs-framework';
|
|
2
|
+
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import { CSSTransition } from 'react-transition-group';
|
|
4
4
|
import LoadingItem from '../../list/components/LoadingItem';
|
|
5
5
|
import { ListItemProps, VirtualItem } from '../../list/typings';
|
|
@@ -27,7 +27,8 @@ type VirtualTreeListItemProps<T = any, I extends TreeItem<T> = TreeItem<T>> = {
|
|
|
27
27
|
defer?: () => void;
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
31
|
+
const VirtualTreeListItemComponent = <T extends any = any, I extends TreeItem<T> = TreeItem<T>>({
|
|
31
32
|
itemClassName,
|
|
32
33
|
ItemComponent,
|
|
33
34
|
virtualItem,
|
|
@@ -40,6 +41,8 @@ const VirtualTreeListItemComponent = <T = any, I extends TreeItem<T> = TreeItem<
|
|
|
40
41
|
const service = useTreeService();
|
|
41
42
|
const { animate } = useTreeConfig();
|
|
42
43
|
const childrenRef = useRef<HTMLDivElement | null>(null);
|
|
44
|
+
const ref = useRef<HTMLDivElement | null>(null);
|
|
45
|
+
const previousHeightRef = useRef<number | undefined>(undefined);
|
|
43
46
|
|
|
44
47
|
const expand: TreeItemHandler<T, I> = (item, index) => {
|
|
45
48
|
if (animate) {
|
|
@@ -81,29 +84,62 @@ const VirtualTreeListItemComponent = <T = any, I extends TreeItem<T> = TreeItem<
|
|
|
81
84
|
|
|
82
85
|
const expanded = !!(item && isTreeItemExpanded(item, service));
|
|
83
86
|
|
|
87
|
+
const measure = useCallback(
|
|
88
|
+
(el: HTMLElement | null) => {
|
|
89
|
+
if (el?.offsetHeight !== previousHeightRef.current && el?.offsetHeight) {
|
|
90
|
+
previousHeightRef.current = el.offsetHeight;
|
|
91
|
+
measureRef(el);
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
[measureRef],
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
const measureThrottle = useThrottle(measure, 50);
|
|
98
|
+
|
|
99
|
+
const resizeObserver = useMemo(() => {
|
|
100
|
+
return new ResizeObserver(() => {
|
|
101
|
+
measureThrottle(ref.current);
|
|
102
|
+
});
|
|
103
|
+
}, [measureThrottle]);
|
|
104
|
+
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
const el = ref.current;
|
|
107
|
+
if (el) {
|
|
108
|
+
previousHeightRef.current = el.offsetHeight;
|
|
109
|
+
resizeObserver.observe(el);
|
|
110
|
+
}
|
|
111
|
+
return () => {
|
|
112
|
+
if (el) {
|
|
113
|
+
resizeObserver.unobserve(el);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}, [resizeObserver]);
|
|
117
|
+
|
|
84
118
|
return (
|
|
85
119
|
<div>
|
|
86
120
|
<div className="o-virtual-item" key={`virtual-item-${item?.uid || index}`} ref={measureRef}>
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
121
|
+
<div ref={ref}>
|
|
122
|
+
{(!item || !item.data) && <LoadingItem />}
|
|
123
|
+
{item && item.data && (
|
|
124
|
+
<DefaultTreeItemContext.Provider
|
|
125
|
+
value={{
|
|
126
|
+
onExpand: expand,
|
|
127
|
+
onCollapse: collapse,
|
|
128
|
+
className,
|
|
129
|
+
}}
|
|
130
|
+
>
|
|
131
|
+
<ItemComponent
|
|
132
|
+
key={`item-${item?.uid || index}`}
|
|
133
|
+
index={index}
|
|
134
|
+
item={item}
|
|
135
|
+
data={item.data}
|
|
136
|
+
onClick={onClick}
|
|
137
|
+
onMouseEnter={onMouseEnter}
|
|
138
|
+
onMouseLeave={onMouseLeave}
|
|
139
|
+
/>
|
|
140
|
+
</DefaultTreeItemContext.Provider>
|
|
141
|
+
)}
|
|
142
|
+
</div>
|
|
107
143
|
</div>
|
|
108
144
|
<CSSTransition
|
|
109
145
|
in={expanded}
|
|
@@ -153,7 +189,8 @@ type NodeItem = {
|
|
|
153
189
|
level: number;
|
|
154
190
|
};
|
|
155
191
|
|
|
156
|
-
|
|
192
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
193
|
+
const VirtualTreeListComponent = <T extends any = any, I extends TreeItem<T> = TreeItem<T>>({
|
|
157
194
|
items,
|
|
158
195
|
onItemClick,
|
|
159
196
|
onItemMouseEnter,
|