Skip to content
Snippets Groups Projects

fix label in details element

Files
4
@@ -22,6 +22,32 @@ abstract class ComponentFormBase extends FormElementBase implements TrustedCallb
@@ -22,6 +22,32 @@ abstract class ComponentFormBase extends FormElementBase implements TrustedCallb
return ['preRenderPropOrSlot', 'processPropOrSlot'];
return ['preRenderPropOrSlot', 'processPropOrSlot'];
}
}
 
/**
 
* Check if the form element needs a details.
 
*
 
* @param array $element
 
* The form element.
 
*
 
* @return string|null
 
* Prop or slot id if the form element needs a details.
 
*/
 
protected static function checkDetailsElement(array &$element) : ?string {
 
if (!isset($element["#wrap"]) || !$element["#wrap"]) {
 
return NULL;
 
}
 
$prop_or_slot_id = $element["#prop_id"] ?? $element["#slot_id"];
 
$title_in_component = $element["#title_in_component"] ?? $prop_or_slot_id;
 
$title = !empty($element['#title']) ? $element['#title'] : $title_in_component;
 
if (!array_key_exists($prop_or_slot_id, $element)) {
 
$element[$prop_or_slot_id] = [
 
"#type" => "details",
 
"#title" => $title,
 
"#open" => FALSE,
 
];
 
}
 
return $prop_or_slot_id;
 
}
 
/**
/**
* Customize slot or prop form elements (pre-render).
* Customize slot or prop form elements (pre-render).
*
*
@@ -32,17 +58,8 @@ abstract class ComponentFormBase extends FormElementBase implements TrustedCallb
@@ -32,17 +58,8 @@ abstract class ComponentFormBase extends FormElementBase implements TrustedCallb
* Processed element
* Processed element
*/
*/
public static function preRenderPropOrSlot(array $element) : array {
public static function preRenderPropOrSlot(array $element) : array {
if (isset($element["#wrap"]) && $element["#wrap"]) {
if ($prop_or_slot_id = static::checkDetailsElement($element)) {
$prop_or_slot_id = $element["#prop_id"] ?? $element["#slot_id"];
$title = !empty($element['#title']) ? $element['#title'] : $prop_or_slot_id;
$children_keys = Element::children($element);
$children_keys = Element::children($element);
if (!array_key_exists($prop_or_slot_id, $element)) {
$element[$prop_or_slot_id] = [
"#type" => "details",
"#title" => $title,
"#open" => FALSE,
];
}
foreach ($children_keys as $child_key) {
foreach ($children_keys as $child_key) {
if ($child_key === $prop_or_slot_id) {
if ($child_key === $prop_or_slot_id) {
continue;
continue;
@@ -67,17 +84,7 @@ abstract class ComponentFormBase extends FormElementBase implements TrustedCallb
@@ -67,17 +84,7 @@ abstract class ComponentFormBase extends FormElementBase implements TrustedCallb
*/
*/
public static function processPropOrSlot(array &$element, FormStateInterface $form_state) {
public static function processPropOrSlot(array &$element, FormStateInterface $form_state) {
$triggering_element = $form_state->getTriggeringElement();
$triggering_element = $form_state->getTriggeringElement();
if (isset($element["#wrap"]) && $element["#wrap"]) {
if ($prop_or_slot_id = static::checkDetailsElement($element)) {
$prop_or_slot_id = $element["#prop_id"] ?? $element["#slot_id"];
$title = !empty($element['#title']) ? $element['#title'] : $prop_or_slot_id;
if (!array_key_exists($prop_or_slot_id, $element)) {
$element[$prop_or_slot_id] = [
"#type" => "details",
"#title" => $title,
"#open" => FALSE,
];
}
if (is_array($triggering_element) && isset($triggering_element["#array_parents"]) && is_array($triggering_element["#array_parents"])) {
if (is_array($triggering_element) && isset($triggering_element["#array_parents"]) && is_array($triggering_element["#array_parents"])) {
$element_array_parents = $element["#array_parents"];
$element_array_parents = $element["#array_parents"];
$trigger_array_parents = $triggering_element["#array_parents"];
$trigger_array_parents = $triggering_element["#array_parents"];
Loading