Skip to content
This repository has been archived by the owner on Jun 26, 2020. It is now read-only.

Commit

Permalink
Merge c306499 into 148391f
Browse files Browse the repository at this point in the history
  • Loading branch information
jodator committed Dec 19, 2018
2 parents 148391f + c306499 commit 805902e
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 6 deletions.
11 changes: 8 additions & 3 deletions src/widget.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@

import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
import MouseObserver from '@ckeditor/ckeditor5-engine/src/view/observer/mouseobserver';
import { isWidget, WIDGET_SELECTED_CLASS_NAME, getLabel } from './utils';
import { keyCodes, getCode, parseKeystroke } from '@ckeditor/ckeditor5-utils/src/keyboard';
import { getLabel, isWidget, WIDGET_SELECTED_CLASS_NAME } from './utils';
import { getCode, keyCodes, parseKeystroke } from '@ckeditor/ckeditor5-utils/src/keyboard';

import '../theme/widget.css';

Expand Down Expand Up @@ -415,10 +415,15 @@ function isSelectAllKeyCode( domEventData ) {
// @returns {Boolean}
function isInsideNestedEditable( element ) {
while ( element ) {
if ( !!element && element.is( 'editableElement' ) && !element.is( 'rootElement' ) ) {
if ( element.is( 'editableElement' ) && !element.is( 'rootElement' ) ) {
return true;
}

// Click on nested widget should select it.
if ( isWidget( element ) ) {
return false;
}

element = element.parent;
}

Expand Down
32 changes: 29 additions & 3 deletions tests/widget.js
Original file line number Diff line number Diff line change
Expand Up @@ -201,13 +201,13 @@ describe( 'Widget', () => {
expect( viewDocument.selection.fakeSelectionLabel ).to.equal( 'element label' );
} );

it( 'should add selected class when no only a widget is selected', () => {
it( 'should add selected class when other content is selected with widget', () => {
setModelData( model, '[<paragraph>foo</paragraph><widget></widget><widget></widget>]' );

expect( viewDocument.selection.isFake ).to.be.false;
expect( getViewData( view ) ).to.equal(
'[' +
'<p>foo</p>' +

'<p>{foo</p>' +
'<div class="ck-widget ck-widget_selected" contenteditable="false"><b></b></div>' +
'<div class="ck-widget ck-widget_selected" contenteditable="false"><b></b></div>' +
']'
Expand Down Expand Up @@ -1349,5 +1349,31 @@ describe( 'Widget', () => {
'</div>'
);
} );

it( 'should select widget in editable', () => {
model.schema.extend( 'widget', { allowIn: 'nested' } );

setModelData( model, '[]<widget><nested><widget></widget></nested></widget>' );

const widgetInEditable = viewDocument.getRoot().getChild( 0 ).getChild( 0 ).getChild( 0 );

const domEventDataMock = {
target: widgetInEditable,
preventDefault: sinon.spy()
};

viewDocument.fire( 'mousedown', domEventDataMock );

expect( getViewData( view ) ).to.equal(
'<div class="ck-widget ck-widget_selectable" contenteditable="false">' +
'<figcaption contenteditable="true">' +
'[<div class="ck-widget ck-widget_selectable ck-widget_selected" contenteditable="false">' +
'<div class="ck ck-widget__selection-handler"></div>' +
'</div>]' +
'</figcaption>' +
'<div class="ck ck-widget__selection-handler"></div>' +
'</div>'
);
} );
} );
} );

0 comments on commit 805902e

Please sign in to comment.