File indexing completed on 2026-10-27 08:41:16
0001 <div class="data-selector">
0002 <div class="tab-strip" role="tablist">
0003 @for (tab of visibleTabs(); track tab.id) {
0004 <button type="button"
0005 role="tab"
0006 class="tab"
0007 [class.active]="tab.id === activeTabId()"
0008 [attr.aria-selected]="tab.id === activeTabId()"
0009 (click)="selectTab(tab.id)">
0010 {{ tab.label }}
0011 </button>
0012 }
0013 </div>
0014
0015 <div class="tab-body">
0016 @if (tabComponent(); as component) {
0017 <ng-container *ngComponentOutlet="component"></ng-container>
0018 } @else if (tabError(); as message) {
0019 <div class="status error"><mat-icon>error_outline</mat-icon><span>{{ message }}</span></div>
0020 } @else if (visibleTabs().length === 0) {
0021 <div class="status note">No data selector tabs are registered.</div>
0022 }
0023 </div>
0024
0025 @if (catalog.remoteError(); as message) {
0026 <div class="status warning"><mat-icon>warning_amber</mat-icon><span>{{ message }}</span></div>
0027 }
0028
0029 <div class="actions">
0030 @if (showCancel()) {
0031 <button type="button" mat-button (click)="cancel()">Cancel</button>
0032 }
0033 <button type="button" mat-raised-button class="apply-btn" [disabled]="!applyEnabled()" (click)="apply()">
0034 {{ applyLabel() }}
0035 </button>
0036 </div>
0037 </div>