diff --git a/core/modules/views/css/views.exposed_form-rtl.css b/core/modules/views/css/views.exposed_form-rtl.css new file mode 100644 index 0000000..a63c7a0 --- /dev/null +++ b/core/modules/views/css/views.exposed_form-rtl.css @@ -0,0 +1,17 @@ +/** + * @file + * Right-to-Left styling for Views exposed forms. + */ +.views-exposed-form label { + float: right; +} + +.views-exposed-form .form-item { + clear: right; +} + +.views-exposed-form .views-exposed-widgets { + float: right; + margin-left: 1em; + margin-right: 0; +} diff --git a/core/modules/views/css/views.exposed_form.css b/core/modules/views/css/views.exposed_form.css new file mode 100644 index 0000000..544c471 --- /dev/null +++ b/core/modules/views/css/views.exposed_form.css @@ -0,0 +1,20 @@ +/** + * @file + * Styling for Views exposed forms. + */ +.views-exposed-form label { + float: left; /* LTR */ + font-weight: normal; + width: 10em; +} + +.views-exposed-form .form-item { + margin: 0 0 0.1em 0; + padding: 0; + clear: left; /* LTR */ +} + +.views-exposed-form .views-exposed-widgets { + float: left; /* LTR */ + margin-right: 1em; /* LTR */ +} diff --git a/core/modules/views/css/views.module.css b/core/modules/views/css/views.module.css index 7ca2f49..a29083c 100644 --- a/core/modules/views/css/views.module.css +++ b/core/modules/views/css/views.module.css @@ -1,13 +1,3 @@ -.views-exposed-form .views-exposed-widget { - display: inline-block; -} - -.views-exposed-form .form-item, -.views-exposed-form .form-submit { - margin-top: 0; - margin-bottom: 0; -} - /* table style column align */ .views-align-left { text-align: left; diff --git a/core/modules/views/templates/views-exposed-form.html.twig b/core/modules/views/templates/views-exposed-form.html.twig index 239b67d..24724c4 100644 --- a/core/modules/views/templates/views-exposed-form.html.twig +++ b/core/modules/views/templates/views-exposed-form.html.twig @@ -4,21 +4,7 @@ * Default theme implementation of a views exposed form. * * Available variables: - * - widgets: A list of exposed form widgets. Each widget contains: - * - label: The sanitized label of the widget. - * - id: The ID of the widget, if available. - * - operator: The select element for the operator widget. - * - description: The sanitized description of the widget. - * - widget: The widget itself. - * - index: the widget's row index. * - form: A render element representing the form. - * - sort_by: An optional select element to sort the view by fields. - * - sort_order: An optional select element with ascending or - * descending order options. - * - items_per_page: An optional select element for the available items per - * page. - * - offset: An optional textfield to define the offset of the view. - * - reset_button: An optional button to reset the exposed filter applied. * * @see template_preprocess() * @see template_preprocess_views_exposed_form() @@ -33,55 +19,10 @@ #} {{ q }} {% endif %} -
-
- {% for index, widget in widgets %} -
- {% if widget.label %} - - {% endif %} - {% if widget.operator %} -
- {{ widget.operator }} -
- {% endif %} -
- {{ widget.widget }} -
- {% if widget.description %} -
- {{ widget.description }} -
- {% endif %} -
- {% endfor %} - {% if form.sort_by %} -
- {{ form.sort_by }} -
-
- {{ form.sort_order }} -
- {% endif %} - {% if form.items_per_page %} -
- {{ form.items_per_page }} -
- {% endif %} - {% if form.offset %} -
- {{ form.offset }} -
- {% endif %} -
- {{ form }} -
- {% if form.reset_button %} -
- {{ form.reset_button }} -
- {% endif %} +
+
+ {% hide(form.submit) %} + {{ form }}
+ {{ form.submit }}
diff --git a/core/modules/views/views.module b/core/modules/views/views.module index 0bf5687..260dce2 100644 --- a/core/modules/views/views.module +++ b/core/modules/views/views.module @@ -827,6 +827,13 @@ function views_library_info() { array('system', 'drupal'), ), ); + $libraries['views.exposed-form'] = array( + 'title' => 'Views exposed form', + 'version' => VERSION, + 'css' => array( + "$path/css/views.exposed_form.css", + ), + ); return $libraries; } diff --git a/core/modules/views/views.theme.inc b/core/modules/views/views.theme.inc index 44403dd..66f33e2 100644 --- a/core/modules/views/views.theme.inc +++ b/core/modules/views/views.theme.inc @@ -1066,52 +1066,17 @@ function template_preprocess_views_view_row_rss(&$vars) { function template_preprocess_views_exposed_form(&$vars) { $form = &$vars['form']; - // Put all single checkboxes together in the last spot. - $checkboxes = array(); - if (!empty($form['q'])) { $vars['q'] = $form['q']; } - $vars['widgets'] = array(); - foreach ($form['#info'] as $id => $info) { - // Set aside checkboxes. - if (isset($form[$info['value']]['#type']) && $form[$info['value']]['#type'] == 'checkbox') { - $checkboxes[] = $form[$info['value']]; - continue; - } - $widget = new stdClass(); - // set up defaults so that there's always something there. - $widget->label = $widget->operator = $widget->widget = $widget->description = ''; - - $widget->id = isset($form[$info['value']]['#id']) ? $form[$info['value']]['#id'] : ''; + // Include basic theming for exposed forms. + $form['#attached']['library'][] = array('views', 'views.exposed-form'); + foreach ($form['#info'] as $id => $info) { if (!empty($info['label'])) { - $widget->label = check_plain($info['label']); - } - if (!empty($info['operator']) && isset($form[$info['operator']])) { - $widget->operator = $form[$info['operator']]; + $form[$info['value']]['#title'] = $info['label']; } - - $widget->widget = $form[$info['value']]; - - if (!empty($info['description'])) { - $widget->description = check_plain($info['description']); - } - - $vars['widgets'][$id] = $widget; - // Unset the widget, so that it doesn't get rendered twice. - unset($form[$info['value']]); - } - - // Wrap up all the checkboxes we set aside into a widget. - if (!empty($checkboxes)) { - $widget = new stdClass(); - // set up defaults so that there's always something there. - $widget->label = $widget->operator = $widget->widget = NULL; - $widget->id = 'checkboxes'; - $widget->widget = $checkboxes; - $vars['widgets']['checkboxes'] = $widget; } }