@sentecacommerce-theme/lib 0.13.1 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/cjs/analytics/Pixel/mainScript.js +2 -1
  2. package/dist/cjs/api/getSDKConfig.js +4 -2
  3. package/dist/cjs/api/myCartApi/index.js +8 -2
  4. package/dist/cjs/basket/api/mutations/index.js +14 -0
  5. package/dist/cjs/basket/api/mutations/useChangeGiftVariant.js +116 -0
  6. package/dist/cjs/basket/hooks/index.js +12 -0
  7. package/dist/cjs/basket/hooks/useChangeGiftVariant.js +16 -0
  8. package/dist/cjs/config/SentecaProvider.js +3 -1
  9. package/dist/cjs/hooks/useAggregateResult/index.js +5 -1
  10. package/dist/cjs/hooks/useAvailability/index.js +1 -1
  11. package/dist/cjs/hooks/useClearAllFilters/index.js +2 -0
  12. package/dist/cjs/hooks/useProduct/index.js +36 -26
  13. package/dist/cjs/hooks/wishlist-hooks/useWishlistItem/index.js +39 -15
  14. package/dist/cjs/listing/api/queries/useListingQuery.js +1 -1
  15. package/dist/cjs/listing/hooks/useListingBreadcrumbs.js +20 -8
  16. package/dist/cjs/listing/hooks/useListingCategories.js +2 -2
  17. package/dist/cjs/listing/hooks/useListingFilters.js +7 -1
  18. package/dist/cjs/listing/hooks/useListingMeta.js +51 -40
  19. package/dist/cjs/listing/hooks/useSlideFilter.js +27 -4
  20. package/dist/cjs/listing/ssr/prefetchCategories.js +5 -6
  21. package/dist/cjs/listing/ssr/prefetchPredicate.js +4 -4
  22. package/dist/cjs/listing/utils/buildCategoryQuery.js +22 -1
  23. package/dist/cjs/navigation/components/SearchBox/Components/EmptyBox/index.js +7 -7
  24. package/dist/cjs/navigation/components/SearchBox/index.js +4 -4
  25. package/dist/cjs/seo/components/TranslationsMeta/index.js +43 -14
  26. package/dist/cjs/seo/components/index.js +12 -0
  27. package/dist/cjs/seo/hooks/useSeoTranslations.js +55 -14
  28. package/dist/cjs/ui/components/GridStyles.js +2 -2
  29. package/dist/cjs/ui/components/RangeSliderInput.js +14 -1
  30. package/dist/cjs/user/api/queries/useGetMyLoyaltyCardQuery.js +49 -3
  31. package/dist/cjs/utils/getLocaleFromPath.js +13 -0
  32. package/dist/cjs/utils/getSelectedFilters.js +3 -1
  33. package/dist/cjs/utils/index.js +12 -0
  34. package/dist/cjs/utils/isTouchDevice.js +2 -1
  35. package/dist/cjs/utils/localStorage.js +7 -2
  36. package/dist/esm/analytics/Pixel/mainScript.js +2 -1
  37. package/dist/esm/api/getSDKConfig.js +5 -3
  38. package/dist/esm/api/myCartApi/index.js +8 -2
  39. package/dist/esm/basket/api/mutations/index.js +1 -0
  40. package/dist/esm/basket/api/mutations/useChangeGiftVariant.js +106 -0
  41. package/dist/esm/basket/hooks/index.js +1 -0
  42. package/dist/esm/basket/hooks/useChangeGiftVariant.js +3 -0
  43. package/dist/esm/config/SentecaProvider.js +3 -1
  44. package/dist/esm/hooks/useAggregateResult/index.js +5 -1
  45. package/dist/esm/hooks/useAvailability/index.js +1 -1
  46. package/dist/esm/hooks/useClearAllFilters/index.js +2 -0
  47. package/dist/esm/hooks/useProduct/index.js +28 -18
  48. package/dist/esm/hooks/wishlist-hooks/useWishlistItem/index.js +21 -13
  49. package/dist/esm/listing/api/queries/useListingQuery.js +1 -1
  50. package/dist/esm/listing/hooks/useListingBreadcrumbs.js +15 -3
  51. package/dist/esm/listing/hooks/useListingCategories.js +2 -2
  52. package/dist/esm/listing/hooks/useListingFilters.js +7 -1
  53. package/dist/esm/listing/hooks/useListingMeta.js +51 -42
  54. package/dist/esm/listing/hooks/useSlideFilter.js +27 -4
  55. package/dist/esm/listing/ssr/prefetchCategories.js +6 -7
  56. package/dist/esm/listing/ssr/prefetchPredicate.js +4 -4
  57. package/dist/esm/listing/utils/buildCategoryQuery.js +22 -1
  58. package/dist/esm/navigation/components/SearchBox/Components/EmptyBox/index.js +7 -7
  59. package/dist/esm/navigation/components/SearchBox/index.js +4 -4
  60. package/dist/esm/seo/components/TranslationsMeta/index.js +43 -14
  61. package/dist/esm/seo/components/index.js +1 -0
  62. package/dist/esm/seo/hooks/useSeoTranslations.js +55 -14
  63. package/dist/esm/ui/components/GridStyles.js +2 -2
  64. package/dist/esm/ui/components/RangeSliderInput.js +14 -1
  65. package/dist/esm/user/api/queries/useGetMyLoyaltyCardQuery.js +44 -3
  66. package/dist/esm/utils/getLocaleFromPath.js +8 -0
  67. package/dist/esm/utils/getSelectedFilters.js +3 -1
  68. package/dist/esm/utils/index.js +1 -0
  69. package/dist/esm/utils/isTouchDevice.js +2 -1
  70. package/dist/esm/utils/localStorage.js +7 -2
  71. package/dist/types/basket/api/mutations/index.d.ts +1 -0
  72. package/dist/types/basket/api/mutations/useChangeGiftVariant.d.ts +2 -0
  73. package/dist/types/basket/hooks/index.d.ts +1 -0
  74. package/dist/types/basket/hooks/useChangeGiftVariant.d.ts +2 -0
  75. package/dist/types/hooks/basket-hooks/useBasketLineItem/index.d.ts +1 -2
  76. package/dist/types/hooks/useProduct/index.d.ts +2 -1
  77. package/dist/types/listing/hooks/useListingMeta.d.ts +4 -0
  78. package/dist/types/listing/hooks/useSlideFilter.d.ts +4 -0
  79. package/dist/types/listing/types.d.ts +10 -0
  80. package/dist/types/navigation/components/SearchBox/Components/EmptyBox/index.d.ts +5 -4
  81. package/dist/types/navigation/components/SearchBox/index.d.ts +7 -6
  82. package/dist/types/seo/components/TranslationsMeta/index.d.ts +1 -0
  83. package/dist/types/seo/components/index.d.ts +1 -0
  84. package/dist/types/seo/hooks/useSeoTranslations.d.ts +5 -3
  85. package/dist/types/ui/components/GridStyles.d.ts +2 -1
  86. package/dist/types/ui/components/RangeSliderInput.d.ts +2 -1
  87. package/dist/types/utils/getLocaleFromPath.d.ts +1 -0
  88. package/dist/types/utils/index.d.ts +1 -0
  89. package/package.json +2 -2
