8
0
فهرست منبع

Adds hasClass to core.treeView.Element.

Szymon Kupś 9 سال پیش
والد
کامیت
f69f0b1ae1
2فایلهای تغییر یافته به همراه52 افزوده شده و 2 حذف شده
  1. 30 2
      packages/ckeditor5-engine/src/treeview/element.js
  2. 22 0
      packages/ckeditor5-engine/tests/treeview/element.js

+ 30 - 2
packages/ckeditor5-engine/src/treeview/element.js

@@ -295,7 +295,11 @@ export default class Element extends Node {
 	}
 
 	/**
-	 * Adds class.
+	 * Adds specified class.
+	 *
+	 * @example
+	 * element.addClass( 'foo' ); // Adds 'foo' class.
+	 * element.addClass( 'foo', 'bar' ); // Adds 'foo' and 'bar' classes.
 	 *
 	 * @param {...String} className
 	 */
@@ -304,11 +308,35 @@ export default class Element extends Node {
 	}
 
 	/**
-	 * Removes class.
+	 * Removes specified class.
+	 *
+	 * @example
+ 	 * element.removeClass( 'foo' );  // Removes 'foo' class.
+	 * element.removeClass( 'foo', 'bar' ); // Removes both 'foo' and 'bar' classes.
 	 *
 	 * @param {...String} className
 	 */
 	removeClass( ...className ) {
 		className.forEach( name => this._classes.delete( name ) );
 	}
+
+	/**
+	 * Returns true if class is present.
+	 * If more then one class is provided - returns true only when all classes are present.
+	 *
+	 * @example
+	 * element.hasClass( 'foo' ); // Returns true if 'foo' class is present.
+	 * element.hasClass( 'foo', 'bar' ); // Returns true if 'foo' and 'bar' classes are both present.
+	 *
+	 * @param {...String} className
+	 */
+	hasClass( ...className ) {
+		for ( let name of className ) {
+			if ( !this._classes.has( name ) ) {
+				return false;
+			}
+		}
+
+		return true;
+	}
 }

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

@@ -352,4 +352,26 @@ describe( 'Element', () => {
 			expect( el._classes.has( 'four' ) ).to.be.true;
 		} );
 	} );
+
+	describe( 'hasClass', () => {
+		it( 'should check if element has a class', () => {
+			const el = new ViewElement( 'foo' );
+			el.addClass( 'one', 'two', 'three' );
+
+			expect( el.hasClass( 'one' ) ).to.be.true;
+			expect( el.hasClass( 'two' ) ).to.be.true;
+			expect( el.hasClass( 'three' ) ).to.be.true;
+			expect( el.hasClass( 'four' ) ).to.be.false;
+		} );
+
+		it( 'should check if element has multiple classes', () => {
+			const el = new ViewElement( 'foo' );
+			el.addClass( 'one', 'two', 'three' );
+
+			expect( el.hasClass( 'one', 'two' ) ).to.be.true;
+			expect( el.hasClass( 'three', 'two' ) ).to.be.true;
+			expect( el.hasClass( 'three', 'one', 'two' ) ).to.be.true;
+			expect( el.hasClass( 'three', 'one', 'two', 'zero' ) ).to.be.false;
+		} );
+	} );
 } );