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.
@@ -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
- return (jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("div", { className: "o-virtual-item", ref: measureRef, children: [(!item || !item.data) && jsxRuntimeExports.jsx(LoadingItem$1, {}), item && item.data && (jsxRuntimeExports.jsx(DefaultTreeItemContext.Provider, { value: {
9167
- onExpand: expand,
9168
- onCollapse: collapse,
9169
- className,
9170
- }, 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: () => {
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" }) }));