@@ -1,6 +1,8 @@
1
1
  Object.defineProperty(exports, "__esModule", {
2
2
  value: true
3
3
  });
4
+ exports.getFilterByType = getFilterByType;
5
+ exports.getCategoryName = getCategoryName;
4
6
  exports.useListingMeta = void 0;
5
7
  var _react = _interopRequireDefault(require("react"));
6
8
  var _api = require("../api");
@@ -8,7 +10,6 @@ var _utils = require("../../utils");
8
10
  var _assetsToMap = require("../../utils/assetsToMap");
9
11
  var _router = require("next/router");
10
12
  var _utils1 = require("../utils");
11
- var _types = require("../types");
12
13
  var _index = require("../../index");
13
14
  var _useListingFilters = require("./useListingFilters");
14
15
  var _useListingCategories = require("./useListingCategories");
@@ -32,6 +33,33 @@ function _iterableToArray(iter) {
32
33
  function _nonIterableSpread() {
33
34
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
34
35
  }
36
+ function _objectWithoutProperties(source, excluded) {
37
+ if (source == null) return {};
38
+ var target = _objectWithoutPropertiesLoose(source, excluded);
39
+ var key, i;
40
+ if (Object.getOwnPropertySymbols) {
41
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
42
+ for(i = 0; i < sourceSymbolKeys.length; i++){
43
+ key = sourceSymbolKeys[i];
44
+ if (excluded.indexOf(key) >= 0) continue;
45
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
46
+ target[key] = source[key];
47
+ }
48
+ }
49
+ return target;
50
+ }
51
+ function _objectWithoutPropertiesLoose(source, excluded) {
52
+ if (source == null) return {};
53
+ var target = {};
54
+ var sourceKeys = Object.keys(source);
55
+ var key, i;
56
+ for(i = 0; i < sourceKeys.length; i++){
57
+ key = sourceKeys[i];
58
+ if (excluded.indexOf(key) >= 0) continue;
59
+ target[key] = source[key];
60
+ }
61
+ return target;
62
+ }
35
63
  function _toConsumableArray(arr) {
36
64
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
37
65
  }
@@ -90,74 +118,57 @@ var useListingMeta = function() {
90
118
  };
91
119
  exports.useListingMeta = useListingMeta;
92
120
  function processDisplayName(slug, config, name, breadcrumb, router, aggData, categoriesData) {
121
+ var ref, ref5, ref6;
93
122
  var listingName = (0, _utils).getTranslatableField(name);
94
123
  var brandName = getBrandName(router, aggData);
95
124
  var categoryName = getCategoryName(router, categoriesData);
96
125
  var type = (0, _utils1).getListingPageType(router, slug, config);
97
- if (type === _types.ListingTypesEnum.AttrPage) {
98
- return "Всичко за ".concat(config.titleAliases[slug]);
99
- }
100
- if (router === null || router === void 0 ? void 0 : router.query.cat) {
101
- var attribute = (0, _utils).getTranslatableField(breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.label);
102
- if (type === _types.ListingTypesEnum.Category) {
103
- if (!brandName) {
104
- return "".concat(listingName, " за ").concat(attribute);
105
- }
106
- return "".concat(listingName, " за ").concat(attribute, " от ").concat(brandName);
107
- }
108
- if (type === _types.ListingTypesEnum.Brand) {
109
- if (!categoryName) {
110
- return "Всички продукти от ".concat(listingName, " за ").concat(attribute);
111
- }
112
- return "".concat(categoryName, " от ").concat(listingName, " за ").concat(attribute);
113
- }
114
- }
115
- if (type === _types.ListingTypesEnum.Category && brandName) {
116
- return "".concat(listingName, " от ").concat(brandName);
117
- }
118
- if (type === _types.ListingTypesEnum.Brand) {
119
- if (!categoryName) {
120
- return "Всички продукти от ".concat(listingName);
121
- }
122
- return "".concat(categoryName, " от ").concat(listingName);
123
- }
124
- if (type === _types.ListingTypesEnum.Search && (router === null || router === void 0 ? void 0 : router.query.search)) {
125
- return "".concat(listingName, " от \"").concat(router.query.search, "\"");
126
- }
127
- return listingName;
126
+ var getTitle = config.getTitle, rest = _objectWithoutProperties(config, [
127
+ "getTitle"
128
+ ]);
129
+ var title = getTitle === null || getTitle === void 0 ? void 0 : getTitle(type, rest, {
130
+ category: categoryName,
131
+ brand: brandName,
132
+ defaultName: listingName,
133
+ attribute: (ref = config.titleAliases) === null || ref === void 0 ? void 0 : ref[slug],
134
+ childAttribute: (0, _utils).getTranslatableField(breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.label),
135
+ search: (router === null || router === void 0 ? void 0 : (ref5 = router.query) === null || ref5 === void 0 ? void 0 : ref5.q) || (router === null || router === void 0 ? void 0 : (ref6 = router.query) === null || ref6 === void 0 ? void 0 : ref6.search),
136
+ isWithAttribute: Boolean(router === null || router === void 0 ? void 0 : router.query.cat)
137
+ });
138
+ return title || listingName;
128
139
  }
129
140
  function getFilterByType(filterType, router) {
130
141
  var filterId = '';
131
142
  if (Array.isArray(router === null || router === void 0 ? void 0 : router.query.filter)) {
132
- var ref, ref5;
143
+ var ref, ref7;
133
144
  var filters = (ref = router === null || router === void 0 ? void 0 : router.query.filter) === null || ref === void 0 ? void 0 : ref.filter(function(x) {
134
145
  return x === null || x === void 0 ? void 0 : x.includes(filterType);
135
146
  });
136
147
  if ((filters === null || filters === void 0 ? void 0 : filters.length) && filters.length > 1) {
137
148
  return '';
138
149
  }
139
- var filterTerm = (ref5 = /\d+/.exec((filters === null || filters === void 0 ? void 0 : filters[0]) || '')) === null || ref5 === void 0 ? void 0 : ref5[0];
150
+ var filterTerm = (ref7 = /\d+/.exec((filters === null || filters === void 0 ? void 0 : filters[0]) || '')) === null || ref7 === void 0 ? void 0 : ref7[0];
140
151
  if (!filterTerm) return '';
141
152
  filterId = filterTerm;
142
153
  } else {
143
- var ref6, ref7, ref8;
144
- var isFiltered = router === null || router === void 0 ? void 0 : (ref6 = router.query) === null || ref6 === void 0 ? void 0 : (ref7 = ref6.filter) === null || ref7 === void 0 ? void 0 : ref7.includes(filterType);
154
+ var ref8, ref9, ref10;
155
+ var isFiltered = router === null || router === void 0 ? void 0 : (ref8 = router.query) === null || ref8 === void 0 ? void 0 : (ref9 = ref8.filter) === null || ref9 === void 0 ? void 0 : ref9.includes(filterType);
145
156
  if (!isFiltered) {
146
157
  return '';
147
158
  }
148
- filterId = (ref8 = /(\w+)-(\d+)/.exec(router === null || router === void 0 ? void 0 : router.query.filter)) === null || ref8 === void 0 ? void 0 : ref8[0];
159
+ filterId = (ref10 = /(\w+)-(\d+)/.exec(router === null || router === void 0 ? void 0 : router.query.filter)) === null || ref10 === void 0 ? void 0 : ref10[0];
149
160
  }
150
161
  return filterId;
151
162
  }
152
163
  function getBrandName(router, filtersData) {
153
- var ref, ref9, ref10;
164
+ var ref, ref11, ref12;
154
165
  var brandId = getFilterByType('brand', router);
155
166
  var brand = (ref = filtersData === null || filtersData === void 0 ? void 0 : filtersData.find(function(x) {
156
167
  return x.name === 'Brands';
157
- })) === null || ref === void 0 ? void 0 : (ref9 = ref.items) === null || ref9 === void 0 ? void 0 : ref9.find(function(x) {
168
+ })) === null || ref === void 0 ? void 0 : (ref11 = ref.items) === null || ref11 === void 0 ? void 0 : ref11.find(function(x) {
158
169
  return x.data.key === brandId;
159
170
  });
160
- return (0, _utils).getTranslatableField(brand === null || brand === void 0 ? void 0 : (ref10 = brand.meta) === null || ref10 === void 0 ? void 0 : ref10.name);
171
+ return (0, _utils).getTranslatableField(brand === null || brand === void 0 ? void 0 : (ref12 = brand.meta) === null || ref12 === void 0 ? void 0 : ref12.name);
161
172
  }
