@qoretechnologies/reqraft 0.10.62 → 0.10.63-pr.142.g0b675cd
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/README.md +21 -1
- package/dist/components/Description/describedControl.d.ts +48 -0
- package/dist/components/Description/describedControl.d.ts.map +1 -0
- package/dist/components/Description/describedControl.js +81 -0
- package/dist/components/Description/describedControl.js.map +1 -0
- package/dist/components/Description/index.d.ts.map +1 -1
- package/dist/components/Description/index.js +3 -2
- package/dist/components/Description/index.js.map +1 -1
- package/dist/components/colorValue/colorValue.d.ts +59 -0
- package/dist/components/colorValue/colorValue.d.ts.map +1 -0
- package/dist/components/colorValue/colorValue.js +245 -0
- package/dist/components/colorValue/colorValue.js.map +1 -0
- package/dist/components/colorValue/index.d.ts +34 -0
- package/dist/components/colorValue/index.d.ts.map +1 -0
- package/dist/components/colorValue/index.js +136 -0
- package/dist/components/colorValue/index.js.map +1 -0
- package/dist/components/colorValue/labels.d.ts +12 -0
- package/dist/components/colorValue/labels.d.ts.map +1 -0
- package/dist/components/colorValue/labels.js +11 -0
- package/dist/components/colorValue/labels.js.map +1 -0
- package/dist/components/composer/Composer.d.ts +1 -1
- package/dist/components/composer/Composer.d.ts.map +1 -1
- package/dist/components/composer/Composer.js +2 -2
- package/dist/components/composer/Composer.js.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +10 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +30 -13
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.js +11 -6
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +47 -8
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
- package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +151 -83
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +29 -3
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +34 -1
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +487 -87
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
- package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
- package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
- package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +24 -3
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +19 -0
- package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowContext.js.map +1 -1
- package/dist/components/form/engine/compactRowStyles.d.ts +0 -1
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +12 -20
- package/dist/components/form/engine/compactRowStyles.js.map +1 -1
- package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
- package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
- package/dist/components/form/engine/compactToolbarColors.js +21 -0
- package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +24 -8
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +77 -109
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/readFirstColors.d.ts +30 -0
- package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
- package/dist/components/form/engine/readFirstColors.js +51 -0
- package/dist/components/form/engine/readFirstColors.js.map +1 -0
- package/dist/components/form/engine/rowFocus.d.ts +2 -0
- package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
- package/dist/components/form/engine/rowFocus.js +26 -3
- package/dist/components/form/engine/rowFocus.js.map +1 -1
- package/dist/components/form/engine/typeChoices.d.ts +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.js +2 -1
- package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
- package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
- package/dist/components/form/engine/variants/variantParts.js +25 -17
- package/dist/components/form/engine/variants/variantParts.js.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.js +3 -3
- package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +41 -3
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +396 -99
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
- package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
- package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js +4 -2
- package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +24 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +121 -77
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/builder/item.d.ts +6 -2
- package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/item.js +19 -5
- package/dist/components/form/expressions/builder/item.js.map +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
- package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
- package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
- package/dist/components/form/expressions/expressionOperands.js +97 -0
- package/dist/components/form/expressions/expressionOperands.js.map +1 -0
- package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
- package/dist/components/form/expressions/mockExpressions.js +22 -5
- package/dist/components/form/expressions/mockExpressions.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +35 -9
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
- package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
- package/dist/components/form/expressions/textOfExpression.js +37 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
- package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
- package/dist/components/form/expressions/useExpressionType.js +181 -0
- package/dist/components/form/expressions/useExpressionType.js.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.js +7 -7
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +20 -7
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.js +24 -0
- package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
- package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +81 -36
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
- package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
- package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
- package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
- package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
- package/dist/components/form/fields/binary/Binary.js +23 -3
- package/dist/components/form/fields/binary/Binary.js.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
- package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.js +9 -1
- package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
- package/dist/components/form/fields/color/Color.d.ts +103 -16
- package/dist/components/form/fields/color/Color.d.ts.map +1 -1
- package/dist/components/form/fields/color/Color.js +611 -16
- package/dist/components/form/fields/color/Color.js.map +1 -1
- package/dist/components/form/fields/emittedValues.d.ts +34 -3
- package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
- package/dist/components/form/fields/emittedValues.js +24 -1
- package/dist/components/form/fields/emittedValues.js.map +1 -1
- package/dist/components/form/fields/file/File.d.ts +1 -1
- package/dist/components/form/fields/file/File.d.ts.map +1 -1
- package/dist/components/form/fields/file/File.js +4 -2
- package/dist/components/form/fields/file/File.js.map +1 -1
- package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +17 -3
- package/dist/components/form/fields/long-string/LongString.js.map +1 -1
- package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +6 -0
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +41 -6
- package/dist/components/form/fields/number/Number.js.map +1 -1
- package/dist/components/form/fields/object/Object.d.ts +1 -1
- package/dist/components/form/fields/object/Object.d.ts.map +1 -1
- package/dist/components/form/fields/object/Object.js +4 -2
- package/dist/components/form/fields/object/Object.js.map +1 -1
- package/dist/components/form/fields/pendingEdit.d.ts +52 -0
- package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
- package/dist/components/form/fields/pendingEdit.js +79 -0
- package/dist/components/form/fields/pendingEdit.js.map +1 -0
- package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +190 -81
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
- package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/index.js +8 -4
- package/dist/components/form/fields/schema-definition/index.js.map +1 -1
- package/dist/components/form/fields/select/Select.d.ts +2 -0
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +19 -10
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.js +8 -2
- package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
- package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
- package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
- package/dist/components/form/fields/select/unavailableRow.js +55 -0
- package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +5 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +11 -4
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
- package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
- package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
- package/dist/components/form/fields/template/TemplateField.d.ts +83 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +535 -85
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
- package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateText.js +8 -4
- package/dist/components/form/fields/template/TemplateText.js.map +1 -1
- package/dist/components/form/fields/template/writtenAsText.d.ts +55 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +188 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +10 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +23 -1
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.js +19 -7
- package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
- package/dist/components/log/Log.d.ts.map +1 -1
- package/dist/components/log/Log.js +15 -7
- package/dist/components/log/Log.js.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.js +19 -10
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
- package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
- package/dist/components/smartEditor/CompletionMenu.js +196 -0
- package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
- package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
- package/dist/components/smartEditor/MarkdownDoc.js +1 -1
- package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
- package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
- package/dist/components/smartEditor/SmartEditor.js +51 -136
- package/dist/components/smartEditor/SmartEditor.js.map +1 -1
- package/dist/components/smartEditor/completionStyle.d.ts +27 -0
- package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
- package/dist/components/smartEditor/completionStyle.js +66 -0
- package/dist/components/smartEditor/completionStyle.js.map +1 -0
- package/dist/components/smartEditor/index.d.ts +5 -1
- package/dist/components/smartEditor/index.d.ts.map +1 -1
- package/dist/components/smartEditor/index.js +19 -1
- package/dist/components/smartEditor/index.js.map +1 -1
- package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
- package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
- package/dist/components/smartEditor/templateCompletions.js +94 -0
- package/dist/components/smartEditor/templateCompletions.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +12 -1
- package/dist/components/smartEditor/types.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
- package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
- package/dist/components/smartEditor/useLspHover.d.ts +22 -7
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspHover.js +86 -17
- package/dist/components/smartEditor/useLspHover.js.map +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts +6 -0
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +7 -6
- package/dist/components/smartEditor/useLspSession.js.map +1 -1
- package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
- package/dist/components/supportTicket/AttachmentChips.js +15 -5
- package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +27 -6
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
- package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
- package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketHeader.js +20 -2
- package/dist/components/supportTicket/TicketHeader.js.map +1 -1
- package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +9 -4
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
- package/dist/components/ticketThread/TicketThread.js +36 -11
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/descriptionTooltip.d.ts +43 -0
- package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
- package/dist/helpers/descriptionTooltip.js +70 -0
- package/dist/helpers/descriptionTooltip.js.map +1 -0
- package/dist/helpers/domProps.d.ts +5 -0
- package/dist/helpers/domProps.d.ts.map +1 -0
- package/dist/helpers/domProps.js +47 -0
- package/dist/helpers/domProps.js.map +1 -0
- package/dist/helpers/expressions.d.ts +107 -2
- package/dist/helpers/expressions.d.ts.map +1 -1
- package/dist/helpers/expressions.js +223 -8
- package/dist/helpers/expressions.js.map +1 -1
- package/dist/helpers/hoveringPointer.d.ts +26 -0
- package/dist/helpers/hoveringPointer.d.ts.map +1 -0
- package/dist/helpers/hoveringPointer.js +29 -0
- package/dist/helpers/hoveringPointer.js.map +1 -0
- package/dist/helpers/markdownText.d.ts +14 -0
- package/dist/helpers/markdownText.d.ts.map +1 -0
- package/dist/helpers/markdownText.js +160 -0
- package/dist/helpers/markdownText.js.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.js +262 -0
- package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
- package/dist/helpers/readableColors.d.ts +36 -0
- package/dist/helpers/readableColors.d.ts.map +1 -0
- package/dist/helpers/readableColors.js +116 -0
- package/dist/helpers/readableColors.js.map +1 -0
- package/dist/helpers/templateItems.d.ts +2 -2
- package/dist/helpers/templateItems.d.ts.map +1 -1
- package/dist/helpers/templateItems.js +6 -4
- package/dist/helpers/templateItems.js.map +1 -1
- package/dist/helpers/templates.d.ts +26 -1
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +41 -6
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts +9 -0
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +139 -33
- package/dist/helpers/validations.js.map +1 -1
- package/dist/hooks/useQorusTypes.d.ts +7 -15
- package/dist/hooks/useQorusTypes.d.ts.map +1 -1
- package/dist/hooks/useQorusTypes.js +25 -166
- package/dist/hooks/useQorusTypes.js.map +1 -1
- package/dist/hooks/useReadableIntentShade.d.ts +9 -0
- package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
- package/dist/hooks/useReadableIntentShade.js +23 -0
- package/dist/hooks/useReadableIntentShade.js.map +1 -0
- package/dist/hooks/useReadableOpacity.d.ts +6 -0
- package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
- package/dist/hooks/useReadableOpacity.js +17 -0
- package/dist/hooks/useReadableOpacity.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
- package/dist/tracking/ui/ExperimentCard.js +26 -10
- package/dist/tracking/ui/ExperimentCard.js.map +1 -1
- package/dist/tracking/ui/card.d.ts +2 -2
- package/dist/tracking/ui/card.d.ts.map +1 -1
- package/dist/tracking/ui/card.js +2 -2
- package/dist/tracking/ui/card.js.map +1 -1
- package/dist/tracking/ui/readable.d.ts +14 -0
- package/dist/tracking/ui/readable.d.ts.map +1 -0
- package/dist/tracking/ui/readable.js +60 -0
- package/dist/tracking/ui/readable.js.map +1 -0
- package/package.json +14 -5
- package/.claude/CLAUDE.md +0 -317
- package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
- package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
- package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
- package/.tasks/FIELD_STACK_REPORT.md +0 -234
- package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
- package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
- package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
- package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
- package/.tasks/INDEX.md +0 -111
- package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
- package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
- package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
- package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
- package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
- package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
- package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
- package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
- package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
- package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
- package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
- package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
- package/CODE_OF_CONDUCT.md +0 -105
- package/CONTRIBUTING.MD +0 -78
- package/SECURITY.md +0 -3
- package/chromatic.config.json +0 -5
- package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
- package/design/COMPACT_INFO_DISPLAY.md +0 -87
- package/design/COMPACT_PARITY.md +0 -85
- package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
- package/design/FORM_ENGINE_COMPACT.md +0 -300
- package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
- package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
- package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
- package/design/IDE_INTEGRATION.md +0 -64
- package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
- package/design/SELECT_DIALOG_FLOOR.md +0 -86
- package/design/SMART_EDITOR_UX.md +0 -438
- package/design/TRACKING.md +0 -290
- package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
- package/src/components/Description/index.tsx +0 -254
- package/src/components/Description/markdownRendererContext.tsx +0 -29
- package/src/components/FocusedEditing/index.tsx +0 -50
- package/src/components/codeSize/index.tsx +0 -79
- package/src/components/composer/Composer.stories.tsx +0 -238
- package/src/components/composer/Composer.tsx +0 -554
- package/src/components/composer/helpers.ts +0 -74
- package/src/components/composer/index.ts +0 -2
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
- package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
- package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
- package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
- package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
- package/src/components/dpqlEditor/dpqlTags.ts +0 -114
- package/src/components/dpqlEditor/index.ts +0 -41
- package/src/components/dpqlEditor/types.ts +0 -203
- package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
- package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
- package/src/components/form/engine/CompactRow.tsx +0 -2620
- package/src/components/form/engine/CompactToolbar.tsx +0 -330
- package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
- package/src/components/form/engine/FormEngine.tsx +0 -4569
- package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
- package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
- package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
- package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
- package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
- package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
- package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
- package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
- package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
- package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
- package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
- package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
- package/src/components/form/engine/compactRowContext.ts +0 -148
- package/src/components/form/engine/compactRowStyles.ts +0 -898
- package/src/components/form/engine/compactToolbarContext.ts +0 -69
- package/src/components/form/engine/optionActions.ts +0 -128
- package/src/components/form/engine/optionsContext.ts +0 -24
- package/src/components/form/engine/readFirst.ts +0 -1077
- package/src/components/form/engine/rendererTypes.ts +0 -107
- package/src/components/form/engine/revealRow.ts +0 -123
- package/src/components/form/engine/rowFocus.ts +0 -101
- package/src/components/form/engine/rowMenuContext.ts +0 -159
- package/src/components/form/engine/rowOpenPicker.ts +0 -27
- package/src/components/form/engine/typeChoices.ts +0 -63
- package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
- package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
- package/src/components/form/engine/variants/VariantCards.tsx +0 -212
- package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
- package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
- package/src/components/form/engine/variants/focusDemo.ts +0 -145
- package/src/components/form/engine/variants/variantModel.ts +0 -223
- package/src/components/form/engine/variants/variantParts.tsx +0 -313
- package/src/components/form/expressions/DpqlRendering.tsx +0 -85
- package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
- package/src/components/form/expressions/ExpressionField.tsx +0 -503
- package/src/components/form/expressions/argumentPresence.ts +0 -213
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
- package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
- package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
- package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
- package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
- package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
- package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
- package/src/components/form/expressions/builder/index.tsx +0 -1545
- package/src/components/form/expressions/builder/item.tsx +0 -89
- package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
- package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
- package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
- package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
- package/src/components/form/expressions/mockExpressions.ts +0 -317
- package/src/components/form/expressions/renderExpressionToText.ts +0 -137
- package/src/components/form/expressions/types.ts +0 -110
- package/src/components/form/expressions/useExpressions.ts +0 -101
- package/src/components/form/expressions/useRenderExpression.ts +0 -165
- package/src/components/form/fields/Field.stories.tsx +0 -143
- package/src/components/form/fields/Field.tsx +0 -732
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
- package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
- package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
- package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
- package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
- package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
- package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
- package/src/components/form/fields/binary/Binary.tsx +0 -91
- package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
- package/src/components/form/fields/boolean/Boolean.tsx +0 -34
- package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
- package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
- package/src/components/form/fields/color/Color.stories.tsx +0 -99
- package/src/components/form/fields/color/Color.tsx +0 -46
- package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
- package/src/components/form/fields/cron/Cron.tsx +0 -80
- package/src/components/form/fields/date/Date.stories.tsx +0 -77
- package/src/components/form/fields/date/Date.tsx +0 -55
- package/src/components/form/fields/emittedValues.ts +0 -70
- package/src/components/form/fields/file/File.stories.tsx +0 -161
- package/src/components/form/fields/file/File.tsx +0 -227
- package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
- package/src/components/form/fields/long-string/LongString.tsx +0 -130
- package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
- package/src/components/form/fields/markdown/Markdown.tsx +0 -81
- package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
- package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
- package/src/components/form/fields/number/Number.stories.tsx +0 -159
- package/src/components/form/fields/number/Number.tsx +0 -160
- package/src/components/form/fields/object/Object.stories.tsx +0 -398
- package/src/components/form/fields/object/Object.tsx +0 -255
- package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
- package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
- package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
- package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
- package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
- package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
- package/src/components/form/fields/rich-text/RichText.tsx +0 -537
- package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
- package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
- package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
- package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
- package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
- package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
- package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
- package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
- package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
- package/src/components/form/fields/schema-definition/catalog.ts +0 -237
- package/src/components/form/fields/schema-definition/helpers.ts +0 -90
- package/src/components/form/fields/schema-definition/index.tsx +0 -418
- package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
- package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
- package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
- package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
- package/src/components/form/fields/schema-definition/types.ts +0 -185
- package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
- package/src/components/form/fields/select/Select.stories.tsx +0 -872
- package/src/components/form/fields/select/Select.tsx +0 -624
- package/src/components/form/fields/select/SelectCollection.tsx +0 -594
- package/src/components/form/fields/string/String.stories.tsx +0 -86
- package/src/components/form/fields/string/String.tsx +0 -43
- package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
- package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
- package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
- package/src/components/form/fields/template/TemplateField.tsx +0 -1717
- package/src/components/form/fields/template/TemplateText.tsx +0 -115
- package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
- package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
- package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
- package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
- package/src/components/form/fields/timeout/Timeout.tsx +0 -87
- package/src/components/form/fields/url/Url.stories.tsx +0 -94
- package/src/components/form/fields/url/Url.tsx +0 -85
- package/src/components/form/index.tsx +0 -47
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
- package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
- package/src/components/imageLightbox/index.ts +0 -1
- package/src/components/log/Log.stories.tsx +0 -333
- package/src/components/log/Log.tsx +0 -285
- package/src/components/menu/Menu.stories.tsx +0 -155
- package/src/components/menu/Menu.tsx +0 -312
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
- package/src/components/qonsoleSmartInput/index.ts +0 -16
- package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
- package/src/components/qonsoleSmartInput/types.ts +0 -133
- package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
- package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
- package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
- package/src/components/searchFilterBar/index.ts +0 -1
- package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
- package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
- package/src/components/smartEditor/SmartEditor.tsx +0 -808
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
- package/src/components/smartEditor/helpers.ts +0 -217
- package/src/components/smartEditor/index.ts +0 -35
- package/src/components/smartEditor/styling.ts +0 -45
- package/src/components/smartEditor/types.ts +0 -211
- package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
- package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
- package/src/components/smartEditor/useLspHover.ts +0 -230
- package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
- package/src/components/smartEditor/useLspSession.ts +0 -231
- package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
- package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
- package/src/components/supportTicket/AttachmentChips.tsx +0 -147
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
- package/src/components/supportTicket/ReferencePicker.tsx +0 -563
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
- package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
- package/src/components/supportTicket/TicketHeader.tsx +0 -247
- package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
- package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
- package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
- package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
- package/src/components/supportTicket/attachmentAccess.ts +0 -97
- package/src/components/supportTicket/fileToAttachment.ts +0 -24
- package/src/components/supportTicket/index.ts +0 -10
- package/src/components/supportTicket/meta.ts +0 -206
- package/src/components/supportTicket/ticketModel.ts +0 -131
- package/src/components/supportTicket/useLoadedImages.ts +0 -73
- package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
- package/src/components/ticketReferences/TicketReferences.tsx +0 -906
- package/src/components/ticketReferences/index.ts +0 -2
- package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
- package/src/components/ticketThread/TicketThread.tsx +0 -719
- package/src/components/ticketThread/index.ts +0 -6
- package/src/contexts/FetchContext.tsx +0 -25
- package/src/contexts/ReqraftContext.tsx +0 -9
- package/src/contexts/StorageContext.tsx +0 -33
- package/src/global.d.ts +0 -4
- package/src/helpers/allowedValues.ts +0 -249
- package/src/helpers/choiceChip.ts +0 -227
- package/src/helpers/common.ts +0 -326
- package/src/helpers/dpqlDetection.ts +0 -209
- package/src/helpers/expressions.ts +0 -140
- package/src/helpers/optionUiTypes.ts +0 -199
- package/src/helpers/options.ts +0 -150
- package/src/helpers/providerValue.ts +0 -125
- package/src/helpers/scrollbar.ts +0 -32
- package/src/helpers/singleLineString.ts +0 -61
- package/src/helpers/templateItems.ts +0 -81
- package/src/helpers/templateText.ts +0 -350
- package/src/helpers/templates.ts +0 -602
- package/src/helpers/validations.ts +0 -2085
- package/src/hooks/useArgSchema.ts +0 -37
- package/src/hooks/useCoarsePointer.ts +0 -30
- package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
- package/src/hooks/useFetch/useFetch.tsx +0 -154
- package/src/hooks/usePhoneViewport.ts +0 -34
- package/src/hooks/useQorusTypes.ts +0 -233
- package/src/hooks/useReqraftProperty.ts +0 -16
- package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
- package/src/hooks/useStorage/useStorage.ts +0 -35
- package/src/hooks/useTemplates.ts +0 -123
- package/src/hooks/useValidation.ts +0 -9
- package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
- package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
- package/src/hooks/useWhyDidYouUpdate.ts +0 -38
- package/src/index.tsx +0 -86
- package/src/providers/FetchProvider.tsx +0 -40
- package/src/providers/ReqraftProvider.tsx +0 -52
- package/src/providers/StorageProvider.tsx +0 -131
- package/src/stores/currentUser/currentUser.stories.tsx +0 -100
- package/src/stores/currentUser/currentUser.tsx +0 -94
- package/src/stories/Data/fileFieldArgSchema.json +0 -86
- package/src/stories/Tests/utils.ts +0 -320
- package/src/stories/storyNetwork.ts +0 -92
- package/src/stories/tracking.tsx +0 -206
- package/src/tracking/browser/attach.ts +0 -186
- package/src/tracking/browser/env.ts +0 -78
- package/src/tracking/core/consent.ts +0 -37
- package/src/tracking/core/engagement.ts +0 -47
- package/src/tracking/core/experiments.ts +0 -258
- package/src/tracking/core/hash.ts +0 -26
- package/src/tracking/core/ids.ts +0 -25
- package/src/tracking/core/observable.ts +0 -23
- package/src/tracking/core/queue.ts +0 -131
- package/src/tracking/core/sections.ts +0 -166
- package/src/tracking/core/storage.ts +0 -69
- package/src/tracking/core/tracker.ts +0 -417
- package/src/tracking/core/types.ts +0 -162
- package/src/tracking/core/utm.ts +0 -23
- package/src/tracking/index.ts +0 -72
- package/src/tracking/markup.ts +0 -17
- package/src/tracking/react/Experiment.tsx +0 -44
- package/src/tracking/react/TrackingProvider.tsx +0 -56
- package/src/tracking/react/hooks.ts +0 -106
- package/src/tracking/react/index.ts +0 -13
- package/src/tracking/testing.ts +0 -108
- package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
- package/src/tracking/ui/ExperimentCard.tsx +0 -667
- package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
- package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
- package/src/tracking/ui/anchor.ts +0 -180
- package/src/tracking/ui/card.ts +0 -464
- package/src/tracking/ui/client.ts +0 -117
- package/src/tracking/ui/index.ts +0 -77
- package/src/tracking/ui/types.ts +0 -110
- package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
- package/src/types/Form.ts +0 -29
- package/src/types.ts +0 -14
- package/src/utils/datetime.ts +0 -10
- package/src/utils/fetch.ts +0 -457
- package/src/utils/lspClient.ts +0 -711
- package/src/utils/lspClient.types.ts +0 -211
- package/src/utils/queryUnlessCancelled.ts +0 -28
- package/src/utils/websocket.ts +0 -293
- package/vite.config.ts +0 -58
- package/vitest.config.ts +0 -69
package/design/COMPACT_PARITY.md
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# Compact mode — options-schema parity matrix
|
|
2
|
-
|
|
3
|
-
Answers the call's requirement: *"we have to make sure that we support everything that the
|
|
4
|
-
options support"* (Filip, 2026-06-10). Capability list is taken from the authoritative schema
|
|
5
|
-
type (`@qoretechnologies/ts-toolkit` `forms.d.ts` — `TQorusFormFieldSchema`) plus engine-level
|
|
6
|
-
props; IDE usage was verified by grepping `qorus-ide` (file counts in brackets where relevant).
|
|
7
|
-
|
|
8
|
-
Legend: ✅ works + covered · 🟡 works, coverage thin/indirect · 🔴 gap (not supported or untested)
|
|
9
|
-
|
|
10
|
-
## Identity & display
|
|
11
|
-
|
|
12
|
-
| Capability | Compact behaviour | Coverage |
|
|
13
|
-
|---|---|---|
|
|
14
|
-
| `display_name` | row label | ✅ everywhere |
|
|
15
|
-
| `short_desc` | hover title + the row's ⓘ info panel (stripe-expand display, **decided 2026-06-11**: losers + `compactInfoDisplay` prop deleted) | ✅ `CompactShowcase`, `CompactFieldTypes` "Descriptions & messages" |
|
|
16
|
-
| `desc` (markdown) | `?` → help dialog | ✅ `CompactHelpDialog` |
|
|
17
|
-
| `group` + `groups` prop | collapsible group panels + badges | ✅ `Compact`, `CompactBasic` |
|
|
18
|
-
| `sort` | ✅ fields sort by `schema.sort` (`availableOptions`) — verified | ✅ `CompactSortOrder` (declared out of order, renders 1-2-3) |
|
|
19
|
-
| `icon` / `image` / `badge` / `actions` / `intent` / `tags` (field-level chrome) | ✅ **decided + built** (2026-06-10): rows render `icon`/`image` before the label and `intent` as the edge stripe (card border tints too); `badge` / `actions` / `tags` render on the expanded edit card header — nothing the schema sends is silently dropped | ✅ `CompactFieldTypes` "Field chrome" group (incl. a full-chrome combo) |
|
|
20
|
-
|
|
21
|
-
## Types & values
|
|
22
|
-
|
|
23
|
-
| Capability | Compact behaviour | Coverage |
|
|
24
|
-
|---|---|---|
|
|
25
|
-
| full `TQorusType` union | read-first values per family | ✅ `CompactFieldTypes` catalog |
|
|
26
|
-
| colour / file / hash read-first | swatch+hex · filename+size · count + structured tree | ✅ `CompactFieldTypes`, `CompactBasic`, unit tests |
|
|
27
|
-
| `arg_schema` (nested form) | card editor + structured preview | ✅ `CompactBasic`, `CompactHashStructuredView` |
|
|
28
|
-
| YAML-serialized values | summarised, not raw `%YAML` | ✅ `CompactListYamlField`, unit tests |
|
|
29
|
-
| `default_value` (+`_desc`, `_display_name`) | seeded by engine; `default_value_desc` note surfaces in the row's info panel (Tier 2, behind ⓘ) | ✅ `CompactReadonlyDefaultFix`, `CompactShowcase` (toggle journey) |
|
|
30
|
-
| `element_type` / typed lists | read-first join | 🟡 display via `CompactFieldTypes`; editing untested |
|
|
31
|
-
|
|
32
|
-
## Validation & requirements
|
|
33
|
-
|
|
34
|
-
| Capability | Compact behaviour | Coverage |
|
|
35
|
-
|---|---|---|
|
|
36
|
-
| `required` | `*`, Required tag, completion meter, Draft/Ready badge | ✅ several stories |
|
|
37
|
-
| `required_groups` | members are **linked** (2026-06-10): unmet members show a "One of: <group>" chip — tap-popover lists siblings (click → scroll + flash, works across panels), hover highlights all members; once satisfied, empty siblings show *"Not set — covered by …"* + Ready transition | ✅ `CompactRequiredGroups` (3 members across 2 panels, full journey) |
|
|
38
|
-
| invalid values | Required tag + banner + filter-to-invalid | ✅ `CompactBasic` (6 invalid) |
|
|
39
|
-
| `messages` (intent) | read rows: Tier-1 (danger/warning) → intent edge-stripe + auto-open info panel; Tier 2 behind the ⓘ toggle; the inline editor suppresses its own message strip (the panel below the editing row is the single renderer) | ✅ `CompactShowcase`, `CompactFieldTypes` "Descriptions & messages" |
|
|
40
|
-
| `rules: ['valid_identifier']` [47 IDE files] | ✅ **wired** (2026-06-10): `validations.ts` maps `rules` → the identifier check; `OptionFieldMessages` now spreads the *field* schema (was the whole map — pre-existing bug). Unknown rule strings are deliberately ignored (documented at the mapping site) | 🟡 `CompactValidIdentifierRule` shows the Draft badge + invalid banner (the rule's *rejection* is asserted in the 3 unit tests, not the play) |
|
|
41
|
-
|
|
42
|
-
## Selection & editing
|
|
43
|
-
|
|
44
|
-
| Capability | Compact behaviour | Coverage |
|
|
45
|
-
|---|---|---|
|
|
46
|
-
| `allowed_values` (+`_creatable`) | display label resolution + real dropdown inline | 🟡 `CompactBasic` asserts the resolved display label (incl. broken values); the inline dropdown *interaction* and the `_creatable` add-path are rendered but not driven by a play |
|
|
47
|
-
| `element_allowed_values` (+creatable) [8] | multi-select display join + card editor with the real multi-select | ✅ `CompactMultiSelectEditing` (open + selection labels; deep add/remove interaction still light) |
|
|
48
|
-
| `multiselect` | — | 🟡 covered via the same story |
|
|
49
|
-
| `supports_templates` / `$config:` | raw template shown in read row; toggle inline | ✅ `CompactBasic` (`$local:test`) |
|
|
50
|
-
| `supports_custom_values` | passed through to editor | 🟡 indirect |
|
|
51
|
-
| `sensitive` [21 IDE files] | read row + hover title mask `••••••` (leak fixed 2026-06-10). Known behaviour: the TemplateField *editor* reveals the value while editing (textarea path — same as the IDE; a `password`-input treatment would be a TemplateField change). Nested sensitive inside the structured hash preview NOT masked (ReqoreDataView has no sensitive concept — upstream candidate) | 🟡 `CompactSensitive` asserts the read-row mask + no page-text leak; the edit-state reveal and the hover-title mask are not asserted (+ unit tests) |
|
|
52
|
-
| `is_expression` values | read row shows "Expression" | 🟡 unit test; expression *editing* story still pending (transport live, deferred by Nick) |
|
|
53
|
-
| `supports_expressions` / `expressions_url` / `server_expression_handling` / `default_view` | passed to editor | 🔴 untested in compact (needs expression transport — now live per Nick) |
|
|
54
|
-
| `op` / operators | ✅ **`operators` prop wired** (2026-06-10 — was a dead internal `useState(undefined)`, unreachable in classic AND compact); operator-bearing fields always card-edit | ✅ `CompactOperators` (selector + WHERE/IS summary) |
|
|
55
|
-
| `app` / `action` (custom template menu for `any`) | `getCustomMenuTemplateItems` wired. **Empty-`any` affordance fixed** (2026-06-11, found via `CompactFieldTypesEditingAllRequired`): `allowCustomValues` is hard-false for `any` (the value's TYPE is picked from the template menu first), so an empty `any` card used to render only a bare ⋮ — read as broken. `TemplateField` now renders the menu trigger as a labelled **"Set value"** button whenever the menu is the field's only control (`hasInputAffordance`); valued fields keep the icon-only ⋮. Toolkit is canonical — the IDE inherits this at adoption. | ✅ `CompactFieldTypesEditingAllRequired` (Set value → Set Custom Value → Text → richtext editor mounts), `CompactAnyType` (valued: card opens) |
|
|
56
|
-
|
|
57
|
-
## Behaviour & lifecycle
|
|
58
|
-
|
|
59
|
-
| Capability | Compact behaviour | Coverage |
|
|
60
|
-
|---|---|---|
|
|
61
|
-
| `preselected` / hidden optionals | rows + search-add + Fields menu | ✅ `CompactFieldsMenu`, `CompactSearchHidden` |
|
|
62
|
-
| `depends_on` (incl. nested arrays) | unmet deps **lock the row**, and the linkage is **navigable** (2026-06-10): the lock's tap-popover lists each blocker with its state (✓/✗, handles `name=value` and any-of arrays; click → scroll + flash), lock hover highlights the blockers, and **fulfilling a dependency flashes the rows it unlocks** | ✅ `CompactBasic` (full lock → locate → fulfil → unlock-flash journey), `CompactOptionDependsOnOptionOrAnotherOption` (any-of), `CompactOptionDependsOnOptionInRequiredGroup` (dep × group interplay), `CompactOnChangeAndDependents`, `CompactShowcase` |
|
|
63
|
-
| `has_dependents` + `on_change: refetch` | dependents reset + refetch event | ✅ `CompactOnChangeAndDependents` |
|
|
64
|
-
| `disabled` / `readonly` | `disabled` **locks the row** (2026-06-10 — previously it opened a dead editor); form-level `readOnly` still opens in view mode (Close); readonly default-fix | ✅ `CompactBasic` (locked-row asserts), `CompactReadOnly`, `CompactReadonlyDefaultFix` |
|
|
65
|
-
| `focusedEditing` | ✅ compact edit cards now have the fullscreen affordance (2026-06-10): a Fullscreen button opens the same `FocusedEditing` modal as classic, with the field's descriptions | ✅ `CompactFocusedEditing` |
|
|
66
|
-
| `get_message` / `return_message` | **out of scope for FormEngine parity.** These keys belong to the IDE's *legacy Field system* (`components/Field/*`, VSCode-era message bus: `postMessage`/`addMessageListener`); the IDE's options form (`systemOptions.tsx` — what FormEngine is the port of) never uses them, and server options schemas don't carry them. They only appear in the schema *type* because it also models legacy field definitions. Porting them = the separate Field-system migration, where the message bus becomes transport-agnostic callbacks (the `optionsLoader` pattern). | n/a |
|
|
67
|
-
| `optionsLoader` (async schema) | loading/error lifecycle | ✅ `CompactOptionsLoader(+Error)` |
|
|
68
|
-
| narrow containers (mobile / drawers) | stacked rows < 480 px measured form width; inline editing full-width | ✅ `CompactShowcaseMobile` (360 px) |
|
|
69
|
-
|
|
70
|
-
## Remaining gaps (2026-06-10, after the coverage batch)
|
|
71
|
-
|
|
72
|
-
Closed in the batch: `rules` wiring (+ the `OptionFieldMessages` field-vs-map spread bug),
|
|
73
|
-
`sensitive` story, operators (prop wiring — it was dead engine-wide — + story), `focusedEditing`
|
|
74
|
-
on compact cards (feature + story), multi-select editing story, `sort` assert.
|
|
75
|
-
|
|
76
|
-
Still open:
|
|
77
|
-
1. **Expression-editing story** — transport is live (localhost:8012); deferred by Nick.
|
|
78
|
-
2. **Nested `sensitive` in the structured hash preview** — `ReqoreDataView` has no sensitive
|
|
79
|
-
concept; upstream candidate. Related: the TemplateField editor reveals sensitive values while
|
|
80
|
-
editing (IDE-parity behaviour; a password-input treatment would be a TemplateField change).
|
|
81
|
-
3. **Deep multi-select interaction** (add/remove via the dropdown) — the story asserts open +
|
|
82
|
-
selection labels only.
|
|
83
|
-
|
|
84
|
-
(`get_message`/`return_message` was initially listed here as a gap — that was wrong; see the
|
|
85
|
-
behaviour table: it's legacy-Field-system scope, not options-form parity.)
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# Expression Builder — verbatim re-port strategy
|
|
2
|
-
|
|
3
|
-
**Status:** locked 2026-06-10. Supersedes the *from-scratch* ExpressionBuilder
|
|
4
|
-
in `design/FORM_ENGINE_EXPRESSIONS.md` (Phases 3/3b/3c/3d). The plumbing
|
|
5
|
-
(catalogue hook, FormEngine `is_expression`, DPQL bridge, validation
|
|
6
|
-
`isFunction` case) from that batch is retained; the visual builder is replaced.
|
|
7
|
-
|
|
8
|
-
## Why we are redoing it
|
|
9
|
-
|
|
10
|
-
The first attempt **reimplemented** the visual builder on reqraft's own
|
|
11
|
-
primitives. That diverged from the team's stated method (Filip, 2026-06-10
|
|
12
|
-
call): *copy the IDE component verbatim — with its dependencies and its tests —
|
|
13
|
-
get it looking and passing 1:1, **then** improve.* The from-scratch version
|
|
14
|
-
never looked like the IDE and cost days of "why does it look worse" iteration —
|
|
15
|
-
exactly the danger Filip named (you can't tell a port bug from a deliberate
|
|
16
|
-
change). Nick on the call: the port "wasn't a good job done."
|
|
17
|
-
|
|
18
|
-
## The blocking finding (why it's not a trivial copy)
|
|
19
|
-
|
|
20
|
-
A verbatim copy of the IDE's `ExpressionBuilder` (1,857 LOC / 9 files) does NOT
|
|
21
|
-
compile against reqraft today, because **reqraft's shared field stack drifted
|
|
22
|
-
from the IDE** ("reqraft wasn't kept up"). Specifically:
|
|
23
|
-
|
|
24
|
-
- **The recursion lives in `TemplateField`, not ExpressionBuilder.** Operands
|
|
25
|
-
render via `<TemplateField component={auto} allowFunctions isFunction={…}>`,
|
|
26
|
-
and TemplateField recurses back into ExpressionBuilder. reqraft's
|
|
27
|
-
TemplateField has **no `allowFunctions`/`isFunction`** — it uses a different
|
|
28
|
-
mechanism (the Phase-1 "Use Expression" menu toggle).
|
|
29
|
-
- Missing helpers: `helpers/expressions` (`getArgumentType`,
|
|
30
|
-
`argumentMatchesType`), `areQorusTypesCompatible`.
|
|
31
|
-
- `validateField` is private (`_validateField`) in reqraft.
|
|
32
|
-
- `SelectFormField` hardcodes `flat={false}` + `intent='info'` (the chip
|
|
33
|
-
problem) — not externally controllable.
|
|
34
|
-
- IDE-only seams that can't come along: `AiAssistanceAction` (AI),
|
|
35
|
-
`render-expression` over the Creator WebSocket (Explain), the hints system.
|
|
36
|
-
|
|
37
|
-
So the proper port = **re-faithful-ize the field stack first, then copy the
|
|
38
|
-
builder.** Decision (user, 2026-06-10): **re-port (option 1)**, not augment.
|
|
39
|
-
|
|
40
|
-
## What is kept from the from-scratch batch
|
|
41
|
-
|
|
42
|
-
- `useExpressions.ts` (catalogue hook — close to the IDE's)
|
|
43
|
-
- `useRenderExpression.ts` (Explain seam — matches the planned `onExplain`/LSP)
|
|
44
|
-
- `types.ts`, FormEngine `is_expression` plumbing, validations `isFunction`
|
|
45
|
-
- **`ExpressionField` DPQL text mode** — NET-NEW (the IDE builder is
|
|
46
|
-
visual-only; DPQL text editing is the whole point of this branch)
|
|
47
|
-
|
|
48
|
-
## What is replaced
|
|
49
|
-
|
|
50
|
-
- `ExpressionBuilder.tsx` (from-scratch) + its stories + the mock-styling work.
|
|
51
|
-
|
|
52
|
-
## Drawbacks (accepted)
|
|
53
|
-
|
|
54
|
-
1. Touches `TemplateField` — load-bearing for the entire form engine + the
|
|
55
|
-
just-landed field migration. Highest-risk surface in the library.
|
|
56
|
-
2. Two expression-on-field models collide (IDE `allowFunctions`/`isFunction`
|
|
57
|
-
vs the Phase-1 toggle); the IDE model wins.
|
|
58
|
-
3. Never truly verbatim — AI dropped, Explain → `onExplain`/LSP seam.
|
|
59
|
-
|
|
60
|
-
*Revised 2026-09-08 — one deliberate departure from the IDE source, in the
|
|
61
|
-
rest-argument operand mount.* The IDE derives an empty rest argument's `type`
|
|
62
|
-
and `defaultType` from the value (undefined when empty), so an empty `bool`
|
|
63
|
-
argument rendered as an untyped `auto` field — a type picker under a label that
|
|
64
|
-
already said "true or false" — and an empty `any` argument never qualified for
|
|
65
|
-
`TemplateField`'s template-selector default, which reads `type`. reqraft now
|
|
66
|
-
falls back to the catalogue's declared `ui_type`, as the first-argument mount
|
|
67
|
-
and the allowed-values branch already did. Flagged by Foxhoundn on the #118
|
|
68
|
-
qlip review; matches the read-only-types direction in qorus-ide#178. The IDE
|
|
69
|
-
inherits it, since it renders reqraft's builder.
|
|
70
|
-
4. Brings the deferred machinery (type-mismatch modals, type-compat) — more
|
|
71
|
-
surface to own.
|
|
72
|
-
5. Follow-on: the IDE must then *consume* reqraft's builder or they drift again.
|
|
73
|
-
|
|
74
|
-
## Phases (Filip's method: copy + tests → 1:1 → improve)
|
|
75
|
-
|
|
76
|
-
- **A — Field-stack parity.** Port verbatim into reqraft (with their IDE
|
|
77
|
-
tests): `helpers/expressions`, `areQorusTypesCompatible`; export
|
|
78
|
-
`validateField`; bring `SelectFormField` to forward `flat`/`intent`; bring
|
|
79
|
-
`TemplateField` to the IDE's `allowFunctions`/`isFunction` mechanism.
|
|
80
|
-
**GATE:** the field-migration stories + jest still pass.
|
|
81
|
-
- **B — Verbatim ExpressionBuilder.** Copy the 9 files + the IDE's stories &
|
|
82
|
-
tests; fix import paths; seam out AI (off) / render-expression (`onExplain`
|
|
83
|
-
prop) / hints (stub). **GATE:** 1:1 vs `:6007`, ported tests pass.
|
|
84
|
-
- **C — Re-wrap reqraft features.** Visual = ported builder, Text =
|
|
85
|
-
`DpqlEditor`, Explain = seam, inside `ExpressionField`; reconcile FormEngine
|
|
86
|
-
`is_expression` to the IDE model. **GATE:** field-holds-expression story.
|
|
87
|
-
- **D — Server (out of reqraft).** `render-expression` over LSP/REST; swap
|
|
88
|
-
`useRenderExpression`. (Filip/Nick file the server issue.)
|
|
89
|
-
- **E — Dedupe (out of scope now).** IDE consumes reqraft's builder.
|
|
90
|
-
|
|
91
|
-
Between every phase: open Storybook, **compare to `:6007`**, fix, then proceed.
|
|
92
|
-
No commits until the user verifies.
|
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
# FormEngine — compact (read-first) mode
|
|
2
|
-
|
|
3
|
-
## What it is
|
|
4
|
-
|
|
5
|
-
`FormEngine` ([`src/components/form/engine/FormEngine.tsx`](../src/components/form/engine/FormEngine.tsx))
|
|
6
|
-
renders an options schema (`IQorusFormSchema`) as a form. It has two layouts:
|
|
7
|
-
|
|
8
|
-
- **Classic** (default) — every option's editor is expanded at once.
|
|
9
|
-
- **Compact (read-first)** — pass `compact` to render each option as a **row showing its current
|
|
10
|
-
value**; clicking a row expands the real editor inline, and a **Done** action collapses it again.
|
|
11
|
-
The form reads as a "configuration summary you drill into" rather than a wall of inputs.
|
|
12
|
-
|
|
13
|
-
Compact mode is purely presentational — editing flows through the **same** machinery as the classic
|
|
14
|
-
layout (templates, `on_change`, validation, dependents). Nothing about the schema, value shape, or
|
|
15
|
-
`onChange` contract changes.
|
|
16
|
-
|
|
17
|
-
## What `compact` adds
|
|
18
|
-
|
|
19
|
-
- **Read-first rows.** Each option shows a formatted summary of its value (`formatOptionValue`):
|
|
20
|
-
booleans as Yes/No, `allowed_values` as their display label, lists as joined item names, rich text
|
|
21
|
-
flattened to plain text, **colours** as their hex/`rgba()` string (with a swatch preview),
|
|
22
|
-
**files** as their filename (with a file icon + muted size), and **hashes** as an "N fields" count.
|
|
23
|
-
Empty options show **Not set**, or **Required — not set** (warning intent) when required.
|
|
24
|
-
- **Hash "view more" preview.** A hash row keeps its "N fields" summary and renders the hash's
|
|
25
|
-
contents beneath it with the **structured tree** (`StructuredDataView` → `ReqoreDataView` — see
|
|
26
|
-
the dedicated section below); whether a row gets a preview at all is gated by `getHashEntries`,
|
|
27
|
-
which recognises `arg_schema` structured forms, serialized-YAML/free-hash values, and schema-less
|
|
28
|
-
hashes whose entries are the server's typed envelopes (`{ type, value }` unwrapped by its strict
|
|
29
|
-
shape, so an entry counts as `value1` rather than "2 fields"). The preview is wrapped in a
|
|
30
|
-
reusable **`ReqraftCollapsibleContent`**: a short hash shows in full, a tall one is clipped behind
|
|
31
|
-
a **gradient "Show more" fade** (a reveal button that surfaces on hover; expanding adds a
|
|
32
|
-
"Show less"). Clicking a value chip (or the row itself) opens the full nested editor — the
|
|
33
|
-
preview is read-first, with the tree's expand/collapse summaries owning their own clicks.
|
|
34
|
-
`ReqraftCollapsibleContent` ([`src/components/collapsible/CollapsibleContent.tsx`](../src/components/collapsible/CollapsibleContent.tsx))
|
|
35
|
-
is a standalone, exported, theme-aware toolkit component (extracted from the IDE's chat-bubble
|
|
36
|
-
`CollapsibleContent` fade-reveal) so the same affordance can be reused elsewhere; the fade colour
|
|
37
|
-
defaults to the Reqore theme surface (overridable via `fadeColor`).
|
|
38
|
-
- **Inline editing for scalars, card for complex fields.** Clicking a row mounts the real field
|
|
39
|
-
(`renderOption`) — the editor is **not** mounted while collapsed, and multiple rows can be open at
|
|
40
|
-
once. *Scalar* fields (string, number, bool, date, colour, selects/allowed-values, …) edit **in
|
|
41
|
-
place inside the row**: the editor replaces the value cell, with a per-row **↺** (when changed) and
|
|
42
|
-
a **✓** to collapse; Escape or clicking the label also collapses. *Complex* fields — anything in
|
|
43
|
-
`COMPACT_COMPLEX_TYPES` (hash, list, file, richtext, any/auto, schema editors, …) plus any field
|
|
44
|
-
with `arg_schema` or operators — still open the expanded **edit card** with a Done button, per the
|
|
45
|
-
agreed fallback ("big fields still render a form"). Changes flow through the same
|
|
46
|
-
`handleValueChange` → debounced `onChange` pipeline in both paths — the engine never persists;
|
|
47
|
-
*when* to apply the emitted value (immediate vs batched commit) is the consumer's contract.
|
|
48
|
-
- **Completion meter + Incomplete/Ready status.** A single inline bar at the top — Incomplete/Ready status |
|
|
49
|
-
`N / M fields set` | track (fills remaining) | `%` — matching the IDE's restyled completion strip.
|
|
50
|
-
The badge is the IDE restyled-hero convention (`RestyledFields`): a minimal small `ReqoreTag`,
|
|
51
|
-
**Incomplete** (warning) while any field is invalid, required-unset or needs attention, **Ready**
|
|
52
|
-
(success) once everything validates — driven by the same validity data as the invalid-fields
|
|
53
|
-
banner; hidden in `readOnly`. It signals form *readiness*, not unsaved changes, which is why the
|
|
54
|
-
not-ready state is never called "Draft": a form nobody has touched can be Incomplete, and **Draft**
|
|
55
|
-
means unsaved changes — the batched mode's per-row chip, and nothing else. Unsaved-change state is
|
|
56
|
-
that chip and the per-row **↺** / "Revert all changes". (`VariantCalmTable`'s meter uses the same
|
|
57
|
-
two words.) (Product save convention for
|
|
58
|
-
context: creator forms auto-save to a *draft* via the IDE's `useInterfaceDraft` — debounced
|
|
59
|
-
auto-draft + explicit Submit — so compact inline edits are draft-persisted by the consumer with no
|
|
60
|
-
extra engine work.)
|
|
61
|
-
- **Toolbar.** A search box (filter rows by label) plus a **Fields** dropdown (`ReqoreDropdown`,
|
|
62
|
-
edit-mode only) that consolidates the field-set actions: **Required only** (toggle), **Show field types**
|
|
63
|
-
(toggle — annotates each row with its type, e.g. `<string>`), **Select all** (add every optional field),
|
|
64
|
-
**Default fields** (drop user-added optionals + clear the filter, keeping required/preselected/loaded
|
|
65
|
-
values), **Revert all changes** (undo every edit back to the loaded values), and a searchable
|
|
66
|
-
**add-optional** list. Filters only affect which rows are listed — the completion meter still reflects the
|
|
67
|
-
full set. ("Edit code" is *not* here — that stays IDE-side.)
|
|
68
|
-
- **Revert.** A changed row shows a per-field hover **↺** that restores that field to its loaded value;
|
|
69
|
-
**Revert all changes** in the Fields menu restores the whole form. (Distinct from **Default fields**,
|
|
70
|
-
which resets to schema defaults + drops added optionals.)
|
|
71
|
-
- **Batched commit (`commitMode='batched'`).** The decided save model (Nick, 2026-06-10): edits
|
|
72
|
-
stage as a **draft** — each changed row gets an always-visible warning **Draft** chip (the
|
|
73
|
-
product's draft convention), and a **Save / Discard bar** docks **bottom-right as a sticky,
|
|
74
|
-
floating card** while anything is dirty (`N unsaved changes`) — `position: sticky` (not fixed)
|
|
75
|
-
so it stays inside the form's scroll bounds when the engine renders in a drawer/panel. **Save**
|
|
76
|
-
fires the new **`onCommit`** callback with the
|
|
77
|
-
staged form and is **disabled while any field is invalid**; **Discard** is the existing
|
|
78
|
-
revert-all. `onChange` still fires on every staged edit, flagged **`meta.draft`**, so consumers
|
|
79
|
-
can live-validate without persisting. Default stays `'immediate'` (today's behaviour — no
|
|
80
|
-
consumer breaks). Stories: `CompactBatchedCommit` (full stage → save → discard journey),
|
|
81
|
-
`CompactBatchedCommitInvalid` (Save gated on validity).
|
|
82
|
-
- **Search spans hidden fields.** The top search matches *all* schema fields, not just the listed ones: a
|
|
83
|
-
match that is an optional field not yet in the form is surfaced as a dimmed **"Not in form — add"** row;
|
|
84
|
-
activating it adds the field and opens its editor.
|
|
85
|
-
- **An unmet `depends_on` withholds the field rather than offering it.** A field whose dependency is
|
|
86
|
-
not fulfilled is left out of the not-yet-added list entirely — so it is absent from the addable rows,
|
|
87
|
-
the Fields menu, and its **Select all** alike. All three read the one `filteredOptions` list, which is
|
|
88
|
-
where the gate lives, so they cannot disagree about what is available. The rule is that
|
|
89
|
-
`hasAllDependenciesFullfilled` is the *same* predicate that then refuses to let the field be edited:
|
|
90
|
-
offering one it rejects can only end at a row that opens and says it is disabled. (Reported on auth
|
|
91
|
-
profiles — an authentication scheme set to Permissive still offered `Cookie Name` and `Redirect URL`,
|
|
92
|
-
both `depends_on: ['type=cookie']`, and both dead ends.) Fulfilling the dependency brings the rows
|
|
93
|
-
back and flashes them (`dependencyLockedNames`), which is the discoverable path: pick the scheme, and
|
|
94
|
-
the fields that scheme has appear. **Only the not-yet-added ones** — a field that already holds a
|
|
95
|
-
value stays listed when its dependency later stops holding, rendered `readfirst-row-disabled` with the
|
|
96
|
-
reason, so a value still being submitted is visible and removable instead of silently orphaned.
|
|
97
|
-
- **A field locked by an unmet `depends_on` does not need attention.** A `required` (or one-of
|
|
98
|
-
`required_groups`) field that is listed but locked is not required while it is locked: the status
|
|
99
|
-
(`getOptionStatus`) and box (`getOptionBucket`) treat it as optional, so it waits in the Optional box,
|
|
100
|
-
locked, with what unlocks it, and is not in "Needs attention", the header's attention count or the
|
|
101
|
-
first-attention autofocus target. Its messages say what unlocks it, not "This field is required"
|
|
102
|
-
(`getOptionFieldMessages`). The field it depends on carries its own status, and that field is what
|
|
103
|
-
the author has to do next. Once the dependency holds and the field is still empty, it needs attention
|
|
104
|
-
again. The same rule holds for form validity (`onValidityChange`, the Incomplete/Ready status,
|
|
105
|
-
`showInvalidOptionsOnly`): an EMPTY locked field does not apply, so it does not make the form
|
|
106
|
-
incomplete — otherwise a check of kind Equals could never be saved because Minimum, required for
|
|
107
|
-
Between alone, is empty, and a form whose only gaps are fields nobody can fill in would read
|
|
108
|
-
Incomplete with nothing under "Needs attention". A value a locked field still holds is validated
|
|
109
|
-
as before. (`getUnresolvedRequiredOptions`, which decides whether a form is needed at all before
|
|
110
|
-
any is shown, still reports a locked required option as unresolved, reason `dependency`.) Stories: `CompactLockedRequiredNeedsNoAttention`,
|
|
111
|
-
`CompactUnlockedRequiredNeedsAttention`.
|
|
112
|
-
- **Sticky-top toolbar.** The completion meter + search + Fields menu are wrapped in a `position: sticky;
|
|
113
|
-
top: 0` header (opaque background masks rows scrolling beneath), so filtering and adding optional fields
|
|
114
|
-
stay reachable while scrolling a long form. (Replaced an earlier bottom "Additional options" bar that, as
|
|
115
|
-
the last child of the scroll content, could never actually pin to the viewport.)
|
|
116
|
-
- **Zebra field blocks + spacing (no dividers) + mobile left rail.** Every field block (a row, or
|
|
117
|
-
the wrapper carrying a row plus its message strips / hash preview) gets an alternating
|
|
118
|
-
theme-derived tint — 3% on desktop, 5% on narrow forms — and blocks separate with an **8px gap**
|
|
119
|
-
at all widths; the old hairline dividers were retired (zebra + space carry the separation). Each
|
|
120
|
-
field owns a visible territory and strips never float ownerless. Narrow forms additionally indent
|
|
121
|
-
content 12px under the label (left rail) and use slightly taller inner padding. Edit cards keep
|
|
122
|
-
their own surface.
|
|
123
|
-
- **No horizontal overflow.** The row grid's value column is `minmax(0, 1fr)` and the value cell has
|
|
124
|
-
`min-width: 0`, so a long unbroken value (e.g. a URL) ellipsis-truncates (full value on hover via `title`)
|
|
125
|
-
instead of forcing a horizontal scrollbar.
|
|
126
|
-
- **Field info: intent stripe + expandable panel** (the decided "stripe-expand" display,
|
|
127
|
-
2026-06-11 — see `COMPACT_INFO_DISPLAY.md`). Rows carrying critical (Tier 1: danger/warning)
|
|
128
|
-
messages get a 3px intent edge-stripe and their info panel **auto-opens** below the row —
|
|
129
|
-
short_desc plus all schema/validation/dependency messages as slim `ReqoreMessage` strips.
|
|
130
|
-
Fields with only Tier-2 info (info/success messages, `default_value_desc` notes, short_desc)
|
|
131
|
-
stay one line: a ⓘ toggle in the fixed info slot opens the panel on demand (the per-row
|
|
132
|
-
override sticks either way). While a row is edited inline, the editor's own schema-message
|
|
133
|
-
strip is suppressed — the panel below the editing row is the single renderer. Stories:
|
|
134
|
-
`CompactShowcase` (+`Mobile`).
|
|
135
|
-
- **Accessibility.** Read-first rows are real controls (`role="button"`, `tabIndex={0}`, Enter/Space
|
|
136
|
-
activate, visible focus ring), not just click handlers; the Done button and dropdowns are native buttons.
|
|
137
|
-
- **The caret follows the row that opens.** An opened row moves the caret into the control it offers —
|
|
138
|
-
whatever that control is. `findRowFocusTarget` ([`rowFocus.ts`](../src/components/form/engine/rowFocus.ts))
|
|
139
|
-
prefers a text-entry control (`input` / `textarea` / `contenteditable`) and otherwise takes the first
|
|
140
|
-
other focusable one (a `<button>` selector, a `[tabindex]` reqore checkbox — a pick-one's choices are
|
|
141
|
-
not inputs), ignoring an absorbed sibling's editor and the schema-message strip, which belong to other
|
|
142
|
-
fields. The row is revealed first — `scrollIntoView({ block: 'nearest' })` on the ROW, a no-op when it
|
|
143
|
-
is already visible — because a caret below the fold changes nothing on screen while the next keystroke
|
|
144
|
-
goes somewhere invisible; focus itself then uses `preventScroll` so nothing moves twice. A caller that
|
|
145
|
-
wants the row **opened without the caret** uses `expandFirstRequired` rather than
|
|
146
|
-
`autoFocusFirstRequired`. The search is re-run by a one-shot `MutationObserver` on the row's value cell,
|
|
147
|
-
so an editor that mounts its control several commits later (a host editor resolving a catalogue) still
|
|
148
|
-
gets the caret, and it gives up the moment the caret is somewhere outside this row. Stories:
|
|
149
|
-
`CompactAutoFocusFirstRequired`, `CompactAutoFocusPickOneFirstQuestion`,
|
|
150
|
-
`CompactAutoFocusNonFocusableFirstField`, `CompactAutoFocusLateMountingEditor`.
|
|
151
|
-
- **A row the AUTHOR opens into a picker opens the picker with it.** Read-first belongs to the
|
|
152
|
-
COLLAPSED row; it must not be the answer twice. A picker's editor is a closed trigger printing the
|
|
153
|
-
value the read row had just printed, so the row opened, nothing on screen changed, and changing the
|
|
154
|
-
value still cost a second click ("clicking on a closed option like 'Kind' opens the option, but the
|
|
155
|
-
same chosen value is displayed"). The row decides — it is the only party that knows both that the
|
|
156
|
-
author opened it (rather than the form) and which control it offers (`findRowFocusTarget`, the same
|
|
157
|
-
scan that hands over the caret) — and the control obeys, through
|
|
158
|
-
**`RowOpenPickerContext`** ([`rowOpenPicker.ts`](../src/components/form/engine/rowOpenPicker.ts)), a
|
|
159
|
-
one-shot `true` scoped to the row's own editor. A control declares itself a picker with
|
|
160
|
-
**`aria-haspopup`** (`isClosedPickerTrigger` in `rowFocus.ts`), which is the attribute's own meaning
|
|
161
|
-
and the existing contract with assistive technology — so a host's editor opts in by being accessible.
|
|
162
|
-
A context value rather than a synthetic click on the trigger: reqore's popover binds its click
|
|
163
|
-
listener in an effect keyed on the trigger element arriving, so a click dispatched from the row's
|
|
164
|
-
effect lands before anything is listening.
|
|
165
|
-
Read-first is kept where it still says something, and each of these is a term in the condition:
|
|
166
|
-
the collapsed row itself; a row the FORM opened (`initialExpandedOptions` — an address, or
|
|
167
|
-
qorus-ide's diagram showing a step — and `autoFocusFirstRequired`, which promises the caret and
|
|
168
|
-
only the caret); and the edit CARD a complex field opens, which is a form in its own right whose
|
|
169
|
-
first control is one of several. Stories: `CompactRowOpensItsPicker`,
|
|
170
|
-
`CompactTextRowOpensItsTextBox`; tests: `__tests__/compactRowClickOpensThePicker.test.tsx`.
|
|
171
|
-
- **Grouping.** Rows are grouped by each option's raw `group` key into collapsible `ReqorePanel` sections,
|
|
172
|
-
each with a `✓ all set` / `⚠ N to resolve` badge (the catch-all `optional` group shows `N optional`
|
|
173
|
-
instead). Display per group (label / icon / subtitle / order) is
|
|
174
|
-
supplied by the consumer via the **`groups`** prop (the server sends only the bare group key — see
|
|
175
|
-
research below); anything omitted defaults to a title-cased key, no icon, and schema order. Ungrouped
|
|
176
|
-
required/preselected fields fall back to `general`, everything else to `optional`
|
|
177
|
-
(`getOptionGroup` / `getOptionGroupLabel`).
|
|
178
|
-
- **Dedicated layout.** Compact does **not** reuse the classic `ReqoreCollection` card-per-field layout —
|
|
179
|
-
it renders its own flat rows (label | value | action, zebra blocks + spacing) so it reads like the
|
|
180
|
-
IDE's restyled creator rather than a wall of cards. The classic always-expanded path is untouched.
|
|
181
|
-
|
|
182
|
-
Interface-specific chrome (status hero, value chips, "Edit code", the help Hint) is intentionally **not**
|
|
183
|
-
in the engine — a consumer wraps `FormEngine` and supplies that around it. The **server does not define
|
|
184
|
-
group display metadata** (only the bare `group` string per field; no label/icon/order), so each UI owns
|
|
185
|
-
it — hence the engine takes group display via the `groups` prop rather than hardcoding it.
|
|
186
|
-
|
|
187
|
-
## Where the logic lives
|
|
188
|
-
|
|
189
|
-
- [`readFirst.ts`](../src/components/form/engine/readFirst.ts) — pure, unit-tested helpers:
|
|
190
|
-
`formatOptionValue`, `formatColorValue` / `colorToCss` (colour → hex/`rgba()` + swatch CSS),
|
|
191
|
-
`formatFileValue` / `getFileSize` / `formatBytes` (file → filename + size), `getHashEntries`
|
|
192
|
-
(hash → labelled sub-field summaries), `getOptionGroup` (raw key), `getOptionGroupLabel` (key →
|
|
193
|
-
display label, honouring the `groups` prop), `getReadFirstCompletion`, `isOptionValueEmpty`.
|
|
194
|
-
- `FormEngine.tsx` — when `compact`, the component early-returns `renderCompact()` (the completion meter,
|
|
195
|
-
invalid-fields message, grouped flat rows via `renderCompactRow`, and the "more options" adder) instead
|
|
196
|
-
of the classic `ReqoreCollection`. Flat-row styling lives in module-level `styled-components`
|
|
197
|
-
(`StyledCompactWrap`, `StyledGroupBody`, `StyledEditCard`) with theme-derived colours. The classic path
|
|
198
|
-
is left exactly as it was.
|
|
199
|
-
|
|
200
|
-
## Usage
|
|
201
|
-
|
|
202
|
-
```tsx
|
|
203
|
-
<FormEngine
|
|
204
|
-
name="my-form"
|
|
205
|
-
compact
|
|
206
|
-
options={schema}
|
|
207
|
-
value={value}
|
|
208
|
-
onChange={handleChange}
|
|
209
|
-
// optional: per-group display, keyed by the raw `group` string
|
|
210
|
-
groups={{
|
|
211
|
-
info: { label: 'Info', icon: 'IdCardLine', subtitle: 'Identity and core settings', sort: 0 },
|
|
212
|
-
scaling: { icon: 'BroadcastLine', sort: 1 },
|
|
213
|
-
}}
|
|
214
|
-
/>
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## Async schema (`optionsLoader`)
|
|
218
|
-
|
|
219
|
-
`FormEngine` normally renders a schema you hand it via `options`. `optionsLoader` lets the engine **fetch
|
|
220
|
-
the schema itself**, owning the loading / error / refetch lifecycle, while staying **transport-agnostic** —
|
|
221
|
-
the consumer supplies an async callback that resolves the schema however it likes (the engine never learns
|
|
222
|
-
about any backend). This is what lets a consumer converge an old "fetch-by-URL" form (e.g. the qorus-ide
|
|
223
|
-
`<Options url=…>` fork) onto the upstream engine without pushing app-specific fetch code into the library.
|
|
224
|
-
|
|
225
|
-
```tsx
|
|
226
|
-
const loadSchema = useCallback(() => fetchSchemaSomehow(url), [url]); // memoise → refetch only on change
|
|
227
|
-
|
|
228
|
-
<FormEngine
|
|
229
|
-
name="protocol-options"
|
|
230
|
-
compact
|
|
231
|
-
value={value}
|
|
232
|
-
optionsLoader={loadSchema} // no `options` — the engine loads it
|
|
233
|
-
onChange={handleChange}
|
|
234
|
-
/>
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
- While loading, the engine shows its skeleton; on rejection it renders the error message; on success it
|
|
238
|
-
renders the schema and fires `onOptionsLoaded`.
|
|
239
|
-
- The loader re-runs when its **identity changes**, so memoise it (`useCallback`) keyed on its inputs — a
|
|
240
|
-
fresh function every render would refetch on every render.
|
|
241
|
-
- Works in both compact and classic layouts. (Real consumer: qorus-ide's `useRemoteOptionsLoader` feeding
|
|
242
|
-
the Connection creator's protocol-specific options panel.)
|
|
243
|
-
|
|
244
|
-
## Tests
|
|
245
|
-
|
|
246
|
-
- **Unit:** [`__tests__/readFirst.test.ts`](../__tests__/readFirst.test.ts) — value formatting (incl.
|
|
247
|
-
colour hex/`rgba()`, file filename, hash field-count + `getHashEntries` expansion, `formatBytes`),
|
|
248
|
-
grouping, completion.
|
|
249
|
-
- **Field-type catalog:** the `CompactFieldTypes` story is a literal catalog of the whole `TQorusType`
|
|
250
|
-
union (grouped by family) — every renderable type plus the non-renderable/interface-reference types —
|
|
251
|
-
asserting colour/file/hash read-first values and the hash "view more" sub-row reveal. Beyond the
|
|
252
|
-
type families it carries one-capability-per-row groups for **field chrome** (icon / image / intent /
|
|
253
|
-
badge / actions / tags), **descriptions & messages** (short_desc behind ⓘ, desc → `?` dialog,
|
|
254
|
-
Tier-1 messages auto-open, Tier-2 behind ⓘ), and **meta** (sensitive / rules / default-value note);
|
|
255
|
-
the combined worst-case stress form is `CompactShowcase` (the flagship "real form" story). Two everything-open variants:
|
|
256
|
-
`CompactFieldTypesEditing` (every row activated — all ~70 real editors mounted at once) and
|
|
257
|
-
`CompactFieldTypesEditingAllRequired` (same, but every field required and unset — each editor in
|
|
258
|
-
its required/invalid state; the canary for editors that misbehave on empty required values).
|
|
259
|
-
- **Reusable disclosure:** `ReqraftCollapsibleContent` has its own
|
|
260
|
-
[`CollapsibleContent.stories.tsx`](../src/components/collapsible/CollapsibleContent.stories.tsx)
|
|
261
|
-
(tall content clips + fades with a hover "Show more"; short content shows whole; custom fade colour).
|
|
262
|
-
- **`optionsLoader`:** `CompactOptionsLoader` (async load → read-first rows + `onOptionsLoaded`),
|
|
263
|
-
`CompactOptionsLoaderError` (rejection → error message), and `OptionsLoader` (classic-layout parity).
|
|
264
|
-
- **Interaction:** the `Compact*` stories in
|
|
265
|
-
[`FormEngine.stories.tsx`](../src/components/form/engine/FormEngine.stories.tsx), using the shared
|
|
266
|
-
`_tests*` helpers. They mirror the classic story matrix: read-first edit (`CompactReadFirstEditing`), the
|
|
267
|
-
Fields menu / search / search-hidden / overflow + sticky-top header, revert + show-types,
|
|
268
|
-
on_change/refetch + dependents,
|
|
269
|
-
and parity scenarios — field types, `required_groups`, `any` type, readonly-default-fix,
|
|
270
|
-
non-existent-filtered, the help dialog, and render stability.
|
|
271
|
-
- **Full-schema parity:** `CompactBasic` renders compact mode on the **exact** schema + value behind the
|
|
272
|
-
classic `Basic` story (the shared fixture
|
|
273
|
-
[`__fixtures__/basicFormOptions.ts`](../src/components/form/engine/__fixtures__/basicFormOptions.ts) —
|
|
274
|
-
both stories import it, so they can never drift). Every option/state the classic layout exercises runs
|
|
275
|
-
through the compact path: both hash options, file, auto, list, allowed-values (+creatable/broken), date,
|
|
276
|
-
rgbcolor, richtext, templates, messages, disabled, readonly, depends_on. Running the full fixture
|
|
277
|
-
immediately caught two real bugs: `richtextToString` crashing on scalar-valued richtext options, and
|
|
278
|
-
`getHashEntries` mis-counting typed envelopes.
|
|
279
|
-
- **Workflow-orders hash view:** `StructuredDataView`
|
|
280
|
-
([`_structuredData/`](../src/components/form/engine/_structuredData/)) is a thin Qorus wrapper
|
|
281
|
-
around **`ReqoreDataView`** (upstreamed in reqore ≥0.69 — the toolkit was bumped 0.64 → 0.69.2 for
|
|
282
|
-
it), mirroring qorus-ide's wrapper of the same name: it plugs in the Qorus typed-envelope
|
|
283
|
-
allow-list, the embedded-YAML/JSON string parser, and the Qorus date parser/formatter
|
|
284
|
-
(`structuredData.ts`). Theme-driven (key chips = `info` intent, values intent-tinted by type),
|
|
285
|
-
scalars stay on the same row as their key at any depth, objects/lists collapse to
|
|
286
|
-
`Object · N fields` / `List · N items`. It is the **only hash preview** in the compact form —
|
|
287
|
-
the earlier flat key → value sub-row view was removed after Filip signed off on the structured
|
|
288
|
-
look (`getHashEntries` remains as the "is this an expandable hash?" gate and for value
|
|
289
|
-
summaries). See the `CompactHashStructuredView` story (which also contrasts an
|
|
290
|
-
envelope-encoded hash against a raw order-style payload) plus its own
|
|
291
|
-
`Form/Engine/StructuredDataView` story. In the compact form the tree is wired up:
|
|
292
|
-
the Fields-menu **"Show field types"** toggle also drives the per-scalar type chips inside it,
|
|
293
|
-
clicking a **value chip opens the hash's editor** (parity with the flat sub-rows; section
|
|
294
|
-
summaries keep their expand/collapse clicks), and `defaultExpandDepth={2}` keeps deep nests
|
|
295
|
-
collapsed so the preview stays short before the fade. Known gap: key chips show raw keys, not
|
|
296
|
-
`arg_schema` `display_name`s — suggested upstream as
|
|
297
|
-
[reqore#568](https://github.com/qoretechnologies/reqore/issues/568) (`keyLabel` callback).
|
|
298
|
-
|
|
299
|
-
Interface-specific chrome the IDE still wraps around the engine (Phase 3): the status hero, value chips
|
|
300
|
-
(e.g. the language logo), "Edit code", and the "Editing this form" Hint.
|