@tapcart/mobile-components 0.10.3 → 0.11.0

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.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { cn, cva, getColor, getBackgroundAndPaddingStyle, getBorderStyle, getBorderSidesStyle, getTextStyle, getVerticalAlignmentStyle, getBackgroundAndSpacingStyle, getIdFromGid, productGidFromId, variantGidFromId, getPaddingStyle, getMarginStyle, getVerticalAlignment, mapFlexToAlignment, formatRelativeTime, stringRatioToInt, getOverlayStyle, throttleFunction, getDestinationHandler, getProductGidsFromIds, getVariantGidsFromIds, getBadgesForProductFn, createCollectionImageMap, isFavoriteIntegrationEnabled, getEnabledWishlistIntegration, supportsMultipleWishlists, findWishlistEntry, getWishlistAddItemNavigation, getLoyaltyButtonProps, getSpaceBetween, getGridSpacing, pluralize, getInputPlaceholderTextProps, parsePhoneNumber, } from "./lib/utils";
1
+ export { cn, cva, getColor, getBackgroundAndPaddingStyle, getBorderStyle, getBorderSidesStyle, getTextStyle, getVerticalAlignmentStyle, getBackgroundAndSpacingStyle, getIdFromGid, productGidFromId, variantGidFromId, getPaddingStyle, getMarginStyle, getVerticalAlignment, mapFlexToAlignment, formatRelativeTime, stringRatioToInt, getOverlayStyle, throttleFunction, getDestinationHandler, getProductGidsFromIds, getVariantGidsFromIds, getBadgesForProductFn, createCollectionImageMap, isFavoriteIntegrationEnabled, getEnabledWishlistIntegration, supportsMultipleWishlists, getWishlistAddItemNavigation, getLoyaltyButtonProps, getSpaceBetween, getGridSpacing, pluralize, getInputPlaceholderTextProps, parsePhoneNumber, addItemToWishlist, removeItemFromWishlists, } from "./lib/utils";
2
2
  export type { WishlistEntryMatch } from "./lib/utils";
3
3
  export * from "./lib/cart.util";
4
4
  export * from "./lib/variablesCart.util";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,EAAE,EACF,GAAG,EACH,QAAQ,EACR,4BAA4B,EAC5B,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,SAAS,EACT,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2CAA2C,CAAA;AACzD,cAAc,mCAAmC,CAAA;AACjD,cAAc,wCAAwC,CAAA;AACtD,cAAc,0CAA0C,CAAA;AACxD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,yCAAyC,CAAA;AACvD,cAAc,oCAAoC,CAAA;AAClD,cAAc,wCAAwC,CAAA;AACtD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sCAAsC,CAAA;AACpD,cAAc,oDAAoD,CAAA;AAClE,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uCAAuC,CAAA;AACrD,cAAc,0BAA0B,CAAA;AACxC,cAAc,uCAAuC,CAAA;AACrD,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA;AACrC,cAAc,sCAAsC,CAAA;AACpD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAE/C,cAAc,oCAAoC,CAAA;AAClD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kDAAkD,CAAA;AAChE,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qCAAqC,CAAA;AACnD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,cAAc,6CAA6C,CAAA;AAC3D,cAAc,kDAAkD,CAAA;AAChE,cAAc,qBAAqB,CAAA;AACnC,cAAc,mCAAmC,CAAA;AACjD,cAAc,qCAAqC,CAAA;AACnD,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // component exports
