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