@object-ui/components 6.2.3 → 7.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/CHANGELOG.md +188 -0
- package/README.md +0 -13
- package/dist/SchemaRenderer.d.ts +4 -0
- package/dist/{packages/components/src/custom → custom}/action-param-dialog.d.ts +1 -1
- package/dist/{packages/components/src/custom → custom}/button-group.d.ts +3 -3
- package/dist/{packages/components/src/custom → custom}/combobox.d.ts +2 -1
- package/dist/{packages/components/src/custom → custom}/config-field-renderer.d.ts +9 -1
- package/dist/{packages/components/src/custom → custom}/config-panel-renderer.d.ts +1 -1
- package/dist/{packages/components/src/custom → custom}/config-row.d.ts +1 -1
- package/dist/{packages/components/src/custom → custom}/date-picker.d.ts +2 -1
- package/dist/{packages/components/src/custom → custom}/empty.d.ts +7 -7
- package/dist/{packages/components/src/custom → custom}/export-progress-dialog.d.ts +20 -1
- package/dist/{packages/components/src/custom → custom}/filter-builder.d.ts +3 -2
- package/dist/{packages/components/src/custom → custom}/grouping-editor.d.ts +2 -1
- package/dist/{packages/components/src/custom → custom}/item.d.ts +10 -10
- package/dist/{packages/components/src/custom → custom}/kbd.d.ts +2 -2
- package/dist/{packages/components/src/custom → custom}/section-header.d.ts +1 -1
- package/dist/{packages/components/src/custom → custom}/shimmer-skeleton.d.ts +1 -1
- package/dist/{packages/components/src/custom → custom}/sort-builder.d.ts +2 -1
- package/dist/{packages/components/src/custom → custom}/spinner.d.ts +1 -1
- package/dist/{packages/components/src/custom → custom}/view-skeleton.d.ts +6 -6
- package/dist/{packages/components/src/custom → custom}/view-states.d.ts +3 -3
- package/dist/{packages/components/src/debug → debug}/DebugPanel.d.ts +2 -2
- package/dist/{packages/components/src/hooks → hooks}/related-count-store.d.ts +1 -0
- package/dist/{packages/components/src/hooks → hooks}/use-export-job.d.ts +1 -1
- package/dist/index.css +275 -163
- package/dist/index.d.ts +19 -2
- package/dist/index.js +3966 -3172
- package/dist/index.umd.cjs +6 -6
- package/dist/{packages/components/src/renderers → renderers}/action/action-bar.d.ts +1 -1
- package/dist/{packages/components/src/renderers → renderers}/action/action-button.d.ts +1 -1
- package/dist/{packages/components/src/renderers → renderers}/action/action-group.d.ts +1 -1
- package/dist/{packages/components/src/renderers → renderers}/action/action-icon.d.ts +1 -1
- package/dist/{packages/components/src/renderers → renderers}/action/action-menu.d.ts +1 -1
- package/dist/renderers/basic/data-list.d.ts +19 -0
- package/dist/{packages/components/src/renderers → renderers}/basic/elements.d.ts +3 -3
- package/dist/renderers/basic/metadata-viewer.d.ts +23 -0
- package/dist/renderers/basic/record-picker.d.ts +28 -0
- package/dist/renderers/data-display/table.d.ts +2 -0
- package/dist/{packages/components/src/renderers → renderers}/layout/page.d.ts +1 -1
- package/dist/renderers/placeholders.d.ts +3 -0
- package/dist/{packages/components/src/share → share}/ShareDialog.d.ts +2 -2
- package/dist/{packages/components/src/ui → ui}/alert-dialog.d.ts +2 -2
- package/dist/{packages/components/src/ui → ui}/badge.d.ts +1 -1
- package/dist/{packages/components/src/ui → ui}/breadcrumb.d.ts +2 -2
- package/dist/{packages/components/src/ui → ui}/calendar.d.ts +2 -2
- package/dist/{packages/components/src/ui → ui}/chart.d.ts +1 -1
- package/dist/{packages/components/src/ui → ui}/command.d.ts +22 -2
- package/dist/{packages/components/src/ui → ui}/context-menu.d.ts +1 -1
- package/dist/{packages/components/src/ui → ui}/dialog.d.ts +2 -2
- package/dist/{packages/components/src/ui → ui}/drawer.d.ts +3 -3
- package/dist/{packages/components/src/ui → ui}/dropdown-menu.d.ts +1 -1
- package/dist/{packages/components/src/ui → ui}/form.d.ts +6 -4
- package/dist/{packages/components/src/ui → ui}/menubar.d.ts +6 -6
- package/dist/{packages/components/src/ui → ui}/pagination.d.ts +5 -5
- package/dist/{packages/components/src/ui → ui}/resizable.d.ts +2 -2
- package/dist/{packages/components/src/ui → ui}/sheet.d.ts +2 -2
- package/dist/{packages/components/src/ui → ui}/skeleton.d.ts +1 -1
- package/dist/{packages/components/src/ui → ui}/sonner.d.ts +3 -3
- package/package.json +41 -48
- package/dist/packages/components/src/SchemaRenderer.d.ts +0 -3
- package/dist/packages/components/src/index.d.ts +0 -19
- package/dist/packages/components/src/renderers/data-display/table.d.ts +0 -8
- package/dist/packages/components/src/renderers/placeholders.d.ts +0 -9
- /package/dist/{packages/components/src/custom → custom}/RecordTitleChip.d.ts +0 -0
- /package/dist/{packages/components/src/custom → custom}/field.d.ts +0 -0
- /package/dist/{packages/components/src/custom → custom}/index.d.ts +0 -0
- /package/dist/{packages/components/src/custom → custom}/input-group.d.ts +0 -0
- /package/dist/{packages/components/src/custom → custom}/mobile-dialog-content.d.ts +0 -0
- /package/dist/{packages/components/src/custom → custom}/native-select.d.ts +0 -0
- /package/dist/{packages/components/src/custom → custom}/navigation-overlay.d.ts +0 -0
- /package/dist/{packages/components/src/custom → custom}/refresh-indicator.d.ts +0 -0
- /package/dist/{packages/components/src/debug → debug}/index.d.ts +0 -0
- /package/dist/{packages/components/src/hooks → hooks}/use-config-draft.d.ts +0 -0
- /package/dist/{packages/components/src/hooks → hooks}/use-mobile.d.ts +0 -0
- /package/dist/{packages/components/src/hooks → hooks}/use-resize-observer.d.ts +0 -0
- /package/dist/{packages/components/src/lib → lib}/lazy-icon.d.ts +0 -0
- /package/dist/{packages/components/src/lib → lib}/use-sync-external-store-shim.d.ts +0 -0
- /package/dist/{packages/components/src/lib → lib}/use-sync-external-store-with-selector-shim.d.ts +0 -0
- /package/dist/{packages/components/src/lib → lib}/utils.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/action/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/action/resolve-icon.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/button-group.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/div.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/html.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/icon.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/image.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/navigation-menu.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/pagination.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/separator.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/span.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/basic/text.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/complex/carousel.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/complex/data-table.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/complex/filter-builder.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/complex/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/complex/resizable.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/complex/scroll-area.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/complex/table.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/alert.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/avatar.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/badge.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/breadcrumb.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/kbd.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/list.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/statistic.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/data-display/tree-view.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/disclosure/accordion.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/disclosure/collapsible.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/disclosure/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/disclosure/toggle-group.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/empty.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/loading.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/progress.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/skeleton.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/sonner.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/spinner.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/toast.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/feedback/toaster.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/button.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/calendar.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/checkbox.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/combobox.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/command.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/date-picker.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/file-upload.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/form.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/input-otp.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/input.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/label.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/radio-group.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/select.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/slider.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/switch.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/textarea.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/form/toggle.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/aspect-ratio.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/card.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/container.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/containers.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/flex.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/grid.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/semantic.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/stack.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/layout/tabs.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/navigation/header-bar.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/navigation/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/navigation/sidebar.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/alert-dialog.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/context-menu.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/dialog.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/drawer.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/dropdown-menu.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/hover-card.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/index.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/menubar.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/popover.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/sheet.d.ts +0 -0
- /package/dist/{packages/components/src/renderers → renderers}/overlay/tooltip.d.ts +0 -0
- /package/dist/{packages/components/src/share → share}/index.d.ts +0 -0
- /package/dist/{packages/components/src/types → types}/config-panel.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/accordion.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/alert.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/aspect-ratio.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/avatar.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/button.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/card.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/carousel.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/checkbox.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/collapsible.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/hover-card.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/index.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/input-otp.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/input.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/label.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/navigation-menu.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/popover.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/progress.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/radio-group.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/scroll-area.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/select.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/separator.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/sidebar.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/slider.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/switch.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/table.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/tabs.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/textarea.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/toast.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/toggle-group.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/toggle.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/tooltip.d.ts +0 -0
- /package/dist/{packages/components/src/ui → ui}/typography.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,193 @@
|
|
|
1
1
|
# @object-ui/components
|
|
2
2
|
|
|
3
|
+
## 7.1.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [677f7ed]
|
|
8
|
+
- Updated dependencies [08c47da]
|
|
9
|
+
- Updated dependencies [a71be60]
|
|
10
|
+
- Updated dependencies [cb03bc3]
|
|
11
|
+
- @object-ui/types@7.1.0
|
|
12
|
+
- @object-ui/core@7.1.0
|
|
13
|
+
- @object-ui/react@7.1.0
|
|
14
|
+
- @object-ui/i18n@7.1.0
|
|
15
|
+
|
|
16
|
+
## 7.0.0
|
|
17
|
+
|
|
18
|
+
### Minor Changes
|
|
19
|
+
|
|
20
|
+
- a00e16d: feat: evaluate CEL `disabled` on action buttons + record-page Undo wiring
|
|
21
|
+
|
|
22
|
+
- **components (page header)**: the `record_header` action toolbar now evaluates
|
|
23
|
+
a CEL `disabled` predicate against the record (boolean was the only honoured
|
|
24
|
+
form before), mirroring its existing `visible` evaluation. An action can now
|
|
25
|
+
grey out conditionally (e.g. "Reassign" on a converted lead) instead of only
|
|
26
|
+
hiding via `visible`.
|
|
27
|
+
- **plugin-grid (row menu)**: `RowActionMenu` items likewise evaluate `disabled`
|
|
28
|
+
(boolean or CEL against the row), and skip the click when disabled.
|
|
29
|
+
- **components (action-button)**: forward `undoable` / `recordIdField` when
|
|
30
|
+
executing, so undoable update actions keep their Undo affordance through the
|
|
31
|
+
`action:button` path.
|
|
32
|
+
- **app-shell (RecordDetailView)**: mount `useGlobalUndo` and wire the record
|
|
33
|
+
action runtime's success toast to offer "Undo" for `undoable` actions
|
|
34
|
+
(capturing the changed fields' prior values from the loaded record).
|
|
35
|
+
- **plugin-detail (record:quick_actions)**: the widget's buttons now evaluate a
|
|
36
|
+
CEL `disabled` and show a spinner + disable while running.
|
|
37
|
+
|
|
38
|
+
- 90acb7f: Master-detail subform + lightweight list primitives (SDUI).
|
|
39
|
+
|
|
40
|
+
- `MasterDetailForm` (`object-master-detail-form`): enter a parent record and its child line items together; client-orchestrated transactional create (parent → FK → bulk children → rollup → cleanup). Enterprise-convention layout (header on top, line grid, single Save bar at the bottom).
|
|
41
|
+
- `LineItemsField` editable child grid (line numbers, right-aligned numerics, running total) and `LineItemsPanel` (`record:line_items`) for detail-page inline edit.
|
|
42
|
+
- `element:definition-list` and `element:repeater` — lightweight, low-chrome list primitives for simple data.
|
|
43
|
+
|
|
44
|
+
### Patch Changes
|
|
45
|
+
|
|
46
|
+
- ddbe4a2: B2 step 3: client-side field-level conditional rules (`visibleWhen` / `readonlyWhen` / `requiredWhen`). The form renderer now evaluates these CEL predicates reactively against the live record and gates each field's visibility, read-only state, and required-ness accordingly. Evaluation delegates to the canonical `@objectstack/formula` `ExpressionEngine` — the _same_ dialect the server enforces (`requiredWhen` in the rule-validator, `readonlyWhen` in `stripReadonlyWhenFields`) — so the UX and the persisted verdict always agree. New core helpers `evalFieldPredicate` / `resolveFieldRuleState` (zero-React, fail-open). `FormField` gains `visibleWhen` / `readonlyWhen` / `requiredWhen` (+ deprecated `conditionalRequired` alias), and `ObjectForm` carries them through from object metadata.
|
|
47
|
+
- 2d47e94: B2 follow-ups (A): field conditional rules in inline grids + submit-time enforcement.
|
|
48
|
+
|
|
49
|
+
- **Grids**: a line-item column's `readonlyWhen` / `requiredWhen` CEL rule is now honored per row — `deriveMasterDetail` carries the props onto the `GridColumn` and `GridField` evaluates them against each row via `resolveFieldRuleState` (a `readonlyWhen`-TRUE cell locks; a `requiredWhen`-TRUE empty cell flags inline-invalid). Rules are row-scoped (`record.*`); the core helpers gained an optional `scope` (and `GridField` a `contextRecord` prop) so a future header-driven lock can bind `parent.*` — that wiring is deferred (it needs the master-detail header's re-renders isolated).
|
|
50
|
+
- **Submit enforcement**: `requiredWhen` already drove react-hook-form's `required` rule, so submit is blocked with a field error when the predicate is TRUE and the value is empty. Added a reactive cleanup so a stale _required_ error clears when the predicate flips FALSE (and all errors clear when a field is hidden by `visibleWhen`).
|
|
51
|
+
|
|
52
|
+
- 6c0c92c: fix(app-shell): command palette idempotent open + stable locators (ADR-0054 Phase 1)
|
|
53
|
+
|
|
54
|
+
The top-bar "Search… ⌘K" button now opens the command palette directly via a
|
|
55
|
+
shared, idempotent `openCommandPalette()` instead of re-dispatching a synthetic
|
|
56
|
+
`⌘K` `KeyboardEvent` — so it works under automation and in ⌘K-reserving
|
|
57
|
+
browsers. Open state is URL-addressable (`?palette=1`, `?cmdk=1` alias), making
|
|
58
|
+
the palette deep-linkable and restore-on-reload. The dialog and header trigger
|
|
59
|
+
emit stable `data-testid` locators (`overlay:command-palette`,
|
|
60
|
+
`action:command-palette:open`) plus an ARIA name. New `useCommandPalette()` hook
|
|
61
|
+
and `CommandPaletteProvider`; `CommandDialog` gains a `contentProps` passthrough
|
|
62
|
+
for the dialog locator/ARIA. Implements invariants C1/C3/C4 of the UI
|
|
63
|
+
testability contract.
|
|
64
|
+
|
|
65
|
+
- ad8ade6: feat(components): metadata-derived field locators on generated forms (ADR-0054 Phase 4)
|
|
66
|
+
|
|
67
|
+
The form renderer now emits a stable `data-testid="field:{objectName}.{field}"`
|
|
68
|
+
(plus `data-field`) on every field wrapper, derived from the form's `objectName`
|
|
69
|
+
and each field's name — closing the locator gap at the source so every generated
|
|
70
|
+
form (`ObjectForm`/`ModalForm`/`DrawerForm`/`SplitForm`/`WizardForm`) inherits
|
|
71
|
+
testable fields with zero per-app work (ADR-0054 C4). `FormSchema` gains an
|
|
72
|
+
optional `objectName`; the object prefix is omitted (`field:{field}`) when a form
|
|
73
|
+
has none. `FormItem` now accepts `data-*` attributes.
|
|
74
|
+
|
|
75
|
+
- 2eb3096: fix(form): stop `form.reset()` from wiping user input on re-render
|
|
76
|
+
|
|
77
|
+
The form renderer reset react-hook-form whenever the `defaultValues` **object
|
|
78
|
+
identity** changed:
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
form.reset(defaultValues);
|
|
83
|
+
}, [defaultValues]);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Callers commonly pass a freshly-built `defaultValues` object every render, so an
|
|
87
|
+
unrelated parent re-render reset the form and discarded whatever the user had
|
|
88
|
+
typed. This broke master-detail "Create": a re-render between the submit click
|
|
89
|
+
and the (deferred) `requestSubmit` blanked the form, so RHF then failed
|
|
90
|
+
required-field validation on the now-empty fields and nothing was submitted —
|
|
91
|
+
the "click Create, nothing happens" report.
|
|
92
|
+
|
|
93
|
+
The effect now resets only when `defaultValues` actually **changes by value**
|
|
94
|
+
(JSON-compared), so a genuine change (e.g. an edit-mode record finishing
|
|
95
|
+
loading) still resets while identity churn is ignored.
|
|
96
|
+
|
|
97
|
+
- 7913390: fix(master-detail): never silent on save — feedback, reset, and a duplicate-submit guard
|
|
98
|
+
|
|
99
|
+
`MasterDetailForm`'s "Create" submitted successfully but gave **no feedback**: no toast, no form reset, no navigation. A successful create looked broken, and re-clicking created duplicate records.
|
|
100
|
+
|
|
101
|
+
- On success: a `toast.success`, and on create the form clears (line items reset + parent `<ObjectForm>` remounts) ready for the next entry. A page-supplied `onSuccess` still runs afterwards (e.g. to navigate).
|
|
102
|
+
- On failure (validation / network / atomic rollback): a `toast.error` surfaces the message instead of failing silently.
|
|
103
|
+
- In-flight guard: the Create button shows "Saving…" and is disabled while a submit is running, preventing duplicate submissions, with a safety release if client-side validation blocks the submit.
|
|
104
|
+
- `@object-ui/components` now re-exports `toast` (alongside `Toaster`) from its sonner wrapper.
|
|
105
|
+
|
|
106
|
+
Tests: two new `MasterDetailForm` tests assert success → toast + form clear, and failure → error toast.
|
|
107
|
+
|
|
108
|
+
- bd8b054: fix(currency): resolve the tenant default currency across the long-tail renderers
|
|
109
|
+
|
|
110
|
+
Phase 2b of the currency-resolution work (ADR-0053). The cell/field renderers
|
|
111
|
+
already funnelled through `resolveFieldCurrency` + `useLocalization` (#1856),
|
|
112
|
+
but the rest of the renderers still hard-coded `USD` or read only one of
|
|
113
|
+
`currency`/`defaultCurrency`. They now share the same resolution chain — explicit
|
|
114
|
+
field currency -> `currencyConfig.defaultCurrency` -> legacy `defaultCurrency` ->
|
|
115
|
+
tenant `localization.currency` -> plain number:
|
|
116
|
+
|
|
117
|
+
- `plugin-dashboard` `ObjectMetricWidget` (inferred currency), `ObjectDataTable`
|
|
118
|
+
(symbol-format fallback).
|
|
119
|
+
- `plugin-grid` `useColumnSummary` (footer agrees with the cells) and
|
|
120
|
+
`ObjectGrid` (compact amount + name-inferred currency cells).
|
|
121
|
+
- `plugin-detail` `DetailView` summary metrics.
|
|
122
|
+
- `plugin-gantt` `ObjectGantt` currency tooltips.
|
|
123
|
+
- `components` `element:number` (`format: 'currency'`) — tenant default instead
|
|
124
|
+
of a baked-in `USD`, and renders with the tenant locale.
|
|
125
|
+
|
|
126
|
+
`resolveFieldCurrency` now lives in `@object-ui/i18n` (co-located with
|
|
127
|
+
`useLocalization`, which supplies the tenant default); `@object-ui/fields`
|
|
128
|
+
re-exports it, so the existing import path is unchanged. No behavior change when
|
|
129
|
+
no tenant currency is configured — a field that declares its own currency, or a
|
|
130
|
+
deployment with no `localization.currency`, renders exactly as before.
|
|
131
|
+
|
|
132
|
+
- 2270239: feat: scoped style-object rendering (ADR-0065)
|
|
133
|
+
|
|
134
|
+
A metadata node may carry `responsiveStyles` (per-breakpoint CSS-property maps);
|
|
135
|
+
`SchemaRenderer` compiles it to **id-scoped CSS** injected as a `<style>` tag and
|
|
136
|
+
appends a scope class to the node. Build-independent (arbitrary values + design
|
|
137
|
+
tokens pass through verbatim — no Tailwind JIT), collision-free (per-node scope,
|
|
138
|
+
unlayered so it beats base utilities), responsive-correct (model breakpoint maps
|
|
139
|
+
→ generated `@media`, never `md:` variant classes). Adds `compileScopedStyles`/
|
|
140
|
+
`scopeClassFor`/`hasResponsiveStyles` to `@object-ui/core` and an SDUI design-token
|
|
141
|
+
palette (`--space-*`, `--surface`, `--brand`, …) to the theme. Mirrors Builder.io.
|
|
142
|
+
|
|
143
|
+
- 8d1195d: Fix `type: 'url'` actions so they actually reach the backend in split-origin dev setups, and so reveal-once result dialogs render.
|
|
144
|
+
|
|
145
|
+
- `ActionRunner.executeUrl`: when context provides `apiBase`, relative `/api/...`, `/_auth/...`, and `/_account/...` URLs are now promoted to absolute (`${apiBase}${path}`) before navigation. Same-origin API paths (with or without `apiBase`) trigger a full-page `window.location.href` rather than React-Router push — this is required for server-side OAuth redirect dances (e.g. better-auth `/sign-in/social`) that React Router would otherwise swallow into the SPA's fallback route.
|
|
146
|
+
- `ActionRunner.buildInterpolationContext`: surfaces `ctx.apiBase` for action targets that want to template it explicitly.
|
|
147
|
+
- `ObjectView`: passes `apiBase: import.meta.env.VITE_SERVER_URL` into the toolbar `ActionProvider` context so the above resolves.
|
|
148
|
+
- `action-button` and `action-menu` renderers now forward `resultDialog` when invoking the runner. Previously this field was silently dropped by an explicit whitelist, breaking every "show once, then hide" flow (2FA QR/backup codes, OAuth client_secret, regenerated tokens).
|
|
149
|
+
|
|
150
|
+
- Updated dependencies [5976ba3]
|
|
151
|
+
- Updated dependencies [eaccefd]
|
|
152
|
+
- Updated dependencies [f7f325d]
|
|
153
|
+
- Updated dependencies [c12986e]
|
|
154
|
+
- Updated dependencies [71d7ce0]
|
|
155
|
+
- Updated dependencies [053c948]
|
|
156
|
+
- Updated dependencies [89e113c]
|
|
157
|
+
- Updated dependencies [ddbe4a2]
|
|
158
|
+
- Updated dependencies [2d47e94]
|
|
159
|
+
- Updated dependencies [9049bbe]
|
|
160
|
+
- Updated dependencies [77cc6bb]
|
|
161
|
+
- Updated dependencies [97c6831]
|
|
162
|
+
- Updated dependencies [cb2fdb1]
|
|
163
|
+
- Updated dependencies [c3749eb]
|
|
164
|
+
- Updated dependencies [c09f44e]
|
|
165
|
+
- Updated dependencies [6cfa330]
|
|
166
|
+
- Updated dependencies [ad8ade6]
|
|
167
|
+
- Updated dependencies [d54346c]
|
|
168
|
+
- Updated dependencies [3870c20]
|
|
169
|
+
- Updated dependencies [b88c560]
|
|
170
|
+
- Updated dependencies [0ad72a6]
|
|
171
|
+
- Updated dependencies [3fa23a7]
|
|
172
|
+
- Updated dependencies [18d0339]
|
|
173
|
+
- Updated dependencies [59b6bbb]
|
|
174
|
+
- Updated dependencies [d16566f]
|
|
175
|
+
- Updated dependencies [1394e34]
|
|
176
|
+
- Updated dependencies [e95cc25]
|
|
177
|
+
- Updated dependencies [abe8ebc]
|
|
178
|
+
- Updated dependencies [300d755]
|
|
179
|
+
- Updated dependencies [bd8b054]
|
|
180
|
+
- Updated dependencies [4eb9cb6]
|
|
181
|
+
- Updated dependencies [7c239fd]
|
|
182
|
+
- Updated dependencies [858ad94]
|
|
183
|
+
- Updated dependencies [2270239]
|
|
184
|
+
- Updated dependencies [2f31406]
|
|
185
|
+
- Updated dependencies [8d1195d]
|
|
186
|
+
- @object-ui/core@7.0.0
|
|
187
|
+
- @object-ui/react@7.0.0
|
|
188
|
+
- @object-ui/i18n@7.0.0
|
|
189
|
+
- @object-ui/types@7.0.0
|
|
190
|
+
|
|
3
191
|
## 6.2.3
|
|
4
192
|
|
|
5
193
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -10,21 +10,8 @@ Standard UI component library for Object UI, built with Shadcn UI + Tailwind CSS
|
|
|
10
10
|
- ♿ **Accessible** - WCAG compliant components
|
|
11
11
|
- 🎯 **Type-Safe** - Full TypeScript support
|
|
12
12
|
- 🔌 **Extensible** - Easy to customize and extend
|
|
13
|
-
- � **Storybook** - Interactive component showcase and development environment
|
|
14
13
|
- 🔄 **Sync Tools** - Scripts to keep components updated with latest Shadcn
|
|
15
14
|
|
|
16
|
-
## Development
|
|
17
|
-
|
|
18
|
-
We use Storybook for component development and testing.
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
# Start Storybook
|
|
22
|
-
pnpm storybook
|
|
23
|
-
|
|
24
|
-
# Build Storybook
|
|
25
|
-
pnpm build-storybook
|
|
26
|
-
```
|
|
27
|
-
|
|
28
15
|
## Keeping Components Updated
|
|
29
16
|
|
|
30
17
|
ObjectUI provides tools to sync components with the latest Shadcn UI versions:
|
|
@@ -3,9 +3,9 @@ import { Separator } from '../ui/separator';
|
|
|
3
3
|
declare const buttonGroupVariants: (props?: ({
|
|
4
4
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
5
5
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
6
|
-
declare function ButtonGroup({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>): import("react
|
|
6
|
+
declare function ButtonGroup({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>): import("react").JSX.Element;
|
|
7
7
|
declare function ButtonGroupText({ className, asChild, ...props }: React.ComponentProps<"div"> & {
|
|
8
8
|
asChild?: boolean;
|
|
9
|
-
}): import("react
|
|
10
|
-
declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): import("react
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
|
+
declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): import("react").JSX.Element;
|
|
11
11
|
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, };
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
+
import * as React from "react";
|
|
8
9
|
export interface ComboboxOption {
|
|
9
10
|
value: string;
|
|
10
11
|
label: string;
|
|
@@ -19,4 +20,4 @@ export interface ComboboxProps {
|
|
|
19
20
|
className?: string;
|
|
20
21
|
disabled?: boolean;
|
|
21
22
|
}
|
|
22
|
-
export declare function Combobox({ options, value, onValueChange, placeholder, searchPlaceholder, emptyText, className, disabled, }: ComboboxProps):
|
|
23
|
+
export declare function Combobox({ options, value, onValueChange, placeholder, searchPlaceholder, emptyText, className, disabled, }: ComboboxProps): React.JSX.Element;
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { ConfigField } from '../types/config-panel';
|
|
2
|
+
/**
|
|
3
|
+
* ObjectUI
|
|
4
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
import * as React from 'react';
|
|
2
10
|
export interface ConfigFieldRendererProps {
|
|
3
11
|
/** Field schema */
|
|
4
12
|
field: ConfigField;
|
|
@@ -18,4 +26,4 @@ export interface ConfigFieldRendererProps {
|
|
|
18
26
|
* filter/sort/field-picker are rendered as placeholders that consumers can
|
|
19
27
|
* override with type='custom' when full sub-editor integration is needed.
|
|
20
28
|
*/
|
|
21
|
-
export declare function ConfigFieldRenderer({ field, value, onChange, draft, objectDef: _objectDef, }: ConfigFieldRendererProps):
|
|
29
|
+
export declare function ConfigFieldRenderer({ field, value, onChange, draft, objectDef: _objectDef, }: ConfigFieldRendererProps): React.JSX.Element | null;
|
|
@@ -80,4 +80,4 @@ export interface ConfigPanelRendererProps {
|
|
|
80
80
|
* Each concrete panel (Dashboard, Form, Page…) only needs to provide
|
|
81
81
|
* a schema and wire up `useConfigDraft`.
|
|
82
82
|
*/
|
|
83
|
-
export declare function ConfigPanelRenderer({ open, onClose, schema, draft, isDirty, onFieldChange, onSave, onDiscard, headerExtra, objectDef, className, style, saveLabel, discardLabel, panelRef, role, ariaLabel, tabIndex, testId, closeTitle, footerTestId, saveTestId, discardTestId, expandedSections, onUndo, onRedo, canUndo, canRedo, undoLabel, redoLabel, }: ConfigPanelRendererProps):
|
|
83
|
+
export declare function ConfigPanelRenderer({ open, onClose, schema, draft, isDirty, onFieldChange, onSave, onDiscard, headerExtra, objectDef, className, style, saveLabel, discardLabel, panelRef, role, ariaLabel, tabIndex, testId, closeTitle, footerTestId, saveTestId, discardTestId, expandedSections, onUndo, onRedo, canUndo, canRedo, undoLabel, redoLabel, }: ConfigPanelRendererProps): React.JSX.Element | null;
|
|
@@ -23,5 +23,5 @@ export interface ConfigRowProps {
|
|
|
23
23
|
* Renders as a `<button>` when `onClick` is provided, otherwise as a `<div>`.
|
|
24
24
|
* Shows label on the left and either custom children or a text value on the right.
|
|
25
25
|
*/
|
|
26
|
-
declare function ConfigRow({ label, value, onClick, children, className }: ConfigRowProps): import("react
|
|
26
|
+
declare function ConfigRow({ label, value, onClick, children, className }: ConfigRowProps): import("react").JSX.Element;
|
|
27
27
|
export { ConfigRow };
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
+
import * as React from "react";
|
|
8
9
|
export interface DatePickerProps {
|
|
9
10
|
date?: Date;
|
|
10
11
|
onDateChange?: (date: Date | undefined) => void;
|
|
@@ -12,4 +13,4 @@ export interface DatePickerProps {
|
|
|
12
13
|
className?: string;
|
|
13
14
|
disabled?: boolean;
|
|
14
15
|
}
|
|
15
|
-
export declare function DatePicker({ date, onDateChange, placeholder, className, disabled, }: DatePickerProps):
|
|
16
|
+
export declare function DatePicker({ date, onDateChange, placeholder, className, disabled, }: DatePickerProps): React.JSX.Element;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
|
-
declare function Empty({ className, ...props }: React.ComponentProps<"div">): import("react
|
|
3
|
-
declare function EmptyHeader({ className, ...props }: React.ComponentProps<"div">): import("react
|
|
2
|
+
declare function Empty({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
3
|
+
declare function EmptyHeader({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
4
4
|
declare const emptyMediaVariants: (props?: ({
|
|
5
5
|
variant?: "default" | "icon" | null | undefined;
|
|
6
6
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
|
-
declare function EmptyMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof emptyMediaVariants>): import("react
|
|
8
|
-
declare function EmptyTitle({ className, ...props }: React.ComponentProps<"div">): import("react
|
|
9
|
-
declare function EmptyDescription({ className, ...props }: React.ComponentProps<"p">): import("react
|
|
10
|
-
declare function EmptyContent({ className, ...props }: React.ComponentProps<"div">): import("react
|
|
7
|
+
declare function EmptyMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof emptyMediaVariants>): import("react").JSX.Element;
|
|
8
|
+
declare function EmptyTitle({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
9
|
+
declare function EmptyDescription({ className, ...props }: React.ComponentProps<"p">): import("react").JSX.Element;
|
|
10
|
+
declare function EmptyContent({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
11
11
|
/**
|
|
12
12
|
* EmptyValue — universal inline placeholder for missing cell/field values.
|
|
13
13
|
*
|
|
@@ -18,5 +18,5 @@ declare function EmptyContent({ className, ...props }: React.ComponentProps<"div
|
|
|
18
18
|
*/
|
|
19
19
|
declare function EmptyValue({ className, glyph, ...props }: React.ComponentProps<"span"> & {
|
|
20
20
|
glyph?: string;
|
|
21
|
-
}): import("react
|
|
21
|
+
}): import("react").JSX.Element;
|
|
22
22
|
export { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia, EmptyValue, };
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import { UseExportJobReturn } from '../hooks/use-export-job';
|
|
2
|
+
/**
|
|
3
|
+
* ObjectUI
|
|
4
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* ExportProgressDialog — UI for the async export job lifecycle.
|
|
11
|
+
*
|
|
12
|
+
* Pair with `useExportJob` to render a progress bar (determinate when the
|
|
13
|
+
* server reports `percentComplete`, indeterminate otherwise), a Cancel button
|
|
14
|
+
* while the job is in flight, and a Download button when it completes.
|
|
15
|
+
*
|
|
16
|
+
* The dialog is fully controlled by the `job` returned from `useExportJob`;
|
|
17
|
+
* pass `open`/`onOpenChange` to control its visibility (typically opened by
|
|
18
|
+
* the same handler that calls `job.start(...)`).
|
|
19
|
+
*/
|
|
20
|
+
import * as React from 'react';
|
|
2
21
|
export interface ExportProgressDialogProps {
|
|
3
22
|
/** Visibility, controlled. */
|
|
4
23
|
open: boolean;
|
|
@@ -21,4 +40,4 @@ export interface ExportProgressDialogProps {
|
|
|
21
40
|
/** Auto-close the dialog this many ms after a successful download. */
|
|
22
41
|
closeAfterDownloadMs?: number;
|
|
23
42
|
}
|
|
24
|
-
export declare function ExportProgressDialog({ open, onOpenChange, job, title, description, filename, allowCloseWhileRunning, className, onAfterDownload, closeAfterDownloadMs, }: ExportProgressDialogProps):
|
|
43
|
+
export declare function ExportProgressDialog({ open, onOpenChange, job, title, description, filename, allowCloseWhileRunning, className, onAfterDownload, closeAfterDownloadMs, }: ExportProgressDialogProps): React.JSX.Element;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
+
import * as React from "react";
|
|
8
9
|
export interface FilterCondition {
|
|
9
10
|
id: string;
|
|
10
11
|
field: string;
|
|
@@ -37,7 +38,7 @@ export interface FilterBuilderProps {
|
|
|
37
38
|
className?: string;
|
|
38
39
|
showClearAll?: boolean;
|
|
39
40
|
}
|
|
40
|
-
declare function FilterBuilder({ fields, value, onChange, className, showClearAll, }: FilterBuilderProps):
|
|
41
|
+
declare function FilterBuilder({ fields, value, onChange, className, showClearAll, }: FilterBuilderProps): React.JSX.Element;
|
|
41
42
|
declare namespace FilterBuilder {
|
|
42
43
|
var displayName: string;
|
|
43
44
|
}
|
|
@@ -54,5 +55,5 @@ interface LookupValuePickerProps {
|
|
|
54
55
|
multiple: boolean;
|
|
55
56
|
onChange: (value: FilterCondition["value"]) => void;
|
|
56
57
|
}
|
|
57
|
-
declare function LookupValuePicker({ field, value, multiple, onChange }: LookupValuePickerProps):
|
|
58
|
+
declare function LookupValuePicker({ field, value, multiple, onChange }: LookupValuePickerProps): React.JSX.Element;
|
|
58
59
|
export { FilterBuilder, LookupValuePicker };
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
+
import * as React from "react";
|
|
8
9
|
export interface GroupingFieldEntry {
|
|
9
10
|
field: string;
|
|
10
11
|
order: 'asc' | 'desc';
|
|
@@ -47,4 +48,4 @@ export interface GroupingEditorProps {
|
|
|
47
48
|
* at a time. The current row's selected field stays in its own dropdown so the
|
|
48
49
|
* user sees the active selection.
|
|
49
50
|
*/
|
|
50
|
-
export declare function GroupingEditor({ value, onChange, fieldOptions, maxLevels, className, labels, }: GroupingEditorProps):
|
|
51
|
+
export declare function GroupingEditor({ value, onChange, fieldOptions, maxLevels, className, labels, }: GroupingEditorProps): React.JSX.Element;
|
|
@@ -8,23 +8,23 @@ import { Separator } from '../ui/separator';
|
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
10
|
import * as React from "react";
|
|
11
|
-
declare function ItemGroup({ className, ...props }: React.ComponentProps<"div">):
|
|
12
|
-
declare function ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>):
|
|
11
|
+
declare function ItemGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
12
|
+
declare function ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): React.JSX.Element;
|
|
13
13
|
declare const itemVariants: (props?: ({
|
|
14
14
|
variant?: "default" | "outline" | "muted" | null | undefined;
|
|
15
15
|
size?: "default" | "sm" | null | undefined;
|
|
16
16
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
17
17
|
declare function Item({ className, variant, size, asChild, ...props }: React.ComponentProps<"div"> & VariantProps<typeof itemVariants> & {
|
|
18
18
|
asChild?: boolean;
|
|
19
|
-
}):
|
|
19
|
+
}): React.JSX.Element;
|
|
20
20
|
declare const itemMediaVariants: (props?: ({
|
|
21
21
|
variant?: "image" | "default" | "icon" | null | undefined;
|
|
22
22
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
23
|
-
declare function ItemMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof itemMediaVariants>):
|
|
24
|
-
declare function ItemContent({ className, ...props }: React.ComponentProps<"div">):
|
|
25
|
-
declare function ItemTitle({ className, ...props }: React.ComponentProps<"div">):
|
|
26
|
-
declare function ItemDescription({ className, ...props }: React.ComponentProps<"p">):
|
|
27
|
-
declare function ItemActions({ className, ...props }: React.ComponentProps<"div">):
|
|
28
|
-
declare function ItemHeader({ className, ...props }: React.ComponentProps<"div">):
|
|
29
|
-
declare function ItemFooter({ className, ...props }: React.ComponentProps<"div">):
|
|
23
|
+
declare function ItemMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof itemMediaVariants>): React.JSX.Element;
|
|
24
|
+
declare function ItemContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
25
|
+
declare function ItemTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
26
|
+
declare function ItemDescription({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
27
|
+
declare function ItemActions({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
28
|
+
declare function ItemHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
29
|
+
declare function ItemFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
30
30
|
export { Item, ItemMedia, ItemContent, ItemActions, ItemGroup, ItemSeparator, ItemTitle, ItemDescription, ItemHeader, ItemFooter, };
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
-
declare function Kbd({ className, ...props }: React.ComponentProps<"kbd">): import("react
|
|
9
|
-
declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">): import("react
|
|
8
|
+
declare function Kbd({ className, ...props }: React.ComponentProps<"kbd">): import("react").JSX.Element;
|
|
9
|
+
declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
10
10
|
export { Kbd, KbdGroup };
|
|
@@ -27,5 +27,5 @@ export interface SectionHeaderProps {
|
|
|
27
27
|
* Renders as a `<button>` when collapsible, with a chevron icon
|
|
28
28
|
* indicating the expand/collapse state. Uses `aria-expanded` for accessibility.
|
|
29
29
|
*/
|
|
30
|
-
declare function SectionHeader({ title, icon, collapsible, collapsed, onToggle, testId, className }: SectionHeaderProps): import("react
|
|
30
|
+
declare function SectionHeader({ title, icon, collapsible, collapsed, onToggle, testId, className }: SectionHeaderProps): import("react").JSX.Element;
|
|
31
31
|
export { SectionHeader };
|
|
@@ -29,4 +29,4 @@ import * as React from "react";
|
|
|
29
29
|
*/
|
|
30
30
|
export interface ShimmerSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
31
31
|
}
|
|
32
|
-
export declare function ShimmerSkeleton({ className, ...props }: ShimmerSkeletonProps):
|
|
32
|
+
export declare function ShimmerSkeleton({ className, ...props }: ShimmerSkeletonProps): React.JSX.Element;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
+
import * as React from "react";
|
|
8
9
|
export interface SortItem {
|
|
9
10
|
id: string;
|
|
10
11
|
field: string;
|
|
@@ -19,4 +20,4 @@ export interface SortBuilderProps {
|
|
|
19
20
|
onChange?: (value: SortItem[]) => void;
|
|
20
21
|
className?: string;
|
|
21
22
|
}
|
|
22
|
-
export declare function SortBuilder({ fields, value, onChange, className, }: SortBuilderProps):
|
|
23
|
+
export declare function SortBuilder({ fields, value, onChange, className, }: SortBuilderProps): React.JSX.Element;
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
import * as React from "react";
|
|
9
|
-
declare function Spinner({ className, ...props }: React.ComponentProps<"div">):
|
|
9
|
+
declare function Spinner({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
10
|
export { Spinner };
|
|
@@ -14,17 +14,17 @@ export interface GridSkeletonProps extends ViewSkeletonProps {
|
|
|
14
14
|
/** Number of columns to render */
|
|
15
15
|
columns?: number;
|
|
16
16
|
}
|
|
17
|
-
declare function GridSkeleton({ rows, columns, className, ...props }: GridSkeletonProps):
|
|
17
|
+
declare function GridSkeleton({ rows, columns, className, ...props }: GridSkeletonProps): React.JSX.Element;
|
|
18
18
|
export interface KanbanSkeletonProps extends ViewSkeletonProps {
|
|
19
19
|
/** Number of kanban columns to render */
|
|
20
20
|
columns?: number;
|
|
21
21
|
/** Number of cards per column */
|
|
22
22
|
cardsPerColumn?: number;
|
|
23
23
|
}
|
|
24
|
-
declare function KanbanSkeleton({ columns, cardsPerColumn, className, ...props }: KanbanSkeletonProps):
|
|
25
|
-
declare function FormSkeleton({ rows, className, ...props }: ViewSkeletonProps):
|
|
26
|
-
declare function ListSkeleton({ rows, className, ...props }: ViewSkeletonProps):
|
|
27
|
-
declare function ChartSkeleton({ className, ...props }: Omit<ViewSkeletonProps, "rows">):
|
|
24
|
+
declare function KanbanSkeleton({ columns, cardsPerColumn, className, ...props }: KanbanSkeletonProps): React.JSX.Element;
|
|
25
|
+
declare function FormSkeleton({ rows, className, ...props }: ViewSkeletonProps): React.JSX.Element;
|
|
26
|
+
declare function ListSkeleton({ rows, className, ...props }: ViewSkeletonProps): React.JSX.Element;
|
|
27
|
+
declare function ChartSkeleton({ className, ...props }: Omit<ViewSkeletonProps, "rows">): React.JSX.Element;
|
|
28
28
|
export type ViewSkeletonVariant = "grid" | "kanban" | "form" | "list" | "chart";
|
|
29
29
|
export interface ViewSkeletonDispatchProps extends ViewSkeletonProps {
|
|
30
30
|
variant: ViewSkeletonVariant;
|
|
@@ -33,5 +33,5 @@ export interface ViewSkeletonDispatchProps extends ViewSkeletonProps {
|
|
|
33
33
|
/** Cards per column (kanban only) */
|
|
34
34
|
cardsPerColumn?: number;
|
|
35
35
|
}
|
|
36
|
-
declare function ViewSkeleton({ variant, ...props }: ViewSkeletonDispatchProps):
|
|
36
|
+
declare function ViewSkeleton({ variant, ...props }: ViewSkeletonDispatchProps): React.JSX.Element;
|
|
37
37
|
export { ViewSkeleton, GridSkeleton, KanbanSkeleton, FormSkeleton, ListSkeleton, ChartSkeleton, };
|
|
@@ -10,7 +10,7 @@ interface DataLoadingStateProps extends React.ComponentProps<"div"> {
|
|
|
10
10
|
/** Message displayed below the spinner */
|
|
11
11
|
message?: string;
|
|
12
12
|
}
|
|
13
|
-
declare function DataLoadingState({ className, message, ...props }: DataLoadingStateProps):
|
|
13
|
+
declare function DataLoadingState({ className, message, ...props }: DataLoadingStateProps): React.JSX.Element;
|
|
14
14
|
interface DataEmptyStateProps extends React.ComponentProps<"div"> {
|
|
15
15
|
/** Icon rendered above the title */
|
|
16
16
|
icon?: React.ReactNode;
|
|
@@ -44,7 +44,7 @@ interface DataEmptyStateProps extends React.ComponentProps<"div"> {
|
|
|
44
44
|
/** Optional action rendered below the description */
|
|
45
45
|
action?: React.ReactNode;
|
|
46
46
|
}
|
|
47
|
-
declare function DataEmptyState({ className, icon, illustration, showIcon, iconWrapperClassName, title, description, action, children, ...props }: DataEmptyStateProps):
|
|
47
|
+
declare function DataEmptyState({ className, icon, illustration, showIcon, iconWrapperClassName, title, description, action, children, ...props }: DataEmptyStateProps): React.JSX.Element;
|
|
48
48
|
interface DataErrorStateProps extends React.ComponentProps<"div"> {
|
|
49
49
|
title?: string;
|
|
50
50
|
/** Error message or description */
|
|
@@ -54,5 +54,5 @@ interface DataErrorStateProps extends React.ComponentProps<"div"> {
|
|
|
54
54
|
/** Label for the retry button */
|
|
55
55
|
retryLabel?: string;
|
|
56
56
|
}
|
|
57
|
-
declare function DataErrorState({ className, title, message, onRetry, retryLabel, children, ...props }: DataErrorStateProps):
|
|
57
|
+
declare function DataErrorState({ className, title, message, onRetry, retryLabel, children, ...props }: DataErrorStateProps): React.JSX.Element;
|
|
58
58
|
export { DataLoadingState, DataEmptyState, DataEmptyState as EmptyState, DataErrorState, type DataLoadingStateProps, type DataEmptyStateProps, type DataEmptyStateProps as EmptyStateProps, type DataErrorStateProps, };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { DebugFlags } from '
|
|
2
|
+
import { DebugFlags } from '@object-ui/core';
|
|
3
3
|
export interface DebugPanelTab {
|
|
4
4
|
id: string;
|
|
5
5
|
label: string;
|
|
@@ -36,4 +36,4 @@ export interface DebugPanelProps {
|
|
|
36
36
|
*
|
|
37
37
|
* Plugins can inject additional tabs via the `extraTabs` prop.
|
|
38
38
|
*/
|
|
39
|
-
export declare function DebugPanel({ open, onClose, flags, schema, dataContext, extraTabs, className, }: DebugPanelProps):
|
|
39
|
+
export declare function DebugPanel({ open, onClose, flags, schema, dataContext, extraTabs, className, }: DebugPanelProps): React.JSX.Element | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataSource, CreateExportJobRequest, ExportJobProgressInfo } from '
|
|
1
|
+
import { DataSource, CreateExportJobRequest, ExportJobProgressInfo } from '@object-ui/types';
|
|
2
2
|
export interface UseExportJobOptions {
|
|
3
3
|
/** Data source providing the optional export-job methods. Required. */
|
|
4
4
|
dataSource?: DataSource;
|