Skip to content

Conversation

paulcam206
Copy link
Member

@paulcam206 paulcam206 commented Sep 25, 2021

Related Issue

Fixes #6393

Description

TableCell and TableRow weren't restricted to only being parseable from within the context of a Table element. The fix here was to partially emulate the behavior of ColumnSet, where it's the containing element's responsibility to parse its children (rather than deferring that responsibility to the parser like we do for more generic elements like Container. The right way to do this was to use the more generic CollectionTypeElement class for Table in order to use DeserializeChildren. Unfortunately, CollectionTypeElement also contained other styling properties/methods unsuitable for Table, so it was split out into CollectionCoreElement (an element that is responsible for deserializing its children) and StyledCollectionElement, which adds common styling stuff.

While doing this I also noticed that the JS renderer allows implicit element types on the parsed children of Table. In other words, this is reasonable and valid:

Sample implied type card
{
	"type": "AdaptiveCard",
	"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
	"version": "1.5",
	"body": [
		{
			"type": "Table",
			"columns": [
				{
					"width": 1
				}
			],
			"rows": [
				{
					"cells": [
						{
							"items": [
								{
									"type": "TextBlock",
									"text": "Text goes here."
								}
							]
						}
					]
				}
			]
		}
	]
}

I fixed this up as well following the existing ColumnSet/Column pattern, which validate the types if present, but uses the inferred element type otherwise.

After this, it was just a matter of getting UWP, iOS, and Android building properly and validating the rendering behavior.

Sample Card

I added two new test cards -- one containing orphaned TableRow and TableCell elements (which should parse as Unknown elements and have no rendering) and another containing the exact card from above.

Screenshots

UWP

Orphaned elements:
image

Implied type:
image

Android

Orphaned elements:
image

Implied type:
image

iOS

Orphaned elements:
image

Implied type:
image

How Verified

  • new unit tests and test cards
  • build/manual test across UWP, iOS, and Android
Microsoft Reviewers: Open in CodeFlow

