Skip to content
Snippets Groups Projects

Issue #3473621 by b.khouy, just_like_good_vibes, pdureau: The regexp for attribute props should allow more characters

Merged Issue #3473621 by b.khouy, just_like_good_vibes, pdureau: The regexp for attribute props should allow more characters
All threads resolved!
All threads resolved!
Files
2
@@ -263,11 +263,51 @@ class ComponentForm extends ComponentFormBase {
return $sub_form;
}
/**
* Open wrapped elements with errors.
*
* @param array $element
* The element.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The form state.
*
* @return bool
* return TRUE if errors were found.
*/
protected static function openWrappedElementsWithErrors(array &$element, FormStateInterface $form_state) : bool {
$errors = $form_state->getErrors();
if (count($errors) === 0) {
return FALSE;
}
$element_name = implode("][", $element["#parents"]);
$error_elements_found = FALSE;
foreach (array_keys($errors) as $error_name) {
if (!str_starts_with($error_name, $element_name)) {
continue;
}
$error_elements_found = TRUE;
$parents = array_slice(explode("][", $error_name), count($element["#parents"]));
if (count($parents) < 2) {
continue;
}
$parents_of_prop_or_slot = array_slice($parents, 0, 2);
$prop_or_slot = NestedArray::getValue($element, $parents_of_prop_or_slot);
if (!empty($prop_or_slot) && isset($prop_or_slot["#wrap"]) && $prop_or_slot["#wrap"]) {
$parents_of_prop_or_slot[] = $parents_of_prop_or_slot[1];
$parents_of_prop_or_slot[] = "#open";
NestedArray::setValue($element, $parents_of_prop_or_slot, TRUE);
}
}
return $error_elements_found;
}
/**
* Form element validation handler.
*/
public static function validateFormElement(array &$element, FormStateInterface $form_state) : void {
if (static::openWrappedElementsWithErrors($element, $form_state)) {
return;
}
try {
$trigger_element = $form_state->getTriggeringElement();
if (isset($trigger_element['#ui_patterns']) === FALSE) {
Loading