@object-ui/plugin-detail 14.0.0 → 14.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 CHANGED
@@ -1,5 +1,249 @@
1
1
  # @object-ui/plugin-detail
2
2
 
3
+ ## 14.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 471c5d3: feat(detail): editable record highlights on the shared inline-edit draft (objectui#2407 P2)
8
+
9
+ The highlights strip is now editable in place and shares ONE draft + ONE atomic
10
+ Save with the details body (building on the P1 `InlineEditContext` / `#2529`
11
+ `InlineFieldInput`).
12
+
13
+ - **`HeaderHighlight`** consumes `useInlineEdit()`: hovering a highlight shows a
14
+ pencil and double-click enters the shared record edit session; each editable
15
+ highlight renders the same `<InlineFieldInput>` the body uses (value =
16
+ `draft[name] ?? data[name]`, write via `setField`). Computed
17
+ (`formula`/`summary`/`rollup`/`auto_number`), `readonly`, and system fields
18
+ expose no editor. Empty highlights are kept while editing so they can be
19
+ filled. Compact-layout UX: an actively-edited column widens and renders the
20
+ editor full-width (Salesforce-style expand-on-edit).
21
+ - **`RecordDetailView`** (app-shell) hosts ONE `<InlineEditProvider>` (with the
22
+ object-lifecycle `canEdit` gate) spanning both `record:highlights` and
23
+ `record:details`, plus the single record-level `<InlineEditSaveBar>` — so a
24
+ highlight edit and a body edit commit together in ONE
25
+ `update(obj, id, draft, { ifMatch })`.
26
+ - **`record:details`** drops its P1-local provider/save bar (it would otherwise
27
+ split the draft from the highlights) and just consumes the shared context;
28
+ **`record:highlights`** threads the DataSource through for lookup/user editors.
29
+
30
+ Guardrails preserved: computed/readonly/system highlights non-editable; `canEdit`
31
+ gate; OCC (`ifMatch` + `ConcurrentUpdateDialog`); only user-edited keys are sent.
32
+
33
+ - 579b24d: feat(fields+form+detail): file/image uploads in inline line-item grids (#2360)
34
+
35
+ `Field.file` in a master-detail inline grid previously degraded to a plain text
36
+ input (no `input[type=file]` on the page → no way to upload from the grid), and
37
+ auto-derived subform / related-list columns silently dropped file fields.
38
+
39
+ - **fields**: new `FileCell` — a compact upload control for grid cells (upload
40
+ button + removable chips, image thumbnails), sharing the `UploadProvider`
41
+ pipeline with the full-size `FileField` via an extracted `useFileUploads`
42
+ hook. `GridField` supports `type: 'file'` columns (with `accept` /
43
+ `multiple`), renders file names in list/readonly modes, and no longer falls
44
+ back to a text `<Input>` for file columns.
45
+ - **plugin-form**: `deriveColumns` / `hydrateColumns` no longer exclude
46
+ `file`/`image`/`avatar` fields — they map to `file` columns and carry the
47
+ field's `multiple` + `accept` (image fields default to `['image/*']`).
48
+ - **plugin-detail**: auto-derived related-list columns no longer skip
49
+ `file`/`image` fields — they render through the existing FileCellRenderer /
50
+ ImageCellRenderer (file-name chip / thumbnail).
51
+
52
+ - 5b52624: feat(detail): record-level inline edit — shared `InlineEditContext` + one atomic Save (objectui#2407 P1)
53
+
54
+ Lift the inline-edit session out of `DetailView`'s private state into a
55
+ record-level, shared context so a record page's surfaces can share ONE draft and
56
+ commit it in ONE atomic, cross-field-validated write (replacing the per-field
57
+ save loop).
58
+
59
+ - **`InlineEditContext` / `InlineEditProvider` / `useInlineEdit`** (@object-ui/react)
60
+ — pure UI state (`editing`, `canEdit`, `draft`, `autoFocusField`, `saving`,
61
+ `error` + `enter` / `setField` / `cancel` / `reset`). A _separate_ context from
62
+ `RecordContext` (mirrors `HighlightFieldsContext`) so per-keystroke draft churn
63
+ doesn't re-render other `record:*` consumers.
64
+ - **`<InlineEditSaveBar>`** (@object-ui/plugin-detail) — the record-level sticky
65
+ Save/Cancel bar. Commits the whole draft in ONE
66
+ `dataSource.update(obj, id, draft, { ifMatch: data.updated_at })` → `refresh()`;
67
+ a `409 CONCURRENT_UPDATE` reuses `<ConcurrentUpdateDialog>` (reload / overwrite).
68
+ A callback mode (`onFieldSave`) preserves the drawer's per-field persistence
69
+ contract with plugin-gantt/calendar/kanban.
70
+ - **`DetailView`** now consumes `useInlineEdit()` instead of owning inline-edit
71
+ state; its header/inline Save-Cancel bars and per-field batch-save are removed
72
+ (the approval-lock badge stays). Rendered without a provider it is simply
73
+ read-only.
74
+ - **`record:details`** and **`RecordDetailDrawer`** each wrap their `DetailView`
75
+ in an `<InlineEditProvider>` + `<InlineEditSaveBar>`. The object-lifecycle /
76
+ permission gate flows through `canEdit`; computed / readonly / system fields
77
+ and the OCC path are unchanged.
78
+
79
+ Guardrails preserved: computed (`formula`/`summary`/`rollup`/`auto_number`) +
80
+ `readonly` + system fields expose no editor; `canEdit` gate; OCC (`ifMatch` +
81
+ `ConcurrentUpdateDialog`); the atomic partial update carries only user-edited
82
+ keys (never computed/read-only). Editable highlights ride on top of this in P2.
83
+
84
+ ### Patch Changes
85
+
86
+ - 2efa9fd: Detail-page UX follow-ups from the ADR-0085 PR4 real-backend browser pass (framework#2548):
87
+
88
+ - **Highlight strip no longer repeats the record title.** A declared
89
+ `highlightFields` list containing the title field rendered it as the first
90
+ chip — truncated — directly under the identical page H1. `deriveHighlightFields`
91
+ now resolves the title (`primaryField` / `nameField` / deprecated
92
+ `displayNameField`, else the conventional display-field names) via the new
93
+ exported `resolveTitleField` and filters it from declared lists before the
94
+ 4-chip cap, matching what the heuristic branch always did. app-shell's
95
+ `RecordDetailView` synthParts (which pre-computes the list and bypasses the
96
+ derivation) applies the same filter.
97
+ - **Per-field currency reaches the renderers.** The spec channel
98
+ (`currencyConfig.defaultCurrency`) was dropped by the highlight-strip and
99
+ detail-section field enrichment, so a spec-authored currency field could
100
+ never show its symbol ("25,000,000" instead of "$25,000,000");
101
+ `resolveFieldCurrency` reads it second after the designer-only bare
102
+ `currency` key.
103
+ - **app-shell approvals fetches send the Bearer token.** The header badge
104
+ poll, home-inbox count, and record-page approvals panel were cookie-only
105
+ (new shared `bearerAuthHeaders()` util) — same split-origin failure mode as
106
+ the console `approvalsApi` fix below.
107
+ - **`fieldGroups[].icon` / `description` reach detail pages.** The shared
108
+ derivation (ADR-0085 §5) already passed them through; the detail synth
109
+ dropped them. Sections now carry both, and `DetailSection` renders a real
110
+ Lucide icon for identifier-shaped names (emoji/text values keep the
111
+ historical text rendering).
112
+ - **Record meta footer stops dangling without an actor.** Seeded/system rows
113
+ with `created_by: null` rendered "Created by · 10m ago"; the footer now
114
+ falls back to actor-less labels ("Created / Updated"), with new i18n keys in
115
+ all six locales (and the zh `createdBy`/`updatedBy` mistranslation fixed:
116
+ 创建人/更新人, not 创建于/更新于).
117
+ - **Select badges ellipsize instead of clipping mid-glyph.** In bounded
118
+ containers (highlight-strip columns, grid cells) an overlong option label
119
+ used to be cut at the container edge ("Technolog…"); badges now shrink with
120
+ an inner truncate and expose the full label as a hover title. The highlight
121
+ strip's hover title also prefers the option label over the raw stored value.
122
+
123
+ Console app (unversioned): `approvalsApi` now sends the stored Bearer token
124
+ like every other console call — cookie-only auth silently lost the approvals
125
+ surface on split-origin deployments where the SameSite cookie doesn't flow.
126
+
127
+ - f9a7907: refactor(plugin-detail): extract `<InlineFieldInput>` from `DetailSection`
128
+
129
+ Lift the inline-edit input branch out of `DetailSection` into a standalone,
130
+ reusable `<InlineFieldInput>` component (objectui#2407, step 0 — the
131
+ behavior-preserving refactor that precedes the record-level `InlineEditContext`
132
+ and editable-highlights work).
133
+
134
+ Behavior is unchanged: `<InlineFieldInput>` renders the exact same type-aware
135
+ editors the detail body handled inline — `SelectField`, `BooleanField`,
136
+ `LookupField`, `UserField`, `CapabilityMultiSelectField`, the
137
+ `permission-facet-link` read-only facet, and the plain number/date/text input
138
+ (with ISO-date coercion and `$expand`-ed-reference safety so an object value
139
+ never leaks `"[object Object]"`). `DetailSection` now delegates to it and keeps
140
+ the field-editability gate (computed / `readonly` / system-field / object
141
+ lifecycle) exactly as before. The `extractLookupId` helper and the
142
+ `TEXTUAL_REF_FALLBACK_TYPES` set move alongside the component.
143
+
144
+ This lets any record-level surface (the details body **and** the highlights
145
+ strip) share one editor, shrinking the surface of the follow-up
146
+ editable-highlights change. Covered by the existing `DetailSection` inline-edit
147
+ suites plus a new `InlineFieldInput` parity test.
148
+
149
+ - 4afb251: Record-level inline edit polish (objectui#2572, follow-up to #2407) — the five
150
+ rough edges from the live showcase verification pass:
151
+
152
+ - **Expanded reference values pass through to the picker.** `InlineFieldInput`
153
+ no longer collapses an `$expand`-ed record object to a bare id before
154
+ handing it to `LookupField` / `UserField` — the picker resolves the display
155
+ name it already carries instead of re-fetching the referenced record via
156
+ `findOne` (or sticking on the placeholder when it can't). `LookupField`
157
+ still hands its Level-2 pickers (PeoplePicker / RecordPickerDialog) bare
158
+ ids, collapsed via the existing `normalizeId`.
159
+ - **Approval-lock preflight.** The record page now re-reads the approval
160
+ state whenever the record is invalidated (a save can _trigger_ an approval
161
+ flow that locks the record), derives one `approvalLocked` signal
162
+ (`approval_status` pending/in_approval OR an open pending request), gates
163
+ the inline-edit session's `canEdit` with it — hiding the pencil affordances
164
+ and no-op'ing `enter()` on a locked record — and drives the save bar's
165
+ `locked`/`lockedHint` so users can't type into a draft that Save would
166
+ reject with `RECORD_LOCKED`.
167
+ - **Numeric field types edit with the real numeric widgets.** `number` /
168
+ `currency` / `percent` route to `NumberField` / `CurrencyField` /
169
+ `PercentField` (the same widgets the form uses) instead of a free-text
170
+ input: numeric keyboard, symbol adornment, fraction↔percent display
171
+ conversion, and numbers (not strings) into the draft. `NumberField` and
172
+ `CurrencyField` now surface metadata `min`/`max` on the input, `NumberField`
173
+ honors an explicit `step` and steps by 1 for `scale: 0` (previously fell
174
+ back to `any`).
175
+ - **Header Edit CTA stands down during an inline session.** The synthesized
176
+ `sys_edit` action carries `disableDuringInlineEdit`, and the `page:header`
177
+ renderer greys such actions out while `InlineEditContext.editing` — the
178
+ classic form-edit surface can no longer be stacked on top of a live inline
179
+ draft.
180
+ - **Keyboard shortcuts for the shared edit session.** `InlineEditSaveBar`
181
+ binds **Esc → cancel** (deferring to any open Radix layer — popover /
182
+ select / dialog — which owns Escape for "close") and **Cmd/Ctrl+Enter →
183
+ save**, both respecting `saving`/`locked`.
184
+
185
+ - 2712fc1: fix(fields+detail): resolve the pre-existing rules-of-hooks violations in the cell renderers
186
+
187
+ - `CurrencyCellRenderer` / `EmailCellRenderer` / `PhoneCellRenderer` called
188
+ hooks (`useLocalization`, `useFieldLabel`, `useState`) **after** their
189
+ empty-value early return — a value flipping between null and set changed
190
+ the hook count between renders (latent "Rendered more hooks than during
191
+ the previous render" crash). Hooks now run unconditionally before the
192
+ early return.
193
+ - `useFieldLabel` wrapped `useObjectTranslation()` in try/catch; a throw
194
+ after other hooks ran would desync hook order. The underlying hook is
195
+ provider-safe (optional context + global i18n fallback), so the guard is
196
+ removed.
197
+ - `ReferenceCellRenderer` no longer constructs JSX inside try/catch (the
198
+ try can't catch render errors anyway) — the display string is computed in
199
+ the try, rendered outside.
200
+ - `RecordMetaFooter`'s UserRef renders the registry cell renderer via
201
+ `React.createElement` instead of a locally-assigned capitalized JSX tag
202
+ (flagged as component-creation-during-render; the registry reference is
203
+ stable).
204
+
205
+ No behavior change intended; eslint react-hooks errors on these files drop
206
+ to zero.
207
+
208
+ - f0f10f5: feat(kanban): default lane field honours the ADR-0085 `stageField` role
209
+
210
+ Kanban views without an explicit `groupByField`/`groupField` hard-coded their
211
+ lane field to the literal `'status'` (in both app-shell's ObjectView options
212
+ and plugin-list's ListView fallback) — ignoring the object's declared
213
+ lifecycle and even inventing a field the object doesn't have. The default now
214
+ resolves through the shared `stageField` detector:
215
+
216
+ 1. explicit view config (unchanged, always wins);
217
+ 2. the object's `stageField` semantic role;
218
+ 3. `stageField: false` → **no default lanes** (the status-shaped field is
219
+ declared non-linear; the board renders its empty state until the view
220
+ picks a lane field explicitly);
221
+ 4. else the shared name/type heuristic (status / stage / state / phase by
222
+ name, then status/stage by type) — never a nonexistent field.
223
+
224
+ `detectStatusField` moved from `@object-ui/plugin-detail` to
225
+ `@object-ui/types` (new export, with the `StatusFieldSource` input type) so
226
+ plugin-list and app-shell share the exact semantics; plugin-detail re-exports
227
+ it unchanged.
228
+
229
+ Also fixes ListView's pre-existing rules-of-hooks error while touching the
230
+ file: `useListFieldLabel` wrapped `useObjectLabel()` in try/catch (hook-order
231
+ desync risk; the hook is provider-safe) — same fix as objectui#2595's
232
+ `useFieldLabel`.
233
+
234
+ Behavior change is limited to kanban views with no explicit lane field on
235
+ objects that either declare `stageField` (now honoured), declare
236
+ `stageField: false` (now suppressed), or have no status-shaped field at all
237
+ (previously grouped by a nonexistent `status` into one "undefined" lane; now
238
+ an honest empty state). Objects with a real `status` field — the common case —
239
+ are unchanged.
240
+
241
+ - Updated dependencies [82441e4]
242
+ - Updated dependencies [2efa9fd]
243
+ - Updated dependencies [e628d1f]
244
+ - Updated dependencies [23d65c3]
245
+ - @object-ui/i18n@14.1.0
246
+
3
247
  ## 14.0.0
4
248
 
5
249
  ### Patch Changes
package/README.md CHANGED
@@ -192,6 +192,33 @@ Tab navigation for organizing content into different views.
192
192
 
193
193
  Displays related records in list, grid, or table format.
194
194
 
195
+ The `record:related_list` renderer is automatically gated on the current
196
+ user's object-level `read` permission for the child object: when the
197
+ permission system (`@object-ui/permissions`) is loaded and denies read,
198
+ the whole section renders nothing — no header, no empty grid, no "New"
199
+ button that would be rejected server-side. With no `PermissionProvider`
200
+ mounted (Studio designer, standalone embeds) the gate stays open.
201
+
202
+ ### InlineEditSaveBar & InlineFieldInput
203
+
204
+ The record-level inline-edit session (#2407): double-clicking a field (or its
205
+ hover pencil) in the highlights strip or details body stages edits into ONE
206
+ shared draft (`InlineEditProvider` from `@object-ui/react`), committed by
207
+ `<InlineEditSaveBar>` as a single atomic OCC-guarded update. Polish shipped in
208
+ #2572:
209
+
210
+ - **Editors**: `InlineFieldInput` routes every field type to the same widget
211
+ the form uses — including `number` / `currency` / `percent` (numeric
212
+ keyboard, `min`/`max`/`step` from metadata, fraction↔percent conversion) and
213
+ reference pickers, which receive `$expand`-ed record objects as-is so the
214
+ display name renders without a hydration re-fetch.
215
+ - **Keyboard shortcuts**: while the session is active, **Esc** cancels (open
216
+ popovers/dialogs keep owning Escape for "close") and **Cmd/Ctrl+Enter**
217
+ saves; both respect the in-flight `saving` and `locked` states.
218
+ - **Approval lock**: hosts pass `locked` / `lockedHint` to the save bar and
219
+ gate `InlineEditProvider.canEdit` when the record is approval-locked, so a
220
+ locked record hides its edit affordances instead of rejecting at Save.
221
+
195
222
  <!-- release-metadata:v3.3.0 -->
196
223
 
197
224
  ## Compatibility
@@ -1 +1 @@
1
- {"version":3,"file":"DetailSection.d.ts","sourceRoot":"","sources":["../src/DetailSection.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoB/B,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAkC,MAAM,kBAAkB,CAAC;AAOnH;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBxF;AAyBD,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACpD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,6FAA6F;IAC7F,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,oEAAoE;IACpE,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAoiBtD,CAAC"}
1
+ {"version":3,"file":"DetailSection.d.ts","sourceRoot":"","sources":["../src/DetailSection.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAkC,MAAM,kBAAkB,CAAC;AAsBnH;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBxF;AAED,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACpD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,6FAA6F;IAC7F,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,oEAAoE;IACpE,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAictD,CAAC"}
@@ -14,10 +14,13 @@ export interface DetailViewProps {
14
14
  onEdit?: () => void;
15
15
  onDelete?: () => void;
16
16
  onBack?: () => void;
17
- /** Enable inline editing toggle for detail fields */
17
+ /**
18
+ * Opt into inline editing. When true AND an `<InlineEditProvider>` is present
19
+ * (with `canEdit`), fields surface the double-click / hover-pencil affordance
20
+ * and edits stage into the shared draft (objectui#2407 P1). The Save/Cancel
21
+ * bar + atomic persistence live in `<InlineEditSaveBar>`, rendered by the host.
22
+ */
18
23
  inlineEdit?: boolean;
19
- /** Callback when a field value is saved inline */
20
- onFieldSave?: (field: string, value: any, record: any) => void | Promise<void>;
21
24
  /**
22
25
  * Optional discussion content rendered as a dedicated "Discussion" tab when
23
26
  * autoTabs is enabled. Lets the host page mount a rich chatter panel without
@@ -1 +1 @@
1
- {"version":3,"file":"DetailView.d.ts","sourceRoot":"","sources":["../src/DetailView.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAwC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAA4B,MAAM,kBAAkB,CAAC;AAkE/F,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E;;;;OAIG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA41ChD,CAAC"}
1
+ {"version":3,"file":"DetailView.d.ts","sourceRoot":"","sources":["../src/DetailView.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAwC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAA4B,MAAM,kBAAkB,CAAC;AAsE/F,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmsChD,CAAC"}
@@ -15,6 +15,8 @@ export interface HeaderHighlightProps {
15
15
  objectName?: string;
16
16
  /** Object schema for field metadata enrichment */
17
17
  objectSchema?: any;
18
+ /** DataSource used by reference (lookup / user) editors during inline edit */
19
+ dataSource?: any;
18
20
  }
