@versini/ui-datagrid 0.1.1 → 0.2.0

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.
Files changed (32) hide show
  1. package/dist/DataGrid/DataGrid.d.ts +1 -1
  2. package/dist/DataGrid/DataGrid.js +17 -6
  3. package/dist/DataGrid/DataGridContext.js +1 -1
  4. package/dist/DataGrid/index.js +1 -1
  5. package/dist/DataGrid/utilities.d.ts +9 -1
  6. package/dist/DataGrid/utilities.js +9 -3
  7. package/dist/DataGridAnimated/AnimatedWrapper.js +1 -1
  8. package/dist/DataGridAnimated/index.js +1 -1
  9. package/dist/DataGridAnimated/useAnimatedHeight.js +1 -1
  10. package/dist/DataGridBody/DataGridBody.js +10 -4
  11. package/dist/DataGridBody/index.js +1 -1
  12. package/dist/DataGridCell/DataGridCell.js +1 -1
  13. package/dist/DataGridCell/index.js +1 -1
  14. package/dist/DataGridCellSort/DataGridCellSort.js +1 -1
  15. package/dist/DataGridCellSort/index.js +1 -1
  16. package/dist/DataGridConstants/DataGridConstants.js +1 -1
  17. package/dist/DataGridConstants/index.js +1 -1
  18. package/dist/DataGridFooter/DataGridFooter.d.ts +5 -1
  19. package/dist/DataGridFooter/DataGridFooter.js +14 -4
  20. package/dist/DataGridFooter/index.js +1 -1
  21. package/dist/DataGridHeader/DataGridHeader.d.ts +5 -1
  22. package/dist/DataGridHeader/DataGridHeader.js +17 -3
  23. package/dist/DataGridHeader/index.js +1 -1
  24. package/dist/DataGridInfinite/InfiniteScrollMarker.js +1 -1
  25. package/dist/DataGridInfinite/index.js +1 -1
  26. package/dist/DataGridInfinite/useInfiniteScroll.js +1 -1
  27. package/dist/DataGridRow/DataGridRow.d.ts +1 -1
  28. package/dist/DataGridRow/DataGridRow.js +44 -7
  29. package/dist/DataGridRow/index.js +1 -1
  30. package/dist/DataGridSorting/index.js +1 -1
  31. package/dist/DataGridSorting/sortingUtils.js +1 -1
  32. package/package.json +2 -2
@@ -1,2 +1,2 @@
1
1
  import type { DataGridProps } from "./DataGridTypes";
