Skip to content
Merged
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Directive, TemplateRef } from '@angular/core';

@Directive({
selector: '[htListViewKeyRenderer]'
})
export class ListViewKeyRendererDirective {
public constructor(private readonly templateRef: TemplateRef<unknown>) {}

public getTemplateRef(): TemplateRef<unknown> {
return this.templateRef;
}
}
15 changes: 14 additions & 1 deletion projects/components/src/list-view/list-view.component.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';
import { ListViewKeyRendererDirective } from './list-view-key-renderer.directive';
import { ListViewValueRendererDirective } from './list-view-value-renderer.directive';
@Component({
selector: 'ht-list-view',
Expand All @@ -8,6 +9,10 @@ import { ListViewValueRendererDirective } from './list-view-value-renderer.direc
<ng-template #defaultValueRenderer let-record
><span>{{ record.value }}</span></ng-template
>
<ng-template #defaultKeyRenderer let-record
><span>{{ record.key }}</span></ng-template
>

<div class="list-view">
<div *ngIf="this.header" class="header-row">
<div class="header-key-label">
Expand All @@ -19,7 +24,12 @@ import { ListViewValueRendererDirective } from './list-view-value-renderer.direc
</div>
<div class="data-row" *ngFor="let record of this.records">
<div class="key">
<span>{{ record.key }}</span>
<ng-container
*ngTemplateOutlet="
this.keyRenderer ? this.keyRenderer!.getTemplateRef() : defaultKeyRenderer;
context: { $implicit: record }
"
></ng-container>
</div>
<div class="value">
<ng-container
Expand All @@ -42,6 +52,9 @@ export class ListViewComponent {

@ContentChild(ListViewValueRendererDirective)
public valueRenderer?: ListViewValueRendererDirective;

@ContentChild(ListViewKeyRendererDirective)
public keyRenderer?: ListViewKeyRendererDirective;
}

export interface ListViewHeader {
Expand Down
5 changes: 3 additions & 2 deletions projects/components/src/list-view/list-view.module.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { ListViewKeyRendererDirective } from './list-view-key-renderer.directive';
import { ListViewValueRendererDirective } from './list-view-value-renderer.directive';
import { ListViewComponent } from './list-view.component';

@NgModule({
declarations: [ListViewComponent, ListViewValueRendererDirective],
exports: [ListViewComponent, ListViewValueRendererDirective],
declarations: [ListViewComponent, ListViewValueRendererDirective, ListViewKeyRendererDirective],
exports: [ListViewComponent, ListViewValueRendererDirective, ListViewKeyRendererDirective],
imports: [CommonModule]
})
export class ListViewModule {}
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,17 @@ describe('Modal Container component', () => {
content: TestComponent,
size: ModalSize.LargeTall
});
checkSyles('640px', '90vh');
checkSyles('840px', '90vh');
});

test('uses the requested large-wide size', () => {
spectator = createConfiguredHost({
showControls: true,
title: 'Create User',
content: TestComponent,
size: ModalSize.LargeWide
});
checkSyles('95em', '90vh');
});

test('uses the requested medium-wide size', () => {
Expand Down
7 changes: 5 additions & 2 deletions projects/components/src/modal/modal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ export const enum ModalSize {
LargeShort = 'large-short',
Large = 'large',
LargeTall = 'large-tall',
MediumWide = 'medium-wide'
MediumWide = 'medium-wide',
LargeWide = 'large-wide'
}

export interface ModalDimension {
Expand All @@ -36,9 +37,11 @@ export const getModalDimensions = (modalSize: ModalSize): ModalDimension => {
case ModalSize.Large:
return getModalDimensionObject(640, 720);
case ModalSize.LargeTall:
return getModalDimensionObject(640, '90vh');
return getModalDimensionObject(840, '90vh');
case ModalSize.MediumWide:
return getModalDimensionObject(840, 600);
case ModalSize.LargeWide:
return getModalDimensionObject('95em', '90vh');
default:
return getModalDimensionObject(420, 365);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,17 @@ import { ScopeQueryParam } from '../../../../pages/explorer/explorer.component';
template: `
<div class="tags-details">
<ng-container *htLoadAsync="this.tagRecords$ as tagRecords">
<ht-list-view [records]="tagRecords" data-sensitive-pii
><div class="tag-value" *htListViewValueRenderer="let record">
<ht-list-view [records]="tagRecords" data-sensitive-pii>
<div class="tag-value" *htListViewValueRenderer="let record">
<div class="value">{{ record.value }}</div>
<ht-explore-filter-link
class="filter-link"
[paramsOrUrl]="this.getExploreNavigationParams | htMemoize: record | async"
htTooltip="See traces in Explorer"
>
</ht-explore-filter-link></div
></ht-list-view>
</ht-explore-filter-link>
</div>
</ht-list-view>
</ng-container>
</div>
`
Expand Down