Skip to content

Commit f411a87

Browse files
authored
support styles under DataRow of DataGrid widget (#1079)
1 parent 7b49364 commit f411a87

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

.changeset/gorgeous-donuts-tan.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@ensembleui/react-kitchen-sink": patch
3+
"@ensembleui/react-runtime": patch
4+
---
5+
6+
support styles under DataRow of DataGrid widget

apps/kitchen-sink/src/ensemble/screens/widgets.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,9 @@ View:
417417
key: ${dummyData.id}
418418
template:
419419
DataRow:
420+
styles:
421+
backgroundColor: ${index % 2 === 0 ? "beige" :"lightgreen"}
422+
border: 4px double blue
420423
disableSelection: ${dummyData.id === 2}
421424
item-template:
422425
data: ${Object.values(dummyData)}

packages/runtime/src/widgets/DataGrid/DataGrid.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
useRegisterBindings,
1616
type EnsembleAction,
1717
unwrapWidget,
18+
evaluateDeep,
1819
} from "@ensembleui/react-framework";
1920
import React, {
2021
useCallback,
@@ -81,6 +82,7 @@ export interface DataGridRowTemplate {
8182
disableSelection?: Expression<boolean>;
8283
onTap?: EnsembleAction;
8384
children?: EnsembleWidget[];
85+
styles?: EnsembleWidgetStyles;
8486
} & HasItemTemplate;
8587
}
8688

@@ -475,7 +477,20 @@ export const DataGrid: React.FC<GridProps> = (props) => {
475477
key={resolvedWidgetId}
476478
onChange={onChange}
477479
onRow={(record, recordIndex) => {
478-
return { onClick: () => onTapActionCallback(record, recordIndex) };
480+
const rowStyles = itemTemplate.template.properties.styles;
481+
const recordStyles = rowStyles
482+
? evaluateDeep(
483+
rowStyles as {
484+
[key: string]: unknown;
485+
},
486+
defaultScreenContext.model,
487+
{ ...record, index: recordIndex },
488+
)
489+
: {};
490+
return {
491+
onClick: () => onTapActionCallback(record, recordIndex),
492+
style: recordStyles,
493+
};
479494
}}
480495
pagination={paginationObject}
481496
rowKey={(data: unknown) => {
@@ -613,6 +628,9 @@ export const DataGrid: React.FC<GridProps> = (props) => {
613628
height: 100%;
614629
cursor: col-resize;
615630
}
631+
#${resolvedWidgetId} table {
632+
border-collapse: collapse;
633+
}
616634
617635
#${resolvedWidgetId} .ant-table-thead > tr > th {
618636
${

0 commit comments

Comments
 (0)