Skip to content

Commit 969f187

Browse files
Merge pull request #191 from objectstack-ai/copilot/fix-object-grid-error
2 parents 11cc13d + 2843404 commit 969f187

2 files changed

Lines changed: 52 additions & 11 deletions

File tree

packages/components/src/ui/select.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,15 @@ function SelectValue({
3030
return <SelectPrimitive.Value data-slot="select-value" {...props} />
3131
}
3232

33-
function SelectTrigger({
34-
className,
35-
size = "default",
36-
children,
37-
...props
38-
}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
39-
size?: "sm" | "default"
40-
}) {
33+
const SelectTrigger = React.forwardRef<
34+
React.ElementRef<typeof SelectPrimitive.Trigger>,
35+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {
36+
size?: "sm" | "default"
37+
}
38+
>(({ className, size = "default", children, ...props }, ref) => {
4139
return (
4240
<SelectPrimitive.Trigger
41+
ref={ref}
4342
data-slot="select-trigger"
4443
data-size={size}
4544
className={cn(
@@ -54,7 +53,8 @@ function SelectTrigger({
5453
</SelectPrimitive.Icon>
5554
</SelectPrimitive.Trigger>
5655
)
57-
}
56+
})
57+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName
5858

5959
function SelectContent({
6060
className,

packages/views/src/index.tsx

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,57 @@ import { ObjectView } from './ObjectView';
6565

6666
// Create renderer wrappers for ComponentRegistry
6767
const ObjectGridRenderer: React.FC<{ schema: any }> = ({ schema }) => {
68-
// For now, render without dataSource since it requires ObjectQL setup
69-
// This allows the component to at least render in documentation
68+
// Check if schema has inline data (staticData or data.items)
69+
const hasInlineData = schema.staticData || (schema.data?.provider === 'value' && schema.data?.items);
70+
71+
// If no inline data and no dataSource will be provided, show placeholder
72+
if (!hasInlineData) {
73+
return (
74+
<div className="p-4 border border-amber-300 bg-amber-50 rounded-md">
75+
<p className="text-amber-800 text-sm">
76+
ObjectGrid requires either <code className="bg-amber-100 px-1 rounded">staticData</code> or a configured dataSource
77+
</p>
78+
</div>
79+
);
80+
}
81+
82+
// For documentation with inline data, render without dataSource
7083
return <ObjectGrid schema={schema} dataSource={null as any} />;
7184
};
7285

7386
const ObjectFormRenderer: React.FC<{ schema: any }> = ({ schema }) => {
87+
// Check if schema has inline data
88+
const hasInlineData = schema.staticData || (schema.data?.provider === 'value' && schema.data?.items);
89+
90+
// If no inline data and no dataSource will be provided, show placeholder
91+
if (!hasInlineData) {
92+
return (
93+
<div className="p-4 border border-amber-300 bg-amber-50 rounded-md">
94+
<p className="text-amber-800 text-sm">
95+
ObjectForm requires either <code className="bg-amber-100 px-1 rounded">staticData</code> or a configured dataSource
96+
</p>
97+
</div>
98+
);
99+
}
100+
74101
return <ObjectForm schema={schema} dataSource={null as any} />;
75102
};
76103

77104
const ObjectViewRenderer: React.FC<{ schema: any }> = ({ schema }) => {
105+
// Check if schema has inline data
106+
const hasInlineData = schema.staticData || (schema.data?.provider === 'value' && schema.data?.items);
107+
108+
// If no inline data and no dataSource will be provided, show placeholder
109+
if (!hasInlineData) {
110+
return (
111+
<div className="p-4 border border-amber-300 bg-amber-50 rounded-md">
112+
<p className="text-amber-800 text-sm">
113+
ObjectView requires either <code className="bg-amber-100 px-1 rounded">staticData</code> or a configured dataSource
114+
</p>
115+
</div>
116+
);
117+
}
118+
78119
return <ObjectView schema={schema} dataSource={null as any} />;
79120
};
80121

0 commit comments

Comments
 (0)