예제 #1
0
        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}')");
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }