Skip to content

Commit aeac517

Browse files
authored
Merge pull request #1678 from algolia/epic/MAGE-997
MAGE-1004 Rebased epic for algoliaBundle removal
2 parents 9394804 + fe25502 commit aeac517

25 files changed

+2159
-1856
lines changed

Block/Configuration.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Configuration extends Algolia implements CollectionDataSourceInterface
1313
//Placeholder for future implementation (requires custom renderer for hierarchicalMenu widget)
1414
private const IS_CATEGORY_NAVIGATION_ENABLED = false;
1515

16-
public function isSearchPage()
16+
public function isSearchPage(): bool
1717
{
1818
if ($this->getConfigHelper()->isInstantEnabled()) {
1919
/** @var Http $request */
@@ -80,8 +80,6 @@ public function getConfiguration()
8080

8181
$suggestionHelper = $this->getSuggestionHelper();
8282

83-
$productHelper = $this->getProductHelper();
84-
8583
$algoliaHelper = $this->getAlgoliaHelper();
8684

8785
$persoHelper = $this->getPersonalizationHelper();
@@ -255,7 +253,7 @@ public function getConfiguration()
255253
'attributeFilter' => $attributesToFilter,
256254
'facets' => $facets,
257255
'areCategoriesInFacets' => $areCategoriesInFacets,
258-
'hitsPerPage' => (int) $config->getNumberOfProductResults(),
256+
'hitsPerPage' => $config->getNumberOfProductResults(),
259257
'sortingIndices' => array_values($this->sortingTransformer->getSortingIndices(
260258
$this->getStoreId(),
261259
$customerGroupId
@@ -422,7 +420,7 @@ protected function getOrderedProductIds(ConfigHelper $configHelper, Http $reques
422420
return $ids;
423421
}
424422

425-
protected function isLandingPage()
423+
protected function isLandingPage(): bool
426424
{
427425
return $this->getRequest()->getFullActionName() === 'algolia_landingpage_view';
428426
}
@@ -441,4 +439,15 @@ protected function getLandingPageConfiguration()
441439
{
442440
return $this->isLandingPage() ? $this->getCurrentLandingPage()->getConfiguration() : json_encode([]);
443441
}
442+
443+
public function canLoadInstantSearch(): bool
444+
{
445+
return $this->getConfigHelper()->isInstantEnabled()
446+
&& $this->isProductListingPage();
447+
}
448+
449+
protected function isProductListingPage(): bool
450+
{
451+
return $this->isSearchPage() || $this->isLandingPage();
452+
}
444453
}

view/adminhtml/web/css/landing-page.css

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,53 +1069,6 @@ a.ais-current-refined-values--link:hover {
10691069
margin-bottom: 20px;
10701070
}
10711071

1072-
/** Search Box */
1073-
1074-
#algolia-searchbox {
1075-
position: relative;
1076-
}
1077-
1078-
#algolia-searchbox .clear-cross, #algolia_instant_selector .clear-cross {
1079-
position: absolute;
1080-
display: none;
1081-
cursor: pointer;
1082-
width: 16px;
1083-
height: 16px;
1084-
}
1085-
1086-
#algolia-searchbox .clear-query-autocomplete {
1087-
bottom: 22px;
1088-
right: 9px;
1089-
}
1090-
1091-
#algolia_instant_selector .cross-wrapper .clear-refinement {
1092-
display: block;
1093-
position: relative;
1094-
top: 5px;
1095-
left: 5px;
1096-
}
1097-
1098-
#algolia-searchbox .magnifying-glass {
1099-
position: absolute;
1100-
bottom: 21px;
1101-
right: 7px;
1102-
width: 20px;
1103-
height: 20px;
1104-
display: block;
1105-
}
1106-
1107-
@media (min-width: 768px) {
1108-
#algolia-searchbox .magnifying-glass {
1109-
bottom: 6px;
1110-
}
1111-
}
1112-
1113-
@media (min-width: 768px) {
1114-
#algolia-searchbox .clear-query-autocomplete {
1115-
bottom: 8px;
1116-
}
1117-
}
1118-
11191072
/** PAGINATION */
11201073

