@object-ui/fields 4.0.1 → 4.0.3

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.
Files changed (26) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/package.json +7 -7
  3. package/dist/packages/fields/src/__tests__/boolean-checkbox.test.d.ts +0 -0
  4. package/dist/packages/fields/src/__tests__/cell-renderers.test.d.ts +0 -0
  5. package/dist/packages/fields/src/__tests__/datetime-cell.test.d.ts +0 -0
  6. package/dist/packages/fields/src/__tests__/datetime-timezone.test.d.ts +0 -0
  7. package/dist/packages/fields/src/__tests__/extreme-inputs.test.d.ts +0 -0
  8. package/dist/packages/fields/src/__tests__/form-variants.test.d.ts +0 -0
  9. package/dist/packages/fields/src/lookup-depends-on.test.d.ts +0 -1
  10. package/dist/packages/fields/src/new-widgets.test.d.ts +0 -8
  11. package/dist/packages/fields/src/record-picker.test.d.ts +0 -1
  12. package/dist/packages/fields/src/remaining-widgets.test.d.ts +0 -1
  13. package/dist/packages/fields/src/text-rich-widgets.test.d.ts +0 -1
  14. package/dist/packages/fields/src/visual-widgets.test.d.ts +0 -1
  15. package/src/__tests__/boolean-checkbox.test.tsx +0 -74
  16. package/src/__tests__/cell-renderers.test.tsx +0 -1193
  17. package/src/__tests__/datetime-cell.test.tsx +0 -46
  18. package/src/__tests__/datetime-timezone.test.tsx +0 -770
  19. package/src/__tests__/extreme-inputs.test.tsx +0 -567
  20. package/src/__tests__/form-variants.test.tsx +0 -306
  21. package/src/lookup-depends-on.test.tsx +0 -130
  22. package/src/new-widgets.test.tsx +0 -302
  23. package/src/record-picker.test.tsx +0 -1703
  24. package/src/remaining-widgets.test.tsx +0 -211
  25. package/src/text-rich-widgets.test.tsx +0 -104
  26. package/src/visual-widgets.test.tsx +0 -97
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @object-ui/fields
2
2
 
3
+ ## 4.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 4be43e2: **Page-mode record forms (`editMode: 'page'`).** New per-object metadata flag that opts a record's create/edit form into a dedicated full-screen route (`/apps/:appName/:objectName/new`, `/apps/:appName/:objectName/record/:recordId/edit`). Two new declarative actions `navigate_create` and `navigate_edit` open these routes from JSON action buttons. Default modal behavior is preserved for objects that do not set `editMode`.
8
+
9
+ **`@object-ui/plugin-list` & `@object-ui/plugin-detail`: `ComponentRegistry` singleton fix.** Both plugins' Vite configs now mark all `@object-ui/*` packages as external so each plugin no longer bundles its own private copy of `@object-ui/core`. Cross-plugin component lookups now resolve correctly from the same singleton registry. `plugin-list` dist shrank from multi-MB to 67 kB (gzip 16 kB); `plugin-detail` to 124 kB (gzip 28 kB).
10
+
11
+ **`@object-ui/app-shell` `CreateViewDialog` churn fix.** `existingSet` is now memoised on the joined string key of `existingLabels` rather than the raw array reference, preventing the name-suggest `useEffect` from re-firing on every parent render.
12
+
13
+ **CI fixes.** `ReportViewer` conditional-formatting test now accepts both `rgb(...)` and hex color representations. `ObjectView` i18n mocks rewritten to mirror the real hook shapes (`useObjectTranslation`, `useObjectLabel`).
14
+
15
+ - Updated dependencies [4be43e2]
16
+ - @object-ui/types@4.0.3
17
+ - @object-ui/core@4.0.3
18
+ - @object-ui/i18n@4.0.3
19
+ - @object-ui/react@4.0.3
20
+ - @object-ui/components@4.0.3
21
+ - @object-ui/providers@4.0.3
22
+
3
23
  ## 4.0.1
4
24
 
5
25
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/fields",
3
- "version": "4.0.1",
3
+ "version": "4.0.3",
4
4
  "description": "Field renderers and registry for Object UI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,12 +27,12 @@
27
27
  "clsx": "^2.1.1",
28
28
  "lucide-react": "^1.14.0",
29
29
  "tailwind-merge": "^3.5.0",
30
- "@object-ui/components": "4.0.1",
31
- "@object-ui/core": "4.0.1",
32
- "@object-ui/i18n": "4.0.1",
33
- "@object-ui/providers": "4.0.1",
34
- "@object-ui/react": "4.0.1",
35
- "@object-ui/types": "4.0.1"
30
+ "@object-ui/components": "4.0.3",
31
+ "@object-ui/core": "4.0.3",
32
+ "@object-ui/i18n": "4.0.3",
33
+ "@object-ui/providers": "4.0.3",
34
+ "@object-ui/react": "4.0.3",
35
+ "@object-ui/types": "4.0.3"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "react": "^18.0.0 || ^19.0.0",
@@ -1 +0,0 @@
1
- export {};
@@ -1,8 +0,0 @@
1
- /**
2
- * ObjectUI
3
- * Copyright (c) 2024-present ObjectStack Inc.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,74 +0,0 @@
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
- });