@@ -45,6 +45,7 @@ export default class PgTreeItem extends HTMLElement {
4545 this . $item . addEventListener ( 'dragend' , this . #handleDragEnd. bind ( this ) ) ;
4646 this . $labelButton . addEventListener ( 'dblclick' , this . #handleDoubleClick. bind ( this ) ) ;
4747 this . $labelButton . addEventListener ( 'click' , this . #handleClick. bind ( this ) ) ;
48+ this . $labelButton . addEventListener ( 'keydown' , this . #handleKeyDownLabel. bind ( this ) ) ;
4849 this . $iconButton . addEventListener ( 'dblclick' , this . #handleIconDoubleClick. bind ( this ) ) ;
4950 this . $iconButton . addEventListener ( 'click' , this . #handleIconClick. bind ( this ) ) ;
5051 this . $iconButton . addEventListener ( 'keydown' , this . #handleIconKeyDown. bind ( this ) ) ;
@@ -88,6 +89,10 @@ export default class PgTreeItem extends HTMLElement {
8889 }
8990 }
9091
92+ disconnectedCallback ( ) {
93+ console . log ( 'disconnect' , this . index ) ;
94+ }
95+
9196 #initItemsOnce = true ;
9297 #initItems( ) {
9398 if ( this . #initItemsOnce) {
@@ -178,6 +183,14 @@ export default class PgTreeItem extends HTMLElement {
178183 } ) ) ;
179184 }
180185
186+ #handleKeyDownLabel( e : KeyboardEvent ) {
187+ if ( e . key === 'Enter' ) {
188+ this . #enableRename( ) ;
189+ e . preventDefault ( ) ;
190+ }
191+ // todo arrow keys
192+ }
193+
181194 #handlePointerEnter( ) {
182195 this . dispatchEvent ( new CustomEvent ( 'enter' , {
183196 bubbles : true ,
@@ -246,12 +259,7 @@ export default class PgTreeItem extends HTMLElement {
246259 e . preventDefault ( ) ;
247260 }
248261
249- #ignoreNextClick = false ;
250- #handleDoubleClick( e : MouseEvent ) {
251- const { ctrlKey, shiftKey } = e ;
252- if ( ctrlKey || shiftKey ) {
253- return ;
254- }
262+ #enableRename( ) {
255263 this . $labelButton . classList . add ( 'hide' ) ;
256264 this . $actions . classList . add ( 'hide' ) ;
257265 this . $input . classList . remove ( 'hide' ) ;
@@ -266,14 +274,23 @@ export default class PgTreeItem extends HTMLElement {
266274 indexes : [ this . index ]
267275 }
268276 } ) ) ;
277+ }
278+
279+ #ignoreNextClick = false ;
280+ #handleDoubleClick( e : MouseEvent ) {
281+ const { ctrlKey, shiftKey } = e ;
282+ if ( ctrlKey || shiftKey ) {
283+ return ;
284+ }
285+ this . #enableRename( ) ;
269286 e . preventDefault ( ) ;
270287 }
271288
272289 #handleBlur( ) {
273290 this . $labelButton . classList . remove ( 'hide' ) ;
274291 this . $actions . classList . remove ( 'hide' ) ;
275292 this . $input . classList . add ( 'hide' ) ;
276- this . $labelButton . focus ( ) ;
293+ this . $labelButton . click ( ) ;
277294 this . dispatchEvent ( new CustomEvent ( 'rename' , {
278295 bubbles : true ,
279296 composed : true ,
@@ -315,7 +332,7 @@ export default class PgTreeItem extends HTMLElement {
315332 this . $actions . classList . remove ( 'hide' ) ;
316333 this . $input . classList . add ( 'hide' ) ;
317334 this . $input . value = this . label ;
318- this . $labelButton . focus ( ) ;
335+ this . $labelButton . click ( ) ;
319336 break ;
320337 case 'ArrowUp' :
321338 this . dispatchEvent ( new CustomEvent ( 'up' , {
0 commit comments