Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add supported properties to AC object models #8895

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions source/dotnet/Library/AdaptiveCards/AdaptiveActionSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ public class AdaptiveActionSet : AdaptiveElement
[JsonProperty(Required = Required.Default)]
public override string Type { get; set; } = TypeName;

/// <summary>
/// Horizontal alignment (<see cref="AdaptiveHorizontalAlignment"/>) to use.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public AdaptiveHorizontalAlignment HorizontalAlignment { get; set; }

/// <summary>
/// The actions contained within this ActionSet.
/// </summary>
Expand All @@ -40,6 +49,7 @@ public class AdaptiveActionSet : AdaptiveElement
[XmlElement(typeof(AdaptiveOpenUrlAction))]
[XmlElement(typeof(AdaptiveShowCardAction))]
[XmlElement(typeof(AdaptiveSubmitAction))]
[XmlElement(typeof(AdaptiveHttpAction))]
[XmlElement(typeof(AdaptiveToggleVisibilityAction))]
[XmlElement(typeof(AdaptiveExecuteAction))]
[XmlElement(typeof(AdaptiveUnknownAction))]
Expand Down
31 changes: 31 additions & 0 deletions source/dotnet/Library/AdaptiveCards/AdaptiveCard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ public AdaptiveCard() : this(new AdaptiveSchemaVersion(1, 0)) { }
[XmlElement(typeof(AdaptiveToggleVisibilityAction))]
[XmlElement(typeof(AdaptiveExecuteAction))]
[XmlElement(typeof(AdaptiveUnknownAction))]
[XmlElement(typeof(AdaptiveHttpAction))]
#endif
public List<AdaptiveAction> Actions { get; set; } = new List<AdaptiveAction>();

Expand Down Expand Up @@ -257,6 +258,36 @@ public bool ShouldSerializeJsonSchema()
[DefaultValue(null)]
public AdaptiveAuthentication Authentication { get; set; }

/// <summary>
/// Defines originator id for card.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlElement]
#endif
[DefaultValue(null)]
public string Originator { get; set; }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you have any examples about what this Originator should look like? what is this value used for?


/// <summary>
/// Sets the text flow direction
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlElement]
#endif
[DefaultValue(null)]
public bool? Rtl { get; set; } = null;

/// <summary>
/// Tells the client whether or not it should constrain the width of the card.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlElement]
#endif
[DefaultValue(null)]
public bool? ConstrainWidth { get; set; } = null;

/// <summary>
/// Determines whether the height property of an AdaptiveCard should be serialized.
/// </summary>
Expand Down
18 changes: 18 additions & 0 deletions source/dotnet/Library/AdaptiveCards/AdaptiveColumnSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@ public class AdaptiveColumnSet : AdaptiveCollectionElement
#endif
public override string Type { get; set; } = TypeName;

/// <summary>
/// Horizontal alignment (<see cref="AdaptiveHorizontalAlignment"/>) to use.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public AdaptiveHorizontalAlignment HorizontalAlignment { get; set; }

/// <summary>
/// Collection of Columns that this ColumnSet contains.
/// </summary>
Expand All @@ -33,6 +42,15 @@ public class AdaptiveColumnSet : AdaptiveCollectionElement
#endif
public List<AdaptiveColumn> Columns { get; set; } = new List<AdaptiveColumn>();

/// <summary>
/// Gets or sets the padding.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlElement]
#endif
public AdaptivePadding Padding { get; set; }

