diff -u b/js/checkbox-widget.js b/js/checkbox-widget.js --- b/js/checkbox-widget.js +++ b/js/checkbox-widget.js @@ -45,7 +45,7 @@ // register handlers on that element. $widget.addClass('js-facets-widget'); - facetSettings = drupalSettings.facets[$widget.data('drupal-facet-id')]; + facetSettings = (drupalSettings.facets && drupalSettings.facets[$widget.data('drupal-facet-id')]) ?? {}; // Transform links to checkboxes. $widgetLinks.each(Drupal.facets.makeCheckbox); @@ -122,7 +122,7 @@ var href = $link.attr('href'); var id = $link.data('drupal-facet-item-id'); var $widget = $(this).closest('.js-facets-widget'); - var facetSettings = drupalSettings.facets[$widget.data('drupal-facet-id')]; + var facetSettings = (drupalSettings.facets && drupalSettings.facets[$widget.data('drupal-facet-id')]) ?? {}; var checkbox = $('') .attr('id', id) @@ -132,7 +132,8 @@ // Do not trigger facets on change when auto-submit is disabled, so we can trigger them manually clicking on the // apply button. - if (!facetSettings.disable_autosubmit) { + var disableAutosubmit = facetSettings.disable_autosubmit ?? false; + if (!disableAutosubmit) { checkbox.on('change.facets', function (e) { e.preventDefault(); diff -u b/src/Plugin/facets/widget/CheckboxWidget.php b/src/Plugin/facets/widget/CheckboxWidget.php --- b/src/Plugin/facets/widget/CheckboxWidget.php +++ b/src/Plugin/facets/widget/CheckboxWidget.php @@ -23,11 +23,15 @@ $build['#attributes']['class'][] = 'js-facets-checkbox-links'; $build['#attached']['library'][] = 'facets/drupal.facets.checkbox-widget'; if ($this->isDisablingAllowed()) { - $build['#attached']['drupalSettings']['facets'][$this->facet->id()]['disable_autosubmit'] = $this->getConfiguration()['disable_autosubmit']; - $build['#attached']['drupalSettings']['facets'][$this->facet->id()]['submit_button_label'] = $this->getConfiguration()['submit_button_label']; + $facetConfiguration = [ + 'disable_autosubmit' => $this->getConfiguration()['disable_autosubmit'], + 'submit_button_label' => $this->getConfiguration()['submit_button_label'], + ]; if ($facet_source = $this->facet->getFacetSource()) { - $build['#attached']['drupalSettings']['facets'][$this->facet->id()]['facet_source_path'] = $facet_source->getPath(); + $facetConfiguration['facet_source_path'] = $facet_source->getPath(); } + + $build['#attached']['drupalSettings']['facets'][$this->facet->id()] = $facetConfiguration; } } @@ -89,9 +93,12 @@ if (empty($pages)) { return TRUE; } - $pages = explode(PHP_EOL, $pages); - $current_path = \Drupal::request()->getRequestUri(); - return in_array($current_path, $pages); + /* @var \Drupal\system\Plugin\Condition\RequestPath $condition */ + $pathCondition = \Drupal::service('plugin.manager.condition') + ->createInstance('request_path') + ->setConfiguration(['pages' => $pages]); + + return $pathCondition->evaluate(); } }