162
173
  function getCategoryName(router, categories) {
163
174
  var categoryId = getFilterByType('category', router);
@@ -56,7 +56,7 @@ function _unsupportedIterableToArray(o, minLen) {
56
56
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
57
57
  }
58
58
  var useSlideFilter = function(filterName, min, max) {
59
- var ref;
59
+ var ref3;
60
60
  var router = (0, _router).useRouter();
61
61
  var meta = (0, _).useListingConfig().meta;
62
62
  var slug = (0, _index).useListingAlias(meta).slug;
@@ -71,7 +71,7 @@ var useSlideFilter = function(filterName, min, max) {
71
71
  }
72
72
  if (allFilters.includes(filterQuery)) return allFilters;
73
73
  };
74
- var filter = (ref = getFilter()) === null || ref === void 0 ? void 0 : ref.replace(filterQuery, '');
74
+ var filter = (ref3 = getFilter()) === null || ref3 === void 0 ? void 0 : ref3.replace(filterQuery, '');
75
75
  var ref1 = _slicedToArray(filter ? filter.split(',') : [
76
76
  min,
77
77
  max
@@ -81,16 +81,38 @@ var useSlideFilter = function(filterName, min, max) {
81
81
  to: +to || max
82
82
  }), 2), state = ref2[0], setState = ref2[1];
83
83
  var timeoutRef = (0, _react).useRef();
84
- var updateValue = (0, _react).useCallback(function(data) {
84
+ var getFormattedPriceRange = function(data) {
85
85
  var formattedFrom = Math.min(Math.max(data.from, min), data.to);
86
86
  var formattedTo = Math.max(data.from, Math.min(data.to, max));
87
+ return {
88
+ formattedFrom: formattedFrom,
89
+ formattedTo: formattedTo
90
+ };
91
+ };
92
+ var updateValue = (0, _react).useCallback(function(data) {
93
+ var ref = getFormattedPriceRange(data), formattedFrom = ref.formattedFrom, formattedTo = ref.formattedTo;
94
+ setState({
95
+ from: formattedFrom,
96
+ to: formattedTo
97
+ });
98
+ }, [
99
+ filterName,
100
+ max,
101
+ min,
102
+ router,
103
+ slug
104
+ ]);
105
+ var applyFilter = (0, _react).useCallback(function(data) {
106
+ var ref = getFormattedPriceRange(data), formattedFrom = ref.formattedFrom, formattedTo = ref.formattedTo;
87
107
  clearTimeout(timeoutRef.current);
88
108
  timeoutRef.current = setTimeout(function() {
89
109
  router.push((0, _utils).createAggregateQuery((0, _utils1).getListingPageType(router, slug, meta), router.query.slug, {
90
110
  aggType: filterName,
91
111
  aggKey: "".concat(formattedFrom, ",").concat(formattedTo),
92
112
  aggOperator: _useListingFilters.filtersOperatorsMap.stats
93
- }, false, router, true));
113
+ }, false, router, true), undefined, {
114
+ shallow: true
115
+ });
94
116
  }, 500);
95
117
  setState({
96
118
  from: formattedFrom,
@@ -105,6 +127,7 @@ var useSlideFilter = function(filterName, min, max) {
105
127
  ]);
106
128
  return {
107
129
  value: state,
130
+ applyFilter: applyFilter,
108
131
  updateValue: updateValue
109
132
  };
110
133
  };
@@ -45,7 +45,7 @@ function prefetchCategories(queryCache, router, predicate, aggregates, config) {
45
45
  }
46
46
  function _prefetchCategories() {
47
47
  _prefetchCategories = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(queryCache, router, predicate, aggregates, config) {
48
- var aggregateKeys, aliasedSlug, slug, query, response;
48
+ var aggregateKeys, aliasedSlug, query, response;
49
49
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
50
50
  while(1)switch(_ctx.prev = _ctx.next){
51
51
  case 0:
@@ -54,19 +54,18 @@ function _prefetchCategories() {
54
54
  router: router,
55
55
  config: config
56
56
  });
57
- slug = (0, _utils).getSlug(router, aliasedSlug);
58
57
  query = (0, _api).prepareAggregateQuery({
59
58
  request: _api.AggregateRequestEnum.Categories,
60
59
  router: router,
61
60
  predicate: predicate,
62
61
  slug: aliasedSlug,
63
62
  aggregates: aggregates,
64
- postFilter: undefined,
63
+ postFilter: (0, _utils).getPostFilters(router),
65
64
  config: config
66
65
  });
67
- _ctx.next = 6;
66
+ _ctx.next = 5;
68
67
  return (0, _sdk).CatalogAggregate(query);
69
- case 6:
68
+ case 5:
70
69
  response = _ctx.sent;
71
70
  queryCache.setQueryData([
72
71
  _api.AggregateRequestEnum.Categories,
@@ -77,7 +76,7 @@ function _prefetchCategories() {
77
76
  staleTime: 30000
78
77
  });
79
78
  return _ctx.abrupt("return", response);
80
- case 9:
79
+ case 8:
81
80
  case "end":
82
81
  return _ctx.stop();
83
82
  }
@@ -44,20 +44,20 @@ function prefetchPredicate(queryCache, router, config) {
44
44
  }
45
45
  function _prefetchPredicate() {
46
46
  _prefetchPredicate = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(queryCache, router, config) {
47
- var attribute, aliasedSlug, slug, data;
47
+ var aliasedSlug, slug, data, attribute;
48
48
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
49
49
  while(1)switch(_ctx.prev = _ctx.next){
50
50
  case 0:
51
- attribute = router.query.cat && router.query.slug;
52
51
  aliasedSlug = (0, _utils).getListingAlias({
53
52
  router: router,
54
53
  config: config
55
54
  });
56
55
  slug = (0, _utils).getSlug(router, aliasedSlug);
57
- _ctx.next = 5;
56
+ _ctx.next = 4;
58
57
  return (0, _api).processPredicateRequest(slug, router, aliasedSlug);
59
- case 5:
58
+ case 4:
60
59
  data = _ctx.sent;
60
+ attribute = router.query.cat && aliasedSlug;
61
61
  queryCache.setQueryData([
62
62
  _api.ListingQueryKeysEnum.usePredicate,
63
63
  slug,
@@ -64,7 +64,7 @@ var buildCategoryQuery = function(param) {
64
64
  filter += (ref = config === null || config === void 0 ? void 0 : config.filterExtension) !== null && ref !== void 0 ? ref : '';
65
65
  }
66
66
  if (postFilter) {
67
- if (router.query.cat) filter += '&';
67
+ if (filter) filter += '&';
68
68
  filter += postFilter;
69
69
  }
70
70
  break;
@@ -81,6 +81,14 @@ var buildCategoryQuery = function(param) {
81
81
  filter += "text;eq;\"".concat(searchQuery, "\"");
82
82
  if (postFilter) filter += "&".concat(postFilter);
83
83
  break;
84
+ case _index.ListingTypesEnum.View:
85
+ filter += applyViewsPostFilter({
86
+ postFilter: postFilter
87
+ });
88
+ if (config === null || config === void 0 ? void 0 : config.filterExtension) {
89
+ filter += filter ? "&".concat(config === null || config === void 0 ? void 0 : config.filterExtension) : config === null || config === void 0 ? void 0 : config.filterExtension;
90
+ }
91
+ break;
84
92
  default:
85
93
  return "".concat((config === null || config === void 0 ? void 0 : config.filterExtension) + "".concat(postFilter !== null && postFilter !== void 0 ? postFilter : ''));
86
94
  }
@@ -113,3 +121,16 @@ var applyBrandsPostFilter = function(param) {
113
121
  }
114
122
  return '';
115
123
  };
124
+ var applyViewsPostFilter = function(param) {
125
+ var postFilter = param.postFilter;
126
+ if (postFilter) {
127
+ var filtersArr = postFilter.split('&');
128
+ var filters = filtersArr.reduce(function(res, val, i) {
129
+ if (val.includes('category')) return res;
130
+ if (!res) return res + "".concat(val);
131
+ return res += "&".concat(val);
132
+ }, '');
133
+ return "".concat(filters);
134
+ }
135
+ return '';
136
+ };
@@ -89,38 +89,38 @@ var EmptyBox = function(param) {
89
89
  textColor: textColor || '',
90
90
  onClose: onClose
91
91
  })), /*#__PURE__*/ _react.default.createElement(SuggestedSearches, null, canDisplayPopular && /*#__PURE__*/ _react.default.createElement(_.PopularSearches, {
92
- title: (labels === null || labels === void 0 ? void 0 : labels.popularSearchesLabel) || '',
92
+ title: (labels === null || labels === void 0 ? void 0 : labels.popularSearches) || '',
93
93
  onClose: onClose,
94
94
  textColor: textColor || '',
95
95
  labelsColor: labelsColor || ''
96
96
  }), withRecent && canDisplayRecent && /*#__PURE__*/ _react.default.createElement(_.RecentSearches, {
97
- title: (labels === null || labels === void 0 ? void 0 : labels.recentSearchesLabel) || '',
97
+ title: (labels === null || labels === void 0 ? void 0 : labels.recentSearches) || '',
98
98
  data: searchHistory,
99
99
  onClose: onClose,
100
100
  textColor: textColor || '',
101
101
  labelsColor: labelsColor || ''
102
102
  }))) : /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_.Container, {
103
103
  labelsColor: labelsColor,
104
- title: (labels === null || labels === void 0 ? void 0 : labels.productsLabel) || '',
104
+ title: (labels === null || labels === void 0 ? void 0 : labels.products) || '',
105
105
  onlyMobile: true
106
106
  }, /*#__PURE__*/ _react.default.createElement(NoResultsDesc, {
107
107
  className: "SEARCH_BOX_NO_RESULT"
108
- }, "No results found")), /*#__PURE__*/ _react.default.createElement(PromoCol, {
108
+ }, labels === null || labels === void 0 ? void 0 : labels.noResults)), /*#__PURE__*/ _react.default.createElement(PromoCol, {
109
109
  backgroundColor: backgroundColor
110
110
  }, /*#__PURE__*/ _react.default.createElement(_.Products, {
111
111
  data: promoOffers,
112
112
  textColor: textColor || '',
113
113
  labelsColor: labelsColor || '',
114
114
  onClose: onClose,
115
- title: (labels === null || labels === void 0 ? void 0 : labels.promoOffersLabel) || '',
115
+ title: (labels === null || labels === void 0 ? void 0 : labels.promoOffers) || '',
116
116
  offers: true
117
117
  })), /*#__PURE__*/ _react.default.createElement(_.Container, {
118
118
  labelsColor: labelsColor,
119
- title: (labels === null || labels === void 0 ? void 0 : labels.productsLabel) || '',
119
+ title: (labels === null || labels === void 0 ? void 0 : labels.products) || '',
120
120
  onlyDesktop: true
121
121
  }, /*#__PURE__*/ _react.default.createElement(NoResultsDesc, {
122
122
  className: "SEARCH_BOX_NO_RESULT"
123
- }, "No results found"))))));
123
+ }, labels === null || labels === void 0 ? void 0 : labels.noResults))))));
124
124
  };
