diff --git a/templates/input/form-element-label.html.twig b/templates/input/form-element-label.html.twig
index ff59587..d8ec357 100644
--- a/templates/input/form-element-label.html.twig
+++ b/templates/input/form-element-label.html.twig
@@ -25,7 +25,7 @@
title_display == 'invisible' and not (is_checkbox or is_radio) ? 'sr-only',
required ? 'js-form-required',
required ? 'form-required',
- required ? 'required'
+ required and not (is_checkbox or is_radio) ? 'required'
]
-%}
{% if title is not empty and title_display == 'invisible' and (is_checkbox or is_radio) -%}
diff --git a/templates/input/form-element.html.twig b/templates/input/form-element.html.twig
index 8e2cbd7..eb9917e 100644
--- a/templates/input/form-element.html.twig
+++ b/templates/input/form-element.html.twig
@@ -57,11 +57,12 @@
'js-form-item-' ~ name|clean_class,
title_display not in ['after', 'before'] ? 'form-no-label',
disabled == 'disabled' ? 'form-disabled',
- is_form_group ? 'form-group',
is_radio ? 'radio',
is_checkbox ? 'checkbox',
+ is_single_checkbox ? 'checkbox-standalone',
is_autocomplete ? 'form-autocomplete',
- has_error ? 'error has-error'
+ has_error ? 'error has-error',
+ required ? 'required',
]
%}{%
set description_classes = [
@@ -70,6 +71,11 @@
description_display == 'invisible' ? 'visually-hidden',
]
%}
+
+{% if is_form_group %}
+
+{% endif %}
+
{% if label_display in ['before', 'invisible'] %}
{{ label }}
@@ -99,3 +105,7 @@
{% endif %}
+
+{% if is_form_group %}
+
+{% endif %}
diff --git a/templates/system/fieldset.html.twig b/templates/system/fieldset.html.twig
new file mode 100644
index 0000000..c3dc235
--- /dev/null
+++ b/templates/system/fieldset.html.twig
@@ -0,0 +1,80 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a fieldset element and its children.
+ *
+ * Available variables:
+ * - attributes: HTML attributes for the