diff --git a/src/activities/webhooks/Elsa.Activities.Webhooks/ActivityTypes/WebhookActivityTypeProvider.cs b/src/activities/webhooks/Elsa.Activities.Webhooks/ActivityTypes/WebhookActivityTypeProvider.cs index e86520011..b39d91b75 100644 --- a/src/activities/webhooks/Elsa.Activities.Webhooks/ActivityTypes/WebhookActivityTypeProvider.cs +++ b/src/activities/webhooks/Elsa.Activities.Webhooks/ActivityTypes/WebhookActivityTypeProvider.cs @@ -59,6 +59,19 @@ namespace Elsa.Activities.Webhooks.ActivityTypes Traits = ActivityTraits.Trigger, InputProperties = new[] { + new ActivityInputDescriptor( + nameof(HttpEndpoint.Path), + typeof(Microsoft.AspNetCore.Http.PathString), + ActivityInputUIHints.SingleLine, + "Path", + "The relative path that triggers this activity.", + null, + default, + 0, + webhook.Path, + SyntaxNames.Literal, + new[] { SyntaxNames.Literal } + ), new ActivityInputDescriptor( nameof(HttpEndpoint.Methods), typeof(HashSet), @@ -67,10 +80,20 @@ namespace Elsa.Activities.Webhooks.ActivityTypes "Specify what request method this webhook should handle. Leave empty to handle both GET and POST requests", new[] { "GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD" }, default, - 0, - "POST", + 1, + new[] { "GET", "POST" }, SyntaxNames.Json, - new[] { SyntaxNames.Json, SyntaxNames.JavaScript, SyntaxNames.Liquid }) + new[] { SyntaxNames.Json, SyntaxNames.JavaScript, SyntaxNames.Liquid } + ) + }, + OutputProperties = new[] + { + new ActivityOutputDescriptor + ( + "Request", + typeof(Models.WebhookRequestModel), + "The received HTTP request." + ) } }; diff --git a/src/activities/webhooks/Elsa.Activities.Webhooks/Models/WebhookRequestModel.cs b/src/activities/webhooks/Elsa.Activities.Webhooks/Models/WebhookRequestModel.cs new file mode 100644 index 000000000..8122d9b68 --- /dev/null +++ b/src/activities/webhooks/Elsa.Activities.Webhooks/Models/WebhookRequestModel.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +namespace Elsa.Activities.Webhooks.Models +{ + public record WebhookRequestModel(Uri Path, string Method, IDictionary QueryString, IDictionary Headers, object? Body = default) + { + public T GetBody() => (T)Body!; + } +} \ No newline at end of file diff --git a/src/designer/elsa-workflows-studio/src/components/editors/properties/elsa-check-list-property/elsa-check-list-property.tsx b/src/designer/elsa-workflows-studio/src/components/editors/properties/elsa-check-list-property/elsa-check-list-property.tsx index a8b7c34ea..540b782ec 100644 --- a/src/designer/elsa-workflows-studio/src/components/editors/properties/elsa-check-list-property/elsa-check-list-property.tsx +++ b/src/designer/elsa-workflows-studio/src/components/editors/properties/elsa-check-list-property/elsa-check-list-property.tsx @@ -46,11 +46,17 @@ export class ElsaCheckListProperty { } render() { +debugger const propertyDescriptor = this.propertyDescriptor; const propertyModel = this.propertyModel; const fieldId = propertyDescriptor.name; const items = this.items; - const values = parseJson(this.currentValue) || []; + let values = parseJson(this.currentValue) || []; + + if (values.length == 0) { + const defaultValue = this.propertyDescriptor.defaultValue; + values = defaultValue ? defaultValue : []; + } return ( >(`v1/workflow-instances${queryStringText}`); return response.data; }, - get: async id => { + get: async id => { const response = await httpClient.get(`v1/workflow-instances/${id}`); return response.data; }, @@ -175,8 +175,8 @@ export const createElsaClient = function (serverUrl: string): ElsaClient { return response.data; } }, - designerApi: { - runtimeSelectItemsApi: { + designerApi: { + runtimeSelectItemsApi: { get: async (providerTypeName: string, context?: any): Promise> => { const response = await httpClient.post('v1/designer/runtime-select-list-items', {providerTypeName: providerTypeName, context: context}); return response.data;