@@ -28,7 +28,16 @@ class NodeSelector {
2828
2929 this . div . addEventListener ( "mousedown" , ev => {
3030 ev . stopImmediatePropagation ( )
31- } )
31+ } ) ;
32+
33+ //
34+ // Autocomplete
35+ //
36+ let autocompleteIntrv = 0 ;
37+ this . input . addEventListener ( "keyup" , ev => {
38+ clearInterval ( autocompleteIntrv ) ;
39+ autocompleteIntrv = setTimeout ( ( ) => this . filterList ( ) , 300 ) ;
40+ } ) ;
3241
3342 // render types!
3443 //#region Node Types
@@ -46,7 +55,17 @@ class NodeSelector {
4655
4756 const li = ul . appendChild ( document . createElement ( "li" ) ) ;
4857
49- li . innerText = "→" + node . name ;
58+ li . setAttribute ( "node-id" , node . id ) ;
59+ li . setAttribute ( "node-name" , node . name ) ;
60+
61+ const groupLabel = li . appendChild ( document . createElement ( "div" ) ) ;
62+ const label = li . appendChild ( document . createElement ( "span" ) ) ;
63+ label . innerText = "→" + node . name ;
64+
65+ groupLabel . classList . add ( styles . groupTitle )
66+ groupLabel . style . backgroundColor = groupType . color ;
67+ groupLabel . innerText = groupType . group ;
68+
5069 li . addEventListener ( "click" , ev => this . addNewNode ( new node . TypeClass ) )
5170
5271 } ) ;
@@ -64,6 +83,19 @@ class NodeSelector {
6483 return ! this . div . classList . contains ( styles . hide )
6584 }
6685
86+ private filterList ( ) {
87+ const term = this . input . value . toLowerCase ( ) ;
88+ this . div . classList . remove ( styles . term ) ;
89+ if ( term !== "" ) this . div . classList . add ( styles . term ) ;
90+ this . div . querySelectorAll ( "li" ) . forEach ( li => {
91+ const match = term == "" || li . getAttribute ( "node-name" ) ?. toLowerCase ( ) . includes ( term ) ;
92+ li . classList . remove ( styles . hide ) ;
93+ if ( ! match ) {
94+ li . classList . add ( styles . hide )
95+ }
96+ } )
97+ }
98+
6799 private addNewNode ( node :WinNode )
68100 {
69101 this . _onCreated ?.( node ) ;
@@ -83,6 +115,7 @@ class NodeSelector {
83115
84116 this . input . value = "" ;
85117 this . input . focus ( )
118+ this . filterList ( )
86119
87120 this . _onCreated = onCreated ;
88121 }
0 commit comments