@object-ui/plugin-detail 17.5.0 → 17.7.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.
Files changed (92) hide show
  1. package/CHANGELOG.md +7216 -0
  2. package/README.md +442 -74
  3. package/dist/ActivityTimeline.d.ts.map +1 -1
  4. package/dist/CommentAttachment.d.ts.map +1 -1
  5. package/dist/ConcurrentUpdateDialog.d.ts +17 -1
  6. package/dist/ConcurrentUpdateDialog.d.ts.map +1 -1
  7. package/dist/DetailSection.d.ts.map +1 -1
  8. package/dist/DetailSectionNode.d.ts +97 -0
  9. package/dist/DetailSectionNode.d.ts.map +1 -0
  10. package/dist/DetailView.d.ts.map +1 -1
  11. package/dist/HeaderHighlight.d.ts.map +1 -1
  12. package/dist/HistoryTimeline.d.ts +8 -1
  13. package/dist/HistoryTimeline.d.ts.map +1 -1
  14. package/dist/InlineEditSaveBar.d.ts +68 -0
  15. package/dist/InlineEditSaveBar.d.ts.map +1 -1
  16. package/dist/InlineFieldInput.d.ts +79 -6
  17. package/dist/InlineFieldInput.d.ts.map +1 -1
  18. package/dist/ReactionPicker.d.ts.map +1 -1
  19. package/dist/RecordActivityTimeline.d.ts +19 -4
  20. package/dist/RecordActivityTimeline.d.ts.map +1 -1
  21. package/dist/RecordChatterPanel.d.ts +6 -1
  22. package/dist/RecordChatterPanel.d.ts.map +1 -1
  23. package/dist/RecordComments.d.ts +1 -0
  24. package/dist/RecordComments.d.ts.map +1 -1
  25. package/dist/RecordDetailDrawer.d.ts +20 -6
  26. package/dist/RecordDetailDrawer.d.ts.map +1 -1
  27. package/dist/RecordDetailPanel.d.ts +101 -0
  28. package/dist/RecordDetailPanel.d.ts.map +1 -0
  29. package/dist/RecordMetaFooter.d.ts +1 -1
  30. package/dist/RecordMetaFooter.d.ts.map +1 -1
  31. package/dist/RelatedList.d.ts +94 -10
  32. package/dist/RelatedList.d.ts.map +1 -1
  33. package/dist/ThreadedReplies.d.ts +1 -1
  34. package/dist/ThreadedReplies.d.ts.map +1 -1
  35. package/dist/emptiness.d.ts +142 -0
  36. package/dist/emptiness.d.ts.map +1 -0
  37. package/dist/fieldEnrichment.d.ts +44 -4
  38. package/dist/fieldEnrichment.d.ts.map +1 -1
  39. package/dist/headerColor.d.ts +20 -0
  40. package/dist/headerColor.d.ts.map +1 -0
  41. package/dist/index.d.ts +181 -76
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +5259 -5567
  44. package/dist/index.umd.cjs +2 -5
  45. package/dist/renderers/record-activity.d.ts.map +1 -1
  46. package/dist/renderers/record-alert.d.ts +83 -13
  47. package/dist/renderers/record-alert.d.ts.map +1 -1
  48. package/dist/renderers/record-alert.readProps.d.ts +40 -0
  49. package/dist/renderers/record-alert.readProps.d.ts.map +1 -0
  50. package/dist/renderers/record-chatter.d.ts.map +1 -1
  51. package/dist/renderers/record-details.d.ts +2 -0
  52. package/dist/renderers/record-details.d.ts.map +1 -1
  53. package/dist/renderers/record-highlights.d.ts.map +1 -1
  54. package/dist/renderers/record-history.d.ts +1 -1
  55. package/dist/renderers/record-history.d.ts.map +1 -1
  56. package/dist/renderers/record-path.d.ts.map +1 -1
  57. package/dist/renderers/record-quick-actions.d.ts +20 -3
  58. package/dist/renderers/record-quick-actions.d.ts.map +1 -1
  59. package/dist/renderers/record-reference-rail.d.ts +42 -17
  60. package/dist/renderers/record-reference-rail.d.ts.map +1 -1
  61. package/dist/renderers/record-related-list.d.ts +37 -3
  62. package/dist/renderers/record-related-list.d.ts.map +1 -1
  63. package/dist/renderers/recordActivityFeed.d.ts +352 -13
  64. package/dist/renderers/recordActivityFeed.d.ts.map +1 -1
  65. package/dist/renderers/recordComponentAria.d.ts +44 -0
  66. package/dist/renderers/recordComponentAria.d.ts.map +1 -0
  67. package/dist/renderers/relatedListActions.d.ts +102 -0
  68. package/dist/renderers/relatedListActions.d.ts.map +1 -0
  69. package/dist/summaryChipPercent.d.ts +83 -0
  70. package/dist/summaryChipPercent.d.ts.map +1 -0
  71. package/dist/summaryChipRenderers.d.ts +83 -0
  72. package/dist/summaryChipRenderers.d.ts.map +1 -0
  73. package/dist/synth/buildDefaultPageSchema.d.ts +98 -17
  74. package/dist/synth/buildDefaultPageSchema.d.ts.map +1 -1
  75. package/dist/useDetailTranslation.d.ts.map +1 -1
  76. package/dist/useRecordEditable.d.ts +1 -1
  77. package/dist/useRecordEditable.d.ts.map +1 -1
  78. package/package.json +20 -18
  79. package/dist/CommentInput.d.ts +0 -24
  80. package/dist/CommentInput.d.ts.map +0 -1
  81. package/dist/DiffView.d.ts +0 -24
  82. package/dist/DiffView.d.ts.map +0 -1
  83. package/dist/InlineCreateRelated.d.ts +0 -32
  84. package/dist/InlineCreateRelated.d.ts.map +0 -1
  85. package/dist/MentionAutocomplete.d.ts +0 -43
  86. package/dist/MentionAutocomplete.d.ts.map +0 -1
  87. package/dist/PointInTimeRestore.d.ts +0 -28
  88. package/dist/PointInTimeRestore.d.ts.map +0 -1
  89. package/dist/RecordNavigationEnhanced.d.ts +0 -18
  90. package/dist/RecordNavigationEnhanced.d.ts.map +0 -1
  91. package/dist/RelationshipGraph.d.ts +0 -23
  92. package/dist/RelationshipGraph.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"record-activity.d.ts","sourceRoot":"","sources":["../../src/renderers/record-activity.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAgB/E,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,4BAA4B,GAAG;QACtC;oEAC4D;QAC5D,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QACnB,uDAAuD;QACvD,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAiKxE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"record-activity.d.ts","sourceRoot":"","sources":["../../src/renderers/record-activity.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AA2B/E,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,4BAA4B,GAAG;QACtC;oEAC4D;QAC5D,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QACnB,uDAAuD;QACvD,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA+MxE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { I18nLabel } from '@objectstack/spec/ui';
1
2
  /**
2
3
  * ObjectUI
3
4
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -31,11 +32,39 @@
31
32
  *
32
33
  * Visibility model
33
34
  * ----------------
34
- * Reuses `useCondition` + `toPredicateInput` (same pipeline as every
35
- * `<ActionButton>` / `<ActionBar>`), so the predicate evaluates against
36
- * the same scope: `record`, `user`, `objectName`, `features`, plus
37
- * `ctx.*` namespace mirror. Missing predicate → always visible.
38
- * Empty `record` (loading) → hidden (no flash of stale alert).
35
+ * `properties.visible` is normalized by `toPredicateInput` and evaluated by
36
+ * `useCondition` against `usePredicateRecordContext(record)` — the repo's one
37
+ * row-binding rule (objectui#4075 / #4077), shared with `<ActionButton>` /
38
+ * `<ActionMenu>` / `<ActionGroup>` / `<ActionIcon>` and app-shell's
39
+ * `DeclaredActionsBar`, so this banner cannot disagree with the buttons it
40
+ * pairs with. The row therefore resolves the three ways objectui#5330 ruled
41
+ * on (maintainer, 2026-08-20): `record.status` — the CANON, what an author
42
+ * should write — plus the deprecated-but-kept row-action shorthand `status`
43
+ * and legacy `data.status`.
44
+ *
45
+ * Merged UNDER the row is whatever the host put in the ambient predicate
46
+ * scope (`PredicateScopeProvider`; app-shell's `ExpressionProvider` supplies
47
+ * `current_user` / `user` / `ctx.user` / `os.user` / `data` /
48
+ * `features`). The row wins, so a host-supplied `record` / `data` cannot
49
+ * shadow it. `objectName` is NOT in the predicate scope — it is read from
50
+ * `useRecordContext()` for the metadata lookup and the dismiss key only.
51
+ *
52
+ * Missing predicate → always visible. A predicate that cannot be evaluated →
53
+ * also visible: this call site is FAIL-SOFT (it does not pass
54
+ * `throwOnError`), which is why the unbound spellings above were a
55
+ * user-visible defect rather than a console line — objectui#4807.
56
+ * Empty `record` (loading) → hidden (no flash of stale alert), AND the
57
+ * predicate is not evaluated at all in that frame — a bare/`${…}`
58
+ * `record.*` reference against an unbound row faults, and evaluating a
59
+ * verdict this component is about to discard anyway only produced a
60
+ * permanently misleading `record is not defined` console line on every
61
+ * load (objectui#5776).
62
+ *
63
+ * A node-level `visibleWhen` is a SEPARATE gate one tier up, evaluated by
64
+ * `SchemaRenderer` on its own bindings (notably `data` = the data-source
65
+ * ADAPTER, not the row). The two compose as AND. Both facts are pinned in
66
+ * `__tests__/record-alert.visibleWhen.evidence.test.tsx` (group 4) and
67
+ * `__tests__/record-alert.rowBinding.test.tsx`.
39
68
  *
40
69
  * CTA wiring
41
70
  * ----------
@@ -43,33 +72,74 @@
43
72
  * metadata `actions[]` and executed via the shared `<ActionProvider>`
44
73
  * runner — so confirm dialogs, param dialogs, toast, and reload
45
74
  * handlers all work exactly as they do in `record:quick_actions`.
75
+ *
76
+ * The by-name lookup is `resolveDeclaredActionIds` from `@object-ui/types`
77
+ * — the one function `page:header` and `record:quick_actions` call — not a
78
+ * hand-written `find` of its own (objectui#7382). Only its ACTION-ID arm
79
+ * reaches the CTA: see the comment at the lookup below.
46
80
  */
47
81
  import * as React from 'react';
48
82
  type Severity = 'info' | 'warning' | 'error' | 'success';
49
- interface RecordAlertProps {
83
+ /**
84
+ * Local (unexported) prop shape for the renderer below.
85
+ *
86
+ * ⚠️ Spelled `RecordAlertRendererProps`, NOT `RecordAlertProps`. At the RESOLVED
87
+ * `@objectstack/spec` pin, `@objectstack/spec/ui` exports `RecordAlertProps` —
88
+ * and a `Record<Block>Props` for every sibling block this directory renders —
89
+ * for the block's AUTHORED properties — the key set nested under
90
+ * `schema.properties` below, and nothing else. What this declaration holds is a
91
+ * different thing one level up: the React props this renderer is called with, a
92
+ * `schema` node plus `className` plus an open tail. Every other renderer beside
93
+ * this one already spells that distinction `…RendererProps`; this file did not,
94
+ * which is why its name was rule 1's last entry in the `check:spec-symbols` DEBT
95
+ * ledger (objectui#7265) while its structurally identical siblings were never
96
+ * in it. Both halves are pinned — that the spec still owns the plain name, and
97
+ * that it does not own this one — in this package's spec-symbol file, together
98
+ * with the sibling convention itself, re-derived from the directory rather than
99
+ * restated here.
100
+ *
101
+ * `title` / `body` accept the inline locale map as well as a plain string
102
+ * (objectui#4970): both are read through `pickLocalized` further down, and the
103
+ * block's published authoring surface declares the two arms
104
+ * (`plugin-detail/src/index.tsx`, `type: ['string', 'object']` since
105
+ * objectui#3832), so while these two said `string` they were narrower than both
106
+ * the renderer and this block's own published surface — the
107
+ * declaration-narrower-than-the-renderer family of objectui#4581.
108
+ *
109
+ * The CTA's `action.label` below is the same slot one level down, widened here
110
+ * (objectui#4998) to match: it is read through the same `pickLocalized` call as
111
+ * `title` / `body` (`const ctaLabel = pickLocalized(props.action?.label, language)`
112
+ * further down), so a declaration of bare `string` was narrower than the
113
+ * renderer's own runtime behaviour, exactly as `title` / `body` were before
114
+ * objectui#4970. This widening is TYPE-only: the block's published surface still
115
+ * declares `action` as a bare `object` with the member shape in prose
116
+ * (`plugin-detail/src/index.tsx`), so there is no manifest arm to align — that
117
+ * half stays parked on the `ComponentInput` member-shape question (PR #3795).
118
+ */
119
+ interface RecordAlertRendererProps {
50
120
  schema?: {
51
121
  properties?: {
52
122
  severity?: Severity;
53
- title?: string;
54
- body?: string;
123
+ title?: string | I18nLabel;
124
+ body?: string | I18nLabel;
55
125
  visible?: any;
56
126
  icon?: string;
57
127
  action?: {
58
128
  actionName: string;
59
- label?: string;
129
+ label?: string | I18nLabel;
60
130
  variant?: string;
61
131
  };
62
132
  dismissible?: boolean;
63
133
  dismissKey?: string;
64
134
  };
65
135
  severity?: Severity;
66
- title?: string;
67
- body?: string;
136
+ title?: string | I18nLabel;
137
+ body?: string | I18nLabel;
68
138
  visible?: any;
69
139
  icon?: string;
70
140
  action?: {
71
141
  actionName: string;
72
- label?: string;
142
+ label?: string | I18nLabel;
73
143
  variant?: string;
74
144
  };
75
145
  dismissible?: boolean;
@@ -79,6 +149,6 @@ interface RecordAlertProps {
79
149
  className?: string;
80
150
  [k: string]: any;
81
151
  }
82
- export declare const RecordAlertRenderer: React.FC<RecordAlertProps>;
152
+ export declare const RecordAlertRenderer: React.FC<RecordAlertRendererProps>;
83
153
  export default RecordAlertRenderer;
84
154
  //# sourceMappingURL=record-alert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-alert.d.ts","sourceRoot":"","sources":["../../src/renderers/record-alert.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,KAAK,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE;YACX,QAAQ,CAAC,EAAE,QAAQ,CAAC;YACpB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,GAAG,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,MAAM,CAAC,EAAE;gBAAE,UAAU,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAClE,WAAW,CAAC,EAAE,OAAO,CAAC;YACtB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;QAEF,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAClE,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AA6BD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAiI1D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"record-alert.d.ts","sourceRoot":"","sources":["../../src/renderers/record-alert.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,KAAK,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,UAAU,wBAAwB;IAChC,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE;YACX,QAAQ,CAAC,EAAE,QAAQ,CAAC;YACpB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAC1B,OAAO,CAAC,EAAE,GAAG,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,MAAM,CAAC,EAAE;gBAAE,UAAU,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;YACtB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;QAEF,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAwBD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA6KlE,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,40 @@
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
+ /**
9
+ * The config bag `record:alert` reads: the node's own keys UNDERNEATH (the
10
+ * legacy flat spelling `RecordAlertRendererProps` tolerates) and `properties`
11
+ * on top. It is the sixth member of the `readProps()` family that
12
+ * `packages/components/src/__tests__/alias-precedence-cross-channel.test.tsx`
13
+ * names, spelled differently — `{ ...schema, ...schema.properties }`, no
14
+ * `props` alias leg — and since objectui#6790 it asks the same question the
15
+ * other five have asked since objectui#6783: is `properties` a real config
16
+ * bag? `??` only replaces `null`/`undefined`, so the previous spelling
17
+ * `(schema?.properties ?? {})` let a DEGENERATE `properties` (a string, an
18
+ * array) into the object spread, where it came back out as its own indexed
19
+ * keys — `{ '0': 'n', … '8': 'g' }` for `'not-a-bag'`, nine keys nobody
20
+ * authored, sitting beside the named ones the renderer reads.
21
+ *
22
+ * What the guard buys is what objectui#6752 measured its own guard buys: the
23
+ * authored value's shape is not reinterpreted. Not a rendered pixel, today —
24
+ * every read in `record-alert.tsx` is a NAMED key (`title`, `body`,
25
+ * `severity`, `action`, `dismissible`, …) and the bag is never spread onto a
26
+ * DOM element, so the indices were computed and then dropped. It asks the
27
+ * predicate `@object-ui/react` exports rather than retelling it
28
+ * (objectui#6761's pin cannot see a spelling one package over), and it does
29
+ * not reuse `@object-ui/components`' `readProps`: that reader is not exported,
30
+ * and its expression is a different one (`props` alias underneath, not the
31
+ * node).
32
+ *
33
+ * Its own module for the same reason `@object-ui/components` gave its reader
34
+ * one: `record-alert.tsx` keeps exporting components only, and the pin
35
+ * (`__tests__/record-alert.degenerateProperties.test.tsx`) imports the reader
36
+ * directly. `index.tsx` imports `RecordAlertRenderer` by name, so this does
37
+ * not reach the package entry.
38
+ */
39
+ export declare function readProps(schema: any): any;
40
+ //# sourceMappingURL=record-alert.readProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-alert.readProps.d.ts","sourceRoot":"","sources":["../../src/renderers/record-alert.readProps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,OAMpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"record-chatter.d.ts","sourceRoot":"","sources":["../../src/renderers/record-chatter.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAQpE,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA4CtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"record-chatter.d.ts","sourceRoot":"","sources":["../../src/renderers/record-chatter.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAA0C,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAW5G,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAiLtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import { default as React } from 'react';
2
2
  import { RecordDetailsComponentProps } from '@object-ui/types';
3
+ /** Test seam — forget which unresolved group references have been reported. */
4
+ export declare function resetUnresolvedSectionGroupReports(): void;
3
5
  export interface RecordDetailsRendererProps {
4
6
  schema?: RecordDetailsComponentProps & Record<string, any>;
5
7
  className?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"record-details.d.ts","sourceRoot":"","sources":["../../src/renderers/record-details.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAYpE,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAgPtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"record-details.d.ts","sourceRoot":"","sources":["../../src/renderers/record-details.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAkGpE,+EAA+E;AAC/E,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAouBtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"record-highlights.d.ts","sourceRoot":"","sources":["../../src/renderers/record-highlights.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAQvE,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,8BAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA+F5E,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"record-highlights.d.ts","sourceRoot":"","sources":["../../src/renderers/record-highlights.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AASvE,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,8BAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA2J5E,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { HistoryEntry } from '../HistoryTimeline';
2
+ import { HistoryEntry } from '../HistoryTimeline.js';
3
3
  export interface RecordHistoryRendererProps {
4
4
  schema?: {
5
5
  entries?: HistoryEntry[];
@@ -1 +1 @@
1
- {"version":3,"file":"record-history.d.ts","sourceRoot":"","sources":["../../src/renderers/record-history.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOxE,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAMD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAwEtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"record-history.d.ts","sourceRoot":"","sources":["../../src/renderers/record-history.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOxE,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAuFD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAsFtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"record-path.d.ts","sourceRoot":"","sources":["../../src/renderers/record-path.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAQjE,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+KhE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"record-path.d.ts","sourceRoot":"","sources":["../../src/renderers/record-path.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAmDjE,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAoXhE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { ActionDef, ActionLocation } from '@object-ui/core';
3
+ import { AuthoredRecordAria } from './recordComponentAria.js';
3
4
  export interface RecordQuickActionsRendererProps {
4
5
  schema?: {
5
6
  actions?: ActionDef[];
@@ -8,9 +9,25 @@ export interface RecordQuickActionsRendererProps {
8
9
  align?: 'start' | 'center' | 'end';
9
10
  size?: 'sm' | 'default' | 'lg';
10
11
  variant?: 'default' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link';
11
- aria?: {
12
- label?: string;
13
- };
12
+ /**
13
+ * Accessible name for the toolbar. `ariaLabel` is the spelling
14
+ * `@objectstack/spec`'s `AriaPropsSchema` accepts; `label` is that shape's
15
+ * alias entry, refused on parse. objectui#4663 kept `label` as a
16
+ * back-compat read for documents written before the contract closed, and
17
+ * objectui#9945 retired that read: a served `label` is reported, not read.
18
+ *
19
+ * ⚠️ `RecordQuickActionsProps` in `@objectstack/spec` declares NO `aria`
20
+ * key at all — measured, not recalled, by
21
+ * `__tests__/recordComponentAria-9556.test.tsx`, whose census reads the
22
+ * installed artifact. So the contract REFUSES this bag on this block
23
+ * (`unrecognized_keys`), and no contract-valid document reaches the read
24
+ * below. The read is kept, and typed as the family's bag rather than
25
+ * re-spelled, because the protocol's own refusal message names objectui's
26
+ * renderer as the thing that has to move first. ⛔ Do not mirror this key
27
+ * onto a published `@object-ui/types` face: that would declare, on this
28
+ * repo's contract face, a key the protocol refuses.
29
+ */
30
+ aria?: AuthoredRecordAria;
14
31
  properties?: Record<string, any>;
15
32
  [k: string]: any;
16
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"record-quick-actions.d.ts","sourceRoot":"","sources":["../../src/renderers/record-quick-actions.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOjE,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;QACjF,IAAI,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAuJhF,CAAC;AAsDF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"record-quick-actions.d.ts","sourceRoot":"","sources":["../../src/renderers/record-quick-actions.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA4CpF,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;QACjF;;;;;;;;;;;;;;;;;WAiBG;QACH,IAAI,CAAC,EAAE,kBAAkB,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAwOhF,CAAC;AAsDF,eAAe,0BAA0B,CAAC"}
@@ -1,21 +1,6 @@
1
1
  import { default as React } from 'react';
2
- export interface ReferenceRailEntry {
3
- /** Related object's API name (e.g. 'opportunity_quote'). */
4
- objectName: string;
5
- /** FK field on the related object pointing back to the host record. */
6
- relationshipField: string;
7
- /** Optional override for the rail card title. */
8
- title?: string;
9
- /** Lucide icon name (defaults vary by object). */
10
- icon?: string;
11
- /** Top-N preview cap. Defaults to 3. */
12
- limit?: number;
13
- /**
14
- * Canonical field on the related object to render in each preview row.
15
- * Falls back to `name / title / subject / label / id` when omitted.
16
- */
17
- displayField?: string;
18
- }
2
+ import { ReferenceRailEntry } from '@objectstack/spec/ui';
3
+ export type { ReferenceRailEntry } from '@objectstack/spec/ui';
19
4
  export interface RecordReferenceRailRendererProps {
20
5
  schema?: {
21
6
  entries?: ReferenceRailEntry[];
@@ -28,11 +13,51 @@ export interface RecordReferenceRailRendererProps {
28
13
  * behavior.
29
14
  */
30
15
  hideEmpty?: boolean;
16
+ /**
17
+ * The contract's NODE-level props envelope
18
+ * (`@objectstack/spec` `PageComponentSchema.properties` — "Component props
19
+ * passed to the widget"), declared here by objectui#8649 for the ONE member
20
+ * this renderer reads off it.
21
+ *
22
+ * The rail accepts a node either flattened (`schema.entries`) or enveloped
23
+ * (`schema.properties.entries`). The enveloped read went through an explicit
24
+ * `(schema as any)` cast — ⛔ NOT through the `[k: string]: any` below,
25
+ * which had nothing to do with it — so `entries` arrived as `any` on that
26
+ * path while the flattened path had the contract's own entry type.
27
+ *
28
+ * ⚠️ An earlier revision of this card declared the member and left that cast
29
+ * in place, which made the declaration INERT at the only site this comment
30
+ * names: a cast at the read site defeats a declaration that a membership
31
+ * instrument still reports as present. The cast is now gone (see the read
32
+ * itself), and `__tests__/detailRendererUndeclaredKeys-8649.test.ts` fails
33
+ * if it returns. Declaring the member NARROWS an accept this face already
34
+ * granted through its index signature; it widens nothing, and `properties`
35
+ * itself stays open because the contract declares it as a record.
36
+ *
37
+ * ⚠️ This is the node's envelope, NOT a `record:reference_rail` prop:
38
+ * `RecordReferenceRailProps` declares `entries` and `hideEmpty` and nothing
39
+ * else. `properties` has the standing `dataSource` and `className` have —
40
+ * accepted on every page component, as
41
+ * `recordRelatedListInputs.spec-parity.test.ts` derives for the sibling
42
+ * block.
43
+ */
44
+ properties?: {
45
+ entries?: ReferenceRailEntry[];
46
+ } & Record<string, any>;
31
47
  [k: string]: any;
32
48
  };
33
49
  className?: string;
34
50
  [k: string]: any;
35
51
  }
52
+ /**
53
+ * Preview rows fetched for one entry when the author declared no `limit`.
54
+ *
55
+ * Named rather than spelled inline because it was spelled TWICE — once in the
56
+ * `$top` the entry's query carries and once in the fetch signature that decides
57
+ * whether to re-issue it — and objectui#9925 gave both a resolver, which needs
58
+ * one fallback to agree on.
59
+ */
60
+ export declare const DEFAULT_REFERENCE_RAIL_LIMIT = 3;
36
61
  export declare const RecordReferenceRailRenderer: React.FC<RecordReferenceRailRendererProps>;
37
62
  export default RecordReferenceRailRenderer;
38
63
  //# sourceMappingURL=record-reference-rail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-reference-rail.d.ts","sourceRoot":"","sources":["../../src/renderers/record-reference-rail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;;;;;WAMG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAoCD,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAmQlF,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"record-reference-rail.d.ts","sourceRoot":"","sources":["../../src/renderers/record-reference-rail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAU/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO/D,MAAM,WAAW,gCAAgC;IAC/C,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;;;;;WAMG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2BG;QACH,UAAU,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;SAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AASD;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AA4F9C,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAoYlF,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { default as React } from 'react';
2
+ import { ElementDataSourceConfig } from '@object-ui/core';
2
3
  import { RecordRelatedListComponentProps } from '@object-ui/types';
3
4
  export interface RecordRelatedListRendererProps {
4
5
  /**
@@ -15,14 +16,47 @@ export interface RecordRelatedListRendererProps {
15
16
  * sides — one describes what an author writes, the other what the block reads.
16
17
  *
17
18
  * Spelling it `RecordRelatedListComponentProps` flat said the opposite, and
18
- * said it about the wrapper: the exact authoring shape #6953 added did not
19
+ * said it about the wrapper: the exact authoring shape objectstack-ai/objectstack#6953 added did not
19
20
  * type-check against the component that exists to accept it. The body already
20
21
  * reads the key defensively (`objectName && …`, `objectName || ''`) precisely
21
22
  * because it can arrive unbound; this declaration now agrees with that code.
23
+ *
24
+ * ## The looseness is NAMED, not open (objectui#9963)
25
+ *
26
+ * That is the whole of it: `objectName` optional, and `dataSource` admitted
27
+ * as the binding the gate reads — typed with the gate's own declaration of
28
+ * it, `ElementDataSourceConfig`. Every other member is the mirror's. This
29
+ * type used to add `& Record<string, any>` (and the interface
30
+ * `[k: string]: any`), which admitted ANY key at `any`, so a misspelled
31
+ * declared key type-checked at every read below, cast or not — the refusal
32
+ * the mirror declares stopped one layer short of the reads it exists for.
33
+ *
34
+ * The field-security triple (`requiredPermissions`, `enforceFieldSecurity`,
35
+ * `redactFields`) arrives through the mirror like every other member:
36
+ * `@objectstack/spec` 17.5.0 declares it on `record:related_list`, and
37
+ * objectui#8649 declared it on `RecordRelatedListComponentProps` and removed
38
+ * the casts its reads used to go through. ⛔ Still do not reopen this type to
39
+ * admit a key the contract does not declare on this block.
22
40
  */
23
- schema?: Omit<RecordRelatedListComponentProps, 'objectName'> & Partial<Pick<RecordRelatedListComponentProps, 'objectName'>> & Record<string, any>;
41
+ schema?: Omit<RecordRelatedListComponentProps, 'objectName'> & Partial<Pick<RecordRelatedListComponentProps, 'objectName'>> & {
42
+ /**
43
+ * The per-element binding (`@objectstack/spec` `PageComponentSchema.dataSource`,
44
+ * objectstack#6953). Read by `ElementDataSourceGate`, never by the body:
45
+ * the gate maps it onto `objectName` / `columns` / `filter` / `sort` /
46
+ * `limit` first.
47
+ */
48
+ dataSource?: ElementDataSourceConfig;
49
+ };
24
50
  className?: string;
25
- [k: string]: any;
51
+ /**
52
+ * The designer's host props — the three keys `splitDesigner` reads and puts
53
+ * back on the container. The registry's own call is untyped
54
+ * (`ComponentRenderer<T = any>`), so what it forwards and nothing here reads
55
+ * is deliberately NOT declared.
56
+ */
57
+ style?: React.CSSProperties;
58
+ 'data-obj-id'?: string;
59
+ 'data-obj-type'?: string;
26
60
  }
27
61
  /**
28
62
  * `record:related_list` with the spec's per-element `dataSource` binding mapped
@@ -1 +1 @@
1
- {"version":3,"file":"record-related-list.d.ts","sourceRoot":"","sources":["../../src/renderers/record-related-list.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AA4BxE,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,+BAA+B,EAAE,YAAY,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC,GAC5D,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAiOD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CAiB9E,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"record-related-list.d.ts","sourceRoot":"","sources":["../../src/renderers/record-related-list.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AA+DxE,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,+BAA+B,EAAE,YAAY,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC,GAAG;QAC7D;;;;;WAKG;QACH,UAAU,CAAC,EAAE,uBAAuB,CAAC;KACtC,CAAC;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAkcD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CAiB7E,CAAC;AAEH,eAAe,yBAAyB,CAAC"}