@object-ui/plugin-detail 17.6.0 → 18.0.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 (102) hide show
  1. package/CHANGELOG.md +7755 -0
  2. package/README.md +557 -71
  3. package/dist/ActivityTimeline.d.ts.map +1 -1
  4. package/dist/CommentAttachment.d.ts.map +1 -1
  5. package/dist/CommentAuthorControls.d.ts +40 -0
  6. package/dist/CommentAuthorControls.d.ts.map +1 -0
  7. package/dist/ConcurrentUpdateDialog.d.ts +16 -1
  8. package/dist/ConcurrentUpdateDialog.d.ts.map +1 -1
  9. package/dist/DetailSection.d.ts.map +1 -1
  10. package/dist/DetailSectionNode.d.ts +97 -0
  11. package/dist/DetailSectionNode.d.ts.map +1 -0
  12. package/dist/DetailView.d.ts +13 -0
  13. package/dist/DetailView.d.ts.map +1 -1
  14. package/dist/HeaderHighlight.d.ts.map +1 -1
  15. package/dist/HistoryTimeline.d.ts +21 -4
  16. package/dist/HistoryTimeline.d.ts.map +1 -1
  17. package/dist/InlineEditSaveBar.d.ts +68 -0
  18. package/dist/InlineEditSaveBar.d.ts.map +1 -1
  19. package/dist/InlineFieldInput.d.ts +80 -7
  20. package/dist/InlineFieldInput.d.ts.map +1 -1
  21. package/dist/ReactionPicker.d.ts.map +1 -1
  22. package/dist/RecordActivityTimeline.d.ts +32 -4
  23. package/dist/RecordActivityTimeline.d.ts.map +1 -1
  24. package/dist/RecordChatterPanel.d.ts +10 -1
  25. package/dist/RecordChatterPanel.d.ts.map +1 -1
  26. package/dist/RecordComments.d.ts +1 -0
  27. package/dist/RecordComments.d.ts.map +1 -1
  28. package/dist/RecordDetailDrawer.d.ts +20 -6
  29. package/dist/RecordDetailDrawer.d.ts.map +1 -1
  30. package/dist/RecordDetailPanel.d.ts +101 -0
  31. package/dist/RecordDetailPanel.d.ts.map +1 -0
  32. package/dist/RecordMetaFooter.d.ts +1 -1
  33. package/dist/RecordMetaFooter.d.ts.map +1 -1
  34. package/dist/RelatedList.d.ts +83 -10
  35. package/dist/RelatedList.d.ts.map +1 -1
  36. package/dist/ThreadedReplies.d.ts +9 -1
  37. package/dist/ThreadedReplies.d.ts.map +1 -1
  38. package/dist/emptiness.d.ts +142 -0
  39. package/dist/emptiness.d.ts.map +1 -0
  40. package/dist/fieldEnrichment.d.ts +46 -5
  41. package/dist/fieldEnrichment.d.ts.map +1 -1
  42. package/dist/headerColor.d.ts +20 -0
  43. package/dist/headerColor.d.ts.map +1 -0
  44. package/dist/index.d.ts +94 -77
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +5693 -5487
  47. package/dist/index.umd.cjs +2 -5
  48. package/dist/recordPageProvenance.d.ts +39 -0
  49. package/dist/recordPageProvenance.d.ts.map +1 -0
  50. package/dist/renderers/record-activity.d.ts.map +1 -1
  51. package/dist/renderers/record-alert.d.ts +23 -3
  52. package/dist/renderers/record-alert.d.ts.map +1 -1
  53. package/dist/renderers/record-alert.readProps.d.ts +40 -0
  54. package/dist/renderers/record-alert.readProps.d.ts.map +1 -0
  55. package/dist/renderers/record-chatter.d.ts.map +1 -1
  56. package/dist/renderers/record-details.d.ts +12 -0
  57. package/dist/renderers/record-details.d.ts.map +1 -1
  58. package/dist/renderers/record-highlights.d.ts +10 -0
  59. package/dist/renderers/record-highlights.d.ts.map +1 -1
  60. package/dist/renderers/record-history.d.ts +1 -1
  61. package/dist/renderers/record-history.d.ts.map +1 -1
  62. package/dist/renderers/record-path.d.ts.map +1 -1
  63. package/dist/renderers/record-quick-actions.d.ts +26 -6
  64. package/dist/renderers/record-quick-actions.d.ts.map +1 -1
  65. package/dist/renderers/record-reference-rail.d.ts +40 -0
  66. package/dist/renderers/record-reference-rail.d.ts.map +1 -1
  67. package/dist/renderers/record-related-list.d.ts +51 -7
  68. package/dist/renderers/record-related-list.d.ts.map +1 -1
  69. package/dist/renderers/recordActivityFeed.d.ts +343 -33
  70. package/dist/renderers/recordActivityFeed.d.ts.map +1 -1
  71. package/dist/renderers/recordBinding.d.ts +180 -0
  72. package/dist/renderers/recordBinding.d.ts.map +1 -0
  73. package/dist/renderers/recordComponentAria.d.ts +44 -0
  74. package/dist/renderers/recordComponentAria.d.ts.map +1 -0
  75. package/dist/renderers/relatedListActions.d.ts +102 -0
  76. package/dist/renderers/relatedListActions.d.ts.map +1 -0
  77. package/dist/summaryChipPercent.d.ts +83 -0
  78. package/dist/summaryChipPercent.d.ts.map +1 -0
  79. package/dist/summaryChipRenderers.d.ts +83 -0
  80. package/dist/summaryChipRenderers.d.ts.map +1 -0
  81. package/dist/synth/buildDefaultPageSchema.d.ts +188 -21
  82. package/dist/synth/buildDefaultPageSchema.d.ts.map +1 -1
  83. package/dist/useDetailTranslation.d.ts.map +1 -1
  84. package/dist/useRecordEditable.d.ts +4 -1
  85. package/dist/useRecordEditable.d.ts.map +1 -1
  86. package/package.json +19 -18
  87. package/dist/CommentInput.d.ts +0 -24
  88. package/dist/CommentInput.d.ts.map +0 -1
  89. package/dist/DiffView.d.ts +0 -24
  90. package/dist/DiffView.d.ts.map +0 -1
  91. package/dist/InlineCreateRelated.d.ts +0 -32
  92. package/dist/InlineCreateRelated.d.ts.map +0 -1
  93. package/dist/MentionAutocomplete.d.ts +0 -43
  94. package/dist/MentionAutocomplete.d.ts.map +0 -1
  95. package/dist/PointInTimeRestore.d.ts +0 -28
  96. package/dist/PointInTimeRestore.d.ts.map +0 -1
  97. package/dist/RecordNavigationEnhanced.d.ts +0 -18
  98. package/dist/RecordNavigationEnhanced.d.ts.map +0 -1
  99. package/dist/RelationshipGraph.d.ts +0 -23
  100. package/dist/RelationshipGraph.d.ts.map +0 -1
  101. package/dist/renderers/PermissionFacetLink.d.ts +0 -38
  102. package/dist/renderers/PermissionFacetLink.d.ts.map +0 -1
