File

src/components/multi-slot-container/multi-slot-container.component.ts

Description

This component wraps the following child components:

Metadata

Index

Properties

Constructor

constructor(componentData: CmsComponentData<MultiSlotContainerComponentData>)
Parameters :
Name Type Optional
componentData CmsComponentData<MultiSlotContainerComponentData> No

Properties

Public componentData
Type : CmsComponentData<MultiSlotContainerComponentData>
import { Component, ViewEncapsulation } from '@angular/core';
import { CmsComponentData } from '@spartacus/storefront';
import { MultiSlotContainerComponentData } from './multi-slot-container.model';

/**
 * This component wraps the following child components:
 *
 * @link MSCCategoryItemComponent
 * @link MSCContentItemComponent
 * @link MSCProductItemComponent
 *
 * @export
 * @class MultiSlotContainerComponent
 */
@Component({
    selector: 'fs-multi-slot-container',
    templateUrl: './multi-slot-container.component.html',
    styleUrls: ['./multi-slot-container.component.scss'],
    encapsulation: ViewEncapsulation.None,
    standalone: false
})
export class MultiSlotContainerComponent {
  constructor(public componentData: CmsComponentData<MultiSlotContainerComponentData>) {}
}
<ng-container *ngIf="componentData?.data$ | async as convertedData">
  <div [attr.data-preview-id]="convertedData.previewId" class="multi-slot-container">
    <div class="msc-headline">
      <h2>{{ convertedData.headline }}</h2>
    </div>
    <div data-preview-id="#st_items" class="msc-items">
      <ng-container *ngFor="let item of convertedData.items" [cxComponentWrapper]="item"></ng-container>
    </div>
  </div>
</ng-container>

./multi-slot-container.component.scss

.multi-slot-container {
  margin: 1rem 0;
  font-size: calc(16px + (18 - 16) * ((100vw - 600px) / (1600 - 600)));
}

.msc-headline {
  margin: 1rem 0 1rem 0;

  h2 {
    font-weight: 700;
  }
}

.msc-items {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
  gap: 2rem;

  @media (min-width: 62em) {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  }
}

// change layout for child components
.msc-items *:only-child {
  .msc-item {
    flex-direction: row;

    .msc-content {
      width: 50%;

      .btn.btn-primary {
        display: inline-block !important;
      }
    }

    .msc-image {
      width: 50%;
    }
  }
}
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""