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

Commit e3a5c09

Browse files
authored
Merge pull request #159 from ckeditor/t/ckeditor5-widget/60
Other: Aligned to the new `WidgetToolbarRepository` API. Replaced the `isTableWidgetSelected()` utility with `getSelectedTableWidget()`. Replaced `isTableContentSelected()` with `getTableWidgetAncestor()` (see ckeditor/ckeditor5-widget#60). BREAKING CHANGE: The `isTableWidgetSelected()` utility has been replaced by `getSelectedTableWidget()` and returns an editing `View` element instead of `Boolean`. BREAKING CHANGE: The `isTableContentSelected()` utility has been replaced by `getTableWidgetAncestor()` and returns an editing `View` element instead of `Boolean`.
2 parents 9ace3ba + a5942ef commit e3a5c09

File tree

3 files changed

+26
-21
lines changed

3 files changed

+26
-21
lines changed

src/tabletoolbar.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99

1010
import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
11-
import { isTableContentSelected, isTableWidgetSelected } from './utils';
11+
import { getSelectedTableWidget, getTableWidgetAncestor } from './utils';
1212
import WidgetToolbarRepository from '@ckeditor/ckeditor5-widget/src/widgettoolbarrepository';
1313

1414
/**
@@ -63,14 +63,14 @@ export default class TableToolbar extends Plugin {
6363
if ( tableContentToolbarItems || deprecatedTableContentToolbarItems ) {
6464
widgetToolbarRepository.register( 'tableContent', {
6565
items: tableContentToolbarItems || deprecatedTableContentToolbarItems,
66-
visibleWhen: isTableContentSelected,
66+
getRelatedElement: getTableWidgetAncestor
6767
} );
6868
}
6969

7070
if ( tableToolbarItems ) {
7171
widgetToolbarRepository.register( 'table', {
7272
items: tableToolbarItems,
73-
visibleWhen: isTableWidgetSelected,
73+
getRelatedElement: getSelectedTableWidget
7474
} );
7575
}
7676
}

src/utils.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,28 +39,33 @@ export function isTableWidget( viewElement ) {
3939
}
4040

4141
/**
42-
* Checks if a table widget is the only selected element.
42+
* Returns a table widget editing view element if one is selected.
4343
*
4444
* @param {module:engine/view/selection~Selection|module:engine/view/documentselection~DocumentSelection} selection
45-
* @returns {Boolean}
45+
* @returns {module:engine/view/element~Element|null}
4646
*/
47-
export function isTableWidgetSelected( selection ) {
47+
export function getSelectedTableWidget( selection ) {
4848
const viewElement = selection.getSelectedElement();
4949

50-
return !!( viewElement && isTableWidget( viewElement ) );
50+
if ( viewElement && isTableWidget( viewElement ) ) {
51+
return viewElement;
52+
}
53+
54+
return null;
5155
}
5256

5357
/**
54-
* Checks if a table widget content is selected.
58+
* Returns a table widget editing view element if one is among selection's ancestors.
5559
*
5660
* @param {module:engine/view/selection~Selection|module:engine/view/documentselection~DocumentSelection} selection
57-
* @returns {Boolean}
61+
* @returns {module:engine/view/element~Element|null}
5862
*/
59-
export function isTableContentSelected( selection ) {
60-
const selectedElement = selection.getSelectedElement();
61-
const isInnerWidgetSelected = selectedElement && isWidget( selectedElement );
62-
63+
export function getTableWidgetAncestor( selection ) {
6364
const parentTable = findAncestor( 'table', selection.getFirstPosition() );
6465

65-
return !isInnerWidgetSelected && !!( parentTable && isTableWidget( parentTable.parent ) );
66+
if ( parentTable && isTableWidget( parentTable.parent ) ) {
67+
return parentTable.parent;
68+
}
69+
70+
return null;
6671
}

tests/tabletoolbar.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ describe( 'TableToolbar', () => {
4545
model = newEditor.model;
4646
doc = model.document;
4747
widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );
48-
toolbar = widgetToolbarRepository._toolbars.get( 'tableContent' ).view;
48+
toolbar = widgetToolbarRepository._toolbarDefinitions.get( 'tableContent' ).view;
4949
balloon = editor.plugins.get( 'ContextualBalloon' );
5050
} );
5151
} );
@@ -69,7 +69,7 @@ describe( 'TableToolbar', () => {
6969
} )
7070
.then( editor => {
7171
const widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );
72-
expect( widgetToolbarRepository._toolbars.get( 'tableContent' ) ).to.be.undefined;
72+
expect( widgetToolbarRepository._toolbarDefinitions.get( 'tableContent' ) ).to.be.undefined;
7373

7474
editorElement.remove();
7575
return editor.destroy();
@@ -169,7 +169,7 @@ describe( 'TableToolbar', () => {
169169

170170
expect( balloon.visibleView ).to.be.null;
171171

172-
const imageToolbar = widgetToolbarRepository._toolbars.get( 'image' ).view;
172+
const imageToolbar = widgetToolbarRepository._toolbarDefinitions.get( 'image' ).view;
173173

174174
model.change( writer => {
175175
// Select the <tableCell><paragraph></paragraph>[<image></image>]</tableCell>
@@ -257,7 +257,7 @@ describe( 'TableToolbar', () => {
257257
editor = newEditor;
258258

259259
const widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );
260-
const toolbarView = widgetToolbarRepository._toolbars.get( 'tableContent' ).view;
260+
const toolbarView = widgetToolbarRepository._toolbarDefinitions.get( 'tableContent' ).view;
261261

262262
expect( toolbarView.items ).to.have.length( 1 );
263263
expect( toolbarView.items.get( 0 ).label ).to.equal( 'fake button' );
@@ -287,7 +287,7 @@ describe( 'TableToolbar', () => {
287287
editor = newEditor;
288288

289289
const widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );
290-
const toolbarView = widgetToolbarRepository._toolbars.get( 'tableContent' ).view;
290+
const toolbarView = widgetToolbarRepository._toolbarDefinitions.get( 'tableContent' ).view;
291291

292292
expect( toolbarView.items ).to.have.length( 1 );
293293
expect( toolbarView.items.get( 0 ).label ).to.equal( 'foo button' );
@@ -316,7 +316,7 @@ describe( 'TableToolbar', () => {
316316
} ).then( _editor => {
317317
editor = _editor;
318318
widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );
319-
toolbar = widgetToolbarRepository._toolbars.get( 'table' ).view;
319+
toolbar = widgetToolbarRepository._toolbarDefinitions.get( 'table' ).view;
320320
balloon = editor.plugins.get( 'ContextualBalloon' );
321321
model = editor.model;
322322
} );
@@ -337,7 +337,7 @@ describe( 'TableToolbar', () => {
337337
} )
338338
.then( editor => {
339339
const widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );
340-
expect( widgetToolbarRepository._toolbars.get( 'table' ) ).to.be.undefined;
340+
expect( widgetToolbarRepository._toolbarDefinitions.get( 'table' ) ).to.be.undefined;
341341

342342
editorElement.remove();
343343
return editor.destroy();

0 commit comments

Comments
 (0)