Repository navigation
feat(form): export the bare ExpressionBuilder from the form barrel - #121
Merged
Merged
Conversation
The library's own rule renders the ExpressionField shell at a root field and the bare ExpressionBuilder for nested operands — the June 11 "top-level re-wrap" decision. The barrel exported the shell and not the builder, so a host that mirrors the rule (qorus-ide's TemplateField fork) had to deep-import dist/components/form/expressions/builder: a dependency on the file layout rather than on the API. Export it next to the shell, with its props type, and pin the barrel surface with a unit test that fails if the export goes. Version 0.10.53. Closes #119
The task workflow appends the landed sha to the task's status and the dashboard row once a batch commits.
|
📦 Prerelease published for this PR: Install it in a consumer (updates yarn add @qoretechnologies/reqraft@0.10.53-pr.121.gaf1e48aPublished under the |
qlip visual regression✅ No visual changes. |
davidnich
added a commit
that referenced
this pull request
Sep 23, 2026
…t widened ts-toolkit #121 merged and published as 0.5.82, which is the release three local type declarations here were waiting on. The bump broke the typecheck, and the break was right. 0.5.82 widens `IQorusExpressionSchema.return_type` from `TQorusType` to `TQorusExpressionReturnType`, which admits `list<string>` and `hash<auto>` — the server names a container's element type inline, so the narrower type was refusing catalogue entries it is actually served. The local `IExpressionSchema` now takes the return type from ts-toolkit rather than restating it, so the two cannot drift apart again. One local shape collapses: `IOptionFieldMessage` picked `when` / `unless` off the local conditional-message type because the shared one carried neither, and it carries both now. Two deliberately do not. `IReqraftAllowedValue` keeps its own `tooltip` and `title_actions` because they are WIDER than the shared ones on purpose: a form schema has to survive the wire, so ts-toolkit's are JSON-pure, while reqraft renders in React and lets a consumer hand it a live `React.ElementType`. Collapsing onto the shared type would quietly take that away from every consumer. The comments saying all three would collapse at 0.5.83 are corrected to say which did and why the others did not. `min_value` / `max_value` stay local too, for the ordinary reason: 0.5.82 added the allowed-value and message members, but `IQorusFormFieldSchemaBase` still has no numeric bound. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D5Az4yUufcJ5EFSvcBUamu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #119.
Why
The library's own rule renders the
ExpressionFieldshell at a root field and the bareExpressionBuilderfor nested operands — the June 11 "top-level re-wrap" decision inFIELD_STACK_REPORT.md. The barrel exported the shell and not the builder, so a host that mirrors the rule (qorus-ide'sTemplateFieldfork, on qorus-ide#275) had to deep-importdist/components/form/expressions/builder: a dependency on the file layout rather than on the API.What changed
src/components/form/index.tsx:export { ExpressionBuilder }andexport type { IExpressionBuilderProps }next to the shell.__tests__/formBarrelExports.test.ts: asserts both come from the barrel; fails if the export is removed.design/IDE_INTEGRATION.md: one-line dated note under "the shell is the host's component".0.10.52→0.10.53.Verification
yarn precheckgreen: lint, unit (58 files / 920 tests, the new one included),build:test:prod. No visual surface — qlip should report zero changed snapshots.Note
#120, filed alongside this, was closed as invalid: both operand mounts have forwarded
expressions_urlsince the port; the symptom was on the qorus-ide side and is fixed there.