Skip to content

Commit cbb6fb6

Browse files
authored
Merge pull request #823 from objectstack-ai/copilot/optimize-objectgrid-cell-rendering
2 parents f3c0e2c + 8535939 commit cbb6fb6

File tree

6 files changed

+575
-36
lines changed

6 files changed

+575
-36
lines changed

ROADMAP.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,9 @@ The `FlowDesigner` is a canvas-based flow editor that bridges the gap between th
810810
- [x] `formatRelativeDate()` function added for relative time display ("Today", "2 days ago", "Yesterday")
811811
- [x] DataTable/VirtualGrid header styling unified: `text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/70 bg-muted/30`
812812
- [x] Remaining hardcoded gray colors in ObjectGrid loading spinner and status badge fallback replaced with theme tokens
813+
- [x] Select/status type Badge rendering — `getCellRenderer()` returns `<Badge>` with color mapping from `field.options`; auto-generated options from unique data values when type is inferred; priority semantic colors (Critical→red, High→orange, Medium→yellow, Low→gray); muted default style for unconfigured colors
814+
- [x] Date type human-readable formatting — `DateCellRenderer` defaults to relative format ("Today", "Yesterday", "3 days ago"); overdue dates styled with red text; ISO timestamp shown as hover tooltip; `formatRelativeDate()` threshold tightened to 7 days
815+
- [x] Boolean type visual rendering — `BooleanCellRenderer` renders `<Checkbox disabled>` for true/false; null/undefined values display as ``
813816

814817
**ConfigPanelRenderer:**
815818
- [x] `<Separator>` added between sections for visual clarity

packages/fields/src/__tests__/boolean-checkbox.test.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,15 @@ describe('BooleanCellRenderer', () => {
3636
expect(checkbox).toHaveAttribute('data-state', 'unchecked');
3737
});
3838

39-
it('should render an unchecked checkbox for null/undefined values', () => {
39+
it('should render dash for null/undefined values', () => {
4040
render(
4141
<BooleanCellRenderer
4242
value={null}
4343
field={{ name: 'active', type: 'boolean' } as any}
4444
/>
4545
);
4646

47-
const checkbox = screen.getByRole('checkbox');
48-
expect(checkbox).toBeInTheDocument();
49-
expect(checkbox).toHaveAttribute('data-state', 'unchecked');
47+
expect(screen.getByText('—')).toBeInTheDocument();
5048
});
5149

5250
it('should render checkbox as disabled (non-interactive)', () => {

0 commit comments

Comments
 (0)