61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
![]() |
/**
|
||
|
* @file
|
||
|
* Provides base widget behaviours.
|
||
|
*/
|
||
|
|
||
|
(function ($, Drupal) {
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
/**
|
||
|
* Handles "facets_filter" event and triggers "facets_filtering".
|
||
|
*
|
||
|
* The facets module will listend and trigger defined events on elements with
|
||
|
* class: "js-facets-widget".
|
||
|
*
|
||
|
* Events are doing following:
|
||
|
* "facets_filter" - widget should trigger this event. The facets module will
|
||
|
* handle it accordingly in case of AJAX and Non-AJAX views.
|
||
|
* "facets_filtering" - The facets module will trigger this event before
|
||
|
* filter is executed.
|
||
|
*
|
||
|
* This is an example how to trigger "facets_filter" event for your widget:
|
||
|
* $('.my-custom-widget.js-facets-widget')
|
||
|
* .once('my-custom-widget-on-change')
|
||
|
* .on('change', function () {
|
||
|
* // In this example $(this).val() will provide needed URL.
|
||
|
* $(this).trigger('facets_filter', [ $(this).val() ]);
|
||
|
* });
|
||
|
*
|
||
|
* The facets module will trigger "facets_filtering" before filter is
|
||
|
* executed. Widgets can listen on "facets_filtering" event and react before
|
||
|
* filter is executed. Most common use case is to disable widget. When you
|
||
|
* disable widget, a user will not be able to trigger new "facets_filter"
|
||
|
* event before initial filter request is finished.
|
||
|
*
|
||
|
* This is an example how to handle "facets_filtering":
|
||
|
* $('.my-custom-widget.js-facets-widget')
|
||
|
* .once('my-custom-widget-on-facets-filtering')
|
||
|
* .on('facets_filtering.my_widget_module', function () {
|
||
|
* // Let's say, that widget can be simply disabled (fe. select).
|
||
|
* $(this).prop('disabled', true);
|
||
|
* });
|
||
|
*
|
||
|
* You should namespace events for your module widgets. With namespaced events
|
||
|
* you have better control on your handlers and if it's needed, you can easier
|
||
|
* register/deregister them.
|
||
|
*/
|
||
|
Drupal.behaviors.facetsFilter = {
|
||
|
attach: function (context) {
|
||
|
$('.js-facets-widget', context)
|
||
|
.once('js-facet-filter')
|
||
|
.on('facets_filter.facets', function (event, url) {
|
||
|
$('.js-facets-widget').trigger('facets_filtering');
|
||
|
|
||
|
window.location = url;
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
})(jQuery, Drupal);
|