infinity-ui-elements 1.7.6 → 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
@@ -2857,42 +2857,42 @@ const tableCellVariants = classVarianceAuthority.cva("text-body-medium-regular b
2857
2857
  });
2858
2858
 
2859
2859
  function TableHeader({ headerGroups, enableRowSelection, enableSelectAll, showHeaderBackground, stickyHeader, size, headerClassName, isDetailPanelOpen, visibleHeadersCount, onToggleAllRows, isAllRowsSelected, isSomeRowsSelected, isBodyScrollable = false, }) {
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", { className: cn(isBodyScrollable && "table w-full table-fixed"), 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 && index === 0 && "rounded-tl-xlarge ", isLastVisibleColumn && "rounded-tr-xlarge", header.column.columnDef.meta?.headerClassName, headerClassName, "transition-all duration-300 ease-in-out", shouldHideColumn
2867
- ? "opacity-0 translate-x-8 pointer-events-none"
2868
- : "opacity-100 translate-x-0"), style: {
2869
- width: header.getSize(),
2870
- minWidth: header.column.columnDef.minSize,
2871
- maxWidth: header.column.columnDef.maxSize,
2872
- }, 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: {
2873
- asc: "",
2874
- desc: "",
2875
- }[header.column.getIsSorted()] ?? "↕" }))] })) }, header.id));
2876
- })] }, headerGroup.id))) }));
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
+ }) }));
2877
2886
  }
2878
2887
 
2879
- function TableBody({ rows, enableRowSelection, size, variant, showRowHover, cellClassName, isDetailPanelOpen, visibleHeadersCount, effectiveSelectedRowId, onRowClick, getRowClassName, handleRowClick, maxBodyHeight, }) {
2888
+ function TableBody({ rows, enableRowSelection, size, variant, showRowHover, cellClassName, isDetailPanelOpen, visibleHeadersCount, effectiveSelectedRowId, onRowClick, getRowClassName, handleRowClick, }) {
2880
2889
  const [focusedCell, setFocusedCell] = React__namespace.useState(null);
2881
2890
  const [hoveredRow, setHoveredRow] = React__namespace.useState(null);
2882
- const bodyStyle = React__namespace.useMemo(() => {
2883
- if (!maxBodyHeight)
2884
- return undefined;
2885
- return {
2886
- maxHeight: typeof maxBodyHeight === "number"
2887
- ? `${maxBodyHeight}px`
2888
- : maxBodyHeight,
2889
- };
2890
- }, [maxBodyHeight]);
2891
- return (jsxRuntime.jsx("tbody", { className: cn("bg-surface-fill-neutral-intense", maxBodyHeight && "block overflow-y-auto"), style: bodyStyle, children: rows.map((row) => {
2891
+ return (jsxRuntime.jsx("tbody", { className: cn("bg-surface-fill-neutral-intense"), children: rows.map((row) => {
2892
2892
  const isRowSelected = row.id === effectiveSelectedRowId;
2893
2893
  const isRowHovered = hoveredRow === row.id;
2894
2894
  const handleClick = () => handleRowClick(row.original, row.id);
2895
- return (jsxRuntime.jsxs("tr", { className: cn(maxBodyHeight && "table w-full table-fixed", variant === "striped" &&
2895
+ return (jsxRuntime.jsxs("tr", { className: cn(variant === "striped" &&
2896
2896
  row.index % 2 === 1 &&
2897
2897
  "bg-surface-fill-neutral-moderate", onRowClick && "cursor-pointer", isRowSelected && "bg-action-fill-primary-faded", isRowHovered &&
2898
2898
  showRowHover &&
@@ -2970,6 +2970,13 @@ function TableComponent({ className, wrapperClassName, containerClassName, varia
2970
2970
  ? headers.length - hideColumnsOnDetailOpen
2971
2971
  : headers.length;
2972
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]);
2973
2980
  // ==================== Callbacks ====================
2974
2981
  const getRowClassName = React__namespace.useCallback((row) => {
2975
2982
  if (typeof rowClassName === "function") {
@@ -3018,7 +3025,7 @@ function TableComponent({ className, wrapperClassName, containerClassName, varia
3018
3025
  return renderDefaultEmptyState({ colSpan: table.getAllColumns().length });
3019
3026
  };
3020
3027
  // ==================== Render ====================
3021
- 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", containerClassName), 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, maxBodyHeight: maxHeight }))] }), 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 }))] }) }));
3022
3029
  }
3023
3030
  // ==================== Export ====================
3024
3031
  const Table = React__namespace.forwardRef(TableComponent);