as per https://pages.github.ibm.com/ibmcloud/pal/storybook/?path=/story/components-card--details-with-stacked-rows
added a details component which can be used as
```
<cd-details-card title="card title">
<ng-container class="details-body-content">
<div cdsCol [columnNumbers]="{lg: 4}">
<span class="cds--label">
label
</span>
<span>value</span>
</div
</ng-container>
</cd-details-card>
```
Fixes: https://tracker.ceph.com/issues/72246
Signed-off-by: Nizamudeen A <nia@redhat.com>
ComboBoxModule,
ProgressIndicatorModule,
PanelModule,
- LayoutModule
+ LayoutModule,
+ TilesModule
} from 'carbon-components-angular';
import EditIcon from '@carbon/icons/es/edit/20';
import CodeIcon from '@carbon/icons/es/code/16';
import { ChartsModule } from '@carbon/charts-angular';
import { InlineMessageComponent } from './inline-message/inline-message.component';
import { IconComponent } from './icon/icon.component';
+import { DetailsCardComponent } from './details-card/details-card.component';
// Icons
import InfoIcon from '@carbon/icons/es/information/16';
BaseChartDirective,
PanelModule,
ChartsModule,
- LayoutModule
+ LayoutModule,
+ TilesModule
],
declarations: [
SparklineComponent,
ProgressComponent,
SidePanelComponent,
IconComponent,
- InlineMessageComponent
+ InlineMessageComponent,
+ DetailsCardComponent
],
providers: [provideCharts(withDefaultRegisterables())],
exports: [
ProgressComponent,
SidePanelComponent,
IconComponent,
- InlineMessageComponent
+ InlineMessageComponent,
+ DetailsCardComponent
]
})
export class ComponentsModule {
--- /dev/null
+<cds-tile>
+ <div class="details-card-header">
+ <span class="cds--type-heading-03"
+ i18n>{{ cardTitle }}</span>
+ </div>
+
+ <div class="details-card-body">
+ <div cdsRow>
+ <ng-content select=".details-body-content"></ng-content>
+ </div>
+ </div>
+</cds-tile>
--- /dev/null
+@use '@carbon/layout';
+
+.details-card-header {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+ padding-bottom: layout.$spacing-05;
+ position: relative;
+}
+
+::ng-deep .cds--label {
+ display: block;
+}
+
+.cds--row {
+ row-gap: layout.$spacing-05;
+}
--- /dev/null
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DetailsCardComponent } from './details-card.component';
+
+describe('DetailsCardComponent', () => {
+ let component: DetailsCardComponent;
+ let fixture: ComponentFixture<DetailsCardComponent>;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [DetailsCardComponent]
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(DetailsCardComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
--- /dev/null
+import { Component, Input } from '@angular/core';
+
+@Component({
+ selector: 'cd-details-card',
+ templateUrl: './details-card.component.html',
+ styleUrl: './details-card.component.scss'
+})
+export class DetailsCardComponent {
+ @Input()
+ cardTitle: string;
+}