infinity-ui-elements 1.7.5 → 1.7.7

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
@@ -2856,32 +2856,39 @@ const tableCellVariants = classVarianceAuthority.cva("text-body-medium-regular b
2856
2856
  },
2857
2857
  });
2858
2858
 
2859
- function TableHeader({ headerGroups, enableRowSelection, enableSelectAll, showHeaderBackground, stickyHeader, size, headerClassName, isDetailPanelOpen, visibleHeadersCount, onToggleAllRows, isAllRowsSelected, isSomeRowsSelected, }) {
2860
- return (jsxRuntime.jsx("thead", { className: cn(showHeaderBackground && "bg-surface-fill-neutral-moderate", stickyHeader && "sticky top-0 z-10"), children: headerGroups.map((headerGroup) => (jsxRuntime.jsxs("tr", { children: [enableRowSelection && enableSelectAll && (jsxRuntime.jsx("th", { className: cn(tableHeaderVariants({ size }), showHeaderBackground && "bg-surface-fill-neutral-moderate", "w-10 rounded-tl-xlarge rounded-bl-xlarge", headerClassName), children: jsxRuntime.jsx(Checkbox, { checked: isAllRowsSelected, isIndeterminate: isSomeRowsSelected, onChange: onToggleAllRows, "aria-label": "Select all rows" }) })), headerGroup.headers.map((header, index) => {
2861
- const shouldHideColumn = isDetailPanelOpen && index >= visibleHeadersCount;
2862
- const isLastVisibleColumn = isDetailPanelOpen
2863
- ? index === visibleHeadersCount - 1
2864
- : index === headerGroup.headers.length - 1;
2865
- return (jsxRuntime.jsx("th", { className: cn(tableHeaderVariants({ size }), showHeaderBackground &&
2866
- "bg-surface-fill-neutral-moderate border-none", !enableRowSelection &&
2867
- index === 0 &&
2868
- "rounded-tl-xlarge rounded-bl-xlarge", isLastVisibleColumn && "rounded-tr-xlarge rounded-br-xlarge", header.column.columnDef.meta?.headerClassName, headerClassName, "transition-all duration-300 ease-in-out", shouldHideColumn
2869
- ? "opacity-0 translate-x-8 pointer-events-none"
2870
- : "opacity-100 translate-x-0"), style: {
2871
- width: header.getSize(),
2872
- minWidth: header.column.columnDef.minSize,
2873
- maxWidth: header.column.columnDef.maxSize,
2874
- }, children: header.isPlaceholder ? null : (jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2", header.column.getCanSort() && "cursor-pointer select-none"), onClick: header.column.getToggleSortingHandler(), children: [reactTable.flexRender(header.column.columnDef.header, header.getContext()), header.column.getCanSort() && (jsxRuntime.jsx("span", { className: "text-surface-ink-neutral-muted", children: {
2875
- asc: "",
2876
- desc: "↓",
2877
- }[header.column.getIsSorted()] ?? "↕" }))] })) }, header.id));
2878
- })] }, headerGroup.id))) }));
2859
+ function TableHeader({ headerGroups, enableRowSelection, enableSelectAll, showHeaderBackground, stickyHeader, size, headerClassName, isDetailPanelOpen, visibleHeadersCount, onToggleAllRows, isAllRowsSelected, isSomeRowsSelected, isBodyScrollable = false, }) {
2860
+ const headerHeight = {
2861
+ small: 32,
2862
+ medium: 40,
2863
+ large: 48,
2864
+ }[size] ?? 40;
2865
+ return (jsxRuntime.jsx("thead", { className: cn(showHeaderBackground && "bg-surface-fill-neutral-moderate", stickyHeader && "sticky top-0 z-10"), children: headerGroups.map((headerGroup, groupIndex) => {
2866
+ const stickyTop = stickyHeader ? groupIndex * headerHeight : undefined;
2867
+ return (jsxRuntime.jsxs("tr", { className: cn(isBodyScrollable && "table w-full table-fixed"), children: [enableRowSelection && enableSelectAll && (jsxRuntime.jsx("th", { className: cn(tableHeaderVariants({ size }), showHeaderBackground && "bg-surface-fill-neutral-moderate", stickyHeader && "sticky z-20", "w-10 rounded-tl-xlarge rounded-bl-xlarge", headerClassName), style: { top: stickyTop }, children: jsxRuntime.jsx(Checkbox, { checked: isAllRowsSelected, isIndeterminate: isSomeRowsSelected, onChange: onToggleAllRows, "aria-label": "Select all rows" }) })), headerGroup.headers.map((header, index) => {
2868
+ const shouldHideColumn = isDetailPanelOpen && index >= visibleHeadersCount;
2869
+ const isLastVisibleColumn = isDetailPanelOpen
2870
+ ? index === visibleHeadersCount - 1
2871
+ : index === headerGroup.headers.length - 1;
2872
+ return (jsxRuntime.jsx("th", { className: cn(tableHeaderVariants({ size }), showHeaderBackground &&
2873
+ "bg-surface-fill-neutral-moderate border-none", stickyHeader && "sticky z-20", !enableRowSelection && index === 0 && "rounded-tl-xlarge ", isLastVisibleColumn && "rounded-tr-xlarge", header.column.columnDef.meta?.headerClassName, headerClassName, "transition-all duration-300 ease-in-out", shouldHideColumn
2874
+ ? "opacity-0 translate-x-8 pointer-events-none"
2875
+ : "opacity-100 translate-x-0"), style: {
2876
+ width: header.getSize(),
2877
+ minWidth: header.column.columnDef.minSize,
2878
+ maxWidth: header.column.columnDef.maxSize,
2879
+ top: stickyTop,
2880
+ }, children: header.isPlaceholder ? null : (jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2", header.column.getCanSort() && "cursor-pointer select-none"), onClick: header.column.getToggleSortingHandler(), children: [reactTable.flexRender(header.column.columnDef.header, header.getContext()), header.column.getCanSort() && (jsxRuntime.jsx("span", { className: "text-surface-ink-neutral-muted", children: {
2881
+ asc: "↑",
2882
+ desc: "↓",
2883
+ }[header.column.getIsSorted()] ?? "↕" }))] })) }, header.id));
2884
+ })] }, headerGroup.id));
2885
+ }) }));
2879
2886
  }