2
- export declare const DataGrid: ({ caption, className, wrapperClassName, children, mode, compact, stickyHeader, stickyFooter, blurEffect, maxHeight, disabled, ...rest }: DataGridProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const DataGrid: ({ caption, className, wrapperClassName, children, mode, compact, stickyHeader, stickyFooter, blurEffect, maxHeight, disabled, columns, ...rest }: DataGridProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -27,7 +27,7 @@ import { getDataGridClasses } from "./utilities.js";
27
27
 
28
28
  /* =============================================================================
29
29
  * DataGrid (main component)
30
- * ========================================================================== */ const DataGrid = ({ caption, className, wrapperClassName, children, mode = "system", compact = false, stickyHeader = false, stickyFooter = false, blurEffect = BlurEffects.NONE, maxHeight, disabled = false, ...rest })=>{
30
+ * ========================================================================== */ const DataGrid = ({ caption, className, wrapperClassName, children, mode = "system", compact = false, stickyHeader = false, stickyFooter = false, blurEffect = BlurEffects.NONE, maxHeight, disabled = false, columns, ...rest })=>{
31
31
  const captionId = useId();
32
32
  const classes = useMemo(()=>getDataGridClasses({
33
33
  mode,
@@ -36,7 +36,8 @@ import { getDataGridClasses } from "./utilities.js";
36
36
  stickyHeader,
37
37
  stickyFooter,
38
38
  disabled,
39
- hasCaption: Boolean(caption)
39
+ hasCaption: Boolean(caption),
40
+ hasColumns: Boolean(columns)
40
41
  }), [
41
42
  mode,
42
43
  className,
@@ -44,7 +45,8 @@ import { getDataGridClasses } from "./utilities.js";
44
45
  stickyHeader,
45
46
  stickyFooter,
46
47
  disabled,
47
- caption
48
+ caption,
49
+ columns
48
50
  ]);
49
51
  const contextValue = useMemo(()=>({
50
52
  mode,
@@ -53,7 +55,8 @@ import { getDataGridClasses } from "./utilities.js";
53
55
  stickyFooter,
54
56
  blurEffect,
55
57
  disabled,
56
- hasCaption: Boolean(caption)
58
+ hasCaption: Boolean(caption),
59
+ columns
57
60
  }), [
58
61
  mode,
59
62
  compact,
@@ -61,7 +64,8 @@ import { getDataGridClasses } from "./utilities.js";
61
64
  stickyFooter,
62
65
  blurEffect,
63
66
  disabled,
64
- caption
67
+ caption,
68
+ columns
65
69
  ]);
66
70
  const wrapperStyle = maxHeight ? {
67
71
  maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
@@ -71,10 +75,17 @@ import { getDataGridClasses } from "./utilities.js";
71
75
  * wrapper has overflow-hidden - Scrollable content area in the middle with
72
76
  * padding - Header/footer are absolutely positioned.
73
77
  */ const hasSticky = stickyHeader || stickyFooter;
78
+ /**
79
+ * When columns are provided, apply grid-template-columns at the grid level
80
+ * so all rows can use subgrid to inherit the same column sizing.
81
+ */ const gridStyle = columns ? {
82
+ gridTemplateColumns: columns.join(" ")
83
+ } : undefined;
74
84
  const gridContent = /*#__PURE__*/ jsx("div", {
75
85
  role: "grid",
76
86
  className: classes.grid,
77
87
  "aria-labelledby": caption ? captionId : undefined,
88
+ style: gridStyle,
78
89
  ...rest,
79
90
  children: children
80
91
  });
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -17,12 +17,16 @@ export declare const getCaptionCopyClasses: ({ mode }: {
17
17
  * - Outer wrapper has overflow-hidden
18
18
  * - Scrollable area is a separate inner container
19
19
  * - Header/footer are absolutely positioned overlays
20
+ *
21
+ * When columns prop is provided, the grid uses CSS Grid layout with subgrid
22
+ * support for proper column alignment across all rows.
20
23
  */
21
- export declare const getDataGridClasses: ({ mode, className, wrapperClassName, stickyHeader, stickyFooter, disabled, hasCaption, }: {
24
+ export declare const getDataGridClasses: ({ mode, className, wrapperClassName, stickyHeader, stickyFooter, disabled, hasCaption, hasColumns, }: {
22
25
  mode: ThemeMode;
23
26
  className?: string;
24
27
  disabled?: boolean;
25
28
  hasCaption?: boolean;
29
+ hasColumns?: boolean;
26
30
  stickyFooter?: boolean;
27
31
  stickyHeader?: boolean;
28
32
  wrapperClassName?: string;
@@ -39,6 +43,10 @@ export declare const getDataGridClasses: ({ mode, className, wrapperClassName, s
39
43
  * When there's a caption, add extra padding for caption (~36px) + header (~40px).
40
44
  */
41
45
  scrollableContent: string;
46
+ /**
47
+ * When columns are provided, use CSS Grid so rows can use subgrid for
48
+ * consistent column alignment. Otherwise, use flexbox.
49
+ */
42
50
  grid: string;
43
51
  caption: string;
44
52
  };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -66,7 +66,10 @@ const getCaptionCopyClasses = ({ mode })=>{
66
66
  * - Outer wrapper has overflow-hidden
67
67
  * - Scrollable area is a separate inner container
68
68
  * - Header/footer are absolutely positioned overlays
69
- */ const getDataGridClasses = ({ mode, className, wrapperClassName, stickyHeader, stickyFooter, disabled, hasCaption })=>{
69
+ *
70
+ * When columns prop is provided, the grid uses CSS Grid layout with subgrid
71
+ * support for proper column alignment across all rows.
72
+ */ const getDataGridClasses = ({ mode, className, wrapperClassName, stickyHeader, stickyFooter, disabled, hasCaption, hasColumns })=>{
70
73
  const overlayClasses = disabled ? getOverlayClasses({
71
74
  mode
72
75
  }) : null;
@@ -99,7 +102,10 @@ const getCaptionCopyClasses = ({ mode })=>{
99
102
  "pt-19": stickyHeader && hasCaption,
100
103
  "pb-10": stickyFooter
101
104
  }),
102
- grid: clsx("my-0 w-full text-left text-sm flex flex-col", className, {
105
+ /**
106
+ * When columns are provided, use CSS Grid so rows can use subgrid for
107
+ * consistent column alignment. Otherwise, use flexbox.
108
+ */ grid: clsx("my-0 w-full text-left text-sm", hasColumns ? "grid" : "flex flex-col", className, {
103
109
  "text-copy-light": mode === "dark",
104
110
  "text-copy-dark": mode === "light",
105
111
  "text-copy-light dark:text-copy-dark": mode === "system",
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -25,18 +25,24 @@ import { CellWrapper } from "../DataGridConstants/index.js";
25
25
  * DataGridBody
26
26
  * ========================================================================== */ const DataGridBody = ({ className, children, ...rest })=>{
27
27
  return /*#__PURE__*/ jsx(DataGridContext.Consumer, {
28
- children: (ctx)=>/*#__PURE__*/ jsx(DataGridContext.Provider, {
28
+ children: (ctx)=>{
29
+ /**
30
+ * When columns are provided, use display:contents so the body
31
+ * doesn't interfere with the grid flow. Rows will use subgrid.
32
+ */ const bodyClass = ctx.columns ? clsx("contents", className) : clsx("flex flex-col", className);
33
+ return /*#__PURE__*/ jsx(DataGridContext.Provider, {
29
34
  value: {
30
35
  ...ctx,
31
36
  cellWrapper: CellWrapper.BODY
32
37
  },
33
38
  children: /*#__PURE__*/ jsx("div", {
34
39
  role: "rowgroup",
35
- className: clsx("flex flex-col", className),
40
+ className: bodyClass,
36
41
  ...rest,
37
42
  children: children
38
43
  })
39
- })
44
+ });
45
+ }
40
46
  });
41
47
  };
42
48
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -2,11 +2,15 @@ import type { DataGridFooterProps } from "../DataGrid/DataGridTypes";
2
2
  import { type BlurEffect, type ThemeMode } from "../DataGridConstants/DataGridConstants";
3
3
  /**
4
4
  * Generates classes for the DataGridFooter.
5
+ *
6
+ * When columns are provided (subgrid mode), uses display:contents so the
7
+ * footer doesn't break the parent grid flow.
5
8
  */
6
- export declare const getFooterClasses: ({ className, stickyFooter, mode, blurEffect, }: {
9
+ export declare const getFooterClasses: ({ className, stickyFooter, mode, blurEffect, hasColumns, }: {
7
10
  mode: ThemeMode;
8
11
  blurEffect?: BlurEffect;
9
12
  className?: string;
13
+ hasColumns?: boolean;
10
14
  stickyFooter?: boolean;
11
15
  }) => string;
12
16
  export declare const DataGridFooter: ({ className, children, ...rest }: DataGridFooterProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -27,7 +27,16 @@ import { BlurEffects, CellWrapper } from "../DataGridConstants/DataGridConstants
27
27
 
28
28
  /**
29
29
  * Generates classes for the DataGridFooter.
30
- */ const getFooterClasses = ({ className, stickyFooter, mode, blurEffect })=>{
30
+ *
31
+ * When columns are provided (subgrid mode), uses display:contents so the
32
+ * footer doesn't break the parent grid flow.
33
+ */ const getFooterClasses = ({ className, stickyFooter, mode, blurEffect, hasColumns })=>{
34
+ /**
35
+ * When columns are provided and not sticky, use display:contents so the
36
+ * rowgroup doesn't interfere with the grid flow. The rows will use subgrid.
37
+ */ if (hasColumns && !stickyFooter) {
38
+ return clsx("contents", className);
39
+ }
31
40
  const hasBlur = blurEffect && blurEffect !== BlurEffects.NONE;
32
41
  return clsx("flex flex-col", {
33
42
  /**
@@ -57,7 +66,7 @@ import { BlurEffects, CellWrapper } from "../DataGridConstants/DataGridConstants
57
66
  * DataGridFooter
58
67
  * ========================================================================== */ const DataGridFooter = ({ className, children, ...rest })=>{
59
68
  return /*#__PURE__*/ jsx(DataGridContext.Consumer, {
60
- children: ({ mode, stickyFooter, blurEffect })=>/*#__PURE__*/ jsx(DataGridContext.Consumer, {
69
+ children: ({ mode, stickyFooter, blurEffect, columns })=>/*#__PURE__*/ jsx(DataGridContext.Consumer, {
61
70
  children: (ctx)=>/*#__PURE__*/ jsx(DataGridContext.Provider, {
62
71
  value: {
63
72
  ...ctx,
@@ -69,7 +78,8 @@ import { BlurEffects, CellWrapper } from "../DataGridConstants/DataGridConstants
69
78
  className,
70
79
  stickyFooter,
71
80
  mode,
72
- blurEffect
81
+ blurEffect,
82
+ hasColumns: Boolean(columns)
73
83
  }),
74
84
  ...rest,
75
85
  children: children
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -3,12 +3,16 @@ import { type BlurEffect, type ThemeMode } from "../DataGridConstants/DataGridCo
3
3
  /**
4
4
  * Generates classes for the DataGridHeader. Uses absolute positioning like
5
5
  * Panel - header floats above the scrollable content.
6
+ *
7
+ * When columns are provided (subgrid mode), uses display:contents so the
8
+ * header doesn't break the parent grid flow.
6
9
  */
7
- export declare const getHeaderClasses: ({ className, stickyHeader, mode, blurEffect, hasCaption, }: {
10
+ export declare const getHeaderClasses: ({ className, stickyHeader, mode, blurEffect, hasCaption, hasColumns, }: {
8
11
  mode: ThemeMode;
9
12
  blurEffect?: BlurEffect;
10
13
  className?: string;
11
14
  hasCaption?: boolean;
15
+ hasColumns?: boolean;
12
16
  stickyHeader?: boolean;
13
17
  }) => string;
14
18
  export declare const DataGridHeader: ({ className, children, ...rest }: DataGridHeaderProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -28,7 +28,20 @@ import { CellWrapper } from "../DataGridConstants/DataGridConstants.js";
28
28
  /**
29
29
  * Generates classes for the DataGridHeader. Uses absolute positioning like
30
30
  * Panel - header floats above the scrollable content.
31
- */ const getHeaderClasses = ({ className, stickyHeader, mode, blurEffect, hasCaption })=>{
31
+ *
32
+ * When columns are provided (subgrid mode), uses display:contents so the
33
+ * header doesn't break the parent grid flow.
34
+ */ const getHeaderClasses = ({ className, stickyHeader, mode, blurEffect, hasCaption, hasColumns })=>{
35
+ /**
36
+ * When columns are provided and not sticky, use display:contents so the
37
+ * rowgroup doesn't interfere with the grid flow. The rows will use subgrid.
38
+ */ if (hasColumns && !stickyHeader) {
39
+ return clsx("contents", getCaptionBackgroundClasses({
40
+ mode
41
+ }), getCaptionCopyClasses({
42
+ mode
43
+ }), className);
44
+ }
32
45
  return clsx("flex flex-col", {
33
46
  "absolute left-0 right-0 z-20": stickyHeader,
34
47
  "top-0": stickyHeader && !hasCaption,
@@ -58,7 +71,8 @@ import { CellWrapper } from "../DataGridConstants/DataGridConstants.js";
58
71
  stickyHeader: ctx.stickyHeader,
59
72
  mode: ctx.mode,
60
73
  blurEffect: ctx.blurEffect,
61
- hasCaption: ctx.hasCaption
74
+ hasCaption: ctx.hasCaption,
75
+ hasColumns: Boolean(ctx.columns)
62
76
  }),
63
77
  ...rest,
64
78
  children: children
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,2 +1,2 @@
1
1
  import type { DataGridRowProps } from "../DataGrid/DataGridTypes";
2
- export declare const DataGridRow: ({ className, children, ...rest }: DataGridRowProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const DataGridRow: ({ className, children, style: userStyle, ...rest }: DataGridRowProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -62,14 +62,48 @@ const getRowClasses = ({ mode, className, cellWrapper, stickyHeader, stickyFoote
62
62
  };
63
63
  /* =============================================================================
64
64
  * DataGridRow
65
- * ========================================================================== */ const DataGridRow = ({ className, children, ...rest })=>{
65
+ * ========================================================================== */ const DataGridRow = ({ className, children, style: userStyle, ...rest })=>{
66
66
  // Count the number of direct children to determine column count
67
67
  const columnCount = react.Children.count(children);
68
68
  return /*#__PURE__*/ jsx(DataGridContext.Consumer, {
69
- children: ({ mode, cellWrapper, stickyHeader, stickyFooter })=>{
70
- const rowStyle = {
71
- gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`
72
- };
69
+ children: ({ mode, cellWrapper, stickyHeader, stickyFooter, columns })=>{
70
+ /**
71
+ * Determine if this row is inside a sticky header/footer.
72
+ * Sticky elements are absolutely positioned and outside the main grid
73
+ * flow, so they can't use subgrid.
74
+ */ const isInStickyHeader = cellWrapper === CellWrapper.HEADER && stickyHeader;
75
+ const isInStickyFooter = cellWrapper === CellWrapper.FOOTER && stickyFooter;
76
+ const isInStickyContext = isInStickyHeader || isInStickyFooter;
77
+ /**
78
+ * When columns are provided AND the row is inside the grid flow
79
+ * (not in a sticky header/footer), use CSS subgrid to inherit the
80
+ * column sizing from the parent grid.
81
+ *
82
+ * For sticky headers/footers, use the explicit column template since
83
+ * they're absolutely positioned outside the main grid.
84
+ *
85
+ * When columns are not provided, fall back to the original behavior
86
+ * where each row defines its own equal-width columns.
87
+ */ let rowStyle;
88
+ if (columns) {
89
+ if (isInStickyContext) {
90
+ // Sticky elements can't use subgrid, use explicit template
91
+ rowStyle = {
92
+ gridTemplateColumns: columns.join(" ")
93
+ };
94
+ } else {
95
+ // Normal flow: use subgrid to inherit from parent grid
96
+ rowStyle = {
97
+ gridColumn: "1 / -1",
98
+ gridTemplateColumns: "subgrid"
99
+ };
100
+ }
101
+ } else {
102
+ // No columns prop: use equal-width columns
103
+ rowStyle = {
104
+ gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`
105
+ };
106
+ }
73
107
  return /*#__PURE__*/ jsx("div", {
74
108
  role: "row",
75
109
  className: getRowClasses({
@@ -79,7 +113,10 @@ const getRowClasses = ({ mode, className, cellWrapper, stickyHeader, stickyFoote
79
113
  stickyHeader,
80
114
  stickyFooter
81
115
  }),
82
- style: rowStyle,
116
+ style: {
117
+ ...rowStyle,
118
+ ...userStyle
119
+ },
83
120
  ...rest,
84
121
  children: children
85
122
  });
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v0.1.1
2
+ @versini/ui-datagrid v0.2.0
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/ui-datagrid",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -94,5 +94,5 @@
94
94
  "sideEffects": [
95
95
  "**/*.css"
96
96
  ],
97
- "gitHead": "1d0a3b87ca454d716cbf671cd805df03bf77e962"
97
+ "gitHead": "51fb2afed4cea9931d78243b1587e5699024d03e"
98
98
  }