Skip to content

Commit 33f08ea

Browse files
committed
Add onRowClick prop to ObjectGrid for enhanced row interaction
1 parent 71681d4 commit 33f08ea

2 files changed

Lines changed: 24 additions & 5 deletions

File tree

packages/plugin-detail/src/DetailView.tsx

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ import { DetailSection } from './DetailSection';
1313
import { DetailTabs } from './DetailTabs';
1414
import { RelatedList } from './RelatedList';
1515
import { SchemaRenderer } from '@object-ui/react';
16-
import type { DetailViewSchema } from '@object-ui/types';
16+
import type { DetailViewSchema, DataSource } from '@object-ui/types';
1717

1818
export interface DetailViewProps {
1919
schema: DetailViewSchema;
20+
dataSource?: DataSource;
2021
className?: string;
2122
onEdit?: () => void;
2223
onDelete?: () => void;
@@ -25,17 +26,34 @@ export interface DetailViewProps {
2526

2627
export const DetailView: React.FC<DetailViewProps> = ({
2728
schema,
29+
dataSource,
2830
className,
2931
onEdit,
3032
onDelete,
3133
onBack,
3234
}) => {
33-
const [data] = React.useState(schema.data);
34-
const [loading, setLoading] = React.useState(!schema.data && !!schema.api);
35+
const [data, setData] = React.useState<any>(schema.data);
36+
const [loading, setLoading] = React.useState(!schema.data && !!((schema.api && schema.resourceId) || (dataSource && schema.objectName && schema.resourceId)));
3537

36-
// Fetch data if API provided
38+
// Fetch data if API or DataSource provided
3739
React.useEffect(() => {
38-
if (schema.api && schema.resourceId) {
40+
// If inline data provided, use it
41+
if (schema.data) {
42+
setData(schema.data);
43+
setLoading(false);
44+
return;
45+
}
46+
47+
if (dataSource && schema.objectName && schema.resourceId) {
48+
setLoading(true);
49+
dataSource.findOne(schema.objectName, schema.resourceId).then((result) => {
50+
setData(result);
51+
setLoading(false);
52+
}).catch((err) => {
53+
console.error('Failed to fetch detail data:', err);
54+
setLoading(false);
55+
});
56+
} else if (schema.api && schema.resourceId) {
3957
setLoading(true);
4058
// TODO: Fetch from API
4159
// This would integrate with the data provider

packages/plugin-grid/src/ObjectGrid.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export const ObjectGrid: React.FC<ObjectGridProps> = ({
108108
onEdit,
109109
onDelete,
110110
onRowSelect,
111+
onRowClick,
111112
...rest
112113
}) => {
113114
const [data, setData] = useState<any[]>([]);

0 commit comments

Comments
 (0)