@@ -100,7 +100,8 @@ class ComponentDot {
100
100
for ( let element of this . CONTENT_DOM . getElementsByClassName ( "dlp-label" ) ) {
101
101
element . addEventListener ( 'click' , this . tagSelect . bind ( this , element ) , false ) ;
102
102
}
103
- this . search ( ) ;
103
+ let search = document . querySelector ( `#${ this . name } .dot-search` ) ;
104
+ search . addEventListener ( 'input' , ( ) => this . search ( search ) ) ;
104
105
}
105
106
106
107
make ( selected , select ) {
@@ -125,24 +126,20 @@ class ComponentDot {
125
126
}
126
127
127
128
tagSelect ( element ) {
128
- let cdom = element . cloneNode ( true ) ;
129
- cdom . addEventListener ( 'click' , this . tagCancel . bind ( this , cdom ) , false ) ;
130
- this . SELECTED_DOM . appendChild ( cdom ) ;
131
- element . remove ( ) ;
132
- this . tagCal ( cdom , this . MODE . insert ) ;
129
+ element . addEventListener ( 'click' , this . tagCancel . bind ( this , element ) , false ) ;
130
+ this . SELECTED_DOM . appendChild ( element ) ;
131
+ this . tagCal ( element , this . MODE . insert ) ;
133
132
this . SELECTED_DOM . scrollTop = this . SELECTED_DOM . scrollHeight ;
134
133
}
135
134
136
135
tagCancel ( element ) {
137
- let cdom = element . cloneNode ( true ) ;
138
- cdom . addEventListener ( 'click' , this . tagSelect . bind ( this , cdom ) , false ) ;
139
- this . CONTENT_DOM . appendChild ( cdom ) ;
140
- element . remove ( ) ;
141
- this . tagCal ( cdom , this . MODE . delete ) ;
136
+ element . addEventListener ( 'click' , this . tagSelect . bind ( this , element ) , false ) ;
137
+ this . CONTENT_DOM . appendChild ( element ) ;
138
+ this . tagCal ( element , this . MODE . delete ) ;
142
139
}
143
140
144
- tagCal ( cdom , operate ) {
145
- let id = parseInt ( cdom . getAttribute ( 'data-id' ) ) ;
141
+ tagCal ( element , operate ) {
142
+ let id = parseInt ( element . getAttribute ( 'data-id' ) ) ;
146
143
if ( operate === this . MODE . insert ) {
147
144
if ( this . select_data . indexOf ( id ) === - 1 ) {
148
145
this . select_data . push ( id ) ;
@@ -177,19 +174,31 @@ class ComponentDot {
177
174
}
178
175
}
179
176
180
- search ( ) {
181
- var object = this ;
182
- document . querySelector ( `#${ this . name } .dot-search` ) . addEventListener ( 'input' , function ( ) {
183
- let search = this . value ;
184
- if ( search === '' ) {
185
- return ;
177
+ search ( search ) {
178
+ if ( search . value === '' ) {
179
+ if ( this . SELECT_COVER_DOM instanceof HTMLElement ) {
180
+ this . SELECT_COVER_DOM . childNodes . forEach ( ( D ) => {
181
+ this . CONTENT_DOM . appendChild ( D ) ;
182
+ } ) ;
183
+ this . SELECT_COVER_DOM . remove ( ) ;
184
+ this . SELECT_COVER_DOM = null ;
186
185
}
187
- for ( let element of object . CONTENT_DOM . getElementsByClassName ( "dlp-label" ) ) {
188
- if ( element . innerText . indexOf ( search ) !== - 1 ) {
189
- object . CONTENT_DOM . insertBefore ( element , object . CONTENT_DOM . firstChild ) ;
190
- }
186
+ return ;
187
+ }
188
+ if ( ! ( this . SELECT_COVER_DOM instanceof HTMLElement ) ) {
189
+ this . SELECT_COVER_DOM = document . createElement ( 'div' ) ;
190
+ this . SELECT_COVER_DOM . className = 'dot-select dlp-scroll dot-select-cover' ;
191
+ this . CONTENT_DOM . appendChild ( this . SELECT_COVER_DOM ) ;
192
+ }
193
+ for ( let element of this . CONTENT_DOM . childNodes ) {
194
+ if ( element . className . indexOf ( 'dlp-label' ) === - 1 ) {
195
+ continue ;
191
196
}
192
- } , false ) ;
197
+ if ( element . innerText . indexOf ( search . value ) !== - 1 ) {
198
+ this . SELECT_COVER_DOM . appendChild ( element ) ;
199
+ }
200
+ }
201
+
193
202
}
194
203
}
195
204
@@ -235,9 +244,9 @@ class ComponentCascadeDot {
235
244
let stackDom = document . createElement ( 'div' ) ;
236
245
stackDom . className = 'dot-cascade-stack dlp-scroll' ;
237
246
data . forEach ( ( v , k ) => {
238
- if ( Array . isArray ( v . nodes ) && v . nodes . length !== 0 ) {
247
+ if ( Array . isArray ( v . nodes ) && v . nodes . length !== 0 ) {
239
248
v . nodes = v . nodes . map ( ( N ) => N . key ) ;
240
- } else {
249
+ } else {
241
250
v . nodes = null ;
242
251
v . checked = false ;
243
252
}
@@ -301,7 +310,7 @@ class ComponentCascadeDot {
301
310
currentStackDocuments . forEach ( ( D , index ) => {
302
311
if ( this . dimensional_data [ stack ] [ index ] . parentNodes . indexOf ( parentNode ) !== - 1 ) {
303
312
currentStackDocuments [ index ] . classList . remove ( 'dlp-label-silence' ) ;
304
- } else {
313
+ } else {
305
314
currentStackDocuments [ index ] . classList . add ( 'dlp-label-silence' ) ;
306
315
}
307
316
} ) ;
@@ -310,8 +319,8 @@ class ComponentCascadeDot {
310
319
element . querySelector ( 'i' ) != null && element . removeChild ( element . querySelector ( 'i' ) ) ;
311
320
element . insertAdjacentHTML ( 'beforeend' , `<i>${ _componentSvg . check } </i>` ) ;
312
321
this . selectToChildren ( stack + 1 , data . nodes ) ;
313
- this . selectToSelected ( element , stack ) ;
314
- } else if ( data . checked === true ) {
322
+ this . selectToSelected ( element , stack ) ;
323
+ } else if ( data . checked === true ) {
315
324
data . checked = false ;
316
325
this . tagCal ( id , this . MODE . delete ) ;
317
326
element . querySelector ( 'i' ) != null && element . removeChild ( element . querySelector ( 'i' ) ) ;
@@ -322,20 +331,20 @@ class ComponentCascadeDot {
322
331
break ;
323
332
}
324
333
}
325
- } else {
334
+ } else {
326
335
currentStackDocuments . forEach ( ( D , index ) => {
327
336
if ( this . dimensional_data [ stack ] [ index ] . parentNodes . indexOf ( parentNode ) !== - 1 ) {
328
337
currentStackDocuments [ index ] . classList . remove ( 'dlp-label-silence' ) ;
329
- } else {
338
+ } else {
330
339
currentStackDocuments [ index ] . classList . add ( 'dlp-label-silence' ) ;
331
340
}
332
341
} ) ;
333
342
element . classList . remove ( 'dlp-label-silence' ) ;
334
343
this . selectToChildren ( stack + 1 , data . nodes ) ;
335
344
}
336
- if ( Array . isArray ( data . parentNodes ) && data . parentNodes . length > 0 ) {
345
+ if ( Array . isArray ( data . parentNodes ) && data . parentNodes . length > 0 ) {
337
346
let parentNodes = data . parentNodes . slice ( 0 ) ;
338
- this . selectToParent ( parentNodes , data . checked ) ;
347
+ this . selectToParent ( parentNodes , data . checked ) ;
339
348
}
340
349
}
341
350
@@ -347,60 +356,60 @@ class ComponentCascadeDot {
347
356
div . textContent = element . textContent ;
348
357
var object = this ;
349
358
div . addEventListener ( 'click' , function ( ) {
350
- object . select ( element , stack ) ;
359
+ object . select ( element , stack ) ;
351
360
} ) ;
352
361
this . SELECTED_DOM . append ( div ) ;
353
362
}
354
363
355
- selectToParent ( nodes , checked ) {
364
+ selectToParent ( nodes , checked ) {
356
365
let stack = nodes . length - 1 ;
357
366
let node = nodes . pop ( ) ;
358
- let parentNode = nodes [ stack - 1 ] ;
367
+ let parentNode = nodes [ stack - 1 ] ;
359
368
let currentStackDocuments = this . STACKS [ stack ] . childNodes ;
360
369
currentStackDocuments . forEach ( ( D , index ) => {
361
370
let data = this . dimensional_data [ stack ] [ index ] ;
362
371
let parents = data . parentNodes ;
363
- if ( checked === true || checked === undefined ) {
372
+ if ( checked === true || checked === undefined ) {
364
373
let D = currentStackDocuments [ index ] ;
365
374
if ( parents . length > 0 && ( parents [ stack - 1 ] !== parentNode ) ) {
366
375
D . classList . add ( 'dlp-label-silence' ) ;
367
- } else if ( parents . length === 0 && parseInt ( D . getAttribute ( 'data-id' ) ) !== node ) {
376
+ } else if ( parents . length === 0 && parseInt ( D . getAttribute ( 'data-id' ) ) !== node ) {
368
377
D . classList . add ( 'dlp-label-silence' ) ;
369
- } else {
378
+ } else {
370
379
D . classList . remove ( 'dlp-label-silence' ) ;
371
380
}
372
381
}
373
382
if ( checked === true && node === data . key && data . mark !== true ) {
374
383
data . mark = true ;
375
384
D . insertAdjacentHTML ( 'beforeend' , `<i>${ _componentSvg . check_circle } </i>` ) ;
376
385
}
377
- if ( checked === false && node === data . key ) {
386
+ if ( checked === false && node === data . key ) {
378
387
let nodes = this . dimensional_data [ stack ] [ index ] . nodes ;
379
388
let cancel = true ;
380
- for ( let x in this . dimensional_data [ stack + 1 ] ) {
381
- let d = this . dimensional_data [ stack + 1 ] [ x ] ;
382
- if ( nodes . indexOf ( d . key ) !== - 1 && ( d . checked === true || d . mark === true ) ) {
389
+ for ( let x in this . dimensional_data [ stack + 1 ] ) {
390
+ let d = this . dimensional_data [ stack + 1 ] [ x ] ;
391
+ if ( nodes . indexOf ( d . key ) !== - 1 && ( d . checked === true || d . mark === true ) ) {
383
392
cancel = false ;
384
393
break ;
385
394
}
386
395
}
387
- if ( cancel && ( D . querySelector ( 'i' ) instanceof HTMLElement ) ) {
396
+ if ( cancel && ( D . querySelector ( 'i' ) instanceof HTMLElement ) ) {
388
397
data . mark = false ;
389
398
D . querySelector ( 'i' ) . remove ( ) ;
390
399
}
391
400
}
392
401
} ) ;
393
- if ( nodes . length > 0 ) {
394
- this . selectToParent ( nodes , checked ) ;
402
+ if ( nodes . length > 0 ) {
403
+ this . selectToParent ( nodes , checked ) ;
395
404
}
396
405
}
397
406
398
407
selectToChildren ( stack , nodes ) {
399
408
if ( stack > ( this . dimensional_data . length - 1 ) ) return ;
400
409
let currentStackDocuments = this . STACKS [ stack ] . childNodes ;
401
410
let children = [ ] ;
402
- currentStackDocuments . forEach ( ( D , index ) => {
403
- if ( nodes === null ) {
411
+ currentStackDocuments . forEach ( ( D , index ) => {
412
+ if ( nodes === null ) {
404
413
D . classList . add ( 'dlp-label-silence' ) ;
405
414
return ;
406
415
}
0 commit comments