8
0
Просмотр исходного кода

Added classes set to core.treeView.Element.

Szymon Kupś 9 лет назад
Родитель
Сommit
405ae23541

+ 16 - 0
packages/ckeditor5-engine/src/treeview/element.js

@@ -63,6 +63,22 @@ export default class Element extends Node {
 		if ( children ) {
 			this.insertChildren( 0, children );
 		}
+
+		/**
+		 * Set of classes associated with element instance.
+		 *
+		 * @protected
+		 * @member {Set} core.treeView.Element#_classes
+		 */
+		if ( this._attrs.has( 'class' ) ) {
+			// Remove class attribute and handle it by class set.
+			const classString = this._attrs.get( 'class' );
+			const classArray = classString.split( /\s+/ );
+			this._classes = new Set( classArray );
+			this._attrs.delete( 'class' );
+		} else {
+			this._classes = new Set();
+		}
 	}
 
 	/**

+ 10 - 0
packages/ckeditor5-engine/tests/treeview/element.js

@@ -49,6 +49,16 @@ describe( 'Element', () => {
 			expect( parent.getChildCount() ).to.equal( 1 );
 			expect( parent.getChild( 0 ) ).to.have.property( 'name' ).that.equals( 'p' );
 		} );
+
+		it( 'should move class attribute to class set ', () => {
+			const el = new ViewElement( 'p', { id: 'test', class: 'one two three' } );
+
+			expect( el._attrs.has( 'class' ) ).to.be.false;
+			expect( el._attrs.has( 'id' ) ).to.be.true;
+			expect( el._classes.has( 'one' ) ).to.be.true;
+			expect( el._classes.has( 'two' ) ).to.be.true;
+			expect( el._classes.has( 'three' ) ).to.be.true;
+		} );
 	} );
 
 	describe( 'clone', () => {