File "layouts.js"
Full Path: /home/romayxjt/public_html/wp-content/plugins/orderable/inc/modules/layouts/source/admin/js/layouts.js
File size: 2.64 KB
MIME-type: text/plain
Charset: utf-8
( function ( $, document ) {
'use strict';
var orderable_layouts = {
/**
* On doc ready.
*/
on_ready() {
orderable_layouts.builder.init();
},
/**
* Helper functions.
*/
helpers: {
/**
* Get field type.
* @param $field
*/
get_field_type( $field ) {
const tag = $field.get( 0 ).tagName;
if ( 'SELECT' === tag ) {
return 'select';
}
return $field.attr( 'type' );
},
/**
* Strip "orderable_" prefix.
*
* @param string
* @return {*}
*/
strip_prefix( string ) {
return string.replace( 'orderable_', '' );
},
},
/**
* Builder.
*/
builder: {
/**
* Init builder.
*/
init() {
orderable_layouts.builder.watch();
},
/**
* Watch builder fields.
*/
watch() {
$( document.body ).on(
'change',
'#orderable-layout-settings-metabox input, #orderable-layout-settings-metabox select',
function () {
let $parent = $( this ).closest(
'#orderable-layout-settings-metabox'
),
data = {},
reload_preview = true;
$parent
.find(
'.form-field > input, .form-field > select:enabled'
)
.each( function ( index, field ) {
let $field = $( field ),
type =
orderable_layouts.helpers.get_field_type(
$field
),
value = '';
if ( 'checkbox' === type ) {
value = $( this ).is( ':checked' );
} else if (
'select' === type &&
'multiple' === $field.attr( 'multiple' )
) {
value = $field.val();
} else {
value = $field.val();
}
// Has a "pro_" prefix.
if (
typeof value === 'string' &&
0 === value.indexOf( 'pro_' )
) {
reload_preview = false;
$( document.body ).trigger(
'orderable-pro-modal'
);
}
data[
orderable_layouts.helpers.strip_prefix(
this.name.replace( '[]', '' )
)
] = value;
} );
if ( reload_preview ) {
orderable_layouts.builder.reload_preview( data );
}
}
);
},
/**
* Reload preview.
*
* @param preview_data
*/
reload_preview( preview_data ) {
const data = {
action: 'orderable_preview',
data: preview_data,
};
$.post( ajaxurl, data, function ( response ) {
if ( ! response.success ) {
return;
}
$(
'#orderable-layout-preview-metabox .orderable-main-wrap'
).html( response.data.shortcode );
} );
},
},
};
$( document ).ready( orderable_layouts.on_ready );
} )( jQuery, document );