@qoretechnologies/reqraft 0.8.12-canary.20260609082134.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.tasks/EXPRESSION_BUILDER_REPORT.md +149 -0
- package/.tasks/FIELD_STACK_REPORT.md +234 -0
- package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +558 -0
- package/.tasks/FORM_ENGINE_EXPRESSIONS.md +197 -0
- package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +95 -0
- package/.tasks/FORM_FIELD_EXTRAS.md +72 -0
- package/.tasks/INDEX.md +107 -0
- package/.tasks/LSP_SHARED_CONNECTION.md +75 -0
- package/.tasks/QONSOLE_ASSIST_FEATURES.md +306 -0
- package/.tasks/RENDER_EXPRESSION_LSP.md +159 -0
- package/.tasks/REQRAFT_AUTO_FIELD.md +176 -0
- package/.tasks/SCHEMA_DEFINITION_FIELD.md +250 -0
- package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +340 -0
- package/.tasks/SMART_EDITOR_LSP_FEATURES.md +299 -0
- package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +280 -0
- package/.tasks/SMART_EDITOR_UX_POLISH.md +383 -0
- package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +246 -0
- package/README.md +129 -0
- package/design/COMPACT_INFO_DISPLAY.md +87 -0
- package/design/COMPACT_PARITY.md +85 -0
- package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +81 -0
- package/design/FORM_ENGINE_COMPACT.md +113 -12
- package/design/FORM_ENGINE_EXPRESSIONS.md +147 -0
- package/design/FORM_ENGINE_FIELD_MIGRATION.md +259 -0
- package/design/IDE_INTEGRATION.md +39 -0
- package/design/RENDER_EXPRESSION_TRANSPORT.md +90 -0
- package/design/SMART_EDITOR_UX.md +417 -0
- package/dist/components/dpqlEditor/DpqlEditor.d.ts +5 -0
- package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -0
- package/dist/components/dpqlEditor/DpqlEditor.js +206 -0
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -0
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +40 -0
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -0
- package/dist/components/dpqlEditor/dpqlHelpers.js +244 -0
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -0
- package/dist/components/dpqlEditor/dpqlInserter.d.ts +13 -0
- package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -0
- package/dist/components/dpqlEditor/dpqlInserter.js +121 -0
- package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -0
- package/dist/components/dpqlEditor/dpqlTags.d.ts +39 -0
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -0
- package/dist/components/dpqlEditor/dpqlTags.js +84 -0
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -0
- package/dist/components/dpqlEditor/index.d.ts +8 -0
- package/dist/components/dpqlEditor/index.d.ts.map +1 -0
- package/dist/components/dpqlEditor/index.js +27 -0
- package/dist/components/dpqlEditor/index.js.map +1 -0
- package/dist/components/dpqlEditor/types.d.ts +166 -0
- package/dist/components/dpqlEditor/types.d.ts.map +1 -0
- package/dist/components/dpqlEditor/types.js +7 -0
- package/dist/components/dpqlEditor/types.js.map +1 -0
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +60 -0
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -0
- package/dist/components/dpqlEditor/useDpqlSession.js +386 -0
- package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -0
- package/dist/components/form/engine/CompactRow.d.ts +11 -0
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -0
- package/dist/components/form/engine/CompactRow.js +605 -0
- package/dist/components/form/engine/CompactRow.js.map +1 -0
- package/dist/components/form/engine/CompactToolbar.d.ts +12 -0
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -0
- package/dist/components/form/engine/CompactToolbar.js +155 -0
- package/dist/components/form/engine/CompactToolbar.js.map +1 -0
- package/dist/components/form/engine/FormEngine.d.ts +66 -25
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +728 -316
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.d.ts +7 -0
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +43 -40
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/__fixtures__/basicFormOptions.d.ts +73 -0
- package/dist/components/form/engine/__fixtures__/basicFormOptions.d.ts.map +1 -0
- package/dist/components/form/engine/__fixtures__/basicFormOptions.js +317 -0
- package/dist/components/form/engine/__fixtures__/basicFormOptions.js.map +1 -0
- package/dist/components/form/engine/__fixtures__/fieldChromeOptions.d.ts +41 -0
- package/dist/components/form/engine/__fixtures__/fieldChromeOptions.d.ts.map +1 -0
- package/dist/components/form/engine/__fixtures__/fieldChromeOptions.js +45 -0
- package/dist/components/form/engine/__fixtures__/fieldChromeOptions.js.map +1 -0
- package/dist/components/form/engine/_structuredData/StructuredDataView.d.ts +19 -0
- package/dist/components/form/engine/_structuredData/StructuredDataView.d.ts.map +1 -0
- package/dist/components/form/engine/_structuredData/StructuredDataView.js +28 -0
- package/dist/components/form/engine/_structuredData/StructuredDataView.js.map +1 -0
- package/dist/components/form/engine/_structuredData/structuredData.d.ts +19 -0
- package/dist/components/form/engine/_structuredData/structuredData.d.ts.map +1 -0
- package/dist/components/form/engine/_structuredData/structuredData.js +115 -0
- package/dist/components/form/engine/_structuredData/structuredData.js.map +1 -0
- package/dist/components/form/engine/compactRowContext.d.ts +61 -0
- package/dist/components/form/engine/compactRowContext.d.ts.map +1 -0
- package/dist/components/form/engine/compactRowContext.js +6 -0
- package/dist/components/form/engine/compactRowContext.js.map +1 -0
- package/dist/components/form/engine/compactRowStyles.d.ts +33 -0
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -0
- package/dist/components/form/engine/compactRowStyles.js +181 -0
- package/dist/components/form/engine/compactRowStyles.js.map +1 -0
- package/dist/components/form/engine/compactToolbarContext.d.ts +51 -0
- package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -0
- package/dist/components/form/engine/compactToolbarContext.js +6 -0
- package/dist/components/form/engine/compactToolbarContext.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +43 -28
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +252 -59
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +34 -0
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -0
- package/dist/components/form/expressions/ExpressionField.js +207 -0
- package/dist/components/form/expressions/ExpressionField.js.map +1 -0
- package/dist/components/form/expressions/builder/argumentDetail.d.ts +6 -0
- package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -0
- package/dist/components/form/expressions/builder/argumentDetail.js +21 -0
- package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -0
- package/dist/components/form/expressions/builder/argumentLabel.d.ts +10 -0
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -0
- package/dist/components/form/expressions/builder/argumentLabel.js +71 -0
- package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -0
- package/dist/components/form/expressions/builder/argumentWrapper.d.ts +15 -0
- package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -0
- package/dist/components/form/expressions/builder/argumentWrapper.js +16 -0
- package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -0
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +11 -0
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -0
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +88 -0
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -0
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +8 -0
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -0
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +40 -0
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -0
- package/dist/components/form/expressions/builder/index.d.ts +43 -0
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -0
- package/dist/components/form/expressions/builder/index.js +698 -0
- package/dist/components/form/expressions/builder/index.js.map +1 -0
- package/dist/components/form/expressions/builder/item.d.ts +11 -0
- package/dist/components/form/expressions/builder/item.d.ts.map +1 -0
- package/dist/components/form/expressions/builder/item.js +81 -0
- package/dist/components/form/expressions/builder/item.js.map +1 -0
- package/dist/components/form/expressions/builder/renderTemplate.d.ts +7 -0
- package/dist/components/form/expressions/builder/renderTemplate.d.ts.map +1 -0
- package/dist/components/form/expressions/builder/renderTemplate.js +81 -0
- package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -0
- package/dist/components/form/expressions/dpqlMockLsp.d.ts +3 -0
- package/dist/components/form/expressions/dpqlMockLsp.d.ts.map +1 -0
- package/dist/components/form/expressions/dpqlMockLsp.js +91 -0
- package/dist/components/form/expressions/dpqlMockLsp.js.map +1 -0
- package/dist/components/form/expressions/mockExpressions.d.ts +3 -0
- package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -0
- package/dist/components/form/expressions/mockExpressions.js +286 -0
- package/dist/components/form/expressions/mockExpressions.js.map +1 -0
- package/dist/components/form/expressions/renderExpressionToText.d.ts +7 -0
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -0
- package/dist/components/form/expressions/renderExpressionToText.js +46 -0
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -0
- package/dist/components/form/expressions/types.d.ts +74 -0
- package/dist/components/form/expressions/types.d.ts.map +1 -0
- package/dist/components/form/expressions/types.js +9 -0
- package/dist/components/form/expressions/types.js.map +1 -0
- package/dist/components/form/expressions/useExpressions.d.ts +21 -0
- package/dist/components/form/expressions/useExpressions.d.ts.map +1 -0
- package/dist/components/form/expressions/useExpressions.js +85 -0
- package/dist/components/form/expressions/useExpressions.js.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts +35 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.js +281 -0
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -0
- package/dist/components/form/fields/Field.d.ts +1 -1
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +37 -2
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +23 -0
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -0
- package/dist/components/form/fields/allowed-values/AllowedValues.js +115 -0
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -0
- package/dist/components/form/fields/array/ArrayAuto.d.ts +12 -0
- package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -0
- package/dist/components/form/fields/array/ArrayAuto.js +123 -0
- package/dist/components/form/fields/array/ArrayAuto.js.map +1 -0
- package/dist/components/form/fields/auto/AutoFormField.d.ts +62 -0
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -0
- package/dist/components/form/fields/auto/AutoFormField.js +524 -0
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -0
- package/dist/components/form/fields/byte-size/ByteSize.d.ts +21 -0
- package/dist/components/form/fields/byte-size/ByteSize.d.ts.map +1 -0
- package/dist/components/form/fields/byte-size/ByteSize.js +52 -0
- package/dist/components/form/fields/byte-size/ByteSize.js.map +1 -0
- package/dist/components/form/fields/cron/Cron.d.ts +3 -1
- package/dist/components/form/fields/cron/Cron.d.ts.map +1 -1
- package/dist/components/form/fields/cron/Cron.js +7 -7
- package/dist/components/form/fields/cron/Cron.js.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts +8 -2
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js +35 -8
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +4 -1
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +10 -1
- package/dist/components/form/fields/number/Number.js.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +23 -15
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts +28 -0
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +167 -0
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -0
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts +43 -0
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +390 -0
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -0
- package/dist/components/form/fields/schema-definition/Hint.d.ts +11 -0
- package/dist/components/form/fields/schema-definition/Hint.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/Hint.js +16 -0
- package/dist/components/form/fields/schema-definition/Hint.js.map +1 -0
- package/dist/components/form/fields/schema-definition/InlineValidationBanner.d.ts +16 -0
- package/dist/components/form/fields/schema-definition/InlineValidationBanner.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/InlineValidationBanner.js +39 -0
- package/dist/components/form/fields/schema-definition/InlineValidationBanner.js.map +1 -0
- package/dist/components/form/fields/schema-definition/Loader.d.ts +8 -0
- package/dist/components/form/fields/schema-definition/Loader.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/Loader.js +37 -0
- package/dist/components/form/fields/schema-definition/Loader.js.map +1 -0
- package/dist/components/form/fields/schema-definition/MigrationsTab.d.ts +13 -0
- package/dist/components/form/fields/schema-definition/MigrationsTab.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/MigrationsTab.js +111 -0
- package/dist/components/form/fields/schema-definition/MigrationsTab.js.map +1 -0
- package/dist/components/form/fields/schema-definition/TableEditor.d.ts +17 -0
- package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/TableEditor.js +73 -0
- package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -0
- package/dist/components/form/fields/schema-definition/TablesTab.d.ts +11 -0
- package/dist/components/form/fields/schema-definition/TablesTab.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/TablesTab.js +63 -0
- package/dist/components/form/fields/schema-definition/TablesTab.js.map +1 -0
- package/dist/components/form/fields/schema-definition/catalog.d.ts +67 -0
- package/dist/components/form/fields/schema-definition/catalog.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/catalog.js +215 -0
- package/dist/components/form/fields/schema-definition/catalog.js.map +1 -0
- package/dist/components/form/fields/schema-definition/helpers.d.ts +28 -0
- package/dist/components/form/fields/schema-definition/helpers.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/helpers.js +115 -0
- package/dist/components/form/fields/schema-definition/helpers.js.map +1 -0
- package/dist/components/form/fields/schema-definition/index.d.ts +10 -0
- package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/index.js +200 -0
- package/dist/components/form/fields/schema-definition/index.js.map +1 -0
- package/dist/components/form/fields/schema-definition/mockCatalog.d.ts +17 -0
- package/dist/components/form/fields/schema-definition/mockCatalog.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/mockCatalog.js +255 -0
- package/dist/components/form/fields/schema-definition/mockCatalog.js.map +1 -0
- package/dist/components/form/fields/schema-definition/mockDefinition.d.ts +9 -0
- package/dist/components/form/fields/schema-definition/mockDefinition.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/mockDefinition.js +107 -0
- package/dist/components/form/fields/schema-definition/mockDefinition.js.map +1 -0
- package/dist/components/form/fields/schema-definition/referenceSuggestions.d.ts +70 -0
- package/dist/components/form/fields/schema-definition/referenceSuggestions.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/referenceSuggestions.js +81 -0
- package/dist/components/form/fields/schema-definition/referenceSuggestions.js.map +1 -0
- package/dist/components/form/fields/schema-definition/starterTemplate.d.ts +19 -0
- package/dist/components/form/fields/schema-definition/starterTemplate.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/starterTemplate.js +59 -0
- package/dist/components/form/fields/schema-definition/starterTemplate.js.map +1 -0
- package/dist/components/form/fields/schema-definition/types.d.ts +167 -0
- package/dist/components/form/fields/schema-definition/types.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/types.js +17 -0
- package/dist/components/form/fields/schema-definition/types.js.map +1 -0
- package/dist/components/form/fields/schema-definition/useSchemaOptionCatalog.d.ts +17 -0
- package/dist/components/form/fields/schema-definition/useSchemaOptionCatalog.d.ts.map +1 -0
- package/dist/components/form/fields/schema-definition/useSchemaOptionCatalog.js +37 -0
- package/dist/components/form/fields/schema-definition/useSchemaOptionCatalog.js.map +1 -0
- package/dist/components/form/fields/select/Select.d.ts +2 -1
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +32 -18
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +20 -0
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -0
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +34 -0
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -0
- package/dist/components/form/fields/template/TemplateField.d.ts +51 -24
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +234 -97
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/fields/url/Url.d.ts +12 -0
- package/dist/components/form/fields/url/Url.d.ts.map +1 -0
- package/dist/components/form/fields/url/Url.js +71 -0
- package/dist/components/form/fields/url/Url.js.map +1 -0
- package/dist/components/form/index.d.ts +11 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +15 -0
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/qonsoleSmartInput/QonsoleSmartInput.d.ts +5 -0
- package/dist/components/qonsoleSmartInput/QonsoleSmartInput.d.ts.map +1 -0
- package/dist/components/qonsoleSmartInput/QonsoleSmartInput.js +62 -0
- package/dist/components/qonsoleSmartInput/QonsoleSmartInput.js.map +1 -0
- package/dist/components/qonsoleSmartInput/index.d.ts +5 -0
- package/dist/components/qonsoleSmartInput/index.d.ts.map +1 -0
- package/dist/components/qonsoleSmartInput/index.js +10 -0
- package/dist/components/qonsoleSmartInput/index.js.map +1 -0
- package/dist/components/qonsoleSmartInput/qonsoleInserter.d.ts +7 -0
- package/dist/components/qonsoleSmartInput/qonsoleInserter.d.ts.map +1 -0
- package/dist/components/qonsoleSmartInput/qonsoleInserter.js +70 -0
- package/dist/components/qonsoleSmartInput/qonsoleInserter.js.map +1 -0
- package/dist/components/qonsoleSmartInput/types.d.ts +123 -0
- package/dist/components/qonsoleSmartInput/types.d.ts.map +1 -0
- package/dist/components/qonsoleSmartInput/types.js +6 -0
- package/dist/components/qonsoleSmartInput/types.js.map +1 -0
- package/dist/components/qonsoleSmartInput/useQonsoleSession.d.ts +35 -0
- package/dist/components/qonsoleSmartInput/useQonsoleSession.d.ts.map +1 -0
- package/dist/components/qonsoleSmartInput/useQonsoleSession.js +150 -0
- package/dist/components/qonsoleSmartInput/useQonsoleSession.js.map +1 -0
- package/dist/components/smartEditor/MarkdownDoc.d.ts +16 -0
- package/dist/components/smartEditor/MarkdownDoc.d.ts.map +1 -0
- package/dist/components/smartEditor/MarkdownDoc.js +53 -0
- package/dist/components/smartEditor/MarkdownDoc.js.map +1 -0
- package/dist/components/smartEditor/SmartEditor.d.ts +5 -0
- package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -0
- package/dist/components/smartEditor/SmartEditor.js +493 -0
- package/dist/components/smartEditor/SmartEditor.js.map +1 -0
- package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts +55 -0
- package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts.map +1 -0
- package/dist/components/smartEditor/__fixtures__/mockLspServer.js +126 -0
- package/dist/components/smartEditor/__fixtures__/mockLspServer.js.map +1 -0
- package/dist/components/smartEditor/helpers.d.ts +64 -0
- package/dist/components/smartEditor/helpers.d.ts.map +1 -0
- package/dist/components/smartEditor/helpers.js +207 -0
- package/dist/components/smartEditor/helpers.js.map +1 -0
- package/dist/components/smartEditor/index.d.ts +8 -0
- package/dist/components/smartEditor/index.d.ts.map +1 -0
- package/dist/components/smartEditor/index.js +20 -0
- package/dist/components/smartEditor/index.js.map +1 -0
- package/dist/components/smartEditor/styling.d.ts +20 -0
- package/dist/components/smartEditor/styling.d.ts.map +1 -0
- package/dist/components/smartEditor/styling.js +44 -0
- package/dist/components/smartEditor/styling.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +172 -0
- package/dist/components/smartEditor/types.d.ts.map +1 -0
- package/dist/components/smartEditor/types.js +5 -0
- package/dist/components/smartEditor/types.js.map +1 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts +62 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -0
- package/dist/components/smartEditor/useLspAutocomplete.js +625 -0
- package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -0
- package/dist/components/smartEditor/useLspDiagnosticDecorations.d.ts +42 -0
- package/dist/components/smartEditor/useLspDiagnosticDecorations.d.ts.map +1 -0
- package/dist/components/smartEditor/useLspDiagnosticDecorations.js +102 -0
- package/dist/components/smartEditor/useLspDiagnosticDecorations.js.map +1 -0
- package/dist/components/smartEditor/useLspHover.d.ts +44 -0
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -0
- package/dist/components/smartEditor/useLspHover.js +224 -0
- package/dist/components/smartEditor/useLspHover.js.map +1 -0
- package/dist/components/smartEditor/useLspSemanticTokens.d.ts +45 -0
- package/dist/components/smartEditor/useLspSemanticTokens.d.ts.map +1 -0
- package/dist/components/smartEditor/useLspSemanticTokens.js +293 -0
- package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -0
- package/dist/components/smartEditor/useLspSession.d.ts +74 -0
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -0
- package/dist/components/smartEditor/useLspSession.js +168 -0
- package/dist/components/smartEditor/useLspSession.js.map +1 -0
- package/dist/components/smartEditor/useLspSignatureHelp.d.ts +26 -0
- package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -0
- package/dist/components/smartEditor/useLspSignatureHelp.js +192 -0
- package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -0
- package/dist/helpers/common.d.ts +18 -0
- package/dist/helpers/common.d.ts.map +1 -1
- package/dist/helpers/common.js +86 -2
- package/dist/helpers/common.js.map +1 -1
- package/dist/helpers/expressions.d.ts +6 -0
- package/dist/helpers/expressions.d.ts.map +1 -0
- package/dist/helpers/expressions.js +79 -0
- package/dist/helpers/expressions.js.map +1 -0
- package/dist/helpers/templates.d.ts +32 -0
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +117 -18
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts +4 -0
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +126 -7
- package/dist/helpers/validations.js.map +1 -1
- package/dist/hooks/useTemplates.d.ts +6 -3
- package/dist/hooks/useTemplates.d.ts.map +1 -1
- package/dist/hooks/useTemplates.js +114 -10
- package/dist/hooks/useTemplates.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/stories/Data/fileFieldArgSchema.json +86 -0
- package/dist/stories/Tests/utils.d.ts.map +1 -1
- package/dist/stories/Tests/utils.js +16 -7
- package/dist/stories/Tests/utils.js.map +1 -1
- package/dist/types/Form.d.ts +2 -2
- package/dist/types/Form.d.ts.map +1 -1
- package/dist/utils/lspClient.d.ts +150 -0
- package/dist/utils/lspClient.d.ts.map +1 -0
- package/dist/utils/lspClient.js +645 -0
- package/dist/utils/lspClient.js.map +1 -0
- package/dist/utils/lspClient.types.d.ts +198 -0
- package/dist/utils/lspClient.types.d.ts.map +1 -0
- package/dist/utils/lspClient.types.js +7 -0
- package/dist/utils/lspClient.types.js.map +1 -0
- package/package.json +8 -4
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +1227 -0
- package/src/components/dpqlEditor/DpqlEditor.tsx +214 -0
- package/src/components/dpqlEditor/dpqlHelpers.ts +261 -0
- package/src/components/dpqlEditor/dpqlInserter.ts +121 -0
- package/src/components/dpqlEditor/dpqlTags.ts +101 -0
- package/src/components/dpqlEditor/index.ts +36 -0
- package/src/components/dpqlEditor/types.ts +157 -0
- package/src/components/dpqlEditor/useDpqlSession.ts +386 -0
- package/src/components/form/engine/CompactRow.tsx +1219 -0
- package/src/components/form/engine/CompactToolbar.tsx +268 -0
- package/src/components/form/engine/FormEngine.stories.tsx +2343 -479
- package/src/components/form/engine/FormEngine.tsx +1114 -740
- package/src/components/form/engine/FormEngineRemote.stories.tsx +302 -0
- package/src/components/form/engine/OptionFieldMessages.tsx +70 -59
- package/src/components/form/engine/__fixtures__/basicFormOptions.ts +309 -0
- package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +45 -0
- package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +77 -0
- package/src/components/form/engine/_structuredData/StructuredDataView.tsx +75 -0
- package/src/components/form/engine/_structuredData/structuredData.ts +125 -0
- package/src/components/form/engine/compactRowContext.ts +92 -0
- package/src/components/form/engine/compactRowStyles.ts +531 -0
- package/src/components/form/engine/compactToolbarContext.ts +60 -0
- package/src/components/form/engine/readFirst.ts +299 -59
- package/src/components/form/expressions/ExpressionField.stories.tsx +440 -0
- package/src/components/form/expressions/ExpressionField.tsx +260 -0
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +672 -0
- package/src/components/form/expressions/builder/argumentDetail.tsx +17 -0
- package/src/components/form/expressions/builder/argumentLabel.tsx +140 -0
- package/src/components/form/expressions/builder/argumentWrapper.tsx +87 -0
- package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +120 -0
- package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +69 -0
- package/src/components/form/expressions/builder/index.tsx +1265 -0
- package/src/components/form/expressions/builder/item.tsx +89 -0
- package/src/components/form/expressions/builder/renderTemplate.tsx +75 -0
- package/src/components/form/expressions/dpqlMockLsp.ts +100 -0
- package/src/components/form/expressions/mockExpressions.ts +295 -0
- package/src/components/form/expressions/renderExpressionToText.ts +47 -0
- package/src/components/form/expressions/types.ts +85 -0
- package/src/components/form/expressions/useExpressions.ts +94 -0
- package/src/components/form/expressions/useRenderExpression.ts +249 -0
- package/src/components/form/fields/Field.stories.tsx +103 -0
- package/src/components/form/fields/Field.tsx +91 -2
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +194 -0
- package/src/components/form/fields/array/ArrayAuto.tsx +191 -0
- package/src/components/form/fields/auto/AutoFormField.stories.tsx +340 -0
- package/src/components/form/fields/auto/AutoFormField.tsx +890 -0
- package/src/components/form/fields/byte-size/ByteSize.stories.tsx +63 -0
- package/src/components/form/fields/byte-size/ByteSize.tsx +58 -0
- package/src/components/form/fields/cron/Cron.tsx +7 -4
- package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +38 -14
- package/src/components/form/fields/number/Number.tsx +33 -1
- package/src/components/form/fields/rich-text/RichText.tsx +25 -7
- package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +242 -0
- package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +758 -0
- package/src/components/form/fields/schema-definition/Hint.tsx +22 -0
- package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +138 -0
- package/src/components/form/fields/schema-definition/Loader.tsx +20 -0
- package/src/components/form/fields/schema-definition/MigrationsTab.tsx +187 -0
- package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +209 -0
- package/src/components/form/fields/schema-definition/TableEditor.tsx +155 -0
- package/src/components/form/fields/schema-definition/TablesTab.tsx +138 -0
- package/src/components/form/fields/schema-definition/catalog.ts +237 -0
- package/src/components/form/fields/schema-definition/helpers.ts +99 -0
- package/src/components/form/fields/schema-definition/index.tsx +418 -0
- package/src/components/form/fields/schema-definition/mockCatalog.ts +325 -0
- package/src/components/form/fields/schema-definition/mockDefinition.ts +111 -0
- package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +152 -0
- package/src/components/form/fields/schema-definition/starterTemplate.ts +68 -0
- package/src/components/form/fields/schema-definition/types.ts +185 -0
- package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +49 -0
- package/src/components/form/fields/select/Select.tsx +50 -16
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +41 -0
- package/src/components/form/fields/template/TemplateField.stories.tsx +494 -0
- package/src/components/form/fields/template/TemplateField.tsx +405 -135
- package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +147 -0
- package/src/components/form/fields/template/__fixtures__/templates.json +83 -0
- package/src/components/form/fields/url/Url.stories.tsx +70 -0
- package/src/components/form/fields/url/Url.tsx +85 -0
- package/src/components/form/index.tsx +16 -0
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +751 -0
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +105 -0
- package/src/components/qonsoleSmartInput/index.ts +16 -0
- package/src/components/qonsoleSmartInput/qonsoleInserter.ts +77 -0
- package/src/components/qonsoleSmartInput/types.ts +133 -0
- package/src/components/qonsoleSmartInput/useQonsoleSession.ts +124 -0
- package/src/components/smartEditor/MarkdownDoc.tsx +190 -0
- package/src/components/smartEditor/SmartEditor.stories.tsx +443 -0
- package/src/components/smartEditor/SmartEditor.tsx +752 -0
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +156 -0
- package/src/components/smartEditor/helpers.ts +217 -0
- package/src/components/smartEditor/index.ts +35 -0
- package/src/components/smartEditor/styling.ts +45 -0
- package/src/components/smartEditor/types.ts +211 -0
- package/src/components/smartEditor/useLspAutocomplete.ts +731 -0
- package/src/components/smartEditor/useLspDiagnosticDecorations.ts +125 -0
- package/src/components/smartEditor/useLspHover.ts +230 -0
- package/src/components/smartEditor/useLspSemanticTokens.ts +298 -0
- package/src/components/smartEditor/useLspSession.ts +205 -0
- package/src/components/smartEditor/useLspSignatureHelp.ts +198 -0
- package/src/helpers/common.ts +103 -1
- package/src/helpers/expressions.ts +88 -0
- package/src/helpers/templates.ts +199 -16
- package/src/helpers/validations.ts +150 -1
- package/src/hooks/useTemplates.ts +65 -10
- package/src/index.tsx +20 -0
- package/src/stories/Tests/utils.ts +17 -7
- package/src/types/Form.ts +11 -3
- package/src/utils/lspClient.ts +654 -0
- package/src/utils/lspClient.types.ts +211 -0
- package/storybook-static/122.5aa94755.iframe.bundle.js +0 -1
- package/storybook-static/227.c84ea265.iframe.bundle.js +0 -1
- package/storybook-static/266.56591e2d.iframe.bundle.js +0 -95
- package/storybook-static/266.56591e2d.iframe.bundle.js.LICENSE.txt +0 -16
- package/storybook-static/266.56591e2d.iframe.bundle.js.map +0 -1
- package/storybook-static/280.20fd006a.iframe.bundle.js +0 -405
- package/storybook-static/280.20fd006a.iframe.bundle.js.LICENSE.txt +0 -145
- package/storybook-static/280.20fd006a.iframe.bundle.js.map +0 -1
- package/storybook-static/364.9ae230ee.iframe.bundle.js +0 -1
- package/storybook-static/644.b37c323a.iframe.bundle.js +0 -1
- package/storybook-static/648.6384ef03.iframe.bundle.js +0 -1
- package/storybook-static/735.a09ba9c6.iframe.bundle.js +0 -1
- package/storybook-static/components-form-engine-FormEngine-stories.cf6666c4.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-array-ArrayAutoField-stories.8715e1fd.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-boolean-Boolean-stories.332a6cd4.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-color-Color-stories.0941f323.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-cron-Cron-stories.22f8fed8.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-date-Date-stories.b8eb9100.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-file-File-stories.f567bb7a.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-long-string-LongString-stories.3c8eea32.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-markdown-Markdown-stories.a6eca534.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-number-Number-stories.9b6e0900.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-object-Object-stories.89e744a5.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-radio-group-RadioGroup-stories.78cc8e26.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-rich-text-RichText-stories.831ea017.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-select-Select-stories.19ba2e17.iframe.bundle.js +0 -1
- package/storybook-static/components-form-fields-string-String-stories.d5ae74a8.iframe.bundle.js +0 -1
- package/storybook-static/components-log-Log-stories.47dfecd3.iframe.bundle.js +0 -1
- package/storybook-static/components-menu-Menu-stories.4bc9621d.iframe.bundle.js +0 -1
- package/storybook-static/favicon.svg +0 -1
- package/storybook-static/hooks-useFetch-useFetch-stories.10004a22.iframe.bundle.js +0 -1
- package/storybook-static/hooks-useStorage-useStorage-stories.e777439a.iframe.bundle.js +0 -1
- package/storybook-static/hooks-useWebSocket-useWebsocket-stories.58c550e6.iframe.bundle.js +0 -1
- package/storybook-static/iframe.html +0 -516
- package/storybook-static/index.html +0 -190
- package/storybook-static/index.json +0 -1
- package/storybook-static/main.2b092d36.iframe.bundle.js +0 -199
- package/storybook-static/main.2b092d36.iframe.bundle.js.map +0 -1
- package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/project.json +0 -1
- package/storybook-static/runtime~main.4993c645.iframe.bundle.js +0 -1
- package/storybook-static/sb-addons/chromatic-com-storybook-10/manager-bundle.js +0 -333
- package/storybook-static/sb-addons/chromatic-com-storybook-10/manager-bundle.js.LEGAL.txt +0 -40
- package/storybook-static/sb-addons/essentials-actions-3/manager-bundle.js +0 -151
- package/storybook-static/sb-addons/essentials-actions-3/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-backgrounds-4/manager-bundle.js +0 -12
- package/storybook-static/sb-addons/essentials-backgrounds-4/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-controls-2/manager-bundle.js +0 -394
- package/storybook-static/sb-addons/essentials-controls-2/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-measure-7/manager-bundle.js +0 -3
- package/storybook-static/sb-addons/essentials-measure-7/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-outline-8/manager-bundle.js +0 -3
- package/storybook-static/sb-addons/essentials-outline-8/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-toolbars-6/manager-bundle.js +0 -3
- package/storybook-static/sb-addons/essentials-toolbars-6/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/essentials-viewport-5/manager-bundle.js +0 -3
- package/storybook-static/sb-addons/essentials-viewport-5/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/interactions-9/manager-bundle.js +0 -361
- package/storybook-static/sb-addons/interactions-9/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/links-1/manager-bundle.js +0 -3
- package/storybook-static/sb-addons/links-1/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/mock-esm-preset-11/manager-bundle.js +0 -464
- package/storybook-static/sb-addons/mock-esm-preset-11/manager-bundle.js.LEGAL.txt +0 -35
- package/storybook-static/sb-addons/storybook-12/manager-bundle.js +0 -3
- package/storybook-static/sb-addons/storybook-12/manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-addons/storybook-core-core-server-presets-0/common-manager-bundle.js +0 -3
- package/storybook-static/sb-addons/storybook-core-core-server-presets-0/common-manager-bundle.js.LEGAL.txt +0 -0
- package/storybook-static/sb-common-assets/favicon.svg +0 -1
- package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/sb-manager/globals-module-info.js +0 -1006
- package/storybook-static/sb-manager/globals-runtime.js +0 -54400
- package/storybook-static/sb-manager/globals.js +0 -48
- package/storybook-static/sb-manager/runtime.js +0 -12089
- package/storybook-static/sb-preview/globals.js +0 -33
- package/storybook-static/sb-preview/runtime.js +0 -9498
- package/storybook-static/static/media/java-96x128.eead35f3.png +0 -0
- package/storybook-static/static/media/python-129x128.6540a4e1.png +0 -0
- package/storybook-static/static/media/qore-106x128.72595921.png +0 -0
- package/storybook-static/stores-currentUser-currentUser-stories.d3bd17cb.iframe.bundle.js +0 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# TASK — Expression Builder verbatim re-port
|
|
2
|
+
|
|
3
|
+
**Status:** Phases A + B + C DONE & verified (uncommitted), including the
|
|
4
|
+
follow-ups (shell-chrome polish, the `validations` `'expression'` case — both
|
|
5
|
+
ticked in Phase C below; the `'expression'` validator gained jest coverage
|
|
6
|
+
2026-06-11). The ported, IDE-matching builder is live in `ExpressionField` /
|
|
7
|
+
FormEngine. Phase D (server render-expression) + E (IDE consumes reqraft) are
|
|
8
|
+
out of scope.
|
|
9
|
+
Design:
|
|
10
|
+
`design/EXPRESSION_BUILDER_REPORT_STRATEGY.md`. Supersedes the from-scratch
|
|
11
|
+
visual builder in `.tasks/FORM_ENGINE_EXPRESSIONS.md` (plumbing retained).
|
|
12
|
+
|
|
13
|
+
Method (Filip): copy IDE components **and their tests** verbatim → get them
|
|
14
|
+
1:1 + green → then improve. Compare to qorus-ide Storybook **:6007** between
|
|
15
|
+
phases. **No commits until user verifies.**
|
|
16
|
+
|
|
17
|
+
## Surface area
|
|
18
|
+
|
|
19
|
+
| Area | reqraft path | IDE source |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Type-compat helpers | `src/helpers/expressions.ts` (NEW) | `qorus-ide/src/helpers/expressions.ts` |
|
|
22
|
+
| `areQorusTypesCompatible` | `src/helpers/…` | `qorus-ide/src/helpers/functions.tsx` |
|
|
23
|
+
| `validateField` export | `src/helpers/validations.ts` | (export the existing `_validateField`) |
|
|
24
|
+
| Select flat/intent | `src/components/form/fields/select/Select.tsx` | `qorus-ide` Field/select |
|
|
25
|
+
| TemplateField expr path | `src/components/form/fields/template/TemplateField.tsx` | `qorus-ide` Field/template |
|
|
26
|
+
| ExpressionBuilder | `src/components/form/expressions/builder/**` (NEW) | `qorus-ide/src/components/ExpressionBuilder/**` |
|
|
27
|
+
| Builder tests | `…/builder/*.stories.tsx` | `qorus-ide/src/stories/Components/ExpressionBuilder.stories.tsx` |
|
|
28
|
+
|
|
29
|
+
## Phase A — Field-stack parity (leaf) — DONE & verified (2026-06-10)
|
|
30
|
+
|
|
31
|
+
- [x] `src/helpers/expressions.ts` — verbatim port of getArgumentType,
|
|
32
|
+
argumentMatchesType (from IDE expressions.ts) + areQorusTypesCompatible
|
|
33
|
+
(from IDE functions.tsx); imports adapted (getQorusTypes/defaultQorusTypes
|
|
34
|
+
from reqraft `useQorusTypes`). Typechecks.
|
|
35
|
+
- [x] `validateField` — already exported from validations.ts (no change needed)
|
|
36
|
+
- [x] `SelectFormField` — `flat` + `intent` now forwarded (additive; defaults
|
|
37
|
+
preserve current look). This is the fix Filip named: "make it flat and
|
|
38
|
+
small and it looks the same." The chip can now go borderless.
|
|
39
|
+
- [x] **GATE:** jest 267/267, full storybook **188/189** (pre-existing flaky
|
|
40
|
+
only). No regression from the shared Select change.
|
|
41
|
+
- Note: `TemplateField`'s `allowFunctions`/`isFunction` mechanism moved to
|
|
42
|
+
Phase B — it's circularly dependent with the ExpressionBuilder (TemplateField
|
|
43
|
+
renders the builder; the builder renders TemplateField), so they land
|
|
44
|
+
together. Phase B builds in a NEW dir so the current build stays green.
|
|
45
|
+
|
|
46
|
+
## Phase B — Verbatim ExpressionBuilder + tests — DONE & verified (2026-06-10)
|
|
47
|
+
|
|
48
|
+
- [x] 9 IDE files copied verbatim into `src/components/form/expressions/builder/`
|
|
49
|
+
(index.tsx ~1260 LOC + item/argumentWrapper/argumentLabel/argumentDetail/
|
|
50
|
+
argumentInfo + the two confirm modals + renderTemplate). JSX/markup/props
|
|
51
|
+
preserved; only imports/hooks/types/seams changed.
|
|
52
|
+
- [x] Seams: AiAssistanceAction **removed**; `renderTemplate` rewritten to use
|
|
53
|
+
reqraft `useRenderExpression` (client-side, no Creator-WS);
|
|
54
|
+
`useRegisterHintView` **stubbed**.
|
|
55
|
+
- [x] `TemplateField` — additive `allowFunctions`/`isFunction`; when set, renders
|
|
56
|
+
the ported builder. Absent → unchanged (field migration safe).
|
|
57
|
+
- [x] Adaptations: `Select` `defaultItems`→`items`; `Select.onChange` single-arg;
|
|
58
|
+
catalogue passed as `override` (replaces fetch) **and threaded through the
|
|
59
|
+
group recursion** so offline/CI is deterministic (badge = mock count, not
|
|
60
|
+
the live 121). `auto`/`Select`/`TemplateField` import aliases.
|
|
61
|
+
- [x] Ported `ExpressionBuilder.stories.tsx` (the IDE play tests) — offline via
|
|
62
|
+
`mockExpressions`. **10/10 pass.**
|
|
63
|
+
- [x] **GATE:** renders **1:1 vs :6007** (verified by screenshot — chips, underline
|
|
64
|
+
fields, operator words, group nesting, type-pickers, collapse/Explain all
|
|
65
|
+
match). eslint clean, jest 267/267, full suite **198/199** (pre-existing
|
|
66
|
+
flaky only). Old from-scratch builder left intact; build green.
|
|
67
|
+
- Open follow-ups (Phase C / refinements): wire into `ExpressionField`;
|
|
68
|
+
`validations` has no `'expression'` type case yet (per-expression validity
|
|
69
|
+
tag always "valid"); `useRenderExpression` is the client-side approximation.
|
|
70
|
+
|
|
71
|
+
## Phase C — Re-wrap reqraft features — DONE & verified (2026-06-10)
|
|
72
|
+
|
|
73
|
+
- [x] `ExpressionField` Visual mode now renders the **ported** builder
|
|
74
|
+
(`./builder`); Text = `DpqlEditor`; Explain/Preview from the shell.
|
|
75
|
+
Adapted: `onChange (value, remove?)`, `returnType` cast, and
|
|
76
|
+
**`localTemplates={{ items: [] }}`** (the builder's `filterTemplatesFunc`
|
|
77
|
+
does `templates.items.filter(...)` — undefined templates crashed it;
|
|
78
|
+
caught via the error boundary during verify and fixed).
|
|
79
|
+
- [x] From-scratch `ExpressionBuilder.tsx` + its stories **retired** (deleted);
|
|
80
|
+
no remaining references.
|
|
81
|
+
- [x] **GATE:** FormEngine field → ExpressionField → ported builder verified
|
|
82
|
+
(ViaFormEngine + the toggle path). jest 267/267, full suite **193/193**
|
|
83
|
+
(the flaky `OnValidityChange` even passed). HEAD unchanged.
|
|
84
|
+
- [x] **Shell cleanup (done 2026-06-10):** Visual mode now renders ONLY the
|
|
85
|
+
ported builder (it has its own Explain). The shell's Explain + Preview +
|
|
86
|
+
Explanation are scoped to **Text mode** (where the DpqlEditor has none).
|
|
87
|
+
ExpressionField play tests updated to assert the builder rendered.
|
|
88
|
+
- [x] **Danger-border fix (done 2026-06-10):** three parts —
|
|
89
|
+
(1) ported the IDE's `validations` **`'expression'` case** (reads the
|
|
90
|
+
catalogue from `field.expressions`); (2) `FormEngine.isOptionValid` now
|
|
91
|
+
passes `isFunction` from the field value's `is_expression` (the per-field
|
|
92
|
+
red intent used the base-type check); (3) `ExpressionField` defaults
|
|
93
|
+
`returnType` to `'auto'` so a valid expression card renders `muted` not
|
|
94
|
+
`danger`. Verified: the FormEngine expression field is no longer red.
|
|
95
|
+
eslint clean, jest 267/267, full suite 192/193 (pre-existing flaky only).
|
|
96
|
+
- [x] **Oversized chips/pickers fix (2026-06-10):** root cause — the IDE's
|
|
97
|
+
`Select` spreads `{...rest}` into its rendered ReqoreButton/Dropdown/Tag,
|
|
98
|
+
so the builder's verbatim `size='tiny'` reaches ReQore; reqraft's
|
|
99
|
+
`SelectFormField` accepted `size` in its interface but **never forwarded
|
|
100
|
+
it** (same class of bug as `flat`/`intent`). Forwarded `size` to all four
|
|
101
|
+
render branches (bound as `componentSize` — plain `size` would shadow
|
|
102
|
+
lodash's `size(items)` badge count). Chips now tiny, type pickers
|
|
103
|
+
compact, operand rows no longer wrap — density matches the IDE.
|
|
104
|
+
jest 267/267, full suite 192/193 (pre-existing flaky only).
|
|
105
|
+
- Known seam: reqraft's `SelectFormField` still doesn't rest-spread like the
|
|
106
|
+
IDE's — `flat`/`intent`/`size` are forwarded explicitly; any other
|
|
107
|
+
pass-through prop the verbatim IDE markup relies on needs the same
|
|
108
|
+
treatment if a gap shows up.
|
|
109
|
+
- [x] **Type-picker parity (2026-06-10):** `AutoFormField` now matches the
|
|
110
|
+
IDE's AutoField — unresolved type shows **`auto`** as the selected picker
|
|
111
|
+
label (not a "Select a type" placeholder; `auto` is not a pickable item
|
|
112
|
+
so the badge count stays identical to the IDE's 9/14), and the hint is
|
|
113
|
+
the IDE's orange minimal `ReqoreTag` **"Please select data type"**
|
|
114
|
+
(was a grey info tag). The 3 AutoFormField story assertions updated.
|
|
115
|
+
- [x] **AI-assist slot (2026-06-10):** the IDE's purple hover button on each
|
|
116
|
+
expression card is `AiAssistanceAction` → `AiButton` (sends the selected
|
|
117
|
+
expression's context to the IDE's AI chat). It was one of the three
|
|
118
|
+
deliberate port seams — `AiButton` depends on IDE-only infrastructure
|
|
119
|
+
(AI context, SystemStore, QonsoleStore, Creator-WS) that reqraft doesn't
|
|
120
|
+
have. Added **`extraActions?: IReqorePanelAction[]`** to the ported
|
|
121
|
+
builder (threaded through the group recursion, prepended exactly where
|
|
122
|
+
the IDE renders the AI action) so the IDE injects its AiButton at
|
|
123
|
+
Phase E. jest 267/267, full suite 192/193 (pre-existing flaky only).
|
|
124
|
+
- [x] **`extraActions` upgraded to a factory (2026-06-10):** a static array
|
|
125
|
+
could not reproduce the IDE's button — the IDE builds
|
|
126
|
+
`AiAssistanceAction({ context: selectedExpression })` *inline per card*.
|
|
127
|
+
The seam now also accepts
|
|
128
|
+
`(ctx: { selectedExpression?, value? }) => IReqorePanelAction[]`,
|
|
129
|
+
resolved inside each `Expression` with that card's selected schema —
|
|
130
|
+
so Phase E restores the AI button 1:1, per-card context included.
|
|
131
|
+
Proven by the new `WithInjectedExtraActions` story (hover → injected
|
|
132
|
+
action present; 11/11 ported play tests). Full suite **194/194**
|
|
133
|
+
(even the flaky `OnValidityChange` passed), jest 267/267.
|
|
134
|
+
- Ops note: the Storybook dev server reliably wedges on HMR after edits to
|
|
135
|
+
these files (symptom: play tests fail in ~2ms with
|
|
136
|
+
`ReferenceError: __test is not defined`, preview stuck on spinner).
|
|
137
|
+
A clean restart fixes it every time — restart before trusting failures.
|
|
138
|
+
|
|
139
|
+
## Phase D — Server (tracked, not in reqraft)
|
|
140
|
+
|
|
141
|
+
- [x] `render-expression` over LSP/REST; swap `useRenderExpression` —
|
|
142
|
+
picked up 2026-06-10 in `.tasks/RENDER_EXPRESSION_LSP.md` (branch
|
|
143
|
+
`feature/render-expression-lsp`): new LSP `dpql/renderExpression`
|
|
144
|
+
(server code written, deploy pending) + server-first hook with
|
|
145
|
+
client-side fallback. Design: `design/RENDER_EXPRESSION_TRANSPORT.md`.
|
|
146
|
+
|
|
147
|
+
## Phase E — Dedupe (not now)
|
|
148
|
+
|
|
149
|
+
- [ ] IDE consumes reqraft's builder
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# TASK — TemplateField + auto verbatim re-port
|
|
2
|
+
|
|
3
|
+
**Status:** done pending user verify (uncommitted), branch
|
|
4
|
+
`feature/dpql-editor` — stacked on the uncommitted
|
|
5
|
+
EXPRESSION_BUILDER_REPORT batch (user chose to proceed without
|
|
6
|
+
committing the baseline first, 2026-06-10). Full storybook suite
|
|
7
|
+
**232/232**, jest 268/268, `yarn precheck` clean. Click-through in
|
|
8
|
+
`VERIFY.local.md`.
|
|
9
|
+
|
|
10
|
+
Continuation of the field-stack re-faithful-ization started in
|
|
11
|
+
[EXPRESSION_BUILDER_REPORT](./EXPRESSION_BUILDER_REPORT.md) Phase A.
|
|
12
|
+
Design rationale: `design/EXPRESSION_BUILDER_REPORT_STRATEGY.md`
|
|
13
|
+
(Filip's method: copy IDE components **and their tests** verbatim →
|
|
14
|
+
1:1 + green → then improve). reqraft's `TemplateField` and
|
|
15
|
+
`AutoFormField` are from-scratch reimplementations — the operand layer
|
|
16
|
+
under the ported ExpressionBuilder — and this task replaces them with
|
|
17
|
+
verbatim ports of `qorus-ide/src/components/Field/template.tsx` (774
|
|
18
|
+
LOC) and `Field/auto.tsx` (1017 LOC).
|
|
19
|
+
|
|
20
|
+
**No commits, no pushes. STOP for user browser verification at the end.**
|
|
21
|
+
|
|
22
|
+
## Surface area
|
|
23
|
+
|
|
24
|
+
| Area | reqraft path | IDE source |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| TemplateField | `src/components/form/fields/template/TemplateField.tsx` (REPLACED) | `Field/template.tsx` |
|
|
27
|
+
| Auto field | `src/components/form/fields/auto/AutoFormField.tsx` (REPLACED) | `Field/auto.tsx` |
|
|
28
|
+
| AllowedValues | `src/components/form/fields/allowed-values/AllowedValues.tsx` (NEW) | `components/AllowedValues/index.tsx` |
|
|
29
|
+
| `getValueOrDefaultValue` | `src/helpers/validations.ts` (ADD export) | `helpers/validations.ts:1353` |
|
|
30
|
+
| FormEngine expression model | `src/components/form/engine/FormEngine.tsx` | `Field/systemOptions.tsx` (4-arg `handleValueChange`) |
|
|
31
|
+
| Field dispatch | `src/components/form/fields/Field.tsx` (auto/any call site) | — |
|
|
32
|
+
| Template stories | `…/template/TemplateField.stories.tsx` (NEW) + fixtures | `stories/Fields/Template.stories.tsx` |
|
|
33
|
+
| Auto stories | `…/auto/AutoFormField.stories.tsx` (extended) | `stories/Fields/Auto.stories.tsx` |
|
|
34
|
+
|
|
35
|
+
## Seam map (replace, don't copy — same classes as the builder port)
|
|
36
|
+
|
|
37
|
+
**template.tsx:**
|
|
38
|
+
- `useGetAppActionData` (app-action badge on the template dropdown) —
|
|
39
|
+
IDE-only app catalogue; **dropped** (badge omitted).
|
|
40
|
+
- `SaveValueButton` (`canSaveValue` menu item) — depends on IDE
|
|
41
|
+
saved-values/modal infra; **dropped**. `menuItems` seam remains for
|
|
42
|
+
consumers needing extra menu entries.
|
|
43
|
+
- `useExpressions(allow, {url, expressions})` → reqraft
|
|
44
|
+
`useExpressions({allow, expressionsUrl, extraExpressions})`;
|
|
45
|
+
`.value/.valueForSelect` dep keys → `.expressions`.
|
|
46
|
+
- `ExpressionBuilder` import → `../../expressions/builder` (the ported
|
|
47
|
+
builder). `effectiveIsFunction` renders the **bare builder** like the
|
|
48
|
+
IDE — the Phase-1 `supports_expressions`/`is_expression`-prop toggle
|
|
49
|
+
mechanism (which rendered `ExpressionField`) is **removed**; the IDE
|
|
50
|
+
model wins (accepted drawback #2 in the strategy doc).
|
|
51
|
+
- `TemplatesListProps` defined locally (IDE keeps it in `Field/richText`).
|
|
52
|
+
- ComponentMap leafs (`LongStringField`, `Number`, `BooleanField`,
|
|
53
|
+
`DateField`, `RichTextField`, `FileField`) — local 2-arg
|
|
54
|
+
(`onChange(name, value)`) wrappers around reqraft's leaf fields.
|
|
55
|
+
- `isValueTemplate`/`getTemplateKey`/`getTemplateValue` — re-exported
|
|
56
|
+
from `helpers/templates` (IDE defines them inline).
|
|
57
|
+
|
|
58
|
+
**auto.tsx:**
|
|
59
|
+
- **Dropped IDE-only types** (fall through to the verbatim `default:`
|
|
60
|
+
"Unknown type!" tag, recoverable via `componentOverrides`):
|
|
61
|
+
`processor-mappings`, `tool-catalog`, `test-cases`, `active-windows`,
|
|
62
|
+
`collection-documents`, `data-provider` (ConnectorField), the
|
|
63
|
+
InterfaceSelector family (`mapper`…`value-map`), `connection` (+
|
|
64
|
+
`renderConnectionManagement` removed), `option_hash`, `code-editor`
|
|
65
|
+
(SmartEditor needs an LSP `session` — too heavy for this seam).
|
|
66
|
+
- **`componentOverrides?: Record<string, React.FC>`** — one additive
|
|
67
|
+
seam prop (same class as the builder's `extraActions`): checked
|
|
68
|
+
before the switch so the IDE can re-inject its own editors at
|
|
69
|
+
Phase E (dedupe).
|
|
70
|
+
- `fetchData('/dataprovider/arg_schemas/…')` → reqraft `query()`
|
|
71
|
+
(same `{data, ok, error}` shape).
|
|
72
|
+
- `FieldAllowedValues`/`CheckGroup` → NEW port (see below).
|
|
73
|
+
- `Options` (hash + arg_schema) → `FormEngine` (it IS the ported Options).
|
|
74
|
+
- Leaf fields → reqraft equivalents with inline `onChange` adaptation
|
|
75
|
+
per call site (reqraft leafs are single-arg `onChange(value)`; the
|
|
76
|
+
builder port set this precedent): LongString, RichText, Boolean
|
|
77
|
+
(`checked` prop), Date, Number, ByteSize, Url, Select, MultiSelect,
|
|
78
|
+
Color, File, Object(hash/list), RadioGroup (enum), ArrayAutoField
|
|
79
|
+
(renderItem = `TemplateField component={auto}` — mirrors IDE
|
|
80
|
+
arrayAuto internals), SchemaDefinitionEditor, DpqlEditor.
|
|
81
|
+
- `Loader` → minimal `ReqoreSpinner` (same stand-in as schema-definition's).
|
|
82
|
+
- `IField` (FieldWrapper) → folded into `IAutoFieldProps` locally
|
|
83
|
+
(`requestFieldData` kept — drives `type-depends-on`).
|
|
84
|
+
- `console.log` debug calls removed; `useWhyDidYouUpdate` kept
|
|
85
|
+
(reqraft has the hook).
|
|
86
|
+
- `allowSaving`/`showSavedValues` props **kept in the interface** but
|
|
87
|
+
inert (saved-values infra is IDE-only) — documented as a seam.
|
|
88
|
+
|
|
89
|
+
**AllowedValues port seams:** `useSavedValues` → empty list (prop kept,
|
|
90
|
+
inert); `useSubscriptionEvents` (CONNECTION_DELETED) → dropped;
|
|
91
|
+
`ConnectionManagement` per-item actions → dropped (actions = []);
|
|
92
|
+
`Select` → `SelectFormField` (`items`, single-arg onChange adapter).
|
|
93
|
+
|
|
94
|
+
## Consumer reconciliation (the swap's blast radius)
|
|
95
|
+
|
|
96
|
+
- `Field.tsx` auto/any case → new API (`defaultType`, 2-arg onChange
|
|
97
|
+
adapter).
|
|
98
|
+
- `FormEngine` → IDE Options model: `allowFunctions` from
|
|
99
|
+
`supports_expressions`, `isFunction={other.is_expression}`,
|
|
100
|
+
`isDefaultFunction` from `default_view`, 4-arg `handleValueChange`
|
|
101
|
+
where the **4th arg** (not a value wrapper) drives `is_expression`.
|
|
102
|
+
- `builder/index.tsx` — call sites already verbatim-IDE-shaped
|
|
103
|
+
(`component={auto}`, 4-arg onChange); stale `as any` casts removed
|
|
104
|
+
where signatures now match.
|
|
105
|
+
- `ExpressionField` stays exported with its stories (the NET-NEW DPQL
|
|
106
|
+
text mode shell) but is no longer rendered by TemplateField.
|
|
107
|
+
**Follow-up decision for verification:** whether FormEngine-level
|
|
108
|
+
expression fields should regain the Text/DPQL mode via ExpressionField
|
|
109
|
+
chrome, or stay IDE-verbatim (bare builder).
|
|
110
|
+
|
|
111
|
+
## Phases
|
|
112
|
+
|
|
113
|
+
### Phase 1 — verbatim port + ported tests — DONE (2026-06-10)
|
|
114
|
+
|
|
115
|
+
- [x] `getValueOrDefaultValue` exported from validations
|
|
116
|
+
- [x] AllowedValues ported
|
|
117
|
+
- [x] auto.tsx ported verbatim (seams above)
|
|
118
|
+
- [x] template.tsx ported verbatim (seams above)
|
|
119
|
+
- [x] Field.tsx + FormEngine + builder reconciled
|
|
120
|
+
- [x] IDE Template stories ported (offline: `templates.json` +
|
|
121
|
+
`multiLevelTemplates.json` fixtures copied; `_tests*` helpers
|
|
122
|
+
inlined per the builder-stories pattern)
|
|
123
|
+
- [x] IDE Auto stories ported (offline; saved-values/connection
|
|
124
|
+
stories adapted or dropped per seams)
|
|
125
|
+
- [x] **Drift fixes surfaced by the ported tests** (the whole point of
|
|
126
|
+
porting the IDE tests):
|
|
127
|
+
- `filterTemplatesByType` — reqraft used naive badge equality;
|
|
128
|
+
replaced with the IDE verbatim (`areQorusTypesCompatible`
|
|
129
|
+
compat + top-level groups always kept). String fields now see
|
|
130
|
+
ALL templates (string accepts `any`), int sees int, etc.
|
|
131
|
+
- `NumberFormField` — gained the IDE's templates-dropdown wrap
|
|
132
|
+
(focus-opened template list); plain input unchanged without
|
|
133
|
+
templates.
|
|
134
|
+
- IDE `arrayAuto` ported verbatim as `ArrayAuto`
|
|
135
|
+
(`fields/array/ArrayAuto.tsx`) — panel-per-item with
|
|
136
|
+
`TemplateField component={auto}` per item + "Add new item"
|
|
137
|
+
button; the ported auto uses it. reqraft's compact
|
|
138
|
+
`ArrayAutoField` (renderItem seam) stays for `Field.tsx`.
|
|
139
|
+
- [x] GATE: ported play tests **37/37**; 1:1 screenshots vs :6007
|
|
140
|
+
(TemplateWithFunctionValue, nested-function, type-picker 14,
|
|
141
|
+
ListWithElementType, allowed values — differences are
|
|
142
|
+
mock-vs-live catalogue content only). jest 268/268, eslint
|
|
143
|
+
clean, `build:test:prod` clean.
|
|
144
|
+
|
|
145
|
+
### Phase 2 — regression reconciliation — DONE (2026-06-10)
|
|
146
|
+
|
|
147
|
+
- [x] jest suite green (268/268)
|
|
148
|
+
- [x] full storybook suite green — **230/230, including the usually
|
|
149
|
+
flaky `OnValidityChange`** (the 14/9 type-picker badges and
|
|
150
|
+
`auto` + "Please select data type" assertions kept)
|
|
151
|
+
- [x] Reconciliation fixes:
|
|
152
|
+
- auto gained a `long-string` alias in the string case (reqraft
|
|
153
|
+
FormField vocabulary; the only reqraft-only `ui_type` in real
|
|
154
|
+
use — evidence: story grep).
|
|
155
|
+
- `OnValidityChange` play now awaits the textarea (the IDE-style
|
|
156
|
+
auto resolves its type in a mount effect, one tick after
|
|
157
|
+
validity is first reported) — also de-flakes the known flake.
|
|
158
|
+
- Ported builder: `?.` hardening on `filterTemplatesFunc`'s
|
|
159
|
+
`items.filter` — with no templates at all (FormEngine,
|
|
160
|
+
templates off) the IDE original crashes on `{}.items.filter`
|
|
161
|
+
(latent IDE bug; it always has fetched templates).
|
|
162
|
+
- `ExpressionField` stays exported with its stories (DPQL text
|
|
163
|
+
mode); FormEngine now routes expressions through the IDE
|
|
164
|
+
model (bare builder via TemplateField `isFunction`) — its
|
|
165
|
+
`ViaFormEngine` story passes through the new path.
|
|
166
|
+
|
|
167
|
+
### Phase 3 — small-fields audit — DONE (2026-06-10)
|
|
168
|
+
|
|
169
|
+
- [x] `byte-size` — already structurally verbatim (Number + unit
|
|
170
|
+
Select); aligned the unit list to the IDE's exact `KiB`/`MiB`
|
|
171
|
+
(GiB/TiB were a FORM_FIELD_EXTRAS addition — trimmed for 1:1,
|
|
172
|
+
can be re-added post-parity) and unfixed the unit select so it
|
|
173
|
+
stretches like the IDE's. The IDE's field-level `useMount`
|
|
174
|
+
default-value push stays out (defaults are FormEngine-level in
|
|
175
|
+
reqraft). IDE ByteSize stories are smoke-only — no play tests
|
|
176
|
+
to port.
|
|
177
|
+
- [x] `url` — **replaced verbatim**: protocol Select + `://` + address
|
|
178
|
+
(with the IDE's `getProtocol`/`getAddress` splitting). The
|
|
179
|
+
FORM_FIELD_EXTRAS single-input version is superseded per this
|
|
180
|
+
batch's mandate. Seams: the `qorus_instance`-gated remote
|
|
181
|
+
protocols fetch dropped (`protocols` prop kept, IDE default
|
|
182
|
+
list); the `://` label rendered as the muted paragraph the IDE's
|
|
183
|
+
StringField produces. `Field.stories` Url play updated to the
|
|
184
|
+
new structure. No IDE play tests exist for url.
|
|
185
|
+
- [x] `multi-select` — portable IDE behaviours brought over: selected
|
|
186
|
+
values missing from the allowed list still render as chips, `*`
|
|
187
|
+
wildcard collapses the selection + disables other items,
|
|
188
|
+
wrap/tooltip item props, `showNoItemsMessage={false}`,
|
|
189
|
+
`selectorProps={{useTargetWidth:false}}`, `selectedItemSize`.
|
|
190
|
+
The IDE's editor dialog / FieldEnhancer `reference` machinery is
|
|
191
|
+
app-coupled — not ported. IDE MultiSelect stories are smoke-only.
|
|
192
|
+
- [x] `schema-definition` — drift-checked; the Options→FormEngine
|
|
193
|
+
adaptation stays. Ported the two applicable IDE play tests:
|
|
194
|
+
**Sandboxed** (untrusted caller → no Advanced tab) and
|
|
195
|
+
**WithValidationBanner** (name mismatch banner + "Sync name").
|
|
196
|
+
- [x] GATE: full storybook suite **232/232**, jest 268/268, eslint +
|
|
197
|
+
`build:test:prod` clean.
|
|
198
|
+
|
|
199
|
+
### Follow-up — top-level ExpressionField re-wrap — DONE (2026-06-11)
|
|
200
|
+
|
|
201
|
+
Resolves the "DPQL text mode unrouted" open decision (user picked
|
|
202
|
+
re-wrap). One additive seam, default = IDE-verbatim:
|
|
203
|
+
|
|
204
|
+
- [x] `TemplateField` gained **`allowTextExpressions`** — when set, the
|
|
205
|
+
expression branch renders the `ExpressionField` shell (Visual =
|
|
206
|
+
the same ported builder, Text = the DPQL editor) instead of the
|
|
207
|
+
IDE's bare builder. `handleExpressionChange` serves both (the
|
|
208
|
+
shell now emits the identical `(value, remove)` contract).
|
|
209
|
+
- [x] `FormEngine` sets it on its TemplateField (opt out per form via
|
|
210
|
+
`templateFieldProps={{ allowTextExpressions: false }}`). Nested
|
|
211
|
+
operands (builder arguments, ArrayAuto items) never receive the
|
|
212
|
+
prop — they stay IDE-verbatim bare builder, so the ported
|
|
213
|
+
Template/Auto stories remain 1:1 vs :6007.
|
|
214
|
+
- [x] `ExpressionField` upgrades: `onChange` threads the builder's
|
|
215
|
+
`remove` (exit-expression-mode now works from the shell);
|
|
216
|
+
`localTemplates` + `serverHandled` pass through to the builder.
|
|
217
|
+
- [x] **Live stories** (mock LSP): `ViaFormEngineTextMode` (serialize
|
|
218
|
+
direction — switching to Text seeds the editor from the stored
|
|
219
|
+
AST) and `ViaFormEngineTextTyping` (parse direction — typing
|
|
220
|
+
DPQL lands in the form value with `is_expression` via the 4-arg
|
|
221
|
+
flow). `ViaFormEngine` extended to assert the Visual/Text toggle.
|
|
222
|
+
Play-test note: synthetic keystrokes only land in an EMPTY Slate
|
|
223
|
+
document — hence the typing story starts from an empty
|
|
224
|
+
expression; the seeded story asserts content, not keystrokes.
|
|
225
|
+
- [x] GATE: full storybook suite **234/234 twice in a row**, jest
|
|
226
|
+
268/268, eslint + `build:test:prod` clean. Mock-fidelity note:
|
|
227
|
+
entering Text mode re-parses the serialized text (parse-on-edit
|
|
228
|
+
design); the mock's echo-parse makes the preview look degraded —
|
|
229
|
+
the real `dpql/parse` round-trips the AST losslessly.
|
|
230
|
+
|
|
231
|
+
### STOP — user verifies in browser before commit
|
|
232
|
+
|
|
233
|
+
`VERIFY.local.md` gets the story-by-story click-through; reqraft
|
|
234
|
+
storybook on :6011 side-by-side with qorus-ide :6007.
|