461 lines
9.8 KiB
JavaScript
461 lines
9.8 KiB
JavaScript
/* eslint-disable no-undef */
|
|
/* eslint-disable no-unused-vars */
|
|
/* global wu_settings, wu_input_masks, wu_money_input_masks, Cleave, ClipboardJS, wu_fields, tinymce, wu_media_frame, fontIconPicker */
|
|
window.wu_initialize_tooltip = function() {
|
|
|
|
jQuery('[role="tooltip"]').tipTip({
|
|
attribute: 'aria-label',
|
|
});
|
|
|
|
}; // end wu_initialize_tooltip;
|
|
|
|
window.wu_initialize_editors = function() {
|
|
|
|
jQuery('textarea[data-editor]').each(function() {
|
|
|
|
tinymce.remove('#' + jQuery(this).attr('id'));
|
|
|
|
tinymce.init({
|
|
selector: '#' + jQuery(this).attr('id'), // change this value according to your HTML
|
|
menubar: '',
|
|
theme: 'modern',
|
|
...wp.editor.getDefaultSettings().tinymce,
|
|
});
|
|
|
|
});
|
|
|
|
}; // end wu_initialize_editors
|
|
|
|
window.wu_initialize_imagepicker = function() {
|
|
|
|
jQuery('.wu-wrapper-image-field').each(function() {
|
|
|
|
const that = jQuery(this);
|
|
|
|
that.find('img').css({
|
|
maxWidth: '100%',
|
|
});
|
|
|
|
const value = that.find('img').attr('src');
|
|
|
|
if (value) {
|
|
|
|
that.find('.wu-wrapper-image-field-upload-actions').show();
|
|
|
|
} else {
|
|
|
|
that.find('.wu-add-image-wrapper').show();
|
|
|
|
} // end if;
|
|
|
|
that.on('click', 'a.wu-add-image', function() {
|
|
|
|
if (typeof wu_media_frame !== 'undefined') {
|
|
|
|
wu_media_frame.open();
|
|
|
|
return;
|
|
|
|
} // end if;
|
|
|
|
wu_media_frame = wp.media({
|
|
title: wu_fields.l10n.image_picker_title,
|
|
multiple: false,
|
|
button: {
|
|
text: wu_fields.l10n.image_picker_button_text,
|
|
},
|
|
});
|
|
|
|
wu_media_frame.on('select', function() {
|
|
|
|
const mediaObject = wu_media_frame.state().get('selection').first().toJSON();
|
|
|
|
const img_el = that.find('img');
|
|
|
|
that.find('img').removeClass('wu-absolute').attr('src', mediaObject.url);
|
|
|
|
that.find('.wubox').attr('href', mediaObject.url);
|
|
|
|
that.find('input').val(mediaObject.id);
|
|
|
|
that.find('.wu-add-image-wrapper').hide();
|
|
|
|
img_el.on('load', function() {
|
|
|
|
that.find('.wu-wrapper-image-field-upload-actions').show();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
wu_media_frame.open();
|
|
|
|
});
|
|
|
|
that.find('.wu-remove-image').on('click', function(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
that.find('img').removeAttr('src').addClass('wu-absolute');
|
|
|
|
that.find('input').val('');
|
|
|
|
that.find('.wu-wrapper-image-field-upload-actions').hide();
|
|
|
|
that.find('.wu-add-image-wrapper').show();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}; // end wu_initialize_imagepicker
|
|
|
|
window.wu_initialize_colorpicker = function() {
|
|
|
|
jQuery(document).ready(function() {
|
|
|
|
jQuery('.wu_color_field').each(function() {
|
|
|
|
jQuery(this).wpColorPicker();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}; // end wu_initialize_colorpicker;
|
|
|
|
window.wu_initialize_iconfontpicker = function() {
|
|
|
|
jQuery(document).ready(function() {
|
|
|
|
if (jQuery('.wu_select_icon').length) {
|
|
|
|
jQuery('.wu_select_icon').fontIconPicker({
|
|
theme: 'wu-theme',
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}; // end wu_initialize_iconfontpicker;
|
|
|
|
window.wu_initialize_clipboardjs = function() {
|
|
|
|
new ClipboardJS('.wu-copy');
|
|
|
|
}; // end wu_initialize_clipboardjs;
|
|
|
|
// DatePicker;
|
|
window.wu_initialize_datepickers = function() {
|
|
|
|
jQuery('.wu-datepicker, [wu-datepicker]').each(function() {
|
|
|
|
const $this = jQuery(this);
|
|
|
|
const format = $this.data('format'),
|
|
allow_time = $this.data('allow-time');
|
|
|
|
$this.flatpickr({
|
|
animate: false,
|
|
// locale: wpu.datepicker_locale,
|
|
time_24hr: true,
|
|
enableTime: typeof allow_time === 'undefined' ? true : allow_time,
|
|
dateFormat: format,
|
|
allowInput: true,
|
|
defaultDate: $this.val(),
|
|
});
|
|
|
|
});
|
|
|
|
}; // end wu_initialize_datepickers;
|
|
|
|
window.wu_update_clock = function() {
|
|
|
|
// eslint-disable-next-line no-undef
|
|
const yourTimeZoneFrom = wu_ticker.server_clock_offset; // time zone value where you are at
|
|
|
|
const d = new Date();
|
|
//get the timezone offset from local time in minutes
|
|
|
|
// eslint-disable-next-line no-mixed-operators
|
|
const tzDifference = yourTimeZoneFrom * 60 + d.getTimezoneOffset();
|
|
|
|
//convert the offset to milliseconds, add to targetTime, and make a new Date
|
|
const offset = tzDifference * 60 * 1000;
|
|
|
|
function callback_update_clock() {
|
|
|
|
const tDate = new Date(new Date().getTime() + offset);
|
|
|
|
const in_years = tDate.getFullYear();
|
|
|
|
let in_months = tDate.getMonth() + 1;
|
|
|
|
let in_days = tDate.getDate();
|
|
|
|
let in_hours = tDate.getHours();
|
|
|
|
let in_minutes = tDate.getMinutes();
|
|
|
|
let in_seconds = tDate.getSeconds();
|
|
|
|
if (in_months < 10) {
|
|
|
|
in_months = '0' + in_months;
|
|
|
|
}
|
|
|
|
if (in_days < 10) {
|
|
|
|
in_days = '0' + in_days;
|
|
|
|
}
|
|
|
|
if (in_minutes < 10) {
|
|
|
|
in_minutes = '0' + in_minutes;
|
|
|
|
}
|
|
|
|
if (in_seconds < 10) {
|
|
|
|
in_seconds = '0' + in_seconds;
|
|
|
|
}
|
|
|
|
if (in_hours < 10) {
|
|
|
|
in_hours = '0' + in_hours;
|
|
|
|
}
|
|
|
|
jQuery('#wu-ticker').text(in_years + '-' + in_months + '-' + in_days + ' ' + in_hours + ':' + in_minutes + ':' + in_seconds);
|
|
|
|
}
|
|
|
|
function start_clock() {
|
|
|
|
setInterval(callback_update_clock, 500);
|
|
|
|
}
|
|
|
|
start_clock();
|
|
|
|
};
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
function wu_on_load() {
|
|
|
|
wu_initialize_tooltip();
|
|
|
|
wu_initialize_datepickers();
|
|
|
|
wu_initialize_colorpicker();
|
|
|
|
wu_initialize_iconfontpicker();
|
|
|
|
wu_initialize_editors();
|
|
|
|
wu_update_clock();
|
|
|
|
wu_initialize_clipboardjs();
|
|
|
|
wu_initialize_imagepicker();
|
|
|
|
wu_image_preview();
|
|
|
|
} // end wu_on_load;
|
|
|
|
window.wu_on_load = wu_on_load;
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
window.wu_block_ui = function(el) {
|
|
|
|
jQuery(el).wu_block({
|
|
message: '<div class="spinner is-active wu-float-none" style="float: none !important;"></div>',
|
|
overlayCSS: {
|
|
backgroundColor: '#FFF',
|
|
opacity: 0.6,
|
|
},
|
|
css: {
|
|
padding: 0,
|
|
margin: 0,
|
|
width: '50%',
|
|
fontSize: '14px !important',
|
|
top: '40%',
|
|
left: '35%',
|
|
textAlign: 'center',
|
|
color: '#000',
|
|
border: 'none',
|
|
backgroundColor: 'none',
|
|
cursor: 'wait',
|
|
},
|
|
});
|
|
|
|
const el_instance = jQuery(el);
|
|
|
|
el_instance.unblock = jQuery(el).wu_unblock;
|
|
|
|
return el_instance;
|
|
|
|
};
|
|
|
|
function wu_format_money(value) {
|
|
|
|
value = parseFloat(value.toString().replace(/[^0-9\.]/g, ''));
|
|
|
|
const settings = wp.hooks.applyFilters('wu_format_money', {
|
|
currency: {
|
|
symbol: wu_settings.currency_symbol, // default currency symbol is '$'
|
|
format: wu_settings.currency_position, // controls output: %s = symbol, %v = value/number (can be object: see below)
|
|
decimal: wu_settings.decimal_separator, // decimal point separator
|
|
thousand: wu_settings.thousand_separator, // thousands separator
|
|
precision: wu_settings.precision, // decimal places
|
|
},
|
|
number: {
|
|
precision: 0, // default precision on numbers is 0
|
|
thousand: ',',
|
|
decimal: ',',
|
|
},
|
|
});
|
|
|
|
accounting.settings = settings;
|
|
|
|
return accounting.formatMoney(value);
|
|
|
|
} // end wu_format_money;
|
|
|
|
window.wu_image_preview = function() {
|
|
|
|
const xOffset = 10;
|
|
|
|
const yOffset = 30;
|
|
|
|
const preview_el = '#wu-image-preview';
|
|
|
|
// eslint-disable-next-line eqeqeq
|
|
const selector = wu_settings.disable_image_zoom == true ? '.wu-image-preview:not(img)' : '.wu-image-preview';
|
|
|
|
const el_id = preview_el.replace('#', '');
|
|
|
|
if (jQuery(preview_el).length === 0) {
|
|
|
|
jQuery('body').append(
|
|
"<div id='" + el_id + "' class='wu-rounded wu-p-1 wp-ui-primary' style='max-width: 600px; display: none; z-index: 9999999;'>" +
|
|
"<img class='wu-rounded wu-block wu-m-0 wu-p-0 wu-bg-gray-100' style='max-width: 100%;' src='' alt=''>" +
|
|
'</div>'
|
|
);
|
|
|
|
} // end if;
|
|
|
|
/* END CONFIG */
|
|
jQuery(selector).hover(function(e) {
|
|
|
|
this.t = this.title;
|
|
|
|
this.title = '';
|
|
|
|
const img = jQuery(this).data('image');
|
|
|
|
jQuery(preview_el)
|
|
.find('img')
|
|
.attr('src', img)
|
|
.attr('alt', this.t)
|
|
.end()
|
|
.css({
|
|
position: 'absolute',
|
|
display: 'none',
|
|
})
|
|
.css('top', (e.pageY - xOffset) + 'px')
|
|
.css('left', (e.pageX + yOffset) + 'px')
|
|
.fadeIn('fast');
|
|
|
|
},
|
|
function() {
|
|
|
|
this.title = this.t;
|
|
|
|
jQuery(preview_el).fadeOut('fast');
|
|
|
|
});
|
|
|
|
jQuery(selector).mousemove(function(e) {
|
|
|
|
jQuery(preview_el)
|
|
.css('top', (e.pageY - xOffset) + 'px')
|
|
.css('left', (e.pageX + yOffset) + 'px');
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// eslint-disable-next-line no-undef
|
|
window.wu_initialize_code_editors = function() {
|
|
|
|
if (jQuery('[data-code-editor]').length) {
|
|
|
|
if (typeof window.wu_editor_instances === 'undefined') {
|
|
|
|
window.wu_editor_instances = {};
|
|
|
|
} // end if;
|
|
|
|
jQuery('[data-code-editor]').each(function() {
|
|
|
|
const code_editor = jQuery(this);
|
|
|
|
const editor_id = code_editor.attr('id');
|
|
|
|
if (typeof window.wu_editor_instances[editor_id] === 'undefined') {
|
|
|
|
if (! code_editor.is(':visible')) {
|
|
|
|
return;
|
|
|
|
} // end if;
|
|
|
|
window.wu_editor_instances[editor_id] = wp.codeEditor.initialize(editor_id, {
|
|
codemirror: {
|
|
mode: code_editor.data('code-editor'),
|
|
lint: true,
|
|
autoCloseBrackets: true,
|
|
matchBrackets: true,
|
|
indentUnit: 2,
|
|
indentWithTabs: true,
|
|
lineNumbers: true,
|
|
lineWrapping: true,
|
|
styleActiveLine: true,
|
|
continueComments: true,
|
|
inputStyle: 'contenteditable',
|
|
direction: 'ltr', // Code is shown in LTR even in RTL languages.
|
|
gutters: [],
|
|
extraKeys: {
|
|
'Ctrl-Space': 'autocomplete',
|
|
'Ctrl-/': 'toggleComment',
|
|
'Cmd-/': 'toggleComment',
|
|
'Alt-F': 'findPersistent',
|
|
},
|
|
},
|
|
});
|
|
|
|
} // end if;
|
|
|
|
});
|
|
|
|
} // end if;
|
|
|
|
}; // end wu_initialize_code_editors;
|
|
|
|
/**
|
|
* Get a timezone-d moment instance.
|
|
*
|
|
* @param {*} a The date.
|
|
* @return moment instance
|
|
*/
|
|
window.wu_moment = function(a) {
|
|
|
|
return moment.tz(a, 'Etc/UTC');
|
|
|
|
}; // end wu_moment;
|