simpo-component-library 1.4.214 → 1.4.217
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/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +61 -24
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +82 -14
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +46 -8
- package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +3 -3
- package/esm2022/lib/ecommerce/styles/product.modal.mjs +8 -2
- package/esm2022/lib/services/cart.service.mjs +13 -21
- package/esm2022/lib/services/rest.service.mjs +2 -1
- package/esm2022/lib/services/storage.service.mjs +4 -4
- package/fesm2022/simpo-component-library.mjs +211 -69
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/featured-products/featured-products.component.d.ts +3 -0
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +2 -0
- package/lib/ecommerce/sections/product-list/product-list.component.d.ts +2 -1
- package/lib/ecommerce/styles/OrderedItems.modal.d.ts +2 -2
- package/lib/ecommerce/styles/product.modal.d.ts +1 -1
- package/lib/services/cart.service.d.ts +3 -4
- package/package.json +1 -1
- package/simpo-component-library-1.4.215.tgz +0 -0
- package/simpo-component-library-1.4.217.tgz +0 -0
- package/simpo-component-library-1.4.214.tgz +0 -0
@@ -3043,6 +3043,7 @@ class RestService {
|
|
3043
3043
|
let subIndustryId = localStorage.getItem("subIndustryId");
|
3044
3044
|
if (!subIndustryId)
|
3045
3045
|
subIndustryId = "";
|
3046
|
+
// collectionId = "1ef5b924-66ad-68f5-b931-2bd654300b1f"
|
3046
3047
|
return this.http.get(this.BASE_URL + `ecommerce/product/collection/id?collectionId=${collectionId || ''}&subIndustryId=${subIndustryId || ''}`).pipe(map((response) => response.data?.map((product) => new Product(product))));
|
3047
3048
|
}
|
3048
3049
|
getProductDetails(productId = null) {
|
@@ -3223,8 +3224,8 @@ class StorageServiceService {
|
|
3223
3224
|
};
|
3224
3225
|
request.onupgradeneeded = (event) => {
|
3225
3226
|
this.database = event.target.result;
|
3226
|
-
this.cartCollectionRef = this.database.createObjectStore(this.cartCollectionName, { keyPath: "
|
3227
|
-
this.favouriteCollectionRef = this.database.createObjectStore(this.favouriteCollectionName, { keyPath: "
|
3227
|
+
this.cartCollectionRef = this.database.createObjectStore(this.cartCollectionName, { keyPath: "varientId" });
|
3228
|
+
this.favouriteCollectionRef = this.database.createObjectStore(this.favouriteCollectionName, { keyPath: "varientId" });
|
3228
3229
|
this.userCollectionRef = this.database.createObjectStore(this.userCollectionName, { keyPath: "userId" });
|
3229
3230
|
};
|
3230
3231
|
}
|
@@ -3297,7 +3298,7 @@ class StorageServiceService {
|
|
3297
3298
|
}
|
3298
3299
|
addProductToCart(product) {
|
3299
3300
|
const transaction = this.database.transaction(this.cartCollectionName, "readwrite");
|
3300
|
-
const response = transaction.objectStore(this.cartCollectionName).get(product.
|
3301
|
+
const response = transaction.objectStore(this.cartCollectionName).get(product.varientId);
|
3301
3302
|
response.onsuccess = (cartResponse) => {
|
3302
3303
|
console.log("Cart Resppnse : ", cartResponse);
|
3303
3304
|
if (cartResponse.target.result) { }
|
@@ -5115,9 +5116,9 @@ var BUSINESS_CONSTANTS;
|
|
5115
5116
|
})(BUSINESS_CONSTANTS || (BUSINESS_CONSTANTS = {}));
|
5116
5117
|
|
5117
5118
|
class OrderedItems {
|
5118
|
-
constructor(json) {
|
5119
|
+
constructor(json, varientId) {
|
5119
5120
|
this.itemId = json?.["itemId"] ?? "";
|
5120
|
-
this.
|
5121
|
+
this.varientId = varientId ?? this.itemId;
|
5121
5122
|
this.businessId = json?.["businessId"];
|
5122
5123
|
this.itemName = json?.["name"];
|
5123
5124
|
this.businessName = json?.["businessName"];
|
@@ -5157,20 +5158,20 @@ class CartService {
|
|
5157
5158
|
return this.restService.addItemToDB(userWishlist);
|
5158
5159
|
}
|
5159
5160
|
removeItemFromWishlistPage(product, userWishlist) {
|
5160
|
-
this.storageService.removeProductFromWishlist(product.
|
5161
|
+
this.storageService.removeProductFromWishlist(product.varientId);
|
5161
5162
|
return this.restService.addItemToDB(userWishlist);
|
5162
5163
|
}
|
5163
|
-
addItemToCart(product) {
|
5164
|
+
addItemToCart(product, varientId) {
|
5164
5165
|
if (product.quantity) {
|
5165
|
-
const orderedItem = this.objectMapper(product);
|
5166
|
+
const orderedItem = this.objectMapper(product, varientId);
|
5166
5167
|
return this.storageService.addProductToCart(orderedItem);
|
5167
5168
|
}
|
5168
5169
|
else {
|
5169
5170
|
return this.removeItemFromCart(product);
|
5170
5171
|
}
|
5171
5172
|
}
|
5172
|
-
addItemToFavourite(product) {
|
5173
|
-
const orderedItem = this.objectMapper(product);
|
5173
|
+
addItemToFavourite(product, varientId) {
|
5174
|
+
const orderedItem = this.objectMapper(product, varientId);
|
5174
5175
|
this.storageService.addProductToWishlist(orderedItem);
|
5175
5176
|
}
|
5176
5177
|
addItemToFavFromCart(product) {
|
@@ -5179,39 +5180,31 @@ class CartService {
|
|
5179
5180
|
addOrderedItemToFavourite(orderedItem) {
|
5180
5181
|
this.storageService.addProductToWishlist(orderedItem);
|
5181
5182
|
}
|
5182
|
-
removeItemFromFavourite(
|
5183
|
-
this.storageService.removeProductFromWishlist(
|
5183
|
+
removeItemFromFavourite(varientId) {
|
5184
|
+
this.storageService.removeProductFromWishlist(varientId);
|
5184
5185
|
}
|
5185
5186
|
removeItemFromCart(product) {
|
5186
|
-
this.storageService.removeProductFromCart(product.
|
5187
|
+
this.storageService.removeProductFromCart(product.varientId);
|
5187
5188
|
}
|
5188
5189
|
getItemIdxJSON(id, type) {
|
5189
5190
|
return this.storageService.getProductFromCart(id);
|
5190
5191
|
}
|
5191
5192
|
storeItemToDB(product, type) {
|
5192
5193
|
if (type == "CART") {
|
5193
|
-
const orderProduct = this.objectMapper(this.storageService.getProductFromCart(product.
|
5194
|
+
const orderProduct = this.objectMapper(this.storageService.getProductFromCart(product.varientId));
|
5194
5195
|
if (orderProduct) {
|
5195
5196
|
this.storageService.addProductToCart(orderProduct);
|
5196
5197
|
}
|
5197
5198
|
}
|
5198
5199
|
else {
|
5199
|
-
const orderProduct = this.objectMapper(this.storageService.getProductFromWishlist(product.
|
5200
|
+
const orderProduct = this.objectMapper(this.storageService.getProductFromWishlist(product.varientId));
|
5200
5201
|
if (orderProduct) {
|
5201
5202
|
this.storageService.addProductToWishlist(orderProduct);
|
5202
5203
|
}
|
5203
5204
|
}
|
5204
5205
|
}
|
5205
|
-
|
5206
|
-
|
5207
|
-
// console.log(type, productIdx);
|
5208
|
-
// const json = (type == "FAVOURITE") ? UserFavourites : UserCart;
|
5209
|
-
// if (productIdx >= 0)
|
5210
|
-
// return json.orderedItems[productIdx];
|
5211
|
-
return null;
|
5212
|
-
}
|
5213
|
-
objectMapper(product) {
|
5214
|
-
return new OrderedItems(product);
|
5206
|
+
objectMapper(product, variantId) {
|
5207
|
+
return new OrderedItems(product, variantId);
|
5215
5208
|
}
|
5216
5209
|
storeCartDataToServer(cart) {
|
5217
5210
|
}
|
@@ -5310,10 +5303,11 @@ class FeaturedProductsComponent extends BaseSection {
|
|
5310
5303
|
this.USER_CART?.forEach((item) => {
|
5311
5304
|
if (item.itemId == product.itemId) {
|
5312
5305
|
if (product.itemVariant.length > 0) {
|
5313
|
-
const itemVarient =
|
5314
|
-
if (itemVarient) {
|
5315
|
-
product.itemImages = itemVarient
|
5306
|
+
const itemVarient = product.itemVariant[0];
|
5307
|
+
if (itemVarient.variantId == item.varientId) {
|
5308
|
+
product.itemImages = itemVarient.variantImages ?? [];
|
5316
5309
|
product.price = itemVarient.itemVariantPrice;
|
5310
|
+
product.quantity = item.quantity;
|
5317
5311
|
}
|
5318
5312
|
}
|
5319
5313
|
else {
|
@@ -5331,10 +5325,11 @@ class FeaturedProductsComponent extends BaseSection {
|
|
5331
5325
|
this.USER_WISHLIST?.forEach((item) => {
|
5332
5326
|
if (item.itemId == product.itemId) {
|
5333
5327
|
if (product.itemVariant.length > 0) {
|
5334
|
-
const itemVarient =
|
5335
|
-
if (itemVarient) {
|
5328
|
+
const itemVarient = product.itemVariant[0];
|
5329
|
+
if (itemVarient.variantId == item.varientId) {
|
5336
5330
|
product.itemImages = itemVarient?.variantImages ?? [];
|
5337
5331
|
product.price = itemVarient.itemVariantPrice;
|
5332
|
+
product.whislist = true;
|
5338
5333
|
}
|
5339
5334
|
}
|
5340
5335
|
else {
|
@@ -5352,18 +5347,22 @@ class FeaturedProductsComponent extends BaseSection {
|
|
5352
5347
|
this.messageService.add({ severity: 'warn', summary: 'Cart', detail: 'Item is not available as of now. We will notify you once available' });
|
5353
5348
|
return;
|
5354
5349
|
}
|
5355
|
-
if (product
|
5356
|
-
|
5350
|
+
if (!product?.quantity)
|
5351
|
+
product.quantity = 0;
|
5352
|
+
if (type == 'ADD') {
|
5353
|
+
product.quantity += 1;
|
5357
5354
|
}
|
5358
5355
|
else {
|
5359
|
-
|
5360
|
-
|
5361
|
-
|
5362
|
-
|
5363
|
-
|
5364
|
-
|
5365
|
-
product.
|
5356
|
+
product.quantity -= 1;
|
5357
|
+
}
|
5358
|
+
if (product.itemVariant.length) {
|
5359
|
+
const itemVarient = this.getItemVarient(product, product.varientId);
|
5360
|
+
if (itemVarient) {
|
5361
|
+
itemVarient.quantity = product.quantity;
|
5362
|
+
this.cartService.addItemToCart(product, itemVarient.variantId);
|
5366
5363
|
}
|
5364
|
+
}
|
5365
|
+
else {
|
5367
5366
|
this.cartService.addItemToCart(product);
|
5368
5367
|
}
|
5369
5368
|
}
|
@@ -5371,26 +5370,32 @@ class FeaturedProductsComponent extends BaseSection {
|
|
5371
5370
|
if (type == 'ADD') {
|
5372
5371
|
product.whislist = true;
|
5373
5372
|
this.messageService.add({ severity: 'success', summary: 'Wishlist', detail: 'Item added to your wishlist' });
|
5374
|
-
|
5373
|
+
if (product.itemVariant.length) {
|
5374
|
+
const itemVarient = this.getItemVarient(product, product.varientId);
|
5375
|
+
if (itemVarient) {
|
5376
|
+
itemVarient.wishlist = true;
|
5377
|
+
this.cartService.addItemToFavourite(product, itemVarient.variantId);
|
5378
|
+
}
|
5379
|
+
}
|
5380
|
+
else {
|
5381
|
+
this.cartService.addItemToFavourite(product);
|
5382
|
+
}
|
5375
5383
|
}
|
5376
5384
|
else {
|
5377
5385
|
product.whislist = false;
|
5378
5386
|
this.messageService.add({ severity: 'info', summary: 'Wishlist', detail: 'Item remove from your wishlist' });
|
5379
|
-
this.cartService.removeItemFromFavourite(product);
|
5387
|
+
this.cartService.removeItemFromFavourite(product.varientId);
|
5380
5388
|
}
|
5381
5389
|
// event.preventDefault();
|
5382
5390
|
event.stopPropagation();
|
5383
5391
|
}
|
5384
5392
|
proceedToProductDesc(product) {
|
5385
|
-
console.log("Called");
|
5386
5393
|
if (this.isRelatedProduct) {
|
5387
|
-
console.log("Change Detected");
|
5388
5394
|
this.changeDetailProduct.emit(product);
|
5389
5395
|
}
|
5390
5396
|
else {
|
5391
|
-
this.router.navigate([`details`], { queryParams: { id: product.itemId } });
|
5397
|
+
this.router.navigate([`details`], { queryParams: { id: product.itemId, varientId: product.varientId } });
|
5392
5398
|
}
|
5393
|
-
// this._eventService.redirectToPage.emit({redirectTo: '/details', data: {productId: productId}})
|
5394
5399
|
}
|
5395
5400
|
togglePreviewImage(product, idx) {
|
5396
5401
|
const element = document.getElementById('preview_' + idx);
|
@@ -5411,13 +5416,38 @@ class FeaturedProductsComponent extends BaseSection {
|
|
5411
5416
|
});
|
5412
5417
|
return selectedVarient;
|
5413
5418
|
}
|
5419
|
+
selectVarient(product, varient) {
|
5420
|
+
// nedd to change
|
5421
|
+
product.varientId = varient.variantId;
|
5422
|
+
product.itemImages = varient.variantImages;
|
5423
|
+
product.price = varient.itemVariantPrice;
|
5424
|
+
product.itemInventory = varient.itemInventory;
|
5425
|
+
product.quantity = this.getVarientQuantity(varient);
|
5426
|
+
product.whislist = this.isVarientPresentInWishtlist(varient);
|
5427
|
+
}
|
5414
5428
|
get currency() {
|
5415
5429
|
return BUSINESS_CONSTANTS.CURRENCY;
|
5416
5430
|
}
|
5431
|
+
getVarientQuantity(productVarient) {
|
5432
|
+
let itemQuantity = 0;
|
5433
|
+
this.USER_CART?.forEach((item) => {
|
5434
|
+
if (productVarient.variantId == item.varientId)
|
5435
|
+
itemQuantity = item.quantity;
|
5436
|
+
});
|
5437
|
+
return itemQuantity;
|
5438
|
+
}
|
5439
|
+
isVarientPresentInWishtlist(productVarient) {
|
5440
|
+
let present = false;
|
5441
|
+
this.USER_WISHLIST?.forEach((item) => {
|
5442
|
+
if (productVarient.variantId == item.varientId)
|
5443
|
+
present = true;
|
5444
|
+
});
|
5445
|
+
return present;
|
5446
|
+
}
|
5417
5447
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FeaturedProductsComponent, deps: [{ token: PLATFORM_ID }, { token: EventsService }, { token: RestService }, { token: i2$3.Router }, { token: CartService }, { token: i5$1.MatBottomSheet }, { token: StorageServiceService }, { token: i5.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
5418
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: FeaturedProductsComponent, isStandalone: true, selector: "simpo-featured-products", inputs: { data: "data", responseData: "responseData", index: "index", isRelatedProduct: "isRelatedProduct", edit: "edit", delete: "delete" }, outputs: { changeDetailProduct: "changeDetailProduct" }, host: { listeners: { "window: resize": "getScreenSize($event)" } }, providers: [MessageService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"container-fluid total-container\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div [id]=\"data?.id\" class=\"display-block\" #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [simpoAnimation]=\"styles?.animation\" [simpoLayout]=\"styles?.layout\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [innerHTML]=\"item.value\" [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <img src=\"https://dev-beeos.s3.amazonaws.com/library-media/714126c1707378935732span.png\" alt=\"\"\r\n class=\"span-img mt-15\">\r\n <ng-container *ngIf=\"!filterLoading\">\r\n <div class=\"product-parent\" *ngIf=\"responseData && responseData?.length\">\r\n <div *ngFor=\"let product of responseData | slice:getSliceParameters()[0]:getSliceParameters()[1]; let idx = index\" class=\"product\"\r\n [style.width]=\"getProductWidth()\">\r\n <div *ngIf=\"!(product.itemImages?.length && product.itemImages[0].imgUrl)\" class=\"default-image\" (click)=\"proceedToProductDesc(product)\">\r\n <img src=\"https://i.postimg.cc/hPS2JpV0/no-image-available.jpg\" alt=\"\">\r\n <ng-container *ngTemplateOutlet=\"FavouriteTags; context: {data: product}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"product.itemImages?.length && product.itemImages[0].imgUrl\" (click)=\"proceedToProductDesc(product)\" class=\"position-relative\">\r\n <div class=\"tags\">\r\n <div class=\"tag\" *ngIf=\"product.itemInventory && product.itemInventory.lowStockQuantity < 5\">Selling Fast</div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"FavouriteTags; context: {data: product}\"></ng-container>\r\n <img [id]=\"'preview_'+idx\" [src]=\"product.itemImages[product.prviewIdx]?.imgUrl\" alt=\"\" class=\"product-img preivew\" (mouseenter)=\"togglePreviewImage(product, idx)\" (mouseleave)=\"product.prviewIdx = 0\">\r\n </div>\r\n <div class=\"mt-15\">\r\n <div class=\"product-name heading-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n {{product.name.length > 30 ? (product.name | slice: 0:27) + '...' : product.name }}</div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"price body-large d-flex\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n <div *ngIf=\"product.price.value != product.price.discountedPrice\" class=\"selling-price\">\r\n <span [innerHTML]='currency'></span>\r\n {{product.price.value}}\r\n </div>\r\n <div class=\"discounted-price\">\r\n <span [innerHTML]='currency'></span>\r\n {{product.price.discountedPrice}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"content?.display?.showButton\" class=\"add-to-cart-btn\">\r\n <button simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\"\r\n [color]=\"styles?.background?.accentColor\" *ngIf=\"!product.quantity && !isItemOutOfStock(product)\" (click)=\"addItemToCart(product, 'ADD')\">{{button?.content?.label ?? 'Add to Cart'}}</button>\r\n <div class=\"quantity\" *ngIf=\"product.quantity\">\r\n <span (click)=\"addItemToCart(product, 'SUBSTRACT')\">-</span>\r\n <span>{{product.quantity}}</span>\r\n <span (click)=\"addItemToCart(product, 'ADD')\">+</span>\r\n </div>\r\n <button disabled class=\"out-of-stock\" *ngIf=\"isItemOutOfStock(product)\">Out Of Stock</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action-btn\">\r\n <a [href]=\"data?.action?.buttons?.[1]?.content?.redirectionUrl\" simpoButtonDirective [id]=\"data?.id+(data?.action?.buttons?.[1]?.id || '')\" [buttonStyle]=\"data?.action?.buttons?.[1]?.styles\" [color]=\"styles?.background?.accentColor\" >{{data?.action?.buttons?.[1]?.content?.label }}</a>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ng-template #FavouriteTags let-product=\"data\">\r\n <mat-icon class=\"fav-icon\" [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav($event, product, 'ADD')\" *ngIf=\"!product.whislist\">favorite_border</mat-icon>\r\n <mat-icon class=\"fav-icon\" [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav($event, product, 'REMOVE')\" *ngIf=\"product.whislist\">favorite</mat-icon>\r\n</ng-template>\r\n<ngx-skeleton-loader *ngIf=\"isLoading || filterLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>\r\n", styles: [".product-parent{display:flex;flex-wrap:wrap;margin-top:15px}.product{padding:10px;cursor:pointer;position:relative}.product-img{height:310px;width:100%}.price{color:#222;font-size:16px;font-weight:600;line-height:normal}.tags{position:absolute;top:8px;left:8px;display:flex;gap:5px}.tags .tag{font-size:12px;background-color:#fff;padding:5px;border-radius:3px}.out-of-stock{background-color:#d3d3d333;color:#000;border-radius:5px;border:none}.fav-icon{position:absolute;z-index:1000;padding:5px;right:8px;top:8px;height:fit-content;width:fit-content;background-color:#ffffff78;border-radius:50%}.out-of-stock{background-color:#d3d3d333;color:#000;padding:5px 10px;border-radius:5px}.product-name{color:#222;font-size:16px;line-height:26px;margin-bottom:5px}.selling-price{text-decoration:line-through;font-size:14px!important;margin-right:8px;color:#d3d3d3}@media screen and (max-width: 475px){.selling-price{display:none!important}}.discounted-price{margin-top:-3px}.add-product-button{width:20%}.action-btn{display:flex;justify-content:center;margin-top:20px}.action-btn>a{width:fit-content!important;padding:5px 20px;text-decoration:none}.mt-15{margin-top:15px}.default-image{background-color:#f2f3f5;text-align:center}.default-image img{width:70%;height:310px}.total-container{height:auto;position:relative}.display-block{display:block!important}.quantity{display:flex;justify-content:space-between;align-items:center;border:1.5px solid lightgray;border-radius:3px;padding:5px;font-weight:600;width:95px}.preivew{transition:opacity .5s ease-in-out;opacity:1}.transition-preview{opacity:0}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}@media screen and (max-width: 475px){.product-img{height:220px}.default-image img{height:250px}}.add-to-cart-btn{display:flex;gap:10px}.add-to-cart-btn .mat-icon{height:30px;width:35px;font-size:27px;margin-top:5px}.add-to-cart-btn button{height:35px;font-size:16px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged"], outputs: ["edit"] }, { kind: "component", type: DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i11.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "component", type:
|
5448
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: FeaturedProductsComponent, isStandalone: true, selector: "simpo-featured-products", inputs: { data: "data", responseData: "responseData", index: "index", isRelatedProduct: "isRelatedProduct", edit: "edit", delete: "delete" }, outputs: { changeDetailProduct: "changeDetailProduct" }, host: { listeners: { "window: resize": "getScreenSize($event)" } }, providers: [MessageService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"container-fluid total-container\" [id]=\"data?.id\">\r\n <div [id]=\"data?.id\" class=\"display-block\" #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [simpoAnimation]=\"styles?.animation\" [simpoLayout]=\"styles?.layout\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [innerHTML]=\"item.value\" [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <img src=\"https://dev-beeos.s3.amazonaws.com/library-media/714126c1707378935732span.png\" alt=\"\"\r\n class=\"span-img mt-15\">\r\n <ng-container *ngIf=\"!filterLoading\">\r\n <div class=\"product-parent\" *ngIf=\"responseData && responseData?.length\">\r\n <div *ngFor=\"let product of responseData | slice:getSliceParameters()[0]:getSliceParameters()[1]; let idx = index\" class=\"product\"\r\n [style.width]=\"getProductWidth()\">\r\n <div *ngIf=\"!(product.itemImages?.length && product.itemImages[0].imgUrl)\" class=\"default-image\" (click)=\"proceedToProductDesc(product)\">\r\n <img src=\"https://i.postimg.cc/hPS2JpV0/no-image-available.jpg\" alt=\"\">\r\n <ng-container *ngTemplateOutlet=\"FavouriteTags; context: {data: product}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"product.itemImages?.length && product.itemImages[0].imgUrl\" (click)=\"proceedToProductDesc(product)\" class=\"position-relative\">\r\n <div class=\"tags\">\r\n <div class=\"tag\" *ngIf=\"product.itemInventory && product.itemInventory.lowStockQuantity < 5\">Selling Fast</div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"FavouriteTags; context: {data: product}\"></ng-container>\r\n <img [id]=\"'preview_'+idx\" [src]=\"product.itemImages[product.prviewIdx]?.imgUrl\" alt=\"\" class=\"product-img preivew\" (mouseenter)=\"togglePreviewImage(product, idx)\" (mouseleave)=\"product.prviewIdx = 0\">\r\n </div>\r\n <div class=\"mt-15\">\r\n <div class=\"product-name heading-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n {{product.name.length > 30 ? (product.name | slice: 0:27) + '...' : product.name }}</div>\r\n <div class=\"varient-list\" *ngIf=\"product.itemVariant?.length\">\r\n <ng-container *ngFor=\"let varient of product.itemVariant; let idx = index\">\r\n <img [src]=\"varient.variantImages[0].imgUrl\" alt=\"\" class=\"varient\" [ngClass]=\"{'selected-varient': varient.variantId == product.varientId}\" [style.borderColor]=\"varient.variantId == product.varientId ? 'blue' : 'transparent'\" (click)=\"selectVarient(product, varient)\">\r\n </ng-container>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"price body-large d-flex\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n <div *ngIf=\"product.price.value != product.price.discountedPrice\" class=\"selling-price\">\r\n <span [innerHTML]='currency'></span>\r\n {{product.price.value}}\r\n </div>\r\n <div class=\"discounted-price\">\r\n <span [innerHTML]='currency'></span>\r\n {{product.price.discountedPrice}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"content?.display?.showButton\" class=\"add-to-cart-btn\">\r\n <button simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\"\r\n [color]=\"styles?.background?.accentColor\" *ngIf=\"!product.quantity && !isItemOutOfStock(product)\" (click)=\"addItemToCart(product, 'ADD')\">{{button?.content?.label ?? 'Add to Cart'}}</button>\r\n <div class=\"quantity\" *ngIf=\"product.quantity\">\r\n <span (click)=\"addItemToCart(product, 'SUBSTRACT')\">-</span>\r\n <span>{{product.quantity}}</span>\r\n <span (click)=\"addItemToCart(product, 'ADD')\">+</span>\r\n </div>\r\n <button disabled class=\"out-of-stock\" *ngIf=\"isItemOutOfStock(product)\">Out Of Stock</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action-btn\">\r\n <a [href]=\"data?.action?.buttons?.[1]?.content?.redirectionUrl\" simpoButtonDirective [id]=\"data?.id+(data?.action?.buttons?.[1]?.id || '')\" [buttonStyle]=\"data?.action?.buttons?.[1]?.styles\" [color]=\"styles?.background?.accentColor\" >{{data?.action?.buttons?.[1]?.content?.label }}</a>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ng-template #FavouriteTags let-product=\"data\">\r\n <mat-icon class=\"fav-icon\" [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav($event, product, 'ADD')\" *ngIf=\"!product.whislist\">favorite_border</mat-icon>\r\n <mat-icon class=\"fav-icon\" [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav($event, product, 'REMOVE')\" *ngIf=\"product.whislist\">favorite</mat-icon>\r\n</ng-template>\r\n<ngx-skeleton-loader *ngIf=\"isLoading || filterLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>\r\n", styles: [".product-parent{display:flex;flex-wrap:wrap;margin-top:15px}.product{padding:10px;cursor:pointer;position:relative}.product-img{height:310px;width:100%}.price{color:#222;font-size:16px;font-weight:600;line-height:normal}.varient-list{display:flex;gap:5px;margin-bottom:5px;width:100%;overflow-x:auto}.varient-list .varient{height:60px;width:45px;border-radius:5px;border:1px solid lightgray}.varient-list .selected-varient{border:1px solid transparent}.tags{position:absolute;top:8px;left:8px;display:flex;gap:5px}.tags .tag{font-size:12px;background-color:#fff;padding:5px;border-radius:3px}.out-of-stock{background-color:#d3d3d333;color:#000;border-radius:5px;border:none}.fav-icon{position:absolute;z-index:1000;padding:5px;right:8px;top:8px;height:fit-content;width:fit-content;background-color:#ffffff78;border-radius:50%}.out-of-stock{background-color:#d3d3d333;color:#000;padding:5px 10px;border-radius:5px}.product-name{color:#222;font-size:16px;line-height:26px;margin-bottom:5px}.selling-price{text-decoration:line-through;font-size:14px!important;margin-right:8px;color:#d3d3d3}@media screen and (max-width: 475px){.selling-price{display:none!important}}.discounted-price{margin-top:-3px}.add-product-button{width:20%}.action-btn{display:flex;justify-content:center;margin-top:20px}.action-btn>a{width:fit-content!important;padding:5px 20px;text-decoration:none}.mt-15{margin-top:15px}.default-image{background-color:#f2f3f5;text-align:center}.default-image img{width:70%;height:310px}.total-container{height:auto;position:relative}.display-block{display:block!important}.quantity{display:flex;justify-content:space-between;align-items:center;border:1.5px solid lightgray;border-radius:3px;padding:5px;font-weight:600;width:95px}.preivew{transition:opacity .5s ease-in-out;opacity:1}.transition-preview{opacity:0}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}@media screen and (max-width: 475px){.product-img{height:220px}.default-image img{height:250px}}.add-to-cart-btn{display:flex;gap:10px}.add-to-cart-btn .mat-icon{height:30px;width:35px;font-size:27px;margin-top:5px}.add-to-cart-btn button{height:35px;font-size:16px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged"], outputs: ["edit"] }, { kind: "component", type: DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i11.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "component", type:
|
5419
5449
|
//directive
|
5420
|
-
MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type:
|
5450
|
+
MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "ngmodule", type: MatBottomSheetModule }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i12.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
5421
5451
|
}
|
5422
5452
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FeaturedProductsComponent, decorators: [{
|
5423
5453
|
type: Component,
|
@@ -5439,7 +5469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
5439
5469
|
MatBottomSheetModule,
|
5440
5470
|
ButtonDirectiveDirective,
|
5441
5471
|
ToastModule
|
5442
|
-
], providers: [MessageService], template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"container-fluid total-container\" [id]=\"data?.id\"
|
5472
|
+
], providers: [MessageService], template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"container-fluid total-container\" [id]=\"data?.id\">\r\n <div [id]=\"data?.id\" class=\"display-block\" #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [simpoAnimation]=\"styles?.animation\" [simpoLayout]=\"styles?.layout\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [innerHTML]=\"item.value\" [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <img src=\"https://dev-beeos.s3.amazonaws.com/library-media/714126c1707378935732span.png\" alt=\"\"\r\n class=\"span-img mt-15\">\r\n <ng-container *ngIf=\"!filterLoading\">\r\n <div class=\"product-parent\" *ngIf=\"responseData && responseData?.length\">\r\n <div *ngFor=\"let product of responseData | slice:getSliceParameters()[0]:getSliceParameters()[1]; let idx = index\" class=\"product\"\r\n [style.width]=\"getProductWidth()\">\r\n <div *ngIf=\"!(product.itemImages?.length && product.itemImages[0].imgUrl)\" class=\"default-image\" (click)=\"proceedToProductDesc(product)\">\r\n <img src=\"https://i.postimg.cc/hPS2JpV0/no-image-available.jpg\" alt=\"\">\r\n <ng-container *ngTemplateOutlet=\"FavouriteTags; context: {data: product}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"product.itemImages?.length && product.itemImages[0].imgUrl\" (click)=\"proceedToProductDesc(product)\" class=\"position-relative\">\r\n <div class=\"tags\">\r\n <div class=\"tag\" *ngIf=\"product.itemInventory && product.itemInventory.lowStockQuantity < 5\">Selling Fast</div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"FavouriteTags; context: {data: product}\"></ng-container>\r\n <img [id]=\"'preview_'+idx\" [src]=\"product.itemImages[product.prviewIdx]?.imgUrl\" alt=\"\" class=\"product-img preivew\" (mouseenter)=\"togglePreviewImage(product, idx)\" (mouseleave)=\"product.prviewIdx = 0\">\r\n </div>\r\n <div class=\"mt-15\">\r\n <div class=\"product-name heading-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n {{product.name.length > 30 ? (product.name | slice: 0:27) + '...' : product.name }}</div>\r\n <div class=\"varient-list\" *ngIf=\"product.itemVariant?.length\">\r\n <ng-container *ngFor=\"let varient of product.itemVariant; let idx = index\">\r\n <img [src]=\"varient.variantImages[0].imgUrl\" alt=\"\" class=\"varient\" [ngClass]=\"{'selected-varient': varient.variantId == product.varientId}\" [style.borderColor]=\"varient.variantId == product.varientId ? 'blue' : 'transparent'\" (click)=\"selectVarient(product, varient)\">\r\n </ng-container>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"price body-large d-flex\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n <div *ngIf=\"product.price.value != product.price.discountedPrice\" class=\"selling-price\">\r\n <span [innerHTML]='currency'></span>\r\n {{product.price.value}}\r\n </div>\r\n <div class=\"discounted-price\">\r\n <span [innerHTML]='currency'></span>\r\n {{product.price.discountedPrice}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"content?.display?.showButton\" class=\"add-to-cart-btn\">\r\n <button simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\"\r\n [color]=\"styles?.background?.accentColor\" *ngIf=\"!product.quantity && !isItemOutOfStock(product)\" (click)=\"addItemToCart(product, 'ADD')\">{{button?.content?.label ?? 'Add to Cart'}}</button>\r\n <div class=\"quantity\" *ngIf=\"product.quantity\">\r\n <span (click)=\"addItemToCart(product, 'SUBSTRACT')\">-</span>\r\n <span>{{product.quantity}}</span>\r\n <span (click)=\"addItemToCart(product, 'ADD')\">+</span>\r\n </div>\r\n <button disabled class=\"out-of-stock\" *ngIf=\"isItemOutOfStock(product)\">Out Of Stock</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action-btn\">\r\n <a [href]=\"data?.action?.buttons?.[1]?.content?.redirectionUrl\" simpoButtonDirective [id]=\"data?.id+(data?.action?.buttons?.[1]?.id || '')\" [buttonStyle]=\"data?.action?.buttons?.[1]?.styles\" [color]=\"styles?.background?.accentColor\" >{{data?.action?.buttons?.[1]?.content?.label }}</a>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ng-template #FavouriteTags let-product=\"data\">\r\n <mat-icon class=\"fav-icon\" [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav($event, product, 'ADD')\" *ngIf=\"!product.whislist\">favorite_border</mat-icon>\r\n <mat-icon class=\"fav-icon\" [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav($event, product, 'REMOVE')\" *ngIf=\"product.whislist\">favorite</mat-icon>\r\n</ng-template>\r\n<ngx-skeleton-loader *ngIf=\"isLoading || filterLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>\r\n", styles: [".product-parent{display:flex;flex-wrap:wrap;margin-top:15px}.product{padding:10px;cursor:pointer;position:relative}.product-img{height:310px;width:100%}.price{color:#222;font-size:16px;font-weight:600;line-height:normal}.varient-list{display:flex;gap:5px;margin-bottom:5px;width:100%;overflow-x:auto}.varient-list .varient{height:60px;width:45px;border-radius:5px;border:1px solid lightgray}.varient-list .selected-varient{border:1px solid transparent}.tags{position:absolute;top:8px;left:8px;display:flex;gap:5px}.tags .tag{font-size:12px;background-color:#fff;padding:5px;border-radius:3px}.out-of-stock{background-color:#d3d3d333;color:#000;border-radius:5px;border:none}.fav-icon{position:absolute;z-index:1000;padding:5px;right:8px;top:8px;height:fit-content;width:fit-content;background-color:#ffffff78;border-radius:50%}.out-of-stock{background-color:#d3d3d333;color:#000;padding:5px 10px;border-radius:5px}.product-name{color:#222;font-size:16px;line-height:26px;margin-bottom:5px}.selling-price{text-decoration:line-through;font-size:14px!important;margin-right:8px;color:#d3d3d3}@media screen and (max-width: 475px){.selling-price{display:none!important}}.discounted-price{margin-top:-3px}.add-product-button{width:20%}.action-btn{display:flex;justify-content:center;margin-top:20px}.action-btn>a{width:fit-content!important;padding:5px 20px;text-decoration:none}.mt-15{margin-top:15px}.default-image{background-color:#f2f3f5;text-align:center}.default-image img{width:70%;height:310px}.total-container{height:auto;position:relative}.display-block{display:block!important}.quantity{display:flex;justify-content:space-between;align-items:center;border:1.5px solid lightgray;border-radius:3px;padding:5px;font-weight:600;width:95px}.preivew{transition:opacity .5s ease-in-out;opacity:1}.transition-preview{opacity:0}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}@media screen and (max-width: 475px){.product-img{height:220px}.default-image img{height:250px}}.add-to-cart-btn{display:flex;gap:10px}.add-to-cart-btn .mat-icon{height:30px;width:35px;font-size:27px;margin-top:5px}.add-to-cart-btn button{height:35px;font-size:16px!important}\n"] }]
|
5443
5473
|
}], ctorParameters: () => [{ type: Object, decorators: [{
|
5444
5474
|
type: Inject,
|
5445
5475
|
args: [PLATFORM_ID]
|
@@ -5586,6 +5616,7 @@ class ProductDescComponent extends BaseSection {
|
|
5586
5616
|
this.isLoading = false;
|
5587
5617
|
this.responseData = response[0];
|
5588
5618
|
this.responseData.itemVariant.forEach((varient, idx) => {
|
5619
|
+
varient.quantity = 0;
|
5589
5620
|
Object.keys(varient.properties).forEach((varientKey) => {
|
5590
5621
|
if (idx == 0)
|
5591
5622
|
this.selectedVarient.set(varientKey, varient.properties[varientKey]);
|
@@ -5593,6 +5624,10 @@ class ProductDescComponent extends BaseSection {
|
|
5593
5624
|
this.varients.set(varientKey, [...(this.varients.get(varientKey) ?? []), varient.properties[varientKey]]);
|
5594
5625
|
});
|
5595
5626
|
});
|
5627
|
+
const itemVariant = this.getItemVarient();
|
5628
|
+
if (itemVariant) {
|
5629
|
+
this.responseData.itemImages = itemVariant.variantImages;
|
5630
|
+
}
|
5596
5631
|
console.log("Description", this.responseData?.name, this.responseData?.descriptor?.name);
|
5597
5632
|
this.titleService.setTitle(this.responseData?.name);
|
5598
5633
|
this.metaTagService.updateTag({ name: 'description', content: this.responseData?.descriptor?.name });
|
@@ -5603,8 +5638,18 @@ class ProductDescComponent extends BaseSection {
|
|
5603
5638
|
cartResponse.onsuccess = (cartData) => {
|
5604
5639
|
this.USER_CART = cartData.target.result;
|
5605
5640
|
this.USER_CART?.forEach((item) => {
|
5606
|
-
if (item.itemId == productId)
|
5607
|
-
this.responseData.
|
5641
|
+
if (item.itemId == productId) {
|
5642
|
+
if (this.responseData.itemVariant.length > 0) {
|
5643
|
+
const itemVariant = this.getItemVarient();
|
5644
|
+
if (itemVariant && item.varientId == itemVariant.variantId) {
|
5645
|
+
itemVariant.quantity = item.quantity;
|
5646
|
+
this.responseData.quantity = item.quantity;
|
5647
|
+
}
|
5648
|
+
}
|
5649
|
+
else {
|
5650
|
+
this.responseData.quantity = item.quantity;
|
5651
|
+
}
|
5652
|
+
}
|
5608
5653
|
});
|
5609
5654
|
};
|
5610
5655
|
});
|
@@ -5612,8 +5657,18 @@ class ProductDescComponent extends BaseSection {
|
|
5612
5657
|
wishlistResponse.onsuccess = (whislistData) => {
|
5613
5658
|
this.USER_WISHLIST = whislistData.target.result;
|
5614
5659
|
this.USER_WISHLIST?.forEach((item) => {
|
5615
|
-
if (item.itemId == productId)
|
5616
|
-
this.
|
5660
|
+
if (item.itemId == productId) {
|
5661
|
+
if (this.responseData.itemVariant.length > 0) {
|
5662
|
+
const itemVariant = this.getItemVarient();
|
5663
|
+
if (itemVariant && itemVariant.variantId == item.varientId) {
|
5664
|
+
itemVariant.wishlist = true;
|
5665
|
+
this.isItemAsFavorite = true;
|
5666
|
+
}
|
5667
|
+
}
|
5668
|
+
else {
|
5669
|
+
this.isItemAsFavorite = true;
|
5670
|
+
}
|
5671
|
+
}
|
5617
5672
|
});
|
5618
5673
|
};
|
5619
5674
|
});
|
@@ -5628,27 +5683,30 @@ class ProductDescComponent extends BaseSection {
|
|
5628
5683
|
selectVarient(key, value) {
|
5629
5684
|
this.selectedVarient.set(key, value);
|
5630
5685
|
this.responseData.itemVariant.forEach((varient) => {
|
5631
|
-
let foundVarient =
|
5686
|
+
let foundVarient = true;
|
5632
5687
|
Object.keys(varient.properties).forEach((property) => {
|
5633
|
-
foundVarient = (this.selectedVarient.get(property) == varient.properties[property]);
|
5688
|
+
foundVarient = (this.selectedVarient.get(property) == varient.properties[property]) && foundVarient;
|
5689
|
+
console.log(this.selectedVarient.get(property), varient.properties[property]);
|
5634
5690
|
});
|
5691
|
+
console.log(foundVarient);
|
5635
5692
|
if (foundVarient) {
|
5636
5693
|
this.itemImages = varient.variantImages;
|
5637
5694
|
this.currentImg = this.itemImages[0]?.imgUrl;
|
5638
5695
|
this.responseData.price.value = varient.itemVariantPrice.value;
|
5639
5696
|
this.responseData.price.discountedPrice = varient.itemVariantPrice.discountedPrice;
|
5640
5697
|
this.responseData.price.sellingPrice = varient.itemVariantPrice.sellingPrice;
|
5641
|
-
this.responseData.
|
5642
|
-
this.
|
5698
|
+
this.responseData.itemInventory = varient.itemInventory;
|
5699
|
+
this.responseData.quantity = this.getVarientQuantity(varient);
|
5700
|
+
this.isItemAsFavorite = this.isVarientPresentInWishtlist(varient);
|
5643
5701
|
}
|
5644
5702
|
});
|
5645
5703
|
}
|
5646
5704
|
getItemVarient() {
|
5647
5705
|
let selectedVarient = null;
|
5648
5706
|
this.responseData.itemVariant?.forEach((varient) => {
|
5649
|
-
let foundVarient =
|
5707
|
+
let foundVarient = true;
|
5650
5708
|
Object.keys(varient.properties).forEach((property) => {
|
5651
|
-
foundVarient = (this.selectedVarient.get(property) == varient.properties[property]);
|
5709
|
+
foundVarient = (this.selectedVarient.get(property) == varient.properties[property]) && foundVarient;
|
5652
5710
|
});
|
5653
5711
|
if (foundVarient)
|
5654
5712
|
selectedVarient = varient;
|
@@ -5683,6 +5741,12 @@ class ProductDescComponent extends BaseSection {
|
|
5683
5741
|
return;
|
5684
5742
|
}
|
5685
5743
|
if (this.responseData.itemVariant?.length > 0) {
|
5744
|
+
const itemVarient = this.getItemVarient();
|
5745
|
+
if (itemVarient) {
|
5746
|
+
itemVarient.quantity = itemVarient.quantity + 1;
|
5747
|
+
this.responseData.quantity = itemVarient.quantity;
|
5748
|
+
}
|
5749
|
+
this.cartService.addItemToCart(this.responseData, itemVarient?.variantId);
|
5686
5750
|
}
|
5687
5751
|
else {
|
5688
5752
|
if (!this.responseData?.quantity)
|
@@ -5693,8 +5757,8 @@ class ProductDescComponent extends BaseSection {
|
|
5693
5757
|
else {
|
5694
5758
|
this.responseData.quantity -= 1;
|
5695
5759
|
}
|
5760
|
+
this.cartService.addItemToCart(this.responseData);
|
5696
5761
|
}
|
5697
|
-
this.cartService.addItemToCart(this.responseData);
|
5698
5762
|
}
|
5699
5763
|
goToFilter(category) {
|
5700
5764
|
category = category.replaceAll(" ", "_");
|
@@ -5703,12 +5767,30 @@ class ProductDescComponent extends BaseSection {
|
|
5703
5767
|
addToFavourite() {
|
5704
5768
|
this.isItemAsFavorite = true;
|
5705
5769
|
this.messageService.add({ severity: 'success', summary: 'Success', detail: 'Item added to your wishlist', key: 'wishlist' });
|
5706
|
-
|
5770
|
+
if (this.responseData.itemVariant?.length > 0) {
|
5771
|
+
const itemVarient = this.getItemVarient();
|
5772
|
+
if (itemVarient) {
|
5773
|
+
itemVarient.wishlist = true;
|
5774
|
+
this.cartService.addItemToFavourite(this.responseData, itemVarient.variantId);
|
5775
|
+
}
|
5776
|
+
}
|
5777
|
+
else {
|
5778
|
+
this.cartService.addItemToFavourite(this.responseData);
|
5779
|
+
}
|
5707
5780
|
}
|
5708
5781
|
removeToFavourite() {
|
5709
5782
|
this.isItemAsFavorite = false;
|
5710
5783
|
this.messageService.add({ severity: 'info', summary: 'Success', detail: 'Item removed from your wishlist', key: 'wishlist' });
|
5711
|
-
|
5784
|
+
if (this.responseData.itemVariant?.length > 0) {
|
5785
|
+
const itemVarient = this.getItemVarient();
|
5786
|
+
if (itemVarient) {
|
5787
|
+
itemVarient.wishlist = false;
|
5788
|
+
this.cartService.removeItemFromFavourite(this.responseData.varientId);
|
5789
|
+
}
|
5790
|
+
}
|
5791
|
+
else {
|
5792
|
+
this.cartService.removeItemFromFavourite(this.responseData.varientId);
|
5793
|
+
}
|
5712
5794
|
}
|
5713
5795
|
getProductByCategory() {
|
5714
5796
|
this.restService.getProductByCategoryId(this.responseData?.itemCategorisation?.itemCategories?.[0]?.refId ?? "").subscribe((response) => {
|
@@ -5730,6 +5812,22 @@ class ProductDescComponent extends BaseSection {
|
|
5730
5812
|
getKeyByIdx(property, index) {
|
5731
5813
|
return Object.keys(property)[index];
|
5732
5814
|
}
|
5815
|
+
getVarientQuantity(productVarient) {
|
5816
|
+
let itemQuantity = 0;
|
5817
|
+
this.USER_CART?.forEach((item) => {
|
5818
|
+
if (productVarient.variantId == item.varientId)
|
5819
|
+
itemQuantity = item.quantity;
|
5820
|
+
});
|
5821
|
+
return itemQuantity;
|
5822
|
+
}
|
5823
|
+
isVarientPresentInWishtlist(productVarient) {
|
5824
|
+
let present = false;
|
5825
|
+
this.USER_WISHLIST?.forEach((item) => {
|
5826
|
+
if (productVarient.variantId == item.varientId)
|
5827
|
+
present = true;
|
5828
|
+
});
|
5829
|
+
return present;
|
5830
|
+
}
|
5733
5831
|
get isItemOutOfStock() {
|
5734
5832
|
return this.responseData.itemInventory.openingStock == 0;
|
5735
5833
|
}
|
@@ -5974,12 +6072,21 @@ class ProductListComponent extends BaseSection {
|
|
5974
6072
|
if (type == 'ADD') {
|
5975
6073
|
product.whislist = true;
|
5976
6074
|
this.messageService.add({ severity: 'success', summary: 'Wishlist', detail: 'Item added to your wishlist' });
|
5977
|
-
|
6075
|
+
if (product.itemVariant.length) {
|
6076
|
+
const itemVarient = this.getItemVarient(product, product.varientId);
|
6077
|
+
if (itemVarient) {
|
6078
|
+
itemVarient.wishlist = true;
|
6079
|
+
this.cartService.addItemToFavourite(product, itemVarient.variantId);
|
6080
|
+
}
|
6081
|
+
}
|
6082
|
+
else {
|
6083
|
+
this.cartService.addItemToFavourite(product);
|
6084
|
+
}
|
5978
6085
|
}
|
5979
6086
|
else {
|
5980
6087
|
product.whislist = false;
|
5981
6088
|
this.messageService.add({ severity: 'info', summary: 'Wishlist', detail: 'Item removed from your wishlist' });
|
5982
|
-
this.cartService.removeItemFromFavourite(product);
|
6089
|
+
this.cartService.removeItemFromFavourite(product.varientId);
|
5983
6090
|
}
|
5984
6091
|
event.stopPropagation();
|
5985
6092
|
}
|
@@ -5990,7 +6097,6 @@ class ProductListComponent extends BaseSection {
|
|
5990
6097
|
}
|
5991
6098
|
product.quantity += (type == 'ADD' ? 1 : -1);
|
5992
6099
|
this.cartService.addItemToCart(product);
|
5993
|
-
// event.stopPropagation();
|
5994
6100
|
}
|
5995
6101
|
searchProduct() {
|
5996
6102
|
this.navigateFilter(this.sortBy ?? "lowestPrice");
|
@@ -6035,8 +6141,19 @@ class ProductListComponent extends BaseSection {
|
|
6035
6141
|
this.USER_CART = cartData.target.result;
|
6036
6142
|
this.responseData?.forEach((product) => {
|
6037
6143
|
this.USER_CART?.forEach((item) => {
|
6038
|
-
if (item.itemId == product.itemId)
|
6039
|
-
product.
|
6144
|
+
if (item.itemId == product.itemId) {
|
6145
|
+
if (product.itemVariant.length > 0) {
|
6146
|
+
const itemVarient = product.itemVariant[0];
|
6147
|
+
if (itemVarient.variantId == item.varientId) {
|
6148
|
+
product.itemImages = itemVarient.variantImages ?? [];
|
6149
|
+
product.price = itemVarient.itemVariantPrice;
|
6150
|
+
product.quantity = item.quantity;
|
6151
|
+
}
|
6152
|
+
}
|
6153
|
+
else {
|
6154
|
+
product.quantity = item.quantity;
|
6155
|
+
}
|
6156
|
+
}
|
6040
6157
|
});
|
6041
6158
|
});
|
6042
6159
|
};
|
@@ -6046,8 +6163,19 @@ class ProductListComponent extends BaseSection {
|
|
6046
6163
|
this.USER_WISHLIST = whislistData.target.result;
|
6047
6164
|
this.responseData?.forEach((product) => {
|
6048
6165
|
this.USER_WISHLIST?.forEach((item) => {
|
6049
|
-
if (item.itemId == product.itemId)
|
6050
|
-
product.
|
6166
|
+
if (item.itemId == product.itemId) {
|
6167
|
+
if (product.itemVariant.length > 0) {
|
6168
|
+
const itemVarient = product.itemVariant[0];
|
6169
|
+
if (itemVarient.variantId == item.varientId) {
|
6170
|
+
product.itemImages = itemVarient?.variantImages ?? [];
|
6171
|
+
product.price = itemVarient.itemVariantPrice;
|
6172
|
+
product.whislist = true;
|
6173
|
+
}
|
6174
|
+
}
|
6175
|
+
else {
|
6176
|
+
product.whislist = true;
|
6177
|
+
}
|
6178
|
+
}
|
6051
6179
|
});
|
6052
6180
|
});
|
6053
6181
|
};
|
@@ -6077,6 +6205,14 @@ class ProductListComponent extends BaseSection {
|
|
6077
6205
|
isItemOutOfStock(product) {
|
6078
6206
|
return product.itemInventory.openingStock == 0;
|
6079
6207
|
}
|
6208
|
+
getItemVarient(product, varientId) {
|
6209
|
+
let selectedVarient = null;
|
6210
|
+
product.itemVariant?.forEach((varient) => {
|
6211
|
+
if (varient.variantId == varientId)
|
6212
|
+
selectedVarient = varient;
|
6213
|
+
});
|
6214
|
+
return selectedVarient;
|
6215
|
+
}
|
6080
6216
|
get isMobile() {
|
6081
6217
|
return window.innerWidth < 475;
|
6082
6218
|
}
|
@@ -7536,7 +7672,7 @@ class Product {
|
|
7536
7672
|
constructor(json) {
|
7537
7673
|
this.itemId = json?.["itemId"];
|
7538
7674
|
this.storeId = json?.["storeId"];
|
7539
|
-
this.varientId = json?.["
|
7675
|
+
this.varientId = json?.["itemId"];
|
7540
7676
|
this.name = json?.["name"];
|
7541
7677
|
this.itemCategorisation = json?.["itemCategorisation"];
|
7542
7678
|
this.itemInventory = json?.["itemInventory"];
|
@@ -7558,6 +7694,12 @@ class Product {
|
|
7558
7694
|
this.prviewIdx = 0;
|
7559
7695
|
this.quantity = json?.["quantity"] ?? 0;
|
7560
7696
|
this.whislist = false;
|
7697
|
+
if (this.itemVariant.length > 0) {
|
7698
|
+
this.itemImages = this.itemVariant[0].variantImages;
|
7699
|
+
this.price = this.itemVariant[0].itemVariantPrice;
|
7700
|
+
this.varientId = this.itemVariant[0].variantId;
|
7701
|
+
this.itemInventory = this.itemVariant[0].itemInventory;
|
7702
|
+
}
|
7561
7703
|
}
|
7562
7704
|
}
|
7563
7705
|
|