reduxframework / redux-framework

Redux is a simple, truly extensible options framework for WordPress themes and plugins!

Home Page:http://redux.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bug in Dimension Field

cyberwani opened this issue · comments

Hello,

There is a bug in the dimension field. When selecting unit multiple times, it's appending the unit in the dimension value each time.
Redux Version: 4.4.14

redux-dimension-field-bug-20240322_123815.mp4

Please use the beta version on our repo until we can do a release on WotrdPress.org. It's been fixed in that version.

Thanks @kprovance for prompt reply. As I can see, the previous change was adding the unit in the value, and if that was the intended implementation, the below change can help with this.

Change from:

el.find( '.redux-dimensions-input' ).on(
	'change',
	function() {
		var units = $( this ).parents( '.redux-field:first' ).find( '.field-units' ).val();

		if ( 0 !== $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-units' ).length ) {
			units = $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-units option:selected' ).val();
		}

		if ( 'undefined' !== typeof units ) {
			el.find( '#' + $( this ).attr( 'rel' ) ).val( $( this ).val() + units );
		} else {
			el.find( '#' + $( this ).attr( 'rel' ) ).val( $( this ).val() );
		}
	}
);

Change to:

el.find( '.redux-dimensions-input' ).on(
	'change',
	function() {
		var dimension_unit        = $( this ).parents( '.redux-field:first' ).find( '.field-units' ).val(),
			dimention_value   = $( this ).val(),
			dimention_unit_el = $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-units' ),
			dimention_units   = dimention_unit_el.children('option').map(function(i, e){
				return e.value || e.innerText;
			}).get();

		if ( 0 !== dimention_unit_el.length ) {
			dimension_unit = $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-units option:selected' ).val();
		}

		// Loop through all units, and check and remove every instance of each unit found in dimension value
		dimention_units.forEach(function(unit) {
			var regex = new RegExp(unit, 'g');
			dimention_value = dimention_value.replace(regex, '');
		});
		if ( 'undefined' !== typeof dimension_unit ) {
			el.find( '#' + $( this ).attr( 'rel' ) ).val( dimention_value + dimension_unit );
		} else {
			el.find( '#' + $( this ).attr( 'rel' ) ).val( dimention_value );
		}
	}
);

I've already fixed it. I'm not sure of the point of this. Also, you didn't single a single piece of information I asked for when you opened the ticket, which is frowned upon. Regardless, this fix is ready