public override IEnumerator<AdaptiveElement> GetEnumerator()
{
return Columns.GetEnumerator();
Expand Down
9 changes: 9 additions & 0 deletions source/dotnet/Library/AdaptiveCards/AdaptiveContainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,15 @@ public class AdaptiveContainer : AdaptiveCollectionElement
[DefaultValue(null)]
public bool? Rtl { get; set; } = null;

/// <summary>
/// Gets or sets the padding.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlElement]
#endif
public AdaptivePadding Padding { get; set; }

public override IEnumerator<AdaptiveElement> GetEnumerator()
{
return Items.GetEnumerator();
Expand Down
71 changes: 71 additions & 0 deletions source/dotnet/Library/AdaptiveCards/AdaptiveHttpAction.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Xml.Serialization;

namespace AdaptiveCards
{
/// <summary>
/// Represents the Action.Http element.
/// </summary>
#if !NETSTANDARD1_3
[XmlType(TypeName = AdaptiveHttpAction.TypeName)]
#endif
public class AdaptiveHttpAction : AdaptiveAction
{
/// <inheritdoc />
public const string TypeName = "Action.Http";

/// <inheritdoc />
#if !NETSTANDARD1_3
[XmlIgnore]
#endif
public override string Type { get; set; } = TypeName;

/// <summary>
/// Http method.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public string Method { get; set; }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this just GET/POST?


/// <summary>
/// Target url for request.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public string Url { get; set; }

/// <summary>
/// Body of request.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public string Body { get; set; }

/// <summary>
/// List of headers.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public List<AdaptiveHttpHeader> Headers { get; set; }

/// <summary>
/// Adds a <see cref="AdaptiveHttpHeader" /> to the AdaptiveHttpAction.
/// </summary>
public void AddHttpHeader(AdaptiveHttpHeader header)
{
this.Headers ??= new List<HttpHeader>();
this.Headers.Add(httpHeader);
}
}
}
42 changes: 42 additions & 0 deletions source/dotnet/Library/AdaptiveCards/AdaptiveHttpHeader.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Newtonsoft.Json;
using System;
using System.ComponentModel;
using System.Xml.Serialization;

namespace AdaptiveCards
{
/// <summary>
/// Represents the AdaptiveHttpHeader.
/// </summary>
public class AdaptiveHttpHeader
{
/// <summary>
/// Initializes <see cref="AdaptiveHttpHeader"/>.
/// </summary>
public AdaptiveHttpHeader(string name, string value)
{
Name = name;
Value = value;
}

/// <summary>
/// Gets or sets the header name.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public string Name { get; set; }

/// <summary>
/// Gets or sets the header value.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public string Value { get; set; }
}
}
70 changes: 70 additions & 0 deletions source/dotnet/Library/AdaptiveCards/AdaptivePadding.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Newtonsoft.Json;
using System;
using System.ComponentModel;
using System.Xml.Serialization;

namespace AdaptiveCards
{
/// <summary>
/// Represents padding object.
/// </summary>
public class AdaptivePadding
{
/// <summary>
/// Initializes <see cref="AdaptivePadding"/>.
/// </summary>
public AdaptivePadding(AdaptiveSpacing left, AdaptiveSpacing top, AdaptiveSpacing right, AdaptiveSpacing bottom)
{
Left = left;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it expected to have different paddings for all directions? I think later implementation versions only allow a single value

Right = right;
Top = top;
Bottom = bottom;
}

/// <summary>
/// Initializes <see cref="AdaptivePadding"/>.
/// </summary>
public AdaptivePadding(AdaptiveSpacing padding)
{
Left = Right = Top = Bottom = padding;
}

/// <summary>
/// Gets or sets the left padding.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public AdaptiveSpacing Left { get; set; }

/// <summary>
/// Gets or sets the right padding.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public AdaptiveSpacing Right { get; set; }

/// <summary>
/// Gets or sets the top padding.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public AdaptiveSpacing Top { get; set; }

/// <summary>
/// Gets or sets the bottom padding.
/// </summary>
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
#if !NETSTANDARD1_3
[XmlAttribute]
#endif
public AdaptiveSpacing Bottom { get; set; }
}
}
1 change: 1 addition & 0 deletions source/dotnet/Library/AdaptiveCards/AdaptiveTextInput.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ public class AdaptiveTextInput : AdaptiveInput
[XmlElement(typeof(AdaptiveOpenUrlAction))]
[XmlElement(typeof(AdaptiveShowCardAction))]
[XmlElement(typeof(AdaptiveSubmitAction))]
[XmlElement(typeof(AdaptiveHttpAction))]
[XmlElement(typeof(AdaptiveToggleVisibilityAction))]
[XmlElement(typeof(AdaptiveUnknownAction))]
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public class AdaptiveTypedElementConverter : AdaptiveTypedBaseElementConverter,
[AdaptiveTableRow.TypeName] = typeof(AdaptiveTableRow),
[AdaptiveTableCell.TypeName] = typeof(AdaptiveTableCell),
[AdaptiveSubmitAction.TypeName] = typeof(AdaptiveSubmitAction),
[AdaptiveHttpAction.TypeName] = typeof(AdaptiveHttpAction),
[AdaptiveExecuteAction.TypeName] = typeof(AdaptiveExecuteAction),
[AdaptiveOpenUrlAction.TypeName] = typeof(AdaptiveOpenUrlAction),
[AdaptiveShowCardAction.TypeName] = typeof(AdaptiveShowCardAction),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class AdaptiveActionHandlers
{
typeof(AdaptiveOpenUrlAction),
typeof(AdaptiveSubmitAction),
typeof(AdaptiveHttpAction),
typeof(AdaptiveShowCardAction),
typeof(AdaptiveToggleVisibilityAction),
typeof(AdaptiveExecuteAction)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,9 @@ public virtual void Visit(AdaptiveAction action)
Visit(urlAction);

if (action is AdaptiveSubmitAction submitAction)
Visit(submitAction);

if (action is AdaptiveHttpAction httpAction)
Visit(submitAction);

if (action is AdaptiveShowCardAction cardAction)
Expand All @@ -153,6 +156,10 @@ public virtual void Visit(AdaptiveAction action)

public virtual void Visit(AdaptiveSubmitAction action)
{
}

public virtual void Visit(AdaptiveHttpAction action)
{
}

public virtual void Visit(AdaptiveOpenUrlAction action)
Expand Down