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
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TreeItem, VirtualTreeListProps } from '../typings';
|
|
3
|
-
declare const VirtualTreeListComponent: <T = any, I extends TreeItem<T> = TreeItem<T>>({ items, onItemClick, onItemMouseEnter, onItemMouseLeave, virtualItems, }: VirtualTreeListProps<T, I>) => React.JSX.Element;
|
|
3
|
+
declare const VirtualTreeListComponent: <T extends any = any, I extends TreeItem<T> = TreeItem<T>>({ items, onItemClick, onItemMouseEnter, onItemMouseLeave, virtualItems, }: VirtualTreeListProps<T, I>) => React.JSX.Element;
|
|
4
4
|
export default VirtualTreeListComponent;
|
package/dist/index.js
CHANGED
|
@@ -5508,17 +5508,13 @@ const useListView = ({ controller, height, itemHeight = defaultItemHeight, overs
|
|
|
5508
5508
|
return itemHeight(index) || defaultItemHeight;
|
|
5509
5509
|
}
|
|
5510
5510
|
return itemHeight;
|
|
5511
|
-
},
|
|
5512
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
5513
|
-
[itemHeight]);
|
|
5511
|
+
}, [itemHeight]);
|
|
5514
5512
|
// Trick for force recalcutate position without losing measurementCache
|
|
5515
5513
|
// In the react-virtual code, the position are recalculate if the forceExtractor function change
|
|
5516
5514
|
const forceKeyExtractor = React.useCallback((index) => {
|
|
5517
5515
|
const fn = keyExtractor || defaultKeyExtractor;
|
|
5518
5516
|
return fn(index);
|
|
5519
|
-
},
|
|
5520
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
5521
|
-
[keyExtractor, force]);
|
|
5517
|
+
}, [keyExtractor, force]);
|
|
5522
5518
|
const state = controller.state;
|
|
5523
5519
|
const { totalSize, virtualItems, scrollToIndex, scrollToOffset } = useVirtual({
|
|
5524
5520
|
size: state.total ? state.total : state.items?.length || 0,
|
|
@@ -5686,6 +5682,7 @@ const StandardListComponent = ({ items, ItemComponent = ListItemComponent$1, Ite
|
|
|
5686
5682
|
}) }));
|
|
5687
5683
|
};
|
|
5688
5684
|
|
|
5685
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
5689
5686
|
const VirtualItemWrapper = ({ virtualItem, listItem, ItemComponent = ListItemComponent$1, ItemContentComponent = ListItemContent, ItemLoadingComponent = LoadingItem$1, onItemClick, onItemMouseEnter, onItemMouseLeave, }) => {
|
|
5690
5687
|
const { index, measureRef, start } = virtualItem;
|
|
5691
5688
|
const ref = React.useRef(null);
|
|
@@ -5724,6 +5721,7 @@ const VirtualItemWrapper = ({ virtualItem, listItem, ItemComponent = ListItemCom
|
|
|
5724
5721
|
transform: `translateY(${start}px)`,
|
|
5725
5722
|
}, children: jsxRuntimeExports.jsxs("div", { ref: ref, children: [listItem?.loadingStatus === onekijsFramework.LoadingStatus.Loading && jsxRuntimeExports.jsx(ItemLoadingComponent, {}), listItem?.loadingStatus !== onekijsFramework.LoadingStatus.Loading && listItem && listItem.data !== undefined && (jsxRuntimeExports.jsx(ItemComponent, { index: index, item: listItem, data: listItem.data, onClick: onItemClick, onMouseEnter: onItemMouseEnter, onMouseLeave: onItemMouseLeave, ItemContentComponent: ItemContentComponent }, `item-${listItem.uid || index}`))] }) }));
|
|
5726
5723
|
};
|
|
5724
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
5727
5725
|
const VirtualListComponent = ({ items, ItemComponent = ListItemComponent$1, ItemLoadingComponent = LoadingItem$1, ItemContentComponent = ListItemContent, onItemClick, onItemMouseEnter, onItemMouseLeave, virtualItems, }) => {
|
|
5728
5726
|
return (jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: virtualItems.map((virtualItem) => {
|
|
5729
5727
|
const listItem = items[virtualItem.index];
|
|
@@ -5745,6 +5743,7 @@ const findItemIndex = (items, uid) => {
|
|
|
5745
5743
|
return i.uid === uid;
|
|
5746
5744
|
});
|
|
5747
5745
|
};
|
|
5746
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
5748
5747
|
const ListBodyComponent = ({ autoRefresh, bodyRef, className, follow, height, items, ItemComponent = ListItemComponent$1, ItemLoadingComponent = LoadingItem$1, ItemContentComponent = ListItemContent, NotFoundComponent, keyboardNavigable, ListComponent = StandardListComponent, multiSelect, onItemActivate, onItemDeactivate, onItemSelect, onItemUnselect, onItemHighlight, onItemUnhighlight, parentRef, scrollToIndex, service, state, style, tail, totalSize, virtualItems, VirtualListComponent: VirtualListComponent$1 = VirtualListComponent, LoadingComponent = ListLoadingComponent$1, }) => {
|
|
5749
5748
|
const scrollAlignRef = React.useRef('center');
|
|
5750
5749
|
const lastActiveItemUid = React.useRef(undefined);
|
|
@@ -9122,12 +9121,15 @@ const TreeBodyComponent = ({ className, controller, NotFoundComponent, }) => {
|
|
|
9122
9121
|
TreeBodyComponent.displayName = 'TreeBody';
|
|
9123
9122
|
|
|
9124
9123
|
const timeout$1 = 500;
|
|
9124
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
9125
9125
|
const VirtualTreeListItemComponent = ({ itemClassName, ItemComponent, virtualItem, onClick, onMouseEnter, onMouseLeave, }) => {
|
|
9126
9126
|
const { index, measureRef, children, item } = virtualItem;
|
|
9127
9127
|
const className = typeof itemClassName !== 'function' ? itemClassName : item ? itemClassName(item) : undefined;
|
|
9128
9128
|
const service = useTreeService();
|
|
9129
9129
|
const { animate } = useTreeConfig();
|
|
9130
9130
|
const childrenRef = React.useRef(null);
|
|
9131
|
+
const ref = React.useRef(null);
|
|
9132
|
+
const previousHeightRef = React.useRef(undefined);
|
|
9131
9133
|
const expand = (item, index) => {
|
|
9132
9134
|
if (animate) {
|
|
9133
9135
|
service.expanding(item, index);
|
|
@@ -9163,11 +9165,35 @@ const VirtualTreeListItemComponent = ({ itemClassName, ItemComponent, virtualIte
|
|
|
9163
9165
|
}
|
|
9164
9166
|
};
|
|
9165
9167
|
const expanded = !!(item && isTreeItemExpanded(item, service));
|
|
9166
|
-
|
|
9167
|
-
|
|
9168
|
-
|
|
9169
|
-
|
|
9170
|
-
|
|
9168
|
+
const measure = React.useCallback((el) => {
|
|
9169
|
+
if (el?.offsetHeight !== previousHeightRef.current && el?.offsetHeight) {
|
|
9170
|
+
previousHeightRef.current = el.offsetHeight;
|
|
9171
|
+
measureRef(el);
|
|
9172
|
+
}
|
|
9173
|
+
}, [measureRef]);
|
|
9174
|
+
const measureThrottle = onekijsFramework.useThrottle(measure, 50);
|
|
9175
|
+
const resizeObserver = React.useMemo(() => {
|
|
9176
|
+
return new ResizeObserver(() => {
|
|
9177
|
+
measureThrottle(ref.current);
|
|
9178
|
+
});
|
|
9179
|
+
}, [measureThrottle]);
|
|
9180
|
+
React.useEffect(() => {
|
|
9181
|
+
const el = ref.current;
|
|
9182
|
+
if (el) {
|
|
9183
|
+
previousHeightRef.current = el.offsetHeight;
|
|
9184
|
+
resizeObserver.observe(el);
|
|
9185
|
+
}
|
|
9186
|
+
return () => {
|
|
9187
|
+
if (el) {
|
|
9188
|
+
resizeObserver.unobserve(el);
|
|
9189
|
+
}
|
|
9190
|
+
};
|
|
9191
|
+
}, [resizeObserver]);
|
|
9192
|
+
return (jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("div", { className: "o-virtual-item", ref: measureRef, children: jsxRuntimeExports.jsxs("div", { ref: ref, children: [(!item || !item.data) && jsxRuntimeExports.jsx(LoadingItem$1, {}), item && item.data && (jsxRuntimeExports.jsx(DefaultTreeItemContext.Provider, { value: {
|
|
9193
|
+
onExpand: expand,
|
|
9194
|
+
onCollapse: collapse,
|
|
9195
|
+
className,
|
|
9196
|
+
}, children: jsxRuntimeExports.jsx(ItemComponent, { index: index, item: item, data: item.data, onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }, `item-${item?.uid || index}`) }))] }) }, `virtual-item-${item?.uid || index}`), jsxRuntimeExports.jsx(reactTransitionGroup.CSSTransition, { in: expanded, nodeRef: childrenRef, classNames: "o-tree-item-children", timeout: timeout$1, mountOnEnter: true, appear: false, unmountOnExit: true, onExiting: () => {
|
|
9171
9197
|
if (childrenRef.current)
|
|
9172
9198
|
onExiting(childrenRef.current);
|
|
9173
9199
|
}, onEntering: () => {
|
|
@@ -9177,6 +9203,7 @@ const VirtualTreeListItemComponent = ({ itemClassName, ItemComponent, virtualIte
|
|
|
9177
9203
|
return (jsxRuntimeExports.jsx(VirtualTreeListItemComponent, { virtualItem: child, ItemComponent: ItemComponent, onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }, `virtual-item-${child.item?.uid || child.index}`));
|
|
9178
9204
|
}) }) }) })] }));
|
|
9179
9205
|
};
|
|
9206
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
9180
9207
|
const VirtualTreeListComponent = ({ items, onItemClick, onItemMouseEnter, onItemMouseLeave, virtualItems, }) => {
|
|
9181
9208
|
const logger = onekijsFramework.useLogger();
|
|
9182
9209
|
logger.debug('virtualItems', virtualItems);
|
|
@@ -11045,7 +11072,7 @@ const DefaultDeleteRowComponent = ({ rowIndex }) => {
|
|
|
11045
11072
|
};
|
|
11046
11073
|
const metadata = onekijsFramework.useFormMetadata(tableName);
|
|
11047
11074
|
let disabled = false;
|
|
11048
|
-
if (metadata.readOnly || (metadata.editable === false && form.config.reconfigure)) {
|
|
11075
|
+
if (metadata.disabled || metadata.readOnly || (metadata.editable === false && form.config.reconfigure)) {
|
|
11049
11076
|
disabled = true;
|
|
11050
11077
|
}
|
|
11051
11078
|
return (jsxRuntimeExports.jsx("div", { className: `o-form-table-remove${disabled ? ' o-form-table-remove-disabled' : ''}`, onClick: removeRow, children: jsxRuntimeExports.jsx(RemoveIcon$1, { width: "14px", height: "14px" }) }));
|