fixed home duplicate, patched autocomplete deluxe for placeholder message

This commit is contained in:
2026-09-15 13:58:21 +02:00
parent dfc12f8203
commit 4b82a912f1
9 changed files with 301 additions and 194 deletions
@@ -0,0 +1,81 @@
diff --git a/assets/css/autocomplete_deluxe.gin.css b/assets/css/autocomplete_deluxe.gin.css
--- a/assets/css/autocomplete_deluxe.gin.css
+++ b/assets/css/autocomplete_deluxe.gin.css
@@ -41,3 +41,18 @@
.autocomplete-deluxe-item .autocomplete-deluxe-item-delete:hover {
background: var(--gin-color-button-text);
}
+
+/* Faux placeholder: show no_empty_message when no items selected. */
+div.autocomplete-deluxe-container.autocomplete-deluxe-multiple:not(:has(.autocomplete-deluxe-item))::before {
+ content: attr(data-placeholder);
+ display: block;
+ color: var(--gin-color-text-disabled, #999);
+ pointer-events: none;
+ font-size: 0.875rem;
+ line-height: 1.3;
+ white-space: normal;
+ word-wrap: break-word;
+ padding: 0.68rem 2.5rem 0.68rem 0.93rem;
+ min-height: 3rem;
+ box-sizing: border-box;
+}
diff --git a/src/Element/AutocompleteDeluxeElement.php b/src/Element/AutocompleteDeluxeElement.php
--- a/src/Element/AutocompleteDeluxeElement.php
+++ b/src/Element/AutocompleteDeluxeElement.php
@@ -41,6 +41,7 @@
],
];
$info['#process'][] = [$class, 'processElement'];
+ $info['#theme_wrappers'] = ['form_element'];
return $info;
}
@@ -77,19 +78,12 @@
$element['#after_build'][] = [get_called_class(), 'afterBuild'];
- // Add label_display and label variables to template.
- $element['label'] = ['#theme' => 'form_element_label'];
- $element['label'] += array_intersect_key(
- $element,
- array_flip(
- [
- '#id',
- '#required',
- '#title',
- '#title_display',
- ]
- )
- );
+ // Clear #description so the form_element wrapper does not render it
+ // (which would trigger Gin's help-icon toggle).
+ $element['#description'] = '';
+ $element['#description_display'] = 'after';
+
+ $no_empty_message = $element['#no_empty_message'] ?? '';
$element['textfield'] = [
'#disabled' => $element_disabled,
@@ -100,12 +94,11 @@
'aria-label' => $element['#title'] ?? '',
],
'#default_value' => '',
- '#description' => $element['#description'] ?? '',
];
// Add autocomplete deluxe container and class only if element is enabled.
if (!$element_disabled) {
- $element['textfield']['#prefix'] = '<div class="autocomplete-deluxe-container">';
+ $element['textfield']['#prefix'] = \Drupal\Core\Render\Markup::create('<div class="autocomplete-deluxe-container"' . (!empty($no_empty_message) ? ' data-placeholder="' . str_replace('"', '&quot;', $no_empty_message) . '"' : '') . '>');
$element['textfield']['#suffix'] = '</div>';
$element['textfield']['#attributes']['class'][] = 'autocomplete-deluxe-form';
}
@@ -144,7 +137,6 @@
'#default_value' => $default_value,
'#prefix' => '<div class="autocomplete-deluxe-value-container">',
'#suffix' => '</div>',
- '#description' => $element['#description'] ?? '',
];
$element['textfield']['#attributes']['style'] = ['display: none'];