File "main.js"
Full Path: /home/romayxjt/public_html/wp-content/plugins/orderable/inc/modules/layouts/assets/admin/js/main.js
File size: 2.65 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);