Mercurial Hosting > dad
comparison src/examples/nested.html @ 24:f8c97193c772 default tip
indexOf
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Tue, 20 Jan 2026 18:48:04 -0700 |
| parents | df0f6d0d55e8 |
| children |
comparison
equal
deleted
inserted
replaced
| 23:650773682588 | 24:f8c97193c772 |
|---|---|
| 16 display: inline-block; | 16 display: inline-block; |
| 17 } | 17 } |
| 18 </style> | 18 </style> |
| 19 <script src="/dad.js"></script> | 19 <script src="/dad.js"></script> |
| 20 <script> | 20 <script> |
| 21 function indexOf(a,el) { | |
| 22 for( let i=0; i<a.length; i++ ) { | |
| 23 if( a[i] === el ) | |
| 24 return i; | |
| 25 } | |
| 26 return -1; | |
| 27 } | |
| 28 | |
| 29 dad.whatToDrag = function(draggable) { | 21 dad.whatToDrag = function(draggable) { |
| 30 return draggable.parentNode; | 22 return draggable.parentNode; |
| 31 }; | 23 }; |
| 32 | 24 |
| 33 dad.onEnter = function(event) { | 25 dad.onEnter = function(event) { |
| 35 let original = event.original; | 27 let original = event.original; |
| 36 let filter = original.getAttribute('drop'); | 28 let filter = original.getAttribute('drop'); |
| 37 if( dropzone.getAttribute('drop') !== filter ) { | 29 if( dropzone.getAttribute('drop') !== filter ) { |
| 38 return false; | 30 return false; |
| 39 } | 31 } |
| 40 let items = document.querySelectorAll(`[drop="${filter}"]`); | 32 let items = Array.from(document.querySelectorAll(`[drop="${filter}"]`)); |
| 41 let iDropzone = indexOf(items,dropzone); | 33 let iDropzone = items.indexOf(dropzone); |
| 42 let iOriginal = indexOf(items,original); | 34 let iOriginal = items.indexOf(original); |
| 43 let where = iDropzone < iOriginal ? 'beforebegin' : 'afterend'; | 35 let where = iDropzone < iOriginal ? 'beforebegin' : 'afterend'; |
| 44 dropzone.insertAdjacentElement(where,original); | 36 dropzone.insertAdjacentElement(where,original); |
| 45 }; | 37 }; |
| 46 | 38 |
| 47 function init() { | 39 function init() { |
