diff --git a/composer.json b/composer.json
index e1a200c8aa46270c66a9add19dc80e9cd6a82e6b..f0b2f7e95d8c06437251fc20e341cfcae313d721 100644
--- a/composer.json
+++ b/composer.json
@@ -91,7 +91,7 @@
         "drupal/administerusersbyrole": "3.0",
         "drupal/allowed_formats": "1.3",
         "drupal/anchor_link": "1.7",
-        "drupal/better_exposed_filters": "5.0-beta1",
+        "drupal/better_exposed_filters": "5.0-beta2",
         "drupal/block_field": "1.0.0-rc1",
         "drupal/block_permissions": "1.2",
         "drupal/block_region_permissions": "1.4",
diff --git a/composer.lock b/composer.lock
index a48debceca45c3d80dfd663ca9dbdbd9bc39da62..6dd2e6af660dfdc0b45d13e6686f167e2438330e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "4769f121a35bbe822b91a30abb372c25",
+    "content-hash": "f2a6ef914a574f2e3ed55407faceac1c",
     "packages": [
         {
             "name": "alchemy/zippy",
@@ -1936,17 +1936,17 @@
         },
         {
             "name": "drupal/better_exposed_filters",
-            "version": "5.0.0-beta1",
+            "version": "5.0.0-beta2",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/better_exposed_filters.git",
-                "reference": "8.x-5.0-beta1"
+                "reference": "8.x-5.0-beta2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/better_exposed_filters-8.x-5.0-beta1.zip",
-                "reference": "8.x-5.0-beta1",
-                "shasum": "bc5ce873fa699ee584fdeb2fd28ad6c5cb456b03"
+                "url": "https://ftp.drupal.org/files/projects/better_exposed_filters-8.x-5.0-beta2.zip",
+                "reference": "8.x-5.0-beta2",
+                "shasum": "3899191ee3fa383abe0162cc6701ddba86bae252"
             },
             "require": {
                 "drupal/core": "^8.8 || ^9",
@@ -1958,8 +1958,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "8.x-5.0-beta1",
-                    "datestamp": "1624553088",
+                    "version": "8.x-5.0-beta2",
+                    "datestamp": "1624554686",
                     "security-coverage": {
                         "status": "not-covered",
                         "message": "Beta releases are not covered by Drupal security advisories."
@@ -1968,7 +1968,7 @@
             },
             "notification-url": "https://packages.drupal.org/8/downloads",
             "license": [
-                "GPL-2.0+"
+                "GPL-2.0-or-later"
             ],
             "authors": [
                 {
@@ -1980,8 +1980,8 @@
                     "homepage": "https://www.drupal.org/u/etroid"
                 },
                 {
-                    "name": "chr.fritsch",
-                    "homepage": "https://www.drupal.org/user/2103716"
+                    "name": "Neslee Canil Pinto",
+                    "homepage": "https://www.drupal.org/u/neslee-canil-pinto"
                 },
                 {
                     "name": "jkopel",
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
index a2e9ffe52b4ab2b40e19778a5363e62026ab95da..0534046ac78d7870a56e213a2425c7348ad78e92 100644
--- a/vendor/composer/InstalledVersions.php
+++ b/vendor/composer/InstalledVersions.php
@@ -30,7 +30,7 @@ class InstalledVersions
     'aliases' => 
     array (
     ),
-    'reference' => 'ccf8add7cba58c07d804fe59bdd5aed97698ea68',
+    'reference' => 'a89ed315c5f4d36ea9513b4dfeef27d25a4975ea',
     'name' => 'osu-asc-webservices/d8-upstream',
   ),
   'versions' => 
@@ -383,12 +383,12 @@ class InstalledVersions
     ),
     'drupal/better_exposed_filters' => 
     array (
-      'pretty_version' => '5.0.0-beta1',
-      'version' => '5.0.0.0-beta1',
+      'pretty_version' => '5.0.0-beta2',
+      'version' => '5.0.0.0-beta2',
       'aliases' => 
       array (
       ),
-      'reference' => '8.x-5.0-beta1',
+      'reference' => '8.x-5.0-beta2',
     ),
     'drupal/big_pipe' => 
     array (
@@ -2226,7 +2226,7 @@ class InstalledVersions
       'aliases' => 
       array (
       ),
-      'reference' => 'ccf8add7cba58c07d804fe59bdd5aed97698ea68',
+      'reference' => 'a89ed315c5f4d36ea9513b4dfeef27d25a4975ea',
     ),
     'pantheon-systems/quicksilver-pushback' => 
     array (
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 562fed260fcdeb862150619798d6e7aa66b26882..9855477e4abfbb462f53d28be2582b474c46aa51 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1988,18 +1988,18 @@
         },
         {
             "name": "drupal/better_exposed_filters",
-            "version": "5.0.0-beta1",
-            "version_normalized": "5.0.0.0-beta1",
+            "version": "5.0.0-beta2",
+            "version_normalized": "5.0.0.0-beta2",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/better_exposed_filters.git",
-                "reference": "8.x-5.0-beta1"
+                "reference": "8.x-5.0-beta2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/better_exposed_filters-8.x-5.0-beta1.zip",
-                "reference": "8.x-5.0-beta1",
-                "shasum": "bc5ce873fa699ee584fdeb2fd28ad6c5cb456b03"
+                "url": "https://ftp.drupal.org/files/projects/better_exposed_filters-8.x-5.0-beta2.zip",
+                "reference": "8.x-5.0-beta2",
+                "shasum": "3899191ee3fa383abe0162cc6701ddba86bae252"
             },
             "require": {
                 "drupal/core": "^8.8 || ^9",
@@ -2011,8 +2011,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "8.x-5.0-beta1",
-                    "datestamp": "1594141892",
+                    "version": "8.x-5.0-beta2",
+                    "datestamp": "1624554686",
                     "security-coverage": {
                         "status": "not-covered",
                         "message": "Beta releases are not covered by Drupal security advisories."
@@ -2022,7 +2022,7 @@
             "installation-source": "dist",
             "notification-url": "https://packages.drupal.org/8/downloads",
             "license": [
-                "GPL-2.0+"
+                "GPL-2.0-or-later"
             ],
             "authors": [
                 {
@@ -2034,8 +2034,8 @@
                     "homepage": "https://www.drupal.org/u/etroid"
                 },
                 {
-                    "name": "chr.fritsch",
-                    "homepage": "https://www.drupal.org/user/2103716"
+                    "name": "Neslee Canil Pinto",
+                    "homepage": "https://www.drupal.org/u/neslee-canil-pinto"
                 },
                 {
                     "name": "jkopel",
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index f75868ed00396505d5d8934eae84a8b2978ffb0e..f6678a4ac344981e8cd17033964b6f2924d40da2 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -6,7 +6,7 @@
     'aliases' => 
     array (
     ),
-    'reference' => 'ccf8add7cba58c07d804fe59bdd5aed97698ea68',
+    'reference' => 'a89ed315c5f4d36ea9513b4dfeef27d25a4975ea',
     'name' => 'osu-asc-webservices/d8-upstream',
   ),
   'versions' => 
@@ -359,12 +359,12 @@
     ),
     'drupal/better_exposed_filters' => 
     array (
-      'pretty_version' => '5.0.0-beta1',
-      'version' => '5.0.0.0-beta1',
+      'pretty_version' => '5.0.0-beta2',
+      'version' => '5.0.0.0-beta2',
       'aliases' => 
       array (
       ),
-      'reference' => '8.x-5.0-beta1',
+      'reference' => '8.x-5.0-beta2',
     ),
     'drupal/big_pipe' => 
     array (
@@ -2202,7 +2202,7 @@
       'aliases' => 
       array (
       ),
-      'reference' => 'ccf8add7cba58c07d804fe59bdd5aed97698ea68',
+      'reference' => 'a89ed315c5f4d36ea9513b4dfeef27d25a4975ea',
     ),
     'pantheon-systems/quicksilver-pushback' => 
     array (
diff --git a/web/modules/better_exposed_filters/README.txt b/web/modules/better_exposed_filters/README.txt
index 88d7e139797ffe9449e16231ac4c82a73eed8b59..4a7cee4b07de184ce61db2c2b472d30df2329283 100644
--- a/web/modules/better_exposed_filters/README.txt
+++ b/web/modules/better_exposed_filters/README.txt
@@ -1,5 +1,15 @@
--- SUMMARY --
+CONTENTS OF THIS FILE
+---------------------
 
+ * Introduction
+ * Requirements
+ * Installation
+ * Configuration
+ * Maintainers
+
+
+INTRODUCTION
+------------
 The Better Exposed Filters module replaces the Views' default single-  or
 multi-select boxes with more advanced options such as radio buttons, checkboxes,
 toggle links or jQueryUI widgets.
@@ -19,16 +29,26 @@ Documentation:
 To submit bug reports and feature suggestions, or to track changes:
   https://drupal.org/project/issues/better_exposed_filters
 
--- INSTALLATION --
 
-Install as usual, see http://drupal.org/node/70151 for further instructions.
+REQUIREMENTS
+------------
+This module requires jquery_ui, jquery_ui_slider, jquery_ui_touch_punch,
+jquery_ui_datepicker and drupal core views.
+
+
+INSTALLATION
+------------
+Install as you would normally install a contributed Drupal module.
+Visit https://www.drupal.org/node/1897420 for further information.
 
--- CONFIGURATION --
 
+CONFIGURATION
+-------------
 See the documentation on Drupal.org.
 
--- CONTACT --
 
-The maintainer for this project is Mike Keran (https://www.drupal.org/u/mikeker)
-He can be contacted through his personal web site (http://MikeKeran.com) for
-work on this module or other custom projects.
+MAINTAINERS
+-----------
+ * Mike Keran - https://www.drupal.org/u/mikeker
+ * Martin Keereman - https://www.drupal.org/u/etroid
+ * Neslee Canil Pinto - https://www.drupal.org/u/neslee-canil-pinto
diff --git a/web/modules/better_exposed_filters/better_exposed_filters.info.yml b/web/modules/better_exposed_filters/better_exposed_filters.info.yml
index f3cb90cb9aac9d595b019f49bbdd53b76dfe1a64..d18294a3e861b0c76341abea4f735c92e10e8653 100644
--- a/web/modules/better_exposed_filters/better_exposed_filters.info.yml
+++ b/web/modules/better_exposed_filters/better_exposed_filters.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - jquery_ui_touch_punch:jquery_ui_touch_punch
   - jquery_ui_datepicker:jquery_ui_datepicker
 
-# Information added by Drupal.org packaging script on 2020-07-07
-version: '8.x-5.0-beta1'
+# Information added by Drupal.org packaging script on 2021-06-24
+version: '8.x-5.0-beta2'
 project: 'better_exposed_filters'
-datestamp: 1594141894
+datestamp: 1624554649
diff --git a/web/modules/better_exposed_filters/better_exposed_filters.install b/web/modules/better_exposed_filters/better_exposed_filters.install
index b3fa54ad906ec03e9239e3d467e64db1acae2a8f..4dede0b9c2915189e98b007f1e4ebffcc88c7f4e 100644
--- a/web/modules/better_exposed_filters/better_exposed_filters.install
+++ b/web/modules/better_exposed_filters/better_exposed_filters.install
@@ -91,7 +91,12 @@ function better_exposed_filters_update_8001() {
               }
 
               // Sliders.
-              if ($option['bef_format'] === 'bef_sliders') {
+              if ($option['bef_format'] === 'bef_slider') {
+                // Update plugin name to 'bef_sliders'.
+                $bef_settings['filter'][$field_name] = [
+                  'plugin_id' => 'bef_sliders',
+                ];
+
                 // Animate option is now split into two separate options.
                 $animate = $option['slider_options']['bef_slider_animate'];
                 $animate_ms = 0;
@@ -136,3 +141,62 @@ function better_exposed_filters_update_8001() {
     $config->save(TRUE);
   }
 }
+
+/**
+ * Renames bef_slider plugin to bef_sliders to be compatible with 8.x-4.x.
+ */
+function better_exposed_filters_update_8002() {
+  $config_factory = \Drupal::configFactory();
+  foreach ($config_factory->listAll('views.view.') as $config_name) {
+    $config = $config_factory->getEditable($config_name);
+
+    // Go through each display on each view.
+    $displays = $config->get('display');
+    foreach ($displays as $display_name => $display) {
+      if (!empty($display['display_options']['exposed_form'])) {
+        $exposed_form = $display['display_options']['exposed_form'];
+        // Find BEF exposed forms.
+        if (isset($exposed_form['type']) && $exposed_form['type'] === 'bef') {
+          $bef_settings = [];
+          foreach ($exposed_form['options']['bef'] as $type => $option) {
+            if ($type === 'filter') {
+              $field_name = $type;
+              // Sliders.
+              if ($option['bef_format'] === 'bef_slider') {
+                // Update plugin name to 'bef_sliders'.
+                $bef_settings['filter'][$field_name] = [
+                  'plugin_id' => 'bef_sliders',
+                ];
+
+                // Animate option is now split into two separate options.
+                $animate = $option['slider_options']['bef_slider_animate'];
+                $animate_ms = 0;
+                if (empty($animate)) {
+                  $animate = 'none';
+                }
+                elseif (is_int($animate)) {
+                  $animate = 'custom';
+                  $animate_ms = $animate;
+                }
+
+                $bef_settings['filter'][$field_name] = array_merge($bef_settings['filter'][$field_name], [
+                  'min' => $option['slider_options']['bef_slider_min'] ?? 0,
+                  'max' => $option['slider_options']['bef_slider_max'] ?? 99999,
+                  'step' => $option['slider_options']['bef_slider_step'] ?? 1,
+                  'animate' => $animate,
+                  'animate_ms' => $animate_ms,
+                  'orientation' => $option['slider_options']['bef_slider_orientation'] ?? 'horizontal',
+                ]);
+              }
+            }
+          }
+
+          // Update BEF settings.
+          $config->set("display.$display_name.display_options.exposed_form.options.bef", $bef_settings);
+        }
+      }
+    }
+
+    $config->save(TRUE);
+  }
+}
diff --git a/web/modules/better_exposed_filters/better_exposed_filters.module b/web/modules/better_exposed_filters/better_exposed_filters.module
index 7980f0fefee4e560ab952a945570d2cc18e8c49f..5b1f6e62fd244abf7aabef8b1bcca63ae581cc82 100644
--- a/web/modules/better_exposed_filters/better_exposed_filters.module
+++ b/web/modules/better_exposed_filters/better_exposed_filters.module
@@ -25,7 +25,13 @@ function better_exposed_filters_help($route_name, RouteMatchInterface $route_mat
       $output .= '<p>' . t('Better Exposed Filters (BEF) modifies the use of Views by replacing the \'single\'  or \'multi\' <em>select boxes</em> with <em>radio buttons or checkboxes</em>. Views offers the ability to expose filters to the end user. When you expose a filter, you allow the user to interact with the view making it easy to build an advanced search.  Better Exposed Filters gives you greater control over the rendering of exposed filters. For more information, see the <a href=":online">online documentation for the Better Exposed Filters module</a>.', [':online' => 'https://www.drupal.org/node/766974']) . '</p>';
       $output .= '<h3>' . t('Uses') . '</h3>';
       $output .= '<dt>' . t('Editing or Creating Views') . '</dt>';
-      $output .= '<dd>' . t('Better Exposed Filters is used on <a href=":views">Views</a> that use an exposed filter.  Views filters are used to reduce the result set of a View to a manageable amount of data. BEF only operates on fields that have a limited number of options such as <a href=":node">Node</a>:Type or <a href=":taxonomy">Taxonomy</a>:TermID.', [':views' => Url::fromRoute('help.page', ['name' => 'views'])->toString(), ':node' => Url::fromRoute('help.page', ['name' => 'node'])->toString(), ':taxonomy' => (\Drupal::moduleHandler()->moduleExists('taxonomy')) ? Url::fromRoute('help.page', ['name' => 'taxonomy'])->toString() : '#']) . '</dd>';
+      $output .= '<dd>' . t('Better Exposed Filters is used on <a href=":views">Views</a> that use an exposed filter.  Views filters are used to reduce the result set of a View to a manageable amount of data. BEF only operates on fields that have a limited number of options such as <a href=":node">Node</a>:Type or <a href=":taxonomy">Taxonomy</a>:TermID.',
+          [
+            ':views' => Url::fromRoute('help.page',
+              ['name' => 'views'])->toString(), ':node' => Url::fromRoute('help.page',
+            ['name' => 'node'])->toString(), ':taxonomy' => (\Drupal::moduleHandler()->moduleExists('taxonomy')) ? Url::fromRoute('help.page',
+            ['name' => 'taxonomy'])->toString() : '#',
+          ]) . '</dd>';
       $output .= '<dt>' . t('Styling Better Exposed Filters') . '</dt>';
       $output .= '<dd>' . t('BEF provides some additional HTML structure to help you style your exposed filters. For some common examples see the <a href=":doco">online documentation</a>.', [':doco' => 'https://www.drupal.org/node/766974']) . '</dd>';
       return $output;
diff --git a/web/modules/better_exposed_filters/composer.json b/web/modules/better_exposed_filters/composer.json
index e568c7e3ef583e6179dd0e9a8e037f5671c62a15..ecb7f759601258b94bc64f9680f7f801c1d002e3 100644
--- a/web/modules/better_exposed_filters/composer.json
+++ b/web/modules/better_exposed_filters/composer.json
@@ -11,13 +11,17 @@
     {
       "name": "Martin Keereman",
       "homepage": "https://www.drupal.org/u/etroid"
+    },
+    {
+      "name": "Neslee Canil Pinto",
+      "homepage": "https://www.drupal.org/u/neslee-canil-pinto"
     }
   ],
   "support": {
     "issues": "https://www.drupal.org/project/issues/better_exposed_filters",
     "source": "https://git.drupalcode.org/project/better_exposed_filters"
   },
-  "license": "GPL-2.0+",
+  "license": "GPL-2.0-or-later",
   "repositories": [
     {
       "type": "composer",
diff --git a/web/modules/better_exposed_filters/config/schema/better_exposed_filters.exposed_form.schema.yml b/web/modules/better_exposed_filters/config/schema/better_exposed_filters.exposed_form.schema.yml
index 2b24fdabb0236a711ce9eb390c8354c9864a2e1c..55bcead7deaee11338961e583a347209f5088ee0 100644
--- a/web/modules/better_exposed_filters/config/schema/better_exposed_filters.exposed_form.schema.yml
+++ b/web/modules/better_exposed_filters/config/schema/better_exposed_filters.exposed_form.schema.yml
@@ -63,3 +63,9 @@ better_exposed_filters.general:
     secondary_open:
       type: boolean
       label: 'Secondary options is open'
+    text_input_required:
+      type: text
+      label: 'Text shown if a filter option has not been selected'
+    text_input_required_format:
+      type: text
+      label: 'Text format for the text_input_required field'
diff --git a/web/modules/better_exposed_filters/config/schema/better_exposed_filters.filter.schema.yml b/web/modules/better_exposed_filters/config/schema/better_exposed_filters.filter.schema.yml
index dca60c0254b008c99f121a74b066661c5980c0c4..6561984059d81d7b0b712e2a1854811a4473680f 100644
--- a/web/modules/better_exposed_filters/config/schema/better_exposed_filters.filter.schema.yml
+++ b/web/modules/better_exposed_filters/config/schema/better_exposed_filters.filter.schema.yml
@@ -49,6 +49,9 @@ better_exposed_filters.filter.bef:
     select_all_none_nested:
       type: boolean
       label: 'Add select all/none links to hierarchical lists'
+    display_inline:
+      type: boolean
+      label: 'Display checkbox/radio options inline'
 
 better_exposed_filters.filter.bef_links:
   label: 'Links'
diff --git a/web/modules/better_exposed_filters/includes/better_exposed_filters.theme.inc b/web/modules/better_exposed_filters/includes/better_exposed_filters.theme.inc
index aaa1e096beb1da2fd959b8dfdcdd7fc28f19d7eb..8a8dffadd696ca9e0dde2502dfb35b40622dc141 100644
--- a/web/modules/better_exposed_filters/includes/better_exposed_filters.theme.inc
+++ b/web/modules/better_exposed_filters/includes/better_exposed_filters.theme.inc
@@ -75,7 +75,7 @@ function better_exposed_filters_preprocess_views_exposed_form(array &$variables)
 
 /******************************************************************************
  * Preprocess functions for BEF themed elements.
- ******************************************************************************/
+ */
 
 /**
  * Prepares variables for bef-checkboxes template.
@@ -159,15 +159,15 @@ function template_preprocess_bef_hidden(array &$variables) {
     ];
   }
 
-  // @todo:
+  // @todo
   // Check for optgroups.  Put subelements in the $element_set array and add a
   // group heading. Otherwise, just add the element to the set.
   // $element_set = array();
   // if (is_array($elem)) {
-  //  $element_set = $elem;
+  // $element_set = $elem;
   // }
   // else {
-  //  $element_set[$option] = $elem;
+  // $element_set[$option] = $elem;
   // }
 }
 
@@ -215,7 +215,7 @@ function template_preprocess_bef_links(array &$variables) {
     // with the entire options array and remove items from it as needed.
     $urlOptions = $url->getOptions();
 
-    if ($element['#multiple']) {
+    if (isset($element['#multiple']) && $element['#multiple']) {
       $newQuery = isset($existing_query[$name]) ? $existing_query[$name] : [];
       if (in_array($optionValue, $selectedValues)) {
         // Allow users to toggle an option using the same link.
@@ -234,7 +234,7 @@ function template_preprocess_bef_links(array &$variables) {
       }
     }
     else {
-      if ($optionValue == $element['#value']) {
+      if (strval($optionValue) === $element['#value']) {
         // Allow toggle link functionality -- click the same link to turn an
         // option on or off.
         $newQuery = $existing_query;
@@ -270,7 +270,10 @@ function template_preprocess_bef_links(array &$variables) {
       '#url' => $url,
     ];
 
-    if (in_array($optionValue, $selectedValues)) {
+    /*
+     * @see https://stackoverflow.com/questions/13846769/php-in-array-0-value
+     */
+    if (in_array(strval($optionValue), $selectedValues)) {
       $variables['links'][$optionValue]['#attributes']['class'][] = 'bef-link--selected';
     }
   }
@@ -286,7 +289,7 @@ function template_preprocess_bef_links(array &$variables) {
 
 /******************************************************************************
  * Utility functions for BEF themed elements.
- ******************************************************************************/
+ */
 
 /**
  * Internal function to handled nested form elements.
diff --git a/web/modules/better_exposed_filters/js/auto_submit.js b/web/modules/better_exposed_filters/js/auto_submit.js
index f4cf09f3ca0adc988d5448228513d75417e9763b..431e3780c899ea1c3e1d931e6652830b4a6f9d4c 100644
--- a/web/modules/better_exposed_filters/js/auto_submit.js
+++ b/web/modules/better_exposed_filters/js/auto_submit.js
@@ -100,7 +100,7 @@
         var $submit = $target.closest('form').find('[data-bef-auto-submit-click]');
 
         // Don't submit on changes to excluded elements or a submit element.
-        if ($target.is('[data-bef-auto-submit-exclude], :submit')) {
+        if ($target.is('[data-bef-auto-submit-exclude], :submit') || $target.attr('autocomplete') == 'off') {
           return true;
         }
 
diff --git a/web/modules/better_exposed_filters/js/bef_sliders.js b/web/modules/better_exposed_filters/js/bef_sliders.js
index 33dfdec706a209c437ecf440b936cc8bc768e594..8f857ca6416532a338ce6ee266c2e788a92c740c 100644
--- a/web/modules/better_exposed_filters/js/bef_sliders.js
+++ b/web/modules/better_exposed_filters/js/bef_sliders.js
@@ -99,7 +99,7 @@
               // Attach stop listeners.
               stop: function (event, ui) {
                 // Click the auto submit button.
-                $(this).parents('form').find('.ctools-auto-submit-click').click();
+                $(this).parents('form').find('[data-bef-auto-submit-click]').click();
               }
             });
 
diff --git a/web/modules/better_exposed_filters/src/BetterExposedFiltersHelper.php b/web/modules/better_exposed_filters/src/BetterExposedFiltersHelper.php
index 048a5c656066f208f356c2ca12af93fbd3e97975..178e88b13d4632a6e7e06afa8f0cbc2ccd0a5de1 100644
--- a/web/modules/better_exposed_filters/src/BetterExposedFiltersHelper.php
+++ b/web/modules/better_exposed_filters/src/BetterExposedFiltersHelper.php
@@ -79,6 +79,9 @@ public static function rewriteOptions(array $options, $rewrite_settings, $reorde
         $key = key($choice->option);
         $value = &$choice->option[$key];
       }
+      elseif (is_array($choice) && array_key_exists('name', $choice)) {
+        $value = &$choice['name'];
+      }
       else {
         $choice = (string) $choice;
         $value = &$choice;
diff --git a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/DatePickers.php b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/DatePickers.php
index 7633a73f260193d810d9753bde69a4667317735b..ccd8f41f651ba1030860409e3f485f63ce10ba7b 100644
--- a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/DatePickers.php
+++ b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/DatePickers.php
@@ -52,16 +52,23 @@ public function exposedFormAlter(array &$form, FormStateInterface $form_state) {
       && 'date_text' == $form[$field_id]['min']['#type']
       && 'date_text' == $form[$field_id]['max']['#type'];
 
+    // @todo lots of repetition of code. Let's re-organize and clean up.
     if ($is_single_date || $is_double_date) {
       if (isset($form[$field_id]['value'])) {
         $format = $form[$field_id]['value']['#date_format'];
         $form[$field_id]['value']['#attributes']['class'][] = 'bef-datepicker';
+        $form[$field_id]['value']['#attributes']['type'] = 'date';
+        $form[$field_id]['value']['#attributes']['autocomplete'] = 'off';
       }
       else {
         // Both min and max share the same format.
         $format = $form[$field_id]['min']['#date_format'];
         $form[$field_id]['min']['#attributes']['class'][] = 'bef-datepicker';
         $form[$field_id]['max']['#attributes']['class'][] = 'bef-datepicker';
+        $form[$field_id]['min']['#attributes']['type'] = 'date';
+        $form[$field_id]['max']['#attributes']['type'] = 'date';
+        $form[$field_id]['min']['#attributes']['autocomplete'] = 'off';
+        $form[$field_id]['max']['#attributes']['autocomplete'] = 'off';
       }
 
       // Convert Date API format to jQuery UI date format.
@@ -77,14 +84,19 @@ public function exposedFormAlter(array &$form, FormStateInterface $form_state) {
        */
       $fields = ['min', 'max', 'value'];
       if (count(array_intersect($fields, array_keys($form[$field_id])))) {
+        $form[$field_id]['#type'] = 'container';
         foreach ($fields as $field) {
           if (isset($form[$field_id][$field])) {
             $form[$field_id][$field]['#attributes']['class'][] = 'bef-datepicker';
+            $form[$field_id][$field]['#attributes']['type'] = 'date';
+            $form[$field_id][$field]['#attributes']['autocomplete'] = 'off';
           }
         }
       }
       else {
         $form[$field_id]['#attributes']['class'][] = 'bef-datepicker';
+        $form[$field_id]['#attributes']['type'] = 'date';
+        $form[$field_id]['#attributes']['autocomplete'] = 'off';
       }
     }
   }
@@ -92,7 +104,7 @@ public function exposedFormAlter(array &$form, FormStateInterface $form_state) {
   /**
    * Convert Date API formatting to jQuery formatDate formatting.
    *
-   * @TODO: To be honest, I'm not sure this is needed.  Can you set a
+   * @todo To be honest, I'm not sure this is needed.  Can you set a
    * Date API field to accept anything other than Y-m-d? Well, better
    * safe than sorry...
    *
diff --git a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/DefaultWidget.php b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/DefaultWidget.php
index 2a5ec2a7b3259d84fc214f1f66e95babe4dcea6c..7c23f7c18659cd42e830332b5ee6c302e89bb8db 100644
--- a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/DefaultWidget.php
+++ b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/DefaultWidget.php
@@ -2,8 +2,6 @@
 
 namespace Drupal\better_exposed_filters\Plugin\better_exposed_filters\filter;
 
-use Drupal\Core\Form\FormStateInterface;
-
 /**
  * Default widget implementation.
  *
diff --git a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/FilterWidgetBase.php b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/FilterWidgetBase.php
index 460532e5e890bc52665bfa4d914d27fc885e00bb..6f21a9a0b2473cb9abba77707000a2206a444648 100644
--- a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/FilterWidgetBase.php
+++ b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/FilterWidgetBase.php
@@ -31,7 +31,7 @@ public static function isApplicable($filter = NULL, array $filter_options = [])
     }
 
     // Check various filter types and determine what options are available.
-    if (is_a($filter, 'Drupal\views\Plugin\views\filter\String') || is_a($filter, 'Drupal\views\Plugin\views\filter\InOperator')) {
+    if (is_a($filter, 'Drupal\views\Plugin\views\filter\StringFilter') || is_a($filter, 'Drupal\views\Plugin\views\filter\InOperator')) {
       if (in_array($filter->operator, ['in', 'or', 'and', 'not'])) {
         $is_applicable = TRUE;
       }
@@ -57,6 +57,10 @@ public static function isApplicable($filter = NULL, array $filter_options = [])
       $is_applicable = TRUE;
     }
 
+    if (is_a($filter, 'Drupal\search_api\Plugin\views\filter\SearchApiFulltext')) {
+      $is_applicable = TRUE;
+    }
+
     return $is_applicable;
   }
 
@@ -109,14 +113,14 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
         '#type' => 'textfield',
         '#title' => $this->t('Placeholder text'),
         '#description' => $this->t('Text to be shown in the text field until it is edited. Leave blank for no placeholder to be set.'),
-        '#default_value' => $this->configuration['advanced']['placeholder_text'],
+        '#default_value' => $this->t($this->configuration['advanced']['placeholder_text']),
       ];
     }
 
     // Allow rewriting of filter options for any filter. String and numeric
     // filters allow unlimited filter options via textfields, so we can't
     // offer rewriting for those.
-    // @TODO: check other core filter types
+    // @todo check other core filter types
     if ((!$filter instanceof StringFilter && !$filter instanceof NumericFilter) || $filter->isAGroup()) {
       $form['advanced']['rewrite']['filter_rewrite_values'] = [
         '#type' => 'textarea',
@@ -177,15 +181,17 @@ public function exposedFormAlter(array &$form, FormStateInterface $form_state) {
 
     // Check for placeholder text.
     if (!empty($this->configuration['advanced']['placeholder_text'])) {
-      // @todo: Add token replacement for placeholder text.
-      $form[$field_id]['#placeholder'] = $this->configuration['advanced']['placeholder_text'];
+      // @todo Add token replacement for placeholder text.
+      $form[$field_id]['#placeholder'] = $this->t($this->configuration['advanced']['placeholder_text']);
     }
 
     // Handle filter value rewrites.
     if ($this->configuration['advanced']['rewrite']['filter_rewrite_values']) {
-      $form[$field_id]['#options'] = BetterExposedFiltersHelper::rewriteOptions($form[$field_id]['#options'], $this->configuration['advanced']['rewrite']['filter_rewrite_values']);
+      // Reorder options based on rewrite values, if sort options is disabled.
+      $form[$field_id]['#options'] = BetterExposedFiltersHelper::rewriteOptions($form[$field_id]['#options'], $this->configuration['advanced']['rewrite']['filter_rewrite_values'], !$this->configuration['advanced']['sort_options']);
       // @todo what is $selected?
-      // if (isset($selected) && !isset($form[$field_id]['#options'][$selected])) {
+      // if (isset($selected) &&
+      // !isset($form[$field_id]['#options'][$selected])) {
       // Avoid "Illegal choice" errors.
       // $form[$field_id]['#default_value'] = NULL;
       // }
@@ -208,11 +214,12 @@ public function exposedFormAlter(array &$form, FormStateInterface $form_state) {
       $form[$field_id . '_collapsible'] = [
         '#type' => 'details',
         '#title' => $exposed_label,
+        '#description' => $exposed_description,
       ];
 
       if ($is_secondary) {
         // Move secondary elements.
-        $form[$field_id . '_collapsible']['#group'] = 'secondary';
+        $this->addElementToGroup($form, $form_state, $field_id . '_collapsible', 'secondary');
       }
     }
 
@@ -323,6 +330,7 @@ protected function getExposedFilterWidgetType() {
     $form_state->set('exposed', TRUE);
     /** @var \Drupal\views\Plugin\views\filter\FilterPluginBase $filter */
     $filter = $this->handler;
+    $filter->buildExposedForm($form, $form_state);
     $filter_id = $filter->options['expose']['identifier'];
 
     return $form[$filter_id]['#type'] ?? $form[$filter_id]['value']['#type'] ?? '';
diff --git a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/Hidden.php b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/Hidden.php
index 892c933fc3d4c13c677105a2c85c1d329425fd72..df55b998e22fb06cf333173a9a0cd82bae8852a6 100644
--- a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/Hidden.php
+++ b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/Hidden.php
@@ -37,4 +37,17 @@ public function exposedFormAlter(array &$form, FormStateInterface $form_state) {
     }
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function isApplicable($filter = NULL, array $filter_options = []) {
+    $is_applicable = parent::isApplicable($filter, $filter_options);
+
+    if ((is_a($filter, 'Drupal\views\Plugin\views\filter\Date') || !empty($filter->date_handler)) && !$filter->isAGroup()) {
+      $is_applicable = TRUE;
+    }
+
+    return $is_applicable;
+  }
+
 }
diff --git a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/Sliders.php b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/Sliders.php
index fbf0455c9b0581557f653bdcba0cab625bd43262..a6935c3aef920700d1c201bbcf87b0359129334a 100644
--- a/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/Sliders.php
+++ b/web/modules/better_exposed_filters/src/Plugin/better_exposed_filters/filter/Sliders.php
@@ -68,14 +68,19 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
 
     $form = parent::buildConfigurationForm($form, $form_state);
 
-    $form['min'] = [
+    $form['wrapper'] = [
+      '#type' => 'container',
+      '#attributes' => ['class' => ['']],
+    ];
+
+    $form['wrapper']['min'] = [
       '#type' => 'number',
       '#title' => $this->t('Range minimum'),
       '#default_value' => $this->configuration['min'],
       '#description' => $this->t('The minimum allowed value for the jQuery range slider. It can be positive, negative, or zero and have up to 11 decimal places.'),
     ];
 
-    $form['max'] = [
+    $form['wrapper']['max'] = [
       '#type' => 'number',
       '#title' => $this->t('Range maximum'),
       '#default_value' => $this->configuration['max'],
diff --git a/web/modules/better_exposed_filters/src/Plugin/views/exposed_form/BetterExposedFilters.php b/web/modules/better_exposed_filters/src/Plugin/views/exposed_form/BetterExposedFilters.php
index 710e43a8f947debc15ad97ba2f0c61aafba109e2..bde76e1d53773d7c5be12c0d0686ab9ac0938b6c 100644
--- a/web/modules/better_exposed_filters/src/Plugin/views/exposed_form/BetterExposedFilters.php
+++ b/web/modules/better_exposed_filters/src/Plugin/views/exposed_form/BetterExposedFilters.php
@@ -120,7 +120,7 @@ protected function defineOptions() {
     // Initialize options if any sort is exposed.
     // Iterate over each sort and determine if any sorts are exposed.
     $is_sort_exposed = FALSE;
-    /* @var \Drupal\views\Plugin\views\HandlerBase $sort */
+    /** @var \Drupal\views\Plugin\views\HandlerBase $sort */
     foreach ($this->view->display_handler->getHandlers('sort') as $sort) {
       if ($sort->isExposed()) {
         $is_sort_exposed = TRUE;
@@ -138,7 +138,7 @@ protected function defineOptions() {
     }
 
     // Go through each exposed filter and set default format.
-    /* @var \Drupal\views\Plugin\views\HandlerBase $filter */
+    /** @var \Drupal\views\Plugin\views\HandlerBase $filter */
     foreach ($this->view->display_handler->getHandlers('filter') as $filter_id => $filter) {
       if (!$filter->isExposed()) {
         continue;
@@ -323,7 +323,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
 
     // Iterate over each sort and determine if any sorts are exposed.
     $is_sort_exposed = FALSE;
-    /* @var \Drupal\views\Plugin\views\HandlerBase $sort */
+    /** @var \Drupal\views\Plugin\views\HandlerBase $sort */
     foreach ($this->view->display_handler->getHandlers('sort') as $sort) {
       if ($sort->isExposed()) {
         $is_sort_exposed = TRUE;
@@ -465,7 +465,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
     ];
 
     // Iterate over each filter and add BEF filter options.
-    /* @var \Drupal\views\Plugin\views\HandlerBase $filter */
+    /** @var \Drupal\views\Plugin\views\HandlerBase $filter */
     foreach ($this->view->display_handler->getHandlers('filter') as $filter_id => $filter) {
       if (!$filter->isExposed()) {
         continue;
@@ -479,7 +479,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
       }
 
       // Alter the list of available widgets for this filter.
-     $this->moduleHandler->alter('better_exposed_filters_display_options', $options, $filter);
+      $this->moduleHandler->alter('better_exposed_filters_display_options', $options, $filter);
 
       // Get a descriptive label for the filter.
       $label = $this->t('Exposed filter @filter', [
@@ -575,7 +575,7 @@ public function validateOptionsForm(&$form, FormStateInterface $form_state) {
     }
 
     // Shorthand for all filter handlers in this view.
-    /* @var \Drupal\views\Plugin\views\HandlerBase[] $filters */
+    /** @var \Drupal\views\Plugin\views\HandlerBase[] $filters */
     $filters = $this->view->display_handler->handlers['filter'];
 
     // Iterate over all filter, sort and pager plugins.
@@ -639,7 +639,7 @@ public function submitOptionsForm(&$form, FormStateInterface $form_state) {
     $bef_options = &$options['bef'];
 
     // Shorthand for all filter handlers in this view.
-    /* @var \Drupal\views\Plugin\views\HandlerBase[] $filters */
+    /** @var \Drupal\views\Plugin\views\HandlerBase[] $filters */
     $filters = $this->view->display_handler->handlers['filter'];
 
     parent::submitOptionsForm($form, $form_state);
@@ -794,7 +794,7 @@ public function exposedFormAlter(&$form, FormStateInterface $form_state) {
      */
 
     // Shorthand for all filter handlers in this view.
-    /* @var \Drupal\views\Plugin\views\HandlerBase[] $filters */
+    /** @var \Drupal\views\Plugin\views\HandlerBase[] $filters */
     $filters = $this->view->display_handler->handlers['filter'];
 
     // Iterate over all exposed filters.
@@ -819,7 +819,10 @@ public function exposedFormAlter(&$form, FormStateInterface $form_state) {
     // If our form has no visible filters, hide the submit button.
     $has_visible_filters = !empty(Element::getVisibleChildren($form)) ?: FALSE;
     $form['actions']['submit']['#access'] = $has_visible_filters;
-    $form['actions']['reset']['#access'] = $has_visible_filters;
+    // Never enable a reset button that has already been disabled.
+    if (!isset($form['actions']['reset']['#access']) || $form['actions']['reset']['#access'] === TRUE) {
+      $form['actions']['reset']['#access'] = $has_visible_filters;
+    }
 
     // Ensure default process/pre_render callbacks are included when a BEF
     // widget has added their own.
diff --git a/web/modules/better_exposed_filters/templates/bef-checkboxes.html.twig b/web/modules/better_exposed_filters/templates/bef-checkboxes.html.twig
index db1cf0dbeb9bde6389dac8ae6174799568a327ce..19bbd1f714e1544a3520c736218d73c6e6e52034 100644
--- a/web/modules/better_exposed_filters/templates/bef-checkboxes.html.twig
+++ b/web/modules/better_exposed_filters/templates/bef-checkboxes.html.twig
@@ -12,6 +12,7 @@
 #}
 {% set classes = [
   'form-checkboxes',
+  'bef-checkboxes',
   is_nested ? 'bef-nested',
   show_select_all_none ? 'bef-select-all-none',
   show_select_all_none_nested ? 'bef-select-all-none-nested',
diff --git a/web/modules/better_exposed_filters/templates/bef-links.html.twig b/web/modules/better_exposed_filters/templates/bef-links.html.twig
index feeae01bc8db2575f7027bfceab4caf0e7539fe7..b160c032af34b505d596cc170ec2942dd8bd1363 100644
--- a/web/modules/better_exposed_filters/templates/bef-links.html.twig
+++ b/web/modules/better_exposed_filters/templates/bef-links.html.twig
@@ -4,13 +4,15 @@
     is_nested ? 'bef-nested'
   ]
 %}
-{%
-  set is_nested = true
-%}
+{% set is_nested = true %}
 <div{{ attributes.addClass(classes) }}>
   {% set current_nesting_level = 0 %}
   {% for child in children %}
     {% set item = attribute(element, child) %}
+    {% if child in selected %}
+      {% set new_nesting_level = attribute(depth, child) %}
+      {% set item = item|merge({'#attributes': {'class': 'bef-link-active'}}) %}
+    {% endif %}
     {% set new_nesting_level = attribute(depth, child) %}
     {% include '@better_exposed_filters/bef-nested-elements.html.twig' %}
     {% set current_nesting_level = new_nesting_level %}
diff --git a/web/modules/better_exposed_filters/tests/modules/bef_test/bef_test.info.yml b/web/modules/better_exposed_filters/tests/modules/bef_test/bef_test.info.yml
index 8e2798ca12992905e2c654852a12d2311731f204..deeea184761c62628dea954afbf11c2491199838 100644
--- a/web/modules/better_exposed_filters/tests/modules/bef_test/bef_test.info.yml
+++ b/web/modules/better_exposed_filters/tests/modules/bef_test/bef_test.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - drupal:options
   - drupal:user
 
-# Information added by Drupal.org packaging script on 2020-07-07
-version: '8.x-5.0-beta1'
+# Information added by Drupal.org packaging script on 2021-06-24
+version: '8.x-5.0-beta2'
 project: 'better_exposed_filters'
-datestamp: 1594141894
+datestamp: 1624554649
diff --git a/web/modules/better_exposed_filters/tests/src/Kernel/BetterExposedFiltersKernelTest.php b/web/modules/better_exposed_filters/tests/src/Kernel/BetterExposedFiltersKernelTest.php
index 3bae009601bcf9771b82c2c9a8dc834779c8ecaa..b79e3b63e93b750bfcba7b2f1c3f0153d1210f4d 100644
--- a/web/modules/better_exposed_filters/tests/src/Kernel/BetterExposedFiltersKernelTest.php
+++ b/web/modules/better_exposed_filters/tests/src/Kernel/BetterExposedFiltersKernelTest.php
@@ -2,7 +2,6 @@
 
 namespace Drupal\Tests\better_exposed_filters\Kernel;
 
-use Drupal\Tests\better_exposed_filters\Kernel\BetterExposedFiltersKernelTestBase;
 use Drupal\views\Views;
 
 /**
diff --git a/web/modules/better_exposed_filters/tests/src/Kernel/Plugin/filter/FilterWidgetKernelTest.php b/web/modules/better_exposed_filters/tests/src/Kernel/Plugin/filter/FilterWidgetKernelTest.php
index 0e528590a9a3891dd4bc8aed12af82e1bd9bfe93..45f3f9a49c97852b4f181d1c1eab78a36900587f 100644
--- a/web/modules/better_exposed_filters/tests/src/Kernel/Plugin/filter/FilterWidgetKernelTest.php
+++ b/web/modules/better_exposed_filters/tests/src/Kernel/Plugin/filter/FilterWidgetKernelTest.php
@@ -33,8 +33,10 @@ class FilterWidgetKernelTest extends BetterExposedFiltersKernelTestBase {
   $display = &$view->storage->getDisplay('default');
 
   // Ensure our filter "field_bef_boolean_value" is grouped.
-  $display['display_options']['filters']['field_bef_boolean_value']['is_grouped'] = TRUE;
-  $display['display_options']['filters']['field_bef_boolean_value']['group_info'] = [
+  $display['display_options']['filters']['field_bef_boolean_value']
+  ['is_grouped'] = TRUE;
+  $display['display_options']['filters']['field_bef_boolean_value']
+  ['group_info'] = [
   'plugin_id' => 'boolean',
   'label' => 'bef_boolean (field_bef_boolean)',
   'description' => '',
@@ -64,7 +66,9 @@ class FilterWidgetKernelTest extends BetterExposedFiltersKernelTestBase {
 
   // Check our "FIELD_BEF_BOOLEAN" filter is rendered with id
   // "field_bef_boolean_value2".
-  $this->assertTrue(isset($output['field_bef_boolean_value2']), 'Exposed filter "FIELD_BEF_BOOLEAN" is exposed with id "field_bef_boolean_value2".');
+  $this->assertTrue(isset($output['field_bef_boolean_value2']),
+  'Exposed filter "FIELD_BEF_BOOLEAN" is exposed with id
+  "field_bef_boolean_value2".');
 
   $view->destroy();
   }*/