From 400550933959ae28c78126c555d5d1c29b86d301 Mon Sep 17 00:00:00 2001 From: Michael Doyle Date: Fri, 16 May 2025 15:42:25 -0400 Subject: [PATCH 1/2] properly deal with empty objects --- projects/demo/src/app/app.component.html | 3 ++- .../src/lib/ngx-json-treeview.component.html | 14 ++++++++++++-- .../src/lib/ngx-json-treeview.component.ts | 7 +++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/projects/demo/src/app/app.component.html b/projects/demo/src/app/app.component.html index 97a7884..f460067 100644 --- a/projects/demo/src/app/app.component.html +++ b/projects/demo/src/app/app.component.html @@ -34,13 +34,14 @@

Clickable Nodes

} -

Primatives

+

Simple Types

+

Arrays

diff --git a/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.html b/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.html index 1adba9b..96e0b62 100644 --- a/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.html +++ b/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.html @@ -1,6 +1,10 @@
@if (segments().length === 0) { -
+ @let sectionClass = + ['object', 'array'].includes(rootType()) + ? 'punctuation' + : 'segment-type-' + rootType(); +
{{ asString() }} @@ -17,6 +21,7 @@ ) {
@let expandable = isExpandable(segment); + @let empty = isEmpty(segment); @let openingBrace = openingBraceForSegment(segment); @let closingBrace = closingBraceForSegment(segment); @let clickableValue = isClickable(segment); @@ -33,7 +38,12 @@ {{ `"${segment.key}"` }} : - @if (!expandable || !segment.expanded) { + @if (empty) { + {{ `${openingBrace}${closingBrace}${i < len - 1 ? ',' : ''}` }} + } @else if (!expandable || !segment.expanded) { Date: Fri, 16 May 2025 15:46:57 -0400 Subject: [PATCH 2/2] fix spelling of puctuation --- .../src/lib/ngx-json-treeview.component.html | 14 +++++++------- .../src/lib/ngx-json-treeview.component.scss | 2 +- .../src/lib/ngx-json-treeview.component.ts | 4 +++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.html b/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.html index 96e0b62..6ef17d4 100644 --- a/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.html +++ b/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.html @@ -11,7 +11,7 @@
} @else { @if (_currentDepth() === 0) { - {{ openingBrace() }} + {{ openingBrace() }} } @for ( segment of segments(); @@ -37,10 +37,10 @@ } {{ `"${segment.key}"` }} - : + : @if (empty) { {{ `${openingBrace}${closingBrace}${i < len - 1 ? ',' : ''}` }} } @else if (!expandable || !segment.expanded) { @@ -53,10 +53,10 @@ (keydown.enter)="onValueClickHandler(segment)" >{{ segment.description }} - {{ i < len - 1 ? ',' : '' }} + {{ i < len - 1 ? ',' : '' }} } @else { @if (openingBrace) { - + {{ openingBrace }} } @@ -74,7 +74,7 @@ [_currentDepth]="_currentDepth() + 1" (onValueClick)="onValueClickHandler($event)" /> @if (closingBrace) { - {{ closingBrace }}{{ i < len - 1 ? ',' : '' }} } @@ -83,7 +83,7 @@
} @if (_currentDepth() === 0) { - {{ closingBrace() }} + {{ closingBrace() }} } }
diff --git a/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.scss b/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.scss index 22f9962..a433065 100644 --- a/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.scss +++ b/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.scss @@ -100,7 +100,7 @@ $type-colors: ( } } - .puctuation { + .punctuation { color: var(--ngx-json-punctuation, #000); } diff --git a/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.ts b/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.ts index 472c18e..6011a34 100644 --- a/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.ts +++ b/projects/ngx-json-treeview/src/lib/ngx-json-treeview.component.ts @@ -142,7 +142,9 @@ export class NgxJsonTreeviewComponent { return ']'; } else return '}'; }); - asString = computed(() => JSON.stringify(this.json(), null, 2)); + asString = computed(() => + JSON.stringify(this.json(), null, 2).trim() + ); isExpandable(segment: Segment) { return (