@@ -0,0 +1,39 @@
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
+ * Whether the record PAGE draws a `DetailView`'s provenance footer for it
11
+ * (objectui#12307).
12
+ *
13
+ * A record page shows ONE record, so its `RecordMetaFooter` is the page's and
14
+ * is drawn once, by the page host (app-shell's `RecordDetailView`, and the
15
+ * Studio `PagePreview` that mirrors it), whatever the number of
16
+ * `record:details` nodes the page carries. Before this, every `DetailView`
17
+ * mounted its own: a page with two `record:details` nodes printed the same
18
+ * line twice, and a node whose sections were all hidden drew a block holding
19
+ * nothing but that line.
20
+ *
21
+ * `record:details` provides `true` around the one `DetailView` it mounts when
22
+ * the node reads the page's record, i.e. when it carries no `dataSource`
23
+ * binding (`renderers/record-details.tsx`). Everything else reads the default,
24
+ * `false`, and keeps its footer:
25
+ *
26
+ * - a standalone `DetailView` (the `detail-view` node, the record drawer and
27
+ * overlay panel, a direct React caller) has no page to draw it for it;
28
+ * - a BOUND `record:details` shows the first row of its own query, a record
29
+ * the page does not show, so the page's footer is not that record's.
30
+ *
31
+ * ⛔ Module-internal on purpose: not re-exported from the package barrel, and
32
+ * neither a `DetailView` prop nor a `DetailViewSchema` key. Where the footer
33
+ * sits is the renderer's placement, not something a page authors (the triage
34
+ * on objectui#12307 ruled out a prop and a spec key for it). It lives in its
35
+ * own module, not in `DetailView.tsx`, so that file keeps exporting
36
+ * components only.
37
+ */
38
+ export declare const RecordPageProvenanceContext: React.Context<boolean>;
39
+ //# sourceMappingURL=recordPageProvenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordPageProvenance.d.ts","sourceRoot":"","sources":["../src/recordPageProvenance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,2BAA2B,wBAAsC,CAAC"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;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,CAuNxE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -44,7 +44,7 @@ import { I18nLabel } from '@objectstack/spec/ui';
44
44
  *
45
45
  * Merged UNDER the row is whatever the host put in the ambient predicate
46
46
  * scope (`PredicateScopeProvider`; app-shell's `ExpressionProvider` supplies
47
- * `current_user` / `user` / `ctx.user` / `os.user` / `app` / `data` /
47
+ * `current_user` / `user` / `ctx.user` / `os.user` / `data` /
48
48
  * `features`). The row wins, so a host-supplied `record` / `data` cannot
49
49
  * shadow it. `objectName` is NOT in the predicate scope — it is read from
50
50
  * `useRecordContext()` for the metadata lookup and the dismiss key only.
@@ -72,12 +72,32 @@ import { I18nLabel } from '@objectstack/spec/ui';
72
72
  * metadata `actions[]` and executed via the shared `<ActionProvider>`
73
73
  * runner — so confirm dialogs, param dialogs, toast, and reload
74
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.
75
80
  */
76
81
  import * as React from 'react';
77
82
  type Severity = 'info' | 'warning' | 'error' | 'success';
78
83
  /**
79
84
  * Local (unexported) prop shape for the renderer below.
80
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
+ *
81
101
  * `title` / `body` accept the inline locale map as well as a plain string
82
102
  * (objectui#4970): both are read through `pickLocalized` further down, and the
83
103
  * block's published authoring surface declares the two arms
@@ -96,7 +116,7 @@ type Severity = 'info' | 'warning' | 'error' | 'success';
96
116
  * (`plugin-detail/src/index.tsx`), so there is no manifest arm to align — that
97
117
  * half stays parked on the `ComponentInput` member-shape question (PR #3795).
98
118
  */
99
- interface RecordAlertProps {
119
+ interface RecordAlertRendererProps {
100
120
  schema?: {
101
121
  properties?: {
102
122
  severity?: Severity;
@@ -129,6 +149,6 @@ interface RecordAlertProps {
129
149
  className?: string;
130
150
  [k: string]: any;
131
151
  }
132
- export declare const RecordAlertRenderer: React.FC<RecordAlertProps>;
152
+ export declare const RecordAlertRenderer: React.FC<RecordAlertRendererProps>;
133
153
  export default RecordAlertRenderer;
134
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,KAAK,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,UAAU,gBAAgB;IACxB,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;AA6BD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAuJ1D,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,CAgLlE,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwGG;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,CAqLtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1,10 +1,22 @@
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;
6
8
  [k: string]: any;
7
9
  }
10
+ /**
11
+ * `record:details` with the spec's per-element `dataSource` binding honoured
12
+ * (objectui#12294). Unbound, the body reads the record page's record exactly as
13
+ * before; bound, it reads the FIRST row of the bound set. `recordBindingBlock`
14
+ * (`./recordBinding`, which states the semantics) wraps the body in the gate and
15
+ * the one-record scope, and passes the result through the declaration seam.
16
+ *
17
+ * Wraps the EXPORTED name, as `record:related_list` does, so a host that
18
+ * imports this renderer directly gets the binding too.
19
+ */
8
20
  export declare const RecordDetailsRenderer: React.FC<RecordDetailsRendererProps>;
9
21
  export default RecordDetailsRenderer;
10
22
  //# sourceMappingURL=record-details.d.ts.map
@@ -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;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AA0GpE,+EAA+E;AAC/E,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAmND,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;AA41BD;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAA2D,CAAC;AAEnI,eAAe,qBAAqB,CAAC"}
@@ -5,6 +5,16 @@ export interface RecordHighlightsRendererProps {
5
5
  className?: string;
6
6
  [k: string]: any;
7
7
  }
8
+ /**
9
+ * `record:highlights` with the spec's per-element `dataSource` binding honoured
10
+ * (objectui#12294). Unbound, the body reads the record page's record exactly as
11
+ * before; bound, it reads the FIRST row of the bound set. `recordBindingBlock`
12
+ * (`./recordBinding`, which states the semantics) wraps the body in the gate and
13
+ * the one-record scope, and passes the result through the declaration seam.
14
+ *
15
+ * Wraps the EXPORTED name, as `record:related_list` does, so a host that
16
+ * imports this renderer directly gets the binding too.
17
+ */
8
18
  export declare const RecordHighlightsRenderer: React.FC<RecordHighlightsRendererProps>;
9
19
  export default RecordHighlightsRenderer;
10
20
  //# sourceMappingURL=record-highlights.d.ts.map
@@ -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;AAUvE,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;AA+JD;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAAiE,CAAC;AAE/I,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;AAQxE,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;AAsGD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA8FtE,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAWjE,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,CA0ShE,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,CAkYhE,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[];
@@ -11,19 +12,38 @@ export interface RecordQuickActionsRendererProps {
11
12
  /**
12
13
  * Accessible name for the toolbar. `ariaLabel` is the spelling
13
14
  * `@objectstack/spec`'s `AriaPropsSchema` accepts; `label` is that shape's
14
- * alias entry — refused on parse — and is kept here as a back-compat read
15
- * for documents written before the contract closed (objectui#4663).
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.
16
29
  */
17
- aria?: {
18
- ariaLabel?: string;
19
- label?: string;
20
- };
30
+ aria?: AuthoredRecordAria;
21
31
  properties?: Record<string, any>;
22
32
  [k: string]: any;
23
33
  };
24
34
  className?: string;
25
35
  [k: string]: any;
26
36
  }
37
+ /**
38
+ * `record:quick_actions` with the spec's per-element `dataSource` binding honoured
39
+ * (objectui#12294). Unbound, the body reads the record page's record exactly as
40
+ * before; bound, it reads the FIRST row of the bound set. `recordBindingBlock`
41
+ * (`./recordBinding`, which states the semantics) wraps the body in the gate and
42
+ * the one-record scope, and passes the result through the declaration seam.
43
+ *
44
+ * Wraps the EXPORTED name, as `record:related_list` does, so a host that
45
+ * imports this renderer directly gets the binding too.
46
+ */
27
47
  export declare const RecordQuickActionsRenderer: React.FC<RecordQuickActionsRendererProps>;
28
48
  export default RecordQuickActionsRenderer;
29
49
  //# sourceMappingURL=record-quick-actions.d.ts.map
@@ -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;;;;;WAKG;QACH,IAAI,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,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,CAqLhF,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;AAgB1B,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAkEpF,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;AAkYD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAAsE,CAAC;AAExJ,eAAe,0BAA0B,CAAC"}
@@ -13,11 +13,51 @@ export interface RecordReferenceRailRendererProps {
13
13
  * behavior.
14
14
  */
15
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>;
16
47
  [k: string]: any;
17
48
  };
18
49
  className?: string;
19
50
  [k: string]: any;
20
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;
21
61
  export declare const RecordReferenceRailRenderer: React.FC<RecordReferenceRailRendererProps>;
22
62
  export default RecordReferenceRailRenderer;
23
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;AAK1B,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,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;AAY1B,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;AA6H9C,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CA6elF,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,21 +16,64 @@ 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
- * `record:related_list` with the spec's per-element `dataSource` binding mapped
29
- * onto the keys the body reads (objectstack#6953).
62
+ * `record:related_list`, with its TWO bindings (ruling B on objectui#12296):
63
+ *
64
+ * - the PARENT record — `parentDataSource`, the spec row's member, read by
65
+ * {@link ParentRecordBinding}: the first row of the binding by its `sort`
66
+ * becomes the record context the body reads, and no row is a loud absence.
67
+ * Absent, the parent is the record page's record context, as it always was;
68
+ * - the CHILD rows — the node's `dataSource`, mapped onto the keys the body
69
+ * reads by {@link RecordRelatedListChildRows}. It keeps its published
70
+ * meaning and is never read as the parent.
71
+ *
72
+ * The parent scope sits OUTSIDE the child gate because the child gate and the
73
+ * body read the parent's record context (its id, its row, its adapter).
30
74
  *
31
- * The gate wraps the EXPORTED name rather than being added at the registration
32
- * site, so a host that imports this renderer directly gets the binding too — a
75
+ * The gates wrap the EXPORTED name rather than being added at the registration
76
+ * site, so a host that imports this renderer directly gets both bindings too — a
33
77
  * block bound under one entry point and unbound under another is the same
34
78
  * "declared but not reached" shape in miniature.
35
79
  */
@@ -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;AAsOD;;;;;;;;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;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AAgGxE,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;AAylBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CAkB7E,CAAC;AAEH,eAAe,yBAAyB,CAAC"}