@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
|
@@ -33,6 +33,42 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
33
|
__setModuleDefault(result, mod);
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
47
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
+
function step(op) {
|
|
50
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
53
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
+
switch (op[0]) {
|
|
55
|
+
case 0: case 1: t = op; break;
|
|
56
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
+
default:
|
|
60
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
+
if (t[2]) _.ops.pop();
|
|
65
|
+
_.trys.pop(); continue;
|
|
66
|
+
}
|
|
67
|
+
op = body.call(thisArg, _);
|
|
68
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
+
}
|
|
71
|
+
};
|
|
36
72
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
73
|
var t = {};
|
|
38
74
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -57,7 +93,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
57
93
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
58
94
|
};
|
|
59
95
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
-
exports.TemplateField = exports.isTemplateAwareUiType = exports.BuiltInTemplateAwareUiTypes = exports.TemplateDropdownSelector = exports.CustomMenuItems = exports.ComponentMap = exports.TemplatesListProps = exports.isValueTemplate = exports.getTemplateValue = exports.getTemplateKey = void 0;
|
|
96
|
+
exports.TemplateField = exports.isTemplateAwareUiType = exports.BuiltInTemplateAwareUiTypes = exports.TemplateDropdownSelector = exports.CustomMenuItems = exports.DEFAULT_VALUE_TABS_LABELS = exports.NO_TEMPLATES_ON_OFFER = exports.ComponentMap = exports.TemplatesListProps = exports.isValueTemplate = exports.getTemplateValue = exports.getTemplateKey = void 0;
|
|
61
97
|
var react_1 = require("react");
|
|
62
98
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
63
99
|
// Verbatim port of qorus-ide `src/components/Field/template.tsx` (774 LOC,
|
|
@@ -76,7 +112,6 @@ Object.defineProperty(exports, "getTemplateValue", { enumerable: true, get: func
|
|
|
76
112
|
Object.defineProperty(exports, "isValueTemplate", { enumerable: true, get: function () { return templates_1.isValueTemplate; } });
|
|
77
113
|
var dpqlDetection_1 = require("../../../../helpers/dpqlDetection");
|
|
78
114
|
var templateItems_1 = require("../../../../helpers/templateItems");
|
|
79
|
-
var markdownRendererContext_1 = require("../../../Description/markdownRendererContext");
|
|
80
115
|
var validations_1 = require("../../../../helpers/validations");
|
|
81
116
|
var useDpqlProbe_1 = require("../../../dpqlEditor/useDpqlProbe");
|
|
82
117
|
var useQorusTypes_1 = require("../../../../hooks/useQorusTypes");
|
|
@@ -87,18 +122,22 @@ var builder_1 = require("../../expressions/builder");
|
|
|
87
122
|
var ExpressionField_1 = require("../../expressions/ExpressionField");
|
|
88
123
|
var useExpressions_1 = require("../../expressions/useExpressions");
|
|
89
124
|
var AutoFormField_1 = require("../auto/AutoFormField");
|
|
90
|
-
var Boolean_1 =
|
|
125
|
+
var Boolean_1 = __importStar(require("../boolean/Boolean"));
|
|
91
126
|
var Date_1 = require("../date/Date");
|
|
92
127
|
var File_1 = require("../file/File");
|
|
93
128
|
var LongString_1 = __importDefault(require("../long-string/LongString"));
|
|
94
|
-
var Number_1 =
|
|
129
|
+
var Number_1 = __importStar(require("../number/Number"));
|
|
95
130
|
var ReadOnlyTemplateTag_1 = require("./ReadOnlyTemplateTag");
|
|
96
131
|
var RichText_1 = require("../rich-text/RichText");
|
|
132
|
+
var TemplateBrowser_1 = require("./TemplateBrowser");
|
|
97
133
|
var common_1 = require("../../../../helpers/common");
|
|
98
134
|
var singleLineString_1 = require("../../../../helpers/singleLineString");
|
|
99
135
|
var optionUiTypes_1 = require("../../../../helpers/optionUiTypes");
|
|
136
|
+
var qorusTypeCatalogue_1 = require("../../../../helpers/qorusTypeCatalogue");
|
|
137
|
+
var expressions_1 = require("../../../../helpers/expressions");
|
|
138
|
+
var templateCompletions_1 = require("../../../smartEditor/templateCompletions");
|
|
139
|
+
var writtenAsText_1 = require("./writtenAsText");
|
|
100
140
|
var rowMenuContext_1 = require("../../engine/rowMenuContext");
|
|
101
|
-
var savedValues_1 = require("../allowed-values/savedValues");
|
|
102
141
|
/**
|
|
103
142
|
* How long the author must pause before typed text is sent to the DPQL
|
|
104
143
|
* probe. Long enough that a probe is not sent for every prefix of what is
|
|
@@ -129,13 +168,15 @@ var LongStringField = function (_a) {
|
|
|
129
168
|
var name = _a.name, onChange = _a.onChange, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "type", "level", "allowTemplates"]);
|
|
130
169
|
return ((0, jsx_runtime_1.jsx)(LongString_1.default, __assign({}, rest, { type: type, onChange: function (value) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, value); } })));
|
|
131
170
|
};
|
|
171
|
+
// `type` becomes the kind of number it holds: without it, a float field took every number for a
|
|
172
|
+
// whole one.
|
|
132
173
|
var Number = function (_a) {
|
|
133
174
|
var name = _a.name, onChange = _a.onChange, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "type", "level", "allowTemplates"]);
|
|
134
|
-
return ((0, jsx_runtime_1.jsx)(Number_1.default, __assign({}, rest, { onChange: function (value) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, value); } })));
|
|
175
|
+
return ((0, jsx_runtime_1.jsx)(Number_1.default, __assign({}, rest, { type: (0, Number_1.numberKindOf)(type), onChange: function (value) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, value); } })));
|
|
135
176
|
};
|
|
136
177
|
var BooleanField = function (_a) {
|
|
137
178
|
var name = _a.name, onChange = _a.onChange, value = _a.value, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "value", "type", "level", "allowTemplates"]);
|
|
138
|
-
return ((0, jsx_runtime_1.jsx)(Boolean_1.default, __assign({}, rest, { checked:
|
|
179
|
+
return ((0, jsx_runtime_1.jsx)(Boolean_1.default, __assign({}, rest, { checked: (0, Boolean_1.yesNoShown)(value), onChange: function (checked) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, checked); } })));
|
|
139
180
|
};
|
|
140
181
|
var DateField = function (_a) {
|
|
141
182
|
var name = _a.name, onChange = _a.onChange, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "type", "level", "allowTemplates"]);
|
|
@@ -149,6 +190,17 @@ var FileField = function (_a) {
|
|
|
149
190
|
var name = _a.name, onChange = _a.onChange, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "type", "level", "allowTemplates"]);
|
|
150
191
|
return ((0, jsx_runtime_1.jsx)(File_1.ReqraftFileFormField, __assign({}, rest, { onChange: function (value) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, value); } })));
|
|
151
192
|
};
|
|
193
|
+
/** The box a value written as text is drawn in, by `textWidth` (see it). */
|
|
194
|
+
var FIELD_WIDTH_BOX = {
|
|
195
|
+
width: '150px',
|
|
196
|
+
maxWidth: '100%',
|
|
197
|
+
minWidth: 'fit-content',
|
|
198
|
+
};
|
|
199
|
+
var CONTENT_WIDTH_BOX = { width: 'auto', maxWidth: '100%', minWidth: 0 };
|
|
200
|
+
/** A value beside the offer of an expression: the row's room left of the offer, never narrower than a text field. */
|
|
201
|
+
var OFFER_BESIDE_VALUE_BOX = { flex: '1 1 150px', width: 'auto', minWidth: '150px' };
|
|
202
|
+
/** The editor in a `content` box: never narrower than a free text field. */
|
|
203
|
+
var CONTENT_WIDTH_EDITOR = { minWidth: '150px' };
|
|
152
204
|
exports.ComponentMap = {
|
|
153
205
|
string: LongStringField,
|
|
154
206
|
number: Number,
|
|
@@ -163,6 +215,53 @@ exports.ComponentMap = {
|
|
|
163
215
|
richtext: RichTextField,
|
|
164
216
|
file: FileField,
|
|
165
217
|
};
|
|
218
|
+
/** Why a field that takes templates offers none here: its context's catalogue has none of its type. */
|
|
219
|
+
exports.NO_TEMPLATES_ON_OFFER = 'No templates are offered here for this field.';
|
|
220
|
+
/** The keyboard a whole number or a number is typed on, on the Value tab. */
|
|
221
|
+
var TEXTABLE_INPUT_MODES = {
|
|
222
|
+
int: 'numeric',
|
|
223
|
+
integer: 'numeric',
|
|
224
|
+
softint: 'numeric',
|
|
225
|
+
number: 'decimal',
|
|
226
|
+
float: 'decimal',
|
|
227
|
+
softfloat: 'decimal',
|
|
228
|
+
softnumber: 'decimal',
|
|
229
|
+
};
|
|
230
|
+
exports.DEFAULT_VALUE_TABS_LABELS = {
|
|
231
|
+
value: 'Value',
|
|
232
|
+
expression: 'Expression',
|
|
233
|
+
visual: 'Visual',
|
|
234
|
+
template: 'Template',
|
|
235
|
+
expressionTooltip: 'Write an expression - it also takes templates',
|
|
236
|
+
visualTooltip: 'Build the expression visually',
|
|
237
|
+
templateTooltip: 'Choose a template',
|
|
238
|
+
cannotShowExpression: "This expression can't be shown as a value.",
|
|
239
|
+
conditionTooltip: 'Write the condition as an expression',
|
|
240
|
+
conditionVisualTooltip: 'Build the condition visually',
|
|
241
|
+
cannotShowCondition: "This condition can't be shown as a value.",
|
|
242
|
+
templateShownOn: function (tab) { return "A template is shown on the ".concat(tab, " tab, not here."); },
|
|
243
|
+
replaceWithAValue: 'Replace it with a value',
|
|
244
|
+
// the sentence starts with the first type
|
|
245
|
+
conversion: function (from, to) {
|
|
246
|
+
return "".concat(from.charAt(0).toUpperCase()).concat(from.slice(1), " is converted to ").concat(to, " when the value is used; a value that does not convert fails");
|
|
247
|
+
},
|
|
248
|
+
undo: 'Undo',
|
|
249
|
+
undoTooltip: function (text) { return "Keep \"".concat(text, "\" as a value instead"); },
|
|
250
|
+
expressionDraftNotUsed: 'The Expression tab holds text that does not parse, so the field keeps this value until it does.',
|
|
251
|
+
};
|
|
252
|
+
var DEFAULT_SAVED_VALUES_LABELS = {
|
|
253
|
+
save: 'Save this value',
|
|
254
|
+
saveTooltip: 'Save this value to use it again',
|
|
255
|
+
use: 'Use a saved value',
|
|
256
|
+
remove: 'Remove saved value',
|
|
257
|
+
};
|
|
258
|
+
/** A badge's words: its label, or the badge itself when it is a string or a number. */
|
|
259
|
+
var badgeText = function (badge) {
|
|
260
|
+
var label = badge !== null && typeof badge === 'object' && 'label' in badge ?
|
|
261
|
+
badge.label
|
|
262
|
+
: badge;
|
|
263
|
+
return typeof label === 'string' || typeof label === 'number' ? String(label) : undefined;
|
|
264
|
+
};
|
|
166
265
|
var renderMenuActionRows = function (actions, closePopover, size) {
|
|
167
266
|
return actions.items.map(function (item, index) {
|
|
168
267
|
if ('isDivider' in item) {
|
|
@@ -216,12 +315,9 @@ exports.CustomMenuItems = (0, react_2.memo)(function (_a) {
|
|
|
216
315
|
}) })));
|
|
217
316
|
});
|
|
218
317
|
exports.TemplateDropdownSelector = (0, react_2.memo)(function (_a) {
|
|
219
|
-
var onItemSelect = _a.onItemSelect, onRemoveClick = _a.onRemoveClick, items = _a.items, templates = _a.templates, allowCustomValues = _a.allowCustomValues, hasOnlyAllowedValues = _a.hasOnlyAllowedValues, value = _a.value, size = _a.size, rest = __rest(_a, ["onItemSelect", "onRemoveClick", "items", "templates", "allowCustomValues", "hasOnlyAllowedValues", "value", "size"]);
|
|
220
|
-
/* The
|
|
221
|
-
|
|
222
|
-
and an element in it throws on its own circular owner. */
|
|
223
|
-
var renderMarkdown = (0, markdownRendererContext_1.useMarkdownRenderer)();
|
|
224
|
-
var shownItems = (0, react_2.useMemo)(function () { return (0, templateItems_1.renderTemplateItemDescriptions)((0, templateItems_1.templateItemsToShow)(items), renderMarkdown); }, [items, renderMarkdown]);
|
|
318
|
+
var onItemSelect = _a.onItemSelect, onRemoveClick = _a.onRemoveClick, items = _a.items, templates = _a.templates, allowCustomValues = _a.allowCustomValues, hasOnlyAllowedValues = _a.hasOnlyAllowedValues, value = _a.value, size = _a.size, templateBadge = _a.templateBadge, wholeRecords = _a.wholeRecords, rest = __rest(_a, ["onItemSelect", "onRemoveClick", "items", "templates", "allowCustomValues", "hasOnlyAllowedValues", "value", "size", "templateBadge", "wholeRecords"]);
|
|
319
|
+
/* The catalogue browsed: `TemplateBrowser` draws its descriptions at the hand-off to Reqore. */
|
|
320
|
+
var browsed = (0, react_2.useMemo)(function () { return ({ items: items }); }, [items]);
|
|
225
321
|
// One resolver for every surface that names a reference — the picker chip
|
|
226
322
|
// here, the read-only tag, and the compact row's expression summary. The
|
|
227
323
|
// row and this editor must agree: a reference that reads as its path when
|
|
@@ -236,10 +332,10 @@ exports.TemplateDropdownSelector = (0, react_2.memo)(function (_a) {
|
|
|
236
332
|
icon: 'ExchangeDollarLine',
|
|
237
333
|
});
|
|
238
334
|
}, [template]);
|
|
239
|
-
// SEAM (reqraft): the
|
|
240
|
-
//
|
|
241
|
-
|
|
242
|
-
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, children: [hasOnlyAllowedValues && ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { intent: 'warning', size: 'small', opaque: false, children: "This field has pre-defined allowed values, make sure the template you select is compatible with those" })), (0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { stack: true, children: [(0, jsx_runtime_1.jsx)(
|
|
335
|
+
// SEAM (reqraft): where the template comes from (the IDE: the app action that captures it), as the
|
|
336
|
+
// host says, beside its name
|
|
337
|
+
var badge = template && templateBadge ? templateBadge(template) : undefined;
|
|
338
|
+
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, children: [hasOnlyAllowedValues && ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { intent: 'warning', size: 'small', opaque: false, children: "This field has pre-defined allowed values, make sure the template you select is compatible with those" })), (0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { stack: true, children: [(0, jsx_runtime_1.jsx)(TemplateBrowser_1.TemplateBrowser, __assign({ className: 'template-selector', customTheme: exports.TemplatesListProps.listCustomTheme, minimal: true, compact: true, onItemSelect: onItemSelect, templates: browsed, wholeRecords: wholeRecords, focusFilter: true, label: label, leftIconProps: leftIconProps, badge: badge, caretPosition: 'right', size: size }, exports.TemplatesListProps)), allowCustomValues || value ?
|
|
243
339
|
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { customTheme: exports.TemplatesListProps.listCustomTheme, fixed: true, icon: 'CloseLine', tooltip: 'Remove template value', minimal: true, className: 'template-remove', compact: true, size: size, onClick: onRemoveClick })
|
|
244
340
|
: null] })] }));
|
|
245
341
|
});
|
|
@@ -262,10 +358,10 @@ var isTemplateAwareUiType = function (uiType, extra) {
|
|
|
262
358
|
};
|
|
263
359
|
exports.isTemplateAwareUiType = isTemplateAwareUiType;
|
|
264
360
|
var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
265
|
-
var _b, _c, _d;
|
|
266
|
-
var rowMenu = _a.rowMenu, value = _a.value, name = _a.name, onChange = _a.onChange,
|
|
267
|
-
|
|
268
|
-
allowTemplates =
|
|
361
|
+
var _b, _c, _d, _e, _f, _g;
|
|
362
|
+
var rowMenu = _a.rowMenu, value = _a.value, name = _a.name, onChange = _a.onChange, _h = _a.component, Comp = _h === void 0 ? AutoFormField_1.AutoFormField : _h, templates = _a.templates, interfaceContext = _a.interfaceContext, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
363
|
+
_j = _a.allowTemplates, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
364
|
+
allowTemplates = _j === void 0 ? true : _j, allowFunctions = _a.allowFunctions, allowTextExpressions = _a.allowTextExpressions, valueTabs = _a.valueTabs, valueTabsLabels = _a.valueTabsLabels, expressionModeLabels = _a.expressionModeLabels, _k = _a.textWidth, textWidth = _k === void 0 ? 'field' : _k, savedValues = _a.savedValues, templateBadge = _a.templateBadge, extraActions = _a.extraActions, componentOverrides = _a.componentOverrides, _l = _a.allowCustomValues, allowCustomValues = _l === void 0 ? true : _l, _m = _a.filterTemplatesByType, filterTemplatesByType = _m === void 0 ? true : _m, filterTemplatesFunc = _a.filterTemplatesFunc, componentFromType = _a.componentFromType, isFunction = _a.isFunction, isDefaultFunction = _a.isDefaultFunction, isDefaultTemplate = _a.isDefaultTemplate, returnType = _a.returnType, level = _a.level, className = _a.className, menuItems = _a.menuItems, menuActions = _a.menuActions, menuTrailingItems = _a.menuTrailingItems, reorder = _a.reorder, label = _a.label, rest = __rest(_a, ["rowMenu", "value", "name", "onChange", "component", "templates", "interfaceContext", "allowTemplates", "allowFunctions", "allowTextExpressions", "valueTabs", "valueTabsLabels", "expressionModeLabels", "textWidth", "savedValues", "templateBadge", "extraActions", "componentOverrides", "allowCustomValues", "filterTemplatesByType", "filterTemplatesFunc", "componentFromType", "isFunction", "isDefaultFunction", "isDefaultTemplate", "returnType", "level", "className", "menuItems", "menuActions", "menuTrailingItems", "reorder", "label"]);
|
|
269
365
|
var qorusTypes = (0, useQorusTypes_1.useQorusTypes)();
|
|
270
366
|
var functions = (0, useExpressions_1.useExpressions)({
|
|
271
367
|
allow: !!allowFunctions,
|
|
@@ -292,7 +388,7 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
292
388
|
}
|
|
293
389
|
var result = templates;
|
|
294
390
|
if (filterTemplatesByType) {
|
|
295
|
-
result = (0, templates_1.filterTemplatesByType)(templates, type, !!rest.arg_schema);
|
|
391
|
+
result = (0, templates_1.filterTemplatesByType)(templates, type, !!rest.arg_schema, qorusTypes.value, rest.base_type);
|
|
296
392
|
}
|
|
297
393
|
if (filterTemplatesFunc) {
|
|
298
394
|
result = filterTemplatesFunc(result);
|
|
@@ -318,7 +414,19 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
318
414
|
filterTemplatesByType,
|
|
319
415
|
JSON.stringify(rest.arg_schema),
|
|
320
416
|
filterTemplatesFunc,
|
|
417
|
+
qorusTypes.value,
|
|
418
|
+
rest.base_type,
|
|
321
419
|
]);
|
|
420
|
+
/* Where each template comes from, as the host says (`templateBadge`): the template picker showed it beside
|
|
421
|
+
the template held, and the lists of templates the value's text and an expression's text open show it in
|
|
422
|
+
the template's row - a text field's templates are picked there, not on a tab of their own (qorus#646). */
|
|
423
|
+
var sourceOfTemplate = (0, react_2.useMemo)(function () {
|
|
424
|
+
return templateBadge ?
|
|
425
|
+
function (template) { return badgeText(templateBadge(template)); }
|
|
426
|
+
: undefined;
|
|
427
|
+
}, [templateBadge]);
|
|
428
|
+
var listedTemplates = (0, react_2.useMemo)(function () { return (0, templateCompletions_1.withTemplateSources)(filteredTemplates, sourceOfTemplate); }, [filteredTemplates, sourceOfTemplate]);
|
|
429
|
+
var listedCatalogue = (0, react_2.useMemo)(function () { return (0, templateCompletions_1.withTemplateSources)(templates, sourceOfTemplate); }, [templates, sourceOfTemplate]);
|
|
322
430
|
// An `any`-typed field has no editor of its own until a concrete type is
|
|
323
431
|
// chosen, so it opened on the TYPE PICKER: before an author could say what
|
|
324
432
|
// they meant, they had to answer a question about storage — "is this a Text
|
|
@@ -343,6 +451,10 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
343
451
|
// picker and stayed there. A pick-only field (no custom values) is in
|
|
344
452
|
// template mode regardless, by the `!allowCustomValues` term.
|
|
345
453
|
var typeIsAnyLike = (0, optionUiTypes_1.isUntypedOptionType)(type);
|
|
454
|
+
/* a field of any type or a hash takes a record whole: a record and a Qog state's data are offered whole as well
|
|
455
|
+
as opened (qorus#646, David's review); a scalar field's are only opened */
|
|
456
|
+
var takesRecords = typeIsAnyLike ||
|
|
457
|
+
(0, qorusTypeCatalogue_1.qorusTypeTakesRecords)(qorusTypes.value, type, rest.base_type);
|
|
346
458
|
/* An EMPTY field, for the purpose of offering the template selector.
|
|
347
459
|
|
|
348
460
|
`null` is deliberately not empty. It is the DPQL null literal — a value
|
|
@@ -370,21 +482,82 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
370
482
|
/** Where this field lands when it is empty: an untyped one in template mode — see above. */
|
|
371
483
|
var emptyLandsOnTemplates = typeIsAnyLike && (hasTemplatesOnOffer || (!!allowCustomValues && !hasOnlyAllowedValues));
|
|
372
484
|
var opensOnTemplates = isEmptyValue && emptyLandsOnTemplates;
|
|
373
|
-
|
|
374
|
-
|
|
485
|
+
/* An untyped field holding null is written in the same text field, as `null`: the editor an untyped
|
|
486
|
+
field otherwise falls to drew null as an empty box, the same as a field holding nothing, so the
|
|
487
|
+
author could not tell the two apart (qorus#646). */
|
|
488
|
+
var nullWrittenAsText = value === null && typeIsAnyLike && !!allowCustomValues && !hasOnlyAllowedValues;
|
|
489
|
+
/* The tabs a value is entered on (qorus#646, David): Value · Expression · Visual where the field takes
|
|
490
|
+
templates and expressions written as text, Value · Template where it takes templates only, none where
|
|
491
|
+
it takes no templates. One value, three views: see `selectTab`. */
|
|
492
|
+
var valueTabIsText = (0, writtenAsText_1.isWrittenAsTextOnTheValueTab)(type) && !hasOnlyAllowedValues;
|
|
493
|
+
var tabsKind = !valueTabs || !allowTemplates || editorHandlesTemplates || rest.arg_schema ? undefined
|
|
494
|
+
: allowFunctions && allowTextExpressions && !hasOnlyAllowedValues ? 'full'
|
|
495
|
+
: 'template';
|
|
496
|
+
/** The value is an expression (its AST), as the host says. */
|
|
497
|
+
var valueIsExpression = !!(isFunction || isDefaultFunction) && value !== null && typeof value === 'object';
|
|
498
|
+
/** An expression that is nothing but one template (`value($record:{pos})`, as a host may hold a reference to
|
|
499
|
+
* a field): the Value tab shows it as that template, where it can show no other expression (qorus#646). */
|
|
500
|
+
var expressionTemplate = valueIsExpression ? (0, writtenAsText_1.templateOfExpression)(value) : undefined;
|
|
501
|
+
/** Where a saved value opens: an expression on Expression; a template on Value where it is written as
|
|
502
|
+
* text, else on Expression (or Template, for a template-only field); anything else on Value. */
|
|
503
|
+
var _o = (0, react_2.useState)(function () {
|
|
504
|
+
if (!tabsKind)
|
|
505
|
+
return 'value';
|
|
506
|
+
if (valueIsExpression)
|
|
507
|
+
return tabsKind === 'full' ? 'expression' : 'value';
|
|
508
|
+
if (typeof value === 'string' && (0, templates_1.isValueTemplate)(value) && !valueTabIsText) {
|
|
509
|
+
return tabsKind === 'full' ? 'expression' : 'template';
|
|
510
|
+
}
|
|
511
|
+
return 'value';
|
|
512
|
+
}), tab = _o[0], setTab = _o[1];
|
|
513
|
+
var opensInExpressionText = tabsKind === 'full' && tab === 'expression' && !valueIsExpression;
|
|
514
|
+
var tabsKindRef = (0, react_2.useRef)(tabsKind);
|
|
515
|
+
tabsKindRef.current = tabsKind;
|
|
516
|
+
/** What the Text view is seeded with when the value is not an expression yet; null outside it. */
|
|
517
|
+
var _p = (0, react_2.useState)(opensInExpressionText ? (0, writtenAsText_1.expressionTextOfValue)(value) : null), expressionSeed = _p[0], setExpressionSeed = _p[1];
|
|
518
|
+
/* What the author wrote on the Expression tab that the field does not hold (it did not parse), and the value
|
|
519
|
+
it was written over. The tab's editor goes when the tab is left; the next visit shows the text as it was
|
|
520
|
+
written while the field still holds that value, not the value written out (qorus#646). */
|
|
521
|
+
var expressionDraft = (0, react_2.useRef)(null);
|
|
522
|
+
var valueRef = (0, react_2.useRef)(value);
|
|
523
|
+
valueRef.current = value;
|
|
524
|
+
var handleExpressionDraft = (0, react_2.useCallback)(function (text) {
|
|
525
|
+
expressionDraft.current = text === undefined ? null : { text: text, over: valueRef.current };
|
|
526
|
+
}, []);
|
|
527
|
+
/** The draft the Expression tab's editor is given back on this visit; null when there is none. */
|
|
528
|
+
var _q = (0, react_2.useState)(null), expressionDraftText = _q[0], setExpressionDraftText = _q[1];
|
|
529
|
+
/** Whether the Expression tab was left with a draft (see the Value tab's note); read with the value it holds. */
|
|
530
|
+
var _r = (0, react_2.useState)(false), leftWithDraft = _r[0], setLeftWithDraft = _r[1];
|
|
531
|
+
var hasExpressionDraft = leftWithDraft && !!expressionDraft.current && (0, lodash_1.isEqual)(expressionDraft.current.over, value);
|
|
532
|
+
var _s = (0, react_2.useState)(tabsKind ?
|
|
533
|
+
tab === 'template' || (tab === 'value' && valueTabIsText)
|
|
534
|
+
: (isDefaultTemplate ||
|
|
535
|
+
(0, templates_1.isValueTemplate)(value) ||
|
|
536
|
+
!allowCustomValues ||
|
|
537
|
+
opensOnTemplates ||
|
|
538
|
+
nullWrittenAsText) &&
|
|
539
|
+
!!allowTemplates), isTemplateState = _s[0], setIsTemplate = _s[1];
|
|
375
540
|
var isTemplate = editorHandlesTemplates ? false : isTemplateState;
|
|
376
|
-
var
|
|
377
|
-
var
|
|
541
|
+
var _t = (0, react_2.useState)(tabsKind ? tab === 'expression' || tab === 'visual' : !!isDefaultFunction && !!allowFunctions), internalIsFunction = _t[0], setInternalIsFunction = _t[1];
|
|
542
|
+
var _u = (0, react_2.useState)(value), templateValue = _u[0], setTemplateValue = _u[1];
|
|
378
543
|
// Typed text that turned out to be an expression the author may accept.
|
|
379
|
-
var
|
|
544
|
+
var _v = (0, react_2.useState)(null), dpqlOffer = _v[0], setDpqlOffer = _v[1];
|
|
380
545
|
// The literal this field held before typed text switched it into
|
|
381
546
|
// expression mode — kept so the switch is undoable, and so the editor
|
|
382
547
|
// opens on the Text view the author was already writing in.
|
|
383
|
-
var
|
|
548
|
+
var _w = (0, react_2.useState)(null), expressionFromText = _w[0], setExpressionFromText = _w[1];
|
|
549
|
+
/* The view the expression editor (without value tabs) is on. It opens on Text (qorus#646, David); when it
|
|
550
|
+
is mounted again - an expression removed in Visual and put back empty by its host, as a row rule's
|
|
551
|
+
condition is - it opens where the author was, not back on Text. */
|
|
552
|
+
var _x = (0, react_2.useState)('text'), expressionMode = _x[0], setExpressionMode = _x[1];
|
|
384
553
|
// Texts the author has said no to. Without this, dismissing an offer (or
|
|
385
554
|
// undoing a switch) would re-detect the same text on the next render and
|
|
386
555
|
// ask again forever.
|
|
387
556
|
var declinedTexts = (0, react_2.useRef)(new Set());
|
|
557
|
+
/* What detection found for each text: the server's expression, and whether the text could stay a value of
|
|
558
|
+
the field's type ('offer') or could not ('switch'). An undone switch is asked about again (see
|
|
559
|
+
`undoExpressionFromText`), so the expression it would become is kept here. */
|
|
560
|
+
var detectedTexts = (0, react_2.useRef)(new Map());
|
|
388
561
|
var detectTimer = (0, react_2.useRef)(null);
|
|
389
562
|
var probeDpql = (0, useDpqlProbe_1.useDpqlProbe)();
|
|
390
563
|
var effectiveIsFunction = isFunction || internalIsFunction;
|
|
@@ -393,6 +566,12 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
393
566
|
if (isTemplate && (0, templates_1.isValueTemplate)(value)) {
|
|
394
567
|
setTemplateValue(value);
|
|
395
568
|
}
|
|
569
|
+
/* Emptied from outside the editor - the card's "Clear value", an undo, a host's reset - the text the
|
|
570
|
+
value is written in is emptied too. It kept its own copy, so a cleared value went on showing what it
|
|
571
|
+
had held (qorus#646: "Clear value" had no effect). The editor's own emptying sets this already. */
|
|
572
|
+
if (isEmptyValue && templateValue) {
|
|
573
|
+
setTemplateValue(null);
|
|
574
|
+
}
|
|
396
575
|
}, [JSON.stringify(value)]);
|
|
397
576
|
/* Clearing an untyped field returns it to the template selector, which is
|
|
398
577
|
where mounting it empty already lands.
|
|
@@ -451,8 +630,19 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
451
630
|
setIsTemplate(false);
|
|
452
631
|
}
|
|
453
632
|
}, [allowCustomValues]);
|
|
633
|
+
// null arriving later (written in the Text tab, say) is written in the text field too - see above
|
|
634
|
+
(0, react_2.useEffect)(function () {
|
|
635
|
+
if (!isTemplate && nullWrittenAsText && allowTemplates) {
|
|
636
|
+
setTemplateValue(null);
|
|
637
|
+
setIsTemplate(true);
|
|
638
|
+
}
|
|
639
|
+
}, [nullWrittenAsText, allowTemplates]);
|
|
454
640
|
(0, react_2.useEffect)(function () {
|
|
455
|
-
|
|
641
|
+
// a template on the Expression tab stays there: it is the expression editor's to show
|
|
642
|
+
if (!isTemplate &&
|
|
643
|
+
(0, templates_1.isValueTemplate)(value) &&
|
|
644
|
+
allowTemplates &&
|
|
645
|
+
!(tabsKind && internalIsFunction)) {
|
|
456
646
|
// In auto mode, leave user-typed dollar-strings alone ('$foo: hello'
|
|
457
647
|
// passes the loose check) — but a string that IS one well-formed token
|
|
458
648
|
// ($data:{…}, $config:item) must still flip into template mode, or an
|
|
@@ -479,20 +669,25 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
479
669
|
// When template key or template value change run the onChange function
|
|
480
670
|
(0, react_use_1.useUpdateEffect)(function () {
|
|
481
671
|
if (templateValue) {
|
|
482
|
-
|
|
672
|
+
/* On the tabs this text is the Value or the Template tab's - a value, never an expression -
|
|
673
|
+
whichever tab is open by the time it arrives: an edit sent as its field goes away (the tab
|
|
674
|
+
switched straight after it) arrives on the next tab (qorus#646). */
|
|
675
|
+
var asExpression = tabsKindRef.current ? false : effectiveIsFunction;
|
|
676
|
+
/* Read from the text where the field is written as text: a lone template takes its own
|
|
677
|
+
type in an untyped field, a scalar's literal is that literal, other text is text. The Value
|
|
678
|
+
tab's text is the value written as text too, even where the field takes no value of the
|
|
679
|
+
author's own (an untyped field's templates are picked there: qorus#646). */
|
|
680
|
+
if (templateSupportsCustomValues || (tabsKindRef.current && valueTabIsText)) {
|
|
681
|
+
var read = (0, writtenAsText_1.templateTextValue)(templateValue, type, filteredTemplates);
|
|
682
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, read.value, read.type, asExpression);
|
|
683
|
+
return;
|
|
684
|
+
}
|
|
685
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, templateValue, type, asExpression);
|
|
483
686
|
}
|
|
484
687
|
}, [JSON.stringify(templateValue)]);
|
|
485
688
|
// an editor that takes templates into its own text has no template mode to switch to: "Use Template"
|
|
486
689
|
// there emptied the field and showed nothing in its place
|
|
487
690
|
var showTemplateToggle = allowCustomValues && allowTemplates && !rest.arg_schema && !editorHandlesTemplates;
|
|
488
|
-
// Only a BRACED context ref (`$data:{…}` — machine-written, nobody types
|
|
489
|
-
// one) renders as the picker chip (named via `resolveTemplateLabel`)
|
|
490
|
-
// rather than as its raw text in a string editor. Plain word-path tokens
|
|
491
|
-
// (`$local:id`) are typeable, so per the build #123 review they keep the
|
|
492
|
-
// input that offers templates while typing. Mixed text-and-token strings
|
|
493
|
-
// keep the string editor too; the chip-in-editor treatment arrives with
|
|
494
|
-
// the rich-text string mode.
|
|
495
|
-
var templateValueIsBracedToken = (0, templates_1.isBracedTemplateToken)(templateValue);
|
|
496
691
|
/* An UNTYPED field can be typed into as well as picked from.
|
|
497
692
|
|
|
498
693
|
Template mode has a typable editor whenever the field's type can hold
|
|
@@ -508,9 +703,16 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
508
703
|
specific to that field: every empty untyped field with templates on
|
|
509
704
|
offer got the same downgrade. The editor still offers the same templates
|
|
510
705
|
on focus, so nothing is lost by being able to type as well. */
|
|
511
|
-
|
|
706
|
+
/* And so can a scalar: a whole number, a number or a yes/no is written as text too
|
|
707
|
+
(qorus#646). A template chosen into it is a chip in that text, not a pick-only
|
|
708
|
+
control that holds the template and nothing else, so text can be written around it;
|
|
709
|
+
what the field then holds is read from the text (writtenAsText). A date keeps its
|
|
710
|
+
date control. */
|
|
711
|
+
var templateSupportsCustomValues = allowCustomValues && (0, writtenAsText_1.isWrittenAsText)(type) && !hasOnlyAllowedValues;
|
|
512
712
|
var showTemplatesDropdown = allowTemplates && (!allowCustomValues || (isTemplate && !templateSupportsCustomValues));
|
|
513
713
|
var hasOnlyExpressions = !allowCustomValues && !allowTemplates && allowFunctions;
|
|
714
|
+
/** A date field with templates on offer: they are offered beside its date control. */
|
|
715
|
+
var dateTakesTemplates = type === 'date' && !!allowTemplates && hasTemplatesOnOffer && !hasOnlyAllowedValues;
|
|
514
716
|
// True when some input control renders besides the ⋮ menu. When nothing
|
|
515
717
|
// does (an empty `any` field: custom values are disallowed and the value's
|
|
516
718
|
// type is picked FROM the menu), the menu trigger is the field's only
|
|
@@ -530,8 +732,11 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
530
732
|
/* Emptying the text leaves the field where an empty field lands. For
|
|
531
733
|
an untyped field that is THIS editor: switching to custom mode here
|
|
532
734
|
mounted a different editor in its place, so deleting the last
|
|
533
|
-
character lost the cursor.
|
|
534
|
-
|
|
735
|
+
character lost the cursor. A field written as text (a whole number, a
|
|
736
|
+
number, a yes/no) is the same: deleting the template in it left a
|
|
737
|
+
different, empty editor in its place, and what was typed next went
|
|
738
|
+
nowhere. */
|
|
739
|
+
if (!((emptyLandsOnTemplates || templateSupportsCustomValues) && allowTemplates)) {
|
|
535
740
|
setIsTemplate(false);
|
|
536
741
|
}
|
|
537
742
|
setTemplateValue(null);
|
|
@@ -540,13 +745,14 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
540
745
|
else {
|
|
541
746
|
setTemplateValue(val);
|
|
542
747
|
}
|
|
543
|
-
}, [name, onChange, emptyLandsOnTemplates, allowTemplates]);
|
|
748
|
+
}, [name, onChange, emptyLandsOnTemplates, templateSupportsCustomValues, allowTemplates]);
|
|
544
749
|
var handleTemplateTextChange = (0, react_2.useCallback)(function (val) { return handleTemplateFieldChange(name, typeof val === 'string' ? val : ''); }, [handleTemplateFieldChange, name]);
|
|
545
750
|
var handleSelectTemplateFromList = (0, react_2.useCallback)(
|
|
546
751
|
// If the field has allowed values and supports templates, we do not want to overwrite the field type with the template type
|
|
547
752
|
function (item) {
|
|
548
753
|
// If the template type is richtext, we need to wrap the template value in the richtext template format
|
|
549
|
-
|
|
754
|
+
// the template's type (`templateType`): a list's badge is its type's name
|
|
755
|
+
var value = (0, templates_1.templateType)(item) === 'richtext' ?
|
|
550
756
|
[
|
|
551
757
|
{
|
|
552
758
|
type: 'paragraph',
|
|
@@ -572,23 +778,20 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
572
778
|
},
|
|
573
779
|
]
|
|
574
780
|
: item.value;
|
|
575
|
-
onChange(name, value, hasOnlyAllowedValues ? type :
|
|
781
|
+
onChange(name, value, hasOnlyAllowedValues ? type : (0, templates_1.templateType)(item));
|
|
576
782
|
}, [name, onChange]);
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
(
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
value !== undefined &&
|
|
590
|
-
value !== null &&
|
|
591
|
-
value !== '';
|
|
783
|
+
// SEAM (reqraft): the IDE computes `canSaveValue` here and renders a
|
|
784
|
+
// `SaveValueButton` in the controls menu — the saved-values storage is
|
|
785
|
+
// IDE-only, so the menu item is dropped (`allowSaving` is inert).
|
|
786
|
+
/* A template chosen beside a date control is the value at once, IN the template control: handed to
|
|
787
|
+
the form while the field was still drawing its date control, the reference reached the date
|
|
788
|
+
picker first, which threw on it ("Invalid ISO 8601 date time string"). */
|
|
789
|
+
var handleSelectDateTemplate = (0, react_2.useCallback)(function (item) {
|
|
790
|
+
if (typeof (item === null || item === void 0 ? void 0 : item.value) !== 'string')
|
|
791
|
+
return;
|
|
792
|
+
setIsTemplate(true);
|
|
793
|
+
setTemplateValue(item.value);
|
|
794
|
+
}, []);
|
|
592
795
|
var handleRemoveTemplateClick = (0, react_2.useCallback)(function () {
|
|
593
796
|
/* This is the `×` ON the template control, and it means "I do not want a
|
|
594
797
|
template here" — on a field whose menu offers no `Set Custom Value` it
|
|
@@ -644,6 +847,146 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
644
847
|
onChange === null || onChange === void 0 ? void 0 : onChange(name, undefined);
|
|
645
848
|
}
|
|
646
849
|
}, [name, onChange, value, templateValue]);
|
|
850
|
+
/* One value, three views (qorus#646, David). Value → Expression writes the literal or template as
|
|
851
|
+
expression text, emitting nothing until it is edited. Expression ↔ Visual is the editor's own toggle.
|
|
852
|
+
Expression → Value converts only a literal or a lone template; any other expression stays, and the
|
|
853
|
+
Value tab says it cannot show it and offers to replace it. Nothing is lost silently. */
|
|
854
|
+
/** Reads the Expression tab's text typed and not yet read (see `ExpressionField.flushRef`). */
|
|
855
|
+
var expressionFlush = (0, react_2.useRef)(null);
|
|
856
|
+
var selectTab = (0, react_2.useCallback)(function (next) { return __awaiter(void 0, void 0, void 0, function () {
|
|
857
|
+
var flushed, _a, envelope, template, literal, draft, keepsDraft;
|
|
858
|
+
var _b;
|
|
859
|
+
return __generator(this, function (_c) {
|
|
860
|
+
switch (_c.label) {
|
|
861
|
+
case 0:
|
|
862
|
+
if (next === tab)
|
|
863
|
+
return [2 /*return*/];
|
|
864
|
+
if (!(tab === 'expression')) return [3 /*break*/, 2];
|
|
865
|
+
return [4 /*yield*/, ((_b = expressionFlush.current) === null || _b === void 0 ? void 0 : _b.call(expressionFlush))];
|
|
866
|
+
case 1:
|
|
867
|
+
_a = _c.sent();
|
|
868
|
+
return [3 /*break*/, 3];
|
|
869
|
+
case 2:
|
|
870
|
+
_a = undefined;
|
|
871
|
+
_c.label = 3;
|
|
872
|
+
case 3:
|
|
873
|
+
flushed = _a;
|
|
874
|
+
// left with text that did not parse: the Value tab says the field keeps its value
|
|
875
|
+
setLeftWithDraft(tab === 'expression' && !flushed && !!expressionDraft.current);
|
|
876
|
+
envelope = flushed !== null && flushed !== void 0 ? flushed : (valueIsExpression ? { is_expression: true, value: value } : undefined);
|
|
877
|
+
if (next === 'value' || next === 'template') {
|
|
878
|
+
if (envelope) {
|
|
879
|
+
template = (0, writtenAsText_1.loneTemplateOf)(envelope);
|
|
880
|
+
literal = template === undefined ? (0, writtenAsText_1.loneValueOf)(envelope) : undefined;
|
|
881
|
+
if (template !== undefined) {
|
|
882
|
+
setTemplateValue(template);
|
|
883
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, template, type, false);
|
|
884
|
+
}
|
|
885
|
+
else if (literal !== undefined) {
|
|
886
|
+
setTemplateValue((0, writtenAsText_1.valueTextOf)(literal.value, type) || null);
|
|
887
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, literal.value, type, false);
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
setInternalIsFunction(false);
|
|
891
|
+
setExpressionFromText(null);
|
|
892
|
+
setIsTemplate(next === 'template' || valueTabIsText);
|
|
893
|
+
}
|
|
894
|
+
else {
|
|
895
|
+
/* The seed is the value written as text while it is not an expression yet. One that is shows itself:
|
|
896
|
+
a seed left from an earlier visit was shown in its place - the value as it was opened, not the
|
|
897
|
+
expression written since - and leaving the tab saved it (qorus#646). */
|
|
898
|
+
setExpressionSeed(!flushed && !valueIsExpression ? (0, writtenAsText_1.expressionTextOfValue)(value) : null);
|
|
899
|
+
draft = expressionDraft.current;
|
|
900
|
+
keepsDraft = !flushed && !!draft && (0, lodash_1.isEqual)(draft.over, value);
|
|
901
|
+
if (!keepsDraft)
|
|
902
|
+
expressionDraft.current = null;
|
|
903
|
+
setExpressionDraftText(keepsDraft ? draft.text : null);
|
|
904
|
+
setInternalIsFunction(true);
|
|
905
|
+
}
|
|
906
|
+
setTab(next);
|
|
907
|
+
return [2 /*return*/];
|
|
908
|
+
}
|
|
909
|
+
});
|
|
910
|
+
}); }, [tab, valueIsExpression, value, name, onChange, type, valueTabIsText]);
|
|
911
|
+
/** Replace what a tab cannot show with an empty value of its own kind. */
|
|
912
|
+
var replaceWithAValue = (0, react_2.useCallback)(function () {
|
|
913
|
+
setInternalIsFunction(false);
|
|
914
|
+
setTemplateValue(null);
|
|
915
|
+
setExpressionSeed(null);
|
|
916
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, undefined, type, false);
|
|
917
|
+
}, [name, onChange, type]);
|
|
918
|
+
/* A saved value is the value at once, shown where its kind is: a template on the Value tab where the
|
|
919
|
+
field is written as text, else on the Expression tab (or Template, for a template-only field); any
|
|
920
|
+
other value on the Value tab - or, without tabs, in template mode for a template. */
|
|
921
|
+
var takeSavedValue = (0, react_2.useCallback)(function (saved) {
|
|
922
|
+
var isSavedTemplate = typeof saved === 'string' && (0, templates_1.isValueTemplate)(saved);
|
|
923
|
+
setExpressionFromText(null);
|
|
924
|
+
setTemplateValue(typeof saved === 'string' ? saved : null);
|
|
925
|
+
if (tabsKindRef.current) {
|
|
926
|
+
var next = isSavedTemplate && !valueTabIsText ?
|
|
927
|
+
tabsKindRef.current === 'full' ?
|
|
928
|
+
'expression'
|
|
929
|
+
: 'template'
|
|
930
|
+
: 'value';
|
|
931
|
+
setExpressionSeed(next === 'expression' ? (0, writtenAsText_1.expressionTextOfValue)(saved) : null);
|
|
932
|
+
setInternalIsFunction(next === 'expression');
|
|
933
|
+
setIsTemplate(next === 'template' || (next === 'value' && valueTabIsText));
|
|
934
|
+
setTab(next);
|
|
935
|
+
}
|
|
936
|
+
else {
|
|
937
|
+
setExpressionSeed(null);
|
|
938
|
+
setInternalIsFunction(false);
|
|
939
|
+
setIsTemplate(isSavedTemplate && !!allowTemplates);
|
|
940
|
+
}
|
|
941
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, saved, type, false);
|
|
942
|
+
}, [name, onChange, type, valueTabIsText, allowTemplates]);
|
|
943
|
+
// the values saved for this field's type, and whether this value can be saved
|
|
944
|
+
var savedWords = __assign(__assign({}, DEFAULT_SAVED_VALUES_LABELS), savedValues === null || savedValues === void 0 ? void 0 : savedValues.labels);
|
|
945
|
+
var savedForType = (0, react_2.useMemo)(function () { var _a; return ((_a = savedValues === null || savedValues === void 0 ? void 0 : savedValues.items) !== null && _a !== void 0 ? _a : []).filter(function (item) { return item.type === type; }); }, [savedValues === null || savedValues === void 0 ? void 0 : savedValues.items, type]);
|
|
946
|
+
var editable = !rest.readonly && !rest.readOnly && !rest.disabled;
|
|
947
|
+
var canSaveValue = !!(savedValues === null || savedValues === void 0 ? void 0 : savedValues.onSave) &&
|
|
948
|
+
editable &&
|
|
949
|
+
type !== 'bool' &&
|
|
950
|
+
type !== 'boolean' &&
|
|
951
|
+
!hasOnlyAllowedValues &&
|
|
952
|
+
!valueIsExpression &&
|
|
953
|
+
!isEmptyValue &&
|
|
954
|
+
value !== null;
|
|
955
|
+
var canUseSavedValue = editable && savedForType.length > 0;
|
|
956
|
+
var savedValueItems = __spreadArray(__spreadArray([], (canSaveValue ?
|
|
957
|
+
[
|
|
958
|
+
{
|
|
959
|
+
label: savedWords.save,
|
|
960
|
+
icon: 'SaveLine',
|
|
961
|
+
tooltip: savedWords.saveTooltip,
|
|
962
|
+
className: 'save-value',
|
|
963
|
+
onClick: function () { return savedValues.onSave(value, type); },
|
|
964
|
+
},
|
|
965
|
+
]
|
|
966
|
+
: []), true), (canUseSavedValue ?
|
|
967
|
+
[
|
|
968
|
+
{
|
|
969
|
+
label: savedWords.use,
|
|
970
|
+
icon: 'HistoryLine',
|
|
971
|
+
className: 'use-saved-value',
|
|
972
|
+
items: savedForType.map(function (item) { return (__assign({ label: item.label, description: item.description, className: 'saved-value', onClick: function () { return takeSavedValue(item.value); } }, ((savedValues === null || savedValues === void 0 ? void 0 : savedValues.onRemove) ?
|
|
973
|
+
{
|
|
974
|
+
rightAction: {
|
|
975
|
+
icon: 'DeleteBinLine',
|
|
976
|
+
intent: 'danger',
|
|
977
|
+
minimal: true,
|
|
978
|
+
className: 'saved-value-remove',
|
|
979
|
+
tooltip: savedWords.remove,
|
|
980
|
+
onClick: function (event) {
|
|
981
|
+
event.stopPropagation();
|
|
982
|
+
savedValues.onRemove(item.id);
|
|
983
|
+
},
|
|
984
|
+
},
|
|
985
|
+
}
|
|
986
|
+
: {}))); }),
|
|
987
|
+
},
|
|
988
|
+
]
|
|
989
|
+
: []), true);
|
|
647
990
|
var handleTemplateToggleClick = (0, react_2.useCallback)(function () {
|
|
648
991
|
setInternalIsFunction(false);
|
|
649
992
|
onChange(name, undefined, undefined, false);
|
|
@@ -653,11 +996,23 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
653
996
|
var handleExpressionChange = (0, react_2.useCallback)(function (expressionValue, remove) {
|
|
654
997
|
if (remove) {
|
|
655
998
|
setInternalIsFunction(false);
|
|
999
|
+
setExpressionSeed(null);
|
|
656
1000
|
// The expression is gone, so there is no longer a switch to undo.
|
|
657
1001
|
setExpressionFromText(null);
|
|
658
1002
|
}
|
|
1003
|
+
/* On the Expression tab a lone template is kept as the expression the server parses it into,
|
|
1004
|
+
template(...): the option takes expressions (qorus#646, David). A template-only option has no
|
|
1005
|
+
Expression tab and keeps the bare template. A lone value (12, true) is that value, the field's own
|
|
1006
|
+
shape (see `loneValueOf`). */
|
|
1007
|
+
var onTabs = !!tabsKindRef.current;
|
|
1008
|
+
var literal = remove || !onTabs ? undefined : (0, writtenAsText_1.loneValueOf)(expressionValue);
|
|
1009
|
+
if (literal !== undefined) {
|
|
1010
|
+
setExpressionSeed((0, writtenAsText_1.expressionSeedOf)(literal.value));
|
|
1011
|
+
onChange(name, literal.value, type, false);
|
|
1012
|
+
return;
|
|
1013
|
+
}
|
|
659
1014
|
onChange(name, expressionValue === null || expressionValue === void 0 ? void 0 : expressionValue.value, expressionDataType, !remove);
|
|
660
|
-
}, [name, onChange, expressionDataType, value]);
|
|
1015
|
+
}, [name, onChange, expressionDataType, value, type]);
|
|
661
1016
|
// ─── Text typed into a plain field that is really a DPQL expression ───
|
|
662
1017
|
//
|
|
663
1018
|
// A field that accepts expressions still gets DPQL TYPED into it, in the
|
|
@@ -673,12 +1028,16 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
673
1028
|
// `helpers/dpqlDetection` for why a successful parse alone means nothing.
|
|
674
1029
|
var validationField = (0, react_2.useMemo)(function () { return ({
|
|
675
1030
|
validation_regex: rest.validation_regex,
|
|
1031
|
+
validation_regex_desc: rest.validation_regex_desc,
|
|
1032
|
+
example_value: rest.example_value,
|
|
676
1033
|
has_to_be_valid_identifier: rest.has_to_be_valid_identifier,
|
|
677
1034
|
has_to_have_value: rest.has_to_have_value,
|
|
678
1035
|
rules: rest.rules,
|
|
679
1036
|
arg_schema: rest.arg_schema,
|
|
680
1037
|
}); }, [
|
|
681
1038
|
rest.validation_regex,
|
|
1039
|
+
rest.validation_regex_desc,
|
|
1040
|
+
JSON.stringify(rest.example_value),
|
|
682
1041
|
rest.has_to_be_valid_identifier,
|
|
683
1042
|
rest.has_to_have_value,
|
|
684
1043
|
JSON.stringify(rest.rules),
|
|
@@ -688,9 +1047,16 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
688
1047
|
var _a;
|
|
689
1048
|
setDpqlOffer(null);
|
|
690
1049
|
setExpressionFromText(text);
|
|
1050
|
+
/* The value is an expression now, and the Text view shows it. A seed left from an earlier visit to
|
|
1051
|
+
the Expression tab - the value as it was then - was shown in its place, and leaving the tab saved
|
|
1052
|
+
it: what had just been typed was lost (qorus#646). */
|
|
1053
|
+
setExpressionSeed(null);
|
|
691
1054
|
setInternalIsFunction(true);
|
|
692
1055
|
setIsTemplate(false);
|
|
693
1056
|
setTemplateValue(null);
|
|
1057
|
+
// the Value tab never holds an expression: detected, it moves to the Expression tab, with an undo
|
|
1058
|
+
if (tabsKindRef.current === 'full')
|
|
1059
|
+
setTab('expression');
|
|
694
1060
|
// `dpql/parse` answers with the field-ready envelope
|
|
695
1061
|
// (`{is_expression, value}`); this field stores the inner AST and
|
|
696
1062
|
// signals the flag through `onChange`'s fourth argument, exactly as
|
|
@@ -703,8 +1069,20 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
703
1069
|
}
|
|
704
1070
|
declinedTexts.current.add(expressionFromText);
|
|
705
1071
|
setInternalIsFunction(false);
|
|
1072
|
+
if (tabsKind) {
|
|
1073
|
+
setTab('value');
|
|
1074
|
+
setIsTemplate(valueTabIsText);
|
|
1075
|
+
}
|
|
706
1076
|
setExpressionFromText(null);
|
|
707
1077
|
onChange === null || onChange === void 0 ? void 0 : onChange(name, expressionFromText, type, false);
|
|
1078
|
+
/* Text that cannot be a value of the field's type (`12 + 2` in a whole number) is not a value it can
|
|
1079
|
+
keep: put back, it is a value the field refuses. It is offered again as an expression, beside that
|
|
1080
|
+
refusal, so the way back is in sight; text that can be a value is kept as one, as the undo asked
|
|
1081
|
+
(David on FormEngine · Expression Typed On Value Switches With Undo, qorus#646). */
|
|
1082
|
+
var detected = detectedTexts.current.get(expressionFromText);
|
|
1083
|
+
if ((detected === null || detected === void 0 ? void 0 : detected.outcome) === 'switch') {
|
|
1084
|
+
setDpqlOffer({ text: expressionFromText, expression: detected.expression });
|
|
1085
|
+
}
|
|
708
1086
|
}, [expressionFromText, name, onChange, type]);
|
|
709
1087
|
var declineDpqlOffer = (0, react_2.useCallback)(function () {
|
|
710
1088
|
if (dpqlOffer) {
|
|
@@ -717,22 +1095,29 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
717
1095
|
enterExpressionFromText(dpqlOffer.text, dpqlOffer.expression);
|
|
718
1096
|
}
|
|
719
1097
|
}, [dpqlOffer, enterExpressionFromText]);
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
1098
|
+
/* The offer of an expression detected in text the field keeps, beside the field, in every layout: on the
|
|
1099
|
+
Value tab of a form's tabs too, where it is how an undone switch's text is made an expression again. */
|
|
1100
|
+
var dpqlOfferPrompt = dpqlOffer ?
|
|
1101
|
+
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { fixed: true, stack: true, size: rest.size, children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, icon: 'Functions', intent: 'info', className: 'dpql-detected-offer', tooltip: "\"".concat(dpqlOffer.text, "\" could be an expression. It is kept as text; use it as an expression instead?"), onClick: acceptDpqlOffer, children: "Use as expression" }), (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, icon: 'CloseLine', intent: 'info', className: 'dpql-detected-dismiss', tooltip: 'Keep it as plain text', onClick: declineDpqlOffer })] })
|
|
1102
|
+
: null;
|
|
1103
|
+
/* The offer beside the field it is of, to its right, and under it only where the row has no room for both: under
|
|
1104
|
+
it, with the field's message under that, an offer was one more line to read before the value (Foxhoundn, qlip
|
|
1105
|
+
#392: "move the `Use as an expression` to the right of the field"). */
|
|
1106
|
+
var withOfferBeside = function (field) {
|
|
1107
|
+
return dpqlOfferPrompt ?
|
|
1108
|
+
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { fluid: true, wrap: true, gapSize: 'small', verticalAlign: 'flex-start', className: 'dpql-offer-beside', children: [field, dpqlOfferPrompt] })
|
|
1109
|
+
: field;
|
|
1110
|
+
};
|
|
729
1111
|
// Detection only runs on a field that could hold an expression and is
|
|
730
1112
|
// currently showing a plain editor — never on a read-only field, a
|
|
731
1113
|
// fixed-value list, or one already in template or expression mode.
|
|
732
1114
|
var canDetectDpql = !!allowFunctions &&
|
|
733
1115
|
!!allowTextExpressions &&
|
|
734
1116
|
!effectiveIsFunction &&
|
|
735
|
-
|
|
1117
|
+
/* the template editor is text too: an expression written around a template is detected there; and a
|
|
1118
|
+
form's Value tab written as text takes any text, whatever the field says of custom values (an untyped
|
|
1119
|
+
option's did, and an expression typed there was kept as text, offered as nothing: qorus#646) */
|
|
1120
|
+
(!isTemplate || templateSupportsCustomValues || (tabsKind === 'full' && valueTabIsText)) &&
|
|
736
1121
|
!hasOnlyAllowedValues &&
|
|
737
1122
|
!rest.readonly &&
|
|
738
1123
|
!rest.readOnly &&
|
|
@@ -757,10 +1142,12 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
757
1142
|
var text = typeof value === 'string' ? value
|
|
758
1143
|
: Array.isArray(value) ? (0, common_1.richtextToString)(value)
|
|
759
1144
|
: undefined;
|
|
760
|
-
if (
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
1145
|
+
if (text && canDetectDpql && declinedTexts.current.has(text)) {
|
|
1146
|
+
// asked about already: an offer made for this very text (an undone switch's) stands, any other goes
|
|
1147
|
+
setDpqlOffer(function (offer) { return ((offer === null || offer === void 0 ? void 0 : offer.text) === text ? offer : null); });
|
|
1148
|
+
return undefined;
|
|
1149
|
+
}
|
|
1150
|
+
if (!canDetectDpql || !text || !(0, dpqlDetection_1.mightBeDpqlExpression)(text)) {
|
|
764
1151
|
setDpqlOffer(null);
|
|
765
1152
|
return undefined;
|
|
766
1153
|
}
|
|
@@ -773,10 +1160,13 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
773
1160
|
return;
|
|
774
1161
|
}
|
|
775
1162
|
var outcome = (0, dpqlDetection_1.classifyTypedText)({ text: text, type: type, field: validationField, parsed: parsed });
|
|
776
|
-
if (outcome
|
|
777
|
-
|
|
1163
|
+
if (outcome !== 'none') {
|
|
1164
|
+
detectedTexts.current.set(text, { expression: parsed.expression, outcome: outcome });
|
|
778
1165
|
}
|
|
779
|
-
|
|
1166
|
+
/* An expression detected is offered, never switched to: the author chooses (qorus#646, David's
|
|
1167
|
+
review: "@pos + @bezeichnung" became an expression without asking). Text that cannot be a value
|
|
1168
|
+
of the field's type is said to be one it refuses, beside the offer. */
|
|
1169
|
+
if (outcome !== 'none') {
|
|
780
1170
|
setDpqlOffer({ text: text, expression: parsed.expression });
|
|
781
1171
|
}
|
|
782
1172
|
else {
|
|
@@ -807,89 +1197,89 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
807
1197
|
the row's — so leaving this out of the published list meant template mode
|
|
808
1198
|
was a one-way door on the surface most options are edited from. */
|
|
809
1199
|
var canOfferCustomValue = showTemplateToggle && isTemplate && templateSupportsCustomValues;
|
|
810
|
-
var publishedItems = (0, react_2.useMemo)(function () {
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
{
|
|
815
|
-
label
|
|
816
|
-
icon: 'Functions',
|
|
817
|
-
tooltip: 'Run a function on this value',
|
|
818
|
-
onClick: handleSelectFunctionChange,
|
|
819
|
-
},
|
|
820
|
-
]
|
|
821
|
-
: []), true), (canOfferTemplate
|
|
822
|
-
? [
|
|
823
|
-
{
|
|
824
|
-
label: 'Use Template',
|
|
825
|
-
icon: 'MoneyDollarCircleLine',
|
|
826
|
-
tooltip: 'Use a template',
|
|
827
|
-
onClick: handleTemplateToggleClick,
|
|
828
|
-
},
|
|
829
|
-
]
|
|
830
|
-
: []), true), (canOfferCustomValue
|
|
831
|
-
? [
|
|
832
|
-
{
|
|
833
|
-
label: 'Use Custom Value',
|
|
834
|
-
icon: 'EditLine',
|
|
835
|
-
tooltip: 'Write the value here instead of choosing a template',
|
|
836
|
-
onClick: handleUseCustomValueClick,
|
|
837
|
-
},
|
|
1200
|
+
var publishedItems = (0, react_2.useMemo)(function () { return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], (tabsKind ?
|
|
1201
|
+
[]
|
|
1202
|
+
: __spreadArray(__spreadArray([], (canOfferExpression && !functions.loading ?
|
|
1203
|
+
[
|
|
1204
|
+
__assign(__assign({
|
|
1205
|
+
// in a condition field the label says what it is for; the value's tooltip would only repeat it
|
|
1206
|
+
label: (0, expressions_1.isConditionOption)(rest) ? 'Write a condition' : 'Use Expression', icon: 'Functions' }, ((0, expressions_1.isConditionOption)(rest) ? {} : { tooltip: 'Run a function on this value' })), { onClick: handleSelectFunctionChange }),
|
|
838
1207
|
]
|
|
839
|
-
: []), true), (
|
|
840
|
-
|
|
841
|
-
{
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
1208
|
+
: []), true), (canOfferTemplate ?
|
|
1209
|
+
[
|
|
1210
|
+
__assign(__assign({ label: 'Use Template', icon: 'MoneyDollarCircleLine' }, (hasTemplatesOnOffer ?
|
|
1211
|
+
{ tooltip: 'Use a template' }
|
|
1212
|
+
: {
|
|
1213
|
+
disabled: true,
|
|
1214
|
+
description: exports.NO_TEMPLATES_ON_OFFER,
|
|
1215
|
+
tooltip: exports.NO_TEMPLATES_ON_OFFER,
|
|
1216
|
+
})), { onClick: handleTemplateToggleClick }),
|
|
846
1217
|
]
|
|
847
|
-
: []), true), (
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
return (_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item, undefined, function () {
|
|
855
|
-
setIsTemplate(false);
|
|
856
|
-
setTemplateValue(null);
|
|
857
|
-
});
|
|
1218
|
+
: []), true)), true), (canOfferCustomValue && !tabsKind ?
|
|
1219
|
+
[
|
|
1220
|
+
{
|
|
1221
|
+
label: 'Use Custom Value',
|
|
1222
|
+
icon: 'EditLine',
|
|
1223
|
+
tooltip: 'Write the value here instead of choosing a template',
|
|
1224
|
+
onClick: handleUseCustomValueClick,
|
|
858
1225
|
},
|
|
859
|
-
|
|
860
|
-
|
|
1226
|
+
]
|
|
1227
|
+
: []), true), (menuItems !== null && menuItems !== void 0 ? menuItems : [])
|
|
1228
|
+
.filter(function (item) { return !('isDivider' in item); })
|
|
1229
|
+
.map(function (item) { return ({
|
|
1230
|
+
label: item.label,
|
|
1231
|
+
description: item.description,
|
|
1232
|
+
onClick: function () {
|
|
1233
|
+
var _a;
|
|
1234
|
+
return (_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item, undefined, function () {
|
|
1235
|
+
setIsTemplate(false);
|
|
1236
|
+
setTemplateValue(null);
|
|
1237
|
+
});
|
|
1238
|
+
},
|
|
1239
|
+
}); }), true), savedValueItems, true); }, [
|
|
861
1240
|
canOfferExpression,
|
|
862
1241
|
functions.loading,
|
|
863
1242
|
canOfferTemplate,
|
|
1243
|
+
hasTemplatesOnOffer,
|
|
864
1244
|
canOfferCustomValue,
|
|
865
1245
|
menuItems,
|
|
866
1246
|
handleSelectFunctionChange,
|
|
867
1247
|
handleTemplateToggleClick,
|
|
868
1248
|
handleUseCustomValueClick,
|
|
1249
|
+
// the saved values offered, and whether this value can be saved
|
|
869
1250
|
canSaveValue,
|
|
870
|
-
savedValues,
|
|
871
1251
|
value,
|
|
872
|
-
|
|
873
|
-
|
|
1252
|
+
savedForType,
|
|
1253
|
+
takeSavedValue,
|
|
874
1254
|
]);
|
|
875
1255
|
/* Keyed on WHICH items are offered, never on the items: they carry
|
|
876
1256
|
handlers, so they are a new array every render and a row comparing them
|
|
877
1257
|
by value would loop. */
|
|
878
1258
|
var publishedKey = [
|
|
879
|
-
canOfferExpression && !
|
|
880
|
-
canOfferTemplate ?
|
|
1259
|
+
canOfferExpression && !functions.loading ? 'expression' : '',
|
|
1260
|
+
canOfferTemplate ? "template".concat(hasTemplatesOnOffer ? '' : '-none-on-offer') : '',
|
|
881
1261
|
canOfferCustomValue ? 'custom-value' : '',
|
|
882
|
-
canSaveValue ? 'save-value' : '',
|
|
883
1262
|
"custom:".concat((menuItems !== null && menuItems !== void 0 ? menuItems : []).map(function (item) { var _a; return String((_a = item.label) !== null && _a !== void 0 ? _a : ''); }).join('|')),
|
|
1263
|
+
canSaveValue ? "save:".concat(JSON.stringify(value)) : '',
|
|
1264
|
+
canUseSavedValue ? "saved:".concat(savedForType.map(function (item) { return item.id; }).join('|')) : '',
|
|
884
1265
|
].join(',');
|
|
885
1266
|
(0, rowMenuContext_1.useRowMenuPublisher)(rowMenu, publishedKey, publishedItems);
|
|
886
1267
|
var renderControls = (0, react_2.useCallback)(function () {
|
|
887
|
-
|
|
888
|
-
var
|
|
1268
|
+
// on tabs, the tabs are the mode switch: the menu keeps value actions only
|
|
1269
|
+
var showFunctionsDropdown = !tabsKind &&
|
|
1270
|
+
allowFunctions &&
|
|
1271
|
+
!hasOnlyAllowedValues &&
|
|
1272
|
+
!rest.readonly &&
|
|
1273
|
+
!internalIsFunction;
|
|
1274
|
+
var showTemplatesButton = !tabsKind && showTemplateToggle && !isTemplate;
|
|
889
1275
|
// The way back out of template mode, where the editor draws no `×`.
|
|
890
|
-
var showCustomValueButton = showTemplateToggle && isTemplate && templateSupportsCustomValues;
|
|
1276
|
+
var showCustomValueButton = !tabsKind && showTemplateToggle && isTemplate && templateSupportsCustomValues;
|
|
891
1277
|
// The "Set value" label promises a way to set one — reorder rows alone don't.
|
|
892
|
-
var hasValueRows = showFunctionsDropdown ||
|
|
1278
|
+
var hasValueRows = showFunctionsDropdown ||
|
|
1279
|
+
showTemplatesButton ||
|
|
1280
|
+
showCustomValueButton ||
|
|
1281
|
+
(0, lodash_1.size)(menuItems) > 0 ||
|
|
1282
|
+
savedValueItems.length > 0;
|
|
893
1283
|
/* A lone group opens itself. Two of the menu's groups are collapsed
|
|
894
1284
|
sections, so a menu holding nothing but one of them asked for a click
|
|
895
1285
|
to reach the only thing on offer — on an untyped field, "Set Custom
|
|
@@ -903,15 +1293,23 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
903
1293
|
showCustomValueButton,
|
|
904
1294
|
(0, lodash_1.size)(menuActions === null || menuActions === void 0 ? void 0 : menuActions.items) > 0,
|
|
905
1295
|
(0, lodash_1.size)(menuItems) > 0,
|
|
1296
|
+
canUseSavedValue,
|
|
906
1297
|
].filter(Boolean).length === 1;
|
|
907
|
-
/*
|
|
908
|
-
|
|
909
|
-
|
|
1298
|
+
/* ONE menu per control. Where this field sits in a form ROW, the row
|
|
1299
|
+
already renders a ⋮ of its own, and drawing a second one beside it
|
|
1300
|
+
put two menus of slightly different widths on the same control —
|
|
1301
|
+
with the type choices an `any` field offers hidden in the narrower
|
|
1302
|
+
one. The items are published to the row instead (see
|
|
1303
|
+
`rowMenuContext`); outside a row there is nothing to publish into,
|
|
1304
|
+
so the field goes on drawing its own. */
|
|
1305
|
+
if (rowMenu) {
|
|
1306
|
+
return null;
|
|
1307
|
+
}
|
|
910
1308
|
if (hasOnlyExpressions) {
|
|
911
1309
|
return (showFunctionsDropdown ?
|
|
912
1310
|
functions.loading ?
|
|
913
1311
|
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreSkeleton, { size: rest.size })
|
|
914
|
-
: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, minimal: true, label: 'Create New Expression', className: 'function-selector', icon: 'Functions', tooltip: 'This field
|
|
1312
|
+
: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, minimal: true, label: 'Create New Expression', className: 'function-selector', icon: 'Functions', tooltip: 'This field takes an expression.', onClick: function () {
|
|
915
1313
|
setIsTemplate(false);
|
|
916
1314
|
setTemplateValue(null);
|
|
917
1315
|
onChange === null || onChange === void 0 ? void 0 : onChange(name, {
|
|
@@ -920,16 +1318,6 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
920
1318
|
} })
|
|
921
1319
|
: null);
|
|
922
1320
|
}
|
|
923
|
-
/* ONE menu per control. Where this field sits in a form ROW, the row
|
|
924
|
-
already renders a ⋮ of its own, and drawing a second one beside it
|
|
925
|
-
put two menus of slightly different widths on the same control —
|
|
926
|
-
with the type choices an `any` field offers hidden in the narrower
|
|
927
|
-
one. The items are published to the row instead (see
|
|
928
|
-
`rowMenuContext`); outside a row there is nothing to publish into,
|
|
929
|
-
so the field goes on drawing its own. */
|
|
930
|
-
if (rowMenu) {
|
|
931
|
-
return null;
|
|
932
|
-
}
|
|
933
1321
|
if (hasValueRows || (0, lodash_1.size)(menuActions === null || menuActions === void 0 ? void 0 : menuActions.items) > 0 || (0, lodash_1.size)(menuTrailingItems) > 0) {
|
|
934
1322
|
return ((0, jsx_runtime_1.jsx)(reqore_1.ReqorePopover, { component: reqore_1.ReqoreButton, closeOnTargetClick: true, closeOnInsideClick: false, isReqoreComponent: true, noWrapper: true, noArrow: true, placement: 'bottom-end', componentProps: {
|
|
935
1323
|
icon: 'More2Fill',
|
|
@@ -972,15 +1360,33 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
972
1360
|
}, handler: 'click', content: (0, jsx_runtime_1.jsxs)(reqore_1.ReqoreMenu, { size: rest.size, maxHeight: '400px', style: { overflow: 'auto' }, children: [showFunctionsDropdown ?
|
|
973
1361
|
functions.loading ?
|
|
974
1362
|
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreSkeleton, { size: rest.size })
|
|
975
|
-
: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, transparent: true, label: 'Use Expression', className: 'function-selector', icon: 'Functions', tooltip: 'Run a function on this value', onClick: handleSelectFunctionChange })
|
|
976
|
-
: null, showTemplatesButton ?
|
|
977
|
-
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreButton, { transparent: true, icon: 'MoneyDollarCircleLine', className: 'template-toggle',
|
|
1363
|
+
: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, transparent: true, label: (0, expressions_1.isConditionOption)(rest) ? 'Write a condition' : 'Use Expression', className: 'function-selector', icon: 'Functions', tooltip: (0, expressions_1.isConditionOption)(rest) ? undefined : 'Run a function on this value', onClick: handleSelectFunctionChange })
|
|
1364
|
+
: null, showTemplatesButton && !(showFunctionsDropdown && allowTextExpressions) ?
|
|
1365
|
+
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreButton, { transparent: true, icon: 'MoneyDollarCircleLine', className: 'template-toggle',
|
|
1366
|
+
// none on offer: shown, not taken, and saying why (as the menu's item does)
|
|
1367
|
+
tooltip: hasTemplatesOnOffer ? 'Use a template' : exports.NO_TEMPLATES_ON_OFFER, disabled: !hasTemplatesOnOffer, compact: true, size: rest.size, onClick: handleTemplateToggleClick, children: [' ', "Use Template", ' '] })
|
|
978
1368
|
: null, showCustomValueButton ?
|
|
979
1369
|
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreButton, { transparent: true, icon: 'EditLine', className: 'template-custom-value', tooltip: 'Write the value here instead of choosing a template', compact: true, size: rest.size, onClick: handleUseCustomValueClick, children: [' ', "Use Custom Value", ' '] })
|
|
980
1370
|
: null, (0, lodash_1.size)(menuActions === null || menuActions === void 0 ? void 0 : menuActions.items) > 0 ?
|
|
981
1371
|
(0, jsx_runtime_1.jsx)(MenuActionsSection, { actions: menuActions, size: rest.size, startExpanded: loneSectionStartsExpanded })
|
|
982
1372
|
: null, (0, lodash_1.size)(menuItems) > 0 ?
|
|
983
1373
|
(0, jsx_runtime_1.jsx)(exports.CustomMenuItems, { items: menuItems, setIsTemplate: setIsTemplate, setTemplateValue: setTemplateValue, startExpanded: loneSectionStartsExpanded })
|
|
1374
|
+
: null, canSaveValue ?
|
|
1375
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, transparent: true, icon: 'SaveLine', className: 'save-value', tooltip: savedWords.saveTooltip, size: rest.size, onClick: function () { return savedValues.onSave(value, type); }, children: savedWords.save })
|
|
1376
|
+
: null, canUseSavedValue ?
|
|
1377
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreMenuSection, { label: savedWords.use, icon: 'HistoryLine', className: 'use-saved-value', transparent: true, isCollapsed: !loneSectionStartsExpanded, children: savedForType.map(function (item) { return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreMenuItem, { className: 'saved-value', label: item.label, description: item.description, onClick: function () { return takeSavedValue(item.value); }, rightAction: (savedValues === null || savedValues === void 0 ? void 0 : savedValues.onRemove) ?
|
|
1378
|
+
{
|
|
1379
|
+
icon: 'DeleteBinLine',
|
|
1380
|
+
intent: 'danger',
|
|
1381
|
+
minimal: true,
|
|
1382
|
+
className: 'saved-value-remove',
|
|
1383
|
+
tooltip: savedWords.remove,
|
|
1384
|
+
onClick: function (event) {
|
|
1385
|
+
event.stopPropagation();
|
|
1386
|
+
savedValues.onRemove(item.id);
|
|
1387
|
+
},
|
|
1388
|
+
}
|
|
1389
|
+
: undefined }, item.id)); }) })
|
|
984
1390
|
: null, (0, lodash_1.size)(menuTrailingItems) > 0 ?
|
|
985
1391
|
(0, jsx_runtime_1.jsx)(MenuTrailingItems, { items: menuTrailingItems, size: rest.size })
|
|
986
1392
|
: null] }) }));
|
|
@@ -992,11 +1398,13 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
992
1398
|
handleSelectFunctionChange,
|
|
993
1399
|
handleTemplateToggleClick,
|
|
994
1400
|
handleUseCustomValueClick,
|
|
1401
|
+
allowTextExpressions,
|
|
995
1402
|
hasOnlyAllowedValues,
|
|
996
1403
|
isTemplate,
|
|
997
1404
|
rest.readonly,
|
|
998
1405
|
rest.size,
|
|
999
1406
|
showTemplateToggle,
|
|
1407
|
+
hasTemplatesOnOffer,
|
|
1000
1408
|
// reaches the menu through `templateSupportsCustomValues`
|
|
1001
1409
|
allowCustomValues,
|
|
1002
1410
|
hasOnlyExpressions,
|
|
@@ -1010,6 +1418,12 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
1010
1418
|
hasInputAffordance,
|
|
1011
1419
|
// the row decides whether this field draws a menu at all
|
|
1012
1420
|
rowMenu,
|
|
1421
|
+
tabsKind,
|
|
1422
|
+
canSaveValue,
|
|
1423
|
+
canUseSavedValue,
|
|
1424
|
+
savedForType,
|
|
1425
|
+
takeSavedValue,
|
|
1426
|
+
savedValues,
|
|
1013
1427
|
]);
|
|
1014
1428
|
// When the type is a list, and it has an element type - that element type is different
|
|
1015
1429
|
// from the field type, so we need to send down the full templates object
|
|
@@ -1031,6 +1445,105 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
1031
1445
|
rest.element_type,
|
|
1032
1446
|
type,
|
|
1033
1447
|
]);
|
|
1448
|
+
// ─── Value · Expression · Visual (or Value · Template) ───────────────────────────────────────────
|
|
1449
|
+
if (tabsKind && !rest.disabled) {
|
|
1450
|
+
var words_1 = __assign(__assign({}, exports.DEFAULT_VALUE_TABS_LABELS), valueTabsLabels);
|
|
1451
|
+
/** A type named inside a sentence: the host's own words, or the type catalogue's sentence form (none for no type). */
|
|
1452
|
+
var typeInSentence = (_e = words_1.typeName) !== null && _e !== void 0 ? _e : qorusTypes.getTypeSentenceForm;
|
|
1453
|
+
/* A condition field's Expression tab is called Expression, as every field's is: a condition is written as
|
|
1454
|
+
an expression, and the tab's hover says so (qorus#646). */
|
|
1455
|
+
var conditionField_1 = (0, expressions_1.isConditionOption)(rest);
|
|
1456
|
+
var expressionTabLabel_1 = words_1.expression;
|
|
1457
|
+
var tabButton = function (key, label, icon, tooltip) { return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, size: rest.size, icon: icon, active: tab === key, "aria-pressed": tab === key, "data-tab": key, className: "value-tab value-tab-".concat(key), tooltip: tooltip, disabled: rest.readOnly || rest.readonly, onClick: function () { return selectTab(key); }, children: label }, key)); };
|
|
1458
|
+
/* A lone template of another type than the field's is converted when the value is used: said as a
|
|
1459
|
+
warning, not a block - whether it converts depends on the data (qorus#646, David). */
|
|
1460
|
+
var loneTemplate_1 = typeof value === 'string' && (0, templates_1.isCompleteTemplateToken)(value) ? value : expressionTemplate;
|
|
1461
|
+
var loneTemplateType = loneTemplate_1 && !typeIsAnyLike ?
|
|
1462
|
+
(0, templates_1.templateType)((0, templates_1.findTemplate)(templates !== null && templates !== void 0 ? templates : {}, loneTemplate_1))
|
|
1463
|
+
: undefined;
|
|
1464
|
+
// the types inside the sentence; with either one not known there is nothing to say converts to what
|
|
1465
|
+
var conversionFrom = typeof loneTemplateType === 'string' && !(0, writtenAsText_1.sameValueType)(loneTemplateType, type) ?
|
|
1466
|
+
typeInSentence(loneTemplateType)
|
|
1467
|
+
: undefined;
|
|
1468
|
+
var conversionTo = conversionFrom ? typeInSentence(type) : undefined;
|
|
1469
|
+
var conversionNote_1 = conversionFrom && conversionTo ? words_1.conversion(conversionFrom, conversionTo) : undefined;
|
|
1470
|
+
var cannotShow_1 = function (message) { return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreMessage, { size: 'small', flat: true, opaque: false, intent: 'muted', className: 'value-tab-cannot-show', children: [message, ' ', (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, size: rest.size, className: 'value-tab-replace', onClick: replaceWithAValue, disabled: rest.readOnly || rest.readonly, children: words_1.replaceWithAValue })] })); };
|
|
1471
|
+
var valueBody = function () {
|
|
1472
|
+
var _a;
|
|
1473
|
+
if (valueIsExpression && expressionTemplate === undefined) {
|
|
1474
|
+
return cannotShow_1(conditionField_1 ? words_1.cannotShowCondition : words_1.cannotShowExpression);
|
|
1475
|
+
}
|
|
1476
|
+
if (valueTabIsText) {
|
|
1477
|
+
var valueText = ((0, jsx_runtime_1.jsx)(RichText_1.RichTextFormField, __assign({ wholeRecords: takesRecords, className: 'template-selector value-tab-text', valueFormat: 'text',
|
|
1478
|
+
/* A whole number or a number is typed on a numeric keyboard where the device has one, as its own
|
|
1479
|
+
input was (qorus#646); templates are picked from the list the field opens, and an expression
|
|
1480
|
+
is written on the Expression tab. */
|
|
1481
|
+
inputMode: TEXTABLE_INPUT_MODES[type], singleLine: (0, singleLineString_1.isSingleLineStringType)('string'), value: typeof templateValue === 'string' ? templateValue : ((expressionTemplate !== null && expressionTemplate !== void 0 ? expressionTemplate : (0, writtenAsText_1.valueTextOf)(value, type))), templates: listedTemplates,
|
|
1482
|
+
// a chip of a field not of this type is named as the catalogue names it
|
|
1483
|
+
namingTemplates: templates, allowTemplates: true, onChange: handleTemplateTextChange }, rest, { fixed: false, fluid: true,
|
|
1484
|
+
/* The value takes the row the tabs give it (qorus#646, David: a small box beside empty room
|
|
1485
|
+
was clicked beside, and offered nothing). An operand's own field sizes itself to its
|
|
1486
|
+
column instead - that is the field outside the tabs. */
|
|
1487
|
+
panelProps: __assign(__assign({}, rest.panelProps), { style: __assign(__assign({}, (_a = rest.panelProps) === null || _a === void 0 ? void 0 : _a.style), (dpqlOfferPrompt ? OFFER_BESIDE_VALUE_BOX : { width: '100%' })) }), "aria-label": fieldAriaLabel })));
|
|
1488
|
+
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, gapSize: 'small', children: [withOfferBeside(valueText), conversionNote_1 ?
|
|
1489
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { size: 'small', flat: true, opaque: false, intent: 'warning', className: 'value-tab-conversion', children: conversionNote_1 })
|
|
1490
|
+
: null] }));
|
|
1491
|
+
}
|
|
1492
|
+
if (loneTemplate_1 !== undefined || (typeof value === 'string' && (0, templates_1.isValueTemplate)(value))) {
|
|
1493
|
+
return cannotShow_1(words_1.templateShownOn(tabsKind === 'full' ? expressionTabLabel_1 : words_1.template));
|
|
1494
|
+
}
|
|
1495
|
+
var ownControl = ((0, jsx_runtime_1.jsx)(Component, __assign({ value: value, allowTemplates: false, onChange: onChange, name: name, level: level }, rest, { componentOverrides: componentOverrides }, componentTypeProp, { "aria-label": fieldAriaLabel, className: "".concat(className, " template-selector") })));
|
|
1496
|
+
// an expression detected in what the type's own control holds is offered beside it, as on the text
|
|
1497
|
+
return withOfferBeside(ownControl);
|
|
1498
|
+
};
|
|
1499
|
+
var expressionBody = function () { return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, gapSize: 'small', children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreErrorBoundary, { children: (0, jsx_runtime_1.jsx)(ExpressionField_1.ExpressionField
|
|
1500
|
+
/* A value that is not an expression yet is shown as the server reads it written alone:
|
|
1501
|
+
value(12) - so the Visual tab starts from the value, not from an operand with no operation. */
|
|
1502
|
+
, {
|
|
1503
|
+
/* A value that is not an expression yet is shown as the server reads it written alone:
|
|
1504
|
+
value(12) - so the Visual tab starts from the value, not from an operand with no operation. */
|
|
1505
|
+
value: {
|
|
1506
|
+
is_expression: true,
|
|
1507
|
+
value: value !== null && typeof value === 'object' ? value
|
|
1508
|
+
: !isEmptyValue && value !== null ?
|
|
1509
|
+
{ exp: 'value', args: [{ type: type, value: value }] }
|
|
1510
|
+
: undefined,
|
|
1511
|
+
}, initialText: expressionSeed !== null && expressionSeed !== void 0 ? expressionSeed : undefined, draftText: expressionDraftText !== null && expressionDraftText !== void 0 ? expressionDraftText : undefined, onDraftChange: handleExpressionDraft, heldAsValue: !isEmptyValue && value !== null && typeof value !== 'object', componentOverrides: componentOverrides, localTemplates: listedCatalogue, type: type, returnType: (returnType || expressionDataType),
|
|
1512
|
+
// a field of a type the catalogue does not list takes what its base type takes
|
|
1513
|
+
returnBaseType: returnType ? undefined : rest.base_type, onChange: handleExpressionChange, readOnly: rest.readOnly || rest.disabled, expressions: rest.expressions, expressionsUrl: rest.expressions_url, fields: rest.dpql_fields,
|
|
1514
|
+
/* The record the server names for the option (`dpql_provider`: its connection and path), with the
|
|
1515
|
+
server's own default record type. It was never read: the server sends it, and the Text view
|
|
1516
|
+
offered no field of the record (qorus#646). */
|
|
1517
|
+
provider: rest.dpql_provider, recordType: rest.dpql_provider ? 'record' : undefined, serverHandled: rest.server_expression_handling,
|
|
1518
|
+
// a condition (a Qog if state's value, a while or for block's condition), marked by the host
|
|
1519
|
+
condition: (0, expressions_1.isConditionOption)(rest), extraActions: extraActions, size: rest.size, defaultMode: tab === 'visual' ? 'visual' : 'text', requestedMode: tab === 'visual' ? 'visual' : 'text', hideModeToggle: true, flushRef: expressionFlush,
|
|
1520
|
+
// no language server: the Visual tab is where the expression is built
|
|
1521
|
+
onTextUnavailable: function () { return setTab('visual'); }, reorder: reorder }) }), expressionFromText !== null ?
|
|
1522
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { fixed: true, compact: true, minimal: true, icon: 'ArrowGoBackLine', size: rest.size, className: 'dpql-detected-undo', tooltip: words_1.undoTooltip(expressionFromText), onClick: undoExpressionFromText, children: words_1.undo })
|
|
1523
|
+
: null] })); };
|
|
1524
|
+
var templateBody = function () { return ((0, jsx_runtime_1.jsx)(exports.TemplateDropdownSelector, { wholeRecords: takesRecords, allowCustomValues: false, templates: templates, value: typeof value === 'string' && (0, templates_1.isValueTemplate)(value) ? value : null, items: filteredTemplates === null || filteredTemplates === void 0 ? void 0 : filteredTemplates.items, onItemSelect: handleSelectTemplateFromList, onRemoveClick: replaceWithAValue, templateBadge: templateBadge, size: rest.size, label: label, hasOnlyAllowedValues: hasOnlyAllowedValues })); };
|
|
1525
|
+
/* A field that takes templates and no expression, whose value is written as text: the text takes its
|
|
1526
|
+
templates as chips, from the list it opens, so a Template tab beside it would be a second way to do the
|
|
1527
|
+
one thing (qorus#646, David). It is the value alone, with the field's menu beside it. */
|
|
1528
|
+
if (tabsKind === 'template' && valueTabIsText) {
|
|
1529
|
+
var controls = renderControls();
|
|
1530
|
+
return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, gapSize: 'small', className: 'value-tabs-field value-only', children: controls ?
|
|
1531
|
+
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { fluid: true, size: rest.size, verticalAlign: 'flex-start', children: [valueBody(), controls] })
|
|
1532
|
+
: valueBody() }));
|
|
1533
|
+
}
|
|
1534
|
+
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, gapSize: 'small', className: 'value-tabs-field', children: [(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { fluid: true, size: rest.size, verticalAlign: 'center', children: [(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { stack: true, size: rest.size, className: 'value-tabs', fixed: true, children: [tabButton('value', words_1.value, 'EditLine'), tabsKind === 'full' ?
|
|
1535
|
+
[
|
|
1536
|
+
tabButton('expression', expressionTabLabel_1, 'CodeLine', conditionField_1 ? words_1.conditionTooltip : words_1.expressionTooltip),
|
|
1537
|
+
tabButton('visual', words_1.visual, 'NodeTree', conditionField_1 ? words_1.conditionVisualTooltip : words_1.visualTooltip),
|
|
1538
|
+
]
|
|
1539
|
+
: tabButton('template', words_1.template, 'MoneyDollarCircleLine', words_1.templateTooltip)] }), renderControls()] }), tab === 'value' && hasExpressionDraft ?
|
|
1540
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { size: 'small', flat: true, opaque: false, intent: 'warning', className: 'value-tab-expression-draft', children: words_1.expressionDraftNotUsed })
|
|
1541
|
+
: null, tab === 'value' ?
|
|
1542
|
+
valueBody()
|
|
1543
|
+
: tab === 'template' ?
|
|
1544
|
+
templateBody()
|
|
1545
|
+
: expressionBody()] }));
|
|
1546
|
+
}
|
|
1034
1547
|
if (effectiveIsFunction && !hasOnlyAllowedValues) {
|
|
1035
1548
|
// SEAM (reqraft): `allowTextExpressions` swaps the IDE's bare builder
|
|
1036
1549
|
// for the ExpressionField shell (Visual = the same builder, Text = the
|
|
@@ -1045,13 +1558,21 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
1045
1558
|
// rest-spread; the expression shell needs them explicitly or the
|
|
1046
1559
|
// builder's operands render "Unknown type!" for any consumer
|
|
1047
1560
|
// ui_type (an assertion's `test-reference` Value, for one).
|
|
1048
|
-
componentOverrides: componentOverrides, localTemplates:
|
|
1561
|
+
componentOverrides: componentOverrides, localTemplates: listedCatalogue, type: type, returnType: (returnType || expressionDataType),
|
|
1562
|
+
// a field of a type the catalogue does not list takes what its base type takes
|
|
1563
|
+
returnBaseType: returnType ? undefined : rest.base_type, onChange: handleExpressionChange, readOnly: rest.readOnly || rest.disabled, expressions: rest.expressions, expressionsUrl: rest.expressions_url,
|
|
1049
1564
|
// the record's fields for the Text view, from the field's schema (`dpql_fields`)
|
|
1050
|
-
fields: rest.dpql_fields,
|
|
1051
|
-
//
|
|
1052
|
-
|
|
1053
|
-
//
|
|
1054
|
-
|
|
1565
|
+
fields: rest.dpql_fields,
|
|
1566
|
+
// the record the server names for the option (see above)
|
|
1567
|
+
provider: rest.dpql_provider, recordType: rest.dpql_provider ? 'record' : undefined, serverHandled: rest.server_expression_handling,
|
|
1568
|
+
// a condition (a Qog if state's value, a while or for block's condition), marked by the host
|
|
1569
|
+
condition: (0, expressions_1.isConditionOption)(rest), extraActions: extraActions, size: rest.size, modeLabels: expressionModeLabels,
|
|
1570
|
+
/* An expression opens on its Text view, the first of Text · Visual, as the value's tabs open on
|
|
1571
|
+
Expression before Visual (qorus#646, David); without a language server it falls back to
|
|
1572
|
+
Visual by itself. It opened on Visual, on an empty "Select operation", unless the
|
|
1573
|
+
expression had just been typed as text. Mounted again, it opens on the view the author
|
|
1574
|
+
was on - except for an expression just typed as text, which is shown as the text it is. */
|
|
1575
|
+
defaultMode: expressionFromText !== null ? 'text' : expressionMode, onModeChange: setExpressionMode, reorder: reorder }) }), expressionFromText !== null ?
|
|
1055
1576
|
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { fixed: true, compact: true, minimal: true, icon: 'ArrowGoBackLine',
|
|
1056
1577
|
// No `intent` with `minimal`: a Reqore intent is a FILL, and
|
|
1057
1578
|
// `muted` as TEXT is 1.3:1 on the app surface.
|
|
@@ -1061,27 +1582,44 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
1061
1582
|
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreErrorBoundary, { children: (0, jsx_runtime_1.jsx)(builder_1.ExpressionBuilder, { value: {
|
|
1062
1583
|
is_expression: true,
|
|
1063
1584
|
value: value,
|
|
1064
|
-
}, componentOverrides: componentOverrides, localTemplates:
|
|
1585
|
+
}, componentOverrides: componentOverrides, localTemplates: listedCatalogue, level: level, type: type, returnType: (returnType || expressionDataType),
|
|
1586
|
+
// a field of a type the catalogue does not list takes what its base type takes
|
|
1587
|
+
returnBaseType: returnType ? undefined : rest.base_type, onChange: handleExpressionChange, readOnly: rest.readOnly || rest.disabled, expressions: rest.expressions, expressionsUrl: rest.expressions_url, serverHandled: rest.server_expression_handling,
|
|
1588
|
+
// a condition (a Qog if state's value, a while or for block's condition), marked by the host
|
|
1589
|
+
condition: (0, expressions_1.isConditionOption)(rest), extraActions: extraActions, reorder: reorder }) }), renderControls()] }));
|
|
1065
1590
|
}
|
|
1066
1591
|
if (rest.disabled) {
|
|
1067
1592
|
if (isTemplate) {
|
|
1068
1593
|
// SEAM (reqraft): the IDE renders a bare `<ReqoreTag label={templateValue}/>`
|
|
1069
1594
|
// here; reqraft upgrades the read-only template to a proper picker chip —
|
|
1070
|
-
// the $-dollar icon + resolved display name + app image,
|
|
1595
|
+
// the $-dollar icon + resolved display name + app image, colored by the
|
|
1071
1596
|
// IDE's intent scheme. Shared with the compact read-first row.
|
|
1072
|
-
return (0, jsx_runtime_1.jsx)(ReadOnlyTemplateTag_1.ReadOnlyTemplateTag, { value: templateValue, templates: templates
|
|
1597
|
+
return (0, jsx_runtime_1.jsx)(ReadOnlyTemplateTag_1.ReadOnlyTemplateTag, { value: templateValue, templates: templates });
|
|
1073
1598
|
}
|
|
1074
1599
|
return ((0, jsx_runtime_1.jsx)(Comp, __assign({ value: value, onChange: onChange, name: name }, rest, { componentOverrides: componentOverrides })));
|
|
1075
1600
|
}
|
|
1076
1601
|
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, __assign({ fluid: rest.fluid, fixed: rest.fixed, size: rest.size }, rest, { stack: false, verticalAlign: 'flex-start', children: [!isTemplate && allowCustomValues ?
|
|
1077
1602
|
(0, jsx_runtime_1.jsx)(Component, __assign({ value: value, allowTemplates: allowTemplates, onChange: onChange, name: name, level: level }, rest, { componentOverrides: componentOverrides }, componentTypeProp, { "aria-label": fieldAriaLabel, className: "".concat(className, " template-selector"), templates: componentTemplates }))
|
|
1078
|
-
: null, isTemplate &&
|
|
1079
|
-
(0, jsx_runtime_1.jsx)(
|
|
1080
|
-
: null,
|
|
1081
|
-
(0, jsx_runtime_1.
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1603
|
+
: null, !isTemplate && allowCustomValues && dateTakesTemplates ?
|
|
1604
|
+
(0, jsx_runtime_1.jsx)(TemplateBrowser_1.TemplateBrowser, { className: 'date-template-picker', icon: 'MoneyDollarCircleLine', fixed: true, compact: true, size: rest.size, tooltip: 'Use a template', "aria-label": 'Use a template', templates: filteredTemplates, focusFilter: true, onItemSelect: handleSelectDateTemplate })
|
|
1605
|
+
: null, isTemplate && templateSupportsCustomValues ?
|
|
1606
|
+
(0, jsx_runtime_1.jsx)(RichText_1.RichTextFormField, __assign({ wholeRecords: takesRecords, className: 'template-selector', valueFormat: 'text', singleLine: (0, singleLineString_1.isSingleLineStringType)('string'),
|
|
1607
|
+
/* null shows as null, not as an empty field: the two are different values, and an
|
|
1608
|
+
untyped field holding null looked exactly like one holding nothing (qorus#646) */
|
|
1609
|
+
value: typeof templateValue === 'string' ? templateValue : (((_f = (0, writtenAsText_1.untypedTextOf)(value, type)) !== null && _f !== void 0 ? _f : '')), templates: listedTemplates,
|
|
1610
|
+
// a chip of a field not of this type (text around it, say) is named as the catalogue names it
|
|
1611
|
+
namingTemplates: templates, allowTemplates: true, onChange: handleTemplateTextChange }, rest, {
|
|
1612
|
+
/* The text the value is written in takes the room its row gives it and gives it back: a
|
|
1613
|
+
caller's \`fixed\` sized a picker chip, and on a text field it kept the field at its full
|
|
1614
|
+
width, pushing the ⋮ past an operand's row in a narrow column. */
|
|
1615
|
+
fixed: false, fluid: true,
|
|
1616
|
+
/* As wide as `textWidth` says. A field: 150px, as a free text field is, wider for what it
|
|
1617
|
+
holds, and narrower only where its row has less room, as a number's input is (a fixed 150px
|
|
1618
|
+
minimum held it at full width in a narrow column). Its content: the box takes its width from
|
|
1619
|
+
what it holds, with no minimum, and the editor in it keeps 150px. */
|
|
1620
|
+
panelProps: __assign(__assign(__assign({}, rest.panelProps), { style: __assign(__assign({}, (_g = rest.panelProps) === null || _g === void 0 ? void 0 : _g.style), (textWidth === 'content' ? CONTENT_WIDTH_BOX : FIELD_WIDTH_BOX)) }), (textWidth === 'content' ? { contentStyle: CONTENT_WIDTH_EDITOR } : {})), "aria-label": fieldAriaLabel }))
|
|
1621
|
+
: null, dpqlOfferPrompt, showTemplatesDropdown ?
|
|
1622
|
+
(0, jsx_runtime_1.jsx)(exports.TemplateDropdownSelector, { wholeRecords: takesRecords, allowCustomValues: allowCustomValues, templates: templates, value: templateValue, items: filteredTemplates === null || filteredTemplates === void 0 ? void 0 : filteredTemplates.items, onItemSelect: handleSelectTemplateFromList, onRemoveClick: handleRemoveTemplateClick, templateBadge: templateBadge, size: rest.size, label: label, hasOnlyAllowedValues: hasOnlyAllowedValues })
|
|
1085
1623
|
: null, renderControls()] })));
|
|
1086
1624
|
});
|
|
1087
1625
|
/**
|