@ikas/storefront 0.0.30 → 0.0.32

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/build/index.es.js CHANGED
@@ -11387,7 +11387,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11387
11387
  };
11388
11388
  IkasPageDataProvider.prototype.getPageSpecificData = function () {
11389
11389
  return __awaiter(this, void 0, void 0, function () {
11390
- var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, _a;
11390
+ var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, handleProductPage, _a;
11391
11391
  var _this = this;
11392
11392
  return __generator(this, function (_b) {
11393
11393
  switch (_b.label) {
@@ -11404,7 +11404,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11404
11404
  case 1:
11405
11405
  metaDataList = _b.sent();
11406
11406
  if (!metaDataList || !metaDataList.length) {
11407
- return [2 /*return*/, this.getPageSpecificProduct()];
11407
+ return [2 /*return*/];
11408
11408
  }
11409
11409
  metaData = metaDataList[0];
11410
11410
  handleBrandPage = function () { return __awaiter(_this, void 0, void 0, function () {
@@ -11445,6 +11445,25 @@ var IkasPageDataProvider = /** @class */ (function () {
11445
11445
  }
11446
11446
  });
11447
11447
  }); };
11448
+ handleProductPage = function () { return __awaiter(_this, void 0, void 0, function () {
11449
+ var productsResponse, product;
11450
+ return __generator(this, function (_a) {
11451
+ switch (_a.label) {
11452
+ case 0: return [4 /*yield*/, IkasProductAPI.listProducts({
11453
+ idList: [metaData.targetId],
11454
+ })];
11455
+ case 1:
11456
+ productsResponse = _a.sent();
11457
+ if (!productsResponse.products.length)
11458
+ return [2 /*return*/];
11459
+ product = productsResponse.products[0];
11460
+ this.pageSpecificData = new IkasProductDetail(product, product.variants[0].variantValues, true);
11461
+ this.pageType = IkasThemePageType.PRODUCT;
11462
+ this.setPageMetaData(metaData);
11463
+ return [2 /*return*/];
11464
+ }
11465
+ });
11466
+ }); };
11448
11467
  _a = metaData.targetType;
11449
11468
  switch (_a) {
11450
11469
  case IkasHTMLMetaDataTargetType.BRAND: return [3 /*break*/, 2];
@@ -11456,7 +11475,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11456
11475
  case 3: return [2 /*return*/, _b.sent()];
11457
11476
  case 4: return [4 /*yield*/, handleCategoryPage()];
11458
11477
  case 5: return [2 /*return*/, _b.sent()];
11459
- case 6: return [4 /*yield*/, this.getPageSpecificProduct()];
11478
+ case 6: return [4 /*yield*/, handleProductPage()];
11460
11479
  case 7: return [2 /*return*/, _b.sent()];
11461
11480
  case 8: return [3 /*break*/, 9];
11462
11481
  case 9: return [2 /*return*/];
@@ -11464,82 +11483,6 @@ var IkasPageDataProvider = /** @class */ (function () {
11464
11483
  });
11465
11484
  });
11466
11485
  };
11467
- IkasPageDataProvider.prototype.getPageSpecificProduct = function () {
11468
- return __awaiter(this, void 0, void 0, function () {
11469
- var slug, getProductMetaData, metaDataResponse, productsResponse, product, isMainProductSlug, selectedVariantValues, variantSlugPart, variantSlugs, _i, _a, variant, isSelectedVariant, _loop_1, _b, variantSlugs_1, variantSlug, state_1;
11470
- var _this = this;
11471
- return __generator(this, function (_c) {
11472
- switch (_c.label) {
11473
- case 0:
11474
- slug = this.pageParams.slug;
11475
- getProductMetaData = function (slug) { return __awaiter(_this, void 0, void 0, function () {
11476
- var metaDataList, splitParts, newSlug;
11477
- return __generator(this, function (_a) {
11478
- switch (_a.label) {
11479
- case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
11480
- case 1:
11481
- metaDataList = _a.sent();
11482
- if (!(!metaDataList || !metaDataList.length)) return [3 /*break*/, 3];
11483
- splitParts = slug.split("-");
11484
- newSlug = splitParts.slice(0, splitParts.length - 1).join("-");
11485
- return [4 /*yield*/, getProductMetaData(newSlug)];
11486
- case 2: return [2 /*return*/, _a.sent()];
11487
- case 3: return [2 /*return*/, {
11488
- metaData: metaDataList[0],
11489
- slug: slug,
11490
- }];
11491
- }
11492
- });
11493
- }); };
11494
- return [4 /*yield*/, getProductMetaData(slug)];
11495
- case 1:
11496
- metaDataResponse = _c.sent();
11497
- if (!metaDataResponse)
11498
- return [2 /*return*/];
11499
- return [4 /*yield*/, IkasProductAPI.listProducts({
11500
- idList: [metaDataResponse.metaData.targetId],
11501
- })];
11502
- case 2:
11503
- productsResponse = _c.sent();
11504
- if (!productsResponse.products.length)
11505
- return [2 /*return*/];
11506
- product = productsResponse.products[0];
11507
- isMainProductSlug = slug.length === metaDataResponse.slug.length;
11508
- selectedVariantValues = [];
11509
- if (!isMainProductSlug) {
11510
- variantSlugPart = slug.slice(metaDataResponse.slug.length + 1);
11511
- variantSlugs = variantSlugPart.split("-");
11512
- for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
11513
- variant = _a[_i];
11514
- isSelectedVariant = true;
11515
- _loop_1 = function (variantSlug) {
11516
- if (!variant.variantValues.some(function (vv) { return vv.slug === variantSlug; })) {
11517
- isSelectedVariant = false;
11518
- return "break";
11519
- }
11520
- };
11521
- for (_b = 0, variantSlugs_1 = variantSlugs; _b < variantSlugs_1.length; _b++) {
11522
- variantSlug = variantSlugs_1[_b];
11523
- state_1 = _loop_1(variantSlug);
11524
- if (state_1 === "break")
11525
- break;
11526
- }
11527
- if (isSelectedVariant) {
11528
- selectedVariantValues = variant.variantValues;
11529
- break;
11530
- }
11531
- }
11532
- }
11533
- this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
11534
- ? selectedVariantValues
11535
- : product.variants[0].variantValues, true);
11536
- this.pageType = IkasThemePageType.PRODUCT;
11537
- this.setPageMetaData(metaDataResponse.metaData);
11538
- return [2 /*return*/];
11539
- }
11540
- });
11541
- });
11542
- };
11543
11486
  IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
11544
11487
  return __awaiter(this, void 0, void 0, function () {
11545
11488
  var component, result, setPageComponentPropValue;
@@ -11704,17 +11647,44 @@ var IkasPageDataProvider = /** @class */ (function () {
11704
11647
  var usePageData = propValue.usePageData;
11705
11648
  var _propValue = propValue;
11706
11649
  var productDetail = new IkasProductDetail(_propValue.product, _propValue.selectedVariantValues);
11707
- if (isBrowser) {
11708
- var urlParams = new URLSearchParams(window.location.search);
11709
- var vid_1 = urlParams.get("vid");
11710
- if (vid_1) {
11711
- var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
11650
+ var product = productDetail.product;
11651
+ var selectedVariantValues = [];
11652
+ if (usePageData && isBrowser) {
11653
+ var urlParams_1 = new URLSearchParams(window.location.search);
11654
+ var vid_1 = urlParams_1.get("vid");
11655
+ var hasVid = false;
11656
+ if (vid_1 && typeof vid_1 === "string") {
11657
+ var variant = product.variants.find(function (v) { return v.id === vid_1; });
11712
11658
  if (variant) {
11713
- productDetail.selectedVariantValues = variant.variantValues;
11659
+ selectedVariantValues = variant.variantValues;
11660
+ hasVid = true;
11714
11661
  }
11715
11662
  }
11663
+ if (!hasVid) {
11664
+ product.variantTypes.forEach(function (pvt) {
11665
+ var slug = pvt.variantType.slug;
11666
+ var variantValueParam = urlParams_1.get(slug);
11667
+ if (variantValueParam) {
11668
+ var variantValueSlug_1 = variantValueParam;
11669
+ if (Array.isArray(variantValueParam)) {
11670
+ variantValueSlug_1 = variantValueParam[0];
11671
+ }
11672
+ var variantValue = pvt.variantType.values.find(function (vv) { return vv.slug === variantValueSlug_1; });
11673
+ if (variantValue)
11674
+ selectedVariantValues.push(variantValue);
11675
+ else
11676
+ selectedVariantValues.push(pvt.variantType.values[0]);
11677
+ }
11678
+ else {
11679
+ selectedVariantValues.push(pvt.variantType.values[0]);
11680
+ }
11681
+ });
11682
+ }
11683
+ }
11684
+ else {
11685
+ selectedVariantValues = productDetail.selectedVariantValues;
11716
11686
  }
11717
- pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, usePageData, router);
11687
+ pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, selectedVariantValues, usePageData, router);
11718
11688
  };
11719
11689
  IkasPageDataProvider.initLinkPropValue = function (prop, propValue, pageComponentPropValue) {
11720
11690
  if (Array.isArray(propValue)) {
@@ -13635,13 +13605,17 @@ var IkasProductDetail = /** @class */ (function () {
13635
13605
  });
13636
13606
  Object.defineProperty(IkasProductDetail.prototype, "href", {
13637
13607
  get: function () {
13608
+ var _this = this;
13638
13609
  var metaData = this.product.metaData;
13639
13610
  if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
13640
13611
  return "";
13641
- if (this.product.hasVariant) {
13642
- return "/" + metaData.slug + "-" + this.selectedVariantValues
13643
- .map(function (vv) { return vv.slug; })
13644
- .join("-");
13612
+ if (this.product.hasVariant && typeof window !== "undefined") {
13613
+ var queryParams_1 = {};
13614
+ this.selectedVariantValues.forEach(function (vv) {
13615
+ var vt = _this.product.variantTypes.find(function (vt) { return vt.variantType.id === vv.variantTypeId; });
13616
+ queryParams_1[vt.variantType.slug] = vv.slug;
13617
+ });
13618
+ return "/" + metaData.slug + "?" + queryString.stringify(queryParams_1);
13645
13619
  }
13646
13620
  return "/" + metaData.slug;
13647
13621
  },
@@ -13650,17 +13624,12 @@ var IkasProductDetail = /** @class */ (function () {
13650
13624
  });
13651
13625
  IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
13652
13626
  var _a;
13653
- var metaData = this.product.metaData;
13654
- var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
13627
+ this.selectedVariantValues = this.selectedVariantValues.map(function (vv) {
13655
13628
  if (vv.variantTypeId === variantValue.variantTypeId)
13656
13629
  return variantValue;
13657
13630
  return vv;
13658
13631
  });
13659
- this.selectedVariantValues = selectedVariantValues;
13660
- var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
13661
- .map(function (vv) { return vv.slug; })
13662
- .join("-");
13663
- (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(newUrl, undefined, { shallow: true });
13632
+ (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(this.href, undefined, { shallow: true });
13664
13633
  };
13665
13634
  return IkasProductDetail;
13666
13635
  }());
@@ -22700,14 +22669,38 @@ function createProductSchema(pageSpecificDataStr) {
22700
22669
  var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
22701
22670
  var isBrowser = typeof window !== "undefined";
22702
22671
  if (isBrowser) {
22703
- var urlParams = new URLSearchParams(window.location.search);
22704
- var vid_1 = urlParams.get("vid");
22705
- if (vid_1) {
22672
+ var urlParams_1 = new URLSearchParams(window.location.search);
22673
+ var vid_1 = urlParams_1.get("vid");
22674
+ var hasVid = false;
22675
+ if (vid_1 && typeof vid_1 === "string") {
22706
22676
  var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
22707
22677
  if (variant) {
22708
22678
  productDetail.selectedVariantValues = variant.variantValues;
22679
+ hasVid = true;
22709
22680
  }
22710
22681
  }
22682
+ if (!hasVid) {
22683
+ var selectedVariantValues_1 = [];
22684
+ productDetail.product.variantTypes.forEach(function (pvt) {
22685
+ var slug = pvt.variantType.slug;
22686
+ var variantValueParam = urlParams_1.get(slug);
22687
+ if (variantValueParam) {
22688
+ var variantValueSlug_1 = variantValueParam;
22689
+ if (Array.isArray(variantValueParam)) {
22690
+ variantValueSlug_1 = variantValueParam[0];
22691
+ }
22692
+ var variantValue = pvt.variantType.values.find(function (vv) { return vv.slug === variantValueSlug_1; });
22693
+ if (variantValue)
22694
+ selectedVariantValues_1.push(variantValue);
22695
+ else
22696
+ selectedVariantValues_1.push(pvt.variantType.values[0]);
22697
+ }
22698
+ else {
22699
+ selectedVariantValues_1.push(pvt.variantType.values[0]);
22700
+ }
22701
+ });
22702
+ productDetail.selectedVariantValues = selectedVariantValues_1;
22703
+ }
22711
22704
  }
22712
22705
  return {
22713
22706
  "@context": "https://schema.org/",
@@ -23428,60 +23421,24 @@ var Page$1 = function (_a) {
23428
23421
  };
23429
23422
  var index$1 = observer(Page$1);
23430
23423
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
23431
- var metaData, targetTypes, brandCategoryMetaData, productMetaData, productsResponse, productParams, _loop_1, _i, _a, product;
23432
- return __generator(this, function (_b) {
23433
- switch (_b.label) {
23424
+ var metaData, targetTypes, filteredMetaData;
23425
+ return __generator(this, function (_a) {
23426
+ switch (_a.label) {
23434
23427
  case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData()];
23435
23428
  case 1:
23436
- metaData = _b.sent();
23429
+ metaData = _a.sent();
23437
23430
  targetTypes = [
23438
23431
  IkasHTMLMetaDataTargetType.BRAND,
23439
23432
  IkasHTMLMetaDataTargetType.CATEGORY,
23433
+ IkasHTMLMetaDataTargetType.PRODUCT,
23440
23434
  ];
23441
- brandCategoryMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
23442
- productMetaData = metaData.filter(function (m) { return m.targetType && m.targetType === IkasHTMLMetaDataTargetType.PRODUCT; });
23443
- return [4 /*yield*/, IkasProductAPI.listProducts({
23444
- idList: productMetaData.map(function (p) { return p.targetId; }),
23445
- })];
23446
- case 2:
23447
- productsResponse = _b.sent();
23448
- productParams = [];
23449
- _loop_1 = function (product) {
23450
- var meta = productMetaData.find(function (pm) { return pm.targetId === product.id; });
23451
- if (meta) {
23452
- for (var _i = 0, _a = product.variants; _i < _a.length; _i++) {
23453
- var variant = _a[_i];
23454
- if (product.hasVariant) {
23455
- var variantSlug = variant.variantValues
23456
- .map(function (vv) { return vv.slug; })
23457
- .join("-");
23458
- productParams.push({
23459
- slug: meta.slug + "-" + variantSlug,
23460
- });
23461
- }
23462
- else {
23463
- productParams.push({
23464
- slug: meta.slug,
23465
- });
23466
- }
23467
- }
23468
- }
23469
- };
23470
- for (_i = 0, _a = productsResponse.products; _i < _a.length; _i++) {
23471
- product = _a[_i];
23472
- _loop_1(product);
23473
- }
23435
+ filteredMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
23474
23436
  return [2 /*return*/, {
23475
- paths: brandCategoryMetaData
23476
- .map(function (m) { return ({
23437
+ paths: filteredMetaData.map(function (m) { return ({
23477
23438
  params: {
23478
23439
  slug: m.slug,
23479
- originalSlug: m.slug,
23480
23440
  },
23481
- }); })
23482
- .concat(productParams.map(function (pp) { return ({
23483
- params: pp,
23484
- }); })),
23441
+ }); }),
23485
23442
  fallback: "blocking",
23486
23443
  }];
23487
23444
  }
package/build/index.js CHANGED
@@ -11400,7 +11400,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11400
11400
  };
11401
11401
  IkasPageDataProvider.prototype.getPageSpecificData = function () {
11402
11402
  return __awaiter(this, void 0, void 0, function () {
11403
- var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, _a;
11403
+ var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, handleProductPage, _a;
11404
11404
  var _this = this;
11405
11405
  return __generator(this, function (_b) {
11406
11406
  switch (_b.label) {
@@ -11417,7 +11417,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11417
11417
  case 1:
11418
11418
  metaDataList = _b.sent();
11419
11419
  if (!metaDataList || !metaDataList.length) {
11420
- return [2 /*return*/, this.getPageSpecificProduct()];
11420
+ return [2 /*return*/];
11421
11421
  }
11422
11422
  metaData = metaDataList[0];
11423
11423
  handleBrandPage = function () { return __awaiter(_this, void 0, void 0, function () {
@@ -11458,6 +11458,25 @@ var IkasPageDataProvider = /** @class */ (function () {
11458
11458
  }
11459
11459
  });
11460
11460
  }); };
11461
+ handleProductPage = function () { return __awaiter(_this, void 0, void 0, function () {
11462
+ var productsResponse, product;
11463
+ return __generator(this, function (_a) {
11464
+ switch (_a.label) {
11465
+ case 0: return [4 /*yield*/, IkasProductAPI.listProducts({
11466
+ idList: [metaData.targetId],
11467
+ })];
11468
+ case 1:
11469
+ productsResponse = _a.sent();
11470
+ if (!productsResponse.products.length)
11471
+ return [2 /*return*/];
11472
+ product = productsResponse.products[0];
11473
+ this.pageSpecificData = new IkasProductDetail(product, product.variants[0].variantValues, true);
11474
+ this.pageType = exports.IkasThemePageType.PRODUCT;
11475
+ this.setPageMetaData(metaData);
11476
+ return [2 /*return*/];
11477
+ }
11478
+ });
11479
+ }); };
11461
11480
  _a = metaData.targetType;
11462
11481
  switch (_a) {
11463
11482
  case exports.IkasHTMLMetaDataTargetType.BRAND: return [3 /*break*/, 2];
@@ -11469,7 +11488,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11469
11488
  case 3: return [2 /*return*/, _b.sent()];
11470
11489
  case 4: return [4 /*yield*/, handleCategoryPage()];
11471
11490
  case 5: return [2 /*return*/, _b.sent()];
11472
- case 6: return [4 /*yield*/, this.getPageSpecificProduct()];
11491
+ case 6: return [4 /*yield*/, handleProductPage()];
11473
11492
  case 7: return [2 /*return*/, _b.sent()];
11474
11493
  case 8: return [3 /*break*/, 9];
11475
11494
  case 9: return [2 /*return*/];
@@ -11477,82 +11496,6 @@ var IkasPageDataProvider = /** @class */ (function () {
11477
11496
  });
11478
11497
  });
11479
11498
  };
11480
- IkasPageDataProvider.prototype.getPageSpecificProduct = function () {
11481
- return __awaiter(this, void 0, void 0, function () {
11482
- var slug, getProductMetaData, metaDataResponse, productsResponse, product, isMainProductSlug, selectedVariantValues, variantSlugPart, variantSlugs, _i, _a, variant, isSelectedVariant, _loop_1, _b, variantSlugs_1, variantSlug, state_1;
11483
- var _this = this;
11484
- return __generator(this, function (_c) {
11485
- switch (_c.label) {
11486
- case 0:
11487
- slug = this.pageParams.slug;
11488
- getProductMetaData = function (slug) { return __awaiter(_this, void 0, void 0, function () {
11489
- var metaDataList, splitParts, newSlug;
11490
- return __generator(this, function (_a) {
11491
- switch (_a.label) {
11492
- case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
11493
- case 1:
11494
- metaDataList = _a.sent();
11495
- if (!(!metaDataList || !metaDataList.length)) return [3 /*break*/, 3];
11496
- splitParts = slug.split("-");
11497
- newSlug = splitParts.slice(0, splitParts.length - 1).join("-");
11498
- return [4 /*yield*/, getProductMetaData(newSlug)];
11499
- case 2: return [2 /*return*/, _a.sent()];
11500
- case 3: return [2 /*return*/, {
11501
- metaData: metaDataList[0],
11502
- slug: slug,
11503
- }];
11504
- }
11505
- });
11506
- }); };
11507
- return [4 /*yield*/, getProductMetaData(slug)];
11508
- case 1:
11509
- metaDataResponse = _c.sent();
11510
- if (!metaDataResponse)
11511
- return [2 /*return*/];
11512
- return [4 /*yield*/, IkasProductAPI.listProducts({
11513
- idList: [metaDataResponse.metaData.targetId],
11514
- })];
11515
- case 2:
11516
- productsResponse = _c.sent();
11517
- if (!productsResponse.products.length)
11518
- return [2 /*return*/];
11519
- product = productsResponse.products[0];
11520
- isMainProductSlug = slug.length === metaDataResponse.slug.length;
11521
- selectedVariantValues = [];
11522
- if (!isMainProductSlug) {
11523
- variantSlugPart = slug.slice(metaDataResponse.slug.length + 1);
11524
- variantSlugs = variantSlugPart.split("-");
11525
- for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
11526
- variant = _a[_i];
11527
- isSelectedVariant = true;
11528
- _loop_1 = function (variantSlug) {
11529
- if (!variant.variantValues.some(function (vv) { return vv.slug === variantSlug; })) {
11530
- isSelectedVariant = false;
11531
- return "break";
11532
- }
11533
- };
11534
- for (_b = 0, variantSlugs_1 = variantSlugs; _b < variantSlugs_1.length; _b++) {
11535
- variantSlug = variantSlugs_1[_b];
11536
- state_1 = _loop_1(variantSlug);
11537
- if (state_1 === "break")
11538
- break;
11539
- }
11540
- if (isSelectedVariant) {
11541
- selectedVariantValues = variant.variantValues;
11542
- break;
11543
- }
11544
- }
11545
- }
11546
- this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
11547
- ? selectedVariantValues
11548
- : product.variants[0].variantValues, true);
11549
- this.pageType = exports.IkasThemePageType.PRODUCT;
11550
- this.setPageMetaData(metaDataResponse.metaData);
11551
- return [2 /*return*/];
11552
- }
11553
- });
11554
- });
11555
- };
11556
11499
  IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
11557
11500
  return __awaiter(this, void 0, void 0, function () {
11558
11501
  var component, result, setPageComponentPropValue;
@@ -11717,17 +11660,44 @@ var IkasPageDataProvider = /** @class */ (function () {
11717
11660
  var usePageData = propValue.usePageData;
11718
11661
  var _propValue = propValue;
11719
11662
  var productDetail = new IkasProductDetail(_propValue.product, _propValue.selectedVariantValues);
11720
- if (isBrowser) {
11721
- var urlParams = new URLSearchParams(window.location.search);
11722
- var vid_1 = urlParams.get("vid");
11723
- if (vid_1) {
11724
- var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
11663
+ var product = productDetail.product;
11664
+ var selectedVariantValues = [];
11665
+ if (usePageData && isBrowser) {
11666
+ var urlParams_1 = new URLSearchParams(window.location.search);
11667
+ var vid_1 = urlParams_1.get("vid");
11668
+ var hasVid = false;
11669
+ if (vid_1 && typeof vid_1 === "string") {
11670
+ var variant = product.variants.find(function (v) { return v.id === vid_1; });
11725
11671
  if (variant) {
11726
- productDetail.selectedVariantValues = variant.variantValues;
11672
+ selectedVariantValues = variant.variantValues;
11673
+ hasVid = true;
11727
11674
  }
11728
11675
  }
11676
+ if (!hasVid) {
11677
+ product.variantTypes.forEach(function (pvt) {
11678
+ var slug = pvt.variantType.slug;
11679
+ var variantValueParam = urlParams_1.get(slug);
11680
+ if (variantValueParam) {
11681
+ var variantValueSlug_1 = variantValueParam;
11682
+ if (Array.isArray(variantValueParam)) {
11683
+ variantValueSlug_1 = variantValueParam[0];
11684
+ }
11685
+ var variantValue = pvt.variantType.values.find(function (vv) { return vv.slug === variantValueSlug_1; });
11686
+ if (variantValue)
11687
+ selectedVariantValues.push(variantValue);
11688
+ else
11689
+ selectedVariantValues.push(pvt.variantType.values[0]);
11690
+ }
11691
+ else {
11692
+ selectedVariantValues.push(pvt.variantType.values[0]);
11693
+ }
11694
+ });
11695
+ }
11696
+ }
11697
+ else {
11698
+ selectedVariantValues = productDetail.selectedVariantValues;
11729
11699
  }
11730
- pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, usePageData, router);
11700
+ pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, selectedVariantValues, usePageData, router);
11731
11701
  };
11732
11702
  IkasPageDataProvider.initLinkPropValue = function (prop, propValue, pageComponentPropValue) {
11733
11703
  if (Array.isArray(propValue)) {
@@ -13621,13 +13591,17 @@ var IkasProductDetail = /** @class */ (function () {
13621
13591
  });
13622
13592
  Object.defineProperty(IkasProductDetail.prototype, "href", {
13623
13593
  get: function () {
13594
+ var _this = this;
13624
13595
  var metaData = this.product.metaData;
13625
13596
  if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
13626
13597
  return "";
13627
- if (this.product.hasVariant) {
13628
- return "/" + metaData.slug + "-" + this.selectedVariantValues
13629
- .map(function (vv) { return vv.slug; })
13630
- .join("-");
13598
+ if (this.product.hasVariant && typeof window !== "undefined") {
13599
+ var queryParams_1 = {};
13600
+ this.selectedVariantValues.forEach(function (vv) {
13601
+ var vt = _this.product.variantTypes.find(function (vt) { return vt.variantType.id === vv.variantTypeId; });
13602
+ queryParams_1[vt.variantType.slug] = vv.slug;
13603
+ });
13604
+ return "/" + metaData.slug + "?" + queryString__default['default'].stringify(queryParams_1);
13631
13605
  }
13632
13606
  return "/" + metaData.slug;
13633
13607
  },
@@ -13636,17 +13610,12 @@ var IkasProductDetail = /** @class */ (function () {
13636
13610
  });
13637
13611
  IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
13638
13612
  var _a;
13639
- var metaData = this.product.metaData;
13640
- var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
13613
+ this.selectedVariantValues = this.selectedVariantValues.map(function (vv) {
13641
13614
  if (vv.variantTypeId === variantValue.variantTypeId)
13642
13615
  return variantValue;
13643
13616
  return vv;
13644
13617
  });
13645
- this.selectedVariantValues = selectedVariantValues;
13646
- var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
13647
- .map(function (vv) { return vv.slug; })
13648
- .join("-");
13649
- (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(newUrl, undefined, { shallow: true });
13618
+ (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(this.href, undefined, { shallow: true });
13650
13619
  };
13651
13620
  return IkasProductDetail;
13652
13621
  }());
@@ -22684,14 +22653,38 @@ function createProductSchema(pageSpecificDataStr) {
22684
22653
  var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
22685
22654
  var isBrowser = typeof window !== "undefined";
22686
22655
  if (isBrowser) {
22687
- var urlParams = new URLSearchParams(window.location.search);
22688
- var vid_1 = urlParams.get("vid");
22689
- if (vid_1) {
22656
+ var urlParams_1 = new URLSearchParams(window.location.search);
22657
+ var vid_1 = urlParams_1.get("vid");
22658
+ var hasVid = false;
22659
+ if (vid_1 && typeof vid_1 === "string") {
22690
22660
  var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
22691
22661
  if (variant) {
22692
22662
  productDetail.selectedVariantValues = variant.variantValues;
22663
+ hasVid = true;
22693
22664
  }
22694
22665
  }
22666
+ if (!hasVid) {
22667
+ var selectedVariantValues_1 = [];
22668
+ productDetail.product.variantTypes.forEach(function (pvt) {
22669
+ var slug = pvt.variantType.slug;
22670
+ var variantValueParam = urlParams_1.get(slug);
22671
+ if (variantValueParam) {
22672
+ var variantValueSlug_1 = variantValueParam;
22673
+ if (Array.isArray(variantValueParam)) {
22674
+ variantValueSlug_1 = variantValueParam[0];
22675
+ }
22676
+ var variantValue = pvt.variantType.values.find(function (vv) { return vv.slug === variantValueSlug_1; });
22677
+ if (variantValue)
22678
+ selectedVariantValues_1.push(variantValue);
22679
+ else
22680
+ selectedVariantValues_1.push(pvt.variantType.values[0]);
22681
+ }
22682
+ else {
22683
+ selectedVariantValues_1.push(pvt.variantType.values[0]);
22684
+ }
22685
+ });
22686
+ productDetail.selectedVariantValues = selectedVariantValues_1;
22687
+ }
22695
22688
  }
22696
22689
  return {
22697
22690
  "@context": "https://schema.org/",
@@ -23412,60 +23405,24 @@ var Page$1 = function (_a) {
23412
23405
  };
23413
23406
  var index$1 = mobxReactLite.observer(Page$1);
23414
23407
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
23415
- var metaData, targetTypes, brandCategoryMetaData, productMetaData, productsResponse, productParams, _loop_1, _i, _a, product;
23416
- return __generator(this, function (_b) {
23417
- switch (_b.label) {
23408
+ var metaData, targetTypes, filteredMetaData;
23409
+ return __generator(this, function (_a) {
23410
+ switch (_a.label) {
23418
23411
  case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData()];
23419
23412
  case 1:
23420
- metaData = _b.sent();
23413
+ metaData = _a.sent();
23421
23414
  targetTypes = [
23422
23415
  exports.IkasHTMLMetaDataTargetType.BRAND,
23423
23416
  exports.IkasHTMLMetaDataTargetType.CATEGORY,
23417
+ exports.IkasHTMLMetaDataTargetType.PRODUCT,
23424
23418
  ];
23425
- brandCategoryMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
23426
- productMetaData = metaData.filter(function (m) { return m.targetType && m.targetType === exports.IkasHTMLMetaDataTargetType.PRODUCT; });
23427
- return [4 /*yield*/, IkasProductAPI.listProducts({
23428
- idList: productMetaData.map(function (p) { return p.targetId; }),
23429
- })];
23430
- case 2:
23431
- productsResponse = _b.sent();
23432
- productParams = [];
23433
- _loop_1 = function (product) {
23434
- var meta = productMetaData.find(function (pm) { return pm.targetId === product.id; });
23435
- if (meta) {
23436
- for (var _i = 0, _a = product.variants; _i < _a.length; _i++) {
23437
- var variant = _a[_i];
23438
- if (product.hasVariant) {
23439
- var variantSlug = variant.variantValues
23440
- .map(function (vv) { return vv.slug; })
23441
- .join("-");
23442
- productParams.push({
23443
- slug: meta.slug + "-" + variantSlug,
23444
- });
23445
- }
23446
- else {
23447
- productParams.push({
23448
- slug: meta.slug,
23449
- });
23450
- }
23451
- }
23452
- }
23453
- };
23454
- for (_i = 0, _a = productsResponse.products; _i < _a.length; _i++) {
23455
- product = _a[_i];
23456
- _loop_1(product);
23457
- }
23419
+ filteredMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
23458
23420
  return [2 /*return*/, {
23459
- paths: brandCategoryMetaData
23460
- .map(function (m) { return ({
23421
+ paths: filteredMetaData.map(function (m) { return ({
23461
23422
  params: {
23462
23423
  slug: m.slug,
23463
- originalSlug: m.slug,
23464
23424
  },
23465
- }); })
23466
- .concat(productParams.map(function (pp) { return ({
23467
- params: pp,
23468
- }); })),
23425
+ }); }),
23469
23426
  fallback: "blocking",
23470
23427
  }];
23471
23428
  }
@@ -17,7 +17,6 @@ export declare class IkasPageDataProvider {
17
17
  get isStaticPage(): boolean | null | undefined;
18
18
  getPageData(): Promise<void>;
19
19
  getPageSpecificData(): Promise<void>;
20
- getPageSpecificProduct(): Promise<void>;
21
20
  getPageComponentPropValues(pageComponent: IkasThemePageComponent): Promise<IkasPageComponentPropValue>;
22
21
  getPageComponentPropValue(pageComponent: IkasThemePageComponent, prop: IkasThemeComponentProp): Promise<any>;
23
22
  private setPageMetaData;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikas/storefront",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "main": "./build/index.js",
5
5
  "module": "./build/index.es.js",
6
6
  "author": "Umut Ozan Yıldırım",