diff --git a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.html b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.html
index dcf76212232..5b3716f52e8 100644
--- a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.html
+++ b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.html
@@ -1,38 +1,56 @@
{{label()}} |
@switch (type()) {
- @case ('chip') {
-
- }
@case ('flag') {
- {{ rowValue() }}
+ {{ rowValue() || 'false' }}
}
@case ('list') {
-
- @for (provider of dataArray(); track $index) {
-
- }
-
+ @for (provider of dataArray(); track $index) {
+
+ {{ provider || '[empty string] ' }}
+
+ }
}
@default {
-
- @if (renderValueAsJson()) {
- {{ rowValue() | json }}
- } @else {
- {{ rowValue() }}
- }
-
+
+
+ @if (rowValue() && renderValueAsJson()) {
+ {{ rowValue() | json }}
+ } @else {
+ {{ rowValue() || '[empty string] ' }}
+ }
+
}
}
|
+
+
+ @if (actionBtnType() !== 'none') {
+
+ }
+
diff --git a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.scss b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.scss
index 95c05f8a6f9..ab7f43acd21 100644
--- a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.scss
+++ b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.scss
@@ -13,11 +13,35 @@
border-color: var(--red-06);
}
-.chips-container {
- display: flex;
- flex-wrap: wrap;
- gap: 0.375rem;
- overflow-wrap: normal;
+button {
+ width: 16px;
+ height: 16px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ vertical-align: middle;
+ color: var(--quaternary-contrast);
+
+ &:not([disabled]):hover {
+ color: var(--primary-contrast);
+ }
+
+ &[disabled] {
+ cursor: default;
+ color: var(--quinary-contrast);
+ }
+
+ mat-icon {
+ font-size: 14px;
+ width: 14px;
+ height: 14px;
+
+ &.view-source {
+ font-size: 16px;
+ width: 16px;
+ height: 16px;
+ }
+ }
}
td {
diff --git a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.spec.ts b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.spec.ts
index d1a32cfbc7c..0dd5bc9336d 100644
--- a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.spec.ts
+++ b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.spec.ts
@@ -74,10 +74,11 @@ describe('RouteDetailsRowComponent', () => {
expect(dataElements[0].nativeElement.innerText).toEqual('false');
});
- it('should render a label and chip data', () => {
+ it('should render a label with an action button', () => {
fixture.componentRef.setInput('type', 'chip');
fixture.componentRef.setInput('data', {name: 'Component Name'});
fixture.componentRef.setInput('dataKey', 'name');
+ fixture.componentRef.setInput('actionBtnType', 'view-source');
fixture.detectChanges();
const labelElement = fixture.debugElement.query(By.css('th'));
@@ -85,13 +86,14 @@ describe('RouteDetailsRowComponent', () => {
const dataElements = fixture.debugElement.queryAll(By.css('button'));
expect(dataElements.length).toEqual(1);
- expect(dataElements[0].nativeElement.innerText).toEqual('Component Name');
});
- it('should render a label and chip data disabled', () => {
+ it('should render a label with a disabled action button', () => {
fixture.componentRef.setInput('type', 'chip');
fixture.componentRef.setInput('data', {name: 'Lazy Component Name'});
fixture.componentRef.setInput('dataKey', 'name');
+ fixture.componentRef.setInput('actionBtnType', 'view-source');
+ fixture.componentRef.setInput('actionBtnDisabled', true);
fixture.detectChanges();
const labelElement = fixture.debugElement.query(By.css('th'));
@@ -99,7 +101,6 @@ describe('RouteDetailsRowComponent', () => {
const dataElements = fixture.debugElement.queryAll(By.css('button'));
expect(dataElements.length).toEqual(1);
- expect(dataElements[0].nativeElement.innerText).toEqual('Lazy Component Name');
expect(dataElements[0].nativeElement.disabled).toEqual(true);
});
@@ -107,6 +108,7 @@ describe('RouteDetailsRowComponent', () => {
fixture.componentRef.setInput('type', 'list');
fixture.componentRef.setInput('data', {providers: ['Guard 1', 'Guard 2']});
fixture.componentRef.setInput('dataKey', 'providers');
+ fixture.componentRef.setInput('actionBtnType', 'view-source');
fixture.detectChanges();
const labelElement = fixture.debugElement.query(By.css('th'));
@@ -114,7 +116,5 @@ describe('RouteDetailsRowComponent', () => {
const dataElements = fixture.debugElement.queryAll(By.css('button'));
expect(dataElements.length).toEqual(2);
- expect(dataElements[0].nativeElement.innerText).toEqual('Guard 1');
- expect(dataElements[1].nativeElement.innerText).toEqual('Guard 2');
});
});
diff --git a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.ts b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.ts
index b2707abe99e..0fa7a2f7581 100644
--- a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.ts
+++ b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/route-details-row.component.ts
@@ -7,17 +7,20 @@
*/
import {Component, computed, input, output, ChangeDetectionStrategy} from '@angular/core';
+import {JsonPipe, NgTemplateOutlet} from '@angular/common';
+import {MatIcon} from '@angular/material/icon';
import {ButtonComponent} from '../../shared/button/button.component';
-import {JsonPipe} from '@angular/common';
import {RouterTreeNode} from './router-tree-fns';
+import {MatTooltip} from '@angular/material/tooltip';
-export type RowType = 'text' | 'chip' | 'flag' | 'list';
+export type RowType = 'text' | 'flag' | 'list';
+export type ActionBtnType = 'none' | 'view-source' | 'navigate';
@Component({
selector: '[ng-route-details-row]',
templateUrl: './route-details-row.component.html',
styleUrls: ['./route-details-row.component.scss'],
- imports: [ButtonComponent, JsonPipe],
+ imports: [NgTemplateOutlet, ButtonComponent, JsonPipe, MatIcon, MatTooltip],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class RouteDetailsRowComponent {
@@ -26,8 +29,11 @@ export class RouteDetailsRowComponent {
readonly dataKey = input.required();
readonly renderValueAsJson = input(false);
readonly type = input('text');
+ readonly actionBtnType = input('none');
+ readonly actionBtnTooltip = input('');
+ readonly actionBtnDisabled = input(false);
- readonly btnClick = output();
+ readonly actionBtnClick = output();
readonly rowValue = computed(() => {
return this.data()[this.dataKey() as keyof RouterTreeNode];
diff --git a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree.component.html b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree.component.html
index 046ff75e6d6..9a17ddb4f92 100644
--- a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree.component.html
+++ b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree.component.html
@@ -47,134 +47,147 @@
-
+
}
diff --git a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree.component.scss b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree.component.scss
index 2607c8b90fd..2135d30796b 100644
--- a/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree.component.scss
+++ b/devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree.component.scss
@@ -29,7 +29,9 @@
.side-pane {
position: relative;
- padding: 1rem;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
.close-btn {
position: absolute;
@@ -47,10 +49,13 @@
@extend %heading-400;
margin: 0;
padding-top: 0;
+ padding: 1rem;
}
- table {
- margin-top: 1rem;
+ .scrollable-wrapper {
+ padding: 0 1rem 1rem 1rem;
+ height: 100%;
+ overflow-y: auto;
}
}
diff --git a/devtools/projects/ng-devtools/src/styles/_tables.scss b/devtools/projects/ng-devtools/src/styles/_tables.scss
index 43e532fe88b..de01b0a1e41 100644
--- a/devtools/projects/ng-devtools/src/styles/_tables.scss
+++ b/devtools/projects/ng-devtools/src/styles/_tables.scss
@@ -7,8 +7,6 @@ table.ng-table {
width: 100%;
tr {
- height: 38px;
-
th {
@extend %body-bold-01;
margin: 0;
@@ -37,6 +35,6 @@ table.ng-table {
border-bottom: 1px solid var(--senary-contrast);
overflow: hidden;
text-overflow: ellipsis;
- padding: 0 0.375rem;
+ padding: 0.625rem 0.375rem;
}
}