diff --git a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php index 335fd99..084a35a 100644 --- a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php +++ b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php @@ -1188,9 +1188,15 @@ protected function exposedTranslate(&$form, $type) { $this->prepareFilterSelectOptions($form['#options']); } + // For optional, single value select list filters, add an "Any" option. if ($type == 'value' && empty($this->always_required) && empty($this->options['expose']['required']) && $form['#type'] == 'select' && empty($form['#multiple'])) { $form['#options'] = ['All' => $this->t('- Any -')] + $form['#options']; - $form['#default_value'] = 'All'; + + // If no default value is set yet, make it the "Any" option. Specifically + // allow the '0' string or 0 integer as default values. + if (empty($form['#default_value']) && !(is_numeric($form['#default_value']) && (int) $form['#default_value'] === 0)) { + $form['#default_value'] = 'All'; + } } if (!empty($this->options['expose']['required'])) {