@@ -4,17 +4,18 @@ import PgTree from '../../tree';
44import template from './basic.html' ;
55import PgTreeButtonIcon from '../../../treeButtonIcon/treeButtonIcon' ;
66
7+ const IconAccount = 'M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z' ;
78const IconEye = 'M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z' ;
89const IconEyeOff = 'M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.58,15.76C18.94,14.82 20.06,13.54 20.82,12C19.17,8.64 15.76,6.5 12,6.5C10.91,6.5 9.84,6.68 8.84,7L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C12.69,17.5 13.37,17.43 14,17.29L11.72,15C10.29,14.85 9.15,13.71 9,12.28L5.6,8.87C4.61,9.72 3.78,10.78 3.18,12Z' ;
910const IconLock = 'M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z' ;
1011const IconUnlock = 'M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z' ;
1112
12- function createItem ( key ) {
13+ function createItem ( label ) {
1314 return {
1415 icon : {
15- path : IconEye
16+ path : IconAccount
1617 } ,
17- label : 'Item 1' ,
18+ label,
1819 actions : [ {
1920 type : PgTreeButtonIcon ,
2021 icon : IconEye ,
@@ -25,6 +26,9 @@ function createItem(key) {
2526 label : 'Delete' ,
2627 icon : IconUnlock ,
2728 enabled : false
29+ } ] ,
30+ items : [ {
31+ label : 'Sub Item'
2832 } ]
2933 } ;
3034}
@@ -61,54 +65,33 @@ export default class XPgTreeBasic extends HTMLElement {
6165 }
6266 } ) ;
6367 this . $tree . addEventListener ( 'rename' , ( e : any ) => {
64- const { index, label } = e . detail ;
65- this . $tree . items [ index ] . label = label ;
68+ const { indexes, label } = e . detail ;
69+ const item = this . #getItem( indexes ) ;
70+ item . label = label ;
6671 } ) ;
72+ let previousIndexes = null ;
6773 this . $tree . addEventListener ( 'select' , ( e : any ) => {
6874 const { indexes } = e . detail ;
69- const item = indexes . reduce ( ( item , index ) => {
70- return item . items [ index ] ;
71- } , this . $tree ) ;
75+ const item = this . #getItem( indexes ) ;
7276 item . selected = true ;
77+ if ( previousIndexes ) {
78+ const previousItem = this . #getItem( previousIndexes ) ;
79+ previousItem . selected = false ;
80+ }
81+ previousIndexes = indexes ;
7382 } ) ;
7483 this . $tree . addEventListener ( 'menu' , ( e : any ) => {
7584 // action clicked
7685 } ) ;
77- this . $tree . items = [ {
78- icon : {
79- path : IconEye
80- } ,
81- selected : true ,
82- label : 'Item 1' ,
83- actions : [ {
84- type : PgTreeButtonIcon ,
85- icon : IconEye ,
86- enabled : true
87- } ,
88- {
89- type : PgTreeButtonIcon ,
90- label : 'Delete' ,
91- icon : IconUnlock ,
92- enabled : false
93- } ]
94- } ,
95- {
96- label : 'Item 2' ,
97- items : [
98- {
99- label : 'Nested'
100- }
101- ]
102- } ] ;
103- // Push to same array instance!
104- this . $tree . items . push ( { label : 'testing' } ) ;
86+ this . $tree . items = [
87+ createItem ( 'Item 1' ) ,
88+ createItem ( 'Item 2' )
89+ ] ;
10590
10691 let next : number = 2 ;
10792 this . $addItem . addEventListener ( 'click' , ( ) => {
10893 next ++ ;
109- this . $tree . items . push ( {
110- label : `Item ${ next } `
111- } ) ;
94+ this . $tree . items . push ( createItem ( `Item ${ next } ` ) ) ;
11295 } ) ;
11396
11497 this . $removeItem . addEventListener ( 'click' , ( ) => {
@@ -120,4 +103,10 @@ export default class XPgTreeBasic extends HTMLElement {
120103 this . $tree . items [ 1 ] . label = `Updated ${ updatedTimes ++ } ` ;
121104 } ) ;
122105 }
106+
107+ #getItem( indexes : number [ ] ) {
108+ return indexes . reduce ( ( item , index ) => {
109+ return item . items [ index ] ;
110+ } , this . $tree ) ;
111+ }
123112}
0 commit comments