diff --git a/packages/base/contains-many-component.gts b/packages/base/contains-many-component.gts index 81c7b5408c..91e442efa1 100644 --- a/packages/base/contains-many-component.gts +++ b/packages/base/contains-many-component.gts @@ -361,23 +361,36 @@ export function getContainsManyComponent({ (coalesce @format defaultFormats.fieldDef) as |effectiveFormat| }} -
- {{#each (getComponents) as |Item i|}} -
- -
+ {{#if (coalesce @displayContainer true)}} +
+ {{#each (getComponents) as |Item i|}} +
+ +
+ + {{/each}} +
+ {{else}} + {{#each (getComponents) as |Item|}} + {{/each}} -
+ {{/if}} {{/let}} {{/if}} diff --git a/packages/base/field-component.gts b/packages/base/field-component.gts index feb40ded31..37f5b120ac 100644 --- a/packages/base/field-component.gts +++ b/packages/base/field-component.gts @@ -29,6 +29,7 @@ import { import type { ComponentLike } from '@glint/template'; import { CardContainer } from '@cardstack/boxel-ui/components'; import { + coalesce, extractCssVariables, sanitizeHtmlSafe, } from '@cardstack/boxel-ui/helpers'; @@ -371,7 +372,12 @@ export function getBoxComponent( {{/let}} - {{else if (isCompoundField model.value)}} + {{else if + (and + (isCompoundField model.value) + (coalesce @displayContainer true) + ) + }} diff --git a/packages/experiments-realm/Family/2a48e225-71c2-445d-affc-76fcf4f8c21c.json b/packages/experiments-realm/Family/2a48e225-71c2-445d-affc-76fcf4f8c21c.json new file mode 100644 index 0000000000..c8a46e5b79 --- /dev/null +++ b/packages/experiments-realm/Family/2a48e225-71c2-445d-affc-76fcf4f8c21c.json @@ -0,0 +1,41 @@ +{ + "data": { + "meta": { + "adoptsFrom": { + "name": "Family", + "module": "../family" + } + }, + "type": "card", + "attributes": { + "people": [ + { + "firstName": "Mango", + "lastName": "A." + }, + { + "firstName": "Marco", + "lastName": "N." + } + ], + "cardInfo": { + "name": null, + "notes": null, + "summary": null, + "cardThumbnailURL": null + } + }, + "relationships": { + "cardInfo.theme": { + "links": { + "self": null + } + }, + "cardInfo.cardThumbnail": { + "links": { + "self": null + } + } + } + } +} diff --git a/packages/experiments-realm/family.gts b/packages/experiments-realm/family.gts new file mode 100644 index 0000000000..4a9542d2cb --- /dev/null +++ b/packages/experiments-realm/family.gts @@ -0,0 +1,56 @@ +import { + CardDef, + FieldDef, + Component, + field, + contains, + containsMany, + StringField, +} from 'https://cardstack.com/base/card-api'; +import { BoxelContainer } from '@cardstack/boxel-ui/components'; + +class FamilyMember extends FieldDef { + static displayName = 'Family Member'; + @field firstName = contains(StringField); + @field lastName = contains(StringField); + static embedded = class Embedded extends Component { + + }; + static fitted = this.embedded; +} + +export class Family extends CardDef { + static displayName = 'Family'; + @field people = containsMany(FamilyMember); + static isolated = class Isolated extends Component { + + }; +} diff --git a/packages/host/app/components/operator-mode/code-submode/playground/playground-preview.gts b/packages/host/app/components/operator-mode/code-submode/playground/playground-preview.gts index 814e4c8005..c5eb528405 100644 --- a/packages/host/app/components/operator-mode/code-submode/playground/playground-preview.gts +++ b/packages/host/app/components/operator-mode/code-submode/playground/playground-preview.gts @@ -91,7 +91,7 @@ const PlaygroundPreview: TemplateOnlyComponent =