@qoretechnologies/reqraft 0.10.66-pr.145.gcb1e59d → 0.10.66
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 +53 -1
- package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
- package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
- package/dist/components/Description/AllowedValuesHelp.js +86 -0
- package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
- package/dist/components/Description/describedControl.d.ts +54 -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 +156 -10
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
- package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
- package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
- package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +420 -63
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
- package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.js +44 -17
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +94 -8
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
- 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 +336 -243
- 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 +20 -57
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +67 -59
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +606 -409
- 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 +2 -18
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +28 -25
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
- package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
- package/dist/components/form/engine/OptionsHelpDialog.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 +11 -31
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +30 -6
- 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 +56 -31
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +121 -110
- 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/compactToolbarContext.d.ts +0 -3
- package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
- package/dist/components/form/engine/inheritProps.d.ts +29 -0
- package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
- package/dist/components/form/engine/inheritProps.js +43 -0
- package/dist/components/form/engine/inheritProps.js.map +1 -0
- package/dist/components/form/engine/operatorSummary.d.ts +26 -0
- package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
- package/dist/components/form/engine/operatorSummary.js +35 -0
- package/dist/components/form/engine/operatorSummary.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +26 -22
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +79 -115
- 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 +3 -9
- package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
- package/dist/components/form/engine/rowFocus.js +30 -19
- 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 +7 -6
- package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +536 -114
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
- package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
- package/dist/components/form/expressions/argumentPresence.js +16 -1
- package/dist/components/form/expressions/argumentPresence.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 +30 -11
- 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 +3 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
- 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 +7 -5
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +34 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +170 -80
- 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/dpqlMockRecordPath.d.ts +11 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
- 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/fieldPath.d.ts +24 -0
- package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
- package/dist/components/form/expressions/fieldPath.js +152 -0
- package/dist/components/form/expressions/fieldPath.js.map +1 -0
- package/dist/components/form/expressions/loneValue.d.ts +17 -0
- package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
- package/dist/components/form/expressions/loneValue.js +33 -0
- package/dist/components/form/expressions/loneValue.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 +37 -25
- 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 +49 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- package/dist/components/form/expressions/types.d.ts +12 -0
- package/dist/components/form/expressions/types.d.ts.map +1 -1
- package/dist/components/form/expressions/types.js +6 -1
- package/dist/components/form/expressions/types.js.map +1 -1
- 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 +13 -9
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
- package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
- package/dist/components/form/expressions/wildcardExpressions.js +101 -0
- package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +39 -18
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +0 -7
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +46 -35
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
- package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
- package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
- package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
- 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 +30 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +123 -79
- 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 +616 -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 +1 -7
- package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +30 -13
- 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 +10 -7
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +7 -4
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +45 -18
- 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/radio-group/RadioGroup.d.ts.map +1 -1
- package/dist/components/form/fields/radio-group/RadioGroup.js +8 -13
- package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +426 -91
- 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 +80 -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 +10 -1
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +28 -14
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
- package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.js +25 -12
- 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 +11 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
- package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
- package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
- package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +706 -168
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
- package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplatePicker.js +459 -0
- package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
- 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 +22 -16
- package/dist/components/form/fields/template/TemplateText.js.map +1 -1
- package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
- package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
- package/dist/components/form/fields/template/referenceNames.js +69 -0
- package/dist/components/form/fields/template/referenceNames.js.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +204 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +12 -2
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +25 -3
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/form/typeSentenceForm.d.ts +17 -0
- package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
- package/dist/components/form/typeSentenceForm.js +54 -0
- package/dist/components/form/typeSentenceForm.js.map +1 -0
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.js +19 -9
- 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 +20 -8
- 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 +53 -0
- package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
- package/dist/components/smartEditor/CompletionMenu.js +302 -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 +3 -3
- 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 +616 -190
- package/dist/components/smartEditor/SmartEditor.js.map +1 -1
- package/dist/components/smartEditor/completionStyle.d.ts +28 -0
- package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
- package/dist/components/smartEditor/completionStyle.js +79 -0
- package/dist/components/smartEditor/completionStyle.js.map +1 -0
- package/dist/components/smartEditor/contextTitle.d.ts +10 -0
- package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
- package/dist/components/smartEditor/contextTitle.js +21 -0
- package/dist/components/smartEditor/contextTitle.js.map +1 -0
- package/dist/components/smartEditor/editingAids.d.ts +64 -0
- package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
- package/dist/components/smartEditor/editingAids.js +213 -0
- package/dist/components/smartEditor/editingAids.js.map +1 -0
- package/dist/components/smartEditor/index.d.ts +6 -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 +98 -0
- package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
- package/dist/components/smartEditor/templateCompletions.js +380 -0
- package/dist/components/smartEditor/templateCompletions.js.map +1 -0
- package/dist/components/smartEditor/typedReferences.d.ts +34 -0
- package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
- package/dist/components/smartEditor/typedReferences.js +179 -0
- package/dist/components/smartEditor/typedReferences.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +116 -2
- package/dist/components/smartEditor/types.d.ts.map +1 -1
- package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
- package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
- package/dist/components/smartEditor/useEditingAids.js +392 -0
- package/dist/components/smartEditor/useEditingAids.js.map +1 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
- package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.js +592 -149
- package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
- package/dist/components/smartEditor/useLspHover.d.ts +33 -7
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspHover.js +364 -35
- 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/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
- package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
- package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
- package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
- package/dist/components/smartEditor/useTabCameIn.js +42 -0
- package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
- 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/InterfaceReferenceTags.d.ts +2 -3
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +9 -3
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +38 -23
- 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 +21 -6
- package/dist/components/supportTicket/TicketHeader.js.map +1 -1
- package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
- package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketReplyBox.js +10 -29
- package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
- package/dist/components/supportTicket/useLoadedImages.d.ts +0 -10
- package/dist/components/supportTicket/useLoadedImages.d.ts.map +1 -1
- package/dist/components/supportTicket/useLoadedImages.js +1 -63
- package/dist/components/supportTicket/useLoadedImages.js.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +10 -9
- 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 +52 -21
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/allowedValues.d.ts +21 -12
- package/dist/helpers/allowedValues.d.ts.map +1 -1
- package/dist/helpers/allowedValues.js +40 -20
- package/dist/helpers/allowedValues.js.map +1 -1
- package/dist/helpers/descriptionTooltip.d.ts +46 -0
- package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
- package/dist/helpers/descriptionTooltip.js +76 -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 +115 -4
- package/dist/helpers/expressions.d.ts.map +1 -1
- package/dist/helpers/expressions.js +247 -29
- 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/noDescription.d.ts +9 -0
- package/dist/helpers/noDescription.d.ts.map +1 -0
- package/dist/helpers/noDescription.js +13 -0
- package/dist/helpers/noDescription.js.map +1 -0
- package/dist/helpers/optionUiTypes.d.ts +2 -2
- package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.js +505 -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/recordFieldReference.d.ts +15 -0
- package/dist/helpers/recordFieldReference.d.ts.map +1 -0
- package/dist/helpers/recordFieldReference.js +89 -0
- package/dist/helpers/recordFieldReference.js.map +1 -0
- package/dist/helpers/singleLineString.d.ts.map +1 -1
- package/dist/helpers/singleLineString.js +0 -1
- package/dist/helpers/singleLineString.js.map +1 -1
- package/dist/helpers/templateCatalogue.d.ts +104 -0
- package/dist/helpers/templateCatalogue.d.ts.map +1 -0
- package/dist/helpers/templateCatalogue.js +116 -0
- package/dist/helpers/templateCatalogue.js.map +1 -0
- package/dist/helpers/templateCatalogueContext.d.ts +19 -0
- package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
- package/dist/helpers/templateCatalogueContext.js +31 -0
- package/dist/helpers/templateCatalogueContext.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/templateText.d.ts +1 -0
- package/dist/helpers/templateText.d.ts.map +1 -1
- package/dist/helpers/templateText.js +7 -3
- package/dist/helpers/templateText.js.map +1 -1
- package/dist/helpers/templateTree.d.ts +248 -0
- package/dist/helpers/templateTree.d.ts.map +1 -0
- package/dist/helpers/templateTree.js +892 -0
- package/dist/helpers/templateTree.js.map +1 -0
- package/dist/helpers/templateType.d.ts +28 -0
- package/dist/helpers/templateType.d.ts.map +1 -0
- package/dist/helpers/templateType.js +30 -0
- package/dist/helpers/templateType.js.map +1 -0
- package/dist/helpers/templates.d.ts +86 -16
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +305 -45
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts +27 -0
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +169 -39
- package/dist/helpers/validations.js.map +1 -1
- package/dist/helpers/webLink.d.ts +8 -0
- package/dist/helpers/webLink.d.ts.map +1 -0
- package/dist/helpers/webLink.js +29 -0
- package/dist/helpers/webLink.js.map +1 -0
- package/dist/hooks/useQorusTypes.d.ts +12 -17
- package/dist/hooks/useQorusTypes.d.ts.map +1 -1
- package/dist/hooks/useQorusTypes.js +44 -172
- 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 +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -1
- 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/dist/utils/fetch.d.ts +9 -2
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +6 -5
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/lspClient.types.d.ts +2 -0
- package/dist/utils/lspClient.types.d.ts.map +1 -1
- package/dist/utils/websocket.d.ts +65 -2
- package/dist/utils/websocket.d.ts.map +1 -1
- package/dist/utils/websocket.js +276 -44
- package/dist/utils/websocket.js.map +1 -1
- package/package.json +14 -6
- 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/dist/components/form/engine/formAppearance.d.ts +0 -49
- package/dist/components/form/engine/formAppearance.d.ts.map +0 -1
- package/dist/components/form/engine/formAppearance.js +0 -50
- package/dist/components/form/engine/formAppearance.js.map +0 -1
- package/dist/components/form/fields/ChoiceGroupHeading.d.ts +0 -21
- package/dist/components/form/fields/ChoiceGroupHeading.d.ts.map +0 -1
- package/dist/components/form/fields/ChoiceGroupHeading.js +0 -33
- package/dist/components/form/fields/ChoiceGroupHeading.js.map +0 -1
- package/dist/components/form/fields/allowed-values/savedValues.d.ts +0 -30
- package/dist/components/form/fields/allowed-values/savedValues.d.ts.map +0 -1
- package/dist/components/form/fields/allowed-values/savedValues.js +0 -39
- package/dist/components/form/fields/allowed-values/savedValues.js.map +0 -1
- package/dist/helpers/fieldDescription.d.ts +0 -16
- package/dist/helpers/fieldDescription.d.ts.map +0 -1
- package/dist/helpers/fieldDescription.js +0 -40
- package/dist/helpers/fieldDescription.js.map +0 -1
- 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 -2740
- package/src/components/form/engine/CompactToolbar.tsx +0 -399
- package/src/components/form/engine/FormEngine.stories.tsx +0 -9934
- package/src/components/form/engine/FormEngine.tsx +0 -4891
- package/src/components/form/engine/FormEngineAppearance.stories.tsx +0 -609
- package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
- package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -335
- package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
- package/src/components/form/engine/OptionFieldMessages.tsx +0 -548
- 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 -755
- 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 -153
- package/src/components/form/engine/compactRowStyles.ts +0 -1087
- package/src/components/form/engine/compactToolbarContext.ts +0 -72
- package/src/components/form/engine/formAppearance.ts +0 -79
- 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 -1090
- 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 -112
- 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 -152
- 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/ChoiceGroupHeading.tsx +0 -38
- package/src/components/form/fields/Field.stories.tsx +0 -143
- package/src/components/form/fields/Field.tsx +0 -734
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -321
- package/src/components/form/fields/allowed-values/savedValues.ts +0 -64
- 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 -1183
- 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 -147
- package/src/components/form/fields/long-string/LongString.tsx +0 -141
- 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 -140
- package/src/components/form/fields/number/Number.stories.tsx +0 -159
- package/src/components/form/fields/number/Number.tsx +0 -175
- 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 -52
- 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 -1749
- 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 -49
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
- package/src/components/imageLightbox/ImageLightbox.tsx +0 -238
- 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 -130
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -580
- package/src/components/supportTicket/ReferencePicker.tsx +0 -573
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -120
- package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
- package/src/components/supportTicket/TicketHeader.tsx +0 -248
- 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 -357
- package/src/components/supportTicket/TicketReplyBox.tsx +0 -172
- 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 -93
- package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -341
- package/src/components/ticketReferences/TicketReferences.tsx +0 -914
- package/src/components/ticketReferences/index.ts +0 -2
- package/src/components/ticketThread/TicketThread.stories.tsx +0 -898
- package/src/components/ticketThread/TicketThread.tsx +0 -706
- 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 -268
- 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/fieldDescription.ts +0 -39
- 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 -62
- 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
|
@@ -1,1183 +0,0 @@
|
|
|
1
|
-
// Verbatim port of qorus-ide `src/components/Field/auto.tsx` — keep edits to
|
|
2
|
-
// the documented seams (leaf-API `onChange` adaptation, `query()`/`FormEngine`
|
|
3
|
-
// swaps) so it stays in sync with the IDE. Intentionally-unported IDE types
|
|
4
|
-
// and the full seam list live in `.tasks/FIELD_STACK_REPORT.md`.
|
|
5
|
-
import {
|
|
6
|
-
ReqoreButton,
|
|
7
|
-
ReqoreControlGroup,
|
|
8
|
-
ReqoreErrorBoundary,
|
|
9
|
-
ReqoreMessage,
|
|
10
|
-
ReqoreTag,
|
|
11
|
-
} from '@qoretechnologies/reqore';
|
|
12
|
-
import { IReqoreFormTemplates } from '@qoretechnologies/reqore/dist/components/Textarea';
|
|
13
|
-
import { IWithReqoreSize } from '@qoretechnologies/reqore/dist/types/global';
|
|
14
|
-
import { TQorusFormFieldSchema, TQorusType } from '@qoretechnologies/ts-toolkit';
|
|
15
|
-
import { isEqual, size, uniqBy } from 'lodash';
|
|
16
|
-
import React, { memo, useCallback, useEffect, useState } from 'react';
|
|
17
|
-
import { useUpdateEffect } from 'react-use';
|
|
18
|
-
import useMount from 'react-use/lib/useMount';
|
|
19
|
-
import { typedToYaml, yamlToTyped } from '../../../../helpers/common';
|
|
20
|
-
import { allowedValueOf } from '../../../../helpers/allowedValues';
|
|
21
|
-
import { getListElementValue } from '../../../../helpers/options';
|
|
22
|
-
import { isSingleLineStringType } from '../../../../helpers/singleLineString';
|
|
23
|
-
import {
|
|
24
|
-
getTypeFromValue,
|
|
25
|
-
getValueOrDefaultValue,
|
|
26
|
-
maybeParseYaml,
|
|
27
|
-
} from '../../../../helpers/validations';
|
|
28
|
-
import { useWhyDidYouUpdate } from '../../../../hooks/useWhyDidYouUpdate';
|
|
29
|
-
import { isQueryCancelled, query } from '../../../../utils/fetch';
|
|
30
|
-
import { DpqlEditor } from '../../../dpqlEditor';
|
|
31
|
-
import { FormEngine, IOptionsSchema } from '../../engine/FormEngine';
|
|
32
|
-
import {
|
|
33
|
-
DRAWS_OWN_CHOICES_TYPES,
|
|
34
|
-
FieldAllowedValues,
|
|
35
|
-
FieldAllowedValuesCheckGroup,
|
|
36
|
-
rendersCreatableValueSelect,
|
|
37
|
-
} from '../allowed-values/AllowedValues';
|
|
38
|
-
import { ArrayAuto } from '../array/ArrayAuto';
|
|
39
|
-
import BooleanFormField from '../boolean/Boolean';
|
|
40
|
-
import { ByteSizeFormField } from '../byte-size/ByteSize';
|
|
41
|
-
import { TimeoutFormField } from '../timeout/Timeout';
|
|
42
|
-
import ColorFormField from '../color/Color';
|
|
43
|
-
import CronFormField from '../cron/Cron';
|
|
44
|
-
import { DateFormField } from '../date/Date';
|
|
45
|
-
import { IFileFormFieldValue, ReqraftFileFormField } from '../file/File';
|
|
46
|
-
import LongStringFormField from '../long-string/LongString';
|
|
47
|
-
import MarkdownFormField from '../markdown/Markdown';
|
|
48
|
-
import { MultiSelectFormField } from '../multi-select/MultiSelectFormField';
|
|
49
|
-
import NumberFormField from '../number/Number';
|
|
50
|
-
import { ReqraftObjectFormField } from '../object/Object';
|
|
51
|
-
import RadioGroupFormField from '../radio-group/RadioGroup';
|
|
52
|
-
import { RichTextFormField } from '../rich-text/RichText';
|
|
53
|
-
import { SchemaDefinitionEditor } from '../schema-definition';
|
|
54
|
-
import { IDataSchemaDefinition } from '../schema-definition/types';
|
|
55
|
-
import { ISelectFormFieldItem, SelectFormField } from '../select/Select';
|
|
56
|
-
import { StringFormField } from '../string/String';
|
|
57
|
-
import { UrlFormField } from '../url/Url';
|
|
58
|
-
import { FormFieldsSkeleton } from '../../engine/FormFieldsSkeleton';
|
|
59
|
-
import { isUntypedOptionType } from '../../../../helpers/optionUiTypes';
|
|
60
|
-
|
|
61
|
-
/** UI superset of `TQorusType` — the IDE's `Field/systemOptions` `IQorusType`. */
|
|
62
|
-
export type IQorusType = TQorusType | string;
|
|
63
|
-
|
|
64
|
-
export interface IAutoFieldProps
|
|
65
|
-
extends
|
|
66
|
-
IWithReqoreSize,
|
|
67
|
-
Omit<
|
|
68
|
-
TQorusFormFieldSchema,
|
|
69
|
-
'get_message' | 'return_message' | 'on_change' | 'type' | 'arg_schema' | 'ui_type'
|
|
70
|
-
> {
|
|
71
|
-
name?: string;
|
|
72
|
-
/**
|
|
73
|
-
* The editor the schema asks for. Optional here although the shared
|
|
74
|
-
* descriptor requires it: the field renders from `type` / `defaultType` when
|
|
75
|
-
* there is none, and reads this only to pick an override or a special editor.
|
|
76
|
-
*/
|
|
77
|
-
ui_type?: IQorusType;
|
|
78
|
-
value?: any;
|
|
79
|
-
default_value?: any;
|
|
80
|
-
type?: IQorusType;
|
|
81
|
-
onChange?: (name: string, value: any, type?: IQorusType, canBeNull?: boolean) => void;
|
|
82
|
-
/** From IDE FieldWrapper `IField` — lets `type-depends-on` query sibling fields. */
|
|
83
|
-
requestFieldData?: (name: string, key: string) => any;
|
|
84
|
-
canBeNull?: boolean;
|
|
85
|
-
disabled?: boolean;
|
|
86
|
-
readonly?: boolean;
|
|
87
|
-
uniqueName?: string;
|
|
88
|
-
|
|
89
|
-
arg_schema?: string | IOptionsSchema;
|
|
90
|
-
/** Render the arg_schema sub-form in compact (read-first) mode, matching the
|
|
91
|
-
* parent engine. */
|
|
92
|
-
compact?: boolean;
|
|
93
|
-
/** Open the arg_schema sub-form's first attention row on mount, without taking
|
|
94
|
-
* focus — see FormEngine's `expandFirstRequired`. Set by ArrayAuto on a
|
|
95
|
-
* just-added row so its required choice is visible without a second click. */
|
|
96
|
-
expandFirstRequired?: boolean;
|
|
97
|
-
path?: string;
|
|
98
|
-
column?: boolean;
|
|
99
|
-
level?: number;
|
|
100
|
-
defaultType?: IQorusType;
|
|
101
|
-
defaultInternalType?: IQorusType;
|
|
102
|
-
/**
|
|
103
|
-
* @deprecated Inert: the type picker never offers a soft type (see
|
|
104
|
-
* `getImmediateValueTypes`). Kept so existing callers still compile.
|
|
105
|
-
*/
|
|
106
|
-
noSoft?: boolean;
|
|
107
|
-
|
|
108
|
-
/** SEAM: inert in reqraft — saved-values storage is IDE-only. */
|
|
109
|
-
allowSaving?: boolean;
|
|
110
|
-
/** SEAM: inert in reqraft — saved-values storage is IDE-only. */
|
|
111
|
-
showSavedValues?: boolean;
|
|
112
|
-
|
|
113
|
-
app?: string;
|
|
114
|
-
action?: string;
|
|
115
|
-
|
|
116
|
-
isConfigItem?: boolean;
|
|
117
|
-
isVariable?: boolean;
|
|
118
|
-
disableSearchOptions?: boolean;
|
|
119
|
-
disableManagement?: boolean;
|
|
120
|
-
|
|
121
|
-
allowedTypes?: { name: IQorusType; display_name?: string }[];
|
|
122
|
-
allowTemplates?: boolean;
|
|
123
|
-
|
|
124
|
-
fluid?: boolean;
|
|
125
|
-
|
|
126
|
-
showDescription?: boolean;
|
|
127
|
-
|
|
128
|
-
templates?: IReqoreFormTemplates;
|
|
129
|
-
metadata?: ISelectFormFieldItem['metadata'];
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* SEAM (reqraft): per-type editor injection — checked by `type` /
|
|
133
|
-
* `ui_type` before the built-in switch. The IDE re-injects its own
|
|
134
|
-
* editors (InterfaceSelector, ConnectorField, CodeEditor, …) here at the
|
|
135
|
-
* dedupe phase; without an override those types render the verbatim
|
|
136
|
-
* "Unknown type!" tag.
|
|
137
|
-
*/
|
|
138
|
-
componentOverrides?: Record<string, React.FC<any>>;
|
|
139
|
-
|
|
140
|
-
[key: string]: any;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* The types the picker offers for a value typed into this field.
|
|
145
|
-
*
|
|
146
|
-
* No Qore soft type (`softint`, `softstring`, `softlist`, …) is among them. A
|
|
147
|
-
* soft type is a DECLARATION: it says that whatever a variable or parameter is
|
|
148
|
-
* given is converted to the base type. A value typed in here is already a
|
|
149
|
-
* literal of the type its editor makes, so there is nothing to convert and no
|
|
150
|
-
* editor of its own to draw — the picker used to offer them anyway, and each
|
|
151
|
-
* one drew "Unknown type!".
|
|
152
|
-
*/
|
|
153
|
-
export const getImmediateValueTypes = (): { name: IQorusType; display_name: string }[] => [
|
|
154
|
-
{ name: 'bool', display_name: 'True/False' },
|
|
155
|
-
{ name: 'date', display_name: 'Date' },
|
|
156
|
-
{ name: 'string', display_name: 'Text' },
|
|
157
|
-
{ name: 'binary', display_name: 'Binary' },
|
|
158
|
-
{ name: 'float', display_name: 'Decimal' },
|
|
159
|
-
{ name: 'list', display_name: 'List' },
|
|
160
|
-
{ name: 'hash', display_name: 'Key/Value {}' },
|
|
161
|
-
{ name: 'int', display_name: 'Integer' },
|
|
162
|
-
{ name: 'rgbcolor', display_name: 'RGB Color' },
|
|
163
|
-
];
|
|
164
|
-
|
|
165
|
-
/** @deprecated Use `getImmediateValueTypes()`; every picker now offers this list. */
|
|
166
|
-
export const DefaultNoSoftTypes = getImmediateValueTypes();
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* The type a value is EDITED as: a soft type is edited as its base type.
|
|
170
|
-
*
|
|
171
|
-
* A soft type still reaches this field from data saved before the picker
|
|
172
|
-
* stopped offering them, and from a declared type the server sends (an option
|
|
173
|
-
* or a config item declared `softint`). It is shown and edited as the base
|
|
174
|
-
* type it converts to, so that value keeps its editor; the declared type
|
|
175
|
-
* itself is left as it is and is what the field reports back.
|
|
176
|
-
*/
|
|
177
|
-
export const editorTypeOf = <T extends string | undefined | null>(type: T): T =>
|
|
178
|
-
(typeof type === 'string' && /^soft[a-z]/.test(type) ? type.slice(4) : type) as T;
|
|
179
|
-
|
|
180
|
-
function AutoField<T = any>({
|
|
181
|
-
name,
|
|
182
|
-
onChange,
|
|
183
|
-
value,
|
|
184
|
-
default_value,
|
|
185
|
-
defaultType,
|
|
186
|
-
defaultInternalType,
|
|
187
|
-
requestFieldData,
|
|
188
|
-
type,
|
|
189
|
-
// Inert (deprecated); destructured so it does not land in `...rest`.
|
|
190
|
-
noSoft, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
191
|
-
path,
|
|
192
|
-
arg_schema,
|
|
193
|
-
compact,
|
|
194
|
-
column,
|
|
195
|
-
level = 0,
|
|
196
|
-
canBeNull,
|
|
197
|
-
isConfigItem,
|
|
198
|
-
isVariable,
|
|
199
|
-
allowedTypes,
|
|
200
|
-
element_type,
|
|
201
|
-
ui_element_type,
|
|
202
|
-
disableManagement,
|
|
203
|
-
allowSaving,
|
|
204
|
-
showSavedValues,
|
|
205
|
-
uniqueName,
|
|
206
|
-
componentOverrides,
|
|
207
|
-
// qorus#347-followup (scope forwarding): destructure so it does NOT
|
|
208
|
-
// land in `...rest` — otherwise the primitive field renderers spread
|
|
209
|
-
// rest onto DOM nodes and React warns about the unknown attribute.
|
|
210
|
-
// Only the nested arg_schema mount sites re-forward this into their
|
|
211
|
-
// sub-forms explicitly.
|
|
212
|
-
inheritedFromParent,
|
|
213
|
-
// Destructured for the same reason as `inheritedFromParent`: only the nested
|
|
214
|
-
// sub-form mount site consumes it, and leaving it in `...rest` would spread an
|
|
215
|
-
// unknown attribute onto the primitive field renderers' DOM nodes.
|
|
216
|
-
expandFirstRequired,
|
|
217
|
-
...rest
|
|
218
|
-
}: IAutoFieldProps & T) {
|
|
219
|
-
const [currentType, setType] = useState<IQorusType>(defaultInternalType || null);
|
|
220
|
-
const [storedInternalType, setInternalType] = useState<IQorusType>(
|
|
221
|
-
defaultInternalType || 'any'
|
|
222
|
-
);
|
|
223
|
-
// What the value is edited as; see `editorTypeOf`.
|
|
224
|
-
const currentInternalType = editorTypeOf(storedInternalType);
|
|
225
|
-
const [isSetToNull, setIsSetToNull] = useState<boolean>(false);
|
|
226
|
-
const [finalArgSchema, setFinalArgSchema] = useState<IOptionsSchema>(
|
|
227
|
-
typeof arg_schema === 'string' ? undefined : arg_schema
|
|
228
|
-
);
|
|
229
|
-
const [error, setError] = useState<string>();
|
|
230
|
-
|
|
231
|
-
useWhyDidYouUpdate(`Auto field ${name} ${currentType}`, {
|
|
232
|
-
name,
|
|
233
|
-
onChange,
|
|
234
|
-
value,
|
|
235
|
-
default_value,
|
|
236
|
-
defaultType,
|
|
237
|
-
defaultInternalType,
|
|
238
|
-
requestFieldData,
|
|
239
|
-
type,
|
|
240
|
-
path,
|
|
241
|
-
arg_schema,
|
|
242
|
-
column,
|
|
243
|
-
level,
|
|
244
|
-
canBeNull,
|
|
245
|
-
isConfigItem,
|
|
246
|
-
isVariable,
|
|
247
|
-
allowedTypes,
|
|
248
|
-
element_type,
|
|
249
|
-
disableManagement,
|
|
250
|
-
allowSaving,
|
|
251
|
-
showSavedValues,
|
|
252
|
-
uniqueName,
|
|
253
|
-
...rest,
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
// Some arg schemas are not provided as objects, but as strings
|
|
257
|
-
// so we need to fetch them
|
|
258
|
-
useEffect(() => {
|
|
259
|
-
if (typeof arg_schema === 'string') {
|
|
260
|
-
(async () => {
|
|
261
|
-
/* The await is guarded because `query` can REJECT rather than answer
|
|
262
|
-
`{ ok: false }` — a malformed instance URL, an aborted request, a
|
|
263
|
-
transport error. Unguarded, that rejection escaped the async IIFE as
|
|
264
|
-
an unhandled promise rejection, `setError` never ran, `finalArgSchema`
|
|
265
|
-
stayed undefined, and the field showed "Loading field data..." for the
|
|
266
|
-
life of the form: a request that failed instantly and a request that
|
|
267
|
-
is merely slow looked exactly the same, forever. */
|
|
268
|
-
try {
|
|
269
|
-
const schema = await query<IOptionsSchema>({
|
|
270
|
-
url: `dataprovider/arg_schemas/${arg_schema}`,
|
|
271
|
-
method: 'GET',
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
if (schema.ok) {
|
|
275
|
-
setError(undefined);
|
|
276
|
-
setFinalArgSchema(schema.data);
|
|
277
|
-
} else {
|
|
278
|
-
setError(schema.error ?? `The schema "${arg_schema}" could not be loaded.`);
|
|
279
|
-
}
|
|
280
|
-
} catch (fetchError) {
|
|
281
|
-
// abandoned (the query cache was cleared mid-flight), not refused:
|
|
282
|
-
// there is no schema that "could not be loaded" to report
|
|
283
|
-
if (isQueryCancelled(fetchError)) {
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
setError(
|
|
287
|
-
fetchError instanceof Error ?
|
|
288
|
-
fetchError.message
|
|
289
|
-
: `The schema "${arg_schema}" could not be loaded.`
|
|
290
|
-
);
|
|
291
|
-
}
|
|
292
|
-
})();
|
|
293
|
-
} else {
|
|
294
|
-
setError(undefined);
|
|
295
|
-
setFinalArgSchema(arg_schema);
|
|
296
|
-
}
|
|
297
|
-
}, [JSON.stringify(arg_schema)]);
|
|
298
|
-
|
|
299
|
-
useMount(() => {
|
|
300
|
-
let defType: IQorusType = defaultType && (defaultType.replace(/"/g, '').trim() as any);
|
|
301
|
-
|
|
302
|
-
// If default type was not provided, get the type from the value
|
|
303
|
-
if (!defType) {
|
|
304
|
-
defType = getTypeFromValue(maybeParseYaml(value)) as IQorusType;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
let internalType: IQorusType;
|
|
308
|
-
// If value already exists, but the type is auto or any
|
|
309
|
-
// set the type based on the value
|
|
310
|
-
if (value && isUntypedOptionType(defType) && !defaultInternalType) {
|
|
311
|
-
internalType = getTypeFromValue(maybeParseYaml(value)) as IQorusType;
|
|
312
|
-
} else {
|
|
313
|
-
internalType = defaultInternalType || defType;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
setInternalType(internalType);
|
|
317
|
-
setType(defType);
|
|
318
|
-
// If the value is null and can be null, set the null flag
|
|
319
|
-
if (
|
|
320
|
-
(getValueOrDefaultValue(value, default_value, _canBeNull(defType)) === 'null' ||
|
|
321
|
-
getValueOrDefaultValue(value, default_value, _canBeNull(defType)) === null) &&
|
|
322
|
-
_canBeNull(defType)
|
|
323
|
-
) {
|
|
324
|
-
setIsSetToNull(true);
|
|
325
|
-
}
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
useUpdateEffect(() => {
|
|
329
|
-
if (defaultType && storedInternalType !== defaultType) {
|
|
330
|
-
setType(defaultType);
|
|
331
|
-
setInternalType(defaultType);
|
|
332
|
-
}
|
|
333
|
-
}, [defaultType]);
|
|
334
|
-
|
|
335
|
-
useEffect(() => {
|
|
336
|
-
// Auto field type depends on other fields' value
|
|
337
|
-
// which will be used as a type
|
|
338
|
-
if (rest['type-depends-on']) {
|
|
339
|
-
// Get the requested type
|
|
340
|
-
const typeValue: IQorusType = requestFieldData(rest['type-depends-on'], 'value');
|
|
341
|
-
// Check if the field has the value set yet
|
|
342
|
-
if (typeValue && typeValue !== currentType) {
|
|
343
|
-
// If this is auto / any field
|
|
344
|
-
// set the internal type
|
|
345
|
-
if (isUntypedOptionType(typeValue)) {
|
|
346
|
-
setInternalType(value ? (getTypeFromValue(maybeParseYaml(value)) as IQorusType) : 'any');
|
|
347
|
-
} else {
|
|
348
|
-
setInternalType(typeValue);
|
|
349
|
-
}
|
|
350
|
-
// Set the new type
|
|
351
|
-
setType(typeValue);
|
|
352
|
-
if (!currentType) {
|
|
353
|
-
handleChange(name, value === undefined ? undefined : value, typeValue);
|
|
354
|
-
} else if (typeValue !== 'any') {
|
|
355
|
-
const typeFromValue =
|
|
356
|
-
value || value === null ? getTypeFromValue(maybeParseYaml(value)) : 'any';
|
|
357
|
-
|
|
358
|
-
handleChange(
|
|
359
|
-
name,
|
|
360
|
-
value === null ? null : typeValue === typeFromValue ? value : undefined,
|
|
361
|
-
typeValue
|
|
362
|
-
);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
// If can be undefined was toggled off, but the value right now is null
|
|
367
|
-
// we need to set the ability to be null to false and remove
|
|
368
|
-
if (!_canBeNull() && isSetToNull) {
|
|
369
|
-
setIsSetToNull(false);
|
|
370
|
-
handleChange(name, null);
|
|
371
|
-
}
|
|
372
|
-
});
|
|
373
|
-
|
|
374
|
-
const _canBeNull = (type = currentType) => {
|
|
375
|
-
if (type === 'any' || canBeNull) {
|
|
376
|
-
return true;
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
if (requestFieldData) {
|
|
380
|
-
return requestFieldData('can_be_undefined', 'value');
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
return false;
|
|
384
|
-
};
|
|
385
|
-
|
|
386
|
-
const handleChange: (name: string, val: any, type?: IQorusType) => void = useCallback(
|
|
387
|
-
(name, val, type) => {
|
|
388
|
-
const returnType: IQorusType = type || currentType;
|
|
389
|
-
// Run the onchange
|
|
390
|
-
if (onChange && returnType) {
|
|
391
|
-
onChange(name, val, returnType, _canBeNull(returnType));
|
|
392
|
-
}
|
|
393
|
-
},
|
|
394
|
-
[currentInternalType, currentType, onChange]
|
|
395
|
-
);
|
|
396
|
-
|
|
397
|
-
const handleListObjectChange = useCallback(
|
|
398
|
-
(name, val, type) => {
|
|
399
|
-
const typedValue = yamlToTyped(val);
|
|
400
|
-
handleChange(name, typedValue?.value, type);
|
|
401
|
-
},
|
|
402
|
-
[handleChange]
|
|
403
|
-
);
|
|
404
|
-
|
|
405
|
-
const handleTypeChange: (name: string, type?: IQorusType) => void = (name, type) => {
|
|
406
|
-
// Run the onchange
|
|
407
|
-
onChange?.(name, null, 'auto');
|
|
408
|
-
setInternalType(type);
|
|
409
|
-
};
|
|
410
|
-
|
|
411
|
-
const handleNullToggle = () => {
|
|
412
|
-
setType(defaultType || 'any');
|
|
413
|
-
setInternalType(defaultType || 'any');
|
|
414
|
-
setIsSetToNull((current) => {
|
|
415
|
-
return !current;
|
|
416
|
-
});
|
|
417
|
-
|
|
418
|
-
// Handle change
|
|
419
|
-
handleChange(name, isSetToNull ? undefined : null);
|
|
420
|
-
};
|
|
421
|
-
|
|
422
|
-
// SEAM (reqraft): consumer-injected editors for types reqraft doesn't
|
|
423
|
-
// ship (the IDE's processor-mappings, tool-catalog, test-cases,
|
|
424
|
-
// active-windows, collection-documents, data-provider, interface
|
|
425
|
-
// selectors, code-editor, …).
|
|
426
|
-
const Override =
|
|
427
|
-
componentOverrides?.[type as string] || componentOverrides?.[(rest as any).ui_type];
|
|
428
|
-
if (Override) {
|
|
429
|
-
return (
|
|
430
|
-
<Override
|
|
431
|
-
{...rest}
|
|
432
|
-
// The field's SHAPE, which `rest` does not carry: these three are
|
|
433
|
-
// destructured into named props above, so a host editor received a
|
|
434
|
-
// field it could not describe. `arg_schema` is the sub-schema a host
|
|
435
|
-
// sub-form renders FROM — without it the IDE's test-cases drawer fell
|
|
436
|
-
// back to humanising each key, so `Path`, `Actual` and `Expected` were
|
|
437
|
-
// asked for with no label of their own and no description, while the
|
|
438
|
-
// text sat one fetch away. `element_type`/`ui_element_type` travel with
|
|
439
|
-
// it: a sub-schema alone cannot say whether the value is one hash or a
|
|
440
|
-
// list of them.
|
|
441
|
-
arg_schema={arg_schema}
|
|
442
|
-
element_type={element_type}
|
|
443
|
-
ui_element_type={ui_element_type}
|
|
444
|
-
// Same reason as the three above: it is destructured out of `rest` so the
|
|
445
|
-
// primitive renderers do not spread it onto a DOM node, which also took
|
|
446
|
-
// it away from host editors — and a host editor is exactly what
|
|
447
|
-
// `inherit_props` exists to feed. A field declaring it got the values
|
|
448
|
-
// resolved and then had nowhere to send them, so every consumer
|
|
449
|
-
// downstream saw `undefined` and silently did nothing.
|
|
450
|
-
inheritedFromParent={inheritedFromParent}
|
|
451
|
-
name={name}
|
|
452
|
-
value={value}
|
|
453
|
-
onChange={(val: any, emittedType?: IQorusType, emittedIsFunction?: boolean) => {
|
|
454
|
-
const returnType = emittedType || currentType;
|
|
455
|
-
if (onChange && returnType) {
|
|
456
|
-
onChange(name, val, returnType, emittedIsFunction);
|
|
457
|
-
}
|
|
458
|
-
}}
|
|
459
|
-
/>
|
|
460
|
-
);
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
// Render the structured DataSchema editor for the schema object's
|
|
464
|
-
// `definition` hash — server-driven via `?action=options` (qorus#225).
|
|
465
|
-
if (
|
|
466
|
-
(type as string) === 'schema-definition' ||
|
|
467
|
-
(rest as any).ui_type === 'schema-definition'
|
|
468
|
-
) {
|
|
469
|
-
return (
|
|
470
|
-
<SchemaDefinitionEditor
|
|
471
|
-
{...((rest as any).fieldProps || {})}
|
|
472
|
-
value={
|
|
473
|
-
value === null || value === undefined
|
|
474
|
-
? undefined
|
|
475
|
-
: (value as IDataSchemaDefinition)
|
|
476
|
-
}
|
|
477
|
-
onChange={(definition) => handleChange(name, definition, 'hash')}
|
|
478
|
-
readOnly={rest.readonly || rest.disabled}
|
|
479
|
-
/>
|
|
480
|
-
);
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
// Render the Monaco DPQL editor for a DPQL match-expression field
|
|
484
|
-
// (alert rules / silences opt their `match` field in via `ui_type`).
|
|
485
|
-
if ((type as string) === 'dpql' || (rest as any).ui_type === 'dpql') {
|
|
486
|
-
return (
|
|
487
|
-
<DpqlEditor
|
|
488
|
-
value={typeof value === 'string' ? value : value == null ? '' : String(value)}
|
|
489
|
-
onChange={(next) => handleChange(name, next, 'string')}
|
|
490
|
-
readOnly={rest.readonly || rest.disabled}
|
|
491
|
-
/>
|
|
492
|
-
);
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
/* The error is checked BEFORE the spinner, and the spinner waits on the error
|
|
496
|
-
being absent.
|
|
497
|
-
|
|
498
|
-
A named `arg_schema` is fetched (`dataprovider/arg_schemas/<name>`), and when
|
|
499
|
-
that fetch failed `finalArgSchema` stayed undefined forever — so this spinner
|
|
500
|
-
returned on every subsequent render and the `if (error)` branch further down
|
|
501
|
-
was unreachable. The field sat on "Loading field data..." for the life of the
|
|
502
|
-
form with no way to find out why, which is indistinguishable from a request
|
|
503
|
-
that is merely slow. */
|
|
504
|
-
if (arg_schema && !finalArgSchema && error) {
|
|
505
|
-
return (
|
|
506
|
-
<ReqoreMessage intent='danger' size='small'>
|
|
507
|
-
{error}
|
|
508
|
-
</ReqoreMessage>
|
|
509
|
-
);
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
if (arg_schema && !finalArgSchema) {
|
|
513
|
-
/* One ROW, because this stands in for one field. It was a spinner reading
|
|
514
|
-
"Loading field data…", which is a different picture from every other
|
|
515
|
-
wait on the page and announces a delay the reader cannot act on. */
|
|
516
|
-
return <FormFieldsSkeleton rows={1} reason='arg-schema' />;
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
const renderAllowedValues = (currentType: IQorusType) => {
|
|
520
|
-
if (rest.allowed_values_creatable && (!currentInternalType || currentInternalType === 'auto')) {
|
|
521
|
-
return null;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
return (
|
|
525
|
-
<FieldAllowedValues
|
|
526
|
-
items={rest.allowed_values}
|
|
527
|
-
type={currentType as TQorusType}
|
|
528
|
-
elementType={ui_element_type || element_type}
|
|
529
|
-
value={value}
|
|
530
|
-
name={name}
|
|
531
|
-
onChange={handleChange}
|
|
532
|
-
// The picker heads itself with the field's own name rather than a
|
|
533
|
-
// generic "Select one:".
|
|
534
|
-
label={rest.display_name}
|
|
535
|
-
size={rest.size}
|
|
536
|
-
disabled={rest.disabled}
|
|
537
|
-
app={rest.app}
|
|
538
|
-
action={rest.action}
|
|
539
|
-
showDescription={rest.showDescription}
|
|
540
|
-
forceDropdown={rest.forceDropdown}
|
|
541
|
-
allowCreation={rest.allowed_values_creatable}
|
|
542
|
-
showSavedValues={showSavedValues}
|
|
543
|
-
readOnly={rest.readonly}
|
|
544
|
-
canAutoSelect={!size(rest.required_groups)}
|
|
545
|
-
/>
|
|
546
|
-
);
|
|
547
|
-
};
|
|
548
|
-
|
|
549
|
-
/* Text that may hold template references is edited in the chip editor
|
|
550
|
-
whenever the field offers templates (`RichTextFormField`, `text` format):
|
|
551
|
-
each reference is drawn as the name it was chosen by and the value stays the
|
|
552
|
-
plain string. Text holding a reference anywhere but its start
|
|
553
|
-
(`Interface $local:id failed`) never enters template mode, so in a textarea
|
|
554
|
-
its references read as their spelling. */
|
|
555
|
-
const offersTemplates = rest.allowTemplates !== false && size(rest.templates?.items) > 0;
|
|
556
|
-
const renderTextEditor = (editorType: string) =>
|
|
557
|
-
offersTemplates ?
|
|
558
|
-
<RichTextFormField
|
|
559
|
-
{...rest}
|
|
560
|
-
valueFormat='text'
|
|
561
|
-
singleLine={isSingleLineStringType(editorType)}
|
|
562
|
-
allowTemplates
|
|
563
|
-
/* Stringified rather than blanked: an `auto` field resolved to a text
|
|
564
|
-
type can be holding a number, and showing an empty box for it reads
|
|
565
|
-
as the value having been lost. A non-string coming back out is not a
|
|
566
|
-
value this editor produced, so it is ignored rather than written as
|
|
567
|
-
'' over what is there. */
|
|
568
|
-
value={String(value ?? '')}
|
|
569
|
-
onChange={(next) => {
|
|
570
|
-
if (typeof next !== 'string') {
|
|
571
|
-
return;
|
|
572
|
-
}
|
|
573
|
-
handleChange(name, next);
|
|
574
|
-
}}
|
|
575
|
-
/>
|
|
576
|
-
: <LongStringFormField
|
|
577
|
-
{...rest}
|
|
578
|
-
type={editorType}
|
|
579
|
-
onChange={(next) => handleChange(name, next)}
|
|
580
|
-
value={value}
|
|
581
|
-
/>;
|
|
582
|
-
|
|
583
|
-
const renderField = (currentType: IQorusType) => {
|
|
584
|
-
// If this field is set to null
|
|
585
|
-
if (isSetToNull) {
|
|
586
|
-
// Render a readonly field with null
|
|
587
|
-
return <StringFormField value='null' readOnly />;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
if (!currentType) {
|
|
591
|
-
return null;
|
|
592
|
-
}
|
|
593
|
-
// Check if there is a `<` in the type
|
|
594
|
-
const pos: number = (currentType as string).indexOf('<');
|
|
595
|
-
|
|
596
|
-
if (pos > 0) {
|
|
597
|
-
// Get the type from start to the position of the `<`
|
|
598
|
-
currentType = (currentType as string).slice(0, pos) as IQorusType;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
// Readonly fields whose value is a primitive (string / number / boolean)
|
|
602
|
-
// get the compact button shortcut below. Complex values — Slate
|
|
603
|
-
// documents for richtext, lists, hashes — MUST fall through to the
|
|
604
|
-
// switch-case so their kind-specific renderer (RichTextField,
|
|
605
|
-
// LongStringField, …) handles the read-only display. Rendering a Slate
|
|
606
|
-
// doc as a ReqoreButton label otherwise lands an object in JSX
|
|
607
|
-
// children and React crashes with "Objects are not valid as a React
|
|
608
|
-
// child (found: object with keys {type, children})".
|
|
609
|
-
const isPrimitiveValue =
|
|
610
|
-
value === null ||
|
|
611
|
-
value === undefined ||
|
|
612
|
-
typeof value === 'string' ||
|
|
613
|
-
typeof value === 'number' ||
|
|
614
|
-
typeof value === 'boolean';
|
|
615
|
-
|
|
616
|
-
if (rest.readonly && isPrimitiveValue) {
|
|
617
|
-
return (
|
|
618
|
-
<ReqoreButton
|
|
619
|
-
readOnly
|
|
620
|
-
fluid
|
|
621
|
-
label={value === default_value ? rest.default_value_display_name || value : value}
|
|
622
|
-
customTheme={{
|
|
623
|
-
main: 'main:darken:2',
|
|
624
|
-
}}
|
|
625
|
-
description={value === default_value ? rest.default_value_desc : undefined}
|
|
626
|
-
/>
|
|
627
|
-
);
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
// A creatable string field's value is held by the chip picker that
|
|
631
|
-
// `renderAllowedValues` draws below, so a raw editor here would be a
|
|
632
|
-
// second control for the same value.
|
|
633
|
-
if (
|
|
634
|
-
rendersCreatableValueSelect(
|
|
635
|
-
currentType,
|
|
636
|
-
rest.allowed_values_creatable,
|
|
637
|
-
rest.allowed_values
|
|
638
|
-
)
|
|
639
|
-
) {
|
|
640
|
-
return null;
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
// Non-creatable allowed_values render through FieldAllowedValues
|
|
644
|
-
// (`renderAllowedValues` below) — a radio CheckGroup for ≤3 simple values, a
|
|
645
|
-
// Select otherwise — matching the IDE (which returns null here). The exceptions
|
|
646
|
-
// are the editors that draw their own choices (`DRAWS_OWN_CHOICES_TYPES`: the
|
|
647
|
-
// enum radio group and the multi-select), which FieldAllowedValues skips, so they
|
|
648
|
-
// fall through. f5f2e11 had returned a second RadioGroup here, which duplicated
|
|
649
|
-
// FieldAllowedValues for string allowed-value fields.
|
|
650
|
-
if (
|
|
651
|
-
rest.allowed_values &&
|
|
652
|
-
!rest.allowed_values_creatable &&
|
|
653
|
-
!DRAWS_OWN_CHOICES_TYPES.includes(currentType as string)
|
|
654
|
-
) {
|
|
655
|
-
return null;
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
const renderFieldComponent = () => {
|
|
659
|
-
// Render the field based on the type. SEAM (reqraft): `long-string` is
|
|
660
|
-
// reqraft FormField vocabulary — the IDE calls it `string` (both render
|
|
661
|
-
// the textarea field).
|
|
662
|
-
switch (currentType) {
|
|
663
|
-
/* These four share an editor but not a shape: a `string` holds exactly
|
|
664
|
-
one line, while `data`, `binary` and `long-string` hold a document.
|
|
665
|
-
Without the type the field cannot tell them apart and treats them all
|
|
666
|
-
as documents, so an interface's Internal Name — which becomes a YAML
|
|
667
|
-
key — accepted Enter. Only text takes references; `data` and
|
|
668
|
-
`binary` are encoded content, where a chip would stand for nothing.
|
|
669
|
-
|
|
670
|
-
The semantic string formats (`email` … `phone`) are one line of text
|
|
671
|
-
whose identity the validator checks. They are in the option vocabulary
|
|
672
|
-
(`optionUiTypes`) and the single-line list, but had no case here, so a
|
|
673
|
-
field of one drew "Unknown type!" in every form. */
|
|
674
|
-
case 'string':
|
|
675
|
-
case 'long-string':
|
|
676
|
-
case 'email':
|
|
677
|
-
case 'uri':
|
|
678
|
-
case 'uuid':
|
|
679
|
-
case 'hostname':
|
|
680
|
-
case 'ipv4':
|
|
681
|
-
case 'ipv6':
|
|
682
|
-
case 'phone':
|
|
683
|
-
return renderTextEditor(currentType);
|
|
684
|
-
case 'data':
|
|
685
|
-
case 'binary':
|
|
686
|
-
return (
|
|
687
|
-
<LongStringFormField
|
|
688
|
-
{...rest}
|
|
689
|
-
/* Say what the field takes before it is typed into. The server
|
|
690
|
-
decodes a binary value as base64 unless it is told otherwise
|
|
691
|
-
(`lib/misc.ql` `_priv_parse_ui_hash_value_intern`, symmetric
|
|
692
|
-
with the `toBase64()` it encodes with), and bare hex is the
|
|
693
|
-
trap: it is not rejected, it is read as base64 and corrupts.
|
|
694
|
-
`validateField` already accepts exactly these three spellings
|
|
695
|
-
— this is that rule said up front instead of after the fact.
|
|
696
|
-
Kept short enough to read in one line at phone width, where a
|
|
697
|
-
longer hint wrapped out of the field's single visible row. */
|
|
698
|
-
placeholder={
|
|
699
|
-
currentType === 'binary' ?
|
|
700
|
-
((rest as { placeholder?: string }).placeholder ??
|
|
701
|
-
'Base64, 0x hex, or data: URL')
|
|
702
|
-
: (rest as { placeholder?: string }).placeholder
|
|
703
|
-
}
|
|
704
|
-
type={currentType}
|
|
705
|
-
onChange={(value) => handleChange(name, value)}
|
|
706
|
-
value={value}
|
|
707
|
-
/>
|
|
708
|
-
);
|
|
709
|
-
// reqraft ships these editors (see Field.tsx), but the compact /
|
|
710
|
-
// TemplateField path dispatches through AutoFormField — bridge them so
|
|
711
|
-
// they render here instead of falling through to "Unknown type!".
|
|
712
|
-
case 'markdown':
|
|
713
|
-
return (
|
|
714
|
-
<MarkdownFormField
|
|
715
|
-
{...rest}
|
|
716
|
-
onChange={(value) => handleChange(name, value)}
|
|
717
|
-
value={value}
|
|
718
|
-
/>
|
|
719
|
-
);
|
|
720
|
-
case 'cron':
|
|
721
|
-
return (
|
|
722
|
-
<CronFormField
|
|
723
|
-
{...rest}
|
|
724
|
-
onChange={(value) => handleChange(name, value)}
|
|
725
|
-
value={value}
|
|
726
|
-
/>
|
|
727
|
-
);
|
|
728
|
-
case 'processor':
|
|
729
|
-
case 'richtext': {
|
|
730
|
-
return (
|
|
731
|
-
<RichTextFormField
|
|
732
|
-
{...rest}
|
|
733
|
-
onChange={(value) => {
|
|
734
|
-
handleChange(name, value);
|
|
735
|
-
}}
|
|
736
|
-
value={value}
|
|
737
|
-
/>
|
|
738
|
-
);
|
|
739
|
-
}
|
|
740
|
-
case 'bool':
|
|
741
|
-
case 'boolean':
|
|
742
|
-
return (
|
|
743
|
-
<BooleanFormField
|
|
744
|
-
{...rest}
|
|
745
|
-
checked={!!value}
|
|
746
|
-
onChange={(checked) => handleChange(name, checked)}
|
|
747
|
-
/>
|
|
748
|
-
);
|
|
749
|
-
case 'date':
|
|
750
|
-
return (
|
|
751
|
-
<DateFormField
|
|
752
|
-
{...rest}
|
|
753
|
-
onChange={(val) => handleChange(name, val)}
|
|
754
|
-
value={value}
|
|
755
|
-
/>
|
|
756
|
-
);
|
|
757
|
-
case 'hash':
|
|
758
|
-
case 'free-hash': {
|
|
759
|
-
if (finalArgSchema) {
|
|
760
|
-
return (
|
|
761
|
-
<FormEngine
|
|
762
|
-
wrapperPadding='top'
|
|
763
|
-
flat
|
|
764
|
-
compact={compact}
|
|
765
|
-
// A row added just now: open the field it cannot be saved
|
|
766
|
-
// without, instead of making the author find it and click it.
|
|
767
|
-
expandFirstRequired={expandFirstRequired}
|
|
768
|
-
// Embedded sub-form: no scroll context of its own, so its toolbar
|
|
769
|
-
// isn't sticky and its header stays transparent (no dark backdrop).
|
|
770
|
-
compactNested
|
|
771
|
-
name={name}
|
|
772
|
-
uniqueName={uniqueName}
|
|
773
|
-
options={finalArgSchema}
|
|
774
|
-
value={value === null ? undefined : value}
|
|
775
|
-
templateFieldProps={{
|
|
776
|
-
level: level + 1,
|
|
777
|
-
}}
|
|
778
|
-
allowTemplates
|
|
779
|
-
onChange={(name, value) => {
|
|
780
|
-
handleChange(name, value, 'hash');
|
|
781
|
-
}}
|
|
782
|
-
columns={1}
|
|
783
|
-
minColumnWidth='150px'
|
|
784
|
-
stringTemplates={rest.templates}
|
|
785
|
-
size={rest.size}
|
|
786
|
-
disabled={rest.disabled}
|
|
787
|
-
// Forward consumer-injected editors into the nested sub-form
|
|
788
|
-
// so its own fields can render host-injected types (e.g. a
|
|
789
|
-
// `code-editor` override for a `body` sub-field inside a
|
|
790
|
-
// list-of-hash row). Was missing pre-qorus#347-followup —
|
|
791
|
-
// catches an existing gap surfaced by the nested inherit_props
|
|
792
|
-
// story.
|
|
793
|
-
componentOverrides={componentOverrides}
|
|
794
|
-
// qorus#347-followup (scope forwarding): thread the accumulated
|
|
795
|
-
// inheritance bag into the nested sub-form so its own fields'
|
|
796
|
-
// `inherit_props` can reach ancestor-scope values (e.g. a
|
|
797
|
-
// service-method row's `body` picking up `language` from the
|
|
798
|
-
// parent service form). The parent FormEngine populates this
|
|
799
|
-
// via TemplateField -> AutoFormField's `rest`.
|
|
800
|
-
inheritedFromParent={inheritedFromParent}
|
|
801
|
-
/>
|
|
802
|
-
);
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
const yamlValue = value ? typedToYaml({ type: 'hash', value }) : value;
|
|
806
|
-
|
|
807
|
-
return (
|
|
808
|
-
<ReqraftObjectFormField
|
|
809
|
-
value={yamlValue}
|
|
810
|
-
onChange={(value) => handleListObjectChange(name, value, 'hash')}
|
|
811
|
-
type='object'
|
|
812
|
-
dataType='yaml'
|
|
813
|
-
resultDataType='yaml'
|
|
814
|
-
{...rest}
|
|
815
|
-
/>
|
|
816
|
-
);
|
|
817
|
-
}
|
|
818
|
-
case 'list':
|
|
819
|
-
case 'free-list': {
|
|
820
|
-
if (
|
|
821
|
-
ui_element_type ||
|
|
822
|
-
element_type ||
|
|
823
|
-
(rest.element_allowed_values && !rest.element_allowed_values_creatable)
|
|
824
|
-
) {
|
|
825
|
-
const formatToServerValue = (value) => {
|
|
826
|
-
return (value || []).map((item) => {
|
|
827
|
-
// If this value is actually in allowed values, just return it
|
|
828
|
-
if (rest.element_allowed_values?.find((ev) => isEqual(ev.value, item))) {
|
|
829
|
-
return item;
|
|
830
|
-
}
|
|
831
|
-
|
|
832
|
-
return {
|
|
833
|
-
value: item,
|
|
834
|
-
type:
|
|
835
|
-
ui_element_type ||
|
|
836
|
-
element_type ||
|
|
837
|
-
rest.element_allowed_values?.find((ev) => isEqual(ev.value, item))?.ui_type,
|
|
838
|
-
};
|
|
839
|
-
});
|
|
840
|
-
};
|
|
841
|
-
|
|
842
|
-
// An element may arrive bare or in a `{value, type}` envelope. The
|
|
843
|
-
// envelope is what `formatToServerValue` writes, so a list the user
|
|
844
|
-
// has edited in this session is always wrapped — but a list read
|
|
845
|
-
// back from storage holds exactly what the server contract asks
|
|
846
|
-
// for, which for a list of strings is the strings themselves.
|
|
847
|
-
// Reaching for `.value` on those answered `undefined` for every
|
|
848
|
-
// element: the row rendered as an empty, invalid item, and the
|
|
849
|
-
// emptiness was then written back over the stored value.
|
|
850
|
-
const formatFromServerValue = (value) => {
|
|
851
|
-
return (value || []).map(getListElementValue);
|
|
852
|
-
};
|
|
853
|
-
|
|
854
|
-
const mappedAllowedValues = rest.element_allowed_values?.map((ev) => ({
|
|
855
|
-
...ev,
|
|
856
|
-
value: ev.value?.value,
|
|
857
|
-
}));
|
|
858
|
-
|
|
859
|
-
if (
|
|
860
|
-
rest.element_allowed_values &&
|
|
861
|
-
!rest.element_allowed_values_creatable &&
|
|
862
|
-
!rest.allowed_values_creatable
|
|
863
|
-
) {
|
|
864
|
-
if (size(rest.element_allowed_values) <= 3) {
|
|
865
|
-
return (
|
|
866
|
-
<FieldAllowedValuesCheckGroup
|
|
867
|
-
items={mappedAllowedValues}
|
|
868
|
-
value={formatFromServerValue(value)}
|
|
869
|
-
multiSelect
|
|
870
|
-
onChange={(_name, value) => {
|
|
871
|
-
handleChange(name, formatToServerValue(value));
|
|
872
|
-
}}
|
|
873
|
-
/>
|
|
874
|
-
);
|
|
875
|
-
}
|
|
876
|
-
|
|
877
|
-
// the multi-select reads each item's `{type, value}` envelope itself, as Field.tsx gives it;
|
|
878
|
-
// handing it the unwrapped values left every choice `undefined`, so a pick stored an empty
|
|
879
|
-
// element and drew an "undefined" chip
|
|
880
|
-
return (
|
|
881
|
-
<MultiSelectFormField
|
|
882
|
-
items={rest.element_allowed_values}
|
|
883
|
-
value={formatFromServerValue(value)}
|
|
884
|
-
onChange={(selected) => {
|
|
885
|
-
handleChange(name, formatToServerValue(selected));
|
|
886
|
-
}}
|
|
887
|
-
disabled={rest.disabled}
|
|
888
|
-
size={rest.size}
|
|
889
|
-
/>
|
|
890
|
-
);
|
|
891
|
-
}
|
|
892
|
-
|
|
893
|
-
const effectiveElementType = ui_element_type || element_type;
|
|
894
|
-
|
|
895
|
-
return (
|
|
896
|
-
<ArrayAuto
|
|
897
|
-
{...rest}
|
|
898
|
-
level={level + 1}
|
|
899
|
-
arg_schema={finalArgSchema}
|
|
900
|
-
name={name}
|
|
901
|
-
value={formatFromServerValue(value)}
|
|
902
|
-
allowed_values={rest.element_allowed_values}
|
|
903
|
-
allowed_values_creatable={rest.element_allowed_values_creatable}
|
|
904
|
-
type={effectiveElementType}
|
|
905
|
-
// Propagate compact into every row, exactly as the `hash` case
|
|
906
|
-
// above does for a single sub-form. `compact` is destructured
|
|
907
|
-
// out of `rest`, so without this each row's AutoFormField saw
|
|
908
|
-
// `compact: undefined` and its arg_schema sub-form fell back to
|
|
909
|
-
// the classic FormEngine — a list-of-hash field inside a compact
|
|
910
|
-
// form rendered stacked labels + an option filter, while every
|
|
911
|
-
// sibling field rendered as a compact read-first row.
|
|
912
|
-
compact={compact}
|
|
913
|
-
componentOverrides={componentOverrides}
|
|
914
|
-
// qorus#347-followup (scope forwarding): thread the accumulated
|
|
915
|
-
// inheritance bag through the list wrapper so each row's
|
|
916
|
-
// arg_schema sub-form sees it. ArrayAuto forwards this via
|
|
917
|
-
// TemplateField's `rest` into each row's AutoFormField, which
|
|
918
|
-
// hands it to the row's nested FormEngine (case 'hash' above).
|
|
919
|
-
inheritedFromParent={inheritedFromParent}
|
|
920
|
-
onChange={(name, value) => {
|
|
921
|
-
if (!size(value)) {
|
|
922
|
-
return handleChange(name, undefined);
|
|
923
|
-
}
|
|
924
|
-
|
|
925
|
-
handleChange(name, formatToServerValue(value));
|
|
926
|
-
}}
|
|
927
|
-
/>
|
|
928
|
-
);
|
|
929
|
-
}
|
|
930
|
-
|
|
931
|
-
const yamlValue = value ? typedToYaml({ type: 'list', value }) : value;
|
|
932
|
-
|
|
933
|
-
return (
|
|
934
|
-
<ReqraftObjectFormField
|
|
935
|
-
value={yamlValue}
|
|
936
|
-
onChange={(value) => handleListObjectChange(name, value, 'list')}
|
|
937
|
-
type='array'
|
|
938
|
-
dataType='yaml'
|
|
939
|
-
resultDataType='yaml'
|
|
940
|
-
{...rest}
|
|
941
|
-
/>
|
|
942
|
-
);
|
|
943
|
-
}
|
|
944
|
-
case 'int':
|
|
945
|
-
case 'integer':
|
|
946
|
-
case 'float':
|
|
947
|
-
case 'number':
|
|
948
|
-
return (
|
|
949
|
-
<NumberFormField
|
|
950
|
-
{...rest}
|
|
951
|
-
onChange={(value) => handleChange(name, value)}
|
|
952
|
-
value={value}
|
|
953
|
-
/>
|
|
954
|
-
);
|
|
955
|
-
// A connection's `connect_timeout` / `timeout` arrive from
|
|
956
|
-
// `getCreateConnectionOptions` as `type: 'timeout'` with a bare-integer
|
|
957
|
-
// default (45000) and an "in milliseconds" description. The value stays
|
|
958
|
-
// that integer millisecond count — TimeoutFormField only adds the
|
|
959
|
-
// unit-aware display. Extras are trimmed the same way as `byte-size`
|
|
960
|
-
// below: `rest` carries `templates`, which would flip the inner
|
|
961
|
-
// NumberFormField into its templates-dropdown variant.
|
|
962
|
-
case 'timeout':
|
|
963
|
-
return (
|
|
964
|
-
<TimeoutFormField
|
|
965
|
-
value={value}
|
|
966
|
-
onChange={(val) => handleChange(name, val)}
|
|
967
|
-
disabled={rest.disabled}
|
|
968
|
-
readOnly={rest.readonly}
|
|
969
|
-
size={rest.size}
|
|
970
|
-
aria-label={rest['aria-label']}
|
|
971
|
-
/>
|
|
972
|
-
);
|
|
973
|
-
case 'byte-size':
|
|
974
|
-
// The IDE spreads `{...rest}` here but its ByteSizeField ignores
|
|
975
|
-
// extras — reqraft's forwards them into the amount input, and `rest`
|
|
976
|
-
// carries `templates` (which would flip NumberFormField into its
|
|
977
|
-
// templates-dropdown variant), so only `aria-label` is forwarded.
|
|
978
|
-
return (
|
|
979
|
-
<ByteSizeFormField
|
|
980
|
-
value={value}
|
|
981
|
-
onChange={(val) => handleChange(name, val)}
|
|
982
|
-
disabled={rest.disabled}
|
|
983
|
-
readOnly={rest.readonly}
|
|
984
|
-
size={rest.size}
|
|
985
|
-
aria-label={rest['aria-label']}
|
|
986
|
-
/>
|
|
987
|
-
);
|
|
988
|
-
case 'enum': {
|
|
989
|
-
// Two option shapes describe the same enum: reqraft `allowed_values`
|
|
990
|
-
// ({ value: { type, value }, display_name, image }) and the IDE
|
|
991
|
-
// `items` ({ value, title, display_name?, image? }). Accept both so a
|
|
992
|
-
// server-driven enum field (e.g. language) renders its choices —
|
|
993
|
-
// previously only `allowed_values` was read, leaving `items` empty.
|
|
994
|
-
const enumItems = (rest.allowed_values as any[] | undefined)?.length
|
|
995
|
-
? (rest.allowed_values as any[]).map((av) => ({
|
|
996
|
-
label: av.display_name ?? String(allowedValueOf(av)),
|
|
997
|
-
value: allowedValueOf(av),
|
|
998
|
-
image: av.image,
|
|
999
|
-
icon: av.icon,
|
|
1000
|
-
}))
|
|
1001
|
-
: ((rest as any).items as any[] | undefined ?? []).map((it) => ({
|
|
1002
|
-
label: it.display_name ?? it.title ?? String(it.value),
|
|
1003
|
-
value: it.value,
|
|
1004
|
-
image: it.image,
|
|
1005
|
-
icon: it.icon,
|
|
1006
|
-
}));
|
|
1007
|
-
return (
|
|
1008
|
-
<RadioGroupFormField
|
|
1009
|
-
items={enumItems}
|
|
1010
|
-
value={value}
|
|
1011
|
-
onChange={(val) => handleChange(name, val)}
|
|
1012
|
-
disabled={rest.disabled}
|
|
1013
|
-
/>
|
|
1014
|
-
);
|
|
1015
|
-
}
|
|
1016
|
-
case 'url': {
|
|
1017
|
-
return (
|
|
1018
|
-
<UrlFormField
|
|
1019
|
-
{...rest}
|
|
1020
|
-
value={value}
|
|
1021
|
-
onChange={(val) => handleChange(name, val)}
|
|
1022
|
-
/>
|
|
1023
|
-
);
|
|
1024
|
-
}
|
|
1025
|
-
case 'select-string': {
|
|
1026
|
-
return (
|
|
1027
|
-
<SelectFormField
|
|
1028
|
-
items={(rest.allowed_values || []).map((av) => ({
|
|
1029
|
-
...av,
|
|
1030
|
-
value: allowedValueOf(av),
|
|
1031
|
-
}))}
|
|
1032
|
-
value={value}
|
|
1033
|
-
onChange={(val) => handleChange(name, val)}
|
|
1034
|
-
/>
|
|
1035
|
-
);
|
|
1036
|
-
}
|
|
1037
|
-
case 'select-array':
|
|
1038
|
-
case 'multi-select': {
|
|
1039
|
-
return (
|
|
1040
|
-
<MultiSelectFormField
|
|
1041
|
-
items={rest.allowed_values ?? []}
|
|
1042
|
-
value={(value as unknown[]) ?? []}
|
|
1043
|
-
onChange={(selected) => handleChange(name, selected)}
|
|
1044
|
-
canCreateItems={rest.allowed_values_creatable || !size(rest.allowed_values)}
|
|
1045
|
-
disabled={rest.disabled}
|
|
1046
|
-
size={rest.size}
|
|
1047
|
-
/>
|
|
1048
|
-
);
|
|
1049
|
-
}
|
|
1050
|
-
case 'file':
|
|
1051
|
-
case 'file-as-string': {
|
|
1052
|
-
return (
|
|
1053
|
-
<ReqraftFileFormField
|
|
1054
|
-
onChange={(val) => handleChange(name, val)}
|
|
1055
|
-
options={rest.type_options}
|
|
1056
|
-
value={value as IFileFormFieldValue}
|
|
1057
|
-
argSchema={finalArgSchema as any}
|
|
1058
|
-
{...rest}
|
|
1059
|
-
/>
|
|
1060
|
-
);
|
|
1061
|
-
}
|
|
1062
|
-
case 'rgbcolor': {
|
|
1063
|
-
return (
|
|
1064
|
-
<ColorFormField
|
|
1065
|
-
{...rest}
|
|
1066
|
-
value={!value ? undefined : value}
|
|
1067
|
-
onChange={(color) => handleChange(name, color)}
|
|
1068
|
-
/>
|
|
1069
|
-
);
|
|
1070
|
-
}
|
|
1071
|
-
/* An UNTYPED field is typed into, never asked for a type.
|
|
1072
|
-
|
|
1073
|
-
It used to show a type picker and "Please select data type" — a
|
|
1074
|
-
question about storage ("is this a Text or a Number?") that an author
|
|
1075
|
-
writing a value often cannot answer, asked before they could write
|
|
1076
|
-
anything. What is typed is stored untyped, exactly as template mode
|
|
1077
|
-
stores it; a value of an explicit type is set from the field's ⋮ menu
|
|
1078
|
-
(see `FormEngine`'s `getCustomMenuTemplateItems`). */
|
|
1079
|
-
case 'any':
|
|
1080
|
-
case 'auto':
|
|
1081
|
-
return renderTextEditor('string');
|
|
1082
|
-
default:
|
|
1083
|
-
return <ReqoreTag intent='danger' icon='SpamLine' label='Unknown type!' />;
|
|
1084
|
-
}
|
|
1085
|
-
};
|
|
1086
|
-
|
|
1087
|
-
return (
|
|
1088
|
-
<ReqoreControlGroup vertical={false} fluid={true} verticalAlign='flex-start'>
|
|
1089
|
-
{renderFieldComponent()}
|
|
1090
|
-
</ReqoreControlGroup>
|
|
1091
|
-
);
|
|
1092
|
-
};
|
|
1093
|
-
|
|
1094
|
-
/* No picker while the type is unresolved: the field is typed into instead
|
|
1095
|
-
(see the `auto` / `any` editor above). A field declaring several allowed
|
|
1096
|
-
types still picks between THOSE — that is a choice the schema offers, not a
|
|
1097
|
-
question about storage. */
|
|
1098
|
-
const typeIsUnresolved =
|
|
1099
|
-
!currentInternalType || isUntypedOptionType(currentInternalType);
|
|
1100
|
-
const showPicker =
|
|
1101
|
-
size(allowedTypes) > 1 ||
|
|
1102
|
-
(!typeIsUnresolved &&
|
|
1103
|
-
(!size(rest.allowed_values) ||
|
|
1104
|
-
(size(rest?.allowed_values) > 0 && !rest.allowed_values_creatable) ||
|
|
1105
|
-
!size(rest.element_allowed_values) ||
|
|
1106
|
-
(size(rest?.element_allowed_values) > 0 && !rest.element_allowed_values_creatable)) &&
|
|
1107
|
-
!isSetToNull &&
|
|
1108
|
-
(defaultType === 'auto' ||
|
|
1109
|
-
defaultType === 'any' ||
|
|
1110
|
-
currentType === 'auto' ||
|
|
1111
|
-
currentType === 'any'));
|
|
1112
|
-
|
|
1113
|
-
// A caller's own list is offered as the editors it names, so a soft type in
|
|
1114
|
-
// it is offered once, as its base type.
|
|
1115
|
-
const types = allowedTypes
|
|
1116
|
-
? uniqBy(
|
|
1117
|
-
allowedTypes.map((allowed) => {
|
|
1118
|
-
const name = editorTypeOf(allowed.name);
|
|
1119
|
-
return {
|
|
1120
|
-
...allowed,
|
|
1121
|
-
name,
|
|
1122
|
-
display_name:
|
|
1123
|
-
allowed.display_name ||
|
|
1124
|
-
getImmediateValueTypes().find((type) => type.name === name)?.display_name,
|
|
1125
|
-
};
|
|
1126
|
-
}),
|
|
1127
|
-
'name'
|
|
1128
|
-
)
|
|
1129
|
-
: getImmediateValueTypes();
|
|
1130
|
-
|
|
1131
|
-
if (error) {
|
|
1132
|
-
return <ReqoreMessage intent='danger'>{error}</ReqoreMessage>;
|
|
1133
|
-
}
|
|
1134
|
-
|
|
1135
|
-
if (arg_schema) {
|
|
1136
|
-
return (
|
|
1137
|
-
<ReqoreControlGroup vertical className='auto-field-schema-wrapper' fluid>
|
|
1138
|
-
{renderField(currentInternalType)}
|
|
1139
|
-
{currentInternalType && currentInternalType !== 'auto'
|
|
1140
|
-
? renderAllowedValues(currentInternalType)
|
|
1141
|
-
: null}
|
|
1142
|
-
</ReqoreControlGroup>
|
|
1143
|
-
);
|
|
1144
|
-
}
|
|
1145
|
-
|
|
1146
|
-
// Render type picker if the type is auto or any
|
|
1147
|
-
return (
|
|
1148
|
-
<ReqoreErrorBoundary>
|
|
1149
|
-
<ReqoreControlGroup {...rest} className={`auto-field-group`} vertical fluid>
|
|
1150
|
-
{showPicker && (
|
|
1151
|
-
<SelectFormField
|
|
1152
|
-
fixed
|
|
1153
|
-
flat
|
|
1154
|
-
minimal={rest.minimal}
|
|
1155
|
-
size={rest.size}
|
|
1156
|
-
items={types as ISelectFormFieldItem[]}
|
|
1157
|
-
/* A count on a fixed list of types says nothing the open list
|
|
1158
|
-
does not; the IDE's picker shows none either. */
|
|
1159
|
-
hideItemCount
|
|
1160
|
-
value={currentInternalType}
|
|
1161
|
-
onChange={(value) => {
|
|
1162
|
-
handleTypeChange(name, value as IQorusType);
|
|
1163
|
-
}}
|
|
1164
|
-
/>
|
|
1165
|
-
)}
|
|
1166
|
-
{renderField(currentInternalType)}
|
|
1167
|
-
{renderAllowedValues(currentInternalType)}
|
|
1168
|
-
{canBeNull && (
|
|
1169
|
-
<ReqoreButton
|
|
1170
|
-
intent={isSetToNull ? 'warning' : undefined}
|
|
1171
|
-
icon={isSetToNull ? 'CloseLine' : undefined}
|
|
1172
|
-
onClick={handleNullToggle}
|
|
1173
|
-
fixed
|
|
1174
|
-
>
|
|
1175
|
-
{isSetToNull ? 'Unset null' : 'Set as null'}
|
|
1176
|
-
</ReqoreButton>
|
|
1177
|
-
)}
|
|
1178
|
-
</ReqoreControlGroup>
|
|
1179
|
-
</ReqoreErrorBoundary>
|
|
1180
|
-
);
|
|
1181
|
-
}
|
|
1182
|
-
|
|
1183
|
-
export const AutoFormField = memo(AutoField) as React.FC<IAutoFieldProps>;
|