summaryrefslogtreecommitdiff
path: root/src/index.js
blob: 265b65a2f6271857d529831082dffdb69e654820 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* global jQuery ajaxurl draggablePostOrder */

import './index.scss';

( function ( $ ) {
	const overlay = $( '<div class="post-order-overlay">' ).appendTo( 'body' );
	$( '#the-list' ).sortable( {
		items: 'tr',
		axis: 'y',
		cursor: 'move',

		// @see https://stackoverflow.com/a/57611747/6114451
		start( e, ui ) {
			const $originals = ui.helper.children();
			ui.placeholder.children().each( function ( index ) {
				$( this ).width( $originals.eq( index ).width() );
				$( this ).height( $originals.eq( index ).height() );
			} );
		},
		helper( e, tr ) {
			const $helper = tr.clone();
			const $originals = tr.children();
			$helper.children().each( function ( index ) {
				$( this ).width( $originals.eq( index ).outerWidth( true ) );
			} );
			return $helper;
		},

		update() {
			// show overlay
			overlay.addClass( 'post-order-overlay--visible' );

			// update posts
			$.post(
				ajaxurl,
				{
					action: 'update-post-order',
					nonce: draggablePostOrder.nonce,
					page: $( '#current-page-selector' ).val(),
					perPage: $( '.screen-per-page' ).val(),
					postOrder: $( '#the-list' ).sortable( 'serialize' ),
				},
				() => {
					// hide overlay after updating
					overlay.removeClass( 'post-order-overlay--visible' );
				}
			);
		},
	} );
} )( jQuery );