diff --git a/src/designer/elsa-workflows-designer/src/components/inputs/code-editor.tsx b/src/designer/elsa-workflows-designer/src/components/inputs/code-editor.tsx index c7eceff5f..28e2c5415 100644 --- a/src/designer/elsa-workflows-designer/src/components/inputs/code-editor.tsx +++ b/src/designer/elsa-workflows-designer/src/components/inputs/code-editor.tsx @@ -5,6 +5,7 @@ import {getInputPropertyValue} from "../../utils"; import {MonacoValueChangedArgs} from "../shared/monaco-editor/monaco-editor"; import {ExpressionChangedArs} from "../designer/input-control-switch/input-control-switch"; import descriptorsStore from "../../data/descriptors-store"; +import {FormEntry} from "../shared/forms/form-entry"; interface CodeEditorOptions { editorHeight?: EditorHeight; @@ -22,20 +23,20 @@ export class CodeEditorInput { public render() { const inputContext = this.inputContext; const inputDescriptor = inputContext.inputDescriptor; + const fieldId = inputDescriptor.name; const displayName = inputDescriptor.displayName; const hint = inputDescriptor.description; const options: CodeEditorOptions = inputDescriptor.options || {}; const input = getInputPropertyValue(inputContext); - const syntax = input?.expression?.type ?? inputDescriptor.defaultSyntax; let value = (input?.expression as LiteralExpression)?.value; if (value == undefined) value = inputDescriptor.defaultValue; return ( - - - + + + ); } @@ -44,7 +45,4 @@ export class CodeEditorInput { this.inputContext.inputChanged(value, SyntaxNames.Literal); } - private onExpressionChanged = (e: CustomEvent) => { - this.inputContext.inputChanged(e.detail.expression, e.detail.syntax); - } } diff --git a/src/modules/Elsa.JavaScript/Activities/RunJavaScript.cs b/src/modules/Elsa.JavaScript/Activities/RunJavaScript.cs index 28746cdcc..beaa05bbf 100644 --- a/src/modules/Elsa.JavaScript/Activities/RunJavaScript.cs +++ b/src/modules/Elsa.JavaScript/Activities/RunJavaScript.cs @@ -1,6 +1,7 @@ using System.Text.Json.Serialization; using Elsa.Workflows.Core.Attributes; using Elsa.Workflows.Core.Models; +using Elsa.Workflows.Management.Models; using IJavaScriptEvaluator = Elsa.JavaScript.Services.IJavaScriptEvaluator; namespace Elsa.JavaScript.Activities; @@ -17,7 +18,8 @@ public class RunJavaScript : Activity { Script = new Input(script); } - + + [Input(UIHint = InputUIHints.CodeEditor, OptionsProvider = typeof(RunJavaScriptOptionsProvider))] public Input Script { get; set; } = new(""); protected override async ValueTask ExecuteAsync(ActivityExecutionContext context) @@ -30,7 +32,7 @@ public class RunJavaScript : Activity // Get a JavaScript evaluator. var javaScriptEvaluator = context.GetRequiredService(); - + // Run the script. var result = await javaScriptEvaluator.EvaluateAsync(script, typeof(object), context.ExpressionExecutionContext, cancellationToken: context.CancellationToken); diff --git a/src/modules/Elsa.JavaScript/Activities/RunJavaScriptOptionsProvider.cs b/src/modules/Elsa.JavaScript/Activities/RunJavaScriptOptionsProvider.cs new file mode 100644 index 000000000..00b094f2d --- /dev/null +++ b/src/modules/Elsa.JavaScript/Activities/RunJavaScriptOptionsProvider.cs @@ -0,0 +1,16 @@ +using System.Reflection; +using Elsa.Workflows.Management.ActivityInputOptions; +using Elsa.Workflows.Management.Implementations; + +namespace Elsa.JavaScript.Activities; + +internal class RunJavaScriptOptionsProvider : IActivityPropertyOptionsProvider +{ + public object? GetOptions(PropertyInfo property) + { + return new CodeEditorOptions + { + Language = "javascript" + }; + } +} \ No newline at end of file diff --git a/src/modules/Elsa.JavaScript/Elsa.JavaScript.csproj b/src/modules/Elsa.JavaScript/Elsa.JavaScript.csproj index ad00ed416..d1250bb56 100644 --- a/src/modules/Elsa.JavaScript/Elsa.JavaScript.csproj +++ b/src/modules/Elsa.JavaScript/Elsa.JavaScript.csproj @@ -15,6 +15,7 @@ + diff --git a/src/modules/Elsa.JavaScript/Features/JavaScriptFeature.cs b/src/modules/Elsa.JavaScript/Features/JavaScriptFeature.cs index c39dce548..88f37fdb3 100644 --- a/src/modules/Elsa.JavaScript/Features/JavaScriptFeature.cs +++ b/src/modules/Elsa.JavaScript/Features/JavaScriptFeature.cs @@ -4,6 +4,7 @@ using Elsa.Expressions.Services; using Elsa.Features.Abstractions; using Elsa.Features.Attributes; using Elsa.Features.Services; +using Elsa.JavaScript.Activities; using Elsa.JavaScript.Expressions; using Elsa.JavaScript.Handlers; using Elsa.JavaScript.Implementations; @@ -11,6 +12,7 @@ using Elsa.JavaScript.Providers; using Elsa.JavaScript.Services; using Elsa.Mediator.Extensions; using Elsa.Mediator.Features; +using Elsa.Workflows.Management.Implementations; using Microsoft.Extensions.DependencyInjection; namespace Elsa.JavaScript.Features; @@ -28,6 +30,7 @@ public class JavaScriptFeature : FeatureBase Services .AddSingleton() .AddSingleton() + .AddSingleton() .AddNotificationHandlersFrom() .AddExpressionHandler(); }