File: /var/www/html/wp-content/themes/thegem-elementor/js/thegem-font-manager.js
(function($) {
$(function() {
var $form = $('#fonts-manager-form');
$form.find('.file_url input').fileSelector();
$form.on('click', '.add-new', function() {
var $newPane = $(this).closest('#fonts-manager-wrap').find('.font-pane-template').clone();
var paneItem = $('#fonts-manager-form').find('.font-pane').length;
$newPane.removeClass('font-pane-template').addClass('font-pane');
$newPane.attr('data-item', paneItem);
$newPane.find('.fallback-fonts-elements-items-box').html('');
var newPaneHtml = $newPane[0].outerHTML;
newPaneHtml = newPaneHtml.replace(/{{i}}/g, paneItem);
$('.fonts-manager-form-fields').append(newPaneHtml);
$('.file_url input', $form.find('[data-item='+paneItem+']')).fileSelector();
});
$form.on('click', '.font-pane .remove a', function() {
if (confirm('Are you sure you want to delete this font?')) {
$(this).closest('.font-pane').remove();
}
});
$form.on('change', '.input-checkbox-is-fallback', function() {
var $parentField = $(this).closest('.field');
$parentField.find('input[type=hidden]').val(this.checked ? 1 : '');
$parentField.find('.fallback-fonts-elements-box').toggleClass('hide');
});
$form.on('click', '.fallback-fonts-elements-add button', function() {
var $pane = $(this).closest('.font-pane');
var $elementsBox = $pane.find('.fallback-fonts-elements-box');
var $field = $elementsBox.find('.fallback-fonts-elements-add > select');
var title = $field.find(":selected").text();
var value = $field.val();
var isFontOnly = $field.find(":selected").attr('data-font-only')!==undefined;
var paneItem = $pane.attr('data-item');
var elItem = $elementsBox.find('.fallback-fonts-elements-item').length;
if ($field.val()==='') {
return false;
}
if ($elementsBox.find('[data-id='+value+']').length > 0) {
alert(title+' already exists.');
return false;
}
var $template = $('#fonts-manager-wrap .font-pane-template').find('.fallback-fonts-elements-item').clone();
$template.find('.fallback-fonts-elements-item-title input[type=hidden]').val(value);
$template.find('.fallback-fonts-elements-item-title label').text(title);
$template.attr('data-id', value);
if (isFontOnly) {
$template.find('.fallback-fonts-elements-item-body').remove();
} else {
var fontSize = $field.find(":selected").attr('data-font-size');
var lineHeight = $field.find(":selected").attr('data-line-height');
$template.find('.fonts-elements-item-font-size').attr('value',fontSize);
$template.find('.fonts-elements-item-line-height').attr('value',lineHeight);
}
var templateHtml = $template[0].outerHTML;
templateHtml = templateHtml.replace(/{{i}}/g, paneItem);
templateHtml = templateHtml.replace(/{{el}}/g, elItem);
templateHtml = templateHtml.replace(/{{element_title}}/g, title);
$elementsBox.find('.fallback-fonts-elements-items-box').append(templateHtml);
initFixedNumber($elementsBox.find('[data-id='+value+']'));
$field.val('');
});
$form.on('click', '.fallback-fonts-elements-item-header button', function() {
if (confirm('Are you sure you want to delete this item?')) {
$(this).closest('.fallback-fonts-elements-item').remove();
}
});
$form.on('submit', function() {
var isRequiredFontName = false;
$form.find('.field-font-name').each(function() {
var value = this.value.trim();
isRequiredFontName = value===undefined || value==='';
});
if (isRequiredFontName) {
alert('Field Font name is required.');
return false;
}
});
function initFixedNumber(el) {
el.find('.fixed-number input').each(function() {
var min = $(this).attr('data-min-value');
var max = $(this).attr('data-max-value');
var value = $(this).val();
var input = $(this);
$('<div class="slider"></div>').insertAfter(input).slider({
min: parseInt(min),
max: parseInt(max),
range: 'min',
value: parseInt(value),
slide: function( event, ui ) {
input.val(ui.value).trigger('change');
}
});
});
}
initFixedNumber($form);
$form.on('click', '.support-links a', function(e) {
e.preventDefault();
var $link = $(this),
$links = $link.closest('.support-links'),
$paneModern = $links.nextAll('.support-pane.modern'),
$paneLegacy = $links.nextAll('.support-pane.legacy');
$('a', $links).removeClass('active');
$paneModern.removeClass('active');
$paneLegacy.removeClass('active');
$link.addClass('active');
if($link.is('.support-modern')) {
$paneModern.addClass('active');
} else {
$paneLegacy.addClass('active');
}
});
$form.on('click', '.combobox-input', function(e) {
var $this = $(this);
var $dropdown = $this.next('.combobox-dropdown');
if ($dropdown.length === 0) {
$dropdown = $('<div class="combobox-dropdown"></div>');
$dropdown.insertAfter($this);
var values = JSON.parse($this.attr('data-values'));
$.each(values, function(key, value) {
var $option = $('<div class="combobox-option"><input type="checkbox" value="' + key + '"><span>' + value + '</span></div>');
$dropdown.append($option);
});
}
var currentValues = $this.val().split(', ').filter(Boolean);
$('.combobox-option input', $dropdown).each(function() {
var $cb = $(this);
var isChecked = currentValues.includes($cb.val());
$cb.prop('checked', isChecked);
$cb.closest('.combobox-option').toggleClass('selected', isChecked);
});
$dropdown.toggle();
});
$form.on('click', '.combobox-option', function(e) {
var $checkbox = $(this).find('input');
$checkbox.prop('checked', !$checkbox.prop('checked'));
$(this).toggleClass('selected', $checkbox.prop('checked'));
var selectedValues = [];
$('.combobox-option', $(this).closest('.combobox-dropdown')).each(function() {
var $cb = $(this).find('input');
if ($cb.prop('checked')) {
selectedValues.push($cb.val());
}
});
$(this).closest('.combobox-container').find('.combobox-input').val(selectedValues.join(', '));
e.stopPropagation();
});
$(document).on('click', function(e) {
if (!$(e.target).closest('.combobox-container').length) {
$('.combobox-dropdown').hide();
}
});
});
})(jQuery);