@object-ui/fields 3.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/fields",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "description": "Field renderers and registry for Object UI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -23,18 +23,18 @@
23
23
  ],
24
24
  "dependencies": {
25
25
  "clsx": "^2.1.1",
26
- "lucide-react": "^0.563.0",
27
- "tailwind-merge": "^2.6.1",
28
- "@object-ui/components": "3.0.2",
29
- "@object-ui/core": "3.0.2",
30
- "@object-ui/types": "3.0.2"
26
+ "lucide-react": "^0.576.0",
27
+ "tailwind-merge": "^3.5.0",
28
+ "@object-ui/components": "3.1.0",
29
+ "@object-ui/core": "3.1.0",
30
+ "@object-ui/types": "3.1.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "react": "^18.0.0 || ^19.0.0",
34
34
  "react-dom": "^18.0.0 || ^19.0.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@types/react": "19.2.13",
37
+ "@types/react": "19.2.14",
38
38
  "@types/react-dom": "19.2.3",
39
39
  "@vitejs/plugin-react": "^5.1.4",
40
40
  "typescript": "^5.9.3",
@@ -0,0 +1,74 @@
1
+ /**
2
+ * BooleanCellRenderer Checkbox Tests
3
+ *
4
+ * Tests for the Airtable-style checkbox boolean cell renderer.
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import React from 'react';
8
+ import { render, screen } from '@testing-library/react';
9
+ import '@testing-library/jest-dom';
10
+ import { BooleanCellRenderer } from '../index';
11
+
12
+ describe('BooleanCellRenderer', () => {
13
+ it('should render a checked checkbox for true values', () => {
14
+ render(
15
+ <BooleanCellRenderer
16
+ value={true}
17
+ field={{ name: 'active', type: 'boolean' } as any}
18
+ />
19
+ );
20
+
21
+ const checkbox = screen.getByRole('checkbox');
22
+ expect(checkbox).toBeInTheDocument();
23
+ expect(checkbox).toHaveAttribute('data-state', 'checked');
24
+ });
25
+
26
+ it('should render an unchecked checkbox for false values (non-status field)', () => {
27
+ render(
28
+ <BooleanCellRenderer
29
+ value={false}
30
+ field={{ name: 'flagged', type: 'boolean' } as any}
31
+ />
32
+ );
33
+
34
+ const checkbox = screen.getByRole('checkbox');
35
+ expect(checkbox).toBeInTheDocument();
36
+ expect(checkbox).toHaveAttribute('data-state', 'unchecked');
37
+ });
38
+
39
+ it('should render warning badge for active=false', () => {
40
+ const { container } = render(
41
+ <BooleanCellRenderer
42
+ value={false}
43
+ field={{ name: 'active', type: 'boolean', label: 'Active' } as any}
44
+ />
45
+ );
46
+
47
+ const badge = container.querySelector('[data-testid="boolean-warning-badge"]');
48
+ expect(badge).toBeInTheDocument();
49
+ expect(badge?.textContent).toContain('Off');
50
+ });
51
+
52
+ it('should render dash for null/undefined values', () => {
53
+ render(
54
+ <BooleanCellRenderer
55
+ value={null}
56
+ field={{ name: 'active', type: 'boolean' } as any}
57
+ />
58
+ );
59
+
60
+ expect(screen.getByText('—')).toBeInTheDocument();
61
+ });
62
+
63
+ it('should render checkbox as disabled (non-interactive)', () => {
64
+ render(
65
+ <BooleanCellRenderer
66
+ value={true}
67
+ field={{ name: 'active', type: 'boolean' } as any}
68
+ />
69
+ );
70
+
71
+ const checkbox = screen.getByRole('checkbox');
72
+ expect(checkbox).toBeDisabled();
73
+ });
74
+ });