|
|
@@ -363,6 +363,40 @@ describe( 'WidgetResize', () => {
|
|
|
} )();
|
|
|
} );
|
|
|
} );
|
|
|
+
|
|
|
+ it( 'returns proper value when resize host is different from widget wrapper', () => {
|
|
|
+ createResizer( {
|
|
|
+ unit: undefined,
|
|
|
+ getHandleHost( domWidgetElement ) {
|
|
|
+ return domWidgetElement.querySelector( '.sub-div' );
|
|
|
+ }
|
|
|
+ } );
|
|
|
+
|
|
|
+ const usedHandle = 'bottom-right';
|
|
|
+ const pointerDifference = { x: -10, y: -10 };
|
|
|
+ const expectedWidth = '20%';
|
|
|
+
|
|
|
+ const domParts = getWidgetDomParts( editor, widget, usedHandle );
|
|
|
+ const resizeHost = domParts.widget.querySelector( '.sub-div' );
|
|
|
+ const initialPointerPosition = getHandleCenterPoint( resizeHost, usedHandle );
|
|
|
+ const finalPointerPosition = initialPointerPosition.moveBy( pointerDifference.x, pointerDifference.y );
|
|
|
+
|
|
|
+ resizerMouseSimulator.dragTo( editor, domParts.resizeHandle, finalPointerPosition );
|
|
|
+ expect( commitStub.callCount, 'call count' ).to.be.eql( 1 );
|
|
|
+ expect( commitStub.args[ 0 ][ 0 ], 'width' ).to.be.equal( expectedWidth );
|
|
|
+ sinon.assert.calledOnce( commitStub );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'doesn\'t break if the widget wrapper was removed from DOM', () => {
|
|
|
+ const resizer = createResizer( {
|
|
|
+ unit: undefined
|
|
|
+ } );
|
|
|
+ const domParts = getWidgetDomParts( editor, widget, 'bottom-right' );
|
|
|
+
|
|
|
+ domParts.resizeWrapper.remove();
|
|
|
+
|
|
|
+ resizer.redraw();
|
|
|
+ } );
|
|
|
} );
|
|
|
|
|
|
describe( '_getResizerByHandle()', () => {
|
|
|
@@ -417,11 +451,18 @@ describe( 'WidgetResize', () => {
|
|
|
.elementToElement( {
|
|
|
model: 'widget',
|
|
|
view: ( modelItem, viewWriter ) => {
|
|
|
- const div = viewWriter.createContainerElement( 'div' );
|
|
|
- viewWriter.setStyle( 'height', '50px', div );
|
|
|
- viewWriter.setStyle( 'width', '25%', div ); // It evaluates to 100px.
|
|
|
-
|
|
|
- return toWidget( div, viewWriter, {
|
|
|
+ const parentDiv = viewWriter.createContainerElement( 'div' );
|
|
|
+ viewWriter.setStyle( 'height', '50px', parentDiv );
|
|
|
+ viewWriter.setStyle( 'width', '25%', parentDiv ); // It evaluates to 100px.
|
|
|
+
|
|
|
+ const subDiv = viewWriter.createContainerElement( 'div' );
|
|
|
+ viewWriter.insert( viewWriter.createPositionAt( subDiv, 'start' ), viewWriter.createText( 'foo' ) );
|
|
|
+ viewWriter.addClass( 'sub-div', subDiv );
|
|
|
+ viewWriter.setStyle( 'height', '20px', subDiv );
|
|
|
+ viewWriter.setStyle( 'width', '50px', subDiv );
|
|
|
+ viewWriter.insert( viewWriter.createPositionAt( parentDiv, 'start' ), subDiv );
|
|
|
+
|
|
|
+ return toWidget( parentDiv, viewWriter, {
|
|
|
label: 'element label'
|
|
|
} );
|
|
|
}
|