aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatías Cánepa <matias.canepa@gmail.com>2022-10-10 06:00:50 -0300
committerGitHub <noreply@github.com>2022-10-10 11:00:50 +0200
commit62f2ccc5678a8b09df85afd006eb623ac38af189 (patch)
tree7330a203422d0ddd7a7c3f5f8293ac4cf0ea0de7
parent5fa0db48d73887facf891eb05b43c443b5baeca3 (diff)
downloadjquery-ui-62f2ccc5678a8b09df85afd006eb623ac38af189.tar.gz
jquery-ui-62f2ccc5678a8b09df85afd006eb623ac38af189.zip
Resizable: Fix resizing of elems with `box-sizing: border-box`
Fixes gh-1979 Closes gh-2012
-rw-r--r--tests/unit/resizable/options.js26
-rw-r--r--ui/widgets/resizable.js9
2 files changed, 32 insertions, 3 deletions
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 = $( "<div>" )
+ .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" ) )
} );
} );