19
21
  export declare const HeaderHighlight: React.FC<HeaderHighlightProps>;
20
22
  //# sourceMappingURL=HeaderHighlight.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderHighlight.d.ts","sourceRoot":"","sources":["../src/HeaderHighlight.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAoI1D,CAAC"}
1
+ {"version":3,"file":"HeaderHighlight.d.ts","sourceRoot":"","sources":["../src/HeaderHighlight.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQvD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA+N1D,CAAC"}
@@ -0,0 +1,57 @@
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
+ * InlineEditSaveBar — the record-level sticky Save/Cancel bar for inline edit
9
+ * (objectui#2407 P1). Reads the shared `InlineEditContext` (draft / editing /
10
+ * saving / error) and commits the WHOLE draft in ONE atomic write, so
11
+ * cross-field validation runs against a consistent record instead of the old
12
+ * per-field save-on-blur loop.
13
+ *
14
+ * Two persistence modes:
15
+ * - **DataSource mode** (record page): one `dataSource.update(obj, id, draft,
16
+ * { ifMatch: data.updated_at })` → `refresh()`. A `409 CONCURRENT_UPDATE`
17
+ * opens `<ConcurrentUpdateDialog>` (reload / overwrite), reusing the OCC UX
18
+ * that previously lived in `record:details`.
19
+ * - **Callback mode** (standalone drawer): loops a caller-supplied
20
+ * `onFieldSave(field, value)` over the draft, preserving the drawer's
21
+ * existing per-field persistence contract with plugin-gantt/calendar/kanban.
22
+ *
23
+ * While the session is active the bar also owns the record-level keyboard
24
+ * shortcuts (objectui#2572): **Esc** cancels (when no popover/dialog is open)
25
+ * and **Cmd/Ctrl+Enter** saves — both respecting `saving`/`locked`.
26
+ *
27
+ * The bar renders nothing unless the record is actively being edited.
28
+ */
29
+ import * as React from 'react';
30
+ export interface InlineEditSaveBarProps {
31
+ /** DataSource for the atomic-update path (record page). */
32
+ dataSource?: any;
33
+ /** Object machine name for the atomic-update path. */
34
+ objectName?: string;
35
+ /** Record id for the atomic-update path. */
36
+ recordId?: string | number | null;
37
+ /** Current server record — supplies `updated_at` for the OCC `ifMatch` token. */
38
+ data?: any;
39
+ /** Re-fetch the record after a successful save / reload. */
40
+ refresh?: () => void | Promise<void>;
41
+ /** Map a field machine name to a user-facing label (for the conflict dialog). */
42
+ fieldLabelFor?: (name: string) => string | undefined;
43
+ /**
44
+ * Callback-persistence mode (drawer): when provided, the save loops this
45
+ * per-field callback over the draft instead of issuing a DataSource update.
46
+ * Takes precedence over the DataSource path.
47
+ */
48
+ onFieldSave?: (field: string, value: any) => void | Promise<void>;
49
+ /** When true, disables Save and shows a lock hint (e.g. approval-locked). */
50
+ locked?: boolean;
51
+ /** Tooltip/label explaining why the record is locked. */
52
+ lockedHint?: string;
53
+ className?: string;
54
+ }
55
+ export declare const InlineEditSaveBar: React.FC<InlineEditSaveBarProps>;
56
+ export default InlineEditSaveBar;
57
+ //# sourceMappingURL=InlineEditSaveBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineEditSaveBar.d.ts","sourceRoot":"","sources":["../src/InlineEditSaveBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,iFAAiF;IACjF,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iFAAiF;IACjF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACrD;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmCD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAqO9D,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,59 @@
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
+ import * as React from 'react';
9
+ /**
10
+ * Field types that carry a `reference_to` for relational metadata but are NOT
11
+ * edited via the lookup picker (they have their own dedicated inputs/renderers).
12
+ * Used so the inline-edit branch doesn't hijack them into a record picker.
13
+ *
14
+ * Exported because `DetailSection`'s per-field editability gate keys off the
15
+ * same set (a computed field is never editable), so the two must not drift.
16
+ */
17
+ export declare const TEXTUAL_REF_FALLBACK_TYPES: Set<string>;
18
+ /**
19
+ * Extract the id a reference widget expects from a value that may already be
20
+ * an `$expand`-ed record object (`{ id, name, ... }`), an array of those, or a
21
+ * bare id. Mirrors the display logic in `LookupCellRenderer` so edit-mode and
22
+ * read-mode agree on which id a relationship points at.
23
+ */
24
+ export declare function extractLookupId(value: unknown): unknown;
25
+ export interface InlineFieldInputProps {
26
+ /**
27
+ * Enriched field metadata — `type` plus any objectSchema enrichment (options,
28
+ * currency, precision, format, reference_to, widget…). The caller owns
29
+ * enrichment so read-mode and edit-mode agree on the same resolved field
30
+ * shape. Kept as a loose bag (matching the widgets' `field` props) since the
31
+ * exact key set varies by field type.
32
+ */
33
+ field: Record<string, any>;
34
+ /** Current field value (may be an `$expand`-ed record object for references). */
35
+ value: any;
36
+ /** Called with the next value whenever the user edits the field. */
37
+ onChange: (value: any) => void;
38
+ /** DataSource used by reference (lookup / master_detail / user) pickers. */
39
+ dataSource?: any;
40
+ /** Auto-focus the underlying input on mount (wired to the entered field). */
41
+ autoFocus?: boolean;
42
+ }
43
+ /**
44
+ * The single inline-edit input for a record field, extracted from
45
+ * `DetailSection` so any record-level surface — the details body AND the
46
+ * highlights strip (objectui#2407) — renders an identical editor. Covers every
47
+ * widget the detail body handles: `SelectField`, `BooleanField`, `LookupField`,
48
+ * `UserField`, `CapabilityMultiSelectField` (#2403), the `permission-facet-link`
49
+ * read-only facet (#2403), the numeric widgets (`NumberField` /
50
+ * `CurrencyField` / `PercentField`, objectui#2572), and the plain date/text
51
+ * input (with ISO date coercion + object-value guarding so an unexpanded
52
+ * reference never leaks "[object Object]").
53
+ *
54
+ * Editability GATING (computed types, `readonly`, system fields, object
55
+ * lifecycle) stays with the host — this component only renders the editor once
56
+ * the host has decided the field is editable.
57
+ */
58
+ export declare const InlineFieldInput: React.FC<InlineFieldInputProps>;
59
+ //# sourceMappingURL=InlineFieldInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineFieldInput.d.ts","sourceRoot":"","sources":["../src/InlineFieldInput.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,aAA2D,CAAC;AAEnG;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQvD;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,iFAAiF;IACjF,KAAK,EAAE,GAAG,CAAC;IACX,oEAAoE;IACpE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAgI5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RecordDetailDrawer.d.ts","sourceRoot":"","sources":["../src/RecordDetailDrawer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAuBnD,MAAM,WAAW,uBAAuB;IACtC,4CAA4C;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,oFAAoF;IACpF,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,iEAAiE;IACjE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,KAAK,EACL,MAAM,EACN,UAAU,EACV,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,KAA0B,EAC1B,OAAW,EACX,YAAoC,EACpC,WAAW,EACX,QAAQ,EACR,SAAgB,EAChB,YAAY,GACb,EAAE,uBAAuB,qBAsNzB;AAED,eAAe,kBAAkB,CAAC;AAElC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAQjG"}
1
+ {"version":3,"file":"RecordDetailDrawer.d.ts","sourceRoot":"","sources":["../src/RecordDetailDrawer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyBnD,MAAM,WAAW,uBAAuB;IACtC,4CAA4C;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,oFAAoF;IACpF,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,iEAAiE;IACjE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,KAAK,EACL,MAAM,EACN,UAAU,EACV,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,KAA0B,EAC1B,OAAW,EACX,YAAoC,EACpC,WAAW,EACX,QAAQ,EACR,SAAgB,EAChB,YAAY,GACb,EAAE,uBAAuB,qBAkOzB;AAED,eAAe,kBAAkB,CAAC;AAElC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAQjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"RecordMetaFooter.d.ts","sourceRoot":"","sources":["../src/RecordMetaFooter.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,oFAAoF;IACpF,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+GD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA0D5D,CAAC"}
1
+ {"version":3,"file":"RecordMetaFooter.d.ts","sourceRoot":"","sources":["../src/RecordMetaFooter.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,oFAAoF;IACpF,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsHD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA4D5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RelatedList.d.ts","sourceRoot":"","sources":["../src/RelatedList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RelatedList.d.ts","sourceRoot":"","sources":["../src/RelatedList.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoB/B,OAAO,EAAkD,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAY5G,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAMlE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,iDAAiD;IACjD,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE;QACJ,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,GAAG,CAAA;SAAE,CAAC;QACnF,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,2DAA2D;IAC3D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E;;;;OAIG;IACH,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,8DAA8D;IAC9D,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAgBD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,eAAe,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE,CAmBA,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAsxBlD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,10 @@ export { ConcurrentUpdateDialog, isConcurrentUpdateError, } from './ConcurrentUp
20
20
  export type { ConcurrentUpdateConflict, ConcurrentUpdateDialogProps, } from './ConcurrentUpdateDialog';
21
21
  export { SectionGroup } from './SectionGroup';
22
22
  export { HeaderHighlight } from './HeaderHighlight';
23
+ export { InlineFieldInput, extractLookupId, TEXTUAL_REF_FALLBACK_TYPES } from './InlineFieldInput';
24
+ export type { InlineFieldInputProps } from './InlineFieldInput';
25
+ export { InlineEditSaveBar } from './InlineEditSaveBar';
26
+ export type { InlineEditSaveBarProps } from './InlineEditSaveBar';
23
27
  export { inferDetailColumns, isWideFieldType, applyAutoSpan, applyDetailAutoLayout } from './autoLayout';
24
28
  export { useDetailTranslation, DETAIL_DEFAULT_TRANSLATIONS, createSafeTranslationHook } from './useDetailTranslation';
25
29
  export { RecordComments } from './RecordComments';
@@ -68,6 +72,6 @@ export type { MentionAutocompleteProps, MentionSuggestionItem } from './MentionA
68
72
  export type { SubscriptionToggleProps } from './SubscriptionToggle';
69
73
  export type { ReactionPickerProps } from './ReactionPicker';
70
74
  export type { ThreadedRepliesProps } from './ThreadedReplies';
71
- export { buildDefaultPageSchema, buildDefaultHeader, buildDefaultActions, buildDefaultHighlights, buildDefaultDetails, buildDefaultTabs, buildDefaultDiscussion, detectStatusField, deriveStages, deriveHighlightFields, deriveFieldGroupDetailSections, resolveDetailSections, } from './synth/buildDefaultPageSchema';
75
+ export { buildDefaultPageSchema, buildDefaultHeader, buildDefaultActions, buildDefaultHighlights, buildDefaultDetails, buildDefaultTabs, buildDefaultDiscussion, detectStatusField, deriveStages, deriveHighlightFields, deriveFieldGroupDetailSections, resolveDetailSections, resolveTitleField, } from './synth/buildDefaultPageSchema';
72
76
  export type { ObjectDefLike, ObjectFieldLike, BuildPageOptions, } from './synth/buildDefaultPageSchema';
73
77
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}