2
- export { cn, cva, getColor, getBackgroundAndPaddingStyle, getBorderStyle, getBorderSidesStyle, getTextStyle, getVerticalAlignmentStyle, getBackgroundAndSpacingStyle, getIdFromGid, productGidFromId, variantGidFromId, getPaddingStyle, getMarginStyle, getVerticalAlignment, mapFlexToAlignment, formatRelativeTime, stringRatioToInt, getOverlayStyle, throttleFunction, getDestinationHandler, getProductGidsFromIds, getVariantGidsFromIds, getBadgesForProductFn, createCollectionImageMap, isFavoriteIntegrationEnabled, getEnabledWishlistIntegration, supportsMultipleWishlists, findWishlistEntry, getWishlistAddItemNavigation, getLoyaltyButtonProps, getSpaceBetween, getGridSpacing, pluralize, getInputPlaceholderTextProps, parsePhoneNumber, } from "./lib/utils";
2
+ export { cn, cva, getColor, getBackgroundAndPaddingStyle, getBorderStyle, getBorderSidesStyle, getTextStyle, getVerticalAlignmentStyle, getBackgroundAndSpacingStyle, getIdFromGid, productGidFromId, variantGidFromId, getPaddingStyle, getMarginStyle, getVerticalAlignment, mapFlexToAlignment, formatRelativeTime, stringRatioToInt, getOverlayStyle, throttleFunction, getDestinationHandler, getProductGidsFromIds, getVariantGidsFromIds, getBadgesForProductFn, createCollectionImageMap, isFavoriteIntegrationEnabled, getEnabledWishlistIntegration, supportsMultipleWishlists, getWishlistAddItemNavigation, getLoyaltyButtonProps, getSpaceBetween, getGridSpacing, pluralize, getInputPlaceholderTextProps, parsePhoneNumber, addItemToWishlist, removeItemFromWishlists, } from "./lib/utils";
3
3
  export * from "./lib/cart.util";
4
4
  export * from "./lib/variablesCart.util";
5
5
  export * from "./lib/isTapcartVersion20.util";
@@ -1139,16 +1139,10 @@ type WishlistEntryItem = {
1139
1139
  productId?: string | null;
1140
1140
  variantId?: string | null;
1141
1141
  };
1142
- type WishlistSummary = {
1143
- id?: string | null;
1144
- _id?: string | null;
1145
- items?: WishlistEntryItem[] | null;
1146
- };
1147
1142
  export type WishlistEntryMatch = {
1148
1143
  wishlistId: string | null;
1149
1144
  item: WishlistEntryItem;
1150
1145
  };
1151
- export declare const findWishlistEntry: (wishlists: WishlistSummary[] | null | undefined, productId?: string | null, variantId?: string | null) => WishlistEntryMatch | null;
1152
1146
  export declare const pluralize: (word: string, count?: number, inclusive?: boolean) => string;
1153
1147
  export declare const getInputPlaceholderTextProps: (placeholderText: TextStyle) => {
1154
1148
  placeholderTextColor: Color;
@@ -1158,6 +1152,38 @@ export declare const getInputPlaceholderTextProps: (placeholderText: TextStyle)
1158
1152
  placeholderFont: string;
1159
1153
  placeholderFontWeight: string | number;
1160
1154
  };
1155
+ /**
1156
+ * Adds an item to the wishlist. Depending on merchant integrations or if variants exist or if logged in drawer functionality is involved
1157
+ * @param Tapcart
1158
+ * @param integrations
1159
+ * @param product
1160
+ * @param selectedVariantId
1161
+ */
1162
+ export declare const addItemToWishlist: ({ Tapcart, integrations, product, selectedVariantId, }: {
1163
+ Tapcart: any;
1164
+ integrations: Integrations;
1165
+ product: {
1166
+ id: string;
1167
+ variants?: any[] | undefined;
1168
+ };
1169
+ selectedVariantId?: string | undefined;
1170
+ }) => Promise<boolean>;
1171
+ /**
1172
+ * Removes an item from all wishlists by product ID.
1173
+ *
1174
+ * @param {Object} params - The parameters for the function.
1175
+ * @param {any} params.Tapcart - The Tapcart instance.
1176
+ * @param {string} params.productId - The ID of the product to remove.
1177
+ * @returns {Promise<{ id: string; variantId: string; productId: string }[]>} - An array of removed wishlist entries.
1178
+ */
1179
+ export declare const removeItemFromWishlists: ({ Tapcart, productId, }: {
1180
+ Tapcart: any;
1181
+ productId: string;
1182
+ }) => Promise<{
1183
+ id: string;
1184
+ variantId: string;
1185
+ productId: string;
1186
+ }[]>;
1161
1187
  export type Badge = {
1162
1188
  id: string;
1163
1189
  horizontalPosition: string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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"}
package/dist/lib/utils.js CHANGED
@@ -1,3 +1,12 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { clsx } from "clsx";
2
11
  import dayjs from "dayjs";
3
12
  import relativeTime from "dayjs/plugin/relativeTime";
@@ -302,13 +311,6 @@ export const createCollectionImageMap = (collections) => {
302
311
  return imageMap;
303
312
  }, {});
304
313
  };
