From: Matías Cánepa Date: Mon, 10 Oct 2022 09:00:50 +0000 (-0300) Subject: Resizable: Fix resizing of elems with `box-sizing: border-box` X-Git-Tag: 1.13.3~44 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=62f2ccc5678a8b09df85afd006eb623ac38af189;p=jquery-ui.git Resizable: Fix resizing of elems with `box-sizing: border-box` Fixes gh-1979 Closes gh-2012 --- diff --git a/tests/unit/resizable/options.js b/tests/unit/resizable/options.js index d85840562..6149fbfef 100644 --- a/tests/unit/resizable/options.js +++ b/tests/unit/resizable/options.js @@ -532,4 +532,30 @@ QUnit.test( "alsoResize + multiple selection", function( assert ) { assert.equal( other2.height(), 150, "alsoResize o2 constrained height at containment edge" ); } ); +QUnit.test( "alsoResize with box-sizing: border-box", function( assert ) { + assert.expect( 4 ); + + var other = $( "
" ) + .css( { + width: 50, + height: 50, + padding: 10, + border: 5 + } ) + .appendTo( "body" ), + element = $( "#resizable1" ).resizable( { + alsoResize: other + } ), + handle = ".ui-resizable-se"; + + $( "*" ).css( "box-sizing", "border-box" ); + + testHelper.drag( handle, 80, 80 ); + + assert.equal( element.width(), 180, "resizable width" ); + assert.equal( parseFloat( other.css( "width" ) ), 130, "alsoResize width" ); + assert.equal( element.height(), 180, "resizable height" ); + assert.equal( parseFloat( other.css( "height" ) ), 130, "alsoResize height" ); +} ); + } ); diff --git a/ui/widgets/resizable.js b/ui/widgets/resizable.js index d1abbd539..3f1f19833 100644 --- a/ui/widgets/resizable.js +++ b/ui/widgets/resizable.js @@ -533,15 +533,18 @@ $.widget( "ui.resizable", $.ui.mouse, { if ( this.position.left !== this.prevPosition.left ) { props.left = this.position.left + "px"; } + + this.helper.css( props ); + if ( this.size.width !== this.prevSize.width ) { props.width = this.size.width + "px"; + this.helper.width( props.width ); } if ( this.size.height !== this.prevSize.height ) { props.height = this.size.height + "px"; + this.helper.height( props.height ); } - this.helper.css( props ); - return props; }, @@ -1048,7 +1051,7 @@ $.ui.plugin.add( "resizable", "alsoResize", { $( o.alsoResize ).each( function() { var el = $( this ); el.data( "ui-resizable-alsoresize", { - width: parseFloat( el.width() ), height: parseFloat( el.height() ), + width: parseFloat( el.css( "width" ) ), height: parseFloat( el.css( "height" ) ), left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) ) } ); } );