diff --git a/core/modules/views_ui/templates/views-ui-expose-filter-form.html.twig b/core/modules/views_ui/templates/views-ui-expose-filter-form.html.twig
new file mode 100644
index 0000000..c7e6da1
--- /dev/null
+++ b/core/modules/views_ui/templates/views-ui-expose-filter-form.html.twig
@@ -0,0 +1,67 @@
+{#
+/**
+ * @file
+ * Default theme implementation for exposed filter form.
+ *
+ * Available variables:
+ * - form_description: The exposed filter's description.
+ * - expose_button: The button to toggle the expose filter form.
+ * - group_button: Toggle options between single and grouped filters.
+ * - required: A checkbox to require this filter or not.
+ * - label: A filter label input field.
+ * - description: A filter description field.
+ * - operator: The operators for how the filters value should be treated.
+ * - value: The filters available values.
+ * - use_operator: Checkbox to allow the user to expose the operator.
+ * - #type: The operator type.
+ * - more: A details element for additional field exposed filter fields.
+ *
+ * @ingroup themeable
+ */
+#}
+{{ form.form_description }}
+{{ form.expose_button }}
+{{ form.group_button }}
+{{ form.required }}
+{{ form.label }}
+{{ form.description }}
+
+{{ form.operator }}
+{{ form.value }}
+
+{% if form.use_operator is not empty %}
+
+ {{ form.use_operator }}
+
+{% endif %}
+
+{#
+ Collect a list of elements printed to exclude when printing the
+ remaining elements.
+#}
+{% set remaining_form = form|without(
+ 'form_description',
+ 'expose_button',
+ 'group_button',
+ 'required',
+ 'label',
+ 'description',
+ 'operator',
+ 'value',
+ 'use_operator',
+ 'more'
+ )
+%}
+
+{#
+ Only output the right column markup if there's a left column to begin with.
+#}
+{% if form.operator['#type'] %}
+
+ {{ remaining_form }}
+
+{% else %}
+ {{ remaining_form }}
+{% endif %}
+
+{{ form.more }}
diff --git a/core/modules/views_ui/views_ui.module b/core/modules/views_ui/views_ui.module
index f27d515..1bec041 100644
--- a/core/modules/views_ui/views_ui.module
+++ b/core/modules/views_ui/views_ui.module
@@ -84,6 +84,7 @@ function views_ui_theme() {
'views_ui_expose_filter_form' => array(
'render element' => 'form',
'file' => 'views_ui.theme.inc',
+ 'template' => 'views-ui-expose-filter-form',
),
// list views
diff --git a/core/modules/views_ui/views_ui.theme.inc b/core/modules/views_ui/views_ui.theme.inc
index efa54d9..eb8c34f 100644
--- a/core/modules/views_ui/views_ui.theme.inc
+++ b/core/modules/views_ui/views_ui.theme.inc
@@ -105,46 +105,6 @@ function template_preprocess_views_ui_view_info(&$variables) {
}
/**
- * Theme the expose filter form.
- */
-function theme_views_ui_expose_filter_form($variables) {
- $form = $variables['form'];
- $more = drupal_render($form['more']);
-
- $output = drupal_render($form['form_description']);
- $output .= drupal_render($form['expose_button']);
- $output .= drupal_render($form['group_button']);
- if (isset($form['required'])) {
- $output .= drupal_render($form['required']);
- }
- $output .= drupal_render($form['label']);
- $output .= drupal_render($form['description']);
-
- $output .= drupal_render($form['operator']);
- $output .= drupal_render($form['value']);
-
- if (isset($form['use_operator'])) {
- $output .= '';
- $output .= drupal_render($form['use_operator']);
- $output .= '
';
- }
-
- // Only output the right column markup if there's a left column to begin with
- if (!empty($form['operator']['#type'])) {
- $output .= '';
- $output .= drupal_render_children($form);
- $output .= '
';
- }
- else {
- $output .= drupal_render_children($form);
- }
-
- $output .= $more;
-
- return $output;
-}
-
-/**
* Theme the build group filter form.
*/
function theme_views_ui_build_group_filter_form($variables) {