@@ -184,15 +184,15 @@ function setBomCheckboxState(checkbox, element, references) {
184184 element . indeterminate = ( state == "indeterminate" ) ;
185185}
186186
187- function createCheckboxChangeHandler ( checkbox , references , row ) {
188- return function ( ) {
187+ function createCheckboxHandlers ( input , checkbox , references , row ) {
188+ var clickHandler = ( ) => {
189189 refsSet = getStoredCheckboxRefs ( checkbox ) ;
190190 var markWhenChecked = settings . markWhenChecked == checkbox ;
191191 eventArgs = {
192192 checkbox : checkbox ,
193193 refs : references ,
194194 }
195- if ( this . checked ) {
195+ if ( input . checked ) {
196196 // checkbox ticked
197197 for ( var ref of references ) {
198198 refsSet . add ( ref [ 1 ] ) ;
@@ -224,6 +224,22 @@ function createCheckboxChangeHandler(checkbox, references, row) {
224224 updateCheckboxStats ( checkbox ) ;
225225 EventHandler . emitEvent ( IBOM_EVENT_TYPES . CHECKBOX_CHANGE_EVENT , eventArgs ) ;
226226 }
227+
228+ return [
229+ ( e ) => {
230+ clickHandler ( ) ;
231+ } ,
232+ ( e ) => {
233+ e . preventDefault ( ) ;
234+ if ( row . onmousemove ) row . onmousemove ( ) ;
235+ } ,
236+ ( e ) => {
237+ e . preventDefault ( ) ;
238+ input . checked = ! input . checked ;
239+ input . indeterminate = false ;
240+ clickHandler ( ) ;
241+ }
242+ ] ;
227243}
228244
229245function clearHighlightedFootprints ( ) {
@@ -679,7 +695,7 @@ function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
679695 td = document . createElement ( "TD" ) ;
680696 var input = document . createElement ( "input" ) ;
681697 input . type = "checkbox" ;
682- input . onchange = createCheckboxChangeHandler ( checkbox , references , tr ) ;
698+ [ input . onchange , td . ontouchstart , td . ontouchend ] = createCheckboxHandlers ( input , checkbox , references , tr ) ;
683699 setBomCheckboxState ( checkbox , input , references ) ;
684700 if ( input . checked && settings . markWhenChecked == checkbox ) {
685701 tr . classList . add ( "checked" ) ;
@@ -1035,7 +1051,8 @@ function toggleBomCheckbox(bomrowid, checkboxnum) {
10351051 return ;
10361052 }
10371053 var bomrow = document . getElementById ( bomrowid ) ;
1038- var checkbox = bomrow . childNodes [ checkboxnum ] . childNodes [ 0 ] ;
1054+ var childNum = checkboxnum + settings . columnOrder . indexOf ( "checkboxes" ) ;
1055+ var checkbox = bomrow . childNodes [ childNum ] . childNodes [ 0 ] ;
10391056 checkbox . checked = ! checkbox . checked ;
10401057 checkbox . indeterminate = false ;
10411058 checkbox . onchange ( ) ;
@@ -1051,7 +1068,8 @@ function checkBomCheckbox(bomrowid, checkboxname) {
10511068 return ;
10521069 }
10531070 var bomrow = document . getElementById ( bomrowid ) ;
1054- var checkbox = bomrow . childNodes [ checkboxnum + 1 ] . childNodes [ 0 ] ;
1071+ var childNum = checkboxnum + 1 + settings . columnOrder . indexOf ( "checkboxes" ) ;
1072+ var checkbox = bomrow . childNodes [ childNum ] . childNodes [ 0 ] ;
10551073 checkbox . checked = true ;
10561074 checkbox . indeterminate = false ;
10571075 checkbox . onchange ( ) ;
0 commit comments