Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions src/app/examples/si-accordion/si-accordion-tabs.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<si-tabset>
<si-tab heading="Tab 1" [active]="true">Hello</si-tab>
<si-tab heading="Tab 2 with table">
<div class="bg-base-0 p-5">
<h4>On base-0</h4>
<si-accordion>
<si-collapsible-panel
heading="Hey there"
(panelToggle)="logEvent('toggle Hey there', $event)"
>
<div class="p-6"> Here is some content </div>
</si-collapsible-panel>
<si-collapsible-panel
heading="Another one"
badge="5"
badgeColor="info"
contentCssClasses="p-6"
(panelToggle)="logEvent('toggle Another one', $event)"
>
<si-search-bar colorVariant="base-0" placeholder="Search..." />
<ngx-datatable
class="table-element"
columnMode="force"
[rows]="[
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 }
]"
[columns]="[{ prop: 'name' }, { prop: 'age' }]"
Comment on lines +24 to +38
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For better readability and separation of concerns, it's recommended to move the hardcoded data for the ngx-datatable from the template to the component's TypeScript file. This makes the template cleaner and the data easier to manage.

You can define the data in your SampleComponent class:

export class SampleComponent {
  // ...
  logEvent = inject(LOG_EVENT);

  tableRows = [
    { name: 'John', age: 30 },
    { name: 'Jane', age: 25 },
    { name: 'John', age: 30 },
    { name: 'Jane', age: 25 },
    { name: 'John', age: 30 },
    { name: 'Jane', age: 25 },
    { name: 'John', age: 30 },
    { name: 'Jane', age: 25 },
    { name: 'John', age: 30 },
    { name: 'Jane', age: 25 },
    { name: 'John', age: 30 },
    { name: 'Jane', age: 25 }
  ];

  tableColumns = [{ prop: 'name' }, { prop: 'age' }];
}

Then use these properties in the template.

Suggested change
[rows]="[
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 }
]"
[columns]="[{ prop: 'name' }, { prop: 'age' }]"
[rows]="tableRows"
[columns]="tableColumns"

/>
</si-collapsible-panel>
<si-collapsible-panel
heading="Number three"
contentCssClasses="p-6"
(panelToggle)="logEvent('toggle Number three', $event)"
>
Nothing to see here
</si-collapsible-panel>
<si-collapsible-panel
contentCssClasses="p-6"
(panelToggle)="logEvent('toggle Number four', $event)"
>
<span si-panel-heading>Heading via content projection</span>
Nothing to see here
</si-collapsible-panel>
</si-accordion>
</div>
</si-tab>
</si-tabset>
27 changes: 27 additions & 0 deletions src/app/examples/si-accordion/si-accordion-tabs.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/**
* Copyright (c) Siemens 2016 - 2026
* SPDX-License-Identifier: MIT
*/
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { SiAccordionComponent, SiCollapsiblePanelComponent } from '@siemens/element-ng/accordion';
import { SiSearchBarComponent } from '@siemens/element-ng/search-bar';
import { SiTabComponent, SiTabsetComponent } from '@siemens/element-ng/tabs';
import { LOG_EVENT } from '@siemens/live-preview';
import { DatatableComponent } from '@siemens/ngx-datatable';

@Component({
selector: 'app-sample',
imports: [
SiAccordionComponent,
SiCollapsiblePanelComponent,
DatatableComponent,
SiTabComponent,
SiTabsetComponent,
SiSearchBarComponent
],
templateUrl: './si-accordion-tabs.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class SampleComponent {
logEvent = inject(LOG_EVENT);
}
Loading