305
- export const isFavoriteIntegrationEnabled = (integrations) => {
306
- return integrations.some((integration) => (integration.name === "tapcart-wishlist" ||
307
- integration.name === "grove-wishlist" ||
308
- integration.name === "tapcart-wishlist-api" ||
309
- integration.name === "swym") &&
310
- integration.enabled);
311
- };
312
314
  const WISHLIST_INTEGRATION_NAMES = new Set([
313
315
  "tapcart-wishlist",
314
316
  "tapcart-wishlist-v2",
@@ -316,6 +318,9 @@ const WISHLIST_INTEGRATION_NAMES = new Set([
316
318
  "grove-wishlist",
317
319
  "swym",
318
320
  ]);
321
+ export const isFavoriteIntegrationEnabled = (integrations) => {
322
+ return integrations.some((integration) => WISHLIST_INTEGRATION_NAMES.has(integration.name) && integration.enabled);
323
+ };
319
324
  export const getEnabledWishlistIntegration = (integrations) => {
320
325
  if (!Array.isArray(integrations))
321
326
  return null;
@@ -363,10 +368,11 @@ const normalizeShopifyId = (id) => {
363
368
  const normalized = getIdFromGid(id);
364
369
  return normalized || id;
365
370
  };
366
- export const findWishlistEntry = (wishlists, productId, variantId) => {
371
+ const findWishlistEntries = (wishlists, productId, variantId) => {
367
372
  if (!productId || !Array.isArray(wishlists) || wishlists.length === 0) {
368
- return null;
373
+ return [];
369
374
  }
375
+ const wishlistEntries = [];
370
376
  const normalizedProductId = normalizeShopifyId(productId);
371
377
  for (const wishlist of wishlists) {
372
378
  const items = Array.isArray(wishlist === null || wishlist === void 0 ? void 0 : wishlist.items) ? wishlist.items : [];
@@ -386,13 +392,13 @@ export const findWishlistEntry = (wishlists, productId, variantId) => {
386
392
  if (!variantMatches)
387
393
  continue;
388
394
  }
389
- return {
395
+ wishlistEntries.push({
390
396
  wishlistId: (wishlist === null || wishlist === void 0 ? void 0 : wishlist.id) || (wishlist === null || wishlist === void 0 ? void 0 : wishlist._id) || null,
391
397
  item,
392
- };
398
+ });
393
399
  }
394
400
  }
395
- return null;
401
+ return wishlistEntries;
396
402
  };
397
403
  export const pluralize = (word, count, inclusive) => {
398
404
  return Pluralize(word, count, inclusive);
@@ -411,6 +417,102 @@ export const getInputPlaceholderTextProps = (placeholderText) => {
411
417
  : placeholderText.font.weight,
412
418
  };
413
419
  };
420
+ /**
421
+ * Adds an item to the wishlist. Depending on merchant integrations or if variants exist or if logged in drawer functionality is involved
422
+ * @param Tapcart
423
+ * @param integrations
424
+ * @param product
425
+ * @param selectedVariantId
426
+ */
427
+ export const addItemToWishlist = ({ Tapcart, integrations, product, selectedVariantId, }) => __awaiter(void 0, void 0, void 0, function* () {
428
+ var _a, _b, _c, _d, _e, _f, _g, _h;
429
+ const isAuthenticated = !!((_b = (_a = Tapcart === null || Tapcart === void 0 ? void 0 : Tapcart.variables) === null || _a === void 0 ? void 0 : _a.customer) === null || _b === void 0 ? void 0 : _b.id);
430
+ const defaultWishListId = ((_e = (_d = (_c = Tapcart === null || Tapcart === void 0 ? void 0 : Tapcart.variables) === null || _c === void 0 ? void 0 : _c.wishlists) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.id) || "Default Wishlist";
431
+ const wishlistIntegration = getEnabledWishlistIntegration(integrations);
432
+ if (!wishlistIntegration) {
433
+ // If no wishlist integration adding is not possible
434
+ return false;
435
+ }
436
+ const supportsMultipleLists = supportsMultipleWishlists(wishlistIntegration);
437
+ if (!product || !(product === null || product === void 0 ? void 0 : product.id)) {
438
+ console.error("Product is missing");
439
+ return false;
440
+ }
441
+ if (!Tapcart) {
442
+ console.error("Tapcart instance is missing");
443
+ return false;
444
+ }
445
+ try {
446
+ const shouldOpenDrawer = supportsMultipleLists ||
447
+ ((product === null || product === void 0 ? void 0 : product.variants) && ((_f = product === null || product === void 0 ? void 0 : product.variants) === null || _f === void 0 ? void 0 : _f.length) > 1) ||
448
+ !isAuthenticated;
449
+ if (shouldOpenDrawer) {
450
+ Tapcart === null || Tapcart === void 0 ? void 0 : Tapcart.action("screen/open", getWishlistAddItemNavigation(getIdFromGid(product === null || product === void 0 ? void 0 : product.id), isAuthenticated));
451
+ return false;
452
+ }
453
+ const variantId = selectedVariantId || ((_h = (_g = product === null || product === void 0 ? void 0 : product.variants) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.id);
454
+ if (!variantId) {
455
+ console.error("Missing variant id for wishlist add");
456
+ return false;
457
+ }
458
+ const result = yield Tapcart.action("wishlist/item/add", {
459
+ productId: getIdFromGid(product === null || product === void 0 ? void 0 : product.id),
460
+ variantId: getIdFromGid(variantId),
461
+ wishlistId: defaultWishListId,
462
+ });
463
+ return result;
464
+ }
465
+ catch (error) {
466
+ console.error("Failed to add to wishlist", error);
467
+ }
468
+ return false;
469
+ });
470
+ /**
471
+ * Removes an item from all wishlists by product ID.
472
+ *
473
+ * @param {Object} params - The parameters for the function.
474
+ * @param {any} params.Tapcart - The Tapcart instance.
475
+ * @param {string} params.productId - The ID of the product to remove.
476
+ * @returns {Promise<{ id: string; variantId: string; productId: string }[]>} - An array of removed wishlist entries.
477
+ */
478
+ export const removeItemFromWishlists = ({ Tapcart, productId, }) => __awaiter(void 0, void 0, void 0, function* () {
479
+ var _j, _k, _l, _m;
480
+ if (!Tapcart) {
481
+ console.error("Tapcart instance is missing");
482
+ return [];
483
+ }
484
+ const removedWishlistEntries = [];
485
+ try {
486
+ const wishlistEntries = findWishlistEntries((_j = Tapcart === null || Tapcart === void 0 ? void 0 : Tapcart.variables) === null || _j === void 0 ? void 0 : _j.wishlists, productId);
487
+ // Remove all wishlist entries for the product
488
+ for (const wishlistEntry of wishlistEntries) {
489
+ if (!((_k = wishlistEntry === null || wishlistEntry === void 0 ? void 0 : wishlistEntry.item) === null || _k === void 0 ? void 0 : _k.variantId)) {
490
+ console.error("Missing variant id for wishlist removal");
491
+ continue;
492
+ }
493
+ if (!(wishlistEntry === null || wishlistEntry === void 0 ? void 0 : wishlistEntry.wishlistId)) {
494
+ console.error("Missing wishlist id for wishlist removal");
495
+ continue;
496
+ }
497
+ const result = yield Tapcart.action("wishlist/item/remove", {
498
+ productId,
499
+ variantId: getIdFromGid((_l = wishlistEntry === null || wishlistEntry === void 0 ? void 0 : wishlistEntry.item) === null || _l === void 0 ? void 0 : _l.variantId),
500
+ wishlistId: getIdFromGid(wishlistEntry === null || wishlistEntry === void 0 ? void 0 : wishlistEntry.wishlistId),
501
+ });
502
+ if (result) {
503
+ removedWishlistEntries.push({
504
+ id: getIdFromGid(wishlistEntry === null || wishlistEntry === void 0 ? void 0 : wishlistEntry.wishlistId),
505
+ variantId: getIdFromGid((_m = wishlistEntry === null || wishlistEntry === void 0 ? void 0 : wishlistEntry.item) === null || _m === void 0 ? void 0 : _m.variantId),
506
+ productId,
507
+ });
508
+ }
509
+ }
510
+ }
511
+ catch (error) {
512
+ console.error("Failed to remove from wishlist", error);
513
+ }
514
+ return removedWishlistEntries;
515
+ });
414
516
  export const getBadgesForProductFn = (badgeConfig = {}, productTags = []) => {
415
517
  const badgePositions = ["below", "bottom", "top"];
416
518
  const badgesCombined = [];
package/dist/styles.css CHANGED
@@ -880,6 +880,9 @@ video {
880
880
  .mb-6 {
881
881
  margin-bottom: 1.5rem;
882
882
  }
883
+ .ml-0 {
884
+ margin-left: 0px;
885
+ }
883
886
  .ml-1 {
884
887
  margin-left: 0.25rem;
885
888
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=addItemToWishlist.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addItemToWishlist.test.d.ts","sourceRoot":"","sources":["../../../tests/addItemToWishlist/addItemToWishlist.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,198 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { addItemToWishlist } from "../../lib/utils";
11
+ describe("addItemToWishlist", () => {
12
+ let Tapcart;
13
+ let integrations;
14
+ let product;
15
+ let consoleErrorSpy;
16
+ beforeEach(() => {
17
+ jest.clearAllMocks();
18
+ consoleErrorSpy = jest.spyOn(console, "error").mockImplementation();
19
+ Tapcart = {
20
+ action: jest.fn().mockResolvedValue(true),
21
+ variables: {
22
+ customer: { id: "customer-123" },
23
+ wishlists: [
24
+ {
25
+ id: "gid://shopify/Wishlist/primary",
26
+ },
27
+ ],
28
+ },
29
+ };
30
+ integrations = [
31
+ {
32
+ name: "tapcart-wishlist",
33
+ enabled: true,
34
+ multiwishlist: false,
35
+ },
36
+ ];
37
+ product = {
38
+ id: "gid://shopify/Product/123",
39
+ variants: [{ id: "gid://shopify/ProductVariant/456" }],
40
+ };
41
+ });
42
+ afterEach(() => {
43
+ consoleErrorSpy.mockRestore();
44
+ });
45
+ describe("validation", () => {
46
+ it("returns false when no wishlist integration is enabled", () => __awaiter(void 0, void 0, void 0, function* () {
47
+ const result = yield addItemToWishlist({
48
+ Tapcart,
49
+ integrations: [],
50
+ product,
51
+ });
52
+ expect(result).toBe(false);
53
+ expect(Tapcart.action).not.toHaveBeenCalled();
54
+ }));
55
+ it("logs and returns false when product is missing", () => __awaiter(void 0, void 0, void 0, function* () {
56
+ const result = yield addItemToWishlist({
57
+ Tapcart,
58
+ integrations,
59
+ product: null,
60
+ });
61
+ expect(result).toBe(false);
62
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Product is missing");
63
+ expect(Tapcart.action).not.toHaveBeenCalled();
64
+ }));
65
+ it("logs and returns false when Tapcart instance is missing", () => __awaiter(void 0, void 0, void 0, function* () {
66
+ const result = yield addItemToWishlist({
67
+ Tapcart: null,
68
+ integrations,
69
+ product,
70
+ });
71
+ expect(result).toBe(false);
72
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Tapcart instance is missing");
73
+ }));
74
+ });
75
+ describe("drawer behavior", () => {
76
+ it("opens the wishlist drawer when multiple wishlists are supported", () => __awaiter(void 0, void 0, void 0, function* () {
77
+ const multiWishlistIntegrations = [
78
+ {
79
+ name: "tapcart-wishlist",
80
+ enabled: true,
81
+ multiwishlist: true,
82
+ },
83
+ ];
84
+ const result = yield addItemToWishlist({
85
+ Tapcart,
86
+ integrations: multiWishlistIntegrations,
87
+ product,
88
+ });
89
+ expect(result).toBe(false);
90
+ expect(Tapcart.action).toHaveBeenCalledWith("screen/open", expect.objectContaining({
91
+ destination: {
92
+ type: "internal",
93
+ url: "wishlist-add-item?productId=123",
94
+ },
95
+ }));
96
+ }));
97
+ it("opens the wishlist drawer when the product exposes multiple variants", () => __awaiter(void 0, void 0, void 0, function* () {
98
+ const result = yield addItemToWishlist({
99
+ Tapcart,
100
+ integrations,
101
+ product: {
102
+ id: product.id,
103
+ variants: [
104
+ { id: "gid://shopify/ProductVariant/111" },
105
+ { id: "gid://shopify/ProductVariant/222" },
106
+ ],
107
+ },
108
+ });
109
+ expect(result).toBe(false);
110
+ expect(Tapcart.action).toHaveBeenCalledWith("screen/open", expect.objectContaining({
111
+ destination: {
112
+ type: "internal",
113
+ url: "wishlist-add-item?productId=123",
114
+ },
115
+ }));
116
+ }));
117
+ it("opens the wishlist drawer when the customer is not authenticated", () => __awaiter(void 0, void 0, void 0, function* () {
118
+ Tapcart.variables.customer = null;
119
+ const result = yield addItemToWishlist({
120
+ Tapcart,
121
+ integrations,
122
+ product,
123
+ });
124
+ expect(result).toBe(false);
125
+ expect(Tapcart.action).toHaveBeenCalledWith("screen/open", expect.objectContaining({
126
+ presentation: expect.objectContaining({
127
+ snapPoints: [0.3, 0.5, 0.75],
128
+ }),
129
+ }));
130
+ }));
131
+ });
132
+ describe("direct add", () => {
133
+ it("adds the item using the provided variant id", () => __awaiter(void 0, void 0, void 0, function* () {
134
+ const result = yield addItemToWishlist({
135
+ Tapcart,
136
+ integrations,
137
+ product: { id: product.id, variants: [] },
138
+ selectedVariantId: "gid://shopify/ProductVariant/789",
139
+ });
140
+ expect(result).toBe(true);
141
+ expect(Tapcart.action).toHaveBeenCalledTimes(1);
142
+ expect(Tapcart.action).toHaveBeenCalledWith("wishlist/item/add", {
143
+ productId: "123",
144
+ variantId: "789",
145
+ wishlistId: "gid://shopify/Wishlist/primary",
146
+ });
147
+ }));
148
+ it("uses the first product variant when none is selected", () => __awaiter(void 0, void 0, void 0, function* () {
149
+ const result = yield addItemToWishlist({
150
+ Tapcart,
151
+ integrations,
152
+ product,
153
+ });
154
+ expect(result).toBe(true);
155
+ expect(Tapcart.action).toHaveBeenCalledWith("wishlist/item/add", {
156
+ productId: "123",
157
+ variantId: "456",
158
+ wishlistId: "gid://shopify/Wishlist/primary",
159
+ });
160
+ }));
161
+ it("falls back to the default wishlist id when none are present", () => __awaiter(void 0, void 0, void 0, function* () {
162
+ Tapcart.variables.wishlists = [];
163
+ const result = yield addItemToWishlist({
164
+ Tapcart,
165
+ integrations,
166
+ product: { id: product.id, variants: [] },
167
+ selectedVariantId: "gid://shopify/ProductVariant/456",
168
+ });
169
+ expect(result).toBe(true);
170
+ expect(Tapcart.action).toHaveBeenCalledWith("wishlist/item/add", {
171
+ productId: "123",
172
+ variantId: "456",
173
+ wishlistId: "Default Wishlist",
174
+ });
175
+ }));
176
+ it("logs and returns false when no variant id can be resolved", () => __awaiter(void 0, void 0, void 0, function* () {
177
+ const result = yield addItemToWishlist({
178
+ Tapcart,
179
+ integrations,
180
+ product: { id: product.id, variants: [] },
181
+ });
182
+ expect(result).toBe(false);
183
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Missing variant id for wishlist add");
184
+ expect(Tapcart.action).not.toHaveBeenCalled();
185
+ }));
186
+ it("logs and returns false when Tapcart action rejects", () => __awaiter(void 0, void 0, void 0, function* () {
187
+ Tapcart.action = jest.fn().mockRejectedValue(new Error("boom"));
188
+ const result = yield addItemToWishlist({
189
+ Tapcart,
190
+ integrations,
191
+ product: { id: product.id, variants: [] },
192
+ selectedVariantId: "gid://shopify/ProductVariant/999",
193
+ });
194
+ expect(result).toBe(false);
195
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Failed to add to wishlist", expect.any(Error));
196
+ }));
197
+ });
198
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=removeItemFromWishlists.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeItemFromWishlists.test.d.ts","sourceRoot":"","sources":["../../../tests/removeItemFromWishlists/removeItemFromWishlists.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,123 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { removeItemFromWishlists } from "../../lib/utils";
11
+ describe("removeItemFromWishlists", () => {
12
+ let mockTapcart;
13
+ let consoleErrorSpy;
14
+ beforeEach(() => {
15
+ jest.clearAllMocks();
16
+ consoleErrorSpy = jest.spyOn(console, "error").mockImplementation();
17
+ mockTapcart = {
18
+ action: jest.fn().mockResolvedValue(true),
19
+ variables: {
20
+ wishlists: [
21
+ {
22
+ id: "gid://shopify/Wishlist/1",
23
+ items: [
24
+ {
25
+ productId: "gid://shopify/Product/123",
26
+ variantId: "gid://shopify/ProductVariant/456",
27
+ },
28
+ ],
29
+ },
30
+ ],
31
+ },
32
+ };
33
+ });
34
+ afterEach(() => {
35
+ consoleErrorSpy.mockRestore();
36
+ });
37
+ it("returns an empty array and logs when Tapcart instance is missing", () => __awaiter(void 0, void 0, void 0, function* () {
38
+ const result = yield removeItemFromWishlists({
39
+ Tapcart: null,
40
+ productId: "gid://shopify/Product/123",
41
+ });
42
+ expect(result).toEqual([]);
43
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Tapcart instance is missing");
44
+ }));
45
+ it("logs and returns an empty array when removal throws", () => __awaiter(void 0, void 0, void 0, function* () {
46
+ mockTapcart.action = jest.fn().mockImplementation(() => {
47
+ throw new Error("boom");
48
+ });
49
+ const result = yield removeItemFromWishlists({
50
+ Tapcart: mockTapcart,
51
+ productId: "gid://shopify/Product/123",
52
+ });
53
+ expect(result).toEqual([]);
54
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Failed to remove from wishlist", expect.any(Error));
55
+ }));
56
+ it("removes every wishlist entry that matches the productId", () => __awaiter(void 0, void 0, void 0, function* () {
57
+ mockTapcart.variables.wishlists.push({
58
+ _id: "wishlist-2",
59
+ items: [
60
+ {
61
+ productId: "gid://shopify/Product/123",
62
+ variantId: "gid://shopify/ProductVariant/789",
63
+ },
64
+ {
65
+ productId: "gid://shopify/Product/999",
66
+ variantId: "gid://shopify/ProductVariant/000",
67
+ },
68
+ ],
69
+ });
70
+ const result = yield removeItemFromWishlists({
71
+ Tapcart: mockTapcart,
72
+ productId: "gid://shopify/Product/123",
73
+ });
74
+ expect(mockTapcart.action).toHaveBeenCalledTimes(2);
75
+ expect(mockTapcart.action).toHaveBeenNthCalledWith(1, "wishlist/item/remove", {
76
+ productId: "gid://shopify/Product/123",
77
+ variantId: "456",
78
+ wishlistId: "1",
79
+ });
80
+ expect(mockTapcart.action).toHaveBeenNthCalledWith(2, "wishlist/item/remove", {
81
+ productId: "gid://shopify/Product/123",
82
+ variantId: "789",
83
+ wishlistId: "wishlist-2",
84
+ });
85
+ expect(result).toEqual([
86
+ { id: "1", productId: "gid://shopify/Product/123", variantId: "456" },
87
+ {
88
+ id: "wishlist-2",
89
+ productId: "gid://shopify/Product/123",
90
+ variantId: "789",
91
+ },
92
+ ]);
93
+ }));
94
+ it("returns an empty array when no wishlist entries match", () => __awaiter(void 0, void 0, void 0, function* () {
95
+ const result = yield removeItemFromWishlists({
96
+ Tapcart: mockTapcart,
97
+ productId: "gid://shopify/Product/000",
98
+ });
99
+ expect(result).toEqual([]);
100
+ expect(mockTapcart.action).not.toHaveBeenCalled();
101
+ expect(consoleErrorSpy).not.toHaveBeenCalled();
102
+ }));
103
+ it("returns an empty array and logs when a variant id is missing", () => __awaiter(void 0, void 0, void 0, function* () {
104
+ mockTapcart.variables.wishlists[0].items[0].variantId = null;
105
+ const result = yield removeItemFromWishlists({
106
+ Tapcart: mockTapcart,
107
+ productId: "gid://shopify/Product/123",
108
+ });
109
+ expect(result).toEqual([]);
110
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Missing variant id for wishlist removal");
111
+ expect(mockTapcart.action).not.toHaveBeenCalled();
112
+ }));
113
+ it("returns an empty array and logs when a wishlist id is missing", () => __awaiter(void 0, void 0, void 0, function* () {
114
+ mockTapcart.variables.wishlists[0].id = null;
115
+ const result = yield removeItemFromWishlists({
116
+ Tapcart: mockTapcart,
117
+ productId: "gid://shopify/Product/123",
118
+ });
119
+ expect(result).toEqual([]);
120
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Missing wishlist id for wishlist removal");
121
+ expect(mockTapcart.action).not.toHaveBeenCalled();
122
+ }));
123
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapcart/mobile-components",
3
- "version": "0.10.3",
3
+ "version": "0.11.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "style": "dist/styles.css",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.wishlist.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.wishlist.test.d.ts","sourceRoot":"","sources":["../../lib/utils.wishlist.test.ts"],"names":[],"mappings":""}
@@ -1,108 +0,0 @@
1
- import { findWishlistEntry, getEnabledWishlistIntegration, supportsMultipleWishlists, } from "./utils";
2
- describe("getEnabledWishlistIntegration", () => {
3
- it("returns the first enabled wishlist integration", () => {
4
- const integrations = [
5
- { name: "tapcart-search", enabled: true },
6
- { name: "tapcart-wishlist", enabled: true, multiwishlist: true },
7
- { name: "swym", enabled: true },
8
- ];
9
- const result = getEnabledWishlistIntegration(integrations);
10
- expect(result).toEqual({
11
- name: "tapcart-wishlist",
12
- enabled: true,
13
- multiwishlist: true,
14
- });
15
- });
16
- it("returns null when no wishlist integration is enabled", () => {
17
- const integrations = [
18
- { name: "tapcart-search", enabled: true },
19
- { name: "tapcart-wishlist", enabled: false },
20
- ];
21
- expect(getEnabledWishlistIntegration(integrations)).toBeNull();
22
- });
23
- it("returns null when integrations is not an array", () => {
24
- expect(getEnabledWishlistIntegration(undefined)).toBeNull();
25
- expect(getEnabledWishlistIntegration(null)).toBeNull();
26
- });
27
- });
28
- describe("supportsMultipleWishlists", () => {
29
- it("respects explicit multiwishlist flag", () => {
30
- expect(supportsMultipleWishlists({
31
- name: "tapcart-wishlist",
32
- enabled: true,
33
- multiwishlist: false,
34
- })).toBe(false);
35
- expect(supportsMultipleWishlists({
36
- name: "tapcart-wishlist",
37
- enabled: true,
38
- multiwishlist: true,
39
- })).toBe(true);
40
- });
41
- it("defaults to true for known integrations when flag is omitted", () => {
42
- expect(supportsMultipleWishlists({
43
- name: "tapcart-wishlist-v2",
44
- enabled: true,
45
- })).toBe(true);
46
- });
47
- it("returns false for unknown integrations", () => {
48
- expect(supportsMultipleWishlists({
49
- name: "not-a-wishlist",
50
- enabled: true,
51
- })).toBe(false);
52
- });
53
- });
54
- describe("findWishlistEntry", () => {
55
- const wishlists = [
56
- {
57
- id: "wl-1",
58
- items: [
59
- {
60
- id: "item-1",
61
- productId: "gid://shopify/Product/123",
62
- variantId: "gid://shopify/ProductVariant/456",
63
- },
64
- ],
65
- },
66
- {
67
- _id: "wl-2",
68
- items: [
69
- {
70
- id: "item-2",
71
- productId: "789",
72
- variantId: "654",
73
- },
74
- ],
75
- },
76
- ];
77
- it("finds an entry when product and variant match across gid representations", () => {
78
- const match = findWishlistEntry(wishlists, "123", "456");
79
- expect(match).toEqual({
80
- wishlistId: "wl-1",
81
- item: {
82
- id: "item-1",
83
- productId: "gid://shopify/Product/123",
84
- variantId: "gid://shopify/ProductVariant/456",
85
- },
86
- });
87
- });
88
- it("falls back to product-only lookup when variant is omitted", () => {
89
- const match = findWishlistEntry(wishlists, "789");
90
- expect(match).toEqual({
91
- wishlistId: "wl-2",
92
- item: {
93
- id: "item-2",
94
- productId: "789",
95
- variantId: "654",
96
- },
97
- });
98
- });
99
- it("returns null when no matching entry is found", () => {
100
- const match = findWishlistEntry(wishlists, "999", "888");
101
- expect(match).toBeNull();
102
- });
103
- it("handles empty or invalid inputs gracefully", () => {
104
- expect(findWishlistEntry(undefined, "123")).toBeNull();
105
- expect(findWishlistEntry([], "123")).toBeNull();
106
- expect(findWishlistEntry(wishlists, undefined)).toBeNull();
107
- });
108
- });