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

Commit

Permalink
Merge pull request #79 from ckeditor/t/ckeditor5-widget/40
Browse files Browse the repository at this point in the history
Feature: Implemented and enabled the table selection handler (see ckeditor/ckeditor5-widget#40).
  • Loading branch information
oleq authored Jun 27, 2018
2 parents a01252a + ab642ee commit 47295bd
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 8 deletions.
15 changes: 13 additions & 2 deletions src/converters/downcast.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ export function downcastInsertRow( options = {} ) {
const table = tableRow.parent;

const figureElement = conversionApi.mapper.toViewElement( table );
const tableElement = figureElement.getChild( 0 );
const tableElement = getViewTable( figureElement );

const row = table.getChildIndex( tableRow );

Expand Down Expand Up @@ -184,7 +184,7 @@ export function downcastTableHeadingRowsChange( options = {} ) {
}

const figureElement = conversionApi.mapper.toViewElement( table );
const viewTable = figureElement.getChild( 0 );
const viewTable = getViewTable( figureElement );

const oldRows = data.attributeOldValue;
const newRows = data.attributeNewValue;
Expand Down Expand Up @@ -497,3 +497,14 @@ function moveViewRowsToTableSection( rowsToMove, viewTableSection, conversionApi
conversionApi.writer.move( ViewRange.createOn( viewTableRow ), ViewPosition.createAt( viewTableSection, offset ) );
}
}

// Properly finds '<table>' element inside `<figure>` widget.
//
// @param {module:engine/view/element~Element} viewFigure
function getViewTable( viewFigure ) {
for ( const child of viewFigure.getChildren() ) {
if ( child.name === 'table' ) {
return child;
}
}
}
2 changes: 1 addition & 1 deletion src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const tableSymbol = Symbol( 'isTable' );
export function toTableWidget( viewElement, writer ) {
writer.setCustomProperty( tableSymbol, true, viewElement );

return toWidget( viewElement, writer );
return toWidget( viewElement, writer, { hasSelectionHandler: true } );
}

/**
Expand Down
15 changes: 10 additions & 5 deletions tests/converters/downcast.js
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,8 @@ describe( 'downcast converters', () => {
setModelData( model, modelTable( [ [ '' ] ] ) );

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

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

expect( formatTable( getViewData( viewDocument, { withoutSelection: true } ) ) ).to.equal( formatTable(
'<figure class="ck-widget table" contenteditable="false">' +
'<figure class="ck-widget ck-widget_selectable table" contenteditable="false">' +
'<div class="ck ck-widget__selection-handler"></div>' +
'<table>' +
'<tbody>' +
'<tr>' +
Expand Down Expand Up @@ -885,7 +888,8 @@ describe( 'downcast converters', () => {
} );

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

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

0 comments on commit 47295bd

Please # to comment.