11211074
#instant-search-pagination-container {
@@ -1157,21 +1110,6 @@ a.ais-current-refined-values--link:hover {
11571110
color: #606060;
11581111
}
11591112

1160-
1161-
#algolia-searchbox .algolia-search-input:focus:not([value=""]) {
1162-
background: transparent;
1163-
}
1164-
1165-
#algolia-searchbox .algolia-search-input {
1166-
position: static !important;
1167-
}
1168-
1169-
#algolia-searchbox .algolia-search-input:focus {
1170-
outline: 0;
1171-
box-shadow: none;
1172-
border: solid 1px #54A5CD;
1173-
}
1174-
11751113
#algolia_instant_selector .ais-current-refined-values.facet .ais-current-refined-values--body {
11761114
padding-left: 8px;
11771115
}

view/frontend/requirejs-config.js

Lines changed: 56 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
var config = {
2-
map : {
1+
const config = {
2+
map: {
33
'*': {
44
// Magento FE libs
55
'algoliaCommon' : 'Algolia_AlgoliaSearch/js/internals/common',
@@ -8,26 +8,59 @@ var config = {
88
'algoliaInsights' : 'Algolia_AlgoliaSearch/js/insights',
99
'algoliaHooks' : 'Algolia_AlgoliaSearch/js/hooks',
1010

11-
// Autocomplete templates
12-
'productsHtml' : 'Algolia_AlgoliaSearch/js/template/autocomplete/products',
13-
'pagesHtml' : 'Algolia_AlgoliaSearch/js/template/autocomplete/pages',
14-
'categoriesHtml' : 'Algolia_AlgoliaSearch/js/template/autocomplete/categories',
15-
'suggestionsHtml': 'Algolia_AlgoliaSearch/js/template/autocomplete/suggestions',
16-
'additionalHtml' : 'Algolia_AlgoliaSearch/js/template/autocomplete/additional-section',
11+
// Unbundled template processor
12+
'algoliaTemplateEngine': 'Algolia_AlgoliaSearch/js/internals/template-engine',
1713

18-
// Recommend templates
19-
'recommendProductsHtml': 'Algolia_AlgoliaSearch/js/template/recommend/products'
14+
// DEPRECATED - migrated to new paths - these will be removed in a future release
15+
'algoliaAnalytics' : 'algoliaAnalyticsLib',
16+
'recommend' : 'algoliaRecommendLib',
17+
'recommendJs' : 'algoliaRecommendJsLib',
18+
'productsHtml' : 'algoliaAutocompleteProductsHtml',
19+
'pagesHtml' : 'algoliaAutocompletePagesHtml',
20+
'categoriesHtml' : 'algoliaAutocompleteCategoriesHtml',
21+
'suggestionsHtml' : 'algoliaAutocompleteSuggestionsHtml',
22+
'additionalHtml' : 'algoliaAutocompleteAdditionalHtml',
23+
'recommendProductsHtml': 'algoliaRecommendProductsHtml'
2024
}
2125
},
22-
paths : {
23-
'algoliaBundle' : 'Algolia_AlgoliaSearch/js/internals/algoliaBundle.min',
24-
'algoliaAnalytics': 'Algolia_AlgoliaSearch/js/internals/search-insights',
25-
'recommend' : 'Algolia_AlgoliaSearch/js/internals/recommend.min',
26-
'recommendJs' : 'Algolia_AlgoliaSearch/js/internals/recommend-js.min',
27-
'rangeSlider' : 'Algolia_AlgoliaSearch/js/navigation/range-slider-widget',
26+
paths: {
27+
// Core Search UI libs
28+
'algoliaSearchLib' : 'Algolia_AlgoliaSearch/js/lib/algolia-search.min',
29+
'algoliaSearchHelperLib' : 'Algolia_AlgoliaSearch/js/lib/algolia-search-helper.min',
30+
'algoliaInstantSearchLib': 'Algolia_AlgoliaSearch/js/lib/algolia-instantsearch.min',
31+
'algoliaAutocompleteLib' : 'Algolia_AlgoliaSearch/js/lib/algolia-autocomplete.min',
32+
'algoliaAnalyticsLib' : 'Algolia_AlgoliaSearch/js/lib/search-insights.min',
33+
'algoliaRecommendLib' : 'Algolia_AlgoliaSearch/js/lib/recommend.min',
34+
'algoliaRecommendJsLib' : 'Algolia_AlgoliaSearch/js/lib/recommend-js.min',
35+
36+
// Autocomplete plugins
37+
'algoliaQuerySuggestionsPluginLib' : 'Algolia_AlgoliaSearch/js/lib/query-suggestions-plugin.min',
38+
'algoliaInsightsPluginLib' : 'Algolia_AlgoliaSearch/js/lib/insights-plugin.min',
39+
'algoliaRecentSearchesPluginLib' : 'Algolia_AlgoliaSearch/js/lib/recent-searches-plugin.min',
40+
41+
// Autocomplete templates
42+
'algoliaAutocompleteProductsHtml' : 'Algolia_AlgoliaSearch/js/template/autocomplete/products',
43+
'algoliaAutocompletePagesHtml' : 'Algolia_AlgoliaSearch/js/template/autocomplete/pages',
44+
'algoliaAutocompleteCategoriesHtml' : 'Algolia_AlgoliaSearch/js/template/autocomplete/categories',
45+
'algoliaAutocompleteSuggestionsHtml': 'Algolia_AlgoliaSearch/js/template/autocomplete/suggestions',
46+
'algoliaAutocompleteAdditionalHtml' : 'Algolia_AlgoliaSearch/js/template/autocomplete/additional-section',
47+
48+
// Recommend templates
49+
'algoliaRecommendProductsHtml': 'Algolia_AlgoliaSearch/js/template/recommend/products',
50+
51+
// Parser libs for legacy templating
52+
'algoliaMustacheLib': 'Algolia_AlgoliaSearch/js/lib/mustache.min',
53+
'algoliaHoganLib' : 'Algolia_AlgoliaSearch/js/lib/hogan.min',
54+
55+
// Utils
56+
'algoliaBase64' : 'Algolia_AlgoliaSearch/js/internals/base64',
57+
58+
// DEPRECATED - to be removed in a future release
59+
'algoliaBundle': 'Algolia_AlgoliaSearch/js/internals/algoliaBundle.min',
60+
'rangeSlider' : 'Algolia_AlgoliaSearch/js/navigation/range-slider-widget'
61+
2862
},
29-
deps : [
30-
'algoliaInstantSearch',
63+
deps : [
3164
'algoliaInsights'
3265
],
3366
config: {
@@ -36,5 +69,10 @@ var config = {
3669
'Algolia_AlgoliaSearch/js/insights/add-to-cart-mixin': true
3770
}
3871
}
72+
},
73+
shim : {
74+
'algoliaHoganLib': {
75+
exports: 'Hogan'
76+
}
3977
}
4078
};

view/frontend/templates/internals/configuration.phtml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ $configuration = $block->getConfiguration();
77
if (class_exists('\Magento\Framework\View\Helper\SecureHtmlRenderer')) : ?>
88
<?php
99
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
10-
if ($configuration['instant']['enabled'] === true && $configuration['isSearchPage'] === true) {
10+
if ($block->canLoadInstantSearch()) {
1111
$css = /* @noEscape */ $secureRenderer->renderTag('style', [], $configuration['instant']['selector'] . ' {display:none}', false);
1212
/* @noEscape */ echo $secureRenderer->renderTag('script', [], 'document.write(\'' . $css . '\');' , false);
1313
}
@@ -17,7 +17,7 @@ if (class_exists('\Magento\Framework\View\Helper\SecureHtmlRenderer')) : ?>
1717
<?php else: ?>
1818
<script>
1919
<?php
20-
if ($configuration['instant']['enabled'] === true && $configuration['isSearchPage'] === true) :
20+
if ($block->canLoadInstantSearch()):
2121
$css = '<style type="text/css">' . $configuration['instant']['selector'] . ' {display:none}</style>';
2222
?>
2323
// Hide the instant-search selector ASAP to remove flickering. Will be re-displayed later with JS.
@@ -29,3 +29,14 @@ if (class_exists('\Magento\Framework\View\Helper\SecureHtmlRenderer')) : ?>
2929
window.algoliaConfig = <?php /* @noEscape */ echo json_encode($configuration); ?>;
3030
</script>
3131
<?php endif; ?>
32+
33+
34+
<?php if ($block->canLoadInstantSearch()) : ?>
35+
<script type="text/x-magento-init">
36+
{
37+
"*": {
38+
"algoliaInstantSearch": {}
39+
}
40+
}
41+
</script>
42+
<?php endif;?>

view/frontend/web/css/autocomplete.css

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -429,54 +429,11 @@ html {
429429
max-width: 130px;
430430
}
431431

432-
#algolia-searchbox .algolia-search-input:focus:not([value=""]) {
433-
background: transparent;
434-
}
435-
436-
#algolia-searchbox .algolia-search-input {
437-
position: static !important;
438-
}
439-
440-
#algolia-searchbox .algolia-search-input:focus {
441-
outline: 0;
442-
box-shadow: none;
443-
border: solid 1px #54A5CD;
444-
}
445-
446432
#algolia-autocomplete-container:after, .autocomplete-wrapper:after {
447433
clear: both;
448434
content: '';
449435
}
450436

451-
#algolia-searchbox {
452-
position: relative;
453-
}
454-
455-
#algolia-searchbox .clear-cross, #algolia_instant_selector .clear-cross {
456-
position: absolute;
457-
display: none;
458-
background: url("data:image/svg+xml;utf8,<svg width=\'12\' height=\'12\' viewBox=\'0 0 12 12\' xmlns=\'http://www.w3.org/2000/svg\' opacity=\'0.6\'><path d=\'M.566 1.698L0 1.13 1.132 0l.565.566L6 4.868 10.302.566 10.868 0 12 1.132l-.566.565L7.132 6l4.302 4.3.566.568L10.868 12l-.565-.566L6 7.132l-4.3 4.302L1.13 12 0 10.868l.566-.565L4.868 6 .566 1.698z\'></path></svg>") no-repeat center center / contain;
459-
cursor: pointer;
460-
width: 16px;
461-
height: 16px;
462-
}
463-
464-
#algolia-searchbox .clear-query-autocomplete {
465-
bottom: 8px;
466-
right: 9px;
467-
}
468-
469-
#algolia-searchbox .magnifying-glass {
470-
background: url("data:image/svg+xml;utf8,<svg width=\'40\' height=\'40\' viewBox=\'0 0 40 40\' fill=\'%23A6A6A6\' xmlns=\'http://www.w3.org/2000/svg\'><path d=\'M15.553 31.107c8.59 0 15.554-6.964 15.554-15.554S24.143 0 15.553 0 0 6.964 0 15.553c0 8.59 6.964 15.554 15.553 15.554zm0-3.888c6.443 0 11.666-5.225 11.666-11.668 0-6.442-5.225-11.665-11.668-11.665-6.442 0-11.665 5.223-11.665 11.665 0 6.443 5.223 11.666 11.665 11.666zm12.21 3.84a2.005 2.005 0 0 1 .002-2.833l.463-.463a2.008 2.008 0 0 1 2.833-.003l8.17 8.168c.78.78.78 2.05-.004 2.833l-.462.463a2.008 2.008 0 0 1-2.834.004l-8.168-8.17z\' fill-rule=\'evenodd\'/></svg>") no-repeat center right / 20px;
471-
border: none;
472-
bottom: 7px;
473-
box-shadow: none;
474-
height: 20px;
475-
position: absolute;
476-
right: 7px;
477-
width: 20px;
478-
}
479-
480437
#algolia_instant_selector .cross-wrapper .clear-refinement {
481438
display: block;
482439
position: relative;
@@ -664,8 +621,4 @@ html {
664621
}
665622
.aa-Panel .aa-PanelLayout section .aa-SourceNoResults{
666623
padding: 5px;
667-
}
668-
669-
.clear-query-autocomplete {
670-
display: none !important;
671-
}
624+
}

0 commit comments

Comments
 (0)