diff --git a/core/modules/views/config/schema/views.filter.schema.yml b/core/modules/views/config/schema/views.filter.schema.yml index 3a97c25..964c46c 100644 --- a/core/modules/views/config/schema/views.filter.schema.yml +++ b/core/modules/views/config/schema/views.filter.schema.yml @@ -129,6 +129,13 @@ views.filter.group_item.numeric: value: type: views.filter_value.numeric +views.filter.group_item.date: + type: views_filter_group_item + label: 'Group items' + mapping: + value: + type: views.filter_value.date + # Schema for the views filter value. views.filter_value.boolean: diff --git a/core/modules/views/src/Plugin/views/filter/Date.php b/core/modules/views/src/Plugin/views/filter/Date.php index 7e5417f..1944e1f 100644 --- a/core/modules/views/src/Plugin/views/filter/Date.php +++ b/core/modules/views/src/Plugin/views/filter/Date.php @@ -136,7 +136,12 @@ public function acceptExposedInput($input) { } // Store this because it will get overwritten. - $type = $this->value['type']; + if ($this->isAGroup()) { + $type = $this->group_info['type']; + } + else { + $type = $this->value['type']; + } $rc = parent::acceptExposedInput($input); // Don't filter if value(s) are empty. diff --git a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php index 3366469..07dea00 100644 --- a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php +++ b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php @@ -988,10 +988,12 @@ protected function buildExposedFiltersGroupForm(&$form, FormStateInterface $form foreach (Element::children($row['value']) as $children) { $has_state = FALSE; $states = array(); - foreach ($row['value'][$children]['#states']['visible'] as $key => $state) { - if (isset($state[':input[name="options[operator]"]'])) { - $has_state = TRUE; - $states[$key] = $state[':input[name="options[operator]"]']['value']; + if (!empty($row['value'][$children]['#states']['visible'])) { + foreach ($row['value'][$children]['#states']['visible'] as $key => $state) { + if (isset($state[':input[name="options[operator]"]'])) { + $has_state = TRUE; + $states[$key] = $state[':input[name="options[operator]"]']['value']; + } } } if ($has_state) { @@ -1003,10 +1005,10 @@ protected function buildExposedFiltersGroupForm(&$form, FormStateInterface $form } $row['value'][$children]['#title'] = ''; + } - if (!empty($this->options['group_info']['group_items'][$item_id]['value'][$children])) { - $row['value'][$children]['#default_value'] = $this->options['group_info']['group_items'][$item_id]['value'][$children]; - } + if (!empty($this->options['group_info']['group_items'][$item_id]['value'][$children])) { + $row['value'][$children]['#default_value'] = $this->options['group_info']['group_items'][$item_id]['value'][$children]; } $without_children = FALSE; }