FIX: Ensure extra classes are copied over to readonly/disabled fields

This commit is contained in:
Loz Calver 2021-12-16 11:52:11 +00:00
parent 465ca1d16d
commit cb37e5fb87
3 changed files with 12 additions and 3 deletions

View File

@ -1355,13 +1355,14 @@ class FormField extends RequestHandler
$field = $classOrCopy::create($this->name);
}
$extraClasses = $this->extraClasses ? array_values($this->extraClasses) : [];
$field
->setValue($this->value)
->setForm($this->form)
->setTitle($this->Title())
->setLeftTitle($this->LeftTitle())
->setRightTitle($this->RightTitle())
->addExtraClass($this->extraClass) // Don't use extraClass(), since this merges calculated values
->addExtraClass(implode(' ', $extraClasses)) // Don't use extraClass(), since this merges calculated values
->setDescription($this->getDescription());
// Only include built-in attributes, ignore anything set through getAttributes().

View File

@ -259,6 +259,14 @@ class FormFieldTest extends SapphireTest
$this->assertStringNotContainsString('readonly="readonly"', $field->getAttributesHTML());
}
public function testReadonlyPreservesExtraClass()
{
$field = new FormField('MyField');
$field->addExtraClass('myextraclass1')->addExtraClass('myextraclass2');
$field->setReadonly(true);
$this->assertStringContainsString('myextraclass1 myextraclass2', $field->getAttributesHTML());
}
public function testDisabled()
{
$field = new FormField('MyField');