@bonlineza/luxity-lib 2.35.8 → 2.35.9
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.
- package/LuxityDesktopHeader.js +47 -20
- package/LuxityMobileHeader.js +47 -20
- package/build/bundle.css +1 -1
- package/build/bundle.js +47 -20
- package/package.json +1 -1
package/LuxityDesktopHeader.js
CHANGED
|
@@ -697,6 +697,7 @@
|
|
|
697
697
|
var endpoint = _ref.endpoint,
|
|
698
698
|
onProductIdsReceived = _ref.onProductIdsReceived,
|
|
699
699
|
currency = _ref.currency;
|
|
700
|
+
var currentSearchRequestToken = React.useRef(null);
|
|
700
701
|
var debounce = React.useCallback(function (func, wait) {
|
|
701
702
|
var timeout;
|
|
702
703
|
return function executedFunction() {
|
|
@@ -727,49 +728,75 @@
|
|
|
727
728
|
});
|
|
728
729
|
});
|
|
729
730
|
}, []);
|
|
730
|
-
var performSearch = React.useCallback(function (
|
|
731
|
-
if (!
|
|
731
|
+
var performSearch = React.useCallback(function (searchQuery, setSearchResults) {
|
|
732
|
+
if (!searchQuery || searchQuery.trim() === '') {
|
|
732
733
|
setSearchResults({
|
|
733
734
|
brands: [],
|
|
734
735
|
products: [],
|
|
735
736
|
luxity_product_ids: []
|
|
736
737
|
});
|
|
737
738
|
return;
|
|
738
|
-
}
|
|
739
|
+
} // Cancel any ongoing search request to prevent race conditions
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
if (currentSearchRequestToken.current) {
|
|
743
|
+
currentSearchRequestToken.current.cancel();
|
|
744
|
+
} // Create a new token for this specific search request
|
|
739
745
|
|
|
740
|
-
axios.post(endpoint, searchProducts(nextValue, 3, currency)).then(function (response) {
|
|
741
|
-
var searchResults = response.data.data.luxity_products_serach_results;
|
|
742
|
-
setSearchResults(searchResults);
|
|
743
746
|
|
|
744
|
-
|
|
745
|
-
|
|
747
|
+
var newSearchToken = axios.CancelToken.source();
|
|
748
|
+
currentSearchRequestToken.current = newSearchToken;
|
|
749
|
+
axios.post(endpoint, searchProducts(searchQuery, 3, currency), {
|
|
750
|
+
cancelToken: newSearchToken.token
|
|
751
|
+
}).then(function (response) {
|
|
752
|
+
if (currentSearchRequestToken.current === newSearchToken) {
|
|
753
|
+
var searchResults = response.data.data.luxity_products_serach_results;
|
|
754
|
+
setSearchResults(searchResults);
|
|
755
|
+
|
|
756
|
+
if (searchResults && searchResults.luxity_product_ids) {
|
|
757
|
+
onProductIdsReceived(searchResults.luxity_product_ids);
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
currentSearchRequestToken.current = null;
|
|
761
|
+
}
|
|
762
|
+
}).catch(function (error) {
|
|
763
|
+
if (!axios.isCancel(error)) {
|
|
764
|
+
setSearchResults({
|
|
765
|
+
brands: [],
|
|
766
|
+
products: [],
|
|
767
|
+
luxity_product_ids: []
|
|
768
|
+
});
|
|
769
|
+
currentSearchRequestToken.current = null;
|
|
746
770
|
}
|
|
747
|
-
}).catch(function () {
|
|
748
|
-
setSearchResults({
|
|
749
|
-
brands: [],
|
|
750
|
-
products: [],
|
|
751
|
-
luxity_product_ids: []
|
|
752
|
-
});
|
|
753
771
|
});
|
|
754
772
|
}, [endpoint, currency, onProductIdsReceived]);
|
|
755
773
|
var debouncedSearch = React.useMemo(function () {
|
|
756
|
-
return debounce(function (
|
|
757
|
-
return performSearch(
|
|
774
|
+
return debounce(function (searchQuery, setSearchResults) {
|
|
775
|
+
return performSearch(searchQuery, setSearchResults);
|
|
758
776
|
}, 500);
|
|
759
777
|
}, [debounce, performSearch]);
|
|
760
778
|
var createDebouncedSearch = React.useCallback(function (setSearchResults) {
|
|
761
|
-
return function (
|
|
762
|
-
return debouncedSearch(
|
|
779
|
+
return function (searchQuery) {
|
|
780
|
+
return debouncedSearch(searchQuery, setSearchResults);
|
|
763
781
|
};
|
|
764
782
|
}, [debouncedSearch]);
|
|
765
783
|
var createImmediateSearch = React.useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
|
|
766
|
-
return function (
|
|
784
|
+
return function (searchQuery) {
|
|
785
|
+
/*
|
|
786
|
+
* Cancel any pending search request when immediate search is performed
|
|
787
|
+
* Immediate search is when the user types a search query and presses enter
|
|
788
|
+
*/
|
|
789
|
+
if (currentSearchRequestToken.current) {
|
|
790
|
+
currentSearchRequestToken.current.cancel();
|
|
791
|
+
currentSearchRequestToken.current = null;
|
|
792
|
+
}
|
|
793
|
+
|
|
767
794
|
setSearchValue('');
|
|
768
795
|
setSearchResults({
|
|
769
796
|
brands: [],
|
|
770
797
|
products: []
|
|
771
798
|
});
|
|
772
|
-
onSearchSubmit(
|
|
799
|
+
onSearchSubmit(searchQuery);
|
|
773
800
|
};
|
|
774
801
|
}, []);
|
|
775
802
|
return {
|
package/LuxityMobileHeader.js
CHANGED
|
@@ -1205,6 +1205,7 @@
|
|
|
1205
1205
|
var endpoint = _ref.endpoint,
|
|
1206
1206
|
onProductIdsReceived = _ref.onProductIdsReceived,
|
|
1207
1207
|
currency = _ref.currency;
|
|
1208
|
+
var currentSearchRequestToken = React.useRef(null);
|
|
1208
1209
|
var debounce = React.useCallback(function (func, wait) {
|
|
1209
1210
|
var timeout;
|
|
1210
1211
|
return function executedFunction() {
|
|
@@ -1235,49 +1236,75 @@
|
|
|
1235
1236
|
});
|
|
1236
1237
|
});
|
|
1237
1238
|
}, []);
|
|
1238
|
-
var performSearch = React.useCallback(function (
|
|
1239
|
-
if (!
|
|
1239
|
+
var performSearch = React.useCallback(function (searchQuery, setSearchResults) {
|
|
1240
|
+
if (!searchQuery || searchQuery.trim() === '') {
|
|
1240
1241
|
setSearchResults({
|
|
1241
1242
|
brands: [],
|
|
1242
1243
|
products: [],
|
|
1243
1244
|
luxity_product_ids: []
|
|
1244
1245
|
});
|
|
1245
1246
|
return;
|
|
1246
|
-
}
|
|
1247
|
+
} // Cancel any ongoing search request to prevent race conditions
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
if (currentSearchRequestToken.current) {
|
|
1251
|
+
currentSearchRequestToken.current.cancel();
|
|
1252
|
+
} // Create a new token for this specific search request
|
|
1247
1253
|
|
|
1248
|
-
axios.post(endpoint, searchProducts(nextValue, 3, currency)).then(function (response) {
|
|
1249
|
-
var searchResults = response.data.data.luxity_products_serach_results;
|
|
1250
|
-
setSearchResults(searchResults);
|
|
1251
1254
|
|
|
1252
|
-
|
|
1253
|
-
|
|
1255
|
+
var newSearchToken = axios.CancelToken.source();
|
|
1256
|
+
currentSearchRequestToken.current = newSearchToken;
|
|
1257
|
+
axios.post(endpoint, searchProducts(searchQuery, 3, currency), {
|
|
1258
|
+
cancelToken: newSearchToken.token
|
|
1259
|
+
}).then(function (response) {
|
|
1260
|
+
if (currentSearchRequestToken.current === newSearchToken) {
|
|
1261
|
+
var searchResults = response.data.data.luxity_products_serach_results;
|
|
1262
|
+
setSearchResults(searchResults);
|
|
1263
|
+
|
|
1264
|
+
if (searchResults && searchResults.luxity_product_ids) {
|
|
1265
|
+
onProductIdsReceived(searchResults.luxity_product_ids);
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
currentSearchRequestToken.current = null;
|
|
1269
|
+
}
|
|
1270
|
+
}).catch(function (error) {
|
|
1271
|
+
if (!axios.isCancel(error)) {
|
|
1272
|
+
setSearchResults({
|
|
1273
|
+
brands: [],
|
|
1274
|
+
products: [],
|
|
1275
|
+
luxity_product_ids: []
|
|
1276
|
+
});
|
|
1277
|
+
currentSearchRequestToken.current = null;
|
|
1254
1278
|
}
|
|
1255
|
-
}).catch(function () {
|
|
1256
|
-
setSearchResults({
|
|
1257
|
-
brands: [],
|
|
1258
|
-
products: [],
|
|
1259
|
-
luxity_product_ids: []
|
|
1260
|
-
});
|
|
1261
1279
|
});
|
|
1262
1280
|
}, [endpoint, currency, onProductIdsReceived]);
|
|
1263
1281
|
var debouncedSearch = React.useMemo(function () {
|
|
1264
|
-
return debounce(function (
|
|
1265
|
-
return performSearch(
|
|
1282
|
+
return debounce(function (searchQuery, setSearchResults) {
|
|
1283
|
+
return performSearch(searchQuery, setSearchResults);
|
|
1266
1284
|
}, 500);
|
|
1267
1285
|
}, [debounce, performSearch]);
|
|
1268
1286
|
var createDebouncedSearch = React.useCallback(function (setSearchResults) {
|
|
1269
|
-
return function (
|
|
1270
|
-
return debouncedSearch(
|
|
1287
|
+
return function (searchQuery) {
|
|
1288
|
+
return debouncedSearch(searchQuery, setSearchResults);
|
|
1271
1289
|
};
|
|
1272
1290
|
}, [debouncedSearch]);
|
|
1273
1291
|
var createImmediateSearch = React.useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
|
|
1274
|
-
return function (
|
|
1292
|
+
return function (searchQuery) {
|
|
1293
|
+
/*
|
|
1294
|
+
* Cancel any pending search request when immediate search is performed
|
|
1295
|
+
* Immediate search is when the user types a search query and presses enter
|
|
1296
|
+
*/
|
|
1297
|
+
if (currentSearchRequestToken.current) {
|
|
1298
|
+
currentSearchRequestToken.current.cancel();
|
|
1299
|
+
currentSearchRequestToken.current = null;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1275
1302
|
setSearchValue('');
|
|
1276
1303
|
setSearchResults({
|
|
1277
1304
|
brands: [],
|
|
1278
1305
|
products: []
|
|
1279
1306
|
});
|
|
1280
|
-
onSearchSubmit(
|
|
1307
|
+
onSearchSubmit(searchQuery);
|
|
1281
1308
|
};
|
|
1282
1309
|
}, []);
|
|
1283
1310
|
return {
|
package/build/bundle.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.navbar{box-shadow:2px 2px 10px #dfdede;display:flex;padding-bottom:10px;padding-top:20px;position:relative}.navbar__link-item--desktop{align-items:center;display:flex;height:35px;margin:auto 0;padding-top:5px}.navbar__mobile-wrapper{align-items:center;display:flex;flex-direction:column;padding-bottom:20px;padding-left:32px;padding-right:32px}.navbar__container{display:flex;margin:0 auto;max-width:1280px;padding-left:12px;padding-right:12px;width:100%}.navbar__body{flex-basis:60%}.navbar__wrapper{align-items:center;display:flex;justify-content:space-between;width:100%}.navbar__product-search-wrapper{align-items:center;display:flex;justify-content:center;padding:0 20%;width:100%}@media only screen and (max-width:879px){.navbar__product-search-wrapper{padding:0}}.navbar__input-close-icon{height:auto;margin-bottom:10px;margin-left:10px;width:20px}@media only screen and (max-width:879px){.navbar__input-close-icon{margin-bottom:0;margin-left:0;width:15px}}.navbar__menu-icon{width:30px}.navbar__product-search{align-items:center;display:flex;max-width:545px;width:100%}.navbar__logo-wrapper{margin-right:18px;width:200px}.navbar__logo{width:200px}@media only screen and (max-width:879px){.navbar__logo{margin-left:10px;margin-top:5px;width:125px}}.navbar__form-input{align-items:center;background:transparent;border:none;display:flex;font-size:13px;outline:none;padding:8px;width:100%}.navbar__product-search{border:1px solid #dfdede;margin-bottom:10px}@media only screen and (max-width:879px){.navbar__product-search{border:none;border-bottom:1px solid #dfdede;margin-bottom:0;margin-right:10px;margin-top:10px}}.navbar__section{align-items:flex-start;display:flex;flex-direction:row;justify-content:space-between;width:100%}.navbar__link{display:inline-block;font-family:Martel Sans;font-size:14px;font-weight:700;margin-right:10px;overflow:hidden;text-transform:uppercase;transition:.3s ease-in-out}.navbar__link:after{background-color:#000;content:"";display:block;height:2px;transition:width .25s ease-out;width:0}.navbar__link:hover:after{width:100%}.navbar__link:hover .navbar__dropdown{animation:fadeInDropdown .3s ease-in-out;display:block}.navbar__dropdown{background-color:#fff;box-shadow:5px 5px 5px #dfdede;display:none;left:0;position:absolute;width:100%;z-index:999}@keyframes fadeInDropdown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.navbar__company-link{font-size:13px;font-weight:400;list-style:none;margin-left:18px;text-decoration:none}.navbar__company-block{align-items:center;background-color:#000;color:#fff;display:flex;font-weight:700;height:33px;justify-content:center;margin-right:0;padding:0 18px;text-transform:uppercase}.navbar__input-search-icon{height:auto;margin-left:1.125rem;margin-right:.375rem;width:15px}.navbar__nav-links{align-items:center;display:flex}.navbar__nav-links--wrap{flex-wrap:wrap}.navbar__icons{align-items:center;display:flex;height:40px;justify-content:flex-end;margin-bottom:10px}@media only screen and (max-width:879px){.navbar__icons{display:block;height:20px;margin-bottom:0}}.navbar__icon{cursor:pointer;height:auto;margin-right:18px;width:20px}@media only screen and (max-width:879px){.navbar__icon{margin-right:0}}.navbar__icon--app{cursor:pointer;height:auto;margin-left:12px;width:20px}@media only screen and (max-width:879px){.navbar__icon--app{margin-right:0}}.navbar__vip-icon{height:16px;position:absolute;right:-12px;top:-4px;width:16px}.navbar__cart-icon{position:relative}.navbar__cart-count{align-items:center;background-color:#000;border-radius:50%;bottom:50%;color:#fff;display:flex;font-size:13px;height:20px;justify-content:center;left:100%;position:absolute;width:20px}.side-nav{font-family:Martel Sans}.side-nav__errors{align-items:center;color:red;display:flex;font-size:16px;justify-content:center}.side-nav__overlay{background-color:rgba(78,73,73,.51);height:100%;opacity:0;position:fixed;top:0;transition:opacity .5s ease-out 0s,visibility .5s ease-out 0s;width:100%;z-index:99999}.side-nav__overlay--visible{opacity:1;visibility:visible}.side-nav__overlay--hidden{opacity:1;visibility:hidden}.side-nav__content{background-color:#fff;bottom:0;overflow-y:scroll;padding:1.5rem;position:fixed;top:0;transition:left .5s ease-in-out;width:80%;z-index:99999}.side-nav__content--hidden{display:none}.side-nav__content--open{left:0}.side-nav__content--closed{left:-100%}.side-nav__menu-title-wrapper{align-items:center;background-color:transparent;border:none;display:flex;justify-content:space-between;outline:none;width:100%}.side-nav__icon-container{float:right;margin-bottom:10px}.side-nav__menu-title{font-size:14px;font-weight:700;line-height:20px;text-transform:uppercase}.side-nav__accordion-icon{height:auto;width:15px}.side-nav__menu-item{margin-bottom:25px}.side-nav__close-icon{height:20px;margin-left:auto;width:20px}.side-nav__back-button-wrapper{align-items:center;display:flex;margin-bottom:25px}.side-nav__back-icon{height:20px;width:20px}.side-nav__back-button,.side-nav__sub-menu-title{font-weight:700;text-transform:uppercase}.side-nav__sub-menu-title{font-size:14px;margin-bottom:10px}.side-nav__elements{display:flex;flex-direction:column}.side-nav__element{color:#555;cursor:pointer;line-height:20px;margin-bottom:10px}.side-nav__element,.side-nav__sub-link{font-size:14px;font-weight:400;text-transform:capitalize}.side-nav__block-button{background-color:#000;color:#fff;font-weight:700;padding:10px 0;width:100%}.side-nav{font-family:Martel Sans}.side-nav__errors{align-items:center;color:red;display:flex;font-size:16px;justify-content:center}.side-nav__overlay{background-color:rgba(78,73,73,.51);height:100%;opacity:0;position:fixed;top:0;transition:opacity .5s ease-out 0s,visibility .5s ease-out 0s;width:100%;z-index:99999}.side-nav__overlay--visible{opacity:1;visibility:visible}.side-nav__overlay--hidden{opacity:1;visibility:hidden}.side-nav__content{background-color:#fff;bottom:0;overflow-y:scroll;padding:1.5rem;position:fixed;top:0;transition:left .5s ease-in-out;width:80%;z-index:99999}.side-nav__content--hidden{display:none}.side-nav__content--open{left:0}.side-nav__content--closed{left:-100%}.side-nav__menu-title-wrapper{align-items:center;background-color:transparent;border:none;display:flex;outline:none;width:100%}.side-nav__icon-container{float:right;margin-bottom:10px}.side-nav__menu-title{align-items:center;display:flex;font-size:14px;font-weight:700;justify-content:center;line-height:20px;text-transform:uppercase}.side-nav__menu-icon{display:flex;height:25px;margin-right:10px;width:25px}.side-nav__menu-divider{margin-bottom:40px}.side-nav__accordion-icon{height:auto;width:15px}.side-nav__menu-item{margin-bottom:25px}.side-nav__close-icon{height:20px;margin-left:auto;width:20px}.side-nav__back-button-wrapper{align-items:center;display:flex;margin-bottom:25px}.side-nav__back-icon{height:20px;width:20px}.side-nav__back-button,.side-nav__sub-menu-title{font-weight:700;text-transform:uppercase}.side-nav__sub-menu-title{font-size:14px;margin-bottom:10px}.side-nav__elements{display:flex;flex-direction:column}.side-nav__element{color:#555;cursor:pointer;line-height:20px;margin-bottom:10px}.side-nav__element,.side-nav__sub-link{font-size:14px;font-weight:400;text-transform:capitalize}.side-nav__block-button{background-color:#000;color:#fff;font-weight:700;padding:10px 0;width:100%}.footer__newsletter-section{align-items:center;background-color:#000;color:#fff;display:flex;justify-content:space-between;padding:2.265rem 0}@media only screen and (max-width:879px){.footer__newsletter-section{flex-direction:column}}.footer__newsletter-wrapper{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1280px;padding-left:32px;padding-right:32px;width:100%}@media only screen and (max-width:879px){.footer__newsletter-wrapper{flex-direction:column}.footer__link-container{flex-basis:50%}}.footer__newsletter-icon{height:30px;position:absolute;right:0;top:0;width:32px}.footer__newsletter-form{flex-basis:50%;max-width:250px;position:relative}@media only screen and (max-width:879px){.footer__newsletter-form{display:block;margin-top:20px;max-width:100%;width:100%}}.footer__newsletter-title{font-family:Martel Sans,sans-serif;font-size:14px;font-weight:700;letter-spacing:3px;margin-bottom:1.125rem;text-transform:uppercase}.footer__newsletter-text{font-size:14px}.footer__form-input{background-color:#000;border:none;border-bottom:1px solid #fff;color:#fff;height:30px;outline:none;width:100%}.footer__form-input::-moz-placeholder{color:#fff;font-weight:400}.footer__form-input::placeholder{color:#fff;font-weight:400}.footer__form-errors{color:#fff;margin-top:5px}.footer__main-section{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:50px;margin-top:80px}.footer__link-title{font-family:El Messiri;font-size:16px;font-weight:700;margin-bottom:20px;text-transform:uppercase}@media only screen and (max-width:879px){.footer__link-title{margin-bottom:10px}}.footer__link-child{margin-top:25px}.footer__links{display:flex;flex-direction:column}.footer__link{color:#939393;cursor:pointer;font-family:Martel Sans;font-size:14px;line-height:20px;margin-bottom:7px;text-align:left;text-decoration:none}.footer__link:hover{color:#000;text-decoration:underline}@media only screen and (max-width:879px){.footer__link{margin-bottom:10px}}.footer__link-wrapper{align-items:center;display:flex;gap:5px}.footer__link-icon{height:30px;margin-bottom:18px}.footer__text{color:#939393;font-family:Martel Sans;font-size:14px;line-height:20px;margin-bottom:15px;text-align:left;text-decoration:none}.footer__store-hours{margin-top:35px}.footer__copyrights-section{border-top:1px solid;display:flex;justify-content:space-between;padding-bottom:20px;padding-top:20px}.footer__logo{height:30px;width:135px}.footer__payment-icons{align-items:center;display:flex;gap:8px}.footer__wrapper{margin:0 auto;max-width:1280px;padding-left:32px;padding-right:32px;width:100%}@media only screen and (max-width:879px){.footer__wrapper{padding:32px 0 0 24px}}.footer__wrapper--desktop{display:block}@media only screen and (max-width:879px){.footer__wrapper--desktop{display:none}}.footer__wrapper--mobile{display:none}@media only screen and (max-width:879px){.footer__wrapper--mobile{display:block;padding-top:30px}}.footer__copyright{font-size:10px;line-height:22px}.footer__copyright--mobile{display:none}@media only screen and (max-width:879px){.footer__copyright--mobile{display:block;padding:30px 10px 30px 0;text-align:center}}.footer__section-row{display:flex;gap:50%}@media only screen and (max-width:879px){.footer__section-row{gap:unset}}.interests__add-button{display:flex;flex-direction:row;gap:10px;width:100%}@media only screen and (max-width:879px){.interests__add-button{flex-direction:column}}.interests__section-wrapper{display:flex;flex-direction:column;width:100%}.interests__select-option{display:flex;flex-direction:column;margin-bottom:15px}.interests__title{font-family:El Messiri;font-size:16px;margin-bottom:10px}@charset "UTF-8";.currency-select-container{align-items:center;display:flex;margin-right:18px;position:relative}.currency-select-container .currency-flag{margin-right:5px}.currency-select-container .currency-flag img{height:15px;-o-object-fit:cover;object-fit:cover;width:20px}.currency-select-container .currency-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:transparent;border:none;color:#000;cursor:pointer;font-family:inherit;font-size:14px;margin:0;outline:none;padding:5px 15px 5px 5px}.currency-select-container .currency-select::-ms-expand{display:none}.currency-select-container .currency-select:focus{box-shadow:none;outline:none}.currency-select-container .currency-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.currency-select-container:after{color:#000;content:"▼";font-size:10px;pointer-events:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}@media only screen and (max-width:879px){.currency-select-container .currency-select{appearance:menulist;-webkit-appearance:menulist;-moz-appearance:menulist;padding-right:0}.currency-select-container:after{display:none}}.currency-select-container.disabled{cursor:not-allowed;opacity:.7}.currency-select-container.disabled .currency-select{pointer-events:none}.search-results{background:#fff;border:1px solid #dfdede;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.08);display:flex;position:absolute;width:770px;z-index:50}@media only screen and (max-width:1052px){.search-results{border:none;box-shadow:none;flex-direction:column;top:120px;width:100%}}.search-results__section:first-child{border-right:1px solid #dfdede;flex:1;min-width:240px}.search-results__section:last-child{display:flex;flex:2;flex-direction:column}.search-results__section-header{align-items:center;display:flex;justify-content:space-between}.search-results__header{color:#000;font-family:Martel Sans;font-size:14px;font-weight:600;margin-bottom:0;padding:16px 20px;text-transform:uppercase}.search-results__view-all-link{display:none}@media only screen and (max-width:879px){.search-results__view-all-link{color:#000;display:block;font-family:Martel Sans;font-size:14px;margin-right:20px}}.search-results__list{display:flex;flex-direction:column}.search-results__item{color:grey;font-family:Martel Sans;font-size:14px;padding:8px 20px;text-decoration:none}.search-results__product-list{display:flex;flex-direction:column;overflow-y:auto}.product-card{color:inherit;display:flex;padding:12px 20px;text-decoration:none;transition:background-color .15s ease}.product-card:hover{background-color:#f4f4f4}.product-card__image-container{border-radius:2px;flex-shrink:0;height:90px;margin-right:16px;overflow:hidden;width:90px}.product-card__image{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.product-card__details{display:flex;flex:1;flex-direction:column}.product-card__name{color:#000;font-family:Martel Sans;font-size:14px;line-height:1.4;margin-bottom:24px}.product-card__brand-name{font-weight:600}.product-card__info-row{align-items:flex-end;display:flex;justify-content:space-between}@media only screen and (max-width:879px){.product-card__info-row{align-items:flex-start;flex-direction:column}}.product-card__price-group{display:flex;flex-direction:column;gap:4px}.product-card__price{color:#000;font-family:Martel Sans;font-size:14px;font-weight:600;line-height:1}.product-card__retail-price{color:#939393;font-family:Martel Sans;font-size:14px;text-decoration:line-through}.product-card__condition{color:#000;font-family:Martel Sans;font-size:13px;margin-right:20px;text-align:right}.product-card__condition-label{color:#939393;margin-right:4px}.search-results__view-all-button{background-color:#f5f0ea!important;border:none;color:#000;cursor:pointer;font-family:Martel Sans;font-size:13px;font-weight:400;padding:16px;text-align:center}@media only screen and (max-width:879px){.search-results__view-all-button{display:none}}.stores-dropdown{align-items:flex-start;display:flex;font-family:Martel Sans;gap:20px;margin-left:auto;margin-right:auto;max-width:1280px;overflow-x:auto;padding:20px 15px}.stores-dropdown__image{height:200px;-o-object-fit:cover;object-fit:cover;width:100%}.stores-dropdown__store-details{flex-basis:20%}.stores-dropdown__title{font-family:El Messiri}.stores-dropdown__main-title,.stores-dropdown__title{font-size:16px;font-weight:400;letter-spacing:3px;margin-top:20px}.stores-dropdown__main-title{font-weight:700;margin-bottom:10px}.stores-dropdown__open-days{font-size:12px;font-weight:700;line-height:20px}.stores-dropdown__open-hours{font-size:12px;font-weight:400;line-height:20px}.stores-dropdown__queries-title{font-family:El Messiri;font-size:16px;font-weight:400;letter-spacing:3px}.stores-dropdown__contact-details{font-size:16px;font-weight:700}.stores-dropdown__view-more{cursor:pointer;font-size:14px;font-weight:400;margin-top:10px;text-transform:capitalize}.dropdown{display:flex;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:1280px;min-height:500px;overflow-x:auto;padding:20px 0}.dropdown__errors{align-items:center;color:red;display:flex;font-size:16px;justify-content:center;min-height:300px}.dropdown__column{flex:1;padding-left:12px}.dropdown__column:nth-child(2){flex:2}.dropdown__title{font-family:El Messiri;font-size:16px;font-weight:700;letter-spacing:3px;line-height:1;margin-bottom:20px;text-transform:uppercase}.dropdown__elements{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));max-height:800px;overflow-y:auto}.dropdown__brand-elements{-moz-column-count:3;column-count:3;max-height:800px}.dropdown__brand-element{cursor:pointer;margin-bottom:10px}.dropdown__element{flex-basis:33.33%;font-family:Martel Sans;font-size:14px;font-weight:400;margin-bottom:10px;text-transform:capitalize}.cover-spinner{align-items:center;background-color:hsla(0,0%,100%,.7);display:flex;height:100%;justify-content:center;min-height:400px;position:relative;top:50%;width:100%;z-index:9999}.cover-spinner:after{animation:spin 1.5s linear infinite;border:4px dotted #000;border-radius:50%;border-top-color:transparent;content:"";display:block;height:40px;position:absolute;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
|
|
1
|
+
.footer__newsletter-section{align-items:center;background-color:#000;color:#fff;display:flex;justify-content:space-between;padding:2.265rem 0}@media only screen and (max-width:879px){.footer__newsletter-section{flex-direction:column}}.footer__newsletter-wrapper{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1280px;padding-left:32px;padding-right:32px;width:100%}@media only screen and (max-width:879px){.footer__newsletter-wrapper{flex-direction:column}.footer__link-container{flex-basis:50%}}.footer__newsletter-icon{height:30px;position:absolute;right:0;top:0;width:32px}.footer__newsletter-form{flex-basis:50%;max-width:250px;position:relative}@media only screen and (max-width:879px){.footer__newsletter-form{display:block;margin-top:20px;max-width:100%;width:100%}}.footer__newsletter-title{font-family:Martel Sans,sans-serif;font-size:14px;font-weight:700;letter-spacing:3px;margin-bottom:1.125rem;text-transform:uppercase}.footer__newsletter-text{font-size:14px}.footer__form-input{background-color:#000;border:none;border-bottom:1px solid #fff;color:#fff;height:30px;outline:none;width:100%}.footer__form-input::-moz-placeholder{color:#fff;font-weight:400}.footer__form-input::placeholder{color:#fff;font-weight:400}.footer__form-errors{color:#fff;margin-top:5px}.footer__main-section{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:50px;margin-top:80px}.footer__link-title{font-family:El Messiri;font-size:16px;font-weight:700;margin-bottom:20px;text-transform:uppercase}@media only screen and (max-width:879px){.footer__link-title{margin-bottom:10px}}.footer__link-child{margin-top:25px}.footer__links{display:flex;flex-direction:column}.footer__link{color:#939393;cursor:pointer;font-family:Martel Sans;font-size:14px;line-height:20px;margin-bottom:7px;text-align:left;text-decoration:none}.footer__link:hover{color:#000;text-decoration:underline}@media only screen and (max-width:879px){.footer__link{margin-bottom:10px}}.footer__link-wrapper{align-items:center;display:flex;gap:5px}.footer__link-icon{height:30px;margin-bottom:18px}.footer__text{color:#939393;font-family:Martel Sans;font-size:14px;line-height:20px;margin-bottom:15px;text-align:left;text-decoration:none}.footer__store-hours{margin-top:35px}.footer__copyrights-section{border-top:1px solid;display:flex;justify-content:space-between;padding-bottom:20px;padding-top:20px}.footer__logo{height:30px;width:135px}.footer__payment-icons{align-items:center;display:flex;gap:8px}.footer__wrapper{margin:0 auto;max-width:1280px;padding-left:32px;padding-right:32px;width:100%}@media only screen and (max-width:879px){.footer__wrapper{padding:32px 0 0 24px}}.footer__wrapper--desktop{display:block}@media only screen and (max-width:879px){.footer__wrapper--desktop{display:none}}.footer__wrapper--mobile{display:none}@media only screen and (max-width:879px){.footer__wrapper--mobile{display:block;padding-top:30px}}.footer__copyright{font-size:10px;line-height:22px}.footer__copyright--mobile{display:none}@media only screen and (max-width:879px){.footer__copyright--mobile{display:block;padding:30px 10px 30px 0;text-align:center}}.footer__section-row{display:flex;gap:50%}@media only screen and (max-width:879px){.footer__section-row{gap:unset}}.navbar{box-shadow:2px 2px 10px #dfdede;display:flex;padding-bottom:10px;padding-top:20px;position:relative}.navbar__link-item--desktop{align-items:center;display:flex;height:35px;margin:auto 0;padding-top:5px}.navbar__mobile-wrapper{align-items:center;display:flex;flex-direction:column;padding-bottom:20px;padding-left:32px;padding-right:32px}.navbar__container{display:flex;margin:0 auto;max-width:1280px;padding-left:12px;padding-right:12px;width:100%}.navbar__body{flex-basis:60%}.navbar__wrapper{align-items:center;display:flex;justify-content:space-between;width:100%}.navbar__product-search-wrapper{align-items:center;display:flex;justify-content:center;padding:0 20%;width:100%}@media only screen and (max-width:879px){.navbar__product-search-wrapper{padding:0}}.navbar__input-close-icon{height:auto;margin-bottom:10px;margin-left:10px;width:20px}@media only screen and (max-width:879px){.navbar__input-close-icon{margin-bottom:0;margin-left:0;width:15px}}.navbar__menu-icon{width:30px}.navbar__product-search{align-items:center;display:flex;max-width:545px;width:100%}.navbar__logo-wrapper{margin-right:18px;width:200px}.navbar__logo{width:200px}@media only screen and (max-width:879px){.navbar__logo{margin-left:10px;margin-top:5px;width:125px}}.navbar__form-input{align-items:center;background:transparent;border:none;display:flex;font-size:13px;outline:none;padding:8px;width:100%}.navbar__product-search{border:1px solid #dfdede;margin-bottom:10px}@media only screen and (max-width:879px){.navbar__product-search{border:none;border-bottom:1px solid #dfdede;margin-bottom:0;margin-right:10px;margin-top:10px}}.navbar__section{align-items:flex-start;display:flex;flex-direction:row;justify-content:space-between;width:100%}.navbar__link{display:inline-block;font-family:Martel Sans;font-size:14px;font-weight:700;margin-right:10px;overflow:hidden;text-transform:uppercase;transition:.3s ease-in-out}.navbar__link:after{background-color:#000;content:"";display:block;height:2px;transition:width .25s ease-out;width:0}.navbar__link:hover:after{width:100%}.navbar__link:hover .navbar__dropdown{animation:fadeInDropdown .3s ease-in-out;display:block}.navbar__dropdown{background-color:#fff;box-shadow:5px 5px 5px #dfdede;display:none;left:0;position:absolute;width:100%;z-index:999}@keyframes fadeInDropdown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.navbar__company-link{font-size:13px;font-weight:400;list-style:none;margin-left:18px;text-decoration:none}.navbar__company-block{align-items:center;background-color:#000;color:#fff;display:flex;font-weight:700;height:33px;justify-content:center;margin-right:0;padding:0 18px;text-transform:uppercase}.navbar__input-search-icon{height:auto;margin-left:1.125rem;margin-right:.375rem;width:15px}.navbar__nav-links{align-items:center;display:flex}.navbar__nav-links--wrap{flex-wrap:wrap}.navbar__icons{align-items:center;display:flex;height:40px;justify-content:flex-end;margin-bottom:10px}@media only screen and (max-width:879px){.navbar__icons{display:block;height:20px;margin-bottom:0}}.navbar__icon{cursor:pointer;height:auto;margin-right:18px;width:20px}@media only screen and (max-width:879px){.navbar__icon{margin-right:0}}.navbar__icon--app{cursor:pointer;height:auto;margin-left:12px;width:20px}@media only screen and (max-width:879px){.navbar__icon--app{margin-right:0}}.navbar__vip-icon{height:16px;position:absolute;right:-12px;top:-4px;width:16px}.navbar__cart-icon{position:relative}.navbar__cart-count{align-items:center;background-color:#000;border-radius:50%;bottom:50%;color:#fff;display:flex;font-size:13px;height:20px;justify-content:center;left:100%;position:absolute;width:20px}.side-nav{font-family:Martel Sans}.side-nav__errors{align-items:center;color:red;display:flex;font-size:16px;justify-content:center}.side-nav__overlay{background-color:rgba(78,73,73,.51);height:100%;opacity:0;position:fixed;top:0;transition:opacity .5s ease-out 0s,visibility .5s ease-out 0s;width:100%;z-index:99999}.side-nav__overlay--visible{opacity:1;visibility:visible}.side-nav__overlay--hidden{opacity:1;visibility:hidden}.side-nav__content{background-color:#fff;bottom:0;overflow-y:scroll;padding:1.5rem;position:fixed;top:0;transition:left .5s ease-in-out;width:80%;z-index:99999}.side-nav__content--hidden{display:none}.side-nav__content--open{left:0}.side-nav__content--closed{left:-100%}.side-nav__menu-title-wrapper{align-items:center;background-color:transparent;border:none;display:flex;justify-content:space-between;outline:none;width:100%}.side-nav__icon-container{float:right;margin-bottom:10px}.side-nav__menu-title{font-size:14px;font-weight:700;line-height:20px;text-transform:uppercase}.side-nav__accordion-icon{height:auto;width:15px}.side-nav__menu-item{margin-bottom:25px}.side-nav__close-icon{height:20px;margin-left:auto;width:20px}.side-nav__back-button-wrapper{align-items:center;display:flex;margin-bottom:25px}.side-nav__back-icon{height:20px;width:20px}.side-nav__back-button,.side-nav__sub-menu-title{font-weight:700;text-transform:uppercase}.side-nav__sub-menu-title{font-size:14px;margin-bottom:10px}.side-nav__elements{display:flex;flex-direction:column}.side-nav__element{color:#555;cursor:pointer;line-height:20px;margin-bottom:10px}.side-nav__element,.side-nav__sub-link{font-size:14px;font-weight:400;text-transform:capitalize}.side-nav__block-button{background-color:#000;color:#fff;font-weight:700;padding:10px 0;width:100%}.side-nav{font-family:Martel Sans}.side-nav__errors{align-items:center;color:red;display:flex;font-size:16px;justify-content:center}.side-nav__overlay{background-color:rgba(78,73,73,.51);height:100%;opacity:0;position:fixed;top:0;transition:opacity .5s ease-out 0s,visibility .5s ease-out 0s;width:100%;z-index:99999}.side-nav__overlay--visible{opacity:1;visibility:visible}.side-nav__overlay--hidden{opacity:1;visibility:hidden}.side-nav__content{background-color:#fff;bottom:0;overflow-y:scroll;padding:1.5rem;position:fixed;top:0;transition:left .5s ease-in-out;width:80%;z-index:99999}.side-nav__content--hidden{display:none}.side-nav__content--open{left:0}.side-nav__content--closed{left:-100%}.side-nav__menu-title-wrapper{align-items:center;background-color:transparent;border:none;display:flex;outline:none;width:100%}.side-nav__icon-container{float:right;margin-bottom:10px}.side-nav__menu-title{align-items:center;display:flex;font-size:14px;font-weight:700;justify-content:center;line-height:20px;text-transform:uppercase}.side-nav__menu-icon{display:flex;height:25px;margin-right:10px;width:25px}.side-nav__menu-divider{margin-bottom:40px}.side-nav__accordion-icon{height:auto;width:15px}.side-nav__menu-item{margin-bottom:25px}.side-nav__close-icon{height:20px;margin-left:auto;width:20px}.side-nav__back-button-wrapper{align-items:center;display:flex;margin-bottom:25px}.side-nav__back-icon{height:20px;width:20px}.side-nav__back-button,.side-nav__sub-menu-title{font-weight:700;text-transform:uppercase}.side-nav__sub-menu-title{font-size:14px;margin-bottom:10px}.side-nav__elements{display:flex;flex-direction:column}.side-nav__element{color:#555;cursor:pointer;line-height:20px;margin-bottom:10px}.side-nav__element,.side-nav__sub-link{font-size:14px;font-weight:400;text-transform:capitalize}.side-nav__block-button{background-color:#000;color:#fff;font-weight:700;padding:10px 0;width:100%}.interests__add-button{display:flex;flex-direction:row;gap:10px;width:100%}@media only screen and (max-width:879px){.interests__add-button{flex-direction:column}}.interests__section-wrapper{display:flex;flex-direction:column;width:100%}.interests__select-option{display:flex;flex-direction:column;margin-bottom:15px}.interests__title{font-family:El Messiri;font-size:16px;margin-bottom:10px}@charset "UTF-8";.currency-select-container{align-items:center;display:flex;margin-right:18px;position:relative}.currency-select-container .currency-flag{margin-right:5px}.currency-select-container .currency-flag img{height:15px;-o-object-fit:cover;object-fit:cover;width:20px}.currency-select-container .currency-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:transparent;border:none;color:#000;cursor:pointer;font-family:inherit;font-size:14px;margin:0;outline:none;padding:5px 15px 5px 5px}.currency-select-container .currency-select::-ms-expand{display:none}.currency-select-container .currency-select:focus{box-shadow:none;outline:none}.currency-select-container .currency-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.currency-select-container:after{color:#000;content:"▼";font-size:10px;pointer-events:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}@media only screen and (max-width:879px){.currency-select-container .currency-select{appearance:menulist;-webkit-appearance:menulist;-moz-appearance:menulist;padding-right:0}.currency-select-container:after{display:none}}.currency-select-container.disabled{cursor:not-allowed;opacity:.7}.currency-select-container.disabled .currency-select{pointer-events:none}.stores-dropdown{align-items:flex-start;display:flex;font-family:Martel Sans;gap:20px;margin-left:auto;margin-right:auto;max-width:1280px;overflow-x:auto;padding:20px 15px}.stores-dropdown__image{height:200px;-o-object-fit:cover;object-fit:cover;width:100%}.stores-dropdown__store-details{flex-basis:20%}.stores-dropdown__title{font-family:El Messiri}.stores-dropdown__main-title,.stores-dropdown__title{font-size:16px;font-weight:400;letter-spacing:3px;margin-top:20px}.stores-dropdown__main-title{font-weight:700;margin-bottom:10px}.stores-dropdown__open-days{font-size:12px;font-weight:700;line-height:20px}.stores-dropdown__open-hours{font-size:12px;font-weight:400;line-height:20px}.stores-dropdown__queries-title{font-family:El Messiri;font-size:16px;font-weight:400;letter-spacing:3px}.stores-dropdown__contact-details{font-size:16px;font-weight:700}.stores-dropdown__view-more{cursor:pointer;font-size:14px;font-weight:400;margin-top:10px;text-transform:capitalize}.search-results{background:#fff;border:1px solid #dfdede;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.08);display:flex;position:absolute;width:770px;z-index:50}@media only screen and (max-width:1052px){.search-results{border:none;box-shadow:none;flex-direction:column;top:120px;width:100%}}.search-results__section:first-child{border-right:1px solid #dfdede;flex:1;min-width:240px}.search-results__section:last-child{display:flex;flex:2;flex-direction:column}.search-results__section-header{align-items:center;display:flex;justify-content:space-between}.search-results__header{color:#000;font-family:Martel Sans;font-size:14px;font-weight:600;margin-bottom:0;padding:16px 20px;text-transform:uppercase}.search-results__view-all-link{display:none}@media only screen and (max-width:879px){.search-results__view-all-link{color:#000;display:block;font-family:Martel Sans;font-size:14px;margin-right:20px}}.search-results__list{display:flex;flex-direction:column}.search-results__item{color:grey;font-family:Martel Sans;font-size:14px;padding:8px 20px;text-decoration:none}.search-results__product-list{display:flex;flex-direction:column;overflow-y:auto}.product-card{color:inherit;display:flex;padding:12px 20px;text-decoration:none;transition:background-color .15s ease}.product-card:hover{background-color:#f4f4f4}.product-card__image-container{border-radius:2px;flex-shrink:0;height:90px;margin-right:16px;overflow:hidden;width:90px}.product-card__image{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.product-card__details{display:flex;flex:1;flex-direction:column}.product-card__name{color:#000;font-family:Martel Sans;font-size:14px;line-height:1.4;margin-bottom:24px}.product-card__brand-name{font-weight:600}.product-card__info-row{align-items:flex-end;display:flex;justify-content:space-between}@media only screen and (max-width:879px){.product-card__info-row{align-items:flex-start;flex-direction:column}}.product-card__price-group{display:flex;flex-direction:column;gap:4px}.product-card__price{color:#000;font-family:Martel Sans;font-size:14px;font-weight:600;line-height:1}.product-card__retail-price{color:#939393;font-family:Martel Sans;font-size:14px;text-decoration:line-through}.product-card__condition{color:#000;font-family:Martel Sans;font-size:13px;margin-right:20px;text-align:right}.product-card__condition-label{color:#939393;margin-right:4px}.search-results__view-all-button{background-color:#f5f0ea!important;border:none;color:#000;cursor:pointer;font-family:Martel Sans;font-size:13px;font-weight:400;padding:16px;text-align:center}@media only screen and (max-width:879px){.search-results__view-all-button{display:none}}.dropdown{display:flex;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:1280px;min-height:500px;overflow-x:auto;padding:20px 0}.dropdown__errors{align-items:center;color:red;display:flex;font-size:16px;justify-content:center;min-height:300px}.dropdown__column{flex:1;padding-left:12px}.dropdown__column:nth-child(2){flex:2}.dropdown__title{font-family:El Messiri;font-size:16px;font-weight:700;letter-spacing:3px;line-height:1;margin-bottom:20px;text-transform:uppercase}.dropdown__elements{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));max-height:800px;overflow-y:auto}.dropdown__brand-elements{-moz-column-count:3;column-count:3;max-height:800px}.dropdown__brand-element{cursor:pointer;margin-bottom:10px}.dropdown__element{flex-basis:33.33%;font-family:Martel Sans;font-size:14px;font-weight:400;margin-bottom:10px;text-transform:capitalize}.cover-spinner{align-items:center;background-color:hsla(0,0%,100%,.7);display:flex;height:100%;justify-content:center;min-height:400px;position:relative;top:50%;width:100%;z-index:9999}.cover-spinner:after{animation:spin 1.5s linear infinite;border:4px dotted #000;border-radius:50%;border-top-color:transparent;content:"";display:block;height:40px;position:absolute;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
|
package/build/bundle.js
CHANGED
|
@@ -16126,6 +16126,7 @@
|
|
|
16126
16126
|
var endpoint = _ref.endpoint,
|
|
16127
16127
|
onProductIdsReceived = _ref.onProductIdsReceived,
|
|
16128
16128
|
currency = _ref.currency;
|
|
16129
|
+
var currentSearchRequestToken = React.useRef(null);
|
|
16129
16130
|
var debounce = React.useCallback(function (func, wait) {
|
|
16130
16131
|
var timeout;
|
|
16131
16132
|
return function executedFunction() {
|
|
@@ -16156,49 +16157,75 @@
|
|
|
16156
16157
|
});
|
|
16157
16158
|
});
|
|
16158
16159
|
}, []);
|
|
16159
|
-
var performSearch = React.useCallback(function (
|
|
16160
|
-
if (!
|
|
16160
|
+
var performSearch = React.useCallback(function (searchQuery, setSearchResults) {
|
|
16161
|
+
if (!searchQuery || searchQuery.trim() === '') {
|
|
16161
16162
|
setSearchResults({
|
|
16162
16163
|
brands: [],
|
|
16163
16164
|
products: [],
|
|
16164
16165
|
luxity_product_ids: []
|
|
16165
16166
|
});
|
|
16166
16167
|
return;
|
|
16167
|
-
}
|
|
16168
|
+
} // Cancel any ongoing search request to prevent race conditions
|
|
16169
|
+
|
|
16170
|
+
|
|
16171
|
+
if (currentSearchRequestToken.current) {
|
|
16172
|
+
currentSearchRequestToken.current.cancel();
|
|
16173
|
+
} // Create a new token for this specific search request
|
|
16174
|
+
|
|
16175
|
+
|
|
16176
|
+
var newSearchToken = axios.CancelToken.source();
|
|
16177
|
+
currentSearchRequestToken.current = newSearchToken;
|
|
16178
|
+
axios.post(endpoint, searchProducts(searchQuery, 3, currency), {
|
|
16179
|
+
cancelToken: newSearchToken.token
|
|
16180
|
+
}).then(function (response) {
|
|
16181
|
+
if (currentSearchRequestToken.current === newSearchToken) {
|
|
16182
|
+
var searchResults = response.data.data.luxity_products_serach_results;
|
|
16183
|
+
setSearchResults(searchResults);
|
|
16168
16184
|
|
|
16169
|
-
|
|
16170
|
-
|
|
16171
|
-
|
|
16185
|
+
if (searchResults && searchResults.luxity_product_ids) {
|
|
16186
|
+
onProductIdsReceived(searchResults.luxity_product_ids);
|
|
16187
|
+
}
|
|
16172
16188
|
|
|
16173
|
-
|
|
16174
|
-
|
|
16189
|
+
currentSearchRequestToken.current = null;
|
|
16190
|
+
}
|
|
16191
|
+
}).catch(function (error) {
|
|
16192
|
+
if (!axios.isCancel(error)) {
|
|
16193
|
+
setSearchResults({
|
|
16194
|
+
brands: [],
|
|
16195
|
+
products: [],
|
|
16196
|
+
luxity_product_ids: []
|
|
16197
|
+
});
|
|
16198
|
+
currentSearchRequestToken.current = null;
|
|
16175
16199
|
}
|
|
16176
|
-
}).catch(function () {
|
|
16177
|
-
setSearchResults({
|
|
16178
|
-
brands: [],
|
|
16179
|
-
products: [],
|
|
16180
|
-
luxity_product_ids: []
|
|
16181
|
-
});
|
|
16182
16200
|
});
|
|
16183
16201
|
}, [endpoint, currency, onProductIdsReceived]);
|
|
16184
16202
|
var debouncedSearch = React.useMemo(function () {
|
|
16185
|
-
return debounce(function (
|
|
16186
|
-
return performSearch(
|
|
16203
|
+
return debounce(function (searchQuery, setSearchResults) {
|
|
16204
|
+
return performSearch(searchQuery, setSearchResults);
|
|
16187
16205
|
}, 500);
|
|
16188
16206
|
}, [debounce, performSearch]);
|
|
16189
16207
|
var createDebouncedSearch = React.useCallback(function (setSearchResults) {
|
|
16190
|
-
return function (
|
|
16191
|
-
return debouncedSearch(
|
|
16208
|
+
return function (searchQuery) {
|
|
16209
|
+
return debouncedSearch(searchQuery, setSearchResults);
|
|
16192
16210
|
};
|
|
16193
16211
|
}, [debouncedSearch]);
|
|
16194
16212
|
var createImmediateSearch = React.useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
|
|
16195
|
-
return function (
|
|
16213
|
+
return function (searchQuery) {
|
|
16214
|
+
/*
|
|
16215
|
+
* Cancel any pending search request when immediate search is performed
|
|
16216
|
+
* Immediate search is when the user types a search query and presses enter
|
|
16217
|
+
*/
|
|
16218
|
+
if (currentSearchRequestToken.current) {
|
|
16219
|
+
currentSearchRequestToken.current.cancel();
|
|
16220
|
+
currentSearchRequestToken.current = null;
|
|
16221
|
+
}
|
|
16222
|
+
|
|
16196
16223
|
setSearchValue('');
|
|
16197
16224
|
setSearchResults({
|
|
16198
16225
|
brands: [],
|
|
16199
16226
|
products: []
|
|
16200
16227
|
});
|
|
16201
|
-
onSearchSubmit(
|
|
16228
|
+
onSearchSubmit(searchQuery);
|
|
16202
16229
|
};
|
|
16203
16230
|
}, []);
|
|
16204
16231
|
return {
|