rebase from live enviornment
This commit is contained in:
195
wp/plugins/woocommerce/assets/js/admin/meta-boxes.js
Normal file
195
wp/plugins/woocommerce/assets/js/admin/meta-boxes.js
Normal file
@@ -0,0 +1,195 @@
|
||||
jQuery( function ( $ ) {
|
||||
/**
|
||||
* Function to check if the attribute and variation fields are empty.
|
||||
*/
|
||||
jQuery.is_attribute_or_variation_empty = function (
|
||||
attributes_and_variations_data
|
||||
) {
|
||||
var has_empty_fields = false;
|
||||
attributes_and_variations_data.each( function () {
|
||||
var $this = $( this );
|
||||
// Check if the field is checkbox or a search field.
|
||||
if (
|
||||
$this.hasClass( 'checkbox' ) ||
|
||||
$this.filter( '[class*=search__field]' ).length
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
var is_empty = $this.is( 'select' )
|
||||
? $this.find( ':selected' ).length === 0
|
||||
: ! $this.val();
|
||||
if ( is_empty ) {
|
||||
has_empty_fields = true;
|
||||
}
|
||||
} );
|
||||
return has_empty_fields;
|
||||
};
|
||||
|
||||
/**
|
||||
* Function to maybe disable the save button.
|
||||
*/
|
||||
jQuery.maybe_disable_save_button = function () {
|
||||
var $tab;
|
||||
var $save_button;
|
||||
if (
|
||||
$( '.woocommerce_variation_new_attribute_data' ).is( ':visible' )
|
||||
) {
|
||||
$tab = $( '.woocommerce_variation_new_attribute_data' );
|
||||
$save_button = $( 'button.create-variations' );
|
||||
} else {
|
||||
var $tab = $( '.product_attributes' );
|
||||
var $save_button = $( 'button.save_attributes' );
|
||||
}
|
||||
|
||||
var attributes_and_variations_data = $tab.find(
|
||||
'input, select, textarea'
|
||||
);
|
||||
if (
|
||||
jQuery.is_attribute_or_variation_empty(
|
||||
attributes_and_variations_data
|
||||
)
|
||||
) {
|
||||
if ( ! $save_button.hasClass( 'disabled' ) ) {
|
||||
$save_button.addClass( 'disabled' );
|
||||
$save_button.attr( 'aria-disabled', true );
|
||||
}
|
||||
} else {
|
||||
$save_button.removeClass( 'disabled' );
|
||||
$save_button.removeAttr( 'aria-disabled' );
|
||||
}
|
||||
};
|
||||
|
||||
// Run tipTip
|
||||
function runTipTip() {
|
||||
// Remove any lingering tooltips
|
||||
$( '#tiptip_holder' ).removeAttr( 'style' );
|
||||
$( '#tiptip_arrow' ).removeAttr( 'style' );
|
||||
$( '.tips' ).tipTip( {
|
||||
attribute: 'data-tip',
|
||||
fadeIn: 50,
|
||||
fadeOut: 50,
|
||||
delay: 200,
|
||||
keepAlive: true,
|
||||
} );
|
||||
}
|
||||
|
||||
runTipTip();
|
||||
|
||||
$( '.save_attributes' ).tipTip( {
|
||||
content: function () {
|
||||
return $( '.save_attributes' ).hasClass( 'disabled' )
|
||||
? woocommerce_admin_meta_boxes.i18n_save_attribute_variation_tip
|
||||
: '';
|
||||
},
|
||||
fadeIn: 50,
|
||||
fadeOut: 50,
|
||||
delay: 200,
|
||||
keepAlive: true,
|
||||
} );
|
||||
|
||||
$( '.create-variations' ).tipTip( {
|
||||
content: function () {
|
||||
return $( '.create-variations' ).hasClass( 'disabled' )
|
||||
? woocommerce_admin_meta_boxes.i18n_save_attribute_variation_tip
|
||||
: '';
|
||||
},
|
||||
fadeIn: 50,
|
||||
fadeOut: 50,
|
||||
delay: 200,
|
||||
keepAlive: true,
|
||||
} );
|
||||
|
||||
$( '.wc-metaboxes-wrapper' ).on( 'click', '.wc-metabox > h3', function () {
|
||||
var metabox = $( this ).parent( '.wc-metabox' );
|
||||
|
||||
if ( metabox.hasClass( 'closed' ) ) {
|
||||
metabox.removeClass( 'closed' );
|
||||
} else {
|
||||
metabox.addClass( 'closed' );
|
||||
}
|
||||
|
||||
if ( metabox.hasClass( 'open' ) ) {
|
||||
metabox.removeClass( 'open' );
|
||||
} else {
|
||||
metabox.addClass( 'open' );
|
||||
}
|
||||
} );
|
||||
|
||||
// Tabbed Panels
|
||||
$( document.body )
|
||||
.on( 'wc-init-tabbed-panels', function () {
|
||||
$( 'ul.wc-tabs' ).show();
|
||||
$( 'ul.wc-tabs a' ).on( 'click', function ( e ) {
|
||||
e.preventDefault();
|
||||
var panel_wrap = $( this ).closest( 'div.panel-wrap' );
|
||||
$( 'ul.wc-tabs li', panel_wrap ).removeClass( 'active' );
|
||||
$( this ).parent().addClass( 'active' );
|
||||
$( 'div.panel', panel_wrap ).hide();
|
||||
$( $( this ).attr( 'href' ) ).show( 0, function () {
|
||||
$( this ).trigger( 'woocommerce_tab_shown' );
|
||||
} );
|
||||
} );
|
||||
$( 'div.panel-wrap' ).each( function () {
|
||||
$( this )
|
||||
.find( 'ul.wc-tabs li' )
|
||||
.eq( 0 )
|
||||
.find( 'a' )
|
||||
.trigger( 'click' );
|
||||
} );
|
||||
} )
|
||||
.trigger( 'wc-init-tabbed-panels' );
|
||||
|
||||
// Date Picker
|
||||
$( document.body )
|
||||
.on( 'wc-init-datepickers', function () {
|
||||
$( '.date-picker-field, .date-picker' ).datepicker( {
|
||||
dateFormat: 'yy-mm-dd',
|
||||
numberOfMonths: 1,
|
||||
showButtonPanel: true,
|
||||
} );
|
||||
} )
|
||||
.trigger( 'wc-init-datepickers' );
|
||||
|
||||
// Meta-Boxes - Open/close
|
||||
$( '.wc-metaboxes-wrapper' )
|
||||
.on( 'click', '.wc-metabox h3', function ( event ) {
|
||||
// If the user clicks on some form input inside the h3, like a select list (for variations), the box should not be toggled
|
||||
if ( $( event.target ).filter( ':input, option, .sort' ).length ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$( this ).next( '.wc-metabox-content' ).stop().slideToggle();
|
||||
} )
|
||||
.on( 'click', '.expand_all', function () {
|
||||
$( this )
|
||||
.closest( '.wc-metaboxes-wrapper' )
|
||||
.find( '.wc-metabox > .wc-metabox-content' )
|
||||
.show();
|
||||
return false;
|
||||
} )
|
||||
.on( 'click', '.close_all', function () {
|
||||
$( this )
|
||||
.closest( '.wc-metaboxes-wrapper' )
|
||||
.find( '.wc-metabox > .wc-metabox-content' )
|
||||
.hide();
|
||||
return false;
|
||||
} );
|
||||
$( '.wc-metabox.closed' ).each( function () {
|
||||
$( this ).find( '.wc-metabox-content' ).hide();
|
||||
} );
|
||||
|
||||
$( '#product_attributes' ).on(
|
||||
'change',
|
||||
'select.attribute_values',
|
||||
jQuery.maybe_disable_save_button
|
||||
);
|
||||
$( '#product_attributes, #variable_product_options' ).on(
|
||||
'keyup',
|
||||
'input, textarea',
|
||||
jQuery.maybe_disable_save_button
|
||||
);
|
||||
|
||||
// Maybe disable save buttons when editing products.
|
||||
jQuery.maybe_disable_save_button();
|
||||
} );
|
||||
Reference in New Issue
Block a user