@salesgenterp/ui-components 0.4.543 → 0.4.544

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.
@@ -61,7 +61,6 @@ import { FiTruck } from 'react-icons/fi';
61
61
  import { FaCheck, FaRegNoteSticky } from 'react-icons/fa6';
62
62
  import Image$3 from 'next/image';
63
63
  import debounce$1 from 'lodash/debounce';
64
- import omit$1 from 'lodash/omit';
65
64
 
66
65
  function _extends() {
67
66
  return _extends = Object.assign ? Object.assign.bind() : function (n) {
@@ -16283,9 +16282,100 @@ var WishlistProductCardSkeleton = function WishlistProductCardSkeleton(_ref) {
16283
16282
  }));
16284
16283
  };
16285
16284
 
16285
+ var getWishlistData = function getWishlistData(_ref) {
16286
+ var apiEndPoint = _ref.apiEndPoint,
16287
+ token = _ref.token,
16288
+ _ref$queryParams = _ref.queryParams,
16289
+ queryParams = _ref$queryParams === void 0 ? {} : _ref$queryParams;
16290
+ try {
16291
+ var _erCookieStorage$getI;
16292
+ if (!apiEndPoint || !token) return Promise.resolve([]);
16293
+ var storeId = (erCookieStorage === null || erCookieStorage === void 0 ? void 0 : (_erCookieStorage$getI = erCookieStorage.getItem) === null || _erCookieStorage$getI === void 0 ? void 0 : _erCookieStorage$getI.call(erCookieStorage, 'storeId')) || 2;
16294
+ return Promise.resolve(API({
16295
+ apiEndPoint: apiEndPoint,
16296
+ token: token,
16297
+ url: "/ecommerce/wishlist?storeIds=" + storeId,
16298
+ queryParams: queryParams
16299
+ })).then(function (data) {
16300
+ return data != null ? data : [];
16301
+ });
16302
+ } catch (e) {
16303
+ return Promise.reject(e);
16304
+ }
16305
+ };
16306
+ var removeFromWishlist = function removeFromWishlist(_ref2) {
16307
+ var apiEndPoint = _ref2.apiEndPoint,
16308
+ token = _ref2.token,
16309
+ products = _ref2.products;
16310
+ try {
16311
+ var _erCookieStorage$getI2;
16312
+ if (!apiEndPoint || !token) return Promise.resolve();
16313
+ var storeId = (erCookieStorage === null || erCookieStorage === void 0 ? void 0 : (_erCookieStorage$getI2 = erCookieStorage.getItem) === null || _erCookieStorage$getI2 === void 0 ? void 0 : _erCookieStorage$getI2.call(erCookieStorage, 'storeId')) || 2;
16314
+ var body = (products || []).map(function (product) {
16315
+ return {
16316
+ productId: product === null || product === void 0 ? void 0 : product.productId,
16317
+ storeId: storeId
16318
+ };
16319
+ }).filter(function (item) {
16320
+ return item === null || item === void 0 ? void 0 : item.productId;
16321
+ });
16322
+ if (!(body !== null && body !== void 0 && body.length)) return Promise.resolve();
16323
+ return Promise.resolve(API({
16324
+ apiEndPoint: apiEndPoint,
16325
+ token: token,
16326
+ url: "/ecommerce/wishlist/items",
16327
+ body: body,
16328
+ method: 'delete',
16329
+ successMessage: 'Product removed from wishlist successfully',
16330
+ errorMessage: 'Error in removing product from wishlist'
16331
+ })).then(function () {});
16332
+ } catch (e) {
16333
+ return Promise.reject(e);
16334
+ }
16335
+ };
16336
+ var moveToCart = function moveToCart(_ref3) {
16337
+ var apiEndPoint = _ref3.apiEndPoint,
16338
+ token = _ref3.token,
16339
+ productId = _ref3.productId;
16340
+ try {
16341
+ if (!apiEndPoint || !token || productId == null) return Promise.resolve();
16342
+ return Promise.resolve(API({
16343
+ apiEndPoint: apiEndPoint,
16344
+ token: token,
16345
+ url: "/ecommerce/wishlist/move-to-cart",
16346
+ method: 'post',
16347
+ body: [productId],
16348
+ successMessage: 'Product moved to cart successfully',
16349
+ errorMessage: 'Error in moving product to cart'
16350
+ })).then(function () {});
16351
+ } catch (e) {
16352
+ return Promise.reject(e);
16353
+ }
16354
+ };
16355
+
16286
16356
  var _templateObject$T, _templateObject2$D, _templateObject3$t, _templateObject4$n, _templateObject5$i, _templateObject6$g, _templateObject7$c, _templateObject8$a, _templateObject9$7, _templateObject10$5, _templateObject11$4;
16287
- var getProductImage = function getProductImage(imageUrl, imgNotFoundUrl) {
16288
- return imageUrl && imageUrl !== 'null' ? imageUrl : imgNotFoundUrl != null ? imgNotFoundUrl : '/images/products/imgnotfound.png';
16357
+ var EmptyStateText = styled.p(_templateObject$T || (_templateObject$T = _taggedTemplateLiteralLoose(["\n font-size: 16px;\n color: #4b4b4b;\n margin: 16px 0;\n"])));
16358
+ var ProductCardWrapper = styled.div(_templateObject2$D || (_templateObject2$D = _taggedTemplateLiteralLoose(["\n position: relative;\n background-color: #ffffff;\n border: 1px solid #d3d3d3;\n border-radius: 10px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 10px;\n gap: 10px;\n cursor: pointer;\n"])));
16359
+ var TopBar = styled.div(_templateObject3$t || (_templateObject3$t = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n"])));
16360
+ var SearchWrapper = styled(Box)(_templateObject4$n || (_templateObject4$n = _taggedTemplateLiteralLoose(["\n && {\n margin-bottom: 24px;\n max-width: 400px;\n width: 100%;\n }\n"])));
16361
+ var TotalItemsText = styled.div(_templateObject5$i || (_templateObject5$i = _taggedTemplateLiteralLoose(["\n font-size: 14px;\n font-weight: 500;\n color: #4b4b4b;\n margin-bottom: 24px;\n white-space: nowrap;\n"])));
16362
+ var DeleteButton = styled.button(_templateObject6$g || (_templateObject6$g = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 8px;\n right: 8px;\n opacity: 1;\n pointer-events: auto;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 50%;\n background-color: #ffffff;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n color: #ff0000;\n"])));
16363
+ var PriceContainer = styled.div(_templateObject7$c || (_templateObject7$c = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n"])));
16364
+ var DiscountPriceRow = styled.div(_templateObject8$a || (_templateObject8$a = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n"])));
16365
+ var ProductName$2 = styled.div(_templateObject9$7 || (_templateObject9$7 = _taggedTemplateLiteralLoose(["\n font-size: 16px;\n font-weight: 500;\n color: #000000;\n text-align: center;\n height: 40px;\n overflow: hidden;\n width: 100%;\n text-overflow: ellipsis;\n white-space: pre-wrap;\n"])));
16366
+ var ProductActionButton = styled(Button)(_templateObject10$5 || (_templateObject10$5 = _taggedTemplateLiteralLoose(["\n && {\n background-color: ", ";\n color: #ffffff;\n border-radius: 10px;\n font-weight: 500;\n }\n"])), function (_ref) {
16367
+ var primaryColor = _ref.primaryColor;
16368
+ return primaryColor != null ? primaryColor : '#000000';
16369
+ });
16370
+ var OutOfStockButton = styled(Button)(_templateObject11$4 || (_templateObject11$4 = _taggedTemplateLiteralLoose(["\n && {\n color: #ffffff;\n border-radius: 10px;\n font-weight: 500;\n }\n"])));
16371
+
16372
+ var getProductImage = function getProductImage(imageUrl, fallbackUrl) {
16373
+ var url = imageUrl || fallbackUrl;
16374
+ return url && url !== 'null' ? url : '/images/products/imgnotfound.png';
16375
+ };
16376
+ var formatPrice = function formatPrice(price) {
16377
+ var value = Number(price);
16378
+ return Number.isFinite(value) ? value.toFixed(2) : '0.00';
16289
16379
  };
16290
16380
  var DEFAULT_GRID_SPAN = {
16291
16381
  lg: 3,
@@ -16293,7 +16383,6 @@ var DEFAULT_GRID_SPAN = {
16293
16383
  sm: 6,
16294
16384
  xs: 6
16295
16385
  };
16296
- var WISHLIST_ITEM_OMIT_KEYS = ['createdBy', 'insertedTimestamp', 'updatedBy', 'updatedTimestamp'];
16297
16386
  var getStyleOverride = function getStyleOverride(styleOverrides) {
16298
16387
  for (var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
16299
16388
  keys[_key - 1] = arguments[_key];
@@ -16304,72 +16393,45 @@ var getStyleOverride = function getStyleOverride(styleOverrides) {
16304
16393
  }
16305
16394
  return undefined;
16306
16395
  };
16307
- var WishlistComponent = function WishlistComponent(_ref) {
16308
- var style = _ref.style,
16309
- imgNotFoundUrl = _ref.imgNotFoundUrl,
16396
+ var normalizeWishlistItems = function normalizeWishlistItems(data) {
16397
+ if (Array.isArray(data)) return data.filter(Boolean);
16398
+ var content = data === null || data === void 0 ? void 0 : data.content;
16399
+ return Array.isArray(content) ? content.filter(Boolean) : [];
16400
+ };
16401
+ var getWishlistTotal = function getWishlistTotal(data, items) {
16402
+ var _items$length;
16403
+ if (typeof (data === null || data === void 0 ? void 0 : data.totalElements) === 'number') {
16404
+ return data.totalElements;
16405
+ }
16406
+ return (_items$length = items === null || items === void 0 ? void 0 : items.length) != null ? _items$length : 0;
16407
+ };
16408
+ var WishlistContent = function WishlistContent(_ref) {
16409
+ var data = _ref.data,
16410
+ apiEndPoint = _ref.apiEndPoint,
16310
16411
  token = _ref.token,
16311
- _ref$isLoading = _ref.isLoading,
16312
- isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
16313
- _ref$wishlistData = _ref.wishlistData,
16314
- wishlistData = _ref$wishlistData === void 0 ? [] : _ref$wishlistData,
16315
- onRemoveFromWishlist = _ref.onRemoveFromWishlist,
16316
- onSearch = _ref.onSearch,
16317
- _ref$span = _ref.span,
16318
- span = _ref$span === void 0 ? DEFAULT_GRID_SPAN : _ref$span,
16412
+ searchInput = _ref.searchInput,
16413
+ onSearchChange = _ref.onSearchChange,
16414
+ searchQuery = _ref.searchQuery,
16415
+ styleOverrides = _ref.styleOverrides,
16416
+ gridSpan = _ref.gridSpan,
16319
16417
  primaryColor = _ref.primaryColor,
16320
- apiEndPoint = _ref.apiEndPoint,
16321
- onAddToCart = _ref.onAddToCart,
16418
+ onMoveToCart = _ref.onMoveToCart,
16322
16419
  onProductCardClick = _ref.onProductCardClick,
16323
- _ref$doNotShowPrice = _ref.doNotShowPrice,
16324
- doNotShowPrice = _ref$doNotShowPrice === void 0 ? false : _ref$doNotShowPrice;
16325
- var _useAllSystemFeatureV = useAllSystemFeatureValues({
16326
- apiEndPoint: apiEndPoint,
16327
- token: token
16328
- }),
16329
- allowToProcessInvoiceForOutOfStockProductsEcommerce = _useAllSystemFeatureV.allowToProcessInvoiceForOutOfStockProductsEcommerce;
16330
- var styleOverrides = useMemo(function () {
16331
- return _extends({}, style || {});
16332
- }, [style]);
16333
- var _useState = useState(''),
16334
- searchInput = _useState[0],
16335
- setSearchInput = _useState[1];
16420
+ _ref$imgNotFoundUrl = _ref.imgNotFoundUrl,
16421
+ imgNotFoundUrl = _ref$imgNotFoundUrl === void 0 ? '' : _ref$imgNotFoundUrl,
16422
+ setRefreshTrigger = _ref.setRefreshTrigger,
16423
+ allowToProcessInvoiceForOutOfStockProducts = _ref.allowToProcessInvoiceForOutOfStockProducts;
16336
16424
  var items = useMemo(function () {
16337
- var _wishlistData$content;
16338
- if (Array.isArray(wishlistData)) return wishlistData;
16339
- return (_wishlistData$content = wishlistData === null || wishlistData === void 0 ? void 0 : wishlistData.content) != null ? _wishlistData$content : [];
16340
- }, [wishlistData]);
16341
- var gridSpan = useMemo(function () {
16342
- return _extends({}, DEFAULT_GRID_SPAN, span || {});
16343
- }, [span]);
16425
+ return normalizeWishlistItems(data);
16426
+ }, [data]);
16344
16427
  var totalItems = useMemo(function () {
16345
- if (typeof (wishlistData === null || wishlistData === void 0 ? void 0 : wishlistData.totalElements) === 'number') {
16346
- return wishlistData === null || wishlistData === void 0 ? void 0 : wishlistData.totalElements;
16347
- }
16348
- return items === null || items === void 0 ? void 0 : items.length;
16349
- }, [wishlistData, items === null || items === void 0 ? void 0 : items.length]);
16350
- var debouncedSearch = useMemo(function () {
16351
- return debounce$1(function (value) {
16352
- return onSearch === null || onSearch === void 0 ? void 0 : onSearch(value);
16353
- }, 500);
16354
- }, [onSearch]);
16355
- useEffect(function () {
16356
- return function () {
16357
- debouncedSearch.cancel();
16358
- };
16359
- }, [debouncedSearch]);
16360
- if (!token) {
16361
- return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("h1", null, "Wishlist"), /*#__PURE__*/React__default.createElement("p", null, "Please log in to view your wishlist."));
16362
- }
16363
- if (!isLoading && items.length === 0) {
16364
- return /*#__PURE__*/React__default.createElement(EmptyStateText, {
16365
- style: getStyleOverride(styleOverrides, 'emptyStateText', 'EmptyStateText')
16366
- }, "no products added to wishlist");
16367
- }
16428
+ return getWishlistTotal(data, items);
16429
+ }, [data, items]);
16430
+ var isEmptyWishlist = items.length === 0 && !searchQuery;
16368
16431
  return /*#__PURE__*/React__default.createElement("div", {
16369
16432
  style: {
16370
- marginTop: '1rem',
16371
- height: '100%',
16372
- width: '100%'
16433
+ width: '100%',
16434
+ height: '100%'
16373
16435
  }
16374
16436
  }, /*#__PURE__*/React__default.createElement(TopBar, {
16375
16437
  style: getStyleOverride(styleOverrides, 'topBar', 'TopBar')
@@ -16378,12 +16440,7 @@ var WishlistComponent = function WishlistComponent(_ref) {
16378
16440
  }, /*#__PURE__*/React__default.createElement(TextField, {
16379
16441
  placeholder: "Type minimum 3 characters to search...",
16380
16442
  value: searchInput,
16381
- onChange: function onChange(e) {
16382
- var value = e.target.value;
16383
- setSearchInput(value);
16384
- if (!token || typeof onSearch !== 'function') return;
16385
- debouncedSearch(value);
16386
- },
16443
+ onChange: onSearchChange,
16387
16444
  size: "small",
16388
16445
  fullWidth: true,
16389
16446
  sx: {
@@ -16393,71 +16450,169 @@ var WishlistComponent = function WishlistComponent(_ref) {
16393
16450
  }
16394
16451
  })), /*#__PURE__*/React__default.createElement(TotalItemsText, {
16395
16452
  style: getStyleOverride(styleOverrides, 'totalItemsText', 'TotalItemsText')
16396
- }, "Total " + totalItems + " item" + (totalItems === 1 ? '' : 's'))), isLoading ? /*#__PURE__*/React__default.createElement(WishlistProductCardSkeleton, {
16397
- span: span
16398
- }) : /*#__PURE__*/React__default.createElement(Grid, {
16453
+ }, "Total " + totalItems + " item" + (totalItems === 1 ? '' : 's'))), isEmptyWishlist || items.length === 0 ? /*#__PURE__*/React__default.createElement(EmptyStateText, {
16454
+ style: getStyleOverride(styleOverrides, 'emptyStateText', 'EmptyStateText')
16455
+ }, "No wishlist items found") : /*#__PURE__*/React__default.createElement(Grid, {
16399
16456
  container: true,
16400
16457
  spacing: 2
16401
- }, items === null || items === void 0 ? void 0 : items.map(function (product) {
16458
+ }, items.map(function (product, index) {
16459
+ var _ref2, _product$id;
16402
16460
  return /*#__PURE__*/React__default.createElement(Grid, {
16403
16461
  item: true,
16404
- xs: gridSpan.xs,
16405
- sm: gridSpan.sm,
16406
- md: gridSpan.md,
16407
- lg: gridSpan.lg,
16408
- key: product === null || product === void 0 ? void 0 : product.id
16462
+ xs: gridSpan === null || gridSpan === void 0 ? void 0 : gridSpan.xs,
16463
+ sm: gridSpan === null || gridSpan === void 0 ? void 0 : gridSpan.sm,
16464
+ md: gridSpan === null || gridSpan === void 0 ? void 0 : gridSpan.md,
16465
+ lg: gridSpan === null || gridSpan === void 0 ? void 0 : gridSpan.lg,
16466
+ key: (_ref2 = (_product$id = product === null || product === void 0 ? void 0 : product.id) != null ? _product$id : product === null || product === void 0 ? void 0 : product.productId) != null ? _ref2 : index
16409
16467
  }, /*#__PURE__*/React__default.createElement(ProductCard, {
16468
+ setRefreshTrigger: setRefreshTrigger,
16469
+ apiEndPoint: apiEndPoint,
16470
+ token: token,
16410
16471
  product: product,
16411
16472
  styleOverrides: styleOverrides,
16412
- onRemoveFromWishlist: onRemoveFromWishlist,
16413
16473
  primaryColor: primaryColor,
16474
+ onMoveToCart: onMoveToCart,
16475
+ onProductCardClick: onProductCardClick,
16414
16476
  imgNotFoundUrl: imgNotFoundUrl,
16415
- onAddToCart: onAddToCart,
16416
- allowToProcessInvoiceForOutOfStockProductsEcommerce: allowToProcessInvoiceForOutOfStockProductsEcommerce,
16417
- doNotShowPrice: doNotShowPrice,
16418
- onProductCardClick: onProductCardClick
16477
+ allowToProcessInvoiceForOutOfStockProducts: allowToProcessInvoiceForOutOfStockProducts
16419
16478
  }));
16420
16479
  })));
16421
16480
  };
16422
- var ProductCardWrapper = styled.div(_templateObject$T || (_templateObject$T = _taggedTemplateLiteralLoose(["\n position: relative;\n background-color: #ffffff;\n border: 1px solid #d3d3d3;\n border-radius: 10px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 10px;\n gap: 10px;\n cursor: pointer;\n"])));
16423
- var TopBar = styled.div(_templateObject2$D || (_templateObject2$D = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n"])));
16424
- var SearchWrapper = styled(Box)(_templateObject3$t || (_templateObject3$t = _taggedTemplateLiteralLoose(["\n && {\n margin-bottom: 24px;\n max-width: 400px;\n width: 100%;\n }\n"])));
16425
- var TotalItemsText = styled.div(_templateObject4$n || (_templateObject4$n = _taggedTemplateLiteralLoose(["\n font-size: 14px;\n font-weight: 500;\n color: #4b4b4b;\n margin-bottom: 24px;\n white-space: nowrap;\n"])));
16426
- var EmptyStateText = styled.p(_templateObject5$i || (_templateObject5$i = _taggedTemplateLiteralLoose(["\n font-size: 16px;\n color: #4b4b4b;\n margin: 16px 0;\n"])));
16427
- var DeleteButton = styled.button(_templateObject6$g || (_templateObject6$g = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 8px;\n right: 8px;\n opacity: 1;\n pointer-events: auto;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 50%;\n background-color: #ffffff;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);\n cursor: pointer;\n color: #ff0000;\n"])));
16428
- var PriceContainer = styled.div(_templateObject7$c || (_templateObject7$c = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n"])));
16429
- var DiscountPriceRow = styled.div(_templateObject8$a || (_templateObject8$a = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n"])));
16430
- var ProductName$2 = styled.div(_templateObject9$7 || (_templateObject9$7 = _taggedTemplateLiteralLoose(["\n font-size: 16px;\n font-weight: 500;\n color: #000000;\n text-align: center;\n height: 40px;\n overflow: hidden;\n width: 100%;\n text-overflow: ellipsis;\n white-space: pre-wrap;\n"])));
16431
- var ProductActionButton = styled(Button)(_templateObject10$5 || (_templateObject10$5 = _taggedTemplateLiteralLoose(["\n && {\n background-color: ", ";\n color: #ffffff;\n border-radius: 10px;\n font-weight: 500;\n }\n"])), function (_ref2) {
16432
- var primaryColor = _ref2.primaryColor;
16433
- return primaryColor != null ? primaryColor : '#000000';
16434
- });
16435
- var OutOfStockButton = styled(Button)(_templateObject11$4 || (_templateObject11$4 = _taggedTemplateLiteralLoose(["\n && {\n color: #ffffff;\n border-radius: 10px;\n font-weight: 500;\n }\n"])));
16436
- var ProductCard = function ProductCard(_ref3) {
16437
- var _product$standardPric, _product$retailPrice, _product$standardPric2;
16438
- var product = _ref3.product,
16439
- styleOverrides = _ref3.styleOverrides,
16440
- onRemoveFromWishlist = _ref3.onRemoveFromWishlist,
16481
+ var WishlistComponent = function WishlistComponent(_ref3) {
16482
+ var _ref3$style = _ref3.style,
16483
+ style = _ref3$style === void 0 ? {} : _ref3$style,
16484
+ token = _ref3.token,
16485
+ _ref3$span = _ref3.span,
16486
+ span = _ref3$span === void 0 ? DEFAULT_GRID_SPAN : _ref3$span,
16441
16487
  primaryColor = _ref3.primaryColor,
16442
- imgNotFoundUrl = _ref3.imgNotFoundUrl,
16443
- allowToProcessInvoiceForOutOfStockProductsEcommerce = _ref3.allowToProcessInvoiceForOutOfStockProductsEcommerce,
16444
- onAddToCart = _ref3.onAddToCart,
16445
- doNotShowPrice = _ref3.doNotShowPrice,
16446
- onProductCardClick = _ref3.onProductCardClick;
16447
- var router = useRouter();
16448
- var _useState2 = useState(false),
16449
- deleteLoading = _useState2[0],
16450
- setDeleteLoading = _useState2[1];
16451
- var _useState3 = useState(false),
16452
- addToCartLoading = _useState3[0],
16453
- setAddToCartLoading = _useState3[1];
16454
- var removeFromWishlist = function removeFromWishlist(productId) {
16488
+ apiEndPoint = _ref3.apiEndPoint,
16489
+ onMoveToCart = _ref3.onMoveToCart,
16490
+ onProductCardClick = _ref3.onProductCardClick,
16491
+ _ref3$allowToProcessI = _ref3.allowToProcessInvoiceForOutOfStockProducts,
16492
+ allowToProcessInvoiceForOutOfStockProducts = _ref3$allowToProcessI === void 0 ? false : _ref3$allowToProcessI;
16493
+ var styleOverrides = useMemo(function () {
16494
+ return _extends({}, style || {});
16495
+ }, [style]);
16496
+ var _useState = useState(''),
16497
+ searchInput = _useState[0],
16498
+ setSearchInput = _useState[1];
16499
+ var _useState2 = useState(''),
16500
+ searchQuery = _useState2[0],
16501
+ setSearchQuery = _useState2[1];
16502
+ var _useState3 = useState(0),
16503
+ refreshTrigger = _useState3[0],
16504
+ setRefreshTrigger = _useState3[1];
16505
+ var gridSpan = useMemo(function () {
16506
+ return _extends({}, DEFAULT_GRID_SPAN, span || {});
16507
+ }, [span]);
16508
+ var debouncedSearch = useMemo(function () {
16509
+ return debounce$1(function (value) {
16510
+ var normalizedValue = value != null ? value : '';
16511
+ if (normalizedValue.length === 0 || normalizedValue.length >= 3) {
16512
+ setSearchQuery(normalizedValue);
16513
+ }
16514
+ }, 500);
16515
+ }, []);
16516
+ useEffect(function () {
16517
+ return function () {
16518
+ debouncedSearch.cancel();
16519
+ };
16520
+ }, [debouncedSearch]);
16521
+ var handleSearchChange = useCallback(function (e) {
16522
+ var _e$target$value, _e$target;
16523
+ var value = (_e$target$value = e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value) != null ? _e$target$value : '';
16524
+ setSearchInput(value);
16525
+ debouncedSearch(value);
16526
+ }, [debouncedSearch]);
16527
+ var wishlistTrigger = useMemo(function () {
16528
+ return searchQuery + "-" + refreshTrigger;
16529
+ }, [searchQuery, refreshTrigger]);
16530
+ var wishlistAsyncService = useCallback(function () {
16531
+ return getWishlistData({
16532
+ apiEndPoint: apiEndPoint,
16533
+ token: token,
16534
+ queryParams: _extends({
16535
+ page: 0,
16536
+ size: 9999
16537
+ }, searchQuery ? {
16538
+ productName: searchQuery
16539
+ } : {})
16540
+ });
16541
+ }, [apiEndPoint, token, searchQuery]);
16542
+ var wishlistLoadingView = useMemo(function () {
16543
+ return /*#__PURE__*/React__default.createElement(WishlistProductCardSkeleton, {
16544
+ span: span
16545
+ });
16546
+ }, [span]);
16547
+ if (!token) {
16548
+ return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("h1", null, "Wishlist"), /*#__PURE__*/React__default.createElement("p", null, "Please log in to view your wishlist."));
16549
+ }
16550
+ if (!apiEndPoint) {
16551
+ return /*#__PURE__*/React__default.createElement(EmptyStateText, null, "Unable to load wishlist. API endpoint is not configured.");
16552
+ }
16553
+ return /*#__PURE__*/React__default.createElement("div", {
16554
+ style: {
16555
+ marginTop: '1rem',
16556
+ height: '100%',
16557
+ width: '100%'
16558
+ }
16559
+ }, /*#__PURE__*/React__default.createElement(AsyncDataLoadComponent, {
16560
+ asyncService: wishlistAsyncService,
16561
+ triggerChange: wishlistTrigger,
16562
+ loadingView: wishlistLoadingView
16563
+ }, function (data) {
16564
+ return /*#__PURE__*/React__default.createElement(WishlistContent, {
16565
+ data: data,
16566
+ apiEndPoint: apiEndPoint,
16567
+ token: token,
16568
+ searchInput: searchInput,
16569
+ onSearchChange: handleSearchChange,
16570
+ searchQuery: searchQuery,
16571
+ styleOverrides: styleOverrides,
16572
+ gridSpan: gridSpan,
16573
+ primaryColor: primaryColor,
16574
+ onMoveToCart: onMoveToCart,
16575
+ onProductCardClick: onProductCardClick,
16576
+ setRefreshTrigger: setRefreshTrigger,
16577
+ allowToProcessInvoiceForOutOfStockProducts: allowToProcessInvoiceForOutOfStockProducts
16578
+ });
16579
+ }));
16580
+ };
16581
+ var ProductCard = function ProductCard(_ref4) {
16582
+ var _product$standardPric, _product$retailPrice;
16583
+ var product = _ref4.product,
16584
+ styleOverrides = _ref4.styleOverrides,
16585
+ primaryColor = _ref4.primaryColor,
16586
+ onMoveToCart = _ref4.onMoveToCart,
16587
+ onProductCardClick = _ref4.onProductCardClick,
16588
+ _ref4$imgNotFoundUrl = _ref4.imgNotFoundUrl,
16589
+ imgNotFoundUrl = _ref4$imgNotFoundUrl === void 0 ? '' : _ref4$imgNotFoundUrl,
16590
+ apiEndPoint = _ref4.apiEndPoint,
16591
+ token = _ref4.token,
16592
+ setRefreshTrigger = _ref4.setRefreshTrigger,
16593
+ allowToProcessInvoiceForOutOfStockProducts = _ref4.allowToProcessInvoiceForOutOfStockProducts;
16594
+ var _useState4 = useState(false),
16595
+ deleteLoading = _useState4[0],
16596
+ setDeleteLoading = _useState4[1];
16597
+ var _useState5 = useState(false),
16598
+ moveToCartLoading = _useState5[0],
16599
+ setMoveToCartLoading = _useState5[1];
16600
+ if (!product) return null;
16601
+ var removeItem = function removeItem(item) {
16455
16602
  try {
16456
- if (typeof onRemoveFromWishlist !== 'function') return Promise.resolve();
16603
+ if (!(item !== null && item !== void 0 && item.productId) && !(item !== null && item !== void 0 && item.id)) return Promise.resolve();
16457
16604
  setDeleteLoading(true);
16458
16605
  var _temp = _finallyRethrows(function () {
16459
16606
  return _catch(function () {
16460
- return Promise.resolve(onRemoveFromWishlist(productId)).then(function () {});
16607
+ return Promise.resolve(removeFromWishlist({
16608
+ apiEndPoint: apiEndPoint,
16609
+ token: token,
16610
+ products: [item]
16611
+ })).then(function () {
16612
+ setRefreshTrigger === null || setRefreshTrigger === void 0 ? void 0 : setRefreshTrigger(function (prev) {
16613
+ return prev + 1;
16614
+ });
16615
+ });
16461
16616
  }, function () {});
16462
16617
  }, function (_wasThrown, _result) {
16463
16618
  setDeleteLoading(false);
@@ -16469,30 +16624,10 @@ var ProductCard = function ProductCard(_ref3) {
16469
16624
  return Promise.reject(e);
16470
16625
  }
16471
16626
  };
16472
- var onChangeQuantity = function onChangeQuantity(product) {
16473
- try {
16474
- if (!onAddToCart || typeof onAddToCart !== 'function') return Promise.resolve();
16475
- var _temp2 = _finallyRethrows(function () {
16476
- return _catch(function () {
16477
- setAddToCartLoading(true);
16478
- return Promise.resolve(onAddToCart(omit$1(product, WISHLIST_ITEM_OMIT_KEYS))).then(function () {});
16479
- }, function () {});
16480
- }, function (_wasThrown2, _result2) {
16481
- setAddToCartLoading(false);
16482
- if (_wasThrown2) throw _result2;
16483
- return _result2;
16484
- });
16485
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
16486
- } catch (e) {
16487
- return Promise.reject(e);
16488
- }
16489
- };
16490
16627
  return /*#__PURE__*/React__default.createElement(ProductCardWrapper, {
16491
16628
  style: getStyleOverride(styleOverrides, 'productCardWrapper', 'ProductCardWrapper'),
16492
16629
  onClick: function onClick() {
16493
- if (typeof onProductCardClick === 'function') {
16494
- onProductCardClick(product);
16495
- }
16630
+ onProductCardClick === null || onProductCardClick === void 0 ? void 0 : onProductCardClick(product);
16496
16631
  }
16497
16632
  }, /*#__PURE__*/React__default.createElement(DeleteButton, {
16498
16633
  type: "button",
@@ -16501,11 +16636,13 @@ var ProductCard = function ProductCard(_ref3) {
16501
16636
  style: getStyleOverride(styleOverrides, 'deleteButton', 'DeleteButton'),
16502
16637
  onClick: function onClick(e) {
16503
16638
  try {
16504
- var _temp3 = _catch(function () {
16505
- e.stopPropagation();
16506
- return Promise.resolve(removeFromWishlist(product === null || product === void 0 ? void 0 : product.productId)).then(function () {});
16507
- }, function () {});
16508
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(function () {}) : void 0);
16639
+ var _e$stopPropagation;
16640
+ e === null || e === void 0 ? void 0 : (_e$stopPropagation = e.stopPropagation) === null || _e$stopPropagation === void 0 ? void 0 : _e$stopPropagation.call(e);
16641
+ return Promise.resolve(_catch(function () {
16642
+ var confirm = window.confirm('Are you sure you want to remove this item from wishlist?');
16643
+ if (!confirm) return;
16644
+ return Promise.resolve(removeItem(product)).then(function () {});
16645
+ }, function () {}));
16509
16646
  } catch (e) {
16510
16647
  return Promise.reject(e);
16511
16648
  }
@@ -16522,44 +16659,65 @@ var ProductCard = function ProductCard(_ref3) {
16522
16659
  width: 160,
16523
16660
  height: 160,
16524
16661
  objectFit: "contain"
16525
- }), !doNotShowPrice ? /*#__PURE__*/React__default.createElement(PriceContainer, {
16662
+ }), /*#__PURE__*/React__default.createElement(PriceContainer, {
16526
16663
  style: getStyleOverride(styleOverrides, 'priceContainer', 'PriceContainer')
16527
- }, (product === null || product === void 0 ? void 0 : product.standardPrice) > (product === null || product === void 0 ? void 0 : product.retailPrice) ? /*#__PURE__*/React__default.createElement(DiscountPriceRow, {
16664
+ }, ((_product$standardPric = product === null || product === void 0 ? void 0 : product.standardPrice) != null ? _product$standardPric : 0) > ((_product$retailPrice = product === null || product === void 0 ? void 0 : product.retailPrice) != null ? _product$retailPrice : 0) ? /*#__PURE__*/React__default.createElement(DiscountPriceRow, {
16528
16665
  style: getStyleOverride(styleOverrides, 'discountPriceRow', 'DiscountPriceRow')
16529
- }, /*#__PURE__*/React__default.createElement("del", null, "$" + (product === null || product === void 0 ? void 0 : (_product$standardPric = product.standardPrice) === null || _product$standardPric === void 0 ? void 0 : _product$standardPric.toFixed(2))), /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("div", null, "$" + (product === null || product === void 0 ? void 0 : (_product$retailPrice = product.retailPrice) === null || _product$retailPrice === void 0 ? void 0 : _product$retailPrice.toFixed(2))))) : /*#__PURE__*/React__default.createElement("div", null, "$" + (product === null || product === void 0 ? void 0 : (_product$standardPric2 = product.standardPrice) === null || _product$standardPric2 === void 0 ? void 0 : _product$standardPric2.toFixed(2)))) : /*#__PURE__*/React__default.createElement("div", null), /*#__PURE__*/React__default.createElement(ProductName$2, {
16666
+ }, /*#__PURE__*/React__default.createElement("del", null, "$" + formatPrice(product === null || product === void 0 ? void 0 : product.standardPrice.toFixed(2))), /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("div", null, "$" + formatPrice(product === null || product === void 0 ? void 0 : product.retailPrice.toFixed(2))))) : /*#__PURE__*/React__default.createElement("div", null, "$" + formatPrice(product === null || product === void 0 ? void 0 : product.standardPrice.toFixed(2)))), /*#__PURE__*/React__default.createElement(ProductName$2, {
16530
16667
  style: getStyleOverride(styleOverrides, 'productName', 'ProductName')
16531
- }, product === null || product === void 0 ? void 0 : product.productName), /*#__PURE__*/React__default.createElement("div", null, (product === null || product === void 0 ? void 0 : product.productStock) > 0 || product !== null && product !== void 0 && product.hasChildProduct ? /*#__PURE__*/React__default.createElement(ProductActionButton, {
16668
+ }, product === null || product === void 0 ? void 0 : product.productName), /*#__PURE__*/React__default.createElement("div", null, (product === null || product === void 0 ? void 0 : product.productStock) > 0 || allowToProcessInvoiceForOutOfStockProducts || product !== null && product !== void 0 && product.hasChildProduct ? /*#__PURE__*/React__default.createElement(ProductActionButton, {
16532
16669
  variant: "contained",
16533
16670
  color: "primary",
16534
16671
  primaryColor: primaryColor,
16535
16672
  style: getStyleOverride(styleOverrides, 'productActionButton', 'ProductActionButton'),
16536
16673
  onClick: function onClick(e) {
16537
- e.stopPropagation();
16538
- e.preventDefault();
16539
- if (product !== null && product !== void 0 && product.hasChildProduct) {
16540
- if (typeof onProductCardClick === 'function') {
16541
- onProductCardClick(product);
16542
- }
16543
- } else {
16544
- if (onAddToCart) {
16545
- var _product$quantity;
16546
- onChangeQuantity(_extends({}, product, {
16547
- quantity: checkMinMaxQty({
16548
- quantity: (_product$quantity = product === null || product === void 0 ? void 0 : product.quantity) != null ? _product$quantity : 1,
16549
- product: product,
16550
- allowToProcessInvoiceForOutOfStockProductsEcommerce: allowToProcessInvoiceForOutOfStockProductsEcommerce
16551
- })
16552
- }));
16553
- }
16674
+ try {
16675
+ var _e$stopPropagation2, _e$preventDefault;
16676
+ e === null || e === void 0 ? void 0 : (_e$stopPropagation2 = e.stopPropagation) === null || _e$stopPropagation2 === void 0 ? void 0 : _e$stopPropagation2.call(e);
16677
+ e === null || e === void 0 ? void 0 : (_e$preventDefault = e.preventDefault) === null || _e$preventDefault === void 0 ? void 0 : _e$preventDefault.call(e);
16678
+ return Promise.resolve(function () {
16679
+ if (product !== null && product !== void 0 && product.hasChildProduct) {
16680
+ onProductCardClick === null || onProductCardClick === void 0 ? void 0 : onProductCardClick(product);
16681
+ } else return function () {
16682
+ if (typeof onMoveToCart === 'function') {
16683
+ var _product$id2;
16684
+ var productId = (_product$id2 = product === null || product === void 0 ? void 0 : product.id) != null ? _product$id2 : product === null || product === void 0 ? void 0 : product.productId;
16685
+ if (!productId) return;
16686
+ setMoveToCartLoading(true);
16687
+ var _temp2 = _finallyRethrows(function () {
16688
+ return _catch(function () {
16689
+ return Promise.resolve(moveToCart({
16690
+ apiEndPoint: apiEndPoint,
16691
+ token: token,
16692
+ productId: productId
16693
+ })).then(function () {
16694
+ setRefreshTrigger === null || setRefreshTrigger === void 0 ? void 0 : setRefreshTrigger(function (prev) {
16695
+ return prev + 1;
16696
+ });
16697
+ onMoveToCart(product);
16698
+ });
16699
+ }, function () {});
16700
+ }, function (_wasThrown2, _result3) {
16701
+ setMoveToCartLoading(false);
16702
+ if (_wasThrown2) throw _result3;
16703
+ return _result3;
16704
+ });
16705
+ if (_temp2 && _temp2.then) return _temp2.then(function () {});
16706
+ }
16707
+ }();
16708
+ }());
16709
+ } catch (e) {
16710
+ return Promise.reject(e);
16554
16711
  }
16555
16712
  }
16556
- }, product !== null && product !== void 0 && product.hasChildProduct ? 'Select Options' : addToCartLoading ? 'Moving...' : 'Move to Cart') : /*#__PURE__*/React__default.createElement(OutOfStockButton, {
16713
+ }, product !== null && product !== void 0 && product.hasChildProduct ? 'Select Options' : moveToCartLoading ? 'Moving...' : 'Move to Cart') : /*#__PURE__*/React__default.createElement(OutOfStockButton, {
16557
16714
  variant: "contained",
16558
16715
  color: "primary",
16559
16716
  disabled: true,
16560
16717
  style: getStyleOverride(styleOverrides, 'outOfStockButton', 'OutOfStockButton'),
16561
16718
  onClick: function onClick(e) {
16562
- return e.stopPropagation();
16719
+ var _e$stopPropagation3;
16720
+ return e === null || e === void 0 ? void 0 : (_e$stopPropagation3 = e.stopPropagation) === null || _e$stopPropagation3 === void 0 ? void 0 : _e$stopPropagation3.call(e);
16563
16721
  }
16564
16722
  }, "Out Of stock")));
16565
16723
  };