Issue #997826 by dww, Lendude, sukanya.ramakrishnan, amar.deokar, JonMcL, larowlan, jibran, idebr: #states doesn't work correctly with type text_format
parent
5425271050
commit
722be736f5
|
@ -165,6 +165,11 @@ class TextFormat extends RenderElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the value element has #states set, copy it to the format element.
|
||||||
|
if (isset($element['value']['#states'])) {
|
||||||
|
$element['format']['#states'] = $element['value']['#states'];
|
||||||
|
}
|
||||||
|
|
||||||
// Prepare text format guidelines.
|
// Prepare text format guidelines.
|
||||||
$element['format']['guidelines'] = [
|
$element['format']['guidelines'] = [
|
||||||
'#type' => 'container',
|
'#type' => 'container',
|
||||||
|
|
|
@ -121,6 +121,15 @@ class JavascriptStatesForm extends FormBase {
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
$form['text_format_invisible_when_checkbox_trigger_checked'] = [
|
||||||
|
'#type' => 'text_format',
|
||||||
|
'#title' => 'Text format invisible when checkbox trigger checked',
|
||||||
|
'#states' => [
|
||||||
|
'invisible' => [
|
||||||
|
':input[name="checkbox_trigger"]' => ['checked' => TRUE],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
// Checkboxes trigger.
|
// Checkboxes trigger.
|
||||||
$form['textfield_visible_when_checkboxes_trigger_value2_checked'] = [
|
$form['textfield_visible_when_checkboxes_trigger_value2_checked'] = [
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Drupal\FunctionalJavascriptTests\Core\Form;
|
namespace Drupal\FunctionalJavascriptTests\Core\Form;
|
||||||
|
|
||||||
|
use Drupal\filter\Entity\FilterFormat;
|
||||||
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
|
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,6 +22,33 @@ class JavascriptStatesTest extends WebDriverTestBase {
|
||||||
*/
|
*/
|
||||||
protected static $modules = ['form_test'];
|
protected static $modules = ['form_test'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function setUp():void {
|
||||||
|
parent::setUp();
|
||||||
|
// Add text formats.
|
||||||
|
$filtered_html_format = FilterFormat::create([
|
||||||
|
'format' => 'filtered_html',
|
||||||
|
'name' => 'Filtered HTML',
|
||||||
|
'weight' => 0,
|
||||||
|
'filters' => [],
|
||||||
|
]);
|
||||||
|
$filtered_html_format->save();
|
||||||
|
$full_html_format = FilterFormat::create([
|
||||||
|
'format' => 'full_html',
|
||||||
|
'name' => 'Full HTML',
|
||||||
|
'weight' => 1,
|
||||||
|
'filters' => [],
|
||||||
|
]);
|
||||||
|
$full_html_format->save();
|
||||||
|
$normal_user = $this->drupalCreateUser([
|
||||||
|
'use text format filtered_html',
|
||||||
|
'use text format full_html',
|
||||||
|
]);
|
||||||
|
$this->drupalLogin($normal_user);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the JavaScript #states functionality of form elements.
|
* Tests the JavaScript #states functionality of form elements.
|
||||||
*
|
*
|
||||||
|
@ -60,6 +88,10 @@ class JavascriptStatesTest extends WebDriverTestBase {
|
||||||
$this->assertNotEmpty($checkbox_unchecked_element);
|
$this->assertNotEmpty($checkbox_unchecked_element);
|
||||||
$checkbox_visible_element = $page->findField('checkbox_visible_when_checkbox_trigger_checked');
|
$checkbox_visible_element = $page->findField('checkbox_visible_when_checkbox_trigger_checked');
|
||||||
$this->assertNotEmpty($checkbox_visible_element);
|
$this->assertNotEmpty($checkbox_visible_element);
|
||||||
|
$text_format_invisible_value = $page->findField('text_format_invisible_when_checkbox_trigger_checked[value]');
|
||||||
|
$this->assertNotEmpty($text_format_invisible_value);
|
||||||
|
$text_format_invisible_format = $page->findField('text_format_invisible_when_checkbox_trigger_checked[format]');
|
||||||
|
$this->assertNotEmpty($text_format_invisible_format);
|
||||||
|
|
||||||
// Verify initial state.
|
// Verify initial state.
|
||||||
$this->assertTrue($textfield_invisible_element->isVisible());
|
$this->assertTrue($textfield_invisible_element->isVisible());
|
||||||
|
@ -69,6 +101,8 @@ class JavascriptStatesTest extends WebDriverTestBase {
|
||||||
$this->assertFalse($checkbox_checked_element->isChecked());
|
$this->assertFalse($checkbox_checked_element->isChecked());
|
||||||
$this->assertTrue($checkbox_unchecked_element->isChecked());
|
$this->assertTrue($checkbox_unchecked_element->isChecked());
|
||||||
$this->assertFalse($checkbox_visible_element->isVisible());
|
$this->assertFalse($checkbox_visible_element->isVisible());
|
||||||
|
$this->assertTrue($text_format_invisible_value->isVisible());
|
||||||
|
$this->assertTrue($text_format_invisible_format->isVisible());
|
||||||
|
|
||||||
// Change state: check the checkbox.
|
// Change state: check the checkbox.
|
||||||
$trigger->check();
|
$trigger->check();
|
||||||
|
@ -80,6 +114,8 @@ class JavascriptStatesTest extends WebDriverTestBase {
|
||||||
$this->assertTrue($checkbox_checked_element->isChecked());
|
$this->assertTrue($checkbox_checked_element->isChecked());
|
||||||
$this->assertFalse($checkbox_unchecked_element->isChecked());
|
$this->assertFalse($checkbox_unchecked_element->isChecked());
|
||||||
$this->assertTrue($checkbox_visible_element->isVisible());
|
$this->assertTrue($checkbox_visible_element->isVisible());
|
||||||
|
$this->assertFalse($text_format_invisible_value->isVisible());
|
||||||
|
$this->assertFalse($text_format_invisible_format->isVisible());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue