Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -810,6 +810,9 @@ The `FlowDesigner` is a canvas-based flow editor that bridges the gap between th
- [x] `formatRelativeDate()` function added for relative time display ("Today", "2 days ago", "Yesterday")
- [x] DataTable/VirtualGrid header styling unified: `text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/70 bg-muted/30`
- [x] Remaining hardcoded gray colors in ObjectGrid loading spinner and status badge fallback replaced with theme tokens
- [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
- [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
- [x] Boolean type visual rendering — `BooleanCellRenderer` renders `<Checkbox disabled>` for true/false; null/undefined values display as `—`

**ConfigPanelRenderer:**
- [x] `<Separator>` added between sections for visual clarity
Expand Down
6 changes: 2 additions & 4 deletions packages/fields/src/__tests__/boolean-checkbox.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,15 @@ describe('BooleanCellRenderer', () => {
expect(checkbox).toHaveAttribute('data-state', 'unchecked');
});

it('should render an unchecked checkbox for null/undefined values', () => {
it('should render dash for null/undefined values', () => {
render(
<BooleanCellRenderer
value={null}
field={{ name: 'active', type: 'boolean' } as any}
/>
);

const checkbox = screen.getByRole('checkbox');
expect(checkbox).toBeInTheDocument();
expect(checkbox).toHaveAttribute('data-state', 'unchecked');
expect(screen.getByText('—')).toBeInTheDocument();
});

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