AdaptiveCards.Templating

This library implements a JSON-to-JSON templating/data-binding engine. While it is designed to be used with Adaptive Cards, it is not dependent on Adaptive Cards and can therefore be used in many contexts and applications.


Keywords
adaptive, adaptive-cards, adaptivecards, android, bot-framework, bots, cards, ios, timeline, uwp, windows, windows-uwp, wpf, xamarin, xaml
License
MIT
Install
Install-Package AdaptiveCards.Templating -Version 1.5.0

Documentation

Adaptive Cards

logo

Adaptive Cards are a new way for developers to exchange content in a common and consistent way. Get started today by putting Adaptive Cards into Microsoft Teams, Outlook Actionable Messages, Cortana Skills, or Windows Timeline -- or render cards inside your own apps by using our SDKs.

Dive in

Install and Build

Adaptive Cards are designed to render anywhere that your users are. The following native platform renderers are under development right now.

PS: Latest Build Status is against main branch.

Platform Latest Release Source Docs Latest Build Status
JavaScript npm install Source Docs Build Status
.NET Nuget install Source Docs Build status
.NET WPF Nuget install Source Docs Build status
.NET HTML Nuget install Source Docs Build status
Windows UWP Nuget install Source Docs Build Status
Android Maven Central Source Docs Build status
iOS CocoaPods Source Docs Build status
Card Designer npm install Source Docs Build Status

Release schedule

We release the Adaptive Cards products on the third week of each month, assuming there are updates. Please see the table below for the most recent and upcoming release dates.

Product Last Release Date Next Release Date
Website 1/22/2024 2/12/2024
Designer 1/31/2023 7/17/2023
JavaScript Renderer 6/23/2023 7/17/2023
JavaScript Renderer Beta 4/9/2023 7/17/2023
JavaScript Templating 9/16/2022 7/17/2023
XAML Renderer 3/23/2023 7/17/2023
XAML Object Model 3/22/2023 7/17/2023
WinUI 3 Renderer 6/29/2023 7/17/2023
WinUI 3 Object Model 5/12/2023 7/17/2023
.NET Renderer 12/1/2022 7/17/2023
.NET Templating 3/7/2023 7/17/2023

Note: These release dates are subject to change based on availability and active development of each product.

Code format

We require the C++ code inside this project to follow the clang-format. If you change them, please make sure your changed files are formatted correctly.

Make sure clang-format version 12.0.0 and above version is used.

IDE integration

ClangFormat describes a set of tools that are built on top of LibFormat. It can support your workflow in a variety of ways including a standalone tool and editor integrations. For details, refer to https://clang.llvm.org/docs/ClangFormat.html

Format with script

Two scripts are provided to help you format files.

  • Windows user only: use FormatSource.ps1. This script use clang-format.exe which is built into Visual Studio by default.

    Execute below command in the root folder of the project

     PowerShell.exe -ExecutionPolicy Bypass scripts\FormatSource.ps1 -ModifiedOnly $False
    

If it's the first time to run the script, make sure clang-format version 12.0.0 or above in the output. Otherwise you may need to upgrade Visual Studio or use your own clang-format binaries.

[clang-format] Version is:
clang-format version 12.0.0
  • Both Windows and MAC users: Use clang-format npmjs package

    Execute below command in source/nodejs

     npm run format
    

Make sure npm install is run before.

Use Git pre-commit hook

git pre-commit hook is an optional process. When you run git commit, it will automatically do the format check and auto fix the format if error detected.

First make sure clang-format binary is installed in your dev enviroment. Then modify scripts/hooks/pre-commit to make sure clangFormat is point to the correct path. And finally setup the git hook.

Two ways to setup the hook:

  1. Copy scripts/hooks/pre-commit to .git/hooks
  2. git config --local core.hooksPath scripts/hooks

End User License Agreement for our binary packages

Consumption of the AdaptiveCards binary packages are subject to the Microsoft EULA (End User License Agreement). Please see the relevant terms as listed below:

NOTE: All of the source code, itself, made available in this repo as well as our NPM packages, continue to be governed by the open source MIT license.

Community SDKs

The following SDKs are lovingly maintained by the Adaptive Cards community. Their contributions are sincerely appreciated! 🎉

Platform Install Repo Maintainer
ReactNative npm install GitHub BigThinkCode
Pic2Card GitHub BigThinkCode
Vue.js npm install GitHub Tim Cadenbach

