infinity-ui-elements 1.7.10 → 1.7.11

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/index.js CHANGED
@@ -2932,7 +2932,7 @@ function renderDefaultEmptyState({ colSpan }) {
2932
2932
  }
2933
2933
 
2934
2934
  // ==================== Component ====================
2935
- function TableComponent({ className, wrapperClassName, containerClassName, variant, size = "medium", table, enableRowSelection = false, enableSelectAll = false, isLoading = false, loadingComponent, emptyComponent, enableHorizontalScroll = false, stickyHeader = false, maxHeight, showRowHover = true, onRowClick, rowClassName, headerClassName, cellClassName, showHeaderBackground = true, detailPanel, hideColumnsOnDetailOpen = 3, selectedRowId, onRowSelectionChange, columnWidths, columnMinWidths, columnMaxWidths, ...props }, ref) {
2935
+ function TableComponent({ className, wrapperClassName, containerClassName, variant, size = "medium", table, enableRowSelection = false, enableSelectAll = false, isLoading = false, loading, loadingComponent, emptyComponent, enableHorizontalScroll = false, stickyHeader = false, maxHeight, showRowHover = true, onRowClick, rowClassName, headerClassName, cellClassName, showHeaderBackground = true, detailPanel, hideColumnsOnDetailOpen = 3, selectedRowId, onRowSelectionChange, loadingSkeletonRows, loadingSkeletonHeight, columnWidths, columnMinWidths, columnMaxWidths, ...props }, ref) {
2936
2936
  // ==================== State ====================
2937
2937
  const [internalSelectedRowId, setInternalSelectedRowId] = React__namespace.useState(null);
2938
2938
  const selectedRowIdRef = React__namespace.useRef(null);
@@ -2995,6 +2995,43 @@ function TableComponent({ className, wrapperClassName, containerClassName, varia
2995
2995
  maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight,
2996
2996
  };
2997
2997
  }, [maxHeight]);
2998
+ const resolvedLoading = typeof loading === "boolean" ? loading : Boolean(isLoading);
2999
+ const skeletonRowCount = loadingSkeletonRows ?? 5;
3000
+ const sizeKey = size || "medium";
3001
+ const skeletonHeightMap = {
3002
+ small: 16,
3003
+ medium: 20,
3004
+ large: 24,
3005
+ };
3006
+ const skeletonCellHeight = normalizeSizeValue(loadingSkeletonHeight ?? skeletonHeightMap[sizeKey]);
3007
+ const selectionSkeletonSize = sizeKey === "small" ? 14 : sizeKey === "large" ? 20 : 16;
3008
+ const renderSkeletonRows = React__namespace.useCallback(() => {
3009
+ const visibleColumns = table.getVisibleLeafColumns();
3010
+ if (visibleColumns.length === 0) {
3011
+ return renderDefaultLoadingState({
3012
+ colSpan: table.getAllColumns().length || 1,
3013
+ });
3014
+ }
3015
+ return Array.from({ length: skeletonRowCount }).map((_, rowIndex) => (jsxRuntime.jsxs("tr", { children: [enableRowSelection && (jsxRuntime.jsx("td", { className: cn(tableCellVariants({ size: sizeKey }), "w-10", cellClassName), children: jsxRuntime.jsx(Skeleton, { variant: "circle", width: selectionSkeletonSize, height: selectionSkeletonSize }) })), visibleColumns.map((column) => (jsxRuntime.jsx("td", { className: cn(tableCellVariants({ size: sizeKey }), column.columnDef.meta?.cellClassName, cellClassName), style: getColumnStyle(column.id, {
3016
+ width: column.getSize(),
3017
+ minWidth: column.columnDef.minSize,
3018
+ maxWidth: column.columnDef.maxSize,
3019
+ }), children: jsxRuntime.jsx(Skeleton, { className: "w-full", height: skeletonCellHeight, rounded: "medium" }) }, `${column.id}-${rowIndex}`)))] }, `skeleton-row-${rowIndex}`)));
3020
+ }, [
3021
+ cellClassName,
3022
+ enableRowSelection,
3023
+ getColumnStyle,
3024
+ selectionSkeletonSize,
3025
+ sizeKey,
3026
+ skeletonCellHeight,
3027
+ skeletonRowCount,
3028
+ table,
3029
+ ]);
3030
+ const renderLoadingContent = React__namespace.useCallback(() => {
3031
+ if (loadingComponent)
3032
+ return loadingComponent;
3033
+ return renderSkeletonRows();
3034
+ }, [loadingComponent, renderSkeletonRows]);
2998
3035
  // ==================== Callbacks ====================
2999
3036
  const getRowClassName = React__namespace.useCallback((row) => {
3000
3037
  if (typeof rowClassName === "function") {
@@ -3031,19 +3068,13 @@ function TableComponent({ className, wrapperClassName, containerClassName, varia
3031
3068
  onRowSelectionChange(null);
3032
3069
  }
3033
3070
  };
3034
- // ==================== Render Helpers ====================
3035
- const renderLoadingState = () => {
3036
- if (loadingComponent)
3037
- return loadingComponent;
3038
- return renderDefaultLoadingState({ colSpan: table.getAllColumns().length });
3039
- };
3040
3071
  const renderEmptyState = () => {
3041
3072
  if (emptyComponent)
3042
3073
  return emptyComponent;
3043
3074
  return renderDefaultEmptyState({ colSpan: table.getAllColumns().length });
3044
3075
  };
3045
3076
  // ==================== Render ====================
3046
- return (jsxRuntime.jsx("div", { ref: ref, className: cn("w-full", wrapperClassName), ...props, children: jsxRuntime.jsxs("div", { className: cn("relative", enableHorizontalScroll ? "overflow-x-auto" : "overflow-x-hidden", maxHeight && "overflow-y-auto", containerClassName), style: containerStyle, children: [jsxRuntime.jsxs("table", { className: cn(tableVariants({ variant, size }), className), children: [jsxRuntime.jsx(TableHeader, { headerGroups: headerGroups, enableRowSelection: enableRowSelection, enableSelectAll: enableSelectAll, showHeaderBackground: showHeaderBackground, stickyHeader: stickyHeader, size: size || "medium", headerClassName: headerClassName, isDetailPanelOpen: isDetailPanelOpen, visibleHeadersCount: visibleHeadersCount, onToggleAllRows: (e) => table.getToggleAllRowsSelectedHandler()(e), isAllRowsSelected: table.getIsAllRowsSelected(), isSomeRowsSelected: table.getIsSomeRowsSelected(), getColumnStyle: getColumnStyle }), isLoading ? (jsxRuntime.jsx("tbody", { children: renderLoadingState() })) : !hasData ? (jsxRuntime.jsx("tbody", { children: renderEmptyState() })) : (jsxRuntime.jsx(TableBody, { rows: table.getRowModel().rows, enableRowSelection: enableRowSelection, size: size || "medium", variant: variant || "default", showRowHover: showRowHover, cellClassName: cellClassName, isDetailPanelOpen: isDetailPanelOpen, visibleHeadersCount: visibleHeadersCount, effectiveSelectedRowId: effectiveSelectedRowId, onRowClick: onRowClick, getRowClassName: getRowClassName, handleRowClick: handleRowClickInternal, getColumnStyle: getColumnStyle }))] }), detailPanel && (jsxRuntime.jsx(DetailPanel, { isOpen: isDetailPanelOpen, content: detailPanel, data: getSelectedRowData(), onClose: handleDetailPanelClose }))] }) }));
3077
+ return (jsxRuntime.jsx("div", { ref: ref, className: cn("w-full", wrapperClassName), ...props, children: jsxRuntime.jsxs("div", { className: cn("relative", enableHorizontalScroll ? "overflow-x-auto" : "overflow-x-hidden", maxHeight && "overflow-y-auto", containerClassName), style: containerStyle, children: [jsxRuntime.jsxs("table", { className: cn(tableVariants({ variant, size }), className), children: [jsxRuntime.jsx(TableHeader, { headerGroups: headerGroups, enableRowSelection: enableRowSelection, enableSelectAll: enableSelectAll, showHeaderBackground: showHeaderBackground, stickyHeader: stickyHeader, size: size || "medium", headerClassName: headerClassName, isDetailPanelOpen: isDetailPanelOpen, visibleHeadersCount: visibleHeadersCount, onToggleAllRows: (e) => table.getToggleAllRowsSelectedHandler()(e), isAllRowsSelected: table.getIsAllRowsSelected(), isSomeRowsSelected: table.getIsSomeRowsSelected(), getColumnStyle: getColumnStyle }), resolvedLoading ? (jsxRuntime.jsx("tbody", { children: renderLoadingContent() })) : !hasData ? (jsxRuntime.jsx("tbody", { children: renderEmptyState() })) : (jsxRuntime.jsx(TableBody, { rows: table.getRowModel().rows, enableRowSelection: enableRowSelection, size: size || "medium", variant: variant || "default", showRowHover: showRowHover, cellClassName: cellClassName, isDetailPanelOpen: isDetailPanelOpen, visibleHeadersCount: visibleHeadersCount, effectiveSelectedRowId: effectiveSelectedRowId, onRowClick: onRowClick, getRowClassName: getRowClassName, handleRowClick: handleRowClickInternal, getColumnStyle: getColumnStyle }))] }), detailPanel && (jsxRuntime.jsx(DetailPanel, { isOpen: isDetailPanelOpen, content: detailPanel, data: getSelectedRowData(), onClose: handleDetailPanelClose }))] }) }));
3047
3078
  }
3048
3079
  // ==================== Export ====================
3049
3080
  const Table = React__namespace.forwardRef(TableComponent);