82 lines
3.0 KiB
Diff
82 lines
3.0 KiB
Diff
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('"', '"', $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'];
|
|
|