Contribute

There are many ways to contribute to Adaptive Cards.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Supported Features

Feature Schema Version Platform Parsing Rendering
Action.OpenUrl v1.0 All
Action.ShowCard v1.0 All
Action.Submit v1.0 All
Column v1.0 All
ColumnSet v1.0 All
Container v1.0 All
Fact v1.0 All
FactSet v1.0 All
Image v1.0 All
ImageSet v1.0 All
Input.ChoiceSet v1.0 All
Input.Date v1.0 All
Input.Number v1.0 All
Input.Text v1.0 All
Input.Time v1.0 All
Input.Toggle v1.0 All
SelectAction v1.0 All
TextBlock v1.0 All
Explicit Image Dimension v1.1 All
Background Color v1.1 All
Vertical Content Alignment v1.1 All
Action Icon v1.1 All
Action Style v1.2 All
Toggle Visibility v1.2 All
ActionSet v1.2 All
Fallback v1.2 All
Container BackgroundImage v1.2 All
Container MinHeight v1.2 All
Container Bleed v1.2 All
Container Style v1.2 All
Image Data Uri v1.2 All
Action Icon Data Uri v1.2 All
Input.Text Inline Action v1.2 All
TextBlock FontType v1.2 All
RichTextBlock v1.2 All
Input Label v1.3 All
Input ErrorMessage v1.3 All
AssociatedInputs v1.3 All
RichTextBlock UnderLine v1.3 All
Action.Refresh v1.4 All
AdaptiveCard Authentication v1.4 All
Action.Execute v1.4 All
Action IsEnabled v1.5 JS
Action IsEnabled v1.5 iOS
Action IsEnabled v1.5 Android
Action IsEnabled v1.5 XAML
Action IsEnabled v1.5 .NET
Action Mode v1.5 JS
Action Mode v1.5 iOS
Action Mode v1.5 Android
Action Mode v1.5 XAML
Action Mode v1.5 .NET
Action/SelectAction ToolTip v1.5 JS
Action/SelectAction ToolTip v1.5 iOS
Action/SelectAction ToolTip v1.5 Android
Action/SelectAction ToolTip v1.5 XAML
Action/SelectAction ToolTip v1.5 .NET
Input.ChoiceSet Filtered Style v1.5 JS
Input.ChoiceSet Filtered Style v1.5 iOS
Input.ChoiceSet Filtered Style v1.5 Android
Input.ChoiceSet Filtered Style v1.5 XAML
Input.ChoiceSet Filtered Style v1.5 .NET
Input.Text Password Style v1.5 JS
Input.Text Password Style v1.5 iOS
Input.Text Password Style v1.5 Android
Input.Text Password Style v1.5 XAML
Input.Text Password Style v1.5 .NET
TextBlock Heading Style v1.5 JS
TextBlock Heading Style v1.5 iOS
TextBlock Heading Style v1.5 Android
TextBlock Heading Style v1.5 XAML
TextBlock Heading Style v1.5 .NET
RTL v1.5 JS
RTL v1.5 iOS
RTL v1.5 Android
RTL v1.5 XAML
RTL v1.5 .NET
Table v1.5 JS
Table v1.5 iOS
Table v1.5 Android
Table v1.5 XAML
Table v1.5 .NET
Carousel v1.6 JS
Carousel v1.6 iOS
Carousel v1.6 Android
Carousel v1.6 XAML
Carousel v1.6 .NET
ImageSet Stacked Presentation Style v1.6 JS
ImageSet Stacked Presentation Style v1.6 iOS
ImageSet Stacked Presentation Style v1.6 Android
ImageSet Stacked Presentation Style v1.6 XAML
ImageSet Stacked Presentation Style v1.6 .NET
Dynamic Type Ahead Search v1.6 JS
Dynamic Type Ahead Search v1.6 iOS
Dynamic Type Ahead Search v1.6 Android
Dynamic Type Ahead Search v1.6 XAML
Dynamic Type Ahead Search v1.6 .NET
Label Position v1.6 JS
Label Position v1.6 iOS
Label Position v1.6 Android
Label Position v1.6 XAML
Label Position v1.6 .NET
Inline Editable Input Style v1.6 JS
Inline Editable Input Style v1.6 iOS
Inline Editable Input Style v1.6 Android
Inline Editable Input Style v1.6 XAML
Inline Editable Input Style v1.6 .NET