| 
8
 | 
     1 <!doctype html>
 | 
| 
21
 | 
     2 <html lang="en">
 | 
| 
8
 | 
     3 	<head>
 | 
| 
 | 
     4 		<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
| 
 | 
     5 		<style>
 | 
| 
 | 
     6 			@import "/site.css";
 | 
| 
 | 
     7 			@import "/dad.css";
 | 
| 
 | 
     8 
 | 
| 
 | 
     9 			[item] {
 | 
| 
 | 
    10 				background-color: LightGreen;
 | 
| 
 | 
    11 				padding: 8px;
 | 
| 
 | 
    12 			}
 | 
| 
 | 
    13 			[item][in] {
 | 
| 
 | 
    14 				border: 1px solid;
 | 
| 
 | 
    15 			}
 | 
| 
 | 
    16 		</style>
 | 
| 
 | 
    17 		<script src="/dad.js"></script>
 | 
| 
 | 
    18 		<script>
 | 
| 
 | 
    19 			dad.onEnter = function(event) {
 | 
| 
 | 
    20 				event.dropzone.setAttribute('in','');
 | 
| 
 | 
    21 			};
 | 
| 
 | 
    22 
 | 
| 
 | 
    23 			dad.onLeave = function(event) {
 | 
| 
 | 
    24 				event.dropzone.removeAttribute('in');
 | 
| 
 | 
    25 			};
 | 
| 
 | 
    26 
 | 
| 
 | 
    27 			function indexOf(a,el) {
 | 
| 
 | 
    28 				for( let i=0; i<a.length; i++ ) {
 | 
| 
 | 
    29 					if( a[i] === el )
 | 
| 
 | 
    30 						return i;
 | 
| 
 | 
    31 				}
 | 
| 
 | 
    32 				return -1;
 | 
| 
 | 
    33 			}
 | 
| 
 | 
    34 
 | 
| 
 | 
    35 			dad.onDrop = function(event) {
 | 
| 
20
 | 
    36 				let dropzone = event.dropzone;
 | 
| 
8
 | 
    37 				if( !dropzone )
 | 
| 
 | 
    38 					return;
 | 
| 
 | 
    39 				let original = event.original
 | 
| 
 | 
    40 				let items = document.querySelectorAll('[item]');
 | 
| 
 | 
    41 				let iDropzone = indexOf(items,dropzone);
 | 
| 
 | 
    42 				let iOriginal = indexOf(items,original);
 | 
| 
 | 
    43 				let where = iDropzone < iOriginal ? 'beforebegin' : 'afterend';
 | 
| 
 | 
    44 				dropzone.insertAdjacentElement(where,original);
 | 
| 
 | 
    45 			};
 | 
| 
 | 
    46 
 | 
| 
 | 
    47 			function init() {
 | 
| 
 | 
    48 				let items = document.querySelectorAll('[item]');
 | 
| 
 | 
    49 				for( let i=0; i<items.length; i++ ) {
 | 
| 
 | 
    50 					let item = items[i];
 | 
| 
 | 
    51 					dad.setDraggable(item);
 | 
| 
 | 
    52 					dad.setDropzone(item);
 | 
| 
 | 
    53 				}
 | 
| 
 | 
    54 			}
 | 
| 
 | 
    55 		</script>
 | 
| 
 | 
    56 	</head>
 | 
| 
 | 
    57 	<body>
 | 
| 
 | 
    58 		<h1>List</h1>
 | 
| 
 | 
    59 		<script>
 | 
| 
 | 
    60 			for( let i=1; i<=10; i++ ) {
 | 
| 
 | 
    61 				document.write(`
 | 
| 
 | 
    62 		<p item>${i} - drag me</p>
 | 
| 
 | 
    63 `				);
 | 
| 
 | 
    64 			}
 | 
| 
 | 
    65 		</script>
 | 
| 
 | 
    66 		<p>bottom</p>
 | 
| 
 | 
    67 	</body>
 | 
| 
 | 
    68 	<script> init(); </script>
 | 
| 
 | 
    69 </html>
 |