@paulcam206 paulcam206 force-pushed the paulcam/orphaned-table-elements branch from 4e263fd to 02dd4e3 Compare September 25, 2021 00:51
@paulcam206 paulcam206 merged commit 72a8ae8 into main Sep 29, 2021
@paulcam206 paulcam206 deleted the paulcam/orphaned-table-elements branch September 29, 2021 00:01
vivekkozhisseri pushed a commit to BigThinkcode/AdaptiveCards that referenced this pull request Sep 30, 2021
* Toggle input in c++/winrt! (microsoft#6303)

* Toggle input in c++/winrt!

* PR Feedback

* Fix return value

* Merge Jonwis' object model conversion into UWP (microsoft#6322)

* Merge u/jonwis/winui3 from fork

* Copy object model changes from winappsdk to uwp

* Delete winappsdk directory

* Rename WinUI3 to Uwp - everything builds

* Testing, bug fixes, and cleanup

* Fix propert_opt setter

* Version and package changes

* Remove nuget source from nuget config

* version changes

* Update package pushing readme

Co-authored-by: Jon Wiswall <[email protected]>
Co-authored-by: almedina-ms <[email protected]>

* [Designer] Make everything accessible at high zoom levels (microsoft#6320)

* [Designer] Make small-x-dimension scenario basically work

Fixes microsoft#6263

* Tabs feedback

* Fix drag/drop and random scrolling

* Per triage, Xamarin is deprecated, so no need to hold on to this old unsupported code (microsoft#6255)

* [Shared] Add `password` `Input.Text` support (microsoft#6377)

* [Shared] Add `password` `Input.Text` support

Fixes microsoft#6340

* PR feedback

* [iOS] removed custom background color to return to system default (microsoft#6378)

* [iOS] Updated Radio Buttons / Check Boxes Contrast Ratio (microsoft#6372)

Co-authored-by: Paul Campbell <[email protected]>

* Set wrapping to true for accessibility fix (microsoft#6324)

Co-authored-by: Paul Campbell <[email protected]>

* Fix link traversal (microsoft#6317)

Co-authored-by: Paul Campbell <[email protected]>

* [iOS] Updated vertical content alignment, height and toggle Visibility (microsoft#6329)

* [iOS] Fixed microsoft#6219

* [iOS] adding padding support to toggle visibility

* [Padding] Update

* [iOS] work in progress

* mostly done need to refactor and update padding management code

* [iOS] refactored

* [iOS] added padding test

* refactored the padding configuration in FactSet to Padding Handler

* [iOS] Updated VerticalContentAlignment and Height

* Reverts samples card changes

* [iOS] code clean-up

* [iOS] CR update

* [iOS] CR update

* Add implementation and tests (microsoft#6406)

Co-authored-by: Paul Campbell <[email protected]>

* [UWP] Fix risky cast in `GenerateElementProjection()` (microsoft#6412)

* [UWP] Fix risky cast in `GenerateElementProjection()`

Fixes microsoft#6394

* Fix PR feedback

* Fix style behaviour (microsoft#6419)

Co-authored-by: Paul Campbell <[email protected]>

* [JS] Add Password support to Input.Text (microsoft#6407)

* Add Password to style list

* Fix comparator

* Change property implementation to contain version info in new enum value

Co-authored-by: Paul Campbell <[email protected]>

* [iOS] Password Masking (microsoft#6411)

* [iOS] Password implementation

* [iOS] Updated unit tests and added sample json

* Update Input.Text.PasswordStyle.json

Co-authored-by: almedina-ms <[email protected]>

* [iOS] Table Horizontal Alignment Update (microsoft#6401)

* [iOS] Fixed microsoft#6219

* [iOS] adding padding support to toggle visibility

* [Padding] Update

* [iOS] work in progress

* mostly done need to refactor and update padding management code

* [iOS] refactored

* [iOS] added padding test

* refactored the padding configuration in FactSet to Padding Handler

* [iOS] Updated VerticalContentAlignment and Height

* Reverts samples card changes

* [iOS] code clean-up

* [iOS] Table Update

* [iOS] Updated Table with better Horizontal Alignment

Co-authored-by: Paul Campbell <[email protected]>

* [iOS/Android/UWP/Shared] Fix handling of orphaned table child elements (microsoft#6408)

* [Shared] Fix parsing of `TableRow` and `TableCell` outside of `Table`

Fixes microsoft#6393

* SWIG updates

* Fix up Android rendering

* Fix up iOS

* Fix up UWP

Co-authored-by: Paul Campbell <[email protected]>

* Enabling blank issues for internal team use (microsoft#6445)

Co-authored-by: RebeccaAnne <[email protected]>
Co-authored-by: Jon Wiswall <[email protected]>
Co-authored-by: almedina-ms <[email protected]>
Co-authored-by: Paul Campbell <[email protected]>
Co-authored-by: Joseph Woo <[email protected]>
Co-authored-by: Paul Campbell <[email protected]>
Co-authored-by: Jonathan Miller <[email protected]>
michaelfarnsworth pushed a commit to michaelfarnsworth/AdaptiveCards that referenced this pull request Nov 10, 2022
microsoft#6408)

* [Shared] Fix parsing of `TableRow` and `TableCell` outside of `Table`

Fixes microsoft#6393

* SWIG updates

* Fix up Android rendering

* Fix up iOS

* Fix up UWP

Co-authored-by: Paul Campbell <[email protected]>
rankush pushed a commit to rankush/AdaptiveCards that referenced this pull request May 8, 2024
microsoft#6408)

* [Shared] Fix parsing of `TableRow` and `TableCell` outside of `Table`

Fixes microsoft#6393

* SWIG updates

* Fix up Android rendering

* Fix up iOS

* Fix up UWP

Co-authored-by: Paul Campbell <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Shared] TableRow and TableCell elements parse outside of Table

3 participants