2880
2887
 
2881
2888
  function TableBody({ rows, enableRowSelection, size, variant, showRowHover, cellClassName, isDetailPanelOpen, visibleHeadersCount, effectiveSelectedRowId, onRowClick, getRowClassName, handleRowClick, }) {
2882
2889
  const [focusedCell, setFocusedCell] = React__namespace.useState(null);
2883
2890
  const [hoveredRow, setHoveredRow] = React__namespace.useState(null);
2884
- return (jsxRuntime.jsx("tbody", { className: "bg-surface-fill-neutral-intense", children: rows.map((row) => {
2891
+ return (jsxRuntime.jsx("tbody", { className: cn("bg-surface-fill-neutral-intense"), children: rows.map((row) => {
2885
2892
  const isRowSelected = row.id === effectiveSelectedRowId;
2886
2893
  const isRowHovered = hoveredRow === row.id;
2887
2894
  const handleClick = () => handleRowClick(row.original, row.id);
@@ -2963,6 +2970,13 @@ function TableComponent({ className, wrapperClassName, containerClassName, varia
2963
2970
  ? headers.length - hideColumnsOnDetailOpen
2964
2971
  : headers.length;
2965
2972
  }, [isDetailPanelOpen, headers.length, hideColumnsOnDetailOpen]);
2973
+ const containerStyle = React__namespace.useMemo(() => {
2974
+ if (!maxHeight)
2975
+ return undefined;
2976
+ return {
2977
+ maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight,
2978
+ };
2979
+ }, [maxHeight]);
2966
2980
  // ==================== Callbacks ====================
2967
2981
  const getRowClassName = React__namespace.useCallback((row) => {
2968
2982
  if (typeof rowClassName === "function") {
@@ -3011,7 +3025,7 @@ function TableComponent({ className, wrapperClassName, containerClassName, varia
3011
3025
  return renderDefaultEmptyState({ colSpan: table.getAllColumns().length });
3012
3026
  };
3013
3027
  // ==================== Render ====================
3014
- return (jsxRuntime.jsx("div", { ref: ref, className: cn("w-full", wrapperClassName), ...props, children: jsxRuntime.jsxs("div", { className: cn("relative overflow-x-hidden", maxHeight && "overflow-y-auto", containerClassName), style: maxHeight ? { maxHeight } : undefined, 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() }), 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 }))] }), detailPanel && (jsxRuntime.jsx(DetailPanel, { isOpen: isDetailPanelOpen, content: detailPanel, data: getSelectedRowData(), onClose: handleDetailPanelClose }))] }) }));
3028
+ 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(), isBodyScrollable: Boolean(maxHeight) }), 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 }))] }), detailPanel && (jsxRuntime.jsx(DetailPanel, { isOpen: isDetailPanelOpen, content: detailPanel, data: getSelectedRowData(), onClose: handleDetailPanelClose }))] }) }));
3015
3029
  }
3016
3030
  // ==================== Export ====================
3017
3031
  const Table = React__namespace.forwardRef(TableComponent);