Skip to content

Commit b272ab4

Browse files
authored
Merge pull request #1398 from algolia/update/MAGE-726
Removed the jQuery dependency from the algoliaBundle file
2 parents d818976 + 96ab5ca commit b272ab4

File tree

6 files changed

+131
-128
lines changed

6 files changed

+131
-128
lines changed

view/adminhtml/web/js/support.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
requirejs(['algoliaAdminBundle'], function(algoliaBundle) {
2-
algoliaBundle.$(function ($) {
1+
requirejs([
2+
'jquery',
3+
'algoliaAdminBundle'
4+
], function($, algoliaBundle) {
5+
$(function ($) {
36
handleLatestVersion($);
47

58
if ($('#search_box').length > 0) {

view/frontend/web/insights.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ define(
109109

110110
var self = this;
111111

112-
algoliaBundle.$(function ($) {
112+
$(function ($) {
113113
$(self.config.autocomplete.selector).on('autocomplete:selected', function (e, suggestion) {
114114
var eventData = self.buildEventData(
115115
'Clicked', suggestion.objectID, suggestion.__indexName, suggestion.__position, suggestion.__queryID
@@ -278,7 +278,7 @@ define(
278278

279279
algoliaInsights.addSearchParameters();
280280

281-
algoliaBundle.$(function ($) {
281+
$(function ($) {
282282
if (window.algoliaConfig) {
283283
algoliaInsights.track(algoliaConfig);
284284
}

view/frontend/web/instantsearch.js

Lines changed: 105 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,116 @@
11
define(
22
[
3+
'jquery',
34
'algoliaBundle',
45
'Magento_Catalog/js/price-utils',
56
'algoliaCommon',
67
'algoliaInsights',
78
'algoliaHooks'
89
],
9-
function (algoliaBundle, priceUtils) {
10-
algoliaBundle.$(function ($) {
11-
/** We have nothing to do here if instantsearch is not enabled **/
12-
if (typeof algoliaConfig === 'undefined' || !algoliaConfig.instant.enabled || !(algoliaConfig.isSearchPage || !algoliaConfig.autocomplete.enabled)) {
13-
return;
14-
}
15-
16-
if ($(algoliaConfig.instant.selector).length <= 0) {
17-
throw '[Algolia] Invalid instant-search selector: ' + algoliaConfig.instant.selector;
18-
}
19-
20-
if (algoliaConfig.autocomplete.enabled && $(algoliaConfig.instant.selector).find(algoliaConfig.autocomplete.selector).length > 0) {
21-
throw '[Algolia] You can\'t have a search input matching "' + algoliaConfig.autocomplete.selector +
22-
'" inside you instant selector "' + algoliaConfig.instant.selector + '"';
23-
}
24-
25-
var findAutocomplete = algoliaConfig.autocomplete.enabled && $(algoliaConfig.instant.selector).find('#algolia-autocomplete-container').length > 0;
26-
if (findAutocomplete) {
27-
$(algoliaConfig.instant.selector).find('#algolia-autocomplete-container').remove();
28-
}
29-
30-
/** BC of old hooks **/
31-
if (typeof algoliaHookBeforeInstantsearchInit === 'function') {
32-
algolia.registerHook('beforeInstantsearchInit', algoliaHookBeforeInstantsearchInit);
33-
}
34-
35-
if (typeof algoliaHookBeforeWidgetInitialization === 'function') {
36-
algolia.registerHook('beforeWidgetInitialization', algoliaHookBeforeWidgetInitialization);
37-
}
38-
39-
if (typeof algoliaHookBeforeInstantsearchStart === 'function') {
40-
algolia.registerHook('beforeInstantsearchStart', algoliaHookBeforeInstantsearchStart);
41-
}
42-
43-
if (typeof algoliaHookAfterInstantsearchStart === 'function') {
44-
algolia.registerHook('afterInstantsearchStart', algoliaHookAfterInstantsearchStart);
45-
}
46-
47-
/**
48-
* Setup wrapper
49-
*
50-
* For templating is used Hogan library
51-
* Docs: http://twitter.github.io/hogan.js/
52-
**/
53-
var wrapperTemplate = algoliaBundle.Hogan.compile($('#instant_wrapper_template').html());
54-
var instant_selector = "#instant-search-bar";
55-
56-
var div = document.createElement('div');
57-
$(div).addClass('algolia-instant-results-wrapper');
58-
59-
$(algoliaConfig.instant.selector).addClass('algolia-instant-replaced-content');
60-
$(algoliaConfig.instant.selector).wrap(div);
61-
62-
$('.algolia-instant-results-wrapper').append('<div class="algolia-instant-selector-results"></div>');
63-
$('.algolia-instant-selector-results').html(wrapperTemplate.render({
64-
second_bar: algoliaConfig.instant.enabled,
65-
findAutocomplete: findAutocomplete,
66-
config: algoliaConfig.instant,
67-
translations: algoliaConfig.translations
68-
})).show();
69-
70-
/**
71-
* Initialise instant search
72-
* For rendering instant search page is used Algolia's instantsearch.js library
73-
* Docs: https://www.algolia.com/doc/api-reference/widgets/instantsearch/js/
74-
**/
75-
76-
var ruleContexts = ['magento_filters', '']; // Empty context to keep BC for already create rules in dashboard
77-
if (algoliaConfig.request.categoryId.length > 0) {
78-
ruleContexts.push('magento-category-' + algoliaConfig.request.categoryId);
79-
}
80-
81-
if (algoliaConfig.request.landingPageId.length > 0) {
82-
ruleContexts.push('magento-landingpage-' + algoliaConfig.request.landingPageId);
83-
}
84-
85-
var searchClient = algoliaBundle.algoliasearch(algoliaConfig.applicationId, algoliaConfig.apiKey);
86-
var indexName = algoliaConfig.indexName + '_products';
87-
var searchParameters = {
88-
hitsPerPage: algoliaConfig.hitsPerPage,
89-
ruleContexts: ruleContexts
90-
};
91-
var instantsearchOptions = {
92-
searchClient: searchClient,
93-
indexName: indexName,
94-
searchFunction: function (helper) {
95-
if (helper.state.query === '' && !algoliaConfig.isSearchPage) {
96-
$('.algolia-instant-replaced-content').show();
97-
$('.algolia-instant-selector-results').hide();
98-
} else {
99-
helper.search();
100-
$('.algolia-instant-replaced-content').hide();
101-
$('.algolia-instant-selector-results').show();
102-
}
103-
},
104-
routing: window.routing,
105-
};
106-
107-
if (algoliaConfig.request.path.length > 0 && window.location.hash.indexOf('categories.level0') === -1) {
108-
if (algoliaConfig.areCategoriesInFacets === false) {
109-
searchParameters['facetsRefinements'] = {};
110-
searchParameters['facetsRefinements']['categories.level' + algoliaConfig.request.level] = [algoliaConfig.request.path];
111-
}
112-
}
10+
function ($, algoliaBundle, priceUtils) {
11+
$(function ($) {
12+
/** We have nothing to do here if instantsearch is not enabled **/
13+
if (typeof algoliaConfig === 'undefined' || !algoliaConfig.instant.enabled || !(algoliaConfig.isSearchPage || !algoliaConfig.autocomplete.enabled)) {
14+
return;
15+
}
16+
17+
if ($(algoliaConfig.instant.selector).length <= 0) {
18+
throw '[Algolia] Invalid instant-search selector: ' + algoliaConfig.instant.selector;
19+
}
20+
21+
if (algoliaConfig.autocomplete.enabled && $(algoliaConfig.instant.selector).find(algoliaConfig.autocomplete.selector).length > 0) {
22+
throw '[Algolia] You can\'t have a search input matching "' + algoliaConfig.autocomplete.selector +
23+
'" inside you instant selector "' + algoliaConfig.instant.selector + '"';
24+
}
25+
26+
var findAutocomplete = algoliaConfig.autocomplete.enabled && $(algoliaConfig.instant.selector).find('#algolia-autocomplete-container').length > 0;
27+
if (findAutocomplete) {
28+
$(algoliaConfig.instant.selector).find('#algolia-autocomplete-container').remove();
29+
}
30+
31+
/** BC of old hooks **/
32+
if (typeof algoliaHookBeforeInstantsearchInit === 'function') {
33+
algolia.registerHook('beforeInstantsearchInit', algoliaHookBeforeInstantsearchInit);
34+
}
35+
36+
if (typeof algoliaHookBeforeWidgetInitialization === 'function') {
37+
algolia.registerHook('beforeWidgetInitialization', algoliaHookBeforeWidgetInitialization);
38+
}
39+
40+
if (typeof algoliaHookBeforeInstantsearchStart === 'function') {
41+
algolia.registerHook('beforeInstantsearchStart', algoliaHookBeforeInstantsearchStart);
42+
}
43+
44+
if (typeof algoliaHookAfterInstantsearchStart === 'function') {
45+
algolia.registerHook('afterInstantsearchStart', algoliaHookAfterInstantsearchStart);
46+
}
47+
48+
/**
49+
* Setup wrapper
50+
*
51+
* For templating is used Hogan library
52+
* Docs: http://twitter.github.io/hogan.js/
53+
**/
54+
var wrapperTemplate = algoliaBundle.Hogan.compile($('#instant_wrapper_template').html());
55+
var instant_selector = "#instant-search-bar";
56+
57+
var div = document.createElement('div');
58+
$(div).addClass('algolia-instant-results-wrapper');
59+
60+
$(algoliaConfig.instant.selector).addClass('algolia-instant-replaced-content');
61+
$(algoliaConfig.instant.selector).wrap(div);
62+
63+
$('.algolia-instant-results-wrapper').append('<div class="algolia-instant-selector-results"></div>');
64+
$('.algolia-instant-selector-results').html(wrapperTemplate.render({
65+
second_bar: algoliaConfig.instant.enabled,
66+
findAutocomplete: findAutocomplete,
67+
config: algoliaConfig.instant,
68+
translations: algoliaConfig.translations
69+
})).show();
70+
71+
/**
72+
* Initialise instant search
73+
* For rendering instant search page is used Algolia's instantsearch.js library
74+
* Docs: https://www.algolia.com/doc/api-reference/widgets/instantsearch/js/
75+
**/
76+
77+
var ruleContexts = ['magento_filters', '']; // Empty context to keep BC for already create rules in dashboard
78+
if (algoliaConfig.request.categoryId.length > 0) {
79+
ruleContexts.push('magento-category-' + algoliaConfig.request.categoryId);
80+
}
81+
82+
if (algoliaConfig.request.landingPageId.length > 0) {
83+
ruleContexts.push('magento-landingpage-' + algoliaConfig.request.landingPageId);
84+
}
85+
86+
var searchClient = algoliaBundle.algoliasearch(algoliaConfig.applicationId, algoliaConfig.apiKey);
87+
var indexName = algoliaConfig.indexName + '_products';
88+
var searchParameters = {
89+
hitsPerPage: algoliaConfig.hitsPerPage,
90+
ruleContexts: ruleContexts
91+
};
92+
var instantsearchOptions = {
93+
searchClient: searchClient,
94+
indexName: indexName,
95+
searchFunction: function (helper) {
96+
if (helper.state.query === '' && !algoliaConfig.isSearchPage) {
97+
$('.algolia-instant-replaced-content').show();
98+
$('.algolia-instant-selector-results').hide();
99+
} else {
100+
helper.search();
101+
$('.algolia-instant-replaced-content').hide();
102+
$('.algolia-instant-selector-results').show();
103+
}
104+
},
105+
routing: window.routing,
106+
};
107+
108+
if (algoliaConfig.request.path.length > 0 && window.location.hash.indexOf('categories.level0') === -1) {
109+
if (algoliaConfig.areCategoriesInFacets === false) {
110+
searchParameters['facetsRefinements'] = {};
111+
searchParameters['facetsRefinements']['categories.level' + algoliaConfig.request.level] = [algoliaConfig.request.path];
112+
}
113+
}
113114

114115
if (algoliaConfig.instant.isVisualMerchEnabled && algoliaConfig.isCategoryPage ) {
115116
searchParameters.filters = `${algoliaConfig.instant.categoryPageIdAttribute}:'${algoliaConfig.request.path}'`;

view/frontend/web/internals/algoliaBundle.min.js

100755100644
Lines changed: 15 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

view/frontend/web/internals/algoliaBundle.min.js.map

100755100644
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

view/frontend/web/recommend.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
define([
2+
'jquery',
23
'algoliaBundle',
34
'recommend',
45
'recommendJs',
56
'recommendProductsHtml',
67
'domReady!'
7-
],function (algoliaBundle, recommend, recommendJs, recommendProductsHtml) {
8+
],function ($, algoliaBundle, recommend, recommendJs, recommendProductsHtml) {
89
'use strict';
910

1011
if (typeof algoliaConfig === 'undefined') {
1112
return;
1213
}
1314

1415
return function (config, element) {
15-
algoliaBundle.$(function ($) {
16+
$(function ($) {
1617
this.defaultIndexName = algoliaConfig.indexName + '_products';
1718
const appId = algoliaConfig.applicationId;
1819
const apiKey = algoliaConfig.apiKey;

0 commit comments

Comments
 (0)