Public/Elements/New-AMFactSet.ps1
function New-AMFactSet { <# .SYNOPSIS Creates a FactSet element for an Adaptive Card. .DESCRIPTION Creates a FactSet element that displays a series of facts (key-value pairs) in a structured, two-column format. FactSets are ideal for displaying property lists, specifications, details, or any information that benefits from a label-value layout. The FactSet element automatically formats the facts in two columns, with titles in the left column (typically bold) and values in the right column. .PARAMETER Facts An array of fact objects created with New-AMFact. Each fact represents a key-value pair with a Title (key) and Value. .PARAMETER Id Optional unique identifier for the FactSet. This can be useful when you need to reference this element in other parts of the card or target it with actions. .EXAMPLE # Create a simple employee information FactSet $facts = @( New-AMFact -Title "Employee" -Value "John Doe" New-AMFact -Title "Department" -Value "Engineering" New-AMFact -Title "Title" -Value "Senior Developer" New-AMFact -Title "Start Date" -Value "2020-01-15" ) $factSet = New-AMFactSet -Facts $facts Add-AMElement -Card $card -Element $factSet .EXAMPLE # Create a product specification FactSet with ID $specs = @( New-AMFact -Title "Model" -Value "ThinkPad X1" New-AMFact -Title "Processor" -Value "Intel Core i7" New-AMFact -Title "Memory" -Value "16 GB" New-AMFact -Title "Storage" -Value "512 GB SSD" ) $specSheet = New-AMFactSet -Facts $specs -Id "product-specs" # Add the FactSet to a container $container = New-AMContainer -Id "spec-container" -Style "emphasis" Add-AMElement -Card $card -Element $container Add-AMElement -Card $card -Element $specSheet -ContainerId "spec-container" .INPUTS None. You cannot pipe input to New-AMFactSet. .OUTPUTS System.Collections.Hashtable Returns a hashtable representing the FactSet element. .NOTES FactSets are ideal for displaying structured information where clarity and organization are important. Some best practices: - Use concise titles that clearly identify the information - Group related facts together in a single FactSet - For very long lists, consider using multiple FactSets with headers - FactSets render differently across different Adaptive Card hosts, so test your cards in the target environment .LINK https://adaptivecards.io/explorer/FactSet.html #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [array]$Facts, [Parameter()] [string]$Id ) $factSet = [ordered]@{ 'type' = 'FactSet' 'facts' = $Facts } if ($Id) { $factSet.id = $Id } return $factSet } |