@object-ui/plugin-grid 3.3.1 → 3.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # @object-ui/plugin-grid
2
2
 
3
+ ## 3.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f1ca238: Async streaming export — spec v4 export job lifecycle end-to-end
8
+
9
+ For tenants with millions of records the legacy in-memory CSV/JSON export blew
10
+ past the browser's heap. This change wires the spec v4 streaming-export
11
+ contract through the renderer end-to-end:
12
+
13
+ **`@object-ui/types`** — `DataSource` gains four optional methods:
14
+ - `createExportJob(resource, request)` → `{ jobId, status, estimatedRecords, createdAt }`
15
+ - `getExportJobProgress(jobId)` → `{ status, processedRecords, totalRecords, percentComplete, downloadUrl, … }`
16
+ - `cancelExportJob(jobId)` (optional)
17
+ - `getExportJobDownloadUrl(jobId)` (optional — for short-lived signed URLs)
18
+
19
+ Mirror the spec v4 `CreateExportJobRequest` / `ExportJobProgress` shapes; types
20
+ remain dependency-free.
21
+
22
+ **`@object-ui/components`** — new public API:
23
+ - `useExportJob({ dataSource, pollIntervalMs, onComplete, onError })` — owns the
24
+ full polling loop, terminal-state handling, cancel, and download.
25
+ - `<ExportProgressDialog open onOpenChange job filename closeAfterDownloadMs />` —
26
+ determinate or indeterminate progress bar, byte/record counts, Cancel while
27
+ running, Download on completion, error banner on failure.
28
+
29
+ **`@object-ui/plugin-grid`** — `ObjectGrid` now auto-detects async export
30
+ support: when the `DataSource` exposes `createExportJob` + `getExportJobProgress`
31
+ (and the schema isn't using inline `value` data) the export popover routes
32
+ through the streaming path with a progress dialog. Otherwise it falls back to
33
+ the existing client-side blob path. Set `exportOptions.streaming = false` to
34
+ force the legacy path.
35
+
36
+ ### Patch Changes
37
+
38
+ - a2d7023: End-user feature batch — forms, designer history, import/export, and PWA offline sync.
39
+
40
+ **Forms (`@object-ui/fields`, `@object-ui/providers`)**
41
+ - `FileField`: native `<input capture="environment">` camera capture for mobile devices, plus a uploading-progress indicator driven by `UploadProvider`.
42
+ - `ImageField`: per-image inline crop/rotate via the lazy-loaded `ImageCropperDialog` (canvas-based, zero new deps).
43
+ - New `UploadProvider` in `@object-ui/providers` with pluggable adapters for S3 and Azure Blob (plus the default object-URL adapter for local previews). XHR-based with progress, abort, and retry.
44
+ - `LookupField`: `lookup.dependsOn: string | string[]` to chain dependent lookups (e.g. State depends on Country); the trigger is gated until parent values are present and the OData `$filter` is built automatically.
45
+
46
+ **Container-aware widget widths (`@object-ui/components`)**
47
+ - New `useResizeObserver(ref)` hook exposing `{ width, height }` of any element. SSR-safe; reads the initial size via `getBoundingClientRect`.
48
+ - `plugin-gantt` and `plugin-kanban` now react to their container size instead of `window.innerWidth`, so they behave correctly inside split panels and dashboards.
49
+
50
+ **Designer history (`@object-ui/plugin-designer`)**
51
+ - `useUndoRedo` (and therefore `useDesignerHistory`) gains `persistKey` + `storage` options to round-trip the undo/redo stack through `sessionStorage`, plus a `clearPersisted()` cleanup helper. Drafts now survive accidental tab refreshes.
52
+ - New `<HistoryPanel>` component renders the timeline visually with one-click jump-to-checkpoint via the new `jumpTo(index)` API.
53
+
54
+ **Import wizard (`@object-ui/plugin-grid`)**
55
+ - Saved column-mapping templates: name, save, re-apply, and delete via a new template bar in the mapping step. Persisted under `objectui:import-templates:${objectName}` (override via `templateStorageKey` / `templateStorage`).
56
+ - Inline validation correction: cells with errors in the preview step are now editable; corrections feed straight into the import without requiring a re-upload, with green-bar status indicators for fixed rows.
57
+
58
+ **PWA offline sync (`@object-ui/mobile`)**
59
+ - New `MemoryOfflineQueue` / `IndexedDbOfflineQueue` (`createOfflineQueue()` picks the best backend) backed by IndexedDB.
60
+ - `createOfflineDataSource(inner, { queue })` wraps any DataSource so mutations issued while offline (or that fail with a network-style error) are queued and replayed in order on reconnect. Includes `replay()`, `drop()`, `clear()`, `pending()`, an `onChange` notifier, and an opt-in `resolveConflict` hook for stale-write conflicts.
61
+ - New `useOfflineSync(source)` hook exposes `{ isOnline, pending, isReplaying, replay, drop, clear }` and auto-replays on the browser's `online` event.
62
+ - `getServiceWorkerSource(opts)` emits a customisable Service Worker that pre-caches the app shell, applies network-first to API requests, and broadcasts `REPLAY_QUEUE` to clients on Background Sync. `requestBackgroundSync(tag)` registers a one-shot sync from the page.
63
+
64
+ - Updated dependencies [a2d7023]
65
+ - Updated dependencies [f1ca238]
66
+ - Updated dependencies [de881ef]
67
+ - @object-ui/components@3.4.0
68
+ - @object-ui/fields@3.4.0
69
+ - @object-ui/mobile@3.4.0
70
+ - @object-ui/types@3.4.0
71
+ - @object-ui/core@3.4.0
72
+ - @object-ui/react@3.4.0
73
+
74
+ ## 3.3.2
75
+
76
+ ### Patch Changes
77
+
78
+ - @object-ui/types@3.3.2
79
+ - @object-ui/core@3.3.2
80
+ - @object-ui/react@3.3.2
81
+ - @object-ui/components@3.3.2
82
+ - @object-ui/fields@3.3.2
83
+ - @object-ui/mobile@3.3.2
84
+
3
85
  ## 3.3.1
4
86
 
5
87
  ### Patch Changes