Parcourir la source

Added addClass and removeClass method to core.treeView.Element.

Szymon Kupś il y a 9 ans
Parent
commit
527080dce7

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

@@ -293,4 +293,22 @@ export default class Element extends Node {
 
 		return true;
 	}
+
+	/**
+	 * Adds class.
+	 *
+	 * @param {...String} className
+	 */
+	addClass( ...className ) {
+		className.forEach( name => this._classes.add( name ) );
+	}
+
+	/**
+	 * Removes class.
+	 *
+	 * @param {...String} className
+	 */
+	removeClass( ...className ) {
+		className.forEach( name => this._classes.delete( name ) );
+	}
 }

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

@@ -309,4 +309,47 @@ describe( 'Element', () => {
 			} );
 		} );
 	} );
+
+	describe( 'addClass', () => {
+		it( 'should add single class', () => {
+			const el = new ViewElement( 'foo' );
+
+			el.addClass( 'one' );
+
+			expect( el._classes.has( 'one' ) ).to.be.true;
+		} );
+
+		it( 'should add multiple classes', () => {
+			const el = new ViewElement( 'foo' );
+
+			el.addClass( 'one', 'two', 'three' );
+
+			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( 'removeClass', () => {
+		it( 'should remove single class', () => {
+			const el = new ViewElement( 'foo', { class: 'one two three' } );
+
+			el.removeClass( 'one' );
+
+			expect( el._classes.has( 'one' ) ).to.be.false;
+			expect( el._classes.has( 'two' ) ).to.be.true;
+			expect( el._classes.has( 'three' ) ).to.be.true;
+		} );
+
+		it( 'should remove multiple classes', () => {
+			const el = new ViewElement( 'foo', { class: 'one two three four' } );
+
+			el.removeClass( 'one', 'two', 'three' );
+
+			expect( el._classes.has( 'one' ) ).to.be.false;
+			expect( el._classes.has( 'two' ) ).to.be.false;
+			expect( el._classes.has( 'three' ) ).to.be.false;
+			expect( el._classes.has( 'four' ) ).to.be.true;
+		} );
+	} );
 } );