Releases: objectstack-ai/objectui
@object-ui/types@5.0.1
@object-ui/types@5.0.1
@object-ui/types@5.0.0
Minor Changes
-
7213027: feat(detail): slotted record pages (Track 3 Phase I)
Introduce
kind: "slotted"record pages that override one or more
named slots while letting the default-page synthesizer fill in the
rest. Authors no longer need to re-author the entire page just to
customize the header or one tab.Slot menu (v1):
header— replacespage:headeractions— replaces therecord:quick_actionsaction barhighlights— replaces the chips + chevron path stripdetails— replaces the Details tab body (other tabs stay synthesized)tabs— replaces the entirepage:tabsnode (wins overdetails)discussion— replaces the inlinerecord:discussionfooter
Each slot is a full replacement at the slot boundary. To compose
default + custom, call the correspondingbuildDefault*sub-builder
(now exported from@object-ui/plugin-detail):
buildDefaultHeader,buildDefaultActions,buildDefaultHighlights,
buildDefaultDetails,buildDefaultTabs,buildDefaultDiscussion.Author shape:
{ type: 'record', object: 'account', kind: 'slotted', slots: { header: { type: 'page:header', properties: { ... } }, }, }
API changes:
PageSchema(in@object-ui/types): addskind?: 'full' | 'slotted'
(default'full') andslots?: PageSlotMap.usePageAssignment(in@object-ui/react): result now exposes a
slotsfield populated when the matched page haskind === 'slotted'.
Existingpagefield is unchanged for full pages.buildDefaultPageSchema(in@object-ui/plugin-detail): accepts an
options.slotsmap that overrides individual regions at synthesis time.
@object-ui/tenant@5.0.1
Patch Changes
- @object-ui/types@5.0.1
@object-ui/tenant@5.0.0
Patch Changes
- Updated dependencies [7213027]
- @object-ui/types@5.0.0
@object-ui/runner@5.0.1
Patch Changes
- @object-ui/types@5.0.1
- @object-ui/core@5.0.1
- @object-ui/react@5.0.1
- @object-ui/components@5.0.1
- @object-ui/plugin-charts@5.0.1
- @object-ui/plugin-kanban@5.0.1
@object-ui/runner@5.0.0
Patch Changes
- Updated dependencies [8930b15]
- Updated dependencies [95b6b21]
- Updated dependencies [ddb08a7]
- Updated dependencies [765d50f]
- Updated dependencies [927187a]
- Updated dependencies [bae8ba8]
- Updated dependencies [8435860]
- Updated dependencies [bb2ea48]
- Updated dependencies [b14fe09]
- Updated dependencies [a7bef6e]
- Updated dependencies [74962b0]
- Updated dependencies [3154334]
- Updated dependencies [fa4c2cb]
- Updated dependencies [7213027]
- @object-ui/components@5.0.0
- @object-ui/react@5.0.0
- @object-ui/types@5.0.0
- @object-ui/plugin-kanban@5.0.0
- @object-ui/plugin-charts@5.0.0
- @object-ui/core@5.0.0
@object-ui/react@5.0.1
Patch Changes
- @object-ui/types@5.0.1
- @object-ui/core@5.0.1
- @object-ui/i18n@5.0.1
- @object-ui/data-objectstack@5.0.1
@object-ui/react@5.0.0
Minor Changes
-
927187a: Phase N.1 + N.2: visual polish for record detail pages.
N.1 — System actions on full Lightning pages.
PageHeaderRenderer
now mergesheaderSystemActionsfromRecordContextwith authored
actions (authored wins on name/id collision), so full custom pages
(lead, opportunity, ...) once again show 编辑 / 分享 / 删除 alongside
their authored actions.sys_shareandsys_deletenow use the
outlinevariant instead ofdestructiveto read better in
multi-button clusters.N.2 — Hide empty fields by default in synth detail pages.
record:detailsdefaultssection.hideEmptytotrueso synthesized
pages don't render label graveyards on first load. The "显示 N 个空字段"
reveal toggle is preserved as the user-facing escape hatch. Authors can
opt back into showing every field by settinghideEmpty: falseon the
section schema. -
8435860: Phase N.4b: highlight↔body dedup now works for hand-authored Lightning
pages too.Adds a small
HighlightFieldsContextregistry.record:highlights
registers the field names it currently surfaces;record:detailsunions
that live set into itshideFieldNamesfilter so a field shown in the
highlight strip is never duplicated in the section grid below.Previously the dedup only fired for synth-generated pages (via the
hideFieldsprop passed bybuildDefaultPageSchema). Custom Lightning
pages (e.g. opportunity) showed所属客户both in the strip and in the
body. The registry-based approach covers both code paths uniformly with
no schema author work required.The registry uses
useSyncExternalStoreso adding/removing highlights
notifies consumers without triggering the provider value identity to
change — avoiding the update-loop that a naive context implementation
would cause.RecordDetailViewmounts<HighlightFieldsProvider>once per record
page so the two renderers share state. -
74962b0: feat(detail): record:discussion schema component + flush accordion variant
- New
record:discussionschema type lets authors place the record
chatter feed anywhere in a custom Page schema. Wired through a
sharedDiscussionContextprovider on theassignedPagebranch
ofRecordDetailView; auto-append still applies when no explicit
record:discussion/record:chatternode is present. page:accordiongains avariantprop. Defaultflushstrips the
per-item border so accordion sections no longer double-wrap inner
Card-bearing renderers (RelatedList, etc.). Authors who want the
old visual passvariant: 'card'.translateLabelnow handles compound labels split by&,and,
or和(e.g.Notes & Attachments→备注与附件).
- New
-
7213027: feat(detail): slotted record pages (Track 3 Phase I)
Introduce
kind: "slotted"record pages that override one or more
named slots while letting the default-page synthesizer fill in the
rest. Authors no longer need to re-author the entire page just to
customize the header or one tab.Slot menu (v1):
header— replacespage:headeractions— replaces therecord:quick_actionsaction barhighlights— replaces the chips + chevron path stripdetails— replaces the Details tab body (other tabs stay synthesized)tabs— replaces the entirepage:tabsnode (wins overdetails)discussion— replaces the inlinerecord:discussionfooter
Each slot is a full replacement at the slot boundary. To compose
default + custom, call the correspondingbuildDefault*sub-builder
(now exported from@object-ui/plugin-detail):
buildDefaultHeader,buildDefaultActions,buildDefaultHighlights,
buildDefaultDetails,buildDefaultTabs,buildDefaultDiscussion.Author shape:
{ type: 'record', object: 'account', kind: 'slotted', slots: { header: { type: 'page:header', properties: { ... } }, }, }
API changes:
PageSchema(in@object-ui/types): addskind?: 'full' | 'slotted'
(default'full') andslots?: PageSlotMap.usePageAssignment(in@object-ui/react): result now exposes a
slotsfield populated when the matched page haskind === 'slotted'.
Existingpagefield is unchanged for full pages.buildDefaultPageSchema(in@object-ui/plugin-detail): accepts an
options.slotsmap that overrides individual regions at synthesis time.
Patch Changes
@object-ui/providers@5.0.1
Patch Changes
- @object-ui/types@5.0.1
@object-ui/providers@5.0.0
Patch Changes
- Updated dependencies [7213027]
- @object-ui/types@5.0.0