@@ -22,6 +22,7 @@ export default class PgTreeItem extends HTMLElement {
2222 @Prop ( ) actions : any [ ] = [ ] ;
2323 @Prop ( ) items : any [ ] = [ ] ;
2424
25+ @Part ( ) $toggle : HTMLButtonElement ;
2526 @Part ( ) $item : HTMLDivElement ;
2627 @Part ( ) $input : HTMLInputElement ;
2728 @Part ( ) $iconButton : HTMLButtonElement ;
@@ -32,6 +33,7 @@ export default class PgTreeItem extends HTMLElement {
3233 @Part ( ) $items : HTMLDivElement ;
3334
3435 connectedCallback ( ) {
36+ this . $toggle . addEventListener ( 'click' , this . #handleToggleClick. bind ( this ) ) ;
3537 this . $item . addEventListener ( 'action' , this . #handleAction. bind ( this ) ) ;
3638 this . $labelButton . addEventListener ( 'dblclick' , this . #handleDoubleClick. bind ( this ) ) ;
3739 this . $labelButton . addEventListener ( 'click' , this . #handleClick. bind ( this ) ) ;
@@ -40,6 +42,7 @@ export default class PgTreeItem extends HTMLElement {
4042 this . $item . addEventListener ( 'contextmenu' , this . #handleContextMenu. bind ( this ) ) ;
4143 this . $input . addEventListener ( 'blur' , this . #handleBlur. bind ( this ) ) ;
4244 this . $input . addEventListener ( 'keydown' , this . #handleInputKeyDown. bind ( this ) ) ;
45+ this . $items . addEventListener ( 'toggle' , this . #handleToggle. bind ( this ) ) ;
4346 this . $items . addEventListener ( 'select' , this . #handleSelect. bind ( this ) ) ;
4447 this . $items . addEventListener ( 'rename' , this . #handleRename. bind ( this ) ) ;
4548 this . $items . addEventListener ( 'up' , this . #handleUp. bind ( this ) ) ;
@@ -81,15 +84,27 @@ export default class PgTreeItem extends HTMLElement {
8184 this . $item . classList . toggle ( 'selected' , this . selected ) ;
8285 }
8386 if ( changes . items ) {
84- this . $items . classList . toggle ( 'hide ' , this . items . length = == 0 ) ;
87+ this . $item . classList . toggle ( 'items ' , this . items . length ! == 0 ) ;
8588 }
8689 if ( changes . expanded ) {
8790 if ( this . expanded ) {
8891 this . #initItems( ) ;
8992 }
93+ this . $item . classList . toggle ( 'expanded' , this . expanded ) ;
94+ this . $items . classList . toggle ( 'expanded' , this . expanded ) ;
9095 }
9196 }
9297
98+ #handleToggleClick( ) {
99+ this . dispatchEvent ( new CustomEvent ( 'toggle' , {
100+ bubbles : true ,
101+ composed : true ,
102+ detail : {
103+ indexes : [ this . index ]
104+ }
105+ } ) ) ;
106+ }
107+
93108 #handleIconDoubleClick( ) {
94109 this . dispatchEvent ( new CustomEvent ( 'select' , {
95110 bubbles : true ,
@@ -135,6 +150,10 @@ export default class PgTreeItem extends HTMLElement {
135150 } ) ) ;
136151 }
137152
153+ #handleToggle( e : any ) {
154+ e . detail . indexes . unshift ( this . index ) ;
155+ }
156+
138157 #handleRename( e : any ) {
139158 e . detail . indexes . unshift ( this . index ) ;
140159 }
0 commit comments