Skip to content

Commit e608a92

Browse files
committed
fix(json-view): keep nested items collapsed on toggle regardless of initial levelOpen
1 parent 9f93244 commit e608a92

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

packages/demo/src/app/json-view/documentation.json

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@
174174
"components": [
175175
{
176176
"name": "JsonViewComponent",
177-
"id": "component-JsonViewComponent-43a4e5de5f43e9cf40f2a8c9c997b2d7f0ab8c0c8b2acc253f3709e593ff92052ea3c7c2becb5bbc7dbb7772881216104020c6e01e4aae4eac86db82f3a44b42",
177+
"id": "component-JsonViewComponent-3d4c50ecdb32724dd421ad99a55459f18bc168517311d9dd4f2217f0c87c48b338ebcfcc872944eea4f78776b6876cd420304519630b9bc81326c230b976b27b",
178178
"file": "src/lib/json-view/json-view.component.ts",
179179
"encapsulation": [
180180
"ViewEncapsulation.Emulated"
@@ -223,8 +223,8 @@
223223
"name": "levelOpen",
224224
"deprecated": false,
225225
"deprecationMessage": "",
226-
"rawdescription": "\nInitial number of levels to be expanded",
227-
"description": "<p>Initial number of levels to be expanded</p>\n",
226+
"rawdescription": "\nInitial number of levels to be expanded; to expand / collapse the view after initial render, use `expandTo` / `collapseTo`",
227+
"description": "<p>Initial number of levels to be expanded; to expand / collapse the view after initial render, use <code>expandTo</code> / <code>collapseTo</code></p>\n",
228228
"line": 22,
229229
"type": "number",
230230
"decorators": []
@@ -246,7 +246,7 @@
246246
"optional": false,
247247
"returnType": "void",
248248
"typeParameters": [],
249-
"line": 35,
249+
"line": 44,
250250
"deprecated": false,
251251
"deprecationMessage": "",
252252
"rawdescription": "\nCollapse any open items above the given level",
@@ -276,7 +276,7 @@
276276
"optional": false,
277277
"returnType": "void",
278278
"typeParameters": [],
279-
"line": 29,
279+
"line": 38,
280280
"deprecated": false,
281281
"deprecationMessage": "",
282282
"rawdescription": "\nExpand all items up to the given level",
@@ -292,6 +292,16 @@
292292
}
293293
}
294294
]
295+
},
296+
{
297+
"name": "ngAfterViewChecked",
298+
"args": [],
299+
"optional": false,
300+
"returnType": "void",
301+
"typeParameters": [],
302+
"line": 29,
303+
"deprecated": false,
304+
"deprecationMessage": ""
295305
}
296306
],
297307
"deprecated": false,
@@ -304,7 +314,10 @@
304314
"rawdescription": "\n",
305315
"type": "component",
306316
"assetsDirs": [],
307-
"extends": []
317+
"extends": [],
318+
"implements": [
319+
"AfterViewChecked"
320+
]
308321
}
309322
],
310323
"modules": [

packages/json-view/src/lib/json-view/json-view.component.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, inject, Input, ViewEncapsulation } from '@angular/core'
1+
import { AfterViewChecked, ChangeDetectorRef, Component, inject, Input, ViewEncapsulation } from '@angular/core'
22
import { LevelLabels } from '../utils/interfaces'
33
import { ExpanderService } from '../expander/expander.service'
44

@@ -15,7 +15,7 @@ import { ExpanderService } from '../expander/expander.service'
1515
}
1616
]
1717
})
18-
export class JsonViewComponent {
18+
export class JsonViewComponent implements AfterViewChecked {
1919
/** JSON data, any valid JSON object */
2020
@Input() data: any
2121
/** Initial number of levels to be expanded; to expand / collapse the view after initial render, use `expandTo` / `collapseTo` */
@@ -24,6 +24,15 @@ export class JsonViewComponent {
2424
@Input() levelLabels?: LevelLabels
2525

2626
private readonly expanderService = inject(ExpanderService)
27+
private readonly cdRef = inject(ChangeDetectorRef)
28+
29+
ngAfterViewChecked(): void {
30+
if (this.levelOpen != undefined) {
31+
// Reset levelOpen to keep nested items collapsed when toggling
32+
this.levelOpen = undefined
33+
this.cdRef.detectChanges()
34+
}
35+
}
2736

2837
/** Expand all items up to the given level */
2938
expandTo(level: number) {

0 commit comments

Comments
 (0)