Skip to content

Commit

Permalink
Merge pull request #6736 from ckeditor/i/6333
Browse files Browse the repository at this point in the history
Fix (media-embed): Made it possible to use the `mediaEmbed` button more than once (in more than one toolbar. Closes #6333.

MINOR BREAKING CHANGE: `MediaEmbedUI#form` was removed from the API.
  • Loading branch information
Reinmar authored May 5, 2020
2 parents ec1de8c + 4b2d366 commit 3011e37
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
15 changes: 5 additions & 10 deletions packages/ckeditor5-media-embed/src/mediaembedui.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,19 +41,14 @@ export default class MediaEmbedUI extends Plugin {
const command = editor.commands.get( 'mediaEmbed' );
const registry = editor.plugins.get( MediaEmbedEditing ).registry;

/**
* The form view displayed inside the drop-down.
*
* @member {module:media-embed/ui/mediaformview~MediaFormView}
*/
this.form = new MediaFormView( getFormValidators( editor.t, registry ), editor.locale );

// Setup `imageUpload` button.
editor.ui.componentFactory.add( 'mediaEmbed', locale => {
const dropdown = createDropdown( locale );

this._setUpDropdown( dropdown, this.form, command, editor );
this._setUpForm( this.form, dropdown, command );
const mediaForm = new MediaFormView( getFormValidators( editor.t, registry ), editor.locale );

this._setUpDropdown( dropdown, mediaForm, command, editor );
this._setUpForm( dropdown, mediaForm, command );

return dropdown;
} );
Expand Down Expand Up @@ -103,7 +98,7 @@ export default class MediaEmbedUI extends Plugin {
}
}

_setUpForm( form, dropdown, command ) {
_setUpForm( dropdown, form, command ) {
form.delegate( 'submit', 'cancel' ).to( dropdown );
form.urlInputView.bind( 'value' ).to( command, 'value' );

Expand Down
9 changes: 9 additions & 0 deletions packages/ckeditor5-media-embed/tests/mediaembedui.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,15 @@ describe( 'MediaEmbedUI', () => {
expect( dropdown ).to.be.instanceOf( DropdownView );
} );

it( 'should allow creating two instances', () => {
let secondInstance;

expect( function createSecondInstance() {
secondInstance = editor.ui.componentFactory.create( 'mediaEmbed' );
} ).not.to.throw();
expect( dropdown ).to.not.equal( secondInstance );
} );

describe( 'dropdown', () => {
it( 'should bind #isEnabled to the command', () => {
const command = editor.commands.get( 'mediaEmbed' );
Expand Down

0 comments on commit 3011e37

Please sign in to comment.