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

Commit 47295bd

Browse files
authored
Merge pull request #79 from ckeditor/t/ckeditor5-widget/40
Feature: Implemented and enabled the table selection handler (see ckeditor/ckeditor5-widget#40).
2 parents a01252a + ab642ee commit 47295bd

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

src/converters/downcast.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export function downcastInsertRow( options = {} ) {
9595
const table = tableRow.parent;
9696

9797
const figureElement = conversionApi.mapper.toViewElement( table );
98-
const tableElement = figureElement.getChild( 0 );
98+
const tableElement = getViewTable( figureElement );
9999

100100
const row = table.getChildIndex( tableRow );
101101

@@ -184,7 +184,7 @@ export function downcastTableHeadingRowsChange( options = {} ) {
184184
}
185185

186186
const figureElement = conversionApi.mapper.toViewElement( table );
187-
const viewTable = figureElement.getChild( 0 );
187+
const viewTable = getViewTable( figureElement );
188188

189189
const oldRows = data.attributeOldValue;
190190
const newRows = data.attributeNewValue;
@@ -497,3 +497,14 @@ function moveViewRowsToTableSection( rowsToMove, viewTableSection, conversionApi
497497
conversionApi.writer.move( ViewRange.createOn( viewTableRow ), ViewPosition.createAt( viewTableSection, offset ) );
498498
}
499499
}
500+
501+
// Properly finds '<table>' element inside `<figure>` widget.
502+
//
503+
// @param {module:engine/view/element~Element} viewFigure
504+
function getViewTable( viewFigure ) {
505+
for ( const child of viewFigure.getChildren() ) {
506+
if ( child.name === 'table' ) {
507+
return child;
508+
}
509+
}
510+
}

src/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const tableSymbol = Symbol( 'isTable' );
2525
export function toTableWidget( viewElement, writer ) {
2626
writer.setCustomProperty( tableSymbol, true, viewElement );
2727

28-
return toWidget( viewElement, writer );
28+
return toWidget( viewElement, writer, { hasSelectionHandler: true } );
2929
}
3030

3131
/**

tests/converters/downcast.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,8 @@ describe( 'downcast converters', () => {
274274
setModelData( model, modelTable( [ [ '' ] ] ) );
275275

276276
expect( formatTable( getViewData( viewDocument, { withoutSelection: true } ) ) ).to.equal( formatTable(
277-
'<figure class="ck-widget table" contenteditable="false">' +
277+
'<figure class="ck-widget ck-widget_selectable table" contenteditable="false">' +
278+
'<div class="ck ck-widget__selection-handler"></div>' +
278279
'<table>' +
279280
'<tbody>' +
280281
'<tr><td class="ck-editor__editable ck-editor__nested-editable" contenteditable="true"></td></tr>' +
@@ -525,7 +526,8 @@ describe( 'downcast converters', () => {
525526
} );
526527

527528
expect( formatTable( getViewData( viewDocument, { withoutSelection: true } ) ) ).to.equal( formatTable(
528-
'<figure class="ck-widget table" contenteditable="false">' +
529+
'<figure class="ck-widget ck-widget_selectable table" contenteditable="false">' +
530+
'<div class="ck ck-widget__selection-handler"></div>' +
529531
'<table>' +
530532
'<tbody>' +
531533
'<tr><td class="ck-editor__editable ck-editor__nested-editable" contenteditable="true">00</td></tr>' +
@@ -686,7 +688,8 @@ describe( 'downcast converters', () => {
686688
} );
687689

688690
expect( formatTable( getViewData( viewDocument, { withoutSelection: true } ) ) ).to.equal( formatTable(
689-
'<figure class="ck-widget table" contenteditable="false">' +
691+
'<figure class="ck-widget ck-widget_selectable table" contenteditable="false">' +
692+
'<div class="ck ck-widget__selection-handler"></div>' +
690693
'<table>' +
691694
'<tbody>' +
692695
'<tr>' +
@@ -885,7 +888,8 @@ describe( 'downcast converters', () => {
885888
} );
886889

887890
expect( formatTable( getViewData( viewDocument, { withoutSelection: true } ) ) ).to.equal( formatTable(
888-
'<figure class="ck-widget table" contenteditable="false">' +
891+
'<figure class="ck-widget ck-widget_selectable table" contenteditable="false">' +
892+
'<div class="ck ck-widget__selection-handler"></div>' +
889893
'<table>' +
890894
'<thead>' +
891895
'<tr><th class="ck-editor__editable ck-editor__nested-editable" contenteditable="true">00</th></tr>' +
@@ -1092,7 +1096,8 @@ describe( 'downcast converters', () => {
10921096
} );
10931097

10941098
expect( formatTable( getViewData( viewDocument, { withoutSelection: true } ) ) ).to.equal( formatTable(
1095-
'<figure class="ck-widget table" contenteditable="false">' +
1099+
'<figure class="ck-widget ck-widget_selectable table" contenteditable="false">' +
1100+
'<div class="ck ck-widget__selection-handler"></div>' +
10961101
'<table>' +
10971102
'<tbody>' +
10981103
'<tr><th class="ck-editor__editable ck-editor__nested-editable" contenteditable="true">00</th></tr>' +

0 commit comments

Comments
 (0)