125
125
  exports.EmptyBox = EmptyBox;
126
126
  var Wrapper = _styledComponents.default.div.attrs({
@@ -203,14 +203,14 @@ var SearchBox = function(param) {
203
203
  data: displayableBrands,
204
204
  onClose: onClose,
205
205
  searchValue: searchValue || '',
206
- title: (labels === null || labels === void 0 ? void 0 : labels.suggestedBrandsLabel) || '',
206
+ title: (labels === null || labels === void 0 ? void 0 : labels.suggestedBrands) || '',
207
207
  labelsColor: labelsColor || '',
208
208
  textColor: textColor || ''
209
209
  })), suggestedCategories.length > 0 && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_components.Suggestions, {
210
210
  data: suggestedCategories,
211
211
  onClose: onClose,
212
212
  searchValue: searchValue || '',
213
- title: (labels === null || labels === void 0 ? void 0 : labels.suggestedCategoriesLabel) || '',
213
+ title: (labels === null || labels === void 0 ? void 0 : labels.suggestedCategories) || '',
214
214
  labelsColor: labelsColor || '',
215
215
  textColor: textColor || ''
216
216
  }))), /*#__PURE__*/ _react.default.createElement(ProductsWrapper, {
@@ -218,7 +218,7 @@ var SearchBox = function(param) {
218
218
  }, /*#__PURE__*/ _react.default.createElement(_components.Products, {
219
219
  data: suggestions,
220
220
  bottomMenu: bottomMenu,
221
- title: labels === null || labels === void 0 ? void 0 : labels.productsLabel,
221
+ title: labels === null || labels === void 0 ? void 0 : labels.products,
222
222
  priceColor: priceColor,
223
223
  labelsColor: labelsColor,
224
224
  textColor: textColor,
@@ -227,7 +227,7 @@ var SearchBox = function(param) {
227
227
  productSpacing: productSpacing
228
228
  }), bottomMenu === BottomMenuEnum.promo && promoOffers && /*#__PURE__*/ _react.default.createElement(_components.Products, {
229
229
  data: promoOffers,
230
- title: labels.promoOffersLabel,
230
+ title: labels.promoOffers,
231
231
  labelsColor: labelsColor,
232
232
  textColor: textColor,
233
233
  onClose: onClose,
@@ -5,25 +5,54 @@ exports.TranslationsMeta = void 0;
5
5
  var _react = _interopRequireDefault(require("react"));
6
6
  var _useSeoTranslations = require("../../hooks/useSeoTranslations");
7
7
  var _head = _interopRequireDefault(require("next/head"));
8
+ var _router = require("next/router");
9
+ function _extends() {
10
+ _extends = Object.assign || function(target) {
11
+ for(var i = 1; i < arguments.length; i++){
12
+ var source = arguments[i];
13
+ for(var key in source){
14
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
15
+ target[key] = source[key];
16
+ }
17
+ }
18
+ }
19
+ return target;
20
+ };
21
+ return _extends.apply(this, arguments);
22
+ }
8
23
  function _interopRequireDefault(obj) {
9
24
  return obj && obj.__esModule ? obj : {
10
25
  default: obj
11
26
  };
12
27
  }
13
28
  var TranslationsMeta = function() {
14
- var ref = (0, _useSeoTranslations).useSeoTranslations() || {}, translations = ref.translations, defaultLocaleSlug = ref.defaultLocaleSlug;
15
- if (!translations || !defaultLocaleSlug) return null;
16
- return(/*#__PURE__*/ _react.default.createElement(_head.default, null, translations === null || translations === void 0 ? void 0 : translations.map(function(translation) {
17
- return(/*#__PURE__*/ _react.default.createElement("link", {
18
- rel: "alternate",
19
- hrefLang: translation.locale,
20
- href: translation.slug,
21
- key: 'Translation__' + translation.slug
22
- }));
23
- }), /*#__PURE__*/ _react.default.createElement("link", {
24
- rel: "alternate",
25
- hrefLang: "x-default",
26
- href: defaultLocaleSlug
27
- })));
29
+ var ref = (0, _useSeoTranslations).useSeoTranslations(), translationsMap = ref.translationsMap, allLocales = ref.allLocales, defaultLocale = ref.defaultLocale;
30
+ var router = (0, _router).useRouter();
31
+ var defaultTranslation = translationsMap[defaultLocale];
32
+ var isError = router.route === '/404' || router.route === '/_error';
33
+ if (isError) return null;
34
+ var domain = defaultTranslation === null || defaultTranslation === void 0 ? void 0 : defaultTranslation.domain;
35
+ return(/*#__PURE__*/ _react.default.createElement(_head.default, null, allLocales === null || allLocales === void 0 ? void 0 : allLocales.map(function(locale) {
36
+ var translation = translationsMap === null || translationsMap === void 0 ? void 0 : translationsMap[locale];
37
+ var href = translation === null || translation === void 0 ? void 0 : translation.slug;
38
+ // go to the same page but with the right locale.
39
+ // This is for pages that does not have a translated slug
40
+ // example: /checkout -> /en/checkout, /ro/checkout
41
+ if (!href) href = "/".concat(locale).concat(router.asPath);
42
+ return(/*#__PURE__*/ _react.default.createElement("link", _extends({
43
+ rel: "alternate"
44
+ }, {
45
+ hreflang: locale
46
+ }, {
47
+ href: domain + href,
48
+ key: 'Translation__' + href
49
+ })));
50
+ }), defaultTranslation && /*#__PURE__*/ _react.default.createElement("link", _extends({
51
+ rel: "alternate"
52
+ }, {
53
+ hreflang: 'x-default'
54
+ }, {
55
+ href: "".concat(domain).concat(defaultTranslation === null || defaultTranslation === void 0 ? void 0 : defaultTranslation.slug)
56
+ }))));
28
57
  };
29
58
  exports.TranslationsMeta = TranslationsMeta;
@@ -74,6 +74,18 @@ Object.keys(_hiddenBreadcrumb).forEach(function(key) {
74
74
  }
75
75
  });
76
76
  });
77
+ var _translationsMeta = _interopRequireWildcard(require("./TranslationsMeta"));
78
+ Object.keys(_translationsMeta).forEach(function(key) {
79
+ if (key === "default" || key === "__esModule") return;
80
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
81
+ if (key in exports && exports[key] === _translationsMeta[key]) return;
82
+ Object.defineProperty(exports, key, {
83
+ enumerable: true,
84
+ get: function() {
85
+ return _translationsMeta[key];
86
+ }
87
+ });
88
+ });
77
89
  function _interopRequireWildcard(obj) {
78
90
  if (obj && obj.__esModule) {
79
91
  return obj;
@@ -3,40 +3,81 @@ Object.defineProperty(exports, "__esModule", {
3
3
  });
4
4
  exports.useSeoTranslations = exports.SeoTranslationsProvider = void 0;
5
5
  var _react = _interopRequireDefault(require("react"));
6
+ var _router = require("next/router");
7
+ function _defineProperty(obj, key, value) {
8
+ if (key in obj) {
9
+ Object.defineProperty(obj, key, {
10
+ value: value,
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true
14
+ });
15
+ } else {
16
+ obj[key] = value;
17
+ }
18
+ return obj;
19
+ }
6
20
  function _interopRequireDefault(obj) {
7
21
  return obj && obj.__esModule ? obj : {
8
22
  default: obj
9
23
  };
10
24
  }
25
+ function _objectSpread(target) {
26
+ for(var i = 1; i < arguments.length; i++){
27
+ var source = arguments[i] != null ? arguments[i] : {};
28
+ var ownKeys = Object.keys(source);
29
+ if (typeof Object.getOwnPropertySymbols === "function") {
30
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
31
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
32
+ }));
33
+ }
34
+ ownKeys.forEach(function(key) {
35
+ _defineProperty(target, key, source[key]);
36
+ });
37
+ }
38
+ return target;
39
+ }
11
40
  var SeoTranslationsContext = /*#__PURE__*/ _react.default.createContext({});
