oont-contents/plugins/woocommerce-pdf-ips-templates/assets/js/editor.js
2025-02-08 15:10:23 +01:00

284 lines
No EOL
10 KiB
JavaScript

jQuery(function($) {
$( "#documents .field-list" ).sortable({
items: '.field',
cursor: 'move',
});
$( document ).on( "click", ".delete-field", function() {
$(this).parent().remove();
$( document ).trigger( 'wpo-wcpdf-settings-changed' );
});
// hide & disable input fields based on type selection
$( '.custom-blocks' ).on( 'change', 'select.custom-block-type', function () {
$('.select2-search__field').css( 'width', 'auto' ); // prevents width changes on events
var option = $( this ).val();
var $current_block = $( this ).closest('.custom-block');
$current_block.find('.custom-block-settings tr, .custom-block-advanced > p').each(function( index ) {
var types = $( this ).data('types');
if (option.length && typeof types !== 'undefined') {
if (types.indexOf(option) !== -1) {
$( this ).find('input, textarea').prop('disabled', false);
$( this ).show();
} else {
$( this ).find('input, textarea').val('').prop('disabled', true);
$( this ).hide();
}
}
});
$current_block.accordion({
header: '.custom-block-advanced-header',
collapsible: true,
active: false,
activate: function( event, ui ) {
$('.select2-search__field').css( 'width', 'auto' );
},
});
})
$( 'select.custom-block-type' ).trigger('change'); //ensure visible state matches initially
// Add Custom block
$( '.document-content' ).on( "click", ".button.add-custom-block", function() {
var $current_doc = $( this ).closest('.document-content');
var document_type = $current_doc.data('document-type');
var data = {
security: wpo_wcpdf_templates.nonce,
action: 'wcpdf_templates_add_custom_block',
document_type: document_type,
};
xhr = $.ajax({
type: 'POST',
url: wpo_wcpdf_templates.ajaxurl,
data: data,
success: function( data ) {
var $block = $( data );
$current_doc.find('.custom-blocks').append( $block );
$(document.body).trigger( 'wc-enhanced-select-init' );
$block.find('select.custom-block-type').trigger('change');
$block.accordion({
header: '.custom-block-advanced-header',
collapsible: true,
active: false,
activate: function( event, ui ) {
$('.select2-search__field').css( 'width', '450px' );
},
});
setup_requirements($block);
}
});
});
// Custom block of type custom field: placeholder notice
$( document ).on( "input", ".custom-block-settings .meta_key input", function() {
if( ( $(this).val().indexOf("{{") !== -1 ) || $(this).val().indexOf("}}") !== -1 ) {
$(this).closest('td').addClass('tooltip');
} else {
$(this).closest('td').removeClass('tooltip');
}
});
// Add field to totals or columns
$( document.body ).on( 'change', '.dropdown-add-field', function () {
let $section = $( this ).closest( '.field-list' );
let $current_doc = $( this ).closest( '.document-content' );
let document_type = $current_doc.data( 'document-type' );
let $field_value = $( this ).val();
let data = {
security: wpo_wcpdf_templates.nonce,
action: 'wcpdf_templates_add_totals_columns_field',
section: $section.data( 'section_key' ),
document_type: document_type,
field_value: $field_value,
};
xhr = $.ajax( {
context: $section,
type: 'POST',
url: wpo_wcpdf_templates.ajaxurl,
data: data,
success: function( html ) {
let $html = $( html ).insertBefore( $( this ).find( '.document.add-field' ) );
$html.accordion( {
header: '.field-title',
collapsible: true,
active: 0,
} );
$( '#documents .field-list' ).sortable( {
items: '.field',
cursor: 'move'
} );
$( '.dropdown-add-field' ).val( 'default' );
// enable WooCommerce help tips
$( '.woocommerce-help-tip' ).tipTip( {
'attribute': 'data-tip',
'fadeIn': 50,
'fadeOut': 50,
'delay': 200
} );
}
} );
} );
// VAT row: Disable "Include tax base/subtotal" checkbox when the "Combined Tax" dropdown is not selected
$( document ).on( 'click', '.field.vat', function() {
$( this ).find( "[data-key='tax_type']" ).change( function() {
selected_option = $( this ).val();
$block = $( this ).closest( '.field' );
$block.find( "input[data-key='base']" ).prop( 'disabled', true );
if ( selected_option == 'combined' ) {
$block.find( "[data-key='base']" ).prop( 'disabled', false );
}
} ).trigger( 'change' );
} );
// Disable VAT percent and VAT base when single_total is checked
$( ".field.options [data-key='single_total']" ).on( 'change', function () {
$block = $(this).closest('.field.options');
if ( $(this).prop( 'checked' ) ) {
$block.find( "[data-key='percent'], [data-key='base']" ).prop( 'disabled', true );
$block.find( "[data-key='percent'], [data-key='base']" ).prop( 'checked', false );
} else {
$block.find( "[data-key='percent'], [data-key='base']" ).prop( 'disabled', false );
}
});
// trigger change on page load
$( ".field.options [data-key='single_total']" ).trigger('change');
$( '.field.options' ).accordion({
header: '.field-title',
collapsible: true,
active: false
});
$( '.fields.library' ).accordion({
header: 'h4'
});
$( '#documents' ).tabs().show();
$(document.body).trigger( 'wc-enhanced-select-init' );
// Change template path on description in General settings
let template_selector = $( '#wpo-wcpdf-settings #template_path' );
let description_path = template_selector.next().find( 'code:first' );
// make replacement on select change
$( template_selector ).on( 'change', function() {
template_path_replacements( $(this).find(':selected').text(), $(this).val() );
} ).trigger('change');
function template_path_replacements( template_name, template_path ) {
let premium_templates = [ 'Business', 'Modern', 'Simple Premium' ];
// replace plugin path
if( $.inArray( template_name, premium_templates ) > -1 ) {
description_path.text( get_template_path_by_id( template_path ) );
// default to 'Simple Premium' for non premium templates
} else {
let simple_premium_template_option = template_selector.find('option').filter( function() {
if( this.text == 'Simple Premium' ) {
return this;
}
} );
description_path.text( get_template_path_by_id( simple_premium_template_option.val() ) );
}
}
function get_template_path_by_id( template_id ) {
let template_path = template_id;
if ( typeof wpo_wcpdf_admin !== 'undefined' && typeof wpo_wcpdf_admin.template_paths === 'object' ) {
for ( let path in wpo_wcpdf_admin.template_paths ) {
if ( wpo_wcpdf_admin.template_paths[path] == template_id ) {
template_path = path.substring(path.indexOf("wp-content"));
}
}
}
return template_path;
}
function setup_requirements( block ) {
// Populate requirement dropdown
block.find('.custom-block-requirements tr.requirement').each(function( index ) {
let requirementTitle = $(this).find('label').text();
let requirementId = $(this).data('requirement_id');
let $requirements_select = $(this).closest('.custom-block-requirements').find('.select-requirements select');
$requirements_select.append(
$('<option></option>').val(requirementId).html(requirementTitle)
);
});
// Either disable requirement from dropdown or hide input when empty
block.find('.custom-block-requirements tr.requirement').each(function( index ) {
let requirementId = $(this).data('requirement_id');
let $requirementInput = $(this).find('td > :input');
let $requirements_select = $(this).closest('.custom-block-requirements').find('.select-requirements select');
if ( ( $requirementInput.is(':checkbox') && $requirementInput.is(':checked') ) || ( $requirementInput.is(':checkbox') === false && $requirementInput.val().length > 0 ) ) {
$requirements_select.find('option[value="' + requirementId + '"]').prop('disabled', true);
} else {
$(this).hide();
}
});
}
// Run once on page load
$('.custom-block').each(function( index ) {
setup_requirements( $(this) );
});
// Show custom block requirement field
$('.custom-blocks').on('change', '.select-requirements', function() {
let requirement = $(this).val();
// Show field
$(this).closest('table.custom-block-requirements').find('tr[data-requirement_id="' + requirement + '"]').show();
// Disable selected value from dropdown
$(this).find('option[value="' + requirement + '"]').prop('disabled', true);
// Set to default
$(this).val('');
});
// Remove custom block requirement field
$('.custom-blocks').on('click', '.remove-requirement', function() {
let $requirement = $(this).closest('tr');
let requirementId = $requirement.data('requirement_id');
let $requirements_select = $(this).closest('.custom-block-requirements').find('.select-requirements select');
// Clear select2
$requirement.find('select').val('').trigger('change');
// Hide restriction field
$requirement.hide();
// Enable restiction option in dropdown
$requirements_select.find('option[value="' + requirementId + '"]').removeAttr('disabled');
});
// Refresh preview and show secondary save button on customizer sortable changes
$( '#documents .field-list' ).on( 'sortstop', function( event, ui ) {
$( this ).trigger( 'wpo-wcpdf-settings-changed' );
} );
// Update Preview document type on editor document change
$( document ).on( 'click', 'ul.document-tabs > li > a', function( event ) {
let document_type = $( this ).data( 'document_type' );
$( '#wpo-wcpdf-preview-wrapper :input[name="document_type"]' ).val( document_type ).trigger( 'change' );
} );
// Detect if the editor active tab is different from Invoice, and if yes change the preview document type input
$( document ).ready( function() {
if ( $( '#documents ul.document-tabs' ).length ) {
let $active_tab_link = $( '#documents ul.document-tabs > li.ui-state-active > a' );
let document_type = $active_tab_link.data( 'document_type' );
if ( document_type.length && document_type != 'invoice' ) {
$( '#wpo-wcpdf-preview-wrapper :input[name="document_type"]' ).val( document_type ).trigger( 'change' );
}
}
} );
});