Skip to content

Commit

Permalink
ENH Add a way to check if a form or field has an extra css class.
Browse files Browse the repository at this point in the history
  • Loading branch information
GuySartorelli committed Oct 6, 2021
1 parent 4163d38 commit c5003bb
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/Forms/Form.php
Original file line number Diff line number Diff line change
Expand Up @@ -1779,6 +1779,25 @@ public function extraClass()
return implode(' ', array_unique($this->extraClasses));
}

/**
* Check if a CSS-class has been added to the form container.
*
* @param string $class A string containing a classname or several class
* names delimited by a single space.
* @return boolean True if all of the classnames passed in have been added.
*/
public function hasExtraClass($class)
{
//split at white space
$classes = preg_split('/\s+/', $class);
foreach ($classes as $class) {
if (!isset($this->extraClasses[$class])) {
return false;
}
}
return true;
}

/**
* Add a CSS-class to the form-container. If needed, multiple classes can
* be added by delimiting a string with spaces.
Expand Down
19 changes: 19 additions & 0 deletions src/Forms/FormField.php
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,25 @@ public function extraClass()
return implode(' ', $classes);
}

/**
* Check if a CSS-class has been added to the form container.
*
* @param string $class A string containing a classname or several class
* names delimited by a single space.
* @return boolean True if all of the classnames passed in have been added.
*/
public function hasExtraClass($class)
{
//split at white space
$classes = preg_split('/\s+/', $class);
foreach ($classes as $class) {
if (!isset($this->extraClasses[$class])) {
return false;
}
}
return true;
}

/**
* Add one or more CSS-classes to the FormField container.
*
Expand Down
12 changes: 12 additions & 0 deletions tests/php/Forms/FormFieldTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,18 @@ public function testAddExtraClass()
$this->assertStringEndsWith('class1 class2', $field->extraClass());
}

public function testHasExtraClass()
{
$field = new FormField('MyField');
$field->addExtraClass('class1');
$field->addExtraClass('class2');
$this->assertTrue($field->hasExtraClass('class1'));
$this->assertTrue($field->hasExtraClass('class2'));
$this->assertTrue($field->hasExtraClass('class1 class2'));
$this->assertTrue($field->hasExtraClass('class2 class1'));
$this->assertFalse($field->hasExtraClass('class3'));
}

public function testRemoveExtraClass()
{
$field = new FormField('MyField');
Expand Down
12 changes: 12 additions & 0 deletions tests/php/Forms/FormTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -726,6 +726,18 @@ public function testAddExtraClass()
$this->assertStringEndsWith('class1 class2', $form->extraClass());
}

public function testHasExtraClass()
{
$form = $this->getStubForm();
$form->addExtraClass('class1');
$form->addExtraClass('class2');
$this->assertTrue($form->hasExtraClass('class1'));
$this->assertTrue($form->hasExtraClass('class2'));
$this->assertTrue($form->hasExtraClass('class1 class2'));
$this->assertTrue($form->hasExtraClass('class2 class1'));
$this->assertFalse($form->hasExtraClass('class3'));
}

public function testRemoveExtraClass()
{
$form = $this->getStubForm();
Expand Down

0 comments on commit c5003bb

Please sign in to comment.