12
41
  var SeoTranslationsProvider = function(param) {
13
42
  var children = param.children, translations = param.translations, defaultLocale = param.defaultLocale, localesMap = param.localesMap;
43
+ var router = (0, _router).useRouter();
44
+ var currentLocale = router.locale;
45
+ var currentPath = router.asPath;
14
46
  var data1 = _react.default.useMemo(function() {
15
- var defaultLocaleSlug = '';
16
- var list = Object.keys(translations || {}).filter(function(lang) {
47
+ if (!translations) translations = {};
48
+ translations[currentLocale] = {
49
+ slug: currentPath.split('?')[0].replace("/".concat(currentLocale), ''),
50
+ title: '',
51
+ id: Date.now().toString()
52
+ };
53
+ var map = Object.keys(translations || {}).filter(function(lang) {
17
54
  return Boolean(localesMap[lang]);
18
- }).map(function(lang) {
55
+ }).reduce(function(acc, lang) {
56
+ var ref;
19
57
  var data = translations === null || translations === void 0 ? void 0 : translations[lang];
20
58
  var localeData = localesMap[lang];
21
59
  var isDefault = defaultLocale === lang;
22
- var slug = "".concat(localeData.domain, "/").concat(isDefault ? lang + '/' : '').concat(data.slug);
23
- if (isDefault) defaultLocaleSlug = slug;
24
- return {
60
+ var isFrontPage = data.slug === '/';
61
+ var prefix = ((ref = data.slug) === null || ref === void 0 ? void 0 : ref[0]) === '/' ? '' : '/';
62
+ var slug = "".concat(isDefault ? '' : "/".concat(lang)).concat(prefix).concat(isFrontPage ? '' : data.slug);
63
+ return _objectSpread({}, acc, _defineProperty({}, lang, {
25
64
  slug: slug,
26
- title: data.title,
27
65
  locale: lang,
28
- isDefault: isDefault
29
- };
30
- });
66
+ isDefault: isDefault,
67
+ domain: "https://".concat(localeData.domain)
68
+ }));
69
+ }, {});
31
70
  return {
32
- translations: list,
71
+ translationsMap: map,
33
72
  defaultLocale: defaultLocale,
34
- defaultLocaleSlug: defaultLocaleSlug
73
+ allLocales: Object.keys(localesMap)
35
74
  };
36
75
  }, [
37
76
  defaultLocale,
38
77
  translations,
39
- localesMap
78
+ localesMap,
79
+ currentLocale,
80
+ currentPath
40
81
  ]);
41
82
  return(/*#__PURE__*/ _react.default.createElement(SeoTranslationsContext.Provider, {
42
83
  value: data1
@@ -44,6 +85,6 @@ var SeoTranslationsProvider = function(param) {
44
85
  };
45
86
  exports.SeoTranslationsProvider = SeoTranslationsProvider;
46
87
  var useSeoTranslations = function() {
47
- return _react.default.useContext(SeoTranslationsContext);
88
+ return _react.default.useContext(SeoTranslationsContext) || {};
48
89
  };
49
90
  exports.useSeoTranslations = useSeoTranslations;
@@ -9,7 +9,7 @@ function _interopRequireDefault(obj) {
9
9
  };
10
10
  }
11
11
  var GridStyles = function(param) {
12
- var spaceX = param.spaceX, breakpoints = param.breakpoints, _remSize = param.remSize, remSize = _remSize === void 0 ? 10 : _remSize;
12
+ var spaceX = param.spaceX, breakpoints = param.breakpoints, _remSize = param.remSize, remSize = _remSize === void 0 ? 10 : _remSize, _spaceBetweenSections = param.spaceBetweenSections, spaceBetweenSections = _spaceBetweenSections === void 0 ? 80 : _spaceBetweenSections;
13
13
  function getSize(width) {
14
14
  return "min-width: calc(".concat(width, "% - ").concat(spaceX / remSize, "rem);") + "max-width: calc(".concat(width, "% - ").concat(spaceX / remSize, "rem);") + "margin: 0 ".concat(spaceX / 2 / remSize, "rem;");
15
15
  }
@@ -29,7 +29,7 @@ var GridStyles = function(param) {
29
29
  }, '');
30
30
  return(/*#__PURE__*/ _react.default.createElement("style", {
31
31
  dangerouslySetInnerHTML: {
32
- __html: "\n .Page--row {\n display: flex;\n display: -webkit-flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n margin: 0 -".concat(spaceX / remSize / 2, "rem;\n }\n\n .Page__section {\n padding-bottom: 8rem;\n }\n\n .Page--col {\n display: block;\n width: 100%;\n }\n \n .size-default-inherit {\n width: 100%;\n }\n ").concat(queries, "\n ")
32
+ __html: "\n .Page--row {\n display: flex;\n display: -webkit-flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n margin: 0 -".concat(spaceX / remSize / 2, "rem;\n }\n\n .Page__section {\n padding-bottom: ").concat(spaceBetweenSections / remSize, "rem;\n }\n\n .Page--col {\n display: block;\n width: 100%;\n }\n \n .size-default-inherit {\n width: 100%;\n }\n ").concat(queries, "\n ")
33
33
  }
34
34
  }));
35
35
  };