Browse Source

Create MediaFormView for each dropdown instance separately. Fixes ckeditor/ckeditor5#6333

Tomek Wytrębowicz 5 years ago
parent
commit
1189a50c38

+ 5 - 9
packages/ckeditor5-media-embed/src/mediaembedui.js

@@ -41,19 +41,15 @@ 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 );
+			// Prepare custom view for dropdown's panel.
+			const mediaForm = new MediaFormView( getFormValidators( editor.t, registry ), editor.locale );
+
+			this._setUpDropdown( dropdown, mediaForm, command, editor );
+			this._setUpForm( mediaForm, dropdown, command );
 
 			return dropdown;
 		} );

+ 6 - 0
packages/ckeditor5-media-embed/tests/mediaembedui.js

@@ -53,6 +53,12 @@ describe( 'MediaEmbedUI', () => {
 		expect( dropdown ).to.be.instanceOf( DropdownView );
 	} );
 
+	it( 'should allow creating two instances', () => {
+		expect( function createSecondInstance() {
+			editor.ui.componentFactory.create( 'mediaEmbed' );
+		} ).not.to.throw();
+	} );
+
 	describe( 'dropdown', () => {
 		it( 'should bind #isEnabled to the command', () => {
 			const command = editor.commands.get( 'mediaEmbed' );