public static void Create(AdaptiveToggleVisibilityAction action, HtmlTag tag, AdaptiveRenderContext renderContext) { var targetElements = string.Empty; if (action.TargetElements?.Any() != true) { return; } foreach (var targetElement in action.TargetElements) { if (!string.IsNullOrWhiteSpace(targetElements)) { targetElements += ","; } string targetElementId = null; var targetElementToggleAction = "Toggle"; if (targetElement != null) { targetElementId = targetElement.ElementId; if (targetElement.IsVisible.HasValue) { targetElementToggleAction = targetElement.IsVisible.Value.ToString(); } } targetElements += targetElementId + ":" + targetElementToggleAction; } tag.Attr("data-ac-targetelements", targetElements); var toggleId = AdaptiveCardRenderer.GenerateRandomId(); tag.Attr("id", toggleId); tag.Attributes.Add("onclick", $"blazorAdaptiveCards.toggleVisibility('{toggleId}')"); }
public void ToggleVisibilityAction() { AdaptiveToggleVisibilityTarget toggleTarget1 = new AdaptiveToggleVisibilityTarget { ElementId = "elementId", IsVisible = IsVisible.IsVisibleToggle }; Assert.AreEqual("elementId", toggleTarget1.ElementId); Assert.AreEqual(IsVisible.IsVisibleToggle, toggleTarget1.IsVisible); AdaptiveToggleVisibilityTarget toggleTarget2 = new AdaptiveToggleVisibilityTarget { ElementId = "element2Id", IsVisible = IsVisible.IsVisibleTrue }; AdaptiveToggleVisibilityAction toggleAction = new AdaptiveToggleVisibilityAction { IconUrl = "http://www.stuff.com/icon.jpg", Id = "ToggleVisibilityId", Style = "Destructive", Title = "Title" }; ValidateBaseActionProperties(toggleAction, "http://www.stuff.com/icon.jpg", "ToggleVisibilityId", "Title", "Destructive"); toggleAction.TargetElements.Add(toggleTarget1); toggleAction.TargetElements.Add(toggleTarget2); Assert.AreEqual("elementId", toggleAction.TargetElements[0].ElementId); Assert.AreEqual("element2Id", toggleAction.TargetElements[1].ElementId); var jsonString = toggleAction.ToJson().ToString(); Assert.AreEqual("{\"iconUrl\":\"http://www.stuff.com/icon.jpg\",\"id\":\"ToggleVisibilityId\",\"style\":\"Destructive\",\"targetElements\":[\"elementId\",{\"elementId\":\"element2Id\",\"isVisible\":true}],\"title\":\"Title\",\"type\":\"Action.ToggleVisibility\"}", jsonString); }
public void TestObjectModelActionSetElement() { AdaptiveCard card = new AdaptiveCard(new AdaptiveSchemaVersion("1.2")); AdaptiveActionSet actionSet = new AdaptiveActionSet(); card.Body.Add(actionSet); AdaptiveSubmitAction submitAction = new AdaptiveSubmitAction { Title = "Action.Submit", DataJson = "{\"x\": 13}" }; actionSet.Actions.Add(submitAction); AdaptiveOpenUrlAction openUrlAction = new AdaptiveOpenUrlAction { Title = "OpenUrl", UrlString = "http://adaptivecards.io" }; actionSet.Actions.Add(openUrlAction); #pragma warning disable 0618 AdaptiveShowCardAction showCardAction = new AdaptiveShowCardAction { Title = "ShowCard", Card = new AdaptiveCard { Body = new List <AdaptiveElement> { new AdaptiveTextBlock { Text = "This is a show card" } } } }; #pragma warning restore 0618 actionSet.Actions.Add(showCardAction); AdaptiveToggleVisibilityAction toggleVisibilityAction = new AdaptiveToggleVisibilityAction { Title = "Toggle", TargetElements = new List <AdaptiveTargetElement> { "test" } }; actionSet.Actions.Add(toggleVisibilityAction); // This lines are not indented so the comparisson doesn't fail due to extra spaces var expectedJson = @"{ ""type"": ""AdaptiveCard"", ""version"": ""1.2"", ""body"": [ { ""type"": ""ActionSet"", ""actions"": [ { ""type"": ""Action.Submit"", ""data"": { ""x"": 13 }, ""title"": ""Action.Submit"" }, { ""type"": ""Action.OpenUrl"", ""url"": ""http://adaptivecards.io"", ""title"": ""OpenUrl"" }, { ""type"": ""Action.ShowCard"", ""card"": { ""type"": ""AdaptiveCard"", ""version"": ""1.0"", ""body"": [ { ""type"": ""TextBlock"", ""text"": ""This is a show card"" } ] }, ""title"": ""ShowCard"" }, { ""type"": ""Action.ToggleVisibility"", ""targetElements"": [ ""test"" ], ""title"": ""Toggle"" } ] } ] }"; var outputJson = card.ToJson(); Assert.AreEqual(outputJson, expectedJson); }