simpo-component-library 3.6.55 → 3.6.56

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.
@@ -1,7 +1,7 @@
1
1
  import * as i3 from '@angular/common';
2
2
  import { CommonModule, isPlatformBrowser, NgStyle, NgFor, NgIf } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Input, EventEmitter, Injectable, Directive, InjectionToken, Inject, ElementRef, Renderer2, forwardRef, HostListener, PLATFORM_ID, ViewChild, Output, Pipe, NgModule, Optional, ChangeDetectionStrategy } from '@angular/core';
4
+ import { Component, Input, EventEmitter, Injectable, Directive, InjectionToken, Inject, ElementRef, Renderer2, forwardRef, HostListener, PLATFORM_ID, ViewChild, Output, Pipe, Optional, NgModule, ChangeDetectionStrategy } from '@angular/core';
5
5
  import { MatGridListModule } from '@angular/material/grid-list';
6
6
  import * as i2 from '@angular/material/button';
7
7
  import { MatButtonModule } from '@angular/material/button';
@@ -51,10 +51,6 @@ import * as i2$3 from 'ngx-cookie-service';
51
51
  import * as i5$1 from 'primeng/api';
52
52
  import { MessageService } from 'primeng/api';
53
53
  import Swal from 'sweetalert2';
54
- import * as i3$1 from 'primeng/rating';
55
- import { RatingModule } from 'primeng/rating';
56
- import * as i6 from 'primeng/progressbar';
57
- import { ProgressBarModule } from 'primeng/progressbar';
58
54
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
59
55
  import * as mapboxgl from 'mapbox-gl';
60
56
  import * as i14 from '@angular/material/datepicker';
@@ -62,8 +58,12 @@ import { MatDatepickerModule } from '@angular/material/datepicker';
62
58
  import moment from 'moment';
63
59
  import { isBlurhashValid, decode } from 'blurhash';
64
60
  import { NgxImageZoomModule } from 'ngx-image-zoom';
61
+ import * as i3$1 from 'primeng/rating';
62
+ import { RatingModule } from 'primeng/rating';
65
63
  import * as i15 from 'primeng/speeddial';
66
64
  import { SpeedDialModule } from 'primeng/speeddial';
65
+ import * as i6 from 'primeng/progressbar';
66
+ import { ProgressBarModule } from 'primeng/progressbar';
67
67
  import * as i17 from 'primeng/panel';
68
68
  import { PanelModule } from 'primeng/panel';
69
69
  import { CdkDrag, moveItemInArray } from '@angular/cdk/drag-drop';
@@ -707,10 +707,18 @@ const BUCKET_URL = new InjectionToken('bucketURL');
707
707
 
708
708
  class ElementServiceService {
709
709
  // private BASE_URL: string = "https://dev-api.simpo.ai/";
710
- constructor(http, BASE_URL, CMIS_URL) {
710
+ constructor(http, BASE_URL, CMIS_URL, dialog) {
711
711
  this.http = http;
712
712
  this.BASE_URL = BASE_URL;
713
713
  this.CMIS_URL = CMIS_URL;
714
+ this.dialog = dialog;
715
+ }
716
+ openSocialBrand(componentName, height, width, data) {
717
+ return this.dialog.open(componentName, {
718
+ height: height,
719
+ width: width,
720
+ data: data,
721
+ });
714
722
  }
715
723
  getComponentApi(businessType) {
716
724
  return this.http.get(`${this.BASE_URL}admin/master/template/category/all?type=${businessType ? businessType : ''}`);
@@ -741,7 +749,7 @@ class ElementServiceService {
741
749
  getVehicleRoutes(stopId, typeId) {
742
750
  return this.http.get(this.CMIS_URL + `crm/vehicle-route/${stopId}/vehicle/${typeId}`);
743
751
  }
744
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ElementServiceService, deps: [{ token: i1.HttpClient }, { token: API_URL }, { token: CMIS_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
752
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ElementServiceService, deps: [{ token: i1.HttpClient }, { token: API_URL }, { token: CMIS_URL }, { token: i2$1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
745
753
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ElementServiceService, providedIn: 'root' }); }
746
754
  }
747
755
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ElementServiceService, decorators: [{
@@ -755,7 +763,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
755
763
  }] }, { type: undefined, decorators: [{
756
764
  type: Inject,
757
765
  args: [CMIS_URL]
758
- }] }] });
766
+ }] }, { type: i2$1.MatDialog }] });
759
767
 
760
768
  class LinkEditorComponent {
761
769
  constructor(editorService, dialogRef, data) {
@@ -1509,6 +1517,8 @@ class ImageUplaodService {
1509
1517
  }
1510
1518
  async uploadFileInAWS(file, folderName = '') {
1511
1519
  try {
1520
+ // CloudFront distribution domain
1521
+ const cloudfrontDomain = this.bucketUrl.bucketDetails.Bucket == 'dev-beeos' ? 'https://d2yx15pncgmu63.cloudfront.net' : 'https://d2z9497xp8xb12.cloudfront.net';
1512
1522
  // Create a unique file name
1513
1523
  const fileName = `${folderName}/${Date.now()}-${file.name}`;
1514
1524
  // Convert file to buffer
@@ -1519,13 +1529,14 @@ class ImageUplaodService {
1519
1529
  Key: fileName,
1520
1530
  Body: fileBuffer,
1521
1531
  ContentType: file.type,
1522
- ACL: 'public-read' // Set appropriate ACL based on your needs
1532
+ // Remove public-read ACL if using OAC/OAI as it's not needed and may cause issues
1533
+ // ACL: 'public-read'
1523
1534
  };
1524
1535
  // Upload file to S3
1525
1536
  const command = new PutObjectCommand(params);
1526
1537
  const response = await this.s3Client?.send(command);
1527
- // Construct the URL (since PutObjectCommand doesn't return it directly)
1528
- const url = `https://${this.bucketUrl.bucketDetails.Bucket}.s3.${this.bucketUrl.bucketDetails.Region}.amazonaws.com/${fileName}`;
1538
+ // Construct the CloudFront URL instead of S3 URL
1539
+ const url = `${cloudfrontDomain}/${fileName}`;
1529
1540
  return url;
1530
1541
  }
1531
1542
  catch (error) {
@@ -1719,8 +1730,10 @@ class MediaSelectorComponent {
1719
1730
  for (let image of this.selectedImage.values()) {
1720
1731
  if (image.file) {
1721
1732
  const fileUrl = await this.imageUploadService.uploadFileInAWS(image.file, 'library-media');
1733
+ console.log('fileUrl', fileUrl);
1722
1734
  image.assets[0].url = fileUrl;
1723
1735
  }
1736
+ console.log('image', image);
1724
1737
  request.push(image);
1725
1738
  }
1726
1739
  this.editorService.saveImagesToBusinessLibrary({ data: request }).subscribe({
@@ -2666,6 +2679,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
2666
2679
  args: ['document:click', ['$event']]
2667
2680
  }] } });
2668
2681
 
2682
+ class TrasportAvailabilityComponent {
2683
+ constructor(dialogRef, data, snackBar) {
2684
+ this.dialogRef = dialogRef;
2685
+ this.data = data;
2686
+ this.snackBar = snackBar;
2687
+ }
2688
+ ngOnInit() {
2689
+ }
2690
+ close() {
2691
+ this.dialogRef.close({ data: null });
2692
+ }
2693
+ sendRequest() {
2694
+ this.data.data.transportRequest = true;
2695
+ this.snackBar.open('Our support team will get back to you...!', 'Ok');
2696
+ this.close();
2697
+ }
2698
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TrasportAvailabilityComponent, deps: [{ token: i2$1.MatDialogRef }, { token: MAT_DIALOG_DATA, optional: true }, { token: i2$2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
2699
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: TrasportAvailabilityComponent, isStandalone: true, selector: "simpo-trasport-availability", ngImport: i0, template: "<section class=\"total_popup_sec h-100 w-100 d-flex justify-content-around flex-column\">\r\n <div class=\"top_layer\">\r\n <div class=\"layer_title text-center\">\r\n Transport Full for Selected Option\r\n </div>\r\n <div class=\"layer_description mt-2 text-center\">\r\n Would you like to request the school to check seat availability or arrange transport for this stop and\u00A0vehicle\u00A0type?\r\n </div>\r\n </div>\r\n <div class=\"footer_layer d-flex gap-2 align-items-center justify-content-end mt-2\">\r\n <button class=\"send_request\" (click)=\"sendRequest()\">Send Request</button>\r\n <button class=\"cancel\" (click)=\"close()\">Cancel</button>\r\n </div>\r\n</section>", styles: [".total_popup_sec{padding:15px}.send_request{font-size:14px;font-family:var(--primary-font-family);font-weight:500;background-color:var(--primary-button-color);border:none;outline:none;width:max-content;border-radius:8px;padding:8px 20px}.cancel{font-size:14px;font-family:var(--primary-font-family);font-weight:500;background-color:transparent;border:1px solid var(--primary-button-color);outline:none;width:max-content;border-radius:8px;padding:8px 20px}.layer_title{font-size:15px;font-family:var(--primary-font-family);color:#000;font-weight:100500}.layer_description{font-size:13px;font-family:var(--primary-font-family);color:#625f5f;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] }); }
2700
+ }
2701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TrasportAvailabilityComponent, decorators: [{
2702
+ type: Component,
2703
+ args: [{ selector: 'simpo-trasport-availability', standalone: true, imports: [CommonModule, FormsModule], template: "<section class=\"total_popup_sec h-100 w-100 d-flex justify-content-around flex-column\">\r\n <div class=\"top_layer\">\r\n <div class=\"layer_title text-center\">\r\n Transport Full for Selected Option\r\n </div>\r\n <div class=\"layer_description mt-2 text-center\">\r\n Would you like to request the school to check seat availability or arrange transport for this stop and\u00A0vehicle\u00A0type?\r\n </div>\r\n </div>\r\n <div class=\"footer_layer d-flex gap-2 align-items-center justify-content-end mt-2\">\r\n <button class=\"send_request\" (click)=\"sendRequest()\">Send Request</button>\r\n <button class=\"cancel\" (click)=\"close()\">Cancel</button>\r\n </div>\r\n</section>", styles: [".total_popup_sec{padding:15px}.send_request{font-size:14px;font-family:var(--primary-font-family);font-weight:500;background-color:var(--primary-button-color);border:none;outline:none;width:max-content;border-radius:8px;padding:8px 20px}.cancel{font-size:14px;font-family:var(--primary-font-family);font-weight:500;background-color:transparent;border:1px solid var(--primary-button-color);outline:none;width:max-content;border-radius:8px;padding:8px 20px}.layer_title{font-size:15px;font-family:var(--primary-font-family);color:#000;font-weight:100500}.layer_description{font-size:13px;font-family:var(--primary-font-family);color:#625f5f;font-weight:500}\n"] }]
2704
+ }], ctorParameters: () => [{ type: i2$1.MatDialogRef }, { type: undefined, decorators: [{
2705
+ type: Optional
2706
+ }, {
2707
+ type: Inject,
2708
+ args: [MAT_DIALOG_DATA]
2709
+ }] }, { type: i2$2.MatSnackBar }] });
2710
+
2669
2711
  class PaymentDetailsComponent {
2670
2712
  constructor(restService, snackBar) {
2671
2713
  this.restService = restService;
@@ -2789,8 +2831,10 @@ class PaymentDetailsComponent {
2789
2831
  }
2790
2832
  }
2791
2833
  onStopSelection(event) {
2792
- this.selectedVehicleType = '';
2793
2834
  this.vehicleTypeSearchText = '';
2835
+ this.selectedVehicleType = '';
2836
+ this.selectedVehicleType = null;
2837
+ this.routeValues = [];
2794
2838
  this.removeTrasportFee();
2795
2839
  this.admissionData.selectedStopDetail = null;
2796
2840
  let selectedStudent;
@@ -2835,6 +2879,7 @@ class PaymentDetailsComponent {
2835
2879
  onVehicleTypeSelection(event) {
2836
2880
  this.vehicleTypeSearchText = '';
2837
2881
  this.removeTrasportFee();
2882
+ this.routeValues = [];
2838
2883
  this.admissionData.selectedStopDetail = null;
2839
2884
  this.vehicleTypesList.forEach((element) => {
2840
2885
  if (element.vehicleType.split(' ').join('_').toLowerCase() === event.option.value.split(' ').join('_').toLowerCase()) {
@@ -2852,8 +2897,18 @@ class PaymentDetailsComponent {
2852
2897
  element.charges.amount = element.charges.totalAmount;
2853
2898
  });
2854
2899
  this.admissionData.selectedStopDetail = res.data[0];
2855
- this.calculateTotalAmountV2(1, this.admissionData.selectedStopDetail?.charges);
2900
+ if (this.admissionData.selectedStopDetail.availability) {
2901
+ this.admissionData.transportRequest = false;
2902
+ this.calculateTotalAmountV2(1, this.admissionData.selectedStopDetail?.charges);
2903
+ }
2904
+ else {
2905
+ this.addingTransportRequest();
2906
+ }
2856
2907
  this.routeValues = res.data;
2908
+ this.admissionData.selectedStopDetail.stop = {
2909
+ name: this.selectedStop.stopName,
2910
+ id: this.selectedStop.id
2911
+ };
2857
2912
  }
2858
2913
  else {
2859
2914
  this.snackBar.open(`${this.selectedVehicleType.vehicleType} doesn't have any routes`, 'Ok', {
@@ -2985,29 +3040,39 @@ class PaymentDetailsComponent {
2985
3040
  }
2986
3041
  removeTrasportFee() {
2987
3042
  if (this.admissionData.selectedStopDetail != null) {
2988
- if (this.admissionData.selectedStopDetail.charges.term) {
2989
- this.admissionData.selectedStopDetail.charges.termPaymentList.forEach((element) => {
2990
- if (element.selected) {
2991
- this.calculateTotalAmountV2(-1, element);
2992
- }
2993
- });
2994
- }
2995
- else {
2996
- this.calculateTotalAmountV2(-1, this.admissionData.selectedStopDetail.charges);
3043
+ if (this.admissionData.selectedStopDetail?.availability) {
3044
+ if (this.admissionData.selectedStopDetail.charges.term) {
3045
+ this.admissionData.selectedStopDetail.charges.termPaymentList.forEach((element) => {
3046
+ if (element.selected) {
3047
+ this.calculateTotalAmountV2(-1, element);
3048
+ }
3049
+ });
3050
+ }
3051
+ else {
3052
+ this.calculateTotalAmountV2(-1, this.admissionData.selectedStopDetail.charges);
3053
+ }
2997
3054
  }
2998
3055
  }
2999
3056
  }
3000
3057
  onCheckboxChange(item, event) {
3001
- // if(this.admissionData.selectedStopDetail)
3002
3058
  this.removeTrasportFee();
3003
3059
  if (event.checked) {
3004
3060
  this.admissionData.selectedStopDetail = item;
3005
- this.addingTransportFee();
3061
+ if (item.availability) {
3062
+ this.admissionData.transportRequest = false;
3063
+ this.addingTransportFee();
3064
+ }
3065
+ else {
3066
+ this.addingTransportRequest();
3067
+ }
3006
3068
  }
3007
3069
  else {
3008
3070
  this.admissionData.selectedStopDetail = null;
3009
3071
  }
3010
3072
  }
3073
+ addingTransportRequest() {
3074
+ this.restService.openSocialBrand(TrasportAvailabilityComponent, '30%', '25%', { data: this.admissionData });
3075
+ }
3011
3076
  getPickupTime(item) {
3012
3077
  const matchedItem = item.find((element) => element.stop.id === this.selectedStop.id);
3013
3078
  const isoTime = new Date(`1970-01-01T${matchedItem.pickup.pickupTime}`);
@@ -3118,7 +3183,7 @@ class PaymentDetailsComponent {
3118
3183
  return this.admissionData.selectedComboKits.length > 0;
3119
3184
  }
3120
3185
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PaymentDetailsComponent, deps: [{ token: ElementServiceService }, { token: i2$2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
3121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PaymentDetailsComponent, isStandalone: true, selector: "simpo-payment-details", inputs: { admissionData: "admissionData", subscriptionsData: "subscriptionsData", termPaymentList: "termPaymentList" }, ngImport: i0, template: "<!-- <section class=\"main-section\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <div class=\"heading left-side\">\r\n Admission Fee\r\n </div>\r\n\r\n <div class=\"left-side mt-10\" *ngFor=\"let configList of Object.keys(feeConfig)\">\r\n <div class=\"heading mb-20\">{{configList}}</div>\r\n\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let config of feeConfig[configList]\">\r\n <p class=\"sub-heading mb-0\">{{config.feeHead}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{config.amount}}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"left-side mt-10\" *ngFor=\"let type of Object.keys(subscriptions)\">\r\n <p class=\"heading\">{{type}}</p>\r\n\r\n <table class=\"subscription-table w-100\">\r\n <thead>\r\n <th>Subscription Title</th>\r\n <th>Monthly</th>\r\n <th>Quaterly</th>\r\n <th>Yearly</th>\r\n <th>On Demand</th>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of subscriptions[type];let i = index\">\r\n <td>{{data.subName}}</td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['QUARTERLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'MONTHLY'\" (click)=\"toggleSelection(data, 'MONTHLY')\" [checked]=\"data.selectedOption === 'MONTHLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexRadioDefault2\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['MONTHLY']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['QUARTERLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['MONTHLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'QUARTERLY'\" (click)=\"toggleSelection(data, 'QUARTERLY')\" [checked]=\"data.selectedOption === 'QUARTERLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['QUARTERLY']}}\r\n </label>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['MONTHLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['ANNUALLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'ANNUALLY'\" (click)=\"toggleSelection(data, 'ANNUALLY')\" [checked]=\"data.selectedOption === 'ANNUALLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['ANNUALLY']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['ANNUALLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['ONDEMAND']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'ONDEMAND'\" (click)=\"toggleSelection(data, 'ONDEMAND')\" [checked]=\"data.selectedOption === 'ONDEMAND'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['ONDEMAND']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['ONDEMAND']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"left-side mt-10\">\r\n <p class=\"heading\">Payment Plan</p>\r\n\r\n <div class=\"d-flex g-2\">\r\n <div class=\"form-check\" (click)=\"changeAnnualPaymentTerm('ANNUALLY')\">\r\n <input class=\"form-check-input\" type=\"radio\" value=\"\" name=\"payment-plan\" id=\"flexCheckChecked\" [checked]=\"admissionData.paymentPlanType === 'ANNUALLY'\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n Annually\r\n </label>\r\n </div>\r\n <div class=\"form-check\" (click)=\"changeAnnualPaymentTerm('TERM')\">\r\n <input class=\"form-check-input\" type=\"radio\" value=\"\" name=\"payment-plan\" id=\"flexCheckChecked\" [checked]=\"admissionData.paymentPlanType === 'TERM'\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n Term\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"admission\" *ngIf=\"admissionData.paymentPlanType === 'TERM'\">\r\n <mat-form-field class=\"input-text\" appearance=\"outline\">\r\n <mat-select class=\"inputStyle\" placeholder=\"--Select--\" multiple=\"true\" [(ngModel)]=\"feeStructure.termPaymentList\" (ngModelChange)=\"calculateTotalAmount()\">\r\n <mat-option *ngFor=\"let term of termPaymentList\" [value]=\"term\">term {{term.termNumber}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 right-side\">\r\n <div class=\"heading mb-20\">\r\n Fee Calculation\r\n </div>\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let config of feeStructure.feeConfigs\">\r\n <p class=\"sub-heading mb-0\">{{config.feeHead}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{config.amount}}</p>\r\n </div>\r\n\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let subscripition of feeStructure.subscriptionPlans\">\r\n <p class=\"sub-heading mb-0\">{{subscripition.subName}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{subscripition.pricing[subscripition.frequency]}}</p>\r\n </div>\r\n\r\n <div class=\"total-fee\">\r\n <div class=\"heading mb-5\">\r\n Total Fee\r\n </div>\r\n <div class=\"amount\">\r\n \u20B9 {{feeStructure.totalAmount}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section> -->\r\n\r\n\r\n<section class=\"main_payment_details_section h-100 w-100 p-2 d-flex justify-content-between\">\r\n <div class=\"left_payment_details h-100 p-2\">\r\n <div class=\"fees_section\">\r\n <div class=\"sec_title\">\r\n Fees\r\n </div>\r\n <div class=\"mt-2 all_fee_configs\">\r\n <ng-container *ngFor=\"let item of feeStructure?.feeConfig\">\r\n <div class=\"single_fee_config p-3\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"fee_title\">{{item.feeHead ? item.feeHead.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\">\u20B9 {{item.amount}}</div>\r\n </div>\r\n <div *ngIf=\"item.termsList.length > 0\">\r\n <div class=\"change_selection\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.selectedTermValue\"\r\n name=\"termOption_{{ item.feeHead.id}}\"\r\n (change)=\"changeTermValue(item)\">\r\n <mat-radio-button value=\"SINGLE\"\r\n style=\"font-family: var(--primary-font-family);font-size:13px\">Single</mat-radio-button>\r\n <mat-radio-button value=\"TERM\"\r\n style=\"font-family: var(--primary-font-family);font-size:13px\">Term</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <div class=\"termCount\" *ngIf=\"item.selectedTermValue === 'TERM'\">\r\n <div class=\"check_data\">\r\n <ng-container *ngFor=\"let term of item.termsList;let i = index\">\r\n <div class=\"singleData d-flex gap-3 align-items-end\">\r\n <input type=\"checkbox\" (change)=\"addTerms($event,term)\" [checked]=\"term.selected\">\r\n <div class=\"data_value\">{{getOrdinalSuffix(i+1)}} Term (\u20B9 {{term?.termAmount}})</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"title\">Transport Fee</div>\r\n <div class=\"selecting_types d-flex align-items-center gap-2 justify-content-end\">\r\n <div style=\"width:30%\">\r\n <mat-form-field appearance=\"outline\" class=\"input_card mt-2 w-100\" style=\"height:40px\">\r\n <input type=\"text\" matInput placeholder=\"Select Stop\" [matAutocomplete]=\"autoGrade\"\r\n [(ngModel)]=\"stopSearchText\" (input)=\"filterStops()\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n <mat-autocomplete #autoGrade=\"matAutocomplete\" (optionSelected)=\"onStopSelection($event)\">\r\n <mat-option *ngFor=\"let stop of filteredStopsList\" [value]=\"stop.stopName\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n {{ stop.stopName | titlecase }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n <div style=\"width:30%\">\r\n <mat-form-field appearance=\"outline\" class=\"input_card mt-2 w-100\" style=\"height:40px\">\r\n <input type=\"text\" matInput placeholder=\"Select Vehicle Type\" [matAutocomplete]=\"autoGrade1\"\r\n [(ngModel)]=\"vehicleTypeSearchText\" (input)=\"filtereVehicleTypes()\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n <mat-autocomplete #autoGrade1=\"matAutocomplete\" (optionSelected)=\"onVehicleTypeSelection($event)\">\r\n <mat-option *ngFor=\"let stop of filteredVehicleTypesList\" [value]=\"stop.vehicleType\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n {{ stop.vehicleType | titlecase }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"list_all_subscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of routeValues\">\r\n <div class=\"single_fee_config p-3\">\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <mat-checkbox [checked]=\"admissionData.selectedStopDetail === item\"\r\n (change)=\"onCheckboxChange(item, $event)\"></mat-checkbox>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"width:92%\">\r\n <div class=\"fee_title\">\r\n {{ item.transport.route ? item.transport.route.name : 'N/A' }}\r\n <span>(<span style=\"font-size:12px;font-family: var(--primary-font-family);\">Pickup Time :</span>\r\n <span\r\n style=\"font-size:12px;font-family: var(--primary-semi-bold-font-family);\">{{getPickupTime(item.transport.busRouteStopTimings)\r\n | date:'h:mm a'}}</span>\r\n -\r\n <span style=\"font-size:12px;font-family: var(--primary-font-family);\">Drop Time :</span>\r\n <span\r\n style=\"font-size:12px;font-family: var(--primary-semi-bold-font-family);\">{{getDroptime(item.transport.busRouteStopTimings)\r\n | date:'h:mm a'}}</span>\r\n )</span>\r\n </div>\r\n <div class=\"fee_amount\">\u20B9 {{ item.charges.totalAmount }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"item?.charges.termPaymentList.length > 0\">\r\n <div class=\"change_selection\" style=\"width:90%;margin:0 auto\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.charges.selectedTermValue\"\r\n (change)=\"changeTransportTermValue(item)\" [disabled]=\"admissionData.selectedStopDetail !== item\">\r\n <mat-radio-button value=\"SINGLE\"\r\n style=\"font-family: var(--primary-font-family); font-size: 13px\">Single</mat-radio-button>\r\n <mat-radio-button value=\"TERM\"\r\n style=\"font-family: var(--primary-font-family); font-size: 13px\">Term</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"termCount\" *ngIf=\"item.charges.selectedTermValue === 'TERM'\">\r\n <div class=\"check_data\" style=\"width:75%;margin:0 auto\">\r\n <ng-container *ngFor=\"let term of item.charges.termPaymentList; let i = index\">\r\n <div class=\"singleData d-flex gap-3 align-items-end\">\r\n <input type=\"checkbox\" (change)=\"addSingleStop($event, term)\"\r\n [disabled]=\"admissionData.selectedStopDetail !== item\" />\r\n <div class=\"data_value\">{{ getOrdinalSuffix(i + 1) }} Term (\u20B9 {{term.termAmount}})</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\" *ngIf=\"subscriptionsData.length > 0\">\r\n <div class=\"title\">Subscriptions</div>\r\n <div class=\"list_all_subscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of subscriptionsData\">\r\n <div class=\"top_1\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <mat-checkbox [checked]=\"isSubscriptionSelected(item)\"\r\n (change)=\"onSubscriptionItemChange($event, item)\"></mat-checkbox>\r\n <div class=\"subscription_title\">\r\n {{item.subscriptionTitle}}\r\n </div>\r\n </div>\r\n <div class=\"subscription_types\" style=\"width:85%;margin:auto\">\r\n <ng-container *ngFor=\"let subV of item.newPricingList;let i = index\">\r\n <div class=\"single_subscrption d-flex gap-2 mt-2\">\r\n <div class=\"single_title d-flex gap-3 align-items-center\" style=\"width:25%\">\r\n <input type=\"radio\" [checked]=\"subV.selecteStatus\"\r\n (change)=\"toggleSubscriptionSelection(item.newPricingList, i, item)\"\r\n [disabled]=\"!disableSubscriptionSelection(item)\">\r\n <div class=\"data_value\">{{subV.name | titlecase}}</div>\r\n </div>\r\n <div class=\"single_value\">\r\n {{subV.amount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\" *ngIf=\"listAllKits.length > 0\">\r\n <div class=\"title\">Student Kit</div>\r\n <div class=\"list_all_subscriptions mt-2 d-flex gap-2 flex-wrap\">\r\n <ng-container *ngFor=\"let item of listAllKits;let i = index\">\r\n <div class=\"single_kit\">\r\n <div class=\"top_layer d-flex justify-content-between align-items-center\">\r\n <div class=\"selection\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.selected\" class=\"cursor-pointer\"\r\n (change)=\"addRemoveKit(item,$event)\">\r\n </div>\r\n <div class=\"amount_section\">\r\n <div class=\"original_amount\" *ngIf=\"item.discountedAmount === 0\">\u20B9 {{item.amount}}</div>\r\n <div class=\"discounted_amount\" *ngIf=\"item.discountedAmount != 0\">\r\n \u20B9\r\n <span class=\"strikethrough\">{{item.originalAmount}}</span> &nbsp;\r\n <span style=\"font-family:var(--primary-semi-bold-font-family)\">{{item.discountedAmount}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"kit_bottom_layer\">\r\n <div class=\"image_section d-flex justify-content-center align-items-center\">\r\n <div class=\"img_sec\" *ngIf=\"item.img != null\"><img [src]=\"item.img\" alt=\"\"></div>\r\n <div class=\"img_sec d-flex justify-content-center align-items-center\" *ngIf=\"item.img === null\">\r\n {{item.name.split('')[0] | uppercase}}\r\n </div>\r\n </div>\r\n <div class=\"mt-2 kit_title text-center\">\r\n {{item.name}}\r\n </div>\r\n <div class=\"kit_description text-center\" style=\"margin-top:4px\">\r\n {{item.description}}\r\n </div>\r\n </div>\r\n <div class=\"kit_footer_layer mt-2\" *ngIf=\"item.selected\">\r\n <div class=\"d-flex align-items-center justify-content-center gap-3 paying_options\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.kitPaymentSelected\"\r\n (ngModelChange)=\"changePaymentStatus(item)\">\r\n <mat-radio-button [value]=\"true\"><span style=\"font-family: var(--primary-font-family);font-size: 13px;\">Pay Now</span></mat-radio-button>\r\n <mat-radio-button [value]=\"false\"><span style=\"font-family: var(--primary-font-family);font-size: 13px;\">Pay Later</span></mat-radio-button>\r\n </mat-radio-group> \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right_payment_details h-100\">\r\n <div class=\"total_payment_details h-100 w-100 p-3\">\r\n <div class=\"mt-2 calculation_table\">\r\n <div class=\"calculation_single_part\">\r\n <div class=\"total_title\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Total Academic Fee Breakdown\r\n </div>\r\n <ng-container *ngFor=\"let item of feeStructure.feeConfig\">\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"margin-top: 8px;\">\r\n <div class=\"fee_title\">{{item.feeHead ? item.feeHead.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\" *ngIf=\"item.termsList.length === 0 || item.selectedTermValue != 'TERM'\">\r\n <span [ngClass]=\"(item?.concession != null && item?.concession?.length != 0) ? 'strikethrough' : ''\">\r\n \u20B9 {{item.amount}}\r\n </span>\r\n <span\r\n *ngIf=\"item.concession != null && item?.concession.length != 0\">({{item.appliedConcessionAmount}})</span>\r\n </div>\r\n </div>\r\n <div class=\"value fw-500\" *ngIf=\"item.termsList.length >= 0\">\r\n <div class=\"selecte_terms\">\r\n <ng-container *ngFor=\"let data of item.termsList\">\r\n <div class=\"selected_single_term d-flex align-items-center justify-content-between\" *ngIf=\"data.selected\">\r\n <div class=\"key\">\r\n Term {{data.termNumber}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{data.termAmount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"admissionData.selectedStopDetail != null\">\r\n <div class=\"total_title\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Transport Fee\r\n </div>\r\n <ng-container>\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"margin-top: 8px;\">\r\n <div class=\"fee_title\">{{admissionData.selectedStopDetail?.charges?.vehicleType ?\r\n admissionData.selectedStopDetail?.charges?.vehicleType?.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\"\r\n *ngIf=\"admissionData.selectedStopDetail?.charges?.termPaymentList?.length === 0 || admissionData.selectedStopDetail?.charges?.selectedTermValue != 'TERM'\">\r\n \u20B9\r\n {{admissionData.selectedStopDetail?.charges?.totalAmount}}\r\n </div>\r\n </div>\r\n <div class=\"value fw-500\" *ngIf=\"admissionData.selectedStopDetail?.charges?.termPaymentList?.length >= 0\">\r\n <div class=\"selecte_terms\">\r\n <ng-container *ngFor=\"let data of admissionData.selectedStopDetail?.charges?.termPaymentList\">\r\n <div class=\"selected_single_term d-flex align-items-center justify-content-between\"\r\n *ngIf=\"data.selected\">\r\n <div class=\"key\">\r\n Term {{data.termNumber}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{data.termAmount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"hasActiveSubscriptions()\">\r\n <div class=\"new_title mt-2\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Subscriptions\r\n </div>\r\n <div class=\"listing_selected_suscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of admissionData.subscriptionPlans\">\r\n <div class=\"fee_title\">{{item.subName | titlecase}}</div>\r\n <ng-container>\r\n <div class=\"single_payment_calculation d-flex justify-content-between align-items-center mb-1\">\r\n <div class=\"key\">\r\n {{item.frequency | titlecase}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{item.pricing[item.frequency]}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"hasActiveKits()\">\r\n <div class=\"new_title mt-2\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Student Kits\r\n </div>\r\n <div class=\"listing_selected_suscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of admissionData.selectedComboKits\">\r\n <ng-container *ngIf=\"item?.kitPaymentSelected\">\r\n <div class=\"single_payment_calculation d-flex justify-content-between align-items-center mb-1\">\r\n <div class=\"fee_title\">\r\n {{item.name | titlecase}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{item.amount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer_section total_container\">\r\n <div class=\"footer_title\">Grand Total Fee</div>\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n \u20B9 {{feeStructure?.totalFee}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".left_payment_details{width:55%;overflow-y:scroll}.right_payment_details{width:45%;padding:10px}.sec_title{font-size:16px;font-family:var(--primary-semi-bold-font-family);font-weight:500;color:#000}.single_fee_config{background-color:#f1f7ff99;padding:10px;box-shadow:0 0 2px #d3d3d3;border-radius:8px;margin-bottom:10px}.fee_title{font-size:14.5px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.fee_amount,.fee_amount span{font-size:14.5px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500}.total_payment_details{background:#faf5f199;box-shadow:0 0 2px #d3d3d3;border-radius:8px}.total_title{font-size:20px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500;line-height:18px}.calculation_table{height:90%;overflow-y:scroll}.footer_section{height:10%;display:flex;justify-content:space-between;align-items:center}.footer_title{font-size:18px;font-family:var(--primary-font-family);font-weight:500;color:#000}.total_container{background-color:#fff;padding:10px;font-size:20px;font-weight:500;font-family:var(--primary-semi-bold-font-family);color:#000}.calculation_single_part{background-color:#fff;padding:10px;border-radius:8px;margin-bottom:10px}.selected_single_term{margin-bottom:10px}.key{font-weight:500;font-size:14px;font-family:var(--primary-font-family);color:#3a3838;margin-left:30px}.fw-500{font-weight:500;font-family:var(--primary-semi-bold-font-family);font-size:16px;margin:0!important}.check_data{width:90%;margin:auto}.singleData{margin-bottom:10px}.singleData input{width:16px;height:16px}.singleData .data_value{font-size:14px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.title{font-family:var(--primary-semi-bold-font-family);font-weight:500;font-size:15px;color:#000}.subscription_title{font-family:var(--primary-font-family);font-weight:500;font-size:14px;color:#000}.single_value{font-size:16px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500}.single_title input{width:16px;height:16px}.data_value{font-size:14px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.top_1{background:#d2d4b999;padding:10px;box-shadow:0 0 2px #d3d3d3;border-radius:8px;margin-bottom:10px}.discounted_amount span,.original_amount{font-family:var(--primary-font-family);font-weight:500;font-size:13px}.img_sec{width:60px;height:60px;border-radius:50%;border:2px solid #0f9af1;font-size:18px;font-family:var(--primary-semi-bold-font-family);font-weight:500}.img_sec img{width:100%;height:100%;border-radius:50%}.selection input{width:16px;height:16px}.kit_title{font-size:14px;font-family:var(--primary-font-family);font-weight:500;color:#000}.kit_description{color:#434443;font-size:13px;font-family:var(--primary-font-family);font-weight:500}.paying_options label{font-size:14px;font-family:var(--primary-font-family);font-weight:500}.paying_options label input{width:16px;height:16px}.kit_bottom_layer{height:150px;overflow-y:scroll}.single_kit{background-color:#f2f2f9;padding:10px;border-radius:6px;width:32%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: i13.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i7$2.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i7$2.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8$2.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i9.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
3186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PaymentDetailsComponent, isStandalone: true, selector: "simpo-payment-details", inputs: { admissionData: "admissionData", subscriptionsData: "subscriptionsData", termPaymentList: "termPaymentList" }, ngImport: i0, template: "<!-- <section class=\"main-section\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <div class=\"heading left-side\">\r\n Admission Fee\r\n </div>\r\n\r\n <div class=\"left-side mt-10\" *ngFor=\"let configList of Object.keys(feeConfig)\">\r\n <div class=\"heading mb-20\">{{configList}}</div>\r\n\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let config of feeConfig[configList]\">\r\n <p class=\"sub-heading mb-0\">{{config.feeHead}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{config.amount}}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"left-side mt-10\" *ngFor=\"let type of Object.keys(subscriptions)\">\r\n <p class=\"heading\">{{type}}</p>\r\n\r\n <table class=\"subscription-table w-100\">\r\n <thead>\r\n <th>Subscription Title</th>\r\n <th>Monthly</th>\r\n <th>Quaterly</th>\r\n <th>Yearly</th>\r\n <th>On Demand</th>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of subscriptions[type];let i = index\">\r\n <td>{{data.subName}}</td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['QUARTERLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'MONTHLY'\" (click)=\"toggleSelection(data, 'MONTHLY')\" [checked]=\"data.selectedOption === 'MONTHLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexRadioDefault2\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['MONTHLY']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['QUARTERLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['MONTHLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'QUARTERLY'\" (click)=\"toggleSelection(data, 'QUARTERLY')\" [checked]=\"data.selectedOption === 'QUARTERLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['QUARTERLY']}}\r\n </label>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['MONTHLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['ANNUALLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'ANNUALLY'\" (click)=\"toggleSelection(data, 'ANNUALLY')\" [checked]=\"data.selectedOption === 'ANNUALLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['ANNUALLY']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['ANNUALLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['ONDEMAND']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'ONDEMAND'\" (click)=\"toggleSelection(data, 'ONDEMAND')\" [checked]=\"data.selectedOption === 'ONDEMAND'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['ONDEMAND']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['ONDEMAND']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"left-side mt-10\">\r\n <p class=\"heading\">Payment Plan</p>\r\n\r\n <div class=\"d-flex g-2\">\r\n <div class=\"form-check\" (click)=\"changeAnnualPaymentTerm('ANNUALLY')\">\r\n <input class=\"form-check-input\" type=\"radio\" value=\"\" name=\"payment-plan\" id=\"flexCheckChecked\" [checked]=\"admissionData.paymentPlanType === 'ANNUALLY'\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n Annually\r\n </label>\r\n </div>\r\n <div class=\"form-check\" (click)=\"changeAnnualPaymentTerm('TERM')\">\r\n <input class=\"form-check-input\" type=\"radio\" value=\"\" name=\"payment-plan\" id=\"flexCheckChecked\" [checked]=\"admissionData.paymentPlanType === 'TERM'\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n Term\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"admission\" *ngIf=\"admissionData.paymentPlanType === 'TERM'\">\r\n <mat-form-field class=\"input-text\" appearance=\"outline\">\r\n <mat-select class=\"inputStyle\" placeholder=\"--Select--\" multiple=\"true\" [(ngModel)]=\"feeStructure.termPaymentList\" (ngModelChange)=\"calculateTotalAmount()\">\r\n <mat-option *ngFor=\"let term of termPaymentList\" [value]=\"term\">term {{term.termNumber}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 right-side\">\r\n <div class=\"heading mb-20\">\r\n Fee Calculation\r\n </div>\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let config of feeStructure.feeConfigs\">\r\n <p class=\"sub-heading mb-0\">{{config.feeHead}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{config.amount}}</p>\r\n </div>\r\n\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let subscripition of feeStructure.subscriptionPlans\">\r\n <p class=\"sub-heading mb-0\">{{subscripition.subName}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{subscripition.pricing[subscripition.frequency]}}</p>\r\n </div>\r\n\r\n <div class=\"total-fee\">\r\n <div class=\"heading mb-5\">\r\n Total Fee\r\n </div>\r\n <div class=\"amount\">\r\n \u20B9 {{feeStructure.totalAmount}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section> -->\r\n\r\n\r\n<section class=\"main_payment_details_section h-100 w-100 p-2 d-flex justify-content-between\">\r\n <div class=\"left_payment_details h-100 p-2\">\r\n <div class=\"fees_section\">\r\n <div class=\"sec_title\">\r\n Fees\r\n </div>\r\n <div class=\"mt-2 all_fee_configs\">\r\n <ng-container *ngFor=\"let item of feeStructure?.feeConfig\">\r\n <div class=\"single_fee_config p-3\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"fee_title\">{{item.feeHead ? item.feeHead.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\">\u20B9 {{item.amount}}</div>\r\n </div>\r\n <div *ngIf=\"item.termsList.length > 0\">\r\n <div class=\"change_selection\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.selectedTermValue\"\r\n name=\"termOption_{{ item.feeHead.id}}\"\r\n (change)=\"changeTermValue(item)\">\r\n <mat-radio-button value=\"SINGLE\"\r\n style=\"font-family: var(--primary-font-family);font-size:13px\">Single</mat-radio-button>\r\n <mat-radio-button value=\"TERM\"\r\n style=\"font-family: var(--primary-font-family);font-size:13px\">Term</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <div class=\"termCount\" *ngIf=\"item.selectedTermValue === 'TERM'\">\r\n <div class=\"check_data\">\r\n <ng-container *ngFor=\"let term of item.termsList;let i = index\">\r\n <div class=\"singleData d-flex gap-3 align-items-end\">\r\n <input type=\"checkbox\" (change)=\"addTerms($event,term)\" [checked]=\"term.selected\">\r\n <div class=\"data_value\">{{getOrdinalSuffix(i+1)}} Term (\u20B9 {{term?.termAmount}})</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"title\">Transport Fee</div>\r\n <div class=\"selecting_types d-flex align-items-center gap-2 justify-content-end\">\r\n <div style=\"width:30%\">\r\n <mat-form-field appearance=\"outline\" class=\"input_card mt-2 w-100\" style=\"height:40px\">\r\n <input type=\"text\" matInput placeholder=\"Select Stop\" [matAutocomplete]=\"autoGrade\"\r\n [(ngModel)]=\"stopSearchText\" (input)=\"filterStops()\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n <mat-autocomplete #autoGrade=\"matAutocomplete\" (optionSelected)=\"onStopSelection($event)\">\r\n <mat-option *ngFor=\"let stop of filteredStopsList\" [value]=\"stop.stopName\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n {{ stop.stopName | titlecase }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n <div style=\"width:30%\">\r\n <mat-form-field appearance=\"outline\" class=\"input_card mt-2 w-100\" style=\"height:40px\">\r\n <input type=\"text\" matInput placeholder=\"Select Vehicle Type\" [matAutocomplete]=\"autoGrade1\"\r\n [(ngModel)]=\"vehicleTypeSearchText\" (input)=\"filtereVehicleTypes()\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n <mat-autocomplete #autoGrade1=\"matAutocomplete\" (optionSelected)=\"onVehicleTypeSelection($event)\">\r\n <mat-option *ngFor=\"let stop of filteredVehicleTypesList\" [value]=\"stop.vehicleType\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n {{ stop.vehicleType | titlecase }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"list_all_subscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of routeValues\">\r\n <div class=\"single_fee_config p-3\">\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <mat-checkbox [checked]=\"admissionData.selectedStopDetail === item\"\r\n (change)=\"onCheckboxChange(item, $event)\"></mat-checkbox>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"width:92%\">\r\n <div class=\"fee_title\">\r\n {{ item.transport.route ? item.transport.route.name : 'N/A' }}\r\n <span>(<span style=\"font-size:12px;font-family: var(--primary-font-family);\">Pickup Time :</span>\r\n <span\r\n style=\"font-size:12px;font-family: var(--primary-semi-bold-font-family);\">{{getPickupTime(item.transport.busRouteStopTimings)\r\n | date:'h:mm a'}}</span>\r\n -\r\n <span style=\"font-size:12px;font-family: var(--primary-font-family);\">Drop Time :</span>\r\n <span\r\n style=\"font-size:12px;font-family: var(--primary-semi-bold-font-family);\">{{getDroptime(item.transport.busRouteStopTimings)\r\n | date:'h:mm a'}}</span>\r\n )</span>\r\n </div>\r\n <div class=\"fee_amount\">\u20B9 {{ item.charges.totalAmount }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"item?.charges.termPaymentList.length > 0\">\r\n <div class=\"change_selection\" style=\"width:90%;margin:0 auto\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.charges.selectedTermValue\"\r\n (change)=\"changeTransportTermValue(item)\" [disabled]=\"admissionData.selectedStopDetail !== item\">\r\n <mat-radio-button value=\"SINGLE\"\r\n style=\"font-family: var(--primary-font-family); font-size: 13px\">Single</mat-radio-button>\r\n <mat-radio-button value=\"TERM\"\r\n style=\"font-family: var(--primary-font-family); font-size: 13px\">Term</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"termCount\" *ngIf=\"item.charges.selectedTermValue === 'TERM'\">\r\n <div class=\"check_data\" style=\"width:75%;margin:0 auto\">\r\n <ng-container *ngFor=\"let term of item.charges.termPaymentList; let i = index\">\r\n <div class=\"singleData d-flex gap-3 align-items-end\">\r\n <input type=\"checkbox\" (change)=\"addSingleStop($event, term)\"\r\n [disabled]=\"admissionData.selectedStopDetail !== item\" />\r\n <div class=\"data_value\">{{ getOrdinalSuffix(i + 1) }} Term (\u20B9 {{term.termAmount}})</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\" *ngIf=\"subscriptionsData.length > 0\">\r\n <div class=\"title\">Subscriptions</div>\r\n <div class=\"list_all_subscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of subscriptionsData\">\r\n <div class=\"top_1\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <mat-checkbox [checked]=\"isSubscriptionSelected(item)\"\r\n (change)=\"onSubscriptionItemChange($event, item)\"></mat-checkbox>\r\n <div class=\"subscription_title\">\r\n {{item.subscriptionTitle}}\r\n </div>\r\n </div>\r\n <div class=\"subscription_types\" style=\"width:85%;margin:auto\">\r\n <ng-container *ngFor=\"let subV of item.newPricingList;let i = index\">\r\n <div class=\"single_subscrption d-flex gap-2 mt-2\">\r\n <div class=\"single_title d-flex gap-3 align-items-center\" style=\"width:25%\">\r\n <input type=\"radio\" [checked]=\"subV.selecteStatus\"\r\n (change)=\"toggleSubscriptionSelection(item.newPricingList, i, item)\"\r\n [disabled]=\"!disableSubscriptionSelection(item)\">\r\n <div class=\"data_value\">{{subV.name | titlecase}}</div>\r\n </div>\r\n <div class=\"single_value\">\r\n {{subV.amount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\" *ngIf=\"listAllKits.length > 0\">\r\n <div class=\"title\">Student Kit</div>\r\n <div class=\"list_all_subscriptions mt-2 d-flex gap-2 flex-wrap\">\r\n <ng-container *ngFor=\"let item of listAllKits;let i = index\">\r\n <div class=\"single_kit\">\r\n <div class=\"top_layer d-flex justify-content-between align-items-center\">\r\n <div class=\"selection\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.selected\" class=\"cursor-pointer\"\r\n (change)=\"addRemoveKit(item,$event)\">\r\n </div>\r\n <div class=\"amount_section\">\r\n <div class=\"original_amount\" *ngIf=\"item.discountedAmount === 0\">\u20B9 {{item.amount}}</div>\r\n <div class=\"discounted_amount\" *ngIf=\"item.discountedAmount != 0\">\r\n \u20B9\r\n <span class=\"strikethrough\">{{item.originalAmount}}</span> &nbsp;\r\n <span style=\"font-family:var(--primary-semi-bold-font-family)\">{{item.discountedAmount}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"kit_bottom_layer\">\r\n <div class=\"image_section d-flex justify-content-center align-items-center\">\r\n <div class=\"img_sec\" *ngIf=\"item.img != null\"><img [src]=\"item.img\" alt=\"\"></div>\r\n <div class=\"img_sec d-flex justify-content-center align-items-center\" *ngIf=\"item.img === null\">\r\n {{item.name.split('')[0] | uppercase}}\r\n </div>\r\n </div>\r\n <div class=\"mt-2 kit_title text-center\">\r\n {{item.name}}\r\n </div>\r\n <div class=\"kit_description text-center\" style=\"margin-top:4px\">\r\n {{item.description}}\r\n </div>\r\n </div>\r\n <div class=\"kit_footer_layer mt-2\" *ngIf=\"item.selected\">\r\n <div class=\"d-flex align-items-center justify-content-center gap-3 paying_options\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.kitPaymentSelected\"\r\n (ngModelChange)=\"changePaymentStatus(item)\">\r\n <mat-radio-button [value]=\"true\"><span style=\"font-family: var(--primary-font-family);font-size: 13px;\">Pay Now</span></mat-radio-button>\r\n <mat-radio-button [value]=\"false\"><span style=\"font-family: var(--primary-font-family);font-size: 13px;\">Pay Later</span></mat-radio-button>\r\n </mat-radio-group> \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right_payment_details h-100\">\r\n <div class=\"total_payment_details h-100 w-100 p-3\">\r\n <div class=\"mt-2 calculation_table\">\r\n <div class=\"calculation_single_part\">\r\n <div class=\"total_title\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Total Academic Fee Breakdown\r\n </div>\r\n <ng-container *ngFor=\"let item of feeStructure.feeConfig\">\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"margin-top: 8px;\">\r\n <div class=\"fee_title\">{{item.feeHead ? item.feeHead.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\" *ngIf=\"item.termsList.length === 0 || item.selectedTermValue != 'TERM'\">\r\n <span [ngClass]=\"(item?.concession != null && item?.concession?.length != 0) ? 'strikethrough' : ''\">\r\n \u20B9 {{item.amount}}\r\n </span>\r\n <span\r\n *ngIf=\"item.concession != null && item?.concession.length != 0\">({{item.appliedConcessionAmount}})</span>\r\n </div>\r\n </div>\r\n <div class=\"value fw-500\" *ngIf=\"item.termsList.length >= 0\">\r\n <div class=\"selecte_terms\">\r\n <ng-container *ngFor=\"let data of item.termsList\">\r\n <div class=\"selected_single_term d-flex align-items-center justify-content-between\" *ngIf=\"data.selected\">\r\n <div class=\"key\">\r\n Term {{data.termNumber}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{data.termAmount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"admissionData.selectedStopDetail != null && admissionData?.selectedStopDetail?.availability\">\r\n <div class=\"total_title\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Transport Fee\r\n </div>\r\n <ng-container>\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"margin-top: 8px;\">\r\n <div class=\"fee_title\">{{admissionData.selectedStopDetail?.charges?.vehicleType ?\r\n admissionData.selectedStopDetail?.charges?.vehicleType?.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\"\r\n *ngIf=\"admissionData.selectedStopDetail?.charges?.termPaymentList?.length === 0 || admissionData.selectedStopDetail?.charges?.selectedTermValue != 'TERM'\">\r\n \u20B9\r\n {{admissionData.selectedStopDetail?.charges?.totalAmount}}\r\n </div>\r\n </div>\r\n <div class=\"value fw-500\" *ngIf=\"admissionData.selectedStopDetail?.charges?.termPaymentList?.length >= 0\">\r\n <div class=\"selecte_terms\">\r\n <ng-container *ngFor=\"let data of admissionData.selectedStopDetail?.charges?.termPaymentList\">\r\n <div class=\"selected_single_term d-flex align-items-center justify-content-between\"\r\n *ngIf=\"data.selected\">\r\n <div class=\"key\">\r\n Term {{data.termNumber}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{data.termAmount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"hasActiveSubscriptions()\">\r\n <div class=\"new_title mt-2\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Subscriptions\r\n </div>\r\n <div class=\"listing_selected_suscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of admissionData.subscriptionPlans\">\r\n <div class=\"fee_title\">{{item.subName | titlecase}}</div>\r\n <ng-container>\r\n <div class=\"single_payment_calculation d-flex justify-content-between align-items-center mb-1\">\r\n <div class=\"key\">\r\n {{item.frequency | titlecase}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{item.pricing[item.frequency]}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"hasActiveKits()\">\r\n <div class=\"new_title mt-2\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Student Kits\r\n </div>\r\n <div class=\"listing_selected_suscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of admissionData.selectedComboKits\">\r\n <ng-container *ngIf=\"item?.kitPaymentSelected\">\r\n <div class=\"single_payment_calculation d-flex justify-content-between align-items-center mb-1\">\r\n <div class=\"fee_title\">\r\n {{item.name | titlecase}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{item.amount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer_section total_container\">\r\n <div class=\"footer_title\">Grand Total Fee</div>\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n \u20B9 {{feeStructure?.totalFee}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".left_payment_details{width:55%;overflow-y:scroll}.right_payment_details{width:45%;padding:10px}.sec_title{font-size:16px;font-family:var(--primary-semi-bold-font-family);font-weight:500;color:#000}.single_fee_config{background-color:#f1f7ff99;padding:10px;box-shadow:0 0 2px #d3d3d3;border-radius:8px;margin-bottom:10px}.fee_title{font-size:14.5px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.fee_amount,.fee_amount span{font-size:14.5px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500}.total_payment_details{background:#faf5f199;box-shadow:0 0 2px #d3d3d3;border-radius:8px}.total_title{font-size:20px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500;line-height:18px}.calculation_table{height:90%;overflow-y:scroll}.footer_section{height:10%;display:flex;justify-content:space-between;align-items:center}.footer_title{font-size:18px;font-family:var(--primary-font-family);font-weight:500;color:#000}.total_container{background-color:#fff;padding:10px;font-size:20px;font-weight:500;font-family:var(--primary-semi-bold-font-family);color:#000}.calculation_single_part{background-color:#fff;padding:10px;border-radius:8px;margin-bottom:10px}.selected_single_term{margin-bottom:10px}.key{font-weight:500;font-size:14px;font-family:var(--primary-font-family);color:#3a3838;margin-left:30px}.fw-500{font-weight:500;font-family:var(--primary-semi-bold-font-family);font-size:16px;margin:0!important}.check_data{width:90%;margin:auto}.singleData{margin-bottom:10px}.singleData input{width:16px;height:16px}.singleData .data_value{font-size:14px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.title{font-family:var(--primary-semi-bold-font-family);font-weight:500;font-size:15px;color:#000}.subscription_title{font-family:var(--primary-font-family);font-weight:500;font-size:14px;color:#000}.single_value{font-size:16px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500}.single_title input{width:16px;height:16px}.data_value{font-size:14px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.top_1{background:#d2d4b999;padding:10px;box-shadow:0 0 2px #d3d3d3;border-radius:8px;margin-bottom:10px}.discounted_amount span,.original_amount{font-family:var(--primary-font-family);font-weight:500;font-size:13px}.img_sec{width:60px;height:60px;border-radius:50%;border:2px solid #0f9af1;font-size:18px;font-family:var(--primary-semi-bold-font-family);font-weight:500}.img_sec img{width:100%;height:100%;border-radius:50%}.selection input{width:16px;height:16px}.kit_title{font-size:14px;font-family:var(--primary-font-family);font-weight:500;color:#000}.kit_description{color:#434443;font-size:13px;font-family:var(--primary-font-family);font-weight:500}.paying_options label{font-size:14px;font-family:var(--primary-font-family);font-weight:500}.paying_options label input{width:16px;height:16px}.kit_bottom_layer{height:150px;overflow-y:scroll}.single_kit{background-color:#f2f2f9;padding:10px;border-radius:6px;width:32%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: i13.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i7$2.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i7$2.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8$2.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i9.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
3122
3187
  }
3123
3188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PaymentDetailsComponent, decorators: [{
3124
3189
  type: Component,
@@ -3133,7 +3198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
3133
3198
  MatDialogModule,
3134
3199
  MatAutocompleteModule,
3135
3200
  MatInputModule
3136
- ], template: "<!-- <section class=\"main-section\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <div class=\"heading left-side\">\r\n Admission Fee\r\n </div>\r\n\r\n <div class=\"left-side mt-10\" *ngFor=\"let configList of Object.keys(feeConfig)\">\r\n <div class=\"heading mb-20\">{{configList}}</div>\r\n\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let config of feeConfig[configList]\">\r\n <p class=\"sub-heading mb-0\">{{config.feeHead}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{config.amount}}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"left-side mt-10\" *ngFor=\"let type of Object.keys(subscriptions)\">\r\n <p class=\"heading\">{{type}}</p>\r\n\r\n <table class=\"subscription-table w-100\">\r\n <thead>\r\n <th>Subscription Title</th>\r\n <th>Monthly</th>\r\n <th>Quaterly</th>\r\n <th>Yearly</th>\r\n <th>On Demand</th>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of subscriptions[type];let i = index\">\r\n <td>{{data.subName}}</td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['QUARTERLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'MONTHLY'\" (click)=\"toggleSelection(data, 'MONTHLY')\" [checked]=\"data.selectedOption === 'MONTHLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexRadioDefault2\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['MONTHLY']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['QUARTERLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['MONTHLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'QUARTERLY'\" (click)=\"toggleSelection(data, 'QUARTERLY')\" [checked]=\"data.selectedOption === 'QUARTERLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['QUARTERLY']}}\r\n </label>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['MONTHLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['ANNUALLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'ANNUALLY'\" (click)=\"toggleSelection(data, 'ANNUALLY')\" [checked]=\"data.selectedOption === 'ANNUALLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['ANNUALLY']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['ANNUALLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['ONDEMAND']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'ONDEMAND'\" (click)=\"toggleSelection(data, 'ONDEMAND')\" [checked]=\"data.selectedOption === 'ONDEMAND'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['ONDEMAND']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['ONDEMAND']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"left-side mt-10\">\r\n <p class=\"heading\">Payment Plan</p>\r\n\r\n <div class=\"d-flex g-2\">\r\n <div class=\"form-check\" (click)=\"changeAnnualPaymentTerm('ANNUALLY')\">\r\n <input class=\"form-check-input\" type=\"radio\" value=\"\" name=\"payment-plan\" id=\"flexCheckChecked\" [checked]=\"admissionData.paymentPlanType === 'ANNUALLY'\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n Annually\r\n </label>\r\n </div>\r\n <div class=\"form-check\" (click)=\"changeAnnualPaymentTerm('TERM')\">\r\n <input class=\"form-check-input\" type=\"radio\" value=\"\" name=\"payment-plan\" id=\"flexCheckChecked\" [checked]=\"admissionData.paymentPlanType === 'TERM'\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n Term\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"admission\" *ngIf=\"admissionData.paymentPlanType === 'TERM'\">\r\n <mat-form-field class=\"input-text\" appearance=\"outline\">\r\n <mat-select class=\"inputStyle\" placeholder=\"--Select--\" multiple=\"true\" [(ngModel)]=\"feeStructure.termPaymentList\" (ngModelChange)=\"calculateTotalAmount()\">\r\n <mat-option *ngFor=\"let term of termPaymentList\" [value]=\"term\">term {{term.termNumber}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 right-side\">\r\n <div class=\"heading mb-20\">\r\n Fee Calculation\r\n </div>\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let config of feeStructure.feeConfigs\">\r\n <p class=\"sub-heading mb-0\">{{config.feeHead}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{config.amount}}</p>\r\n </div>\r\n\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let subscripition of feeStructure.subscriptionPlans\">\r\n <p class=\"sub-heading mb-0\">{{subscripition.subName}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{subscripition.pricing[subscripition.frequency]}}</p>\r\n </div>\r\n\r\n <div class=\"total-fee\">\r\n <div class=\"heading mb-5\">\r\n Total Fee\r\n </div>\r\n <div class=\"amount\">\r\n \u20B9 {{feeStructure.totalAmount}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section> -->\r\n\r\n\r\n<section class=\"main_payment_details_section h-100 w-100 p-2 d-flex justify-content-between\">\r\n <div class=\"left_payment_details h-100 p-2\">\r\n <div class=\"fees_section\">\r\n <div class=\"sec_title\">\r\n Fees\r\n </div>\r\n <div class=\"mt-2 all_fee_configs\">\r\n <ng-container *ngFor=\"let item of feeStructure?.feeConfig\">\r\n <div class=\"single_fee_config p-3\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"fee_title\">{{item.feeHead ? item.feeHead.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\">\u20B9 {{item.amount}}</div>\r\n </div>\r\n <div *ngIf=\"item.termsList.length > 0\">\r\n <div class=\"change_selection\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.selectedTermValue\"\r\n name=\"termOption_{{ item.feeHead.id}}\"\r\n (change)=\"changeTermValue(item)\">\r\n <mat-radio-button value=\"SINGLE\"\r\n style=\"font-family: var(--primary-font-family);font-size:13px\">Single</mat-radio-button>\r\n <mat-radio-button value=\"TERM\"\r\n style=\"font-family: var(--primary-font-family);font-size:13px\">Term</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <div class=\"termCount\" *ngIf=\"item.selectedTermValue === 'TERM'\">\r\n <div class=\"check_data\">\r\n <ng-container *ngFor=\"let term of item.termsList;let i = index\">\r\n <div class=\"singleData d-flex gap-3 align-items-end\">\r\n <input type=\"checkbox\" (change)=\"addTerms($event,term)\" [checked]=\"term.selected\">\r\n <div class=\"data_value\">{{getOrdinalSuffix(i+1)}} Term (\u20B9 {{term?.termAmount}})</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"title\">Transport Fee</div>\r\n <div class=\"selecting_types d-flex align-items-center gap-2 justify-content-end\">\r\n <div style=\"width:30%\">\r\n <mat-form-field appearance=\"outline\" class=\"input_card mt-2 w-100\" style=\"height:40px\">\r\n <input type=\"text\" matInput placeholder=\"Select Stop\" [matAutocomplete]=\"autoGrade\"\r\n [(ngModel)]=\"stopSearchText\" (input)=\"filterStops()\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n <mat-autocomplete #autoGrade=\"matAutocomplete\" (optionSelected)=\"onStopSelection($event)\">\r\n <mat-option *ngFor=\"let stop of filteredStopsList\" [value]=\"stop.stopName\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n {{ stop.stopName | titlecase }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n <div style=\"width:30%\">\r\n <mat-form-field appearance=\"outline\" class=\"input_card mt-2 w-100\" style=\"height:40px\">\r\n <input type=\"text\" matInput placeholder=\"Select Vehicle Type\" [matAutocomplete]=\"autoGrade1\"\r\n [(ngModel)]=\"vehicleTypeSearchText\" (input)=\"filtereVehicleTypes()\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n <mat-autocomplete #autoGrade1=\"matAutocomplete\" (optionSelected)=\"onVehicleTypeSelection($event)\">\r\n <mat-option *ngFor=\"let stop of filteredVehicleTypesList\" [value]=\"stop.vehicleType\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n {{ stop.vehicleType | titlecase }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"list_all_subscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of routeValues\">\r\n <div class=\"single_fee_config p-3\">\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <mat-checkbox [checked]=\"admissionData.selectedStopDetail === item\"\r\n (change)=\"onCheckboxChange(item, $event)\"></mat-checkbox>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"width:92%\">\r\n <div class=\"fee_title\">\r\n {{ item.transport.route ? item.transport.route.name : 'N/A' }}\r\n <span>(<span style=\"font-size:12px;font-family: var(--primary-font-family);\">Pickup Time :</span>\r\n <span\r\n style=\"font-size:12px;font-family: var(--primary-semi-bold-font-family);\">{{getPickupTime(item.transport.busRouteStopTimings)\r\n | date:'h:mm a'}}</span>\r\n -\r\n <span style=\"font-size:12px;font-family: var(--primary-font-family);\">Drop Time :</span>\r\n <span\r\n style=\"font-size:12px;font-family: var(--primary-semi-bold-font-family);\">{{getDroptime(item.transport.busRouteStopTimings)\r\n | date:'h:mm a'}}</span>\r\n )</span>\r\n </div>\r\n <div class=\"fee_amount\">\u20B9 {{ item.charges.totalAmount }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"item?.charges.termPaymentList.length > 0\">\r\n <div class=\"change_selection\" style=\"width:90%;margin:0 auto\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.charges.selectedTermValue\"\r\n (change)=\"changeTransportTermValue(item)\" [disabled]=\"admissionData.selectedStopDetail !== item\">\r\n <mat-radio-button value=\"SINGLE\"\r\n style=\"font-family: var(--primary-font-family); font-size: 13px\">Single</mat-radio-button>\r\n <mat-radio-button value=\"TERM\"\r\n style=\"font-family: var(--primary-font-family); font-size: 13px\">Term</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"termCount\" *ngIf=\"item.charges.selectedTermValue === 'TERM'\">\r\n <div class=\"check_data\" style=\"width:75%;margin:0 auto\">\r\n <ng-container *ngFor=\"let term of item.charges.termPaymentList; let i = index\">\r\n <div class=\"singleData d-flex gap-3 align-items-end\">\r\n <input type=\"checkbox\" (change)=\"addSingleStop($event, term)\"\r\n [disabled]=\"admissionData.selectedStopDetail !== item\" />\r\n <div class=\"data_value\">{{ getOrdinalSuffix(i + 1) }} Term (\u20B9 {{term.termAmount}})</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\" *ngIf=\"subscriptionsData.length > 0\">\r\n <div class=\"title\">Subscriptions</div>\r\n <div class=\"list_all_subscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of subscriptionsData\">\r\n <div class=\"top_1\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <mat-checkbox [checked]=\"isSubscriptionSelected(item)\"\r\n (change)=\"onSubscriptionItemChange($event, item)\"></mat-checkbox>\r\n <div class=\"subscription_title\">\r\n {{item.subscriptionTitle}}\r\n </div>\r\n </div>\r\n <div class=\"subscription_types\" style=\"width:85%;margin:auto\">\r\n <ng-container *ngFor=\"let subV of item.newPricingList;let i = index\">\r\n <div class=\"single_subscrption d-flex gap-2 mt-2\">\r\n <div class=\"single_title d-flex gap-3 align-items-center\" style=\"width:25%\">\r\n <input type=\"radio\" [checked]=\"subV.selecteStatus\"\r\n (change)=\"toggleSubscriptionSelection(item.newPricingList, i, item)\"\r\n [disabled]=\"!disableSubscriptionSelection(item)\">\r\n <div class=\"data_value\">{{subV.name | titlecase}}</div>\r\n </div>\r\n <div class=\"single_value\">\r\n {{subV.amount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\" *ngIf=\"listAllKits.length > 0\">\r\n <div class=\"title\">Student Kit</div>\r\n <div class=\"list_all_subscriptions mt-2 d-flex gap-2 flex-wrap\">\r\n <ng-container *ngFor=\"let item of listAllKits;let i = index\">\r\n <div class=\"single_kit\">\r\n <div class=\"top_layer d-flex justify-content-between align-items-center\">\r\n <div class=\"selection\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.selected\" class=\"cursor-pointer\"\r\n (change)=\"addRemoveKit(item,$event)\">\r\n </div>\r\n <div class=\"amount_section\">\r\n <div class=\"original_amount\" *ngIf=\"item.discountedAmount === 0\">\u20B9 {{item.amount}}</div>\r\n <div class=\"discounted_amount\" *ngIf=\"item.discountedAmount != 0\">\r\n \u20B9\r\n <span class=\"strikethrough\">{{item.originalAmount}}</span> &nbsp;\r\n <span style=\"font-family:var(--primary-semi-bold-font-family)\">{{item.discountedAmount}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"kit_bottom_layer\">\r\n <div class=\"image_section d-flex justify-content-center align-items-center\">\r\n <div class=\"img_sec\" *ngIf=\"item.img != null\"><img [src]=\"item.img\" alt=\"\"></div>\r\n <div class=\"img_sec d-flex justify-content-center align-items-center\" *ngIf=\"item.img === null\">\r\n {{item.name.split('')[0] | uppercase}}\r\n </div>\r\n </div>\r\n <div class=\"mt-2 kit_title text-center\">\r\n {{item.name}}\r\n </div>\r\n <div class=\"kit_description text-center\" style=\"margin-top:4px\">\r\n {{item.description}}\r\n </div>\r\n </div>\r\n <div class=\"kit_footer_layer mt-2\" *ngIf=\"item.selected\">\r\n <div class=\"d-flex align-items-center justify-content-center gap-3 paying_options\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.kitPaymentSelected\"\r\n (ngModelChange)=\"changePaymentStatus(item)\">\r\n <mat-radio-button [value]=\"true\"><span style=\"font-family: var(--primary-font-family);font-size: 13px;\">Pay Now</span></mat-radio-button>\r\n <mat-radio-button [value]=\"false\"><span style=\"font-family: var(--primary-font-family);font-size: 13px;\">Pay Later</span></mat-radio-button>\r\n </mat-radio-group> \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right_payment_details h-100\">\r\n <div class=\"total_payment_details h-100 w-100 p-3\">\r\n <div class=\"mt-2 calculation_table\">\r\n <div class=\"calculation_single_part\">\r\n <div class=\"total_title\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Total Academic Fee Breakdown\r\n </div>\r\n <ng-container *ngFor=\"let item of feeStructure.feeConfig\">\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"margin-top: 8px;\">\r\n <div class=\"fee_title\">{{item.feeHead ? item.feeHead.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\" *ngIf=\"item.termsList.length === 0 || item.selectedTermValue != 'TERM'\">\r\n <span [ngClass]=\"(item?.concession != null && item?.concession?.length != 0) ? 'strikethrough' : ''\">\r\n \u20B9 {{item.amount}}\r\n </span>\r\n <span\r\n *ngIf=\"item.concession != null && item?.concession.length != 0\">({{item.appliedConcessionAmount}})</span>\r\n </div>\r\n </div>\r\n <div class=\"value fw-500\" *ngIf=\"item.termsList.length >= 0\">\r\n <div class=\"selecte_terms\">\r\n <ng-container *ngFor=\"let data of item.termsList\">\r\n <div class=\"selected_single_term d-flex align-items-center justify-content-between\" *ngIf=\"data.selected\">\r\n <div class=\"key\">\r\n Term {{data.termNumber}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{data.termAmount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"admissionData.selectedStopDetail != null\">\r\n <div class=\"total_title\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Transport Fee\r\n </div>\r\n <ng-container>\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"margin-top: 8px;\">\r\n <div class=\"fee_title\">{{admissionData.selectedStopDetail?.charges?.vehicleType ?\r\n admissionData.selectedStopDetail?.charges?.vehicleType?.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\"\r\n *ngIf=\"admissionData.selectedStopDetail?.charges?.termPaymentList?.length === 0 || admissionData.selectedStopDetail?.charges?.selectedTermValue != 'TERM'\">\r\n \u20B9\r\n {{admissionData.selectedStopDetail?.charges?.totalAmount}}\r\n </div>\r\n </div>\r\n <div class=\"value fw-500\" *ngIf=\"admissionData.selectedStopDetail?.charges?.termPaymentList?.length >= 0\">\r\n <div class=\"selecte_terms\">\r\n <ng-container *ngFor=\"let data of admissionData.selectedStopDetail?.charges?.termPaymentList\">\r\n <div class=\"selected_single_term d-flex align-items-center justify-content-between\"\r\n *ngIf=\"data.selected\">\r\n <div class=\"key\">\r\n Term {{data.termNumber}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{data.termAmount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"hasActiveSubscriptions()\">\r\n <div class=\"new_title mt-2\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Subscriptions\r\n </div>\r\n <div class=\"listing_selected_suscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of admissionData.subscriptionPlans\">\r\n <div class=\"fee_title\">{{item.subName | titlecase}}</div>\r\n <ng-container>\r\n <div class=\"single_payment_calculation d-flex justify-content-between align-items-center mb-1\">\r\n <div class=\"key\">\r\n {{item.frequency | titlecase}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{item.pricing[item.frequency]}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"hasActiveKits()\">\r\n <div class=\"new_title mt-2\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Student Kits\r\n </div>\r\n <div class=\"listing_selected_suscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of admissionData.selectedComboKits\">\r\n <ng-container *ngIf=\"item?.kitPaymentSelected\">\r\n <div class=\"single_payment_calculation d-flex justify-content-between align-items-center mb-1\">\r\n <div class=\"fee_title\">\r\n {{item.name | titlecase}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{item.amount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer_section total_container\">\r\n <div class=\"footer_title\">Grand Total Fee</div>\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n \u20B9 {{feeStructure?.totalFee}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".left_payment_details{width:55%;overflow-y:scroll}.right_payment_details{width:45%;padding:10px}.sec_title{font-size:16px;font-family:var(--primary-semi-bold-font-family);font-weight:500;color:#000}.single_fee_config{background-color:#f1f7ff99;padding:10px;box-shadow:0 0 2px #d3d3d3;border-radius:8px;margin-bottom:10px}.fee_title{font-size:14.5px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.fee_amount,.fee_amount span{font-size:14.5px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500}.total_payment_details{background:#faf5f199;box-shadow:0 0 2px #d3d3d3;border-radius:8px}.total_title{font-size:20px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500;line-height:18px}.calculation_table{height:90%;overflow-y:scroll}.footer_section{height:10%;display:flex;justify-content:space-between;align-items:center}.footer_title{font-size:18px;font-family:var(--primary-font-family);font-weight:500;color:#000}.total_container{background-color:#fff;padding:10px;font-size:20px;font-weight:500;font-family:var(--primary-semi-bold-font-family);color:#000}.calculation_single_part{background-color:#fff;padding:10px;border-radius:8px;margin-bottom:10px}.selected_single_term{margin-bottom:10px}.key{font-weight:500;font-size:14px;font-family:var(--primary-font-family);color:#3a3838;margin-left:30px}.fw-500{font-weight:500;font-family:var(--primary-semi-bold-font-family);font-size:16px;margin:0!important}.check_data{width:90%;margin:auto}.singleData{margin-bottom:10px}.singleData input{width:16px;height:16px}.singleData .data_value{font-size:14px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.title{font-family:var(--primary-semi-bold-font-family);font-weight:500;font-size:15px;color:#000}.subscription_title{font-family:var(--primary-font-family);font-weight:500;font-size:14px;color:#000}.single_value{font-size:16px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500}.single_title input{width:16px;height:16px}.data_value{font-size:14px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.top_1{background:#d2d4b999;padding:10px;box-shadow:0 0 2px #d3d3d3;border-radius:8px;margin-bottom:10px}.discounted_amount span,.original_amount{font-family:var(--primary-font-family);font-weight:500;font-size:13px}.img_sec{width:60px;height:60px;border-radius:50%;border:2px solid #0f9af1;font-size:18px;font-family:var(--primary-semi-bold-font-family);font-weight:500}.img_sec img{width:100%;height:100%;border-radius:50%}.selection input{width:16px;height:16px}.kit_title{font-size:14px;font-family:var(--primary-font-family);font-weight:500;color:#000}.kit_description{color:#434443;font-size:13px;font-family:var(--primary-font-family);font-weight:500}.paying_options label{font-size:14px;font-family:var(--primary-font-family);font-weight:500}.paying_options label input{width:16px;height:16px}.kit_bottom_layer{height:150px;overflow-y:scroll}.single_kit{background-color:#f2f2f9;padding:10px;border-radius:6px;width:32%}\n"] }]
3201
+ ], template: "<!-- <section class=\"main-section\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <div class=\"heading left-side\">\r\n Admission Fee\r\n </div>\r\n\r\n <div class=\"left-side mt-10\" *ngFor=\"let configList of Object.keys(feeConfig)\">\r\n <div class=\"heading mb-20\">{{configList}}</div>\r\n\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let config of feeConfig[configList]\">\r\n <p class=\"sub-heading mb-0\">{{config.feeHead}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{config.amount}}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"left-side mt-10\" *ngFor=\"let type of Object.keys(subscriptions)\">\r\n <p class=\"heading\">{{type}}</p>\r\n\r\n <table class=\"subscription-table w-100\">\r\n <thead>\r\n <th>Subscription Title</th>\r\n <th>Monthly</th>\r\n <th>Quaterly</th>\r\n <th>Yearly</th>\r\n <th>On Demand</th>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of subscriptions[type];let i = index\">\r\n <td>{{data.subName}}</td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['QUARTERLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'MONTHLY'\" (click)=\"toggleSelection(data, 'MONTHLY')\" [checked]=\"data.selectedOption === 'MONTHLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexRadioDefault2\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['MONTHLY']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['QUARTERLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['MONTHLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'QUARTERLY'\" (click)=\"toggleSelection(data, 'QUARTERLY')\" [checked]=\"data.selectedOption === 'QUARTERLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['QUARTERLY']}}\r\n </label>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['MONTHLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['ANNUALLY']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'ANNUALLY'\" (click)=\"toggleSelection(data, 'ANNUALLY')\" [checked]=\"data.selectedOption === 'ANNUALLY'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['ANNUALLY']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['ANNUALLY']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n <td>\r\n <div class=\"form-check\" *ngIf=\"data.pricing['ONDEMAND']\">\r\n <input class=\"form-check-input\" type=\"radio\" name=\"subscription{{i}}\" [value]=\"'ONDEMAND'\" (click)=\"toggleSelection(data, 'ONDEMAND')\" [checked]=\"data.selectedOption === 'ONDEMAND'\" [(ngModel)]=\"data.selectedOption\" id=\"flexCheckChecked\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n \u20B9 {{data.pricing['ONDEMAND']}}\r\n </label>\r\n </div>\r\n <img class=\"defaultImage\" *ngIf=\"!data.pricing['ONDEMAND']\" [src]=\"defaultImage\" alt=\"\">\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"left-side mt-10\">\r\n <p class=\"heading\">Payment Plan</p>\r\n\r\n <div class=\"d-flex g-2\">\r\n <div class=\"form-check\" (click)=\"changeAnnualPaymentTerm('ANNUALLY')\">\r\n <input class=\"form-check-input\" type=\"radio\" value=\"\" name=\"payment-plan\" id=\"flexCheckChecked\" [checked]=\"admissionData.paymentPlanType === 'ANNUALLY'\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n Annually\r\n </label>\r\n </div>\r\n <div class=\"form-check\" (click)=\"changeAnnualPaymentTerm('TERM')\">\r\n <input class=\"form-check-input\" type=\"radio\" value=\"\" name=\"payment-plan\" id=\"flexCheckChecked\" [checked]=\"admissionData.paymentPlanType === 'TERM'\">\r\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\r\n Term\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"admission\" *ngIf=\"admissionData.paymentPlanType === 'TERM'\">\r\n <mat-form-field class=\"input-text\" appearance=\"outline\">\r\n <mat-select class=\"inputStyle\" placeholder=\"--Select--\" multiple=\"true\" [(ngModel)]=\"feeStructure.termPaymentList\" (ngModelChange)=\"calculateTotalAmount()\">\r\n <mat-option *ngFor=\"let term of termPaymentList\" [value]=\"term\">term {{term.termNumber}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 right-side\">\r\n <div class=\"heading mb-20\">\r\n Fee Calculation\r\n </div>\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let config of feeStructure.feeConfigs\">\r\n <p class=\"sub-heading mb-0\">{{config.feeHead}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{config.amount}}</p>\r\n </div>\r\n\r\n <div class=\"d-flex justify-space mt-10 mb-15\" *ngFor=\"let subscripition of feeStructure.subscriptionPlans\">\r\n <p class=\"sub-heading mb-0\">{{subscripition.subName}}</p>\r\n <p class=\"amount mb-0\">\u20B9 {{subscripition.pricing[subscripition.frequency]}}</p>\r\n </div>\r\n\r\n <div class=\"total-fee\">\r\n <div class=\"heading mb-5\">\r\n Total Fee\r\n </div>\r\n <div class=\"amount\">\r\n \u20B9 {{feeStructure.totalAmount}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section> -->\r\n\r\n\r\n<section class=\"main_payment_details_section h-100 w-100 p-2 d-flex justify-content-between\">\r\n <div class=\"left_payment_details h-100 p-2\">\r\n <div class=\"fees_section\">\r\n <div class=\"sec_title\">\r\n Fees\r\n </div>\r\n <div class=\"mt-2 all_fee_configs\">\r\n <ng-container *ngFor=\"let item of feeStructure?.feeConfig\">\r\n <div class=\"single_fee_config p-3\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"fee_title\">{{item.feeHead ? item.feeHead.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\">\u20B9 {{item.amount}}</div>\r\n </div>\r\n <div *ngIf=\"item.termsList.length > 0\">\r\n <div class=\"change_selection\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.selectedTermValue\"\r\n name=\"termOption_{{ item.feeHead.id}}\"\r\n (change)=\"changeTermValue(item)\">\r\n <mat-radio-button value=\"SINGLE\"\r\n style=\"font-family: var(--primary-font-family);font-size:13px\">Single</mat-radio-button>\r\n <mat-radio-button value=\"TERM\"\r\n style=\"font-family: var(--primary-font-family);font-size:13px\">Term</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <div class=\"termCount\" *ngIf=\"item.selectedTermValue === 'TERM'\">\r\n <div class=\"check_data\">\r\n <ng-container *ngFor=\"let term of item.termsList;let i = index\">\r\n <div class=\"singleData d-flex gap-3 align-items-end\">\r\n <input type=\"checkbox\" (change)=\"addTerms($event,term)\" [checked]=\"term.selected\">\r\n <div class=\"data_value\">{{getOrdinalSuffix(i+1)}} Term (\u20B9 {{term?.termAmount}})</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"title\">Transport Fee</div>\r\n <div class=\"selecting_types d-flex align-items-center gap-2 justify-content-end\">\r\n <div style=\"width:30%\">\r\n <mat-form-field appearance=\"outline\" class=\"input_card mt-2 w-100\" style=\"height:40px\">\r\n <input type=\"text\" matInput placeholder=\"Select Stop\" [matAutocomplete]=\"autoGrade\"\r\n [(ngModel)]=\"stopSearchText\" (input)=\"filterStops()\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n <mat-autocomplete #autoGrade=\"matAutocomplete\" (optionSelected)=\"onStopSelection($event)\">\r\n <mat-option *ngFor=\"let stop of filteredStopsList\" [value]=\"stop.stopName\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n {{ stop.stopName | titlecase }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n <div style=\"width:30%\">\r\n <mat-form-field appearance=\"outline\" class=\"input_card mt-2 w-100\" style=\"height:40px\">\r\n <input type=\"text\" matInput placeholder=\"Select Vehicle Type\" [matAutocomplete]=\"autoGrade1\"\r\n [(ngModel)]=\"vehicleTypeSearchText\" (input)=\"filtereVehicleTypes()\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n <mat-autocomplete #autoGrade1=\"matAutocomplete\" (optionSelected)=\"onVehicleTypeSelection($event)\">\r\n <mat-option *ngFor=\"let stop of filteredVehicleTypesList\" [value]=\"stop.vehicleType\"\r\n style=\"font-size: 13px;font-family: var(--primary-font-family);\">\r\n {{ stop.vehicleType | titlecase }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"list_all_subscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of routeValues\">\r\n <div class=\"single_fee_config p-3\">\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <mat-checkbox [checked]=\"admissionData.selectedStopDetail === item\"\r\n (change)=\"onCheckboxChange(item, $event)\"></mat-checkbox>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"width:92%\">\r\n <div class=\"fee_title\">\r\n {{ item.transport.route ? item.transport.route.name : 'N/A' }}\r\n <span>(<span style=\"font-size:12px;font-family: var(--primary-font-family);\">Pickup Time :</span>\r\n <span\r\n style=\"font-size:12px;font-family: var(--primary-semi-bold-font-family);\">{{getPickupTime(item.transport.busRouteStopTimings)\r\n | date:'h:mm a'}}</span>\r\n -\r\n <span style=\"font-size:12px;font-family: var(--primary-font-family);\">Drop Time :</span>\r\n <span\r\n style=\"font-size:12px;font-family: var(--primary-semi-bold-font-family);\">{{getDroptime(item.transport.busRouteStopTimings)\r\n | date:'h:mm a'}}</span>\r\n )</span>\r\n </div>\r\n <div class=\"fee_amount\">\u20B9 {{ item.charges.totalAmount }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"item?.charges.termPaymentList.length > 0\">\r\n <div class=\"change_selection\" style=\"width:90%;margin:0 auto\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.charges.selectedTermValue\"\r\n (change)=\"changeTransportTermValue(item)\" [disabled]=\"admissionData.selectedStopDetail !== item\">\r\n <mat-radio-button value=\"SINGLE\"\r\n style=\"font-family: var(--primary-font-family); font-size: 13px\">Single</mat-radio-button>\r\n <mat-radio-button value=\"TERM\"\r\n style=\"font-family: var(--primary-font-family); font-size: 13px\">Term</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"termCount\" *ngIf=\"item.charges.selectedTermValue === 'TERM'\">\r\n <div class=\"check_data\" style=\"width:75%;margin:0 auto\">\r\n <ng-container *ngFor=\"let term of item.charges.termPaymentList; let i = index\">\r\n <div class=\"singleData d-flex gap-3 align-items-end\">\r\n <input type=\"checkbox\" (change)=\"addSingleStop($event, term)\"\r\n [disabled]=\"admissionData.selectedStopDetail !== item\" />\r\n <div class=\"data_value\">{{ getOrdinalSuffix(i + 1) }} Term (\u20B9 {{term.termAmount}})</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\" *ngIf=\"subscriptionsData.length > 0\">\r\n <div class=\"title\">Subscriptions</div>\r\n <div class=\"list_all_subscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of subscriptionsData\">\r\n <div class=\"top_1\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <mat-checkbox [checked]=\"isSubscriptionSelected(item)\"\r\n (change)=\"onSubscriptionItemChange($event, item)\"></mat-checkbox>\r\n <div class=\"subscription_title\">\r\n {{item.subscriptionTitle}}\r\n </div>\r\n </div>\r\n <div class=\"subscription_types\" style=\"width:85%;margin:auto\">\r\n <ng-container *ngFor=\"let subV of item.newPricingList;let i = index\">\r\n <div class=\"single_subscrption d-flex gap-2 mt-2\">\r\n <div class=\"single_title d-flex gap-3 align-items-center\" style=\"width:25%\">\r\n <input type=\"radio\" [checked]=\"subV.selecteStatus\"\r\n (change)=\"toggleSubscriptionSelection(item.newPricingList, i, item)\"\r\n [disabled]=\"!disableSubscriptionSelection(item)\">\r\n <div class=\"data_value\">{{subV.name | titlecase}}</div>\r\n </div>\r\n <div class=\"single_value\">\r\n {{subV.amount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"subscriptions_list mt-3\" *ngIf=\"listAllKits.length > 0\">\r\n <div class=\"title\">Student Kit</div>\r\n <div class=\"list_all_subscriptions mt-2 d-flex gap-2 flex-wrap\">\r\n <ng-container *ngFor=\"let item of listAllKits;let i = index\">\r\n <div class=\"single_kit\">\r\n <div class=\"top_layer d-flex justify-content-between align-items-center\">\r\n <div class=\"selection\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.selected\" class=\"cursor-pointer\"\r\n (change)=\"addRemoveKit(item,$event)\">\r\n </div>\r\n <div class=\"amount_section\">\r\n <div class=\"original_amount\" *ngIf=\"item.discountedAmount === 0\">\u20B9 {{item.amount}}</div>\r\n <div class=\"discounted_amount\" *ngIf=\"item.discountedAmount != 0\">\r\n \u20B9\r\n <span class=\"strikethrough\">{{item.originalAmount}}</span> &nbsp;\r\n <span style=\"font-family:var(--primary-semi-bold-font-family)\">{{item.discountedAmount}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"kit_bottom_layer\">\r\n <div class=\"image_section d-flex justify-content-center align-items-center\">\r\n <div class=\"img_sec\" *ngIf=\"item.img != null\"><img [src]=\"item.img\" alt=\"\"></div>\r\n <div class=\"img_sec d-flex justify-content-center align-items-center\" *ngIf=\"item.img === null\">\r\n {{item.name.split('')[0] | uppercase}}\r\n </div>\r\n </div>\r\n <div class=\"mt-2 kit_title text-center\">\r\n {{item.name}}\r\n </div>\r\n <div class=\"kit_description text-center\" style=\"margin-top:4px\">\r\n {{item.description}}\r\n </div>\r\n </div>\r\n <div class=\"kit_footer_layer mt-2\" *ngIf=\"item.selected\">\r\n <div class=\"d-flex align-items-center justify-content-center gap-3 paying_options\">\r\n <mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"item.kitPaymentSelected\"\r\n (ngModelChange)=\"changePaymentStatus(item)\">\r\n <mat-radio-button [value]=\"true\"><span style=\"font-family: var(--primary-font-family);font-size: 13px;\">Pay Now</span></mat-radio-button>\r\n <mat-radio-button [value]=\"false\"><span style=\"font-family: var(--primary-font-family);font-size: 13px;\">Pay Later</span></mat-radio-button>\r\n </mat-radio-group> \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right_payment_details h-100\">\r\n <div class=\"total_payment_details h-100 w-100 p-3\">\r\n <div class=\"mt-2 calculation_table\">\r\n <div class=\"calculation_single_part\">\r\n <div class=\"total_title\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Total Academic Fee Breakdown\r\n </div>\r\n <ng-container *ngFor=\"let item of feeStructure.feeConfig\">\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"margin-top: 8px;\">\r\n <div class=\"fee_title\">{{item.feeHead ? item.feeHead.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\" *ngIf=\"item.termsList.length === 0 || item.selectedTermValue != 'TERM'\">\r\n <span [ngClass]=\"(item?.concession != null && item?.concession?.length != 0) ? 'strikethrough' : ''\">\r\n \u20B9 {{item.amount}}\r\n </span>\r\n <span\r\n *ngIf=\"item.concession != null && item?.concession.length != 0\">({{item.appliedConcessionAmount}})</span>\r\n </div>\r\n </div>\r\n <div class=\"value fw-500\" *ngIf=\"item.termsList.length >= 0\">\r\n <div class=\"selecte_terms\">\r\n <ng-container *ngFor=\"let data of item.termsList\">\r\n <div class=\"selected_single_term d-flex align-items-center justify-content-between\" *ngIf=\"data.selected\">\r\n <div class=\"key\">\r\n Term {{data.termNumber}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{data.termAmount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"admissionData.selectedStopDetail != null && admissionData?.selectedStopDetail?.availability\">\r\n <div class=\"total_title\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Transport Fee\r\n </div>\r\n <ng-container>\r\n <div class=\"d-flex justify-content-between align-items-center\" style=\"margin-top: 8px;\">\r\n <div class=\"fee_title\">{{admissionData.selectedStopDetail?.charges?.vehicleType ?\r\n admissionData.selectedStopDetail?.charges?.vehicleType?.name : 'N/A'}}</div>\r\n <div class=\"fee_amount\"\r\n *ngIf=\"admissionData.selectedStopDetail?.charges?.termPaymentList?.length === 0 || admissionData.selectedStopDetail?.charges?.selectedTermValue != 'TERM'\">\r\n \u20B9\r\n {{admissionData.selectedStopDetail?.charges?.totalAmount}}\r\n </div>\r\n </div>\r\n <div class=\"value fw-500\" *ngIf=\"admissionData.selectedStopDetail?.charges?.termPaymentList?.length >= 0\">\r\n <div class=\"selecte_terms\">\r\n <ng-container *ngFor=\"let data of admissionData.selectedStopDetail?.charges?.termPaymentList\">\r\n <div class=\"selected_single_term d-flex align-items-center justify-content-between\"\r\n *ngIf=\"data.selected\">\r\n <div class=\"key\">\r\n Term {{data.termNumber}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{data.termAmount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"hasActiveSubscriptions()\">\r\n <div class=\"new_title mt-2\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Subscriptions\r\n </div>\r\n <div class=\"listing_selected_suscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of admissionData.subscriptionPlans\">\r\n <div class=\"fee_title\">{{item.subName | titlecase}}</div>\r\n <ng-container>\r\n <div class=\"single_payment_calculation d-flex justify-content-between align-items-center mb-1\">\r\n <div class=\"key\">\r\n {{item.frequency | titlecase}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{item.pricing[item.frequency]}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"calculation_single_part\" *ngIf=\"hasActiveKits()\">\r\n <div class=\"new_title mt-2\" style=\"border-bottom: 1px solid #dedede;padding-bottom: 12px;\">\r\n Student Kits\r\n </div>\r\n <div class=\"listing_selected_suscriptions mt-2\">\r\n <ng-container *ngFor=\"let item of admissionData.selectedComboKits\">\r\n <ng-container *ngIf=\"item?.kitPaymentSelected\">\r\n <div class=\"single_payment_calculation d-flex justify-content-between align-items-center mb-1\">\r\n <div class=\"fee_title\">\r\n {{item.name | titlecase}}\r\n </div>\r\n <div class=\"value fw-500\">\r\n \u20B9 {{item.amount}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer_section total_container\">\r\n <div class=\"footer_title\">Grand Total Fee</div>\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n \u20B9 {{feeStructure?.totalFee}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".left_payment_details{width:55%;overflow-y:scroll}.right_payment_details{width:45%;padding:10px}.sec_title{font-size:16px;font-family:var(--primary-semi-bold-font-family);font-weight:500;color:#000}.single_fee_config{background-color:#f1f7ff99;padding:10px;box-shadow:0 0 2px #d3d3d3;border-radius:8px;margin-bottom:10px}.fee_title{font-size:14.5px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.fee_amount,.fee_amount span{font-size:14.5px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500}.total_payment_details{background:#faf5f199;box-shadow:0 0 2px #d3d3d3;border-radius:8px}.total_title{font-size:20px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500;line-height:18px}.calculation_table{height:90%;overflow-y:scroll}.footer_section{height:10%;display:flex;justify-content:space-between;align-items:center}.footer_title{font-size:18px;font-family:var(--primary-font-family);font-weight:500;color:#000}.total_container{background-color:#fff;padding:10px;font-size:20px;font-weight:500;font-family:var(--primary-semi-bold-font-family);color:#000}.calculation_single_part{background-color:#fff;padding:10px;border-radius:8px;margin-bottom:10px}.selected_single_term{margin-bottom:10px}.key{font-weight:500;font-size:14px;font-family:var(--primary-font-family);color:#3a3838;margin-left:30px}.fw-500{font-weight:500;font-family:var(--primary-semi-bold-font-family);font-size:16px;margin:0!important}.check_data{width:90%;margin:auto}.singleData{margin-bottom:10px}.singleData input{width:16px;height:16px}.singleData .data_value{font-size:14px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.title{font-family:var(--primary-semi-bold-font-family);font-weight:500;font-size:15px;color:#000}.subscription_title{font-family:var(--primary-font-family);font-weight:500;font-size:14px;color:#000}.single_value{font-size:16px;font-family:var(--primary-semi-bold-font-family);color:#000;font-weight:500}.single_title input{width:16px;height:16px}.data_value{font-size:14px;font-family:var(--primary-font-family);color:#3a3838;font-weight:500}.top_1{background:#d2d4b999;padding:10px;box-shadow:0 0 2px #d3d3d3;border-radius:8px;margin-bottom:10px}.discounted_amount span,.original_amount{font-family:var(--primary-font-family);font-weight:500;font-size:13px}.img_sec{width:60px;height:60px;border-radius:50%;border:2px solid #0f9af1;font-size:18px;font-family:var(--primary-semi-bold-font-family);font-weight:500}.img_sec img{width:100%;height:100%;border-radius:50%}.selection input{width:16px;height:16px}.kit_title{font-size:14px;font-family:var(--primary-font-family);font-weight:500;color:#000}.kit_description{color:#434443;font-size:13px;font-family:var(--primary-font-family);font-weight:500}.paying_options label{font-size:14px;font-family:var(--primary-font-family);font-weight:500}.paying_options label input{width:16px;height:16px}.kit_bottom_layer{height:150px;overflow-y:scroll}.single_kit{background-color:#f2f2f9;padding:10px;border-radius:6px;width:32%}\n"] }]
3137
3202
  }], ctorParameters: () => [{ type: ElementServiceService }, { type: i2$2.MatSnackBar }], propDecorators: { admissionData: [{
3138
3203
  type: Input
3139
3204
  }], subscriptionsData: [{
@@ -6473,64 +6538,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
6473
6538
  type: Input
6474
6539
  }] } });
6475
6540
 
6476
- class CustomerReviewComponent {
6477
- constructor(activatedRoute, restService) {
6478
- this.activatedRoute = activatedRoute;
6479
- this.restService = restService;
6480
- this.productId = null;
6481
- this.customerReviews = [];
6482
- this.totalRating = 4;
6483
- this.totalRatinsCount = 0;
6484
- this.overallRatingCount = null;
6485
- }
6486
- ngOnInit() {
6487
- this.activatedRoute.queryParams.subscribe((qParam) => {
6488
- this.productId = qParam["id"];
6489
- this.getAllReviews();
6490
- });
6491
- }
6492
- getAllReviews() {
6493
- if (!this.productId)
6494
- return;
6495
- this.restService.getAllReviews(this.productId).subscribe((response) => {
6496
- this.customerReviews = response.data?.userReviews;
6497
- this.totalRating = response.data?.averageRating;
6498
- this.overallRatingCount = response.data?.overallRatingCount;
6499
- this.totalRatinsCount = this.customerReviews?.length;
6500
- });
6501
- }
6502
- getKeys(object) {
6503
- if (!object)
6504
- return [];
6505
- return Object.keys(object);
6506
- }
6507
- getPercentage(value) {
6508
- value = Number(value ?? '1');
6509
- return (value / this.customerReviews?.length) * 100;
6510
- }
6511
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: CustomerReviewComponent, deps: [{ token: i2$4.ActivatedRoute }, { token: RestService }], target: i0.ɵɵFactoryTarget.Component }); }
6512
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: CustomerReviewComponent, isStandalone: true, selector: "simpo-customer-review", inputs: { data: "data", index: "index", edit: "edit", delete: "delete", nextComponentColor: "nextComponentColor" }, ngImport: i0, template: "<section class=\"mainContainer\" style=\"gap: 20px;\" *ngIf=\"customerReviews.length\">\r\n <div class=\"left-panel\">\r\n <h3 [style.color]=\"data?.styles?.background?.accentColor\">Customer Reviews</h3>\r\n <p-rating [(ngModel)]=\"totalRating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div class=\"stars\">\r\n <ng-container *ngFor=\"let rating of overallRatingCount | keyvalue; let idx = index\">\r\n <div class=\"d-flex\" style=\"gap: 5px; margin: 10px 0px\">\r\n <div class=\"count\">{{rating.key}}</div>\r\n <div class=\"rating-bar\">\r\n <p-progressBar [value]=\"getPercentage(rating?.value)\" [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\" [showValue]=\"false\" />\r\n </div>\r\n <div class=\"count\">{{getPercentage(rating?.value)}}%</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"right-panel\">\r\n <h3 [style.color]=\"data?.styles?.background?.accentColor\">Top Reviews</h3>\r\n <div class=\"customer-reviews\">\r\n <ng-container *ngFor=\"let review of customerReviews\">\r\n <div class=\"d-flex align-item-center\" style=\"gap: 5px;\">\r\n <div class=\"name-tag\">{{review.userName | slice: 0:1}}</div>\r\n <span style=\"position: relative; top: 5px;\">{{review.userName | titlecase}}</span>\r\n </div>\r\n <div class=\"d-flex my-2\" style=\"width: fit-content; height: 20px; gap: 10px;\"> \r\n <p-rating [(ngModel)]=\"review.rating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div>{{review.title | titlecase}}</div>\r\n </div>\r\n <div class=\"date\">{{ review.createdTimeStamp | date }}</div>\r\n <div class=\"description\">{{review.review | titlecase}}</div>\r\n <hr>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n <!-- <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\" [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container> -->\r\n\r\n</section>", styles: [".mainContainer{display:flex;justify-content:space-around}.rating-bar{width:300px}h3{margin-bottom:20px}.count{width:20px}.left-panel{width:20%}.right-panel{width:70%}.description{width:80%}.name-tag{display:flex;justify-content:center;align-items:center;padding:5px;border-radius:50%;background-color:#3b82f6;color:#fff;height:30px;width:30px}.customer-reviews{padding-bottom:10px;padding-left:10px}@media screen and (max-width: 475px){.mainContainer{flex-direction:column!important}.left-panel{width:95%;margin:auto}.right-panel{width:95%;margin:auto}.right-panel .description{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: RatingModule }, { kind: "component", type: i3$1.Rating, selector: "p-rating", inputs: ["disabled", "readonly", "stars", "cancel", "iconOnClass", "iconOnStyle", "iconOffClass", "iconOffStyle", "iconCancelClass", "iconCancelStyle", "autofocus"], outputs: ["onRate", "onCancel", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: ProgressBarModule }, { kind: "component", type: i6.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }] }); }
6513
- }
6514
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: CustomerReviewComponent, decorators: [{
6515
- type: Component,
6516
- args: [{ selector: 'simpo-customer-review', standalone: true, imports: [
6517
- RatingModule,
6518
- FormsModule,
6519
- CommonModule,
6520
- ProgressBarModule, SvgDividerComponent
6521
- ], template: "<section class=\"mainContainer\" style=\"gap: 20px;\" *ngIf=\"customerReviews.length\">\r\n <div class=\"left-panel\">\r\n <h3 [style.color]=\"data?.styles?.background?.accentColor\">Customer Reviews</h3>\r\n <p-rating [(ngModel)]=\"totalRating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div class=\"stars\">\r\n <ng-container *ngFor=\"let rating of overallRatingCount | keyvalue; let idx = index\">\r\n <div class=\"d-flex\" style=\"gap: 5px; margin: 10px 0px\">\r\n <div class=\"count\">{{rating.key}}</div>\r\n <div class=\"rating-bar\">\r\n <p-progressBar [value]=\"getPercentage(rating?.value)\" [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\" [showValue]=\"false\" />\r\n </div>\r\n <div class=\"count\">{{getPercentage(rating?.value)}}%</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"right-panel\">\r\n <h3 [style.color]=\"data?.styles?.background?.accentColor\">Top Reviews</h3>\r\n <div class=\"customer-reviews\">\r\n <ng-container *ngFor=\"let review of customerReviews\">\r\n <div class=\"d-flex align-item-center\" style=\"gap: 5px;\">\r\n <div class=\"name-tag\">{{review.userName | slice: 0:1}}</div>\r\n <span style=\"position: relative; top: 5px;\">{{review.userName | titlecase}}</span>\r\n </div>\r\n <div class=\"d-flex my-2\" style=\"width: fit-content; height: 20px; gap: 10px;\"> \r\n <p-rating [(ngModel)]=\"review.rating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div>{{review.title | titlecase}}</div>\r\n </div>\r\n <div class=\"date\">{{ review.createdTimeStamp | date }}</div>\r\n <div class=\"description\">{{review.review | titlecase}}</div>\r\n <hr>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n <!-- <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\" [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container> -->\r\n\r\n</section>", styles: [".mainContainer{display:flex;justify-content:space-around}.rating-bar{width:300px}h3{margin-bottom:20px}.count{width:20px}.left-panel{width:20%}.right-panel{width:70%}.description{width:80%}.name-tag{display:flex;justify-content:center;align-items:center;padding:5px;border-radius:50%;background-color:#3b82f6;color:#fff;height:30px;width:30px}.customer-reviews{padding-bottom:10px;padding-left:10px}@media screen and (max-width: 475px){.mainContainer{flex-direction:column!important}.left-panel{width:95%;margin:auto}.right-panel{width:95%;margin:auto}.right-panel .description{width:100%}}\n"] }]
6522
- }], ctorParameters: () => [{ type: i2$4.ActivatedRoute }, { type: RestService }], propDecorators: { data: [{
6523
- type: Input
6524
- }], index: [{
6525
- type: Input
6526
- }], edit: [{
6527
- type: Input
6528
- }], delete: [{
6529
- type: Input
6530
- }], nextComponentColor: [{
6531
- type: Input
6532
- }] } });
6533
-
6534
6541
  class OrderedItems {
6535
6542
  constructor(json, varientId) {
6536
6543
  this.itemId = json?.["itemId"] ?? "";
@@ -7265,7 +7272,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
7265
7272
  HoverDirective,
7266
7273
  AddressComponent,
7267
7274
  ToastModule,
7268
- CustomerReviewComponent,
7269
7275
  TextEditorComponent,
7270
7276
  ImageEditorDirective
7271
7277
  ], providers: [MessageService], template: "<ng-container *ngIf=\"!isLoading\">\r\n <p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n\r\n <ng-container *ngIf=\"data\">\r\n <section [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [attr.class]=\"isMobile ? 'py-5 position-relative' : 'position-relative'\" simpoHover (hovering)=\"showEditTabs($event)\" [attr.style]=\"customClass\">\r\n <div class=\"d-flex align-items-center justify-content-center m-auto mb-4\" [style.marginTop.px]=\"isMobile ? '': '50'\" [style.width.%]=\"isMobile ? '90' : ''\" *ngIf=\"responseData?.orderedItems?.length\">\r\n <span class=\"timeline\" [ngClass]=\"{'isActive': currentTab == 'BAG'}\" (click)=\"currentTab = 'BAG'\">Bag</span>\r\n <div class=\"bar\"></div>\r\n <span class=\"timeline\" [ngClass]=\"{'isActive': currentTab == 'ADDRESS'}\" (click)=\"proceedToCheckout()\">Address</span>\r\n <div class=\"bar\"></div>\r\n <span class=\"timeline\" [ngClass]=\"{'isActive': currentTab == 'PAYMENT'}\" style=\"cursor: auto;\">Payment</span>\r\n </div>\r\n <div class=\"cart-parent container\" *ngIf=\"(responseData?.orderedItems?.length || 0) > 0\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\">\r\n <ng-container [ngSwitch]=\"currentTab\">\r\n <div class=\"left-panel\" *ngSwitchCase=\"'BAG'\">\r\n <div class=\"my-bag\">\r\n My Bag&nbsp; <span>({{responseData?.orderedItems?.length}} Items)</span>\r\n </div>\r\n <div class=\"cart-items\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems; let idx = index\">\r\n <div class=\"item-parent d-flex\">\r\n <div class=\"h-100\" style=\"padding: 0px; width: fit-content;\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" class=\"product-img\" [src]=\"item.imgUrl ?? 'https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" alt=\"\" (click)=\"goToProductDetails(item)\">\r\n </div>\r\n <div class=\"col-md-6 h-100\" [style.width.px]=\"isMobile ? '200' : ''\" style=\"margin-left: px;\">\r\n <div class=\"lh-23\">\r\n <div class=\"item-name trim-text heading-large\">{{item.itemName}}</div>\r\n <div class=\"price-with-tax\">\r\n <span [innerHTML]='currency'></span> {{(item.discountedPrice ?? item.sellingPrice) | number: '1.0-2'}}\r\n </div>\r\n <ng-container *ngIf=\"item.itemVariant\">\r\n <div class=\"d-flex align-items-center\" *ngFor=\"let varient of getKeys(item.itemVariant.properties)\">\r\n <strong class=\"fw-bold\">{{ varient }} : </strong>\r\n <!-- <div class=\"fw-normal\" style=\"margin-left: 5px; height: 13px; width: 13px; border-radius: 50%;\" *ngIf=\"varient.toLowerCase() == 'color'\" [style.backgroundColor]=\"item.itemVariant.properties[varient]\"></div> -->\r\n {{ item.itemVariant.properties[varient] | uppercase }}\r\n </div>\r\n </ng-container>\r\n <div class=\"item-quantity\">\r\n <span class=\"cursor\" (click)=\"addToCart(item, 'SUBSTRACT')\">-</span>\r\n <span>{{item.quantity}}</span>\r\n <span class=\"cursor\" (click)=\"addToCart(item, 'ADD')\">+</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 position-relative\" style=\"margin-left: auto; width: 0px; \">\r\n <div class=\"item-price\"><span [innerHTML]='currency'></span> {{((item.discountedPrice ?? item.sellingPrice) * item.quantity) | number: '1.0-2'}}</div>\r\n <div>\r\n <mat-icon class=\"delete-item\" (click)=\"removeItem(item)\" [style.right.px]=\"isMobile ? '5' : '0'\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"responseData?.orderedItems?.length != (idx +1)\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"left-panel\" *ngSwitchCase=\"'ADDRESS'\">\r\n <simpo-address [isCart]=\"true\" [responseData]=\"getAddressList\" [data]=\"data\" (selectedAddress)=\"addressSelected($event)\"></simpo-address>\r\n </div>\r\n <div class=\"left-panel\" *ngSwitchCase=\"'PAYMENT'\"></div>\r\n </ng-container>\r\n <div class=\"right-panel\">\r\n <div class=\"my-bag\">\r\n Coupon\r\n </div>\r\n <div class=\"coupons\" (click)=\"openDialog(CouponList)\">\r\n <ng-container *ngIf=\"!responseData.billdetails?.couponId\">\r\n <div class=\"d-flex flex-column\">\r\n <span style=\"font-weight: 600;\">Apply Coupon</span>\r\n <span style=\"font-size: 13px;\">Save more with coupon and offers</span>\r\n </div>\r\n <div [style.color]=\"styles?.background?.accentColor\" style=\"font-weight: 600;\">Apply</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"responseData.billdetails?.couponId\">\r\n <div class=\"d-flex flex-column\">\r\n <span style=\"font-weight: 600;\">Coupon</span>\r\n <span style=\"font-size: 13px;\">Save more with coupon and offers</span>\r\n </div>\r\n <div [style.color]=\"styles?.background?.accentColor\" (click)=\"removeCoupon($event)\">Remove</div>\r\n </ng-container>\r\n </div>\r\n <div class=\"my-bag\">\r\n Price Details\r\n </div>\r\n <div class=\"price-details\">\r\n <div class=\"price-parent-block\">\r\n <div class=\"price-type\">Total Price</div>\r\n <div class=\"price-value\"><span [innerHTML]='currency'></span> {{(responseData?.billdetails?.totalNetValue ?? 0) | number: '1.0-2'}}</div>\r\n </div>\r\n <div class=\"price-parent-block\">\r\n <div class=\"price-type\">Total Tax</div>\r\n <div class=\"price-value\"><span [innerHTML]='currency'></span> {{((!responseData.billdetails?.couponId ? responseData?.billdetails?.totalTax : responseData?.billdetails?.totalTaxAfterDiscount) ?? 0) | number: '1.0-2'}}</div>\r\n </div>\r\n <div class=\"price-parent-block\"\r\n *ngIf=\"responseData?.billdetails?.deliveryCharges && responseData.billdetails.deliveryCharges > 0\">\r\n <div class=\"price-type\">Delivery Charge</div>\r\n <div class=\"price-value\"><span [innerHtml]='currency'></span> {{responseData.billdetails.deliveryCharges | number: '1.0-2'}}</div>\r\n </div>\r\n <div class=\"price-parent-block\"\r\n *ngIf=\"responseData?.billdetails?.discountAmount && subIndustryName != 'Ecommerce Jewellery'\">\r\n <div class=\"price-type\">Discount Amount</div>\r\n <div class=\"price-value\"><span [innerHtml]='currency'></span> {{responseData?.billdetails?.discountAmount | number: '1.0-2'}}</div>\r\n </div>\r\n <hr>\r\n <div class=\"price-parent-block\">\r\n <div class=\"price-type\" style=\"color: black;font-weight: 600;\">Total Amount</div>\r\n <div class=\"price-value\" style=\"font-weight: 600;\"><span [innerHtml]='currency'></span> {{((responseData?.totalAmount ?? 0) - (responseData?.billdetails?.discountAmount ?? 0)) | number: '1.0-2'}}</div>\r\n </div>\r\n\r\n <div class=\"button-parent\">\r\n <ng-container *ngIf=\"currentTab == 'BAG'\">\r\n <div class=\"btn mobile-fixed\" (click)=\"proceedToCheckout()\" [style.backgroundColor]=\"data?.styles?.background?.accentColor\" [style.color]=\"data?.styles?.background?.color\">{{data?.action?.buttons?.[0]?.content?.label ?? 'Checkout Cart'}}</div>\r\n <div class=\"btn\" (click)=\"proceedToListPage()\" simpoButtonDirective [buttonStyle]=\"data?.action?.buttons?.[1]?.styles\" [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"styles?.background\">{{data?.action?.buttons?.[1]?.content?.label ?? 'Continue Shopping'}}</div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"currentTab == 'ADDRESS'\">\r\n <div class=\"btn mobile-fixed\" (click)=\"proceedToPayment()\" [style.backgroundColor]=\"data?.styles?.background?.accentColor\" [style.color]=\"data?.styles?.background?.color\">{{data?.action?.buttons?.[2]?.content?.label ?? 'Place Order'}}</div>\r\n </ng-container>\r\n <!-- <div *ngFor=\"let button of data?.action?.buttons;let i = index\">\r\n <button class=\"btn\" (click)=\"i == 0 ? proceedToCheckout() : proceedToListPage()\" simpoButtonDirective [id]=\"data?.id+button.id\" [buttonStyle]=\"button?.styles\"\r\n [color]=\"styles?.background?.accentColor\">{{button?.content?.label}}</button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <section class=\"empty-cart\" *ngIf=\"(responseData?.orderedItems?.length || 0) == 0\">\r\n <div class=\"empty-cart-container\">\r\n <div class=\"cart-image\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"data?.content?.image?.url\" [alt]=\"data?.content?.image?.altText\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"data?.content?.image\" [sectionId]=\"data?.id\">\r\n </div>\r\n <div class=\"cart-text content-side\">\r\n <ng-container *ngFor=\"let text of data?.content?.inputText\">\r\n <div class=\"d-flex justify-content-center\" [ngClass]=\"{'heading-medium': text.label == 'Heading', 'description': text.label == 'Text'}\">\r\n <simpo-text-editor [(value)]=\"text.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </ng-container>\r\n <!-- <div class=\"description d-flex mt-4\">\r\n Looks like you have not added anything to your cart. Go ahead & explore top categories.\r\n </div> -->\r\n </div>\r\n </div>\r\n </section>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\" [isEcommerce]=\"true\"></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-container *ngIf=\"!data\">\r\n <section class=\"cart-window\">\r\n <div class=\"heading-large lh-2 mb-3 header-sec\">\r\n <div class=\"d-flex align-items-center\">\r\n <mat-icon (click)=\"closeWindow()\">keyboard_arrow_left</mat-icon>\r\n <span>Your Cart</span>\r\n </div>\r\n <div class=\"saving\"></div>\r\n </div>\r\n <div class=\"offers\">\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px;\">\r\n <img src=\"https://i.postimg.cc/htY55sqY/discount.png\" alt=\"\" height=\"20\" width=\"20\">\r\n <span>Avail Offers / Coupons</span>\r\n </div>\r\n <mat-icon>keyboard_arrow_right</mat-icon>\r\n </div>\r\n <div class=\"small-items\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems\">\r\n <div class=\"small-item\">\r\n <div class=\"d-flex\" style=\"gap: 5px;\">\r\n <div class=\"h-100\" style=\"padding: 0px; width: fit-content;\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" class=\"small-product-img\" [src]=\"item.imgUrl ?? 'https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" alt=\"\" (click)=\"goToProductDetails(item)\">\r\n </div>\r\n <div class=\"small-item-name trim-text\">{{ item.itemName | titlecase }}</div>\r\n <div class=\"small-item-quantity\">\r\n <span class=\"cursor\" (click)=\"addToCart(item, 'SUBSTRACT')\">-</span>\r\n <span>{{item.quantity}}</span>\r\n <span class=\"cursor\" (click)=\"addToCart(item, 'ADD')\">+</span>\r\n </div>\r\n <div class=\"small-item-price\">\r\n <div class=\"price-with-tax\">\r\n <span [innerHTML]='currency'></span> {{(item.discountedPrice) | number: '1.0-2'}}\r\n </div>\r\n <!-- <div class=\"price-with-tax\">\r\n <span [innerHTML]='currency'></span> {{(item.selling) | number: '1.0-2'}}\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"fotter-sec\">\r\n <div class=\"delivery-add d-flex\">\r\n <mat-icon>home</mat-icon>\r\n <div class=\"address\">Tetsting</div>\r\n </div>\r\n <button class=\"payment-btn\" [disabled]=\"cartInfo.addressDetails\" (click)=\"proceedToCheckout()\"> <span style=\"margin-right: 5px;\">Click to Pay</span> <span [innerHtml]='currency'></span> {{(responseData?.totalAmount ?? 0) | number: '1.0-2'}}</button>\r\n </div>\r\n </section>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" 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\r\n<ng-template #CouponList>\r\n <section class=\"coupons-listing-section\">\r\n <div class=\"coupon-heading\">\r\n <div class=\"back-btn\" (click)=\"closeDialogRef()\">\r\n <mat-icon>keyboard_arrow_left</mat-icon>\r\n </div>\r\n <div class=\"header-text\">Apply Coupon</div>\r\n </div>\r\n <!-- <div class=\"coupon-search-sec\">\r\n <input type=\"text\" placeholder=\"Type Coupon Code\" [(ngModel)]=\"enteredCouponCode\">\r\n <div class=\"apply-btn-search\" (click)=\"searchIfApplicable()\">Apply</div>\r\n </div> -->\r\n <div class=\"coupon-listing\">\r\n <ng-container *ngIf=\"couponList.length > 0; else showEmptyScreen\">\r\n <ng-container *ngFor=\"let couponDetails of couponList; let idx = index\">\r\n <div class=\"coupon-details\"\r\n [ngStyle]=\"{'background-color': !couponDetails.applicable ? '#FFF2F4' : '#EDFFFA'}\">\r\n <div class=\"details__coupon-heading\">\r\n <div class=\"coupon-brief\">\r\n <div class=\"coupon-brief__left-sec\">\r\n <div class=\"coupon-name\"\r\n [ngStyle]=\"{'color': !couponDetails.applicable ? '#DB1A1A' : '#097D5F'}\">\r\n {{ couponDetails.couponCode | uppercase }}</div>\r\n <div class=\"coupon-desc\">{{ couponDetails.discountDescription | titlecase }}</div>\r\n </div>\r\n <div class=\"coupon-brief__right-sec\">\r\n <div class=\"apply-offer-btn\"\r\n [style.opacity]=\"couponDetails.applicable ? '1' : '0.3'\" [ngStyle]=\"{'cursor': couponDetails.applicable ? 'pointer' : ''}\" (click)=\"applyCoupon(couponDetails)\">Apply</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"coupon-toggle-details-btn\" (click)=\"couponDetails.status = !couponDetails.status\">\r\n <span class=\"hide-details-btn\" *ngIf=\"couponDetails.status\">Hide details</span>\r\n <div class=\"show-details-btn\" *ngIf=\"!couponDetails.status\">View details</div>\r\n </div> -->\r\n </div>\r\n <ng-container *ngIf=\"couponDetails.status\">\r\n <div class=\"details-divider\"></div>\r\n <ul class=\"details__coupon-terms\">\r\n <li>Offer valid from {{ couponDetails.validFrom | date }} - {{ couponDetails.validTo | date }}</li>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #showEmptyScreen>\r\n <div class=\"empty-screen-container\">\r\n <img loading=\"lazy\" src=\"../../../../../assets/common/coupon-empty-img.svg\" alt=\"\">\r\n <div class=\"empty-screen__primary-text\">No Coupon Available</div>\r\n <div class=\"empty-screen__secondary-text\">\r\n Looks like there are no coupons at the moment\r\n </div>\r\n <!-- <div class=\"empty-screen__button\">Explore</div> -->\r\n </div>\r\n </ng-template>\r\n </div>\r\n </section>\r\n</ng-template>\r\n\r\n", styles: [".position-relative{position:relative}.cart-parent{display:flex;margin-top:15px;gap:20px}.left-panel{width:65%}.timeline{cursor:pointer}.cart-items{padding:10px;margin-top:10px;margin-bottom:15px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029}.isActive{color:#0267c1;font-weight:600}.bar{width:150px;border-top:2px solid lightgray;margin:0 5px}.right-panel{width:35%}.my-bag{font-size:16px;font-weight:600;color:#000;margin-left:8px}.my-bag span{color:#939393}.coupons{display:flex;justify-content:space-between;padding:10px;border-radius:4px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;margin-bottom:15px;margin-top:10px;cursor:pointer}.coupon-list-section{padding:15px;width:400px;z-index:10000001!important}.coupon-list-section .search{padding:8px;border:1px solid lightgray;border-radius:20px;display:flex;justify-content:space-between}.coupon-list-section input{border:none;outline:none;width:90%}.coupon-list-section .coupon-list{height:60vh;width:100%}.item-parent{margin:10px 0;min-height:120px}.lh-23{line-height:23px;margin-left:10px}.item-name{color:#141514;font-size:16px;line-height:30px;font-weight:600}.price-with-tax{font-weight:400;font-size:16px;color:#626262}.item-sku{font-weight:400;font-size:14px;color:#626262}.item-price{display:flex;justify-content:flex-end;font-weight:600;font-size:16px;color:#141514}.product-img{border-radius:5px;height:100%;width:110px;padding:0;cursor:pointer}.quantity-box{display:flex;gap:5px;align-items:center;border:1px solid #E8E8E8;width:45px;height:22px}.quantity-box input{outline:none;text-align:center;border:none;width:30px;height:100%}.quantity-box .plus{font-size:20px;position:relative;top:-3px;font-weight:500}.quantity-box .minus{font-size:30px;position:relative;top:-3px;font-weight:500}.delete-item{color:#df2e2e;cursor:pointer}.item-quantity{margin-top:5px;display:flex;min-width:90px;max-width:fit-content;border:1px solid lightgray;justify-content:space-between;align-items:center;padding:5px 10px;border-radius:3px}.coupon{display:flex;justify-content:space-between;border:1px solid #E8E8E8;border-radius:5px;padding:10px;margin-top:10px}.apply-coupon{font-weight:500;color:#626262;font-size:15px}.coupon-desc{color:#939393;font-size:12px;font-weight:500}.apply-coupon-btn{color:#0267c1;font-size:16px;font-weight:600}.price-details{padding:10px;margin-top:10px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;margin-bottom:15px}.price-parent-block{display:flex;justify-content:space-between;margin-top:5px}.price-type{font-weight:400;font-size:16px;color:#434443}.price-value{font-weight:500;font-size:18px;color:#141514}.button-parent{margin-top:20px;display:flex;flex-direction:column;gap:10px}hr{border:1px solid #E8E8E8}.btn{height:40px;font-size:16px!important;border:1px solid lightgray}.cursor{cursor:pointer}.delete-item{text-align:right;position:absolute;right:16px;bottom:10px}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:47px;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.label{color:#000}.total-container{min-height:80vh;position:relative;display:block!important;height:calc(100vh - 170px)}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.cart-image{width:13%;display:flex;margin-right:auto;margin-left:auto}.cart-image img{width:100%}.heading-medium{font-weight:600;color:#000}.description{font-size:18px;color:#7f7676;margin-left:auto;margin-right:auto;width:30%;text-align:center}.cart-window{padding:10px}.cart-window .small-product-img{width:55px;height:55px;border-radius:5px}.cart-window .small-items{display:flex;flex-direction:column;gap:10px;margin-top:15px;height:calc(100vh - 160px);overflow-y:auto}.cart-window .small-item{width:100%;display:flex;justify-content:space-between}.cart-window .small-item-name{width:200px}.cart-window .small-item-quantity{display:flex;align-items:center;justify-content:space-between;border-radius:5px;width:80px;background-color:#fafad2;padding:3px 8px;height:35px;font-weight:500;margin-right:3px}.cart-window .small-item-price{display:flex;flex-direction:column;gap:5px}.cart-window .small-item-price .price-with-tax{display:flex;font-size:13px!important}.cart-window .fotter-sec{background-color:#fff;position:absolute;bottom:0;left:0;width:100%;padding:10px}.cart-window .fotter-sec .payment-btn{border-radius:5px;border:none;display:flex;align-items:center;justify-content:center;background-color:#f08080;padding:10px 5px;color:#fff;cursor:pointer}.offers{background-color:#fff;display:flex;justify-content:space-between;padding:8px;border-radius:8px;box-shadow:#959da533 0 -1px 6px}.header-sec{font-size:26px}@media screen and (max-width: 475px){.cart-parent{flex-direction:column}.left-panel{width:100%}.right-panel{width:100%;z-index:1000}.cart-image{width:42%}.description{width:84%}.heading-medium{font-size:28px}.item-price{white-space:nowrap;display:none}.product-img{width:82px}[class*=col-md]{padding-left:5px!important;padding-right:5px!important}.mobile-fixed{height:40px;font-size:16px!important;border:1px solid lightgray;width:100%;position:relative;bottom:10px}.empty-cart-container{height:calc(100vh - 130px)}.coupons-listing-section{width:100vw!important}}.mobile-fixed{color:#fff}.coupons-listing-section{height:100vh;padding-top:0;position:relative;width:390px;z-index:100;background:#d3d3d354}.coupons-listing-section .coupon-heading{display:flex;align-items:center;background-color:#fff;padding:15px 20px;width:100%;box-sizing:border-box}.coupons-listing-section .coupon-heading img{height:15px;width:15px;position:relative;top:2px;cursor:pointer}.coupons-listing-section .coupon-heading .header-text{font-size:16px;color:#000;font-weight:600;margin-left:15px;position:relative;top:-3px;right:15px;cursor:pointer}.coupons-listing-section .coupon-search-sec{width:90%;box-sizing:border-box;margin:10px auto;border:1px solid lightgray;padding:10px;border-radius:10px;background-color:#fff;display:flex;font-size:16px;color:#000;font-weight:600}.coupons-listing-section .coupon-search-sec input{border:none;outline:none;background-color:transparent;width:95%;font-size:14px;color:#000;font-weight:400}.coupons-listing-section .coupon-search-sec input:focus{font-size:14px;color:#000;font-weight:600}.coupons-listing-section .coupon-search-sec .back-btn{position:relative;top:3px;cursor:pointer}.coupons-listing-section .coupon-search-sec .apply-btn-search{font-size:14px;color:#000;font-weight:400}.coupons-listing-section .coupon-listing{height:72%;overflow-y:auto;width:90%;margin:20px auto}.coupons-listing-section .coupon-listing .coupon-details{padding:15px;margin-bottom:15px;background-color:#edfffa;border-radius:10px;border:1px solid lightgray}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-heading{display:flex;flex-direction:column;gap:25px}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-heading .coupon-brief{display:flex;justify-content:space-between;width:100%}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-heading .coupon-brief .coupon-name{font-size:16px;color:#000;font-weight:400}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-heading .coupon-brief .coupon-desc{padding:5px 0;font-size:14px;color:#000;font-weight:400}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-heading .coupon-brief .show-details-btn{cursor:pointer}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-heading .coupon-brief .coupon-brief__right-sec{display:flex;justify-content:flex-end}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-heading .coupon-brief .coupon-brief__right-sec .apply-offer-btn{font-size:16px;color:#000;font-weight:400}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-heading .coupon-toggle-details-btn{text-align:left;text-decoration:underline;width:100%;font-size:14px;color:#000;font-weight:400}.coupons-listing-section .coupon-listing .coupon-details .details-divider{border-top:2px solid lightgray;opacity:.3;margin:15px 0}.coupons-listing-section .coupon-listing .coupon-details .details__coupon-terms{font-size:14px;color:#000;font-weight:400}.empty-screen-container{height:100%;width:85%;margin:0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center}.empty-screen-container .empty-screen__primary-text{font-size:22px;color:#000;font-weight:400}.empty-screen-container .empty-screen__secondary-text{text-align:center;padding:10px 0;font-size:16px;color:#000;font-weight:400}.empty-screen-container .empty-screen__button{width:90%;background-color:#fff;border-radius:8px;text-align:center;padding:10px;margin:10px auto 0;cursor:pointer;font-size:18px;color:#000;font-weight:400}\n"] }]
@@ -10989,12 +10995,14 @@ class RegistrationFormComponent extends BaseSection {
10989
10995
  },
10990
10996
  "fieldItems": [],
10991
10997
  "imgUrl": '',
10998
+ "grade": null,
10992
10999
  'documents': [],
10993
11000
  "parentAuthorization": false,
10994
11001
  "backupDoc": '',
10995
11002
  "paymentPlanType": 'ANNUALLY',
10996
11003
  "subscriptionPlans": [],
10997
11004
  "selectedComboKits": [],
11005
+ "transportRequest": false,
10998
11006
  "admissionPaymentDetail": {
10999
11007
  "amount": 0,
11000
11008
  "paymentDate": new Date(),
@@ -11475,6 +11483,11 @@ class RegistrationFormComponent extends BaseSection {
11475
11483
  }
11476
11484
  if (field.fieldLabel === 'Grade') {
11477
11485
  this.selectedGradeId = item.id;
11486
+ this.payload.grade = {
11487
+ id: this.selectedGradeId,
11488
+ name: item.name
11489
+ };
11490
+ localStorage.setItem('gId', this.selectedGradeId);
11478
11491
  this.getFeeStructure();
11479
11492
  }
11480
11493
  }
@@ -13284,6 +13297,64 @@ class FeaturedProductModal {
13284
13297
  }
13285
13298
  }
13286
13299
 
13300
+ class CustomerReviewComponent {
13301
+ constructor(activatedRoute, restService) {
13302
+ this.activatedRoute = activatedRoute;
13303
+ this.restService = restService;
13304
+ this.productId = null;
13305
+ this.customerReviews = [];
13306
+ this.totalRating = 4;
13307
+ this.totalRatinsCount = 0;
13308
+ this.overallRatingCount = null;
13309
+ }
13310
+ ngOnInit() {
13311
+ this.activatedRoute.queryParams.subscribe((qParam) => {
13312
+ this.productId = qParam["id"];
13313
+ this.getAllReviews();
13314
+ });
13315
+ }
13316
+ getAllReviews() {
13317
+ if (!this.productId)
13318
+ return;
13319
+ this.restService.getAllReviews(this.productId).subscribe((response) => {
13320
+ this.customerReviews = response.data?.userReviews;
13321
+ this.totalRating = response.data?.averageRating;
13322
+ this.overallRatingCount = response.data?.overallRatingCount;
13323
+ this.totalRatinsCount = this.customerReviews?.length;
13324
+ });
13325
+ }
13326
+ getKeys(object) {
13327
+ if (!object)
13328
+ return [];
13329
+ return Object.keys(object);
13330
+ }
13331
+ getPercentage(value) {
13332
+ value = Number(value ?? '1');
13333
+ return (value / this.customerReviews?.length) * 100;
13334
+ }
13335
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: CustomerReviewComponent, deps: [{ token: i2$4.ActivatedRoute }, { token: RestService }], target: i0.ɵɵFactoryTarget.Component }); }
13336
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: CustomerReviewComponent, isStandalone: true, selector: "simpo-customer-review", inputs: { data: "data", index: "index", edit: "edit", delete: "delete", nextComponentColor: "nextComponentColor" }, ngImport: i0, template: "<section class=\"mainContainer\" style=\"gap: 20px;\" *ngIf=\"customerReviews.length\">\r\n <div class=\"left-panel\">\r\n <h3 [style.color]=\"data?.styles?.background?.accentColor\">Customer Reviews</h3>\r\n <p-rating [(ngModel)]=\"totalRating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div class=\"stars\">\r\n <ng-container *ngFor=\"let rating of overallRatingCount | keyvalue; let idx = index\">\r\n <div class=\"d-flex\" style=\"gap: 5px; margin: 10px 0px\">\r\n <div class=\"count\">{{rating.key}}</div>\r\n <div class=\"rating-bar\">\r\n <p-progressBar [value]=\"getPercentage(rating?.value)\" [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\" [showValue]=\"false\" />\r\n </div>\r\n <div class=\"count\">{{getPercentage(rating?.value)}}%</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"right-panel\">\r\n <h3 [style.color]=\"data?.styles?.background?.accentColor\">Top Reviews</h3>\r\n <div class=\"customer-reviews\">\r\n <ng-container *ngFor=\"let review of customerReviews\">\r\n <div class=\"d-flex align-item-center\" style=\"gap: 5px;\">\r\n <div class=\"name-tag\">{{review.userName | slice: 0:1}}</div>\r\n <span style=\"position: relative; top: 5px;\">{{review.userName | titlecase}}</span>\r\n </div>\r\n <div class=\"d-flex my-2\" style=\"width: fit-content; height: 20px; gap: 10px;\"> \r\n <p-rating [(ngModel)]=\"review.rating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div>{{review.title | titlecase}}</div>\r\n </div>\r\n <div class=\"date\">{{ review.createdTimeStamp | date }}</div>\r\n <div class=\"description\">{{review.review | titlecase}}</div>\r\n <hr>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n <!-- <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\" [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container> -->\r\n\r\n</section>", styles: [".mainContainer{display:flex;justify-content:space-around}.rating-bar{width:300px}h3{margin-bottom:20px}.count{width:20px}.left-panel{width:20%}.right-panel{width:70%}.description{width:80%}.name-tag{display:flex;justify-content:center;align-items:center;padding:5px;border-radius:50%;background-color:#3b82f6;color:#fff;height:30px;width:30px}.customer-reviews{padding-bottom:10px;padding-left:10px}@media screen and (max-width: 475px){.mainContainer{flex-direction:column!important}.left-panel{width:95%;margin:auto}.right-panel{width:95%;margin:auto}.right-panel .description{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: RatingModule }, { kind: "component", type: i3$1.Rating, selector: "p-rating", inputs: ["disabled", "readonly", "stars", "cancel", "iconOnClass", "iconOnStyle", "iconOffClass", "iconOffStyle", "iconCancelClass", "iconCancelStyle", "autofocus"], outputs: ["onRate", "onCancel", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: ProgressBarModule }, { kind: "component", type: i6.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }] }); }
13337
+ }
13338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: CustomerReviewComponent, decorators: [{
13339
+ type: Component,
13340
+ args: [{ selector: 'simpo-customer-review', standalone: true, imports: [
13341
+ RatingModule,
13342
+ FormsModule,
13343
+ CommonModule,
13344
+ ProgressBarModule, SvgDividerComponent
13345
+ ], template: "<section class=\"mainContainer\" style=\"gap: 20px;\" *ngIf=\"customerReviews.length\">\r\n <div class=\"left-panel\">\r\n <h3 [style.color]=\"data?.styles?.background?.accentColor\">Customer Reviews</h3>\r\n <p-rating [(ngModel)]=\"totalRating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div class=\"stars\">\r\n <ng-container *ngFor=\"let rating of overallRatingCount | keyvalue; let idx = index\">\r\n <div class=\"d-flex\" style=\"gap: 5px; margin: 10px 0px\">\r\n <div class=\"count\">{{rating.key}}</div>\r\n <div class=\"rating-bar\">\r\n <p-progressBar [value]=\"getPercentage(rating?.value)\" [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\" [showValue]=\"false\" />\r\n </div>\r\n <div class=\"count\">{{getPercentage(rating?.value)}}%</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"right-panel\">\r\n <h3 [style.color]=\"data?.styles?.background?.accentColor\">Top Reviews</h3>\r\n <div class=\"customer-reviews\">\r\n <ng-container *ngFor=\"let review of customerReviews\">\r\n <div class=\"d-flex align-item-center\" style=\"gap: 5px;\">\r\n <div class=\"name-tag\">{{review.userName | slice: 0:1}}</div>\r\n <span style=\"position: relative; top: 5px;\">{{review.userName | titlecase}}</span>\r\n </div>\r\n <div class=\"d-flex my-2\" style=\"width: fit-content; height: 20px; gap: 10px;\"> \r\n <p-rating [(ngModel)]=\"review.rating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div>{{review.title | titlecase}}</div>\r\n </div>\r\n <div class=\"date\">{{ review.createdTimeStamp | date }}</div>\r\n <div class=\"description\">{{review.review | titlecase}}</div>\r\n <hr>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n <!-- <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\" [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container> -->\r\n\r\n</section>", styles: [".mainContainer{display:flex;justify-content:space-around}.rating-bar{width:300px}h3{margin-bottom:20px}.count{width:20px}.left-panel{width:20%}.right-panel{width:70%}.description{width:80%}.name-tag{display:flex;justify-content:center;align-items:center;padding:5px;border-radius:50%;background-color:#3b82f6;color:#fff;height:30px;width:30px}.customer-reviews{padding-bottom:10px;padding-left:10px}@media screen and (max-width: 475px){.mainContainer{flex-direction:column!important}.left-panel{width:95%;margin:auto}.right-panel{width:95%;margin:auto}.right-panel .description{width:100%}}\n"] }]
13346
+ }], ctorParameters: () => [{ type: i2$4.ActivatedRoute }, { type: RestService }], propDecorators: { data: [{
13347
+ type: Input
13348
+ }], index: [{
13349
+ type: Input
13350
+ }], edit: [{
13351
+ type: Input
13352
+ }], delete: [{
13353
+ type: Input
13354
+ }], nextComponentColor: [{
13355
+ type: Input
13356
+ }] } });
13357
+
13287
13358
  class ProductDescComponent extends BaseSection {
13288
13359
  constructor(platformId, _eventService, router, activatedRoute, restService, cartService, storageService, messageService, metaTagService, titleService, bottomSheet) {
13289
13360
  super();
@@ -13716,8 +13787,11 @@ class ProductDescComponent extends BaseSection {
13716
13787
  togglePriceBreakDown() {
13717
13788
  this.isPriceBreakup = !this.isPriceBreakup;
13718
13789
  }
13790
+ getDifference(sellingPrice, mrp) {
13791
+ return sellingPrice - mrp;
13792
+ }
13719
13793
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductDescComponent, deps: [{ token: PLATFORM_ID }, { token: EventsService }, { token: i2$4.Router }, { token: i2$4.ActivatedRoute }, { token: RestService }, { token: CartService }, { token: StorageServiceService }, { token: i5$1.MessageService }, { token: i1$1.Meta }, { token: i1$1.Title }, { token: i8$3.MatBottomSheet }], target: i0.ɵɵFactoryTarget.Component }); }
13720
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ProductDescComponent, isStandalone: true, selector: "simpo-product-desc", inputs: { data: "data", responseData: "responseData", index: "index", edit: "edit", delete: "delete", customClass: "customClass", nextComponentColor: "nextComponentColor" }, host: { listeners: { "window: resize": "getScreenSize($event)" } }, providers: [MessageService], viewQueries: [{ propertyName: "reviewComponent", first: true, predicate: CustomerReviewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading\">\r\n <p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" key=\"wishlist\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [simpoBackground]=\"styles?.background\"\r\n simpoHover (hovering)=\"showEditTabs($event)\" [attr.style]=\"customClass\">\r\n\r\n <div style=\"position: relative;\" class=\"speeddial-linear\" *ngIf=\"isMobile\">\r\n <p-speedDial [model]=\"items\" direction=\"up\" [buttonStyle]=\"{'border-radius': '50%', 'height': '30px'}\" />\r\n </div>\r\n <section class=\"container\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"display-none\"><a href=\"javascript:void(0)\" style=\"text-decoration: none; color: #0267C1\"\r\n (click)=\"routeToHome()\">Home</a> /\r\n <span>{{ responseData?.name | titlecase }}</span>\r\n </div>\r\n <div class=\"row h-100\" style=\"margin-top: 25px;\" class=\"above-height\"\r\n [ngStyle]=\"{'min-height: 95vh': isMobile, 'max-width: 95vh': !isMobile}\">\r\n <div class=\"col-lg-6 col-12 h-100\" class=\"height\">\r\n <div class=\"prod-img-block\">\r\n <ng-container *ngTemplateOutlet=\"ImageSection\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 col-12 h-100 product-detail\">\r\n <ng-container *ngIf=\"isMobile\">\r\n <ng-container *ngTemplateOutlet=\"variants\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngTemplateOutlet=\"ProductDesc\"></ng-container>\r\n\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"ActionBtn\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"variants\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"product-desc body-large d-block\" *ngIf=\"responseData?.brief\"\r\n [innerHTML]=\"responseData.brief\"></div>\r\n <div class=\"product-sku\">\r\n <div *ngIf=\"responseData?.itemInventory\">SKU : {{responseData.itemInventory?.openingStock}}</div>\r\n <div\r\n *ngIf=\"responseData?.itemCategorisation?.itemCategories && (responseData?.itemCategorisation?.itemCategories?.length || 0) > 0\">\r\n Category : <a href=\"javascript:void(0)\" (click)=\"goToFilter(cat.refName)\"\r\n *ngFor=\"let cat of responseData?.itemCategorisation?.itemCategories;let idx = index\">{{cat.refName |\r\n titlecase}} <ng-container\r\n *ngIf=\"(idx+1) != responseData?.itemCategorisation?.itemCategories?.length\">,</ng-container>\r\n </a></div>\r\n <div *ngIf=\"(responseData?.itemCategorisation?.productTags?.length || 0) > 0\">Tags : <span\r\n *ngFor=\"let tag of responseData?.itemCategorisation?.productTags\">{{tag.tagName}},\r\n </span></div>\r\n </div>\r\n <!-- <ng-container *ngTemplateOutlet=\"SocialIcons\"></ng-container> -->\r\n <!-- <ng-container>\r\n <ng-container *ngTemplateOutlet=\"ReviewSection\"></ng-container>\r\n </ng-container> -->\r\n </div>\r\n </div>\r\n <div class=\"row prod-desc\">\r\n\r\n <div>\r\n <p-panel header=\"Description\" [toggleable]=\"true\" [collapsed]=\"true\" [collapsed]=\"isDescriptionCollapsed\"\r\n *ngIf=\"responseData?.descriptor?.name\" styleClass=\"smooth-panel\" (click)=\"toggleDescription()\">\r\n <div style=\"margin-top: 10px;\" class=\"body-large brief-desc\" *ngIf=\"responseData?.descriptor\"\r\n [innerHTML]=\"responseData?.descriptor?.name\"></div>\r\n </p-panel>\r\n <ng-container *ngIf=\"subIndustryName == 'Ecommerce Jewellery'\">\r\n <p-panel header=\"Pricing Breakdown\" [toggleable]=\"true\" [collapsed]=\"true\" styleClass=\"smooth-panel\" [collapsed]=\"isPriceBreakup\" (click)=\"togglePriceBreakDown()\">\r\n <div class=\"jewellery-table-container\">\r\n <table class=\"jewellery-table\">\r\n <ng-container *ngFor=\"let ele of responseData?.materials\">\r\n <tr class=\"material-header\">\r\n <td colspan=\"8\">{{ele.materialType | titlecase}}</td>\r\n </tr>\r\n <tr class=\"column-header\">\r\n <th colspan=\"2\">{{ele.materialType | titlecase}} Type</th>\r\n <th colspan=\"2\">Net Weight/Gram</th>\r\n <th colspan=\"2\">Price/Gram</th>\r\n <th colspan=\"2\">Value</th>\r\n </tr>\r\n <tr class=\"material-row\">\r\n <td colspan=\"2\">{{ getCarat(ele.materialPurity)}}</td>\r\n <td colspan=\"2\">{{ele.primaryMaterialWeight}}</td>\r\n <td colspan=\"2\">\u20B9{{ getPricePerGram(ele.primaryMaterialWeight,ele.materialPrice) |\r\n number:'1.2-2'}}</td>\r\n <td colspan=\"2\">\u20B9{{ele.materialPrice | number:'1.2-2'}}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"material-header\">\r\n <td colspan=\"8\">Making Charges</td>\r\n </tr>\r\n <tr class=\"column-header\">\r\n <th colspan=\"2\">Component</th>\r\n <th colspan=\"2\">Net Weight</th>\r\n <th colspan=\"2\">Making Charge %</th>\r\n <th colspan=\"2\">Value</th>\r\n </tr>\r\n <tr class=\"material-row\">\r\n <td colspan=\"2\">Making Charges</td>\r\n <td colspan=\"2\">{{responseData?.baseWeight}}</td>\r\n <td colspan=\"2\">{{responseData?.makingChargePercentage}}</td>\r\n <td colspan=\"2\">\u20B9{{responseData?.jewelryPriceBreakup?.makingChargeAmount | number:'1.2-2'}}</td>\r\n </tr>\r\n\r\n <!-- <tr class=\"charges-header\">\r\n <td colspan=\"4\">Making Charges%</td>\r\n <td colspan=\"4\">{{responseData?.makingChargePercentage ?? 0}}%</td>\r\n </tr> -->\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Total Value</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{responseData?.jewelryPriceBreakup?.priceWithoutTax |\r\n number:'1.2-2'}}</td>\r\n </tr>\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Tax Amount ({{(responseData?.jewelryPriceBreakup?.taxRef?.taxPercent)+ \"%\" + \" \" +\r\n \"GST\"}})</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{responseData?.jewelryPriceBreakup?.taxAmount |\r\n number:'1.2-2'}}</td>\r\n </tr>\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Total</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{(responseData?.jewelryPriceBreakup.priceWithoutTax +\r\n responseData?.jewelryPriceBreakup.taxAmount) | number:'1.2-2'}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </p-panel>\r\n </ng-container>\r\n </div>\r\n\r\n\r\n <!-- <div class=\"tab-group\">\r\n <div class=\"tab\" data-bs-toggle=\"collapse\" href=\"#collapseExample\" >Description</div>\r\n </div>\r\n <div style=\"margin-top: 10px;\" class=\"body-large collapse\" id=\"collapseExample\" *ngIf=\"responseData?.descriptor\"\r\n [innerHTML]=\"responseData?.descriptor?.name\"></div> -->\r\n </div>\r\n </section>\r\n <ng-container *ngIf=\"relatedProductData?.length\">\r\n <simpo-featured-products [edit]=\"false\" [data]=\"featureProductData\" [responseData]=\"relatedProductData\"\r\n [isRelatedProduct]=\"true\" (changeDetailProduct)=\"changeProduct($event)\"></simpo-featured-products>\r\n </ng-container>\r\n <ng-container *ngIf=\"recentViewItemList?.length\">\r\n <simpo-featured-products [edit]=\"false\" [data]=\"recentViewedData\" [responseData]=\"recentViewItemList\"\r\n [isRelatedProduct]=\"true\"></simpo-featured-products>\r\n </ng-container>\r\n <!-- <ng-container>\r\n <simpo-customer-review [data]=\"data\"></simpo-customer-review>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\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 </section>\r\n</ng-container>\r\n\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" 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\r\n\r\n<div class=\"mobile-footer\">\r\n <div class=\"icons\">\r\n <div (click)=\"goToCart()\">\r\n <mat-icon>shopping_cart</mat-icon>\r\n </div>\r\n <div>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">favorite</mat-icon>\r\n <!-- <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">bookmark</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">bookmark_border</mat-icon> -->\r\n </div>\r\n </div>\r\n <div class=\"out-of-stock\" *ngIf=\"isItemOutOfStock\">Out of Stock</div>\r\n <div class=\"quantity\" *ngIf=\"responseData?.quantity && !isItemOutOfStock\">\r\n <div class=\"plus\" (click)=\"addToCart('SUBSTRACT')\">-</div>\r\n <div style=\"width: 50px;\" class=\"d-flex justify-content-center\">{{responseData.quantity}}</div>\r\n <div class=\"minus\" (click)=\"addToCart('ADD')\">+</div>\r\n </div>\r\n <button class=\"add-btn\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\" (click)=\"addToCart()\"\r\n *ngIf=\"!responseData?.quantity && !isItemOutOfStock\">{{data?.action?.buttons?.[0]?.content?.label}}</button>\r\n</div>\r\n\r\n<ng-template #ReviewSection>\r\n <div class=\"review-sec\">\r\n <div class=\"title\">Customer Review</div>\r\n <p-rating [cancel]=\"false\" [readonly]=\"true\" [(ngModel)]=\"totalReview\" />\r\n <span>Be the first to write a review</span>\r\n <button class=\"mt-3\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"showReview = !showReview\">{{ !showReview ? 'Add\r\n Review' : 'Cancel Review'}}</button>\r\n <ng-container *ngIf=\"showReview\">\r\n <hr />\r\n <div class=\"user-review\">\r\n <div class=\"title\">Write a review</div>\r\n <span class=\"secondary-text\">RATING</span>\r\n <p-rating [(ngModel)]=\"productReview\" [cancel]=\"false\" [readonly]=\"false\" />\r\n <div>\r\n <span class=\"secondary-text\">Review Title</span>\r\n <input type=\"text\" placeholder=\"Give your review a title\" [(ngModel)]=\"reviewTitle\">\r\n </div>\r\n <div>\r\n <span class=\"secondary-text\">Review</span>\r\n <textarea placeholder=\"Write your comments here\" [(ngModel)]=\"reviewDescription\"></textarea>\r\n </div>\r\n <div class=\"review-action-btn\">\r\n <button [style.borderColor]=\"data?.styles?.background?.accentColor\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"showReview = false\">Cancel review</button>\r\n <button simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n (click)=\"addProductReview()\"\r\n [disabled]=\"productReview == 0 && reviewTitle?.length == 0 && reviewDescription?.length == 0\">Submit\r\n review</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template #SocialIcons>\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"data?.content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"data?.content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of data?.content?.socialLinks?.channels\">\r\n <div style=\"position: relative;margin-right: 10px;\">\r\n <simpo-socia-icons [socialIconData]=\"item\" [color]=\"data?.styles?.background?.accentColor\"\r\n [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ActionBtn>\r\n <div class=\"button-parent\">\r\n <div class=\"out-of-stock\" *ngIf=\"isItemOutOfStock\">Out of Stock</div>\r\n <div class=\"quantity\" *ngIf=\"responseData?.quantity\">\r\n <div class=\"plus\" (click)=\"addToCart('SUBSTRACT')\">-</div>\r\n <div style=\"width: 50px;\" class=\"d-flex justify-content-center\">{{responseData.quantity}}</div>\r\n <div class=\"minus\" (click)=\"addToCart('ADD')\">+</div>\r\n </div>\r\n <div *ngIf=\"!responseData?.quantity && !isItemOutOfStock\">\r\n <button class=\"send-btn\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n (click)=\"addToCart()\">{{data?.action?.buttons?.[0]?.content?.label}}</button>\r\n </div>\r\n <div class=\"favourite\">\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">favorite</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #variants>\r\n <ng-container *ngFor=\"let varient of varients | keyvalue\">\r\n <div class=\"mb-15\">\r\n <div class=\"varient-key\">{{varient.key}}</div>\r\n <div class=\"d-flex\" style=\"gap: 5px;\">\r\n\r\n <!-- [attr.class]=\"!isVarientAvailable(varient) ? 'varient-tag disable-varient' : 'varient-tag'\" -->\r\n <div *ngFor=\"let varientValue of varient.value\" class=\"varient-tag\"\r\n [style.color]=\"selectedVarient.get(varient.key) == varientValue ? 'white' : data?.styles?.background?.accentColor\"\r\n [style.backgroundColor]=\"selectedVarient.get(varient.key) == varientValue ? data?.styles?.background?.accentColor : ''\"\r\n (click)=\"selectVarient(varient.key, varientValue)\">{{varientValue}}</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #ProductDesc>\r\n <div class=\"heading-large trim-text\" class=\"product-heading\">{{responseData?.name}}</div>\r\n <div class=\"d-flex\" style=\"gap: 10px; align-items: center; margin-top: 15px;\">\r\n <div class=\"price\" [ngClass]=\"{'discount-price': responseData?.price?.discountedPrice}\"\r\n *ngIf=\"responseData?.price?.discountedPrice && responseData.price.discountedPrice > 0\"><span\r\n [innerHTML]='currency'></span>\r\n {{responseData?.price?.discountedPrice}}</div>\r\n <div class=\"price\" *ngIf=\"responseData?.price?.sellingPrice\"\r\n [ngClass]=\"{'strike-through': responseData?.price?.discountedPrice}\"><span [innerHTML]='currency'></span>\r\n {{responseData?.price?.sellingPrice | number:'1.0-0'}}</div>\r\n <div class=\"tax-text\">(Inclusive all taxes)</div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #ImageSection>\r\n <ng-container *ngIf=\"!varientLoading\">\r\n <div class=\"img-list\" *ngIf=\"screenWidth > 500\">\r\n <ng-container *ngFor=\"let img of itemImages\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"img.imgUrl\"\r\n alt=\"\" class=\"img\" (click)=\"changeImg(img.imgUrl)\"\r\n [style.borderColor]=\"img.imgUrl == currentImg ? data?.styles?.background?.accentColor : 'transparent'\">\r\n </ng-container>\r\n </div>\r\n <div class=\"item-img\">\r\n <ng-container *ngIf=\"currentImg\">\r\n\r\n <mat-icon class=\"share-icon\" (click)=\"shareProduct()\">share</mat-icon>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <img [src]=\"currentImg\" class=\"img\" style=\"height: 100%; width: 100%;\">\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <img loading=\"lazy\" [src]=\"currentImg\" alt=\"\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentImg\">\r\n <img loading=\"lazy\" src=\"https://i.postimg.cc/hPS2JpV0/no-image-available.jpg\" alt=\"\">\r\n </ng-container>\r\n </div>\r\n <div class=\"img-list\" *ngIf=\"screenWidth <= 500\">\r\n <ng-container *ngFor=\"let img of itemImages\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"img.imgUrl\"\r\n alt=\"\" class=\"img\" (click)=\"changeImg(img.imgUrl)\"\r\n [style.borderColor]=\"img.imgUrl == currentImg ? data?.styles?.background?.accentColor : 'transparent'\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"item-img\" *ngIf=\"varientLoading\">\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '100%',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n<!-- <div class=\"modal fade\" id=\"itemVarients\" tabindex=\"-1\" aria-labelledby=\"itemVarients\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Right-to-Left Modal</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n This content is aligned from right to left.\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Save changes</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->", styles: [".product-desc{display:flex}.strike-through{text-decoration:line-through;color:#d3d3d3}::ng-deep .smooth-panel .p-panel-header{cursor:pointer}.fw-600{font-weight:600}.jewellery-table-container{padding:15px;border-radius:8px}.jewellery-table{width:100%;border-collapse:collapse;border:1px solid #ddd;transition:all .3s ease}.jewellery-table th,.jewellery-table td{border:1px solid #ddd;padding:12px;text-align:left;transition:background-color .2s ease}.material-header td{background-color:#f8f9fa;font-weight:700;font-size:16px}.column-header{background-color:#f1f1f1}.column-header th{font-weight:600}.material-row:hover{background-color:#f5f5f5}.charges-header th,.total-header th{background-color:#eaeaea;font-weight:700}.total-row td{font-weight:700;font-size:18px;background-color:#f8f8f8}@media screen and (max-width: 600px){.jewellery-table{font-size:14px}.jewellery-table th,.jewellery-table td{padding:8px}}.share-icon{border:1.5px solid rgba(211,211,211,.382);position:absolute;top:10px;right:10px;z-index:1;opacity:.5;border-radius:50%;padding:5px;height:30px;width:30px;display:flex;align-items:center;justify-content:center;font-size:16px;box-shadow:#00000003 0 1px 2px;cursor:pointer}.row{margin-top:25px}.prod-img-block{height:100%;display:flex;gap:5px}.img-list{display:flex;flex-direction:column;gap:5px;max-height:460px;overflow:scroll}.img-list img{height:100px;width:100%;cursor:pointer}ngx-image-zoom{display:inline-block;position:relative}.ngx-image-zoom__zoomed{z-index:9999;max-width:100%;max-height:100%;object-fit:contain}.item-img{position:relative;width:500px;height:500px;overflow:hidden}.item-img img{width:100%!important;height:100%!important}.fast-checkout{position:absolute;top:10px;right:10px;display:flex;gap:10px;width:fit-content}.fast-checkout img{cursor:pointer}.selling-fast-tag{background-color:#fff;color:#000;padding:5px 10px;border-radius:3px;font-weight:700}.price{font-weight:600;font-family:Poppins;font-size:20px}.product-desc{margin-top:15px}.button-parent{margin-top:15px;display:flex;gap:10px;align-items:center}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:50px;width:155px;justify-content:space-between;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.trim-text{-webkit-line-clamp:3!important}.product-sku{margin-top:20px}.product-sku div{font-weight:400;font-size:15px;color:#848484;font-family:Poppins;margin-top:.5rem}.tab-group{display:flex;gap:10px;overflow-y:scroll}.tab{font-family:Poppins;font-weight:500;font-size:18px;color:#222;padding-bottom:2px;border-bottom:1px solid black;max-width:max-content}.img-list>img{border:2px solid transparent;border-radius:3px}.out-of-stock{background-color:#d3d3d333;color:#000;padding:15px 20px;border-radius:5px;margin-top:15px}.varient-key{font-weight:500;font-size:16px;margin-top:10px;margin-bottom:5px}.varient-tag{background-color:#fff;color:#000;border-radius:3px;border:1px solid #d3d3d347;margin-right:5px;padding:5px 15px;cursor:pointer}.send-btn{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:50px!important;width:130px!important;justify-content:space-between;margin-top:1rem;border-radius:5px}.disable-varient{text-decoration:line-through;cursor:not-allowed}.review-sec{box-shadow:#00000029 0 1px 4px;width:100%;padding:20px;margin:20px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:5px}.review-sec .title{font-size:26px;margin-bottom:10px}.review-sec button{border-radius:20px!important;background-color:transparent;padding:5px 15px;width:fit-content!important;margin:auto}.review-sec hr{border-top:1.5px solid lightgray;width:100%}.review-sec .user-review{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:100%}.review-sec .user-review>div{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%}.review-sec .user-review>div input{width:80%;margin:auto;border-radius:20px;padding:10px 10px 10px 20px;border:1.5px solid lightgray}.review-sec .user-review>div textarea{width:80%;border-radius:5px;padding:10px;border:1.5px solid lightgray}.review-sec .user-review .review-action-btn{display:flex;flex-direction:row;gap:10px}.review-sec .user-review .review-action-btn button{width:fit-content!important;font-size:16px!important;margin:5px!important;border:1px solid transparent}.review-sec .user-review .secondary-text{font-size:18px}.product-detail{overflow-y:auto}.above-height{height:90vh}.mobile-footer{display:none}@media (min-width: 1024px){.height{width:min-content}.above-height{width:100%;display:flex}.product-detail{padding:2%}.product-heading{font-size:35px}.prod-img-block{height:100%;display:flex;gap:5px}}@media only screen and (max-width: 475px){.mobile-footer{width:100vw;height:60px;box-shadow:#64646f33 -2px -16px 29px;position:fixed;bottom:0;z-index:100000001;background-color:#fff;display:flex!important;justify-content:space-around;align-items:center}.mobile-footer .icons{margin-top:5px;display:flex;color:#000;align-items:center;justify-content:center;gap:15px;width:20%}.mobile-footer .icons .mat-icon{font-size:26px}.product-desc,.brief-desc{font-size:16px}.total-container{padding-top:10px!important;padding-bottom:10px!important}.out-of-stock,.add-btn,.quantity{text-align:center;width:70%!important;padding:5px;margin-top:0!important}.quantity{border:1px solid rgba(211,211,211,.332)!important}.item-img{width:100%!important;height:348px}.item-img img{width:100%;height:348px!important}.display-none{display:none}.prod-img-block{flex-direction:column;gap:5px}.img-list{flex-direction:row;overflow-x:scroll}.img-list img{width:25%;border:2px solid lightgray;cursor:pointer}.product-detail,.prod-desc{margin-top:20px}.product-img{height:220px}.send-btn{padding:.5rem 1rem!important}.favourite .mat-icon{padding:10px!important;position:relative!important;min-height:0px!important;height:43px!important;top:8px!important;min-width:52px!important}.review-sec :is(input,textarea){width:100%!important}.height{width:100%}.above-height{padding:0;min-height:95vh!important;height:unset!important}.product-heading{font-size:16px}}.send-btn{font-size:16px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important;margin-top:1rem}.favourite .mat-icon{min-height:55px;min-width:55px;font-size:35px;display:flex;align-items:center;justify-content:center;border-radius:5px;padding:30px 25px 25px;position:relative;top:5px;cursor:pointer}a{text-decoration:none}.body-large{color:#848484}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.modal-dialog{height:100vh;position:absolute;top:0;margin:0;right:0;border:none}.modal-content{height:100%;border:none;border-radius:0!important}@media (min-width:768px) and (max-width:991px){.item-img{position:relative;width:auto!important;height:auto!important;overflow:hidden}.item-img img{height:auto!important;width:auto!important}.height{width:min-content}.above-height{width:100%;padding:2%;display:flex;flex-direction:column}.product-detail{padding:0vw 42vw 0vw 2vw}.prod-img-block{height:100%;display:flex;gap:5px}}@media (min-width:911px){.product-detail{padding:0% 34% 0% 2%}.above-height{display:flex}.prod-img-block{height:100%;display:flex;gap:5px}}@media (min-width:1024px){.product-detail{padding:0% 0% 0% 2%}.above-height{display:flex}.product-headig{font-size:35px}.prod-img-block{height:100%;display:flex;gap:5px}}.mat-accordion .mat-expansion-panel:last-of-type{box-shadow:none}.mb-15{margin-bottom:15px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i7$1.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "ngmodule", type: NgxImageZoomModule }, { kind: "component", type: FeaturedProductsComponent, selector: "simpo-featured-products", inputs: ["data", "responseData", "index", "isRelatedProduct", "edit", "customClass", "delete", "nextComponentColor"], outputs: ["changeDetailProduct"] }, { kind: "ngmodule", type: MatBottomSheetModule }, { kind: "component", type: SociaIconsComponent, selector: "simpo-socia-icons", inputs: ["socialIconData", "color", "sectionId", "iconColor"] }, { kind: "ngmodule", type: RatingModule }, { kind: "component", type: i3$1.Rating, selector: "p-rating", inputs: ["disabled", "readonly", "stars", "cancel", "iconOnClass", "iconOnStyle", "iconOffClass", "iconOffStyle", "iconCancelClass", "iconCancelStyle", "autofocus"], outputs: ["onRate", "onCancel", "onFocus", "onBlur"] }, { kind: "ngmodule", type: SpeedDialModule }, { kind: "component", type: i15.SpeedDial, selector: "p-speedDial", inputs: ["id", "model", "visible", "style", "className", "direction", "transitionDelay", "type", "radius", "mask", "disabled", "hideOnClickOutside", "buttonStyle", "buttonClassName", "maskStyle", "maskClassName", "showIcon", "hideIcon", "rotateAnimation", "ariaLabel", "ariaLabelledBy"], outputs: ["onVisibleChange", "visibleChange", "onClick", "onShow", "onHide"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i13$1.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "ngmodule", type: PanelModule }, { kind: "component", type: i17.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }] }); }
13794
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ProductDescComponent, isStandalone: true, selector: "simpo-product-desc", inputs: { data: "data", responseData: "responseData", index: "index", edit: "edit", delete: "delete", customClass: "customClass", nextComponentColor: "nextComponentColor" }, host: { listeners: { "window: resize": "getScreenSize($event)" } }, providers: [MessageService], viewQueries: [{ propertyName: "reviewComponent", first: true, predicate: CustomerReviewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading\">\r\n <p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" key=\"wishlist\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [simpoBackground]=\"styles?.background\"\r\n simpoHover (hovering)=\"showEditTabs($event)\" [attr.style]=\"customClass\">\r\n\r\n <div style=\"position: relative;\" class=\"speeddial-linear\" *ngIf=\"isMobile\">\r\n <p-speedDial [model]=\"items\" direction=\"up\" [buttonStyle]=\"{'border-radius': '50%', 'height': '30px'}\" />\r\n </div>\r\n <section class=\"container\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"display-none\"><a href=\"javascript:void(0)\" style=\"text-decoration: none; color: #0267C1\"\r\n (click)=\"routeToHome()\">Home</a> /\r\n <span>{{ responseData?.name | titlecase }}</span>\r\n </div>\r\n <div class=\"row h-100\" style=\"margin-top: 25px;\" class=\"above-height\"\r\n [ngStyle]=\"{'min-height: 95vh': isMobile, 'max-width: 95vh': !isMobile}\">\r\n <div class=\"col-lg-6 col-12 h-100\" class=\"height\">\r\n <div class=\"prod-img-block\">\r\n <ng-container *ngTemplateOutlet=\"ImageSection\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 col-12 h-100 product-detail\">\r\n <ng-container *ngIf=\"isMobile\">\r\n <ng-container *ngTemplateOutlet=\"variants\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngTemplateOutlet=\"ProductDesc\"></ng-container>\r\n\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"ActionBtn\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"variants\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"product-desc body-large d-block\" *ngIf=\"responseData?.brief\"\r\n [innerHTML]=\"responseData.brief\"></div>\r\n <div class=\"product-sku\">\r\n <div *ngIf=\"responseData?.itemInventory\">SKU : {{responseData.itemInventory?.openingStock}}</div>\r\n <div\r\n *ngIf=\"responseData?.itemCategorisation?.itemCategories && (responseData?.itemCategorisation?.itemCategories?.length || 0) > 0\">\r\n Category : <a href=\"javascript:void(0)\" (click)=\"goToFilter(cat.refName)\"\r\n *ngFor=\"let cat of responseData?.itemCategorisation?.itemCategories;let idx = index\">{{cat.refName |\r\n titlecase}} <ng-container\r\n *ngIf=\"(idx+1) != responseData?.itemCategorisation?.itemCategories?.length\">,</ng-container>\r\n </a></div>\r\n <div *ngIf=\"(responseData?.itemCategorisation?.productTags?.length || 0) > 0\">Tags : <span\r\n *ngFor=\"let tag of responseData?.itemCategorisation?.productTags\">{{tag.tagName}},\r\n </span></div>\r\n </div>\r\n <!-- <ng-container *ngTemplateOutlet=\"SocialIcons\"></ng-container> -->\r\n <!-- <ng-container>\r\n <ng-container *ngTemplateOutlet=\"ReviewSection\"></ng-container>\r\n </ng-container> -->\r\n </div>\r\n </div>\r\n <div class=\"row prod-desc\">\r\n\r\n <div>\r\n <p-panel header=\"Description\" [toggleable]=\"true\" [collapsed]=\"true\" [collapsed]=\"isDescriptionCollapsed\"\r\n *ngIf=\"responseData?.descriptor?.name\" styleClass=\"smooth-panel\" (click)=\"toggleDescription()\">\r\n <div style=\"margin-top: 10px;\" class=\"body-large brief-desc\" *ngIf=\"responseData?.descriptor\"\r\n [innerHTML]=\"responseData?.descriptor?.name\"></div>\r\n </p-panel>\r\n <ng-container *ngIf=\"subIndustryName == 'Ecommerce Jewellery'\">\r\n <p-panel header=\"Pricing Breakdown\" [toggleable]=\"true\" styleClass=\"smooth-panel\" [collapsed]=\"isPriceBreakup\" (click)=\"togglePriceBreakDown()\">\r\n <div class=\"jewellery-table-container\">\r\n <table class=\"jewellery-table\">\r\n <ng-container *ngFor=\"let ele of responseData?.materials\">\r\n <tr class=\"material-header\">\r\n <td colspan=\"8\">{{ele.materialType | titlecase}}</td>\r\n </tr>\r\n <tr class=\"column-header\">\r\n <th colspan=\"2\">{{ele.materialType | titlecase}} Type</th>\r\n <th colspan=\"2\">Net Weight/Gram</th>\r\n <th colspan=\"2\">Price/Gram</th>\r\n <th colspan=\"2\">Value</th>\r\n </tr>\r\n <tr class=\"material-row\">\r\n <td colspan=\"2\">{{ getCarat(ele.materialPurity)}}</td>\r\n <td colspan=\"2\">{{ele.primaryMaterialWeight}}</td>\r\n <td colspan=\"2\">\u20B9{{ getPricePerGram(ele.primaryMaterialWeight,ele.materialPrice) |\r\n number:'1.2-2'}}</td>\r\n <td colspan=\"2\">\u20B9{{ele.materialPrice | number:'1.2-2'}}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"material-header\">\r\n <td colspan=\"8\">Making Charges</td>\r\n </tr>\r\n <tr class=\"column-header\">\r\n <th colspan=\"2\">Component</th>\r\n <th colspan=\"2\">Net Weight</th>\r\n <th colspan=\"2\">Making Charge %</th>\r\n <th colspan=\"2\">Value</th>\r\n </tr>\r\n <tr class=\"material-row\">\r\n <td colspan=\"2\">Making Charges</td>\r\n <td colspan=\"2\">{{responseData?.baseWeight}}</td>\r\n <td colspan=\"2\">{{responseData?.makingChargePercentage}}</td>\r\n <td colspan=\"2\">\u20B9{{responseData?.jewelryPriceBreakup?.makingChargeAmount | number:'1.2-2'}}</td>\r\n </tr>\r\n\r\n <!-- <tr class=\"charges-header\">\r\n <td colspan=\"4\">Making Charges%</td>\r\n <td colspan=\"4\">{{responseData?.makingChargePercentage ?? 0}}%</td>\r\n </tr> -->\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Total Value</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{responseData?.jewelryPriceBreakup?.priceWithoutTax |\r\n number:'1.2-2'}}</td>\r\n </tr>\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Tax Amount ({{(responseData?.jewelryPriceBreakup?.taxRef?.taxPercent)+ \"%\" + \" \" +\r\n \"GST\"}})</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{responseData?.jewelryPriceBreakup?.taxAmount |\r\n number:'1.2-2'}}</td>\r\n </tr>\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Total</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{(responseData?.jewelryPriceBreakup.priceWithoutTax +\r\n responseData?.jewelryPriceBreakup.taxAmount) | number:'1.2-2'}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </p-panel>\r\n </ng-container>\r\n </div>\r\n\r\n\r\n <!-- <div class=\"tab-group\">\r\n <div class=\"tab\" data-bs-toggle=\"collapse\" href=\"#collapseExample\" >Description</div>\r\n </div>\r\n <div style=\"margin-top: 10px;\" class=\"body-large collapse\" id=\"collapseExample\" *ngIf=\"responseData?.descriptor\"\r\n [innerHTML]=\"responseData?.descriptor?.name\"></div> -->\r\n </div>\r\n </section>\r\n <ng-container *ngIf=\"relatedProductData?.length\">\r\n <simpo-featured-products [edit]=\"false\" [data]=\"featureProductData\" [responseData]=\"relatedProductData\"\r\n [isRelatedProduct]=\"true\" (changeDetailProduct)=\"changeProduct($event)\"></simpo-featured-products>\r\n </ng-container>\r\n <ng-container *ngIf=\"recentViewItemList?.length\">\r\n <simpo-featured-products [edit]=\"false\" [data]=\"recentViewedData\" [responseData]=\"recentViewItemList\"\r\n [isRelatedProduct]=\"true\"></simpo-featured-products>\r\n </ng-container>\r\n <!-- <ng-container>\r\n <simpo-customer-review [data]=\"data\"></simpo-customer-review>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\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 </section>\r\n</ng-container>\r\n\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" 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\r\n\r\n<div class=\"mobile-footer\">\r\n <div class=\"icons\">\r\n <div (click)=\"goToCart()\">\r\n <mat-icon>shopping_cart</mat-icon>\r\n </div>\r\n <div>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">favorite</mat-icon>\r\n <!-- <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">bookmark</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">bookmark_border</mat-icon> -->\r\n </div>\r\n </div>\r\n <div class=\"out-of-stock\" *ngIf=\"isItemOutOfStock\">Out of Stock</div>\r\n <div class=\"quantity\" *ngIf=\"responseData?.quantity && !isItemOutOfStock\">\r\n <div class=\"plus\" (click)=\"addToCart('SUBSTRACT')\">-</div>\r\n <div style=\"width: 50px;\" class=\"d-flex justify-content-center\">{{responseData.quantity}}</div>\r\n <div class=\"minus\" (click)=\"addToCart('ADD')\">+</div>\r\n </div>\r\n <button class=\"add-btn\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\" (click)=\"addToCart()\"\r\n *ngIf=\"!responseData?.quantity && !isItemOutOfStock\">{{data?.action?.buttons?.[0]?.content?.label}}</button>\r\n</div>\r\n\r\n<ng-template #ReviewSection>\r\n <div class=\"review-sec\">\r\n <div class=\"title\">Customer Review</div>\r\n <p-rating [cancel]=\"false\" [readonly]=\"true\" [(ngModel)]=\"totalReview\" />\r\n <span>Be the first to write a review</span>\r\n <button class=\"mt-3\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"showReview = !showReview\">{{ !showReview ? 'Add\r\n Review' : 'Cancel Review'}}</button>\r\n <ng-container *ngIf=\"showReview\">\r\n <hr />\r\n <div class=\"user-review\">\r\n <div class=\"title\">Write a review</div>\r\n <span class=\"secondary-text\">RATING</span>\r\n <p-rating [(ngModel)]=\"productReview\" [cancel]=\"false\" [readonly]=\"false\" />\r\n <div>\r\n <span class=\"secondary-text\">Review Title</span>\r\n <input type=\"text\" placeholder=\"Give your review a title\" [(ngModel)]=\"reviewTitle\">\r\n </div>\r\n <div>\r\n <span class=\"secondary-text\">Review</span>\r\n <textarea placeholder=\"Write your comments here\" [(ngModel)]=\"reviewDescription\"></textarea>\r\n </div>\r\n <div class=\"review-action-btn\">\r\n <button [style.borderColor]=\"data?.styles?.background?.accentColor\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"showReview = false\">Cancel review</button>\r\n <button simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n (click)=\"addProductReview()\"\r\n [disabled]=\"productReview == 0 && reviewTitle?.length == 0 && reviewDescription?.length == 0\">Submit\r\n review</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template #SocialIcons>\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"data?.content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"data?.content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of data?.content?.socialLinks?.channels\">\r\n <div style=\"position: relative;margin-right: 10px;\">\r\n <simpo-socia-icons [socialIconData]=\"item\" [color]=\"data?.styles?.background?.accentColor\"\r\n [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ActionBtn>\r\n <div class=\"button-parent\">\r\n <div class=\"out-of-stock\" *ngIf=\"isItemOutOfStock\">Out of Stock</div>\r\n <div class=\"quantity\" *ngIf=\"responseData?.quantity\">\r\n <div class=\"plus\" (click)=\"addToCart('SUBSTRACT')\">-</div>\r\n <div style=\"width: 50px;\" class=\"d-flex justify-content-center\">{{responseData.quantity}}</div>\r\n <div class=\"minus\" (click)=\"addToCart('ADD')\">+</div>\r\n </div>\r\n <div *ngIf=\"!responseData?.quantity && !isItemOutOfStock\">\r\n <button class=\"send-btn\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n (click)=\"addToCart()\">{{data?.action?.buttons?.[0]?.content?.label}}</button>\r\n </div>\r\n <div class=\"favourite\">\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">favorite</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #variants>\r\n <ng-container *ngFor=\"let varient of varients | keyvalue\">\r\n <div class=\"mb-15\">\r\n <div class=\"varient-key\">{{varient.key}}</div>\r\n <div class=\"d-flex\" style=\"gap: 5px;\">\r\n\r\n <!-- [attr.class]=\"!isVarientAvailable(varient) ? 'varient-tag disable-varient' : 'varient-tag'\" -->\r\n <div *ngFor=\"let varientValue of varient.value\" class=\"varient-tag\"\r\n [style.color]=\"selectedVarient.get(varient.key) == varientValue ? 'white' : data?.styles?.background?.accentColor\"\r\n [style.backgroundColor]=\"selectedVarient.get(varient.key) == varientValue ? data?.styles?.background?.accentColor : ''\"\r\n (click)=\"selectVarient(varient.key, varientValue)\">{{varientValue}}</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #ProductDesc>\r\n <div class=\"heading-large trim-text\" class=\"product-heading\">{{responseData?.name}}</div>\r\n <div class=\"d-flex\" style=\"gap: 10px; align-items: center; margin-top: 15px;\">\r\n <div class=\"price\" [ngClass]=\"{'discount-price': responseData?.price?.discountedPrice}\"\r\n *ngIf=\"responseData?.price?.discountedPrice && responseData.price.discountedPrice > 0\"><span\r\n [innerHTML]='currency'></span>\r\n {{responseData?.price?.discountedPrice}}</div>\r\n <div class=\"price\" *ngIf=\"responseData?.price?.sellingPrice && getDifference(responseData?.price?.sellingPrice, responseData?.price?.discountedPrice) > 2\"\r\n [ngClass]=\"{'strike-through': responseData?.price?.discountedPrice}\"><span [innerHTML]='currency'></span>\r\n {{responseData?.price?.sellingPrice | number:'1.0-0'}}</div>\r\n <div class=\"tax-text\">(Inclusive all taxes)</div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #ImageSection>\r\n <ng-container *ngIf=\"!varientLoading\">\r\n <div class=\"img-list\" *ngIf=\"screenWidth > 500\">\r\n <ng-container *ngFor=\"let img of itemImages\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"img.imgUrl\"\r\n alt=\"\" class=\"img\" (click)=\"changeImg(img.imgUrl)\"\r\n [style.borderColor]=\"img.imgUrl == currentImg ? data?.styles?.background?.accentColor : 'transparent'\">\r\n </ng-container>\r\n </div>\r\n <div class=\"item-img\">\r\n <ng-container *ngIf=\"currentImg\">\r\n\r\n <mat-icon class=\"share-icon\" (click)=\"shareProduct()\">share</mat-icon>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <img [src]=\"currentImg\" class=\"img\" style=\"height: 100%; width: 100%;\">\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <img loading=\"lazy\" [src]=\"currentImg\" alt=\"\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentImg\">\r\n <img loading=\"lazy\" src=\"https://i.postimg.cc/hPS2JpV0/no-image-available.jpg\" alt=\"\">\r\n </ng-container>\r\n </div>\r\n <div class=\"img-list\" *ngIf=\"screenWidth <= 500\">\r\n <ng-container *ngFor=\"let img of itemImages\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"img.imgUrl\"\r\n alt=\"\" class=\"img\" (click)=\"changeImg(img.imgUrl)\"\r\n [style.borderColor]=\"img.imgUrl == currentImg ? data?.styles?.background?.accentColor : 'transparent'\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"item-img\" *ngIf=\"varientLoading\">\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '100%',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n<!-- <div class=\"modal fade\" id=\"itemVarients\" tabindex=\"-1\" aria-labelledby=\"itemVarients\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Right-to-Left Modal</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n This content is aligned from right to left.\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Save changes</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->", styles: [".product-desc{display:flex}.strike-through{text-decoration:line-through;color:#d3d3d3}::ng-deep .smooth-panel .p-panel-header{cursor:pointer}.fw-600{font-weight:600}.jewellery-table-container{padding:15px;border-radius:8px}.jewellery-table{width:100%;border-collapse:collapse;border:1px solid #ddd;transition:all .3s ease}.jewellery-table th,.jewellery-table td{border:1px solid #ddd;padding:12px;text-align:left;transition:background-color .2s ease}.material-header td{background-color:#f8f9fa;font-weight:700;font-size:16px}.column-header{background-color:#f1f1f1}.column-header th{font-weight:600}.material-row:hover{background-color:#f5f5f5}.charges-header th,.total-header th{background-color:#eaeaea;font-weight:700}.total-row td{font-weight:700;font-size:18px;background-color:#f8f8f8}@media screen and (max-width: 600px){.jewellery-table{font-size:14px}.jewellery-table th,.jewellery-table td{padding:8px}}.share-icon{border:1.5px solid rgba(211,211,211,.382);position:absolute;top:10px;right:10px;z-index:1;opacity:.5;border-radius:50%;padding:5px;height:30px;width:30px;display:flex;align-items:center;justify-content:center;font-size:16px;box-shadow:#00000003 0 1px 2px;cursor:pointer}.row{margin-top:25px}.prod-img-block{height:100%;display:flex;gap:5px}.img-list{display:flex;flex-direction:column;gap:5px;max-height:460px;overflow:scroll}.img-list img{height:100px;width:100%;cursor:pointer}ngx-image-zoom{display:inline-block;position:relative}.ngx-image-zoom__zoomed{z-index:9999;max-width:100%;max-height:100%;object-fit:contain}.item-img{position:relative;width:500px;height:500px;overflow:hidden}.item-img img{width:100%!important;height:100%!important}.fast-checkout{position:absolute;top:10px;right:10px;display:flex;gap:10px;width:fit-content}.fast-checkout img{cursor:pointer}.selling-fast-tag{background-color:#fff;color:#000;padding:5px 10px;border-radius:3px;font-weight:700}.price{font-weight:600;font-family:Poppins;font-size:20px}.product-desc{margin-top:15px}.button-parent{margin-top:15px;display:flex;gap:10px;align-items:center}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:50px;width:155px;justify-content:space-between;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.trim-text{-webkit-line-clamp:3!important}.product-sku{margin-top:20px}.product-sku div{font-weight:400;font-size:15px;color:#848484;font-family:Poppins;margin-top:.5rem}.tab-group{display:flex;gap:10px;overflow-y:scroll}.tab{font-family:Poppins;font-weight:500;font-size:18px;color:#222;padding-bottom:2px;border-bottom:1px solid black;max-width:max-content}.img-list>img{border:2px solid transparent;border-radius:3px}.out-of-stock{background-color:#d3d3d333;color:#000;padding:15px 20px;border-radius:5px;margin-top:15px}.varient-key{font-weight:500;font-size:16px;margin-top:10px;margin-bottom:5px}.varient-tag{background-color:#fff;color:#000;border-radius:3px;border:1px solid #d3d3d347;margin-right:5px;padding:5px 15px;cursor:pointer}.send-btn{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:50px!important;width:130px!important;justify-content:space-between;margin-top:1rem;border-radius:5px}.disable-varient{text-decoration:line-through;cursor:not-allowed}.review-sec{box-shadow:#00000029 0 1px 4px;width:100%;padding:20px;margin:20px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:5px}.review-sec .title{font-size:26px;margin-bottom:10px}.review-sec button{border-radius:20px!important;background-color:transparent;padding:5px 15px;width:fit-content!important;margin:auto}.review-sec hr{border-top:1.5px solid lightgray;width:100%}.review-sec .user-review{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:100%}.review-sec .user-review>div{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%}.review-sec .user-review>div input{width:80%;margin:auto;border-radius:20px;padding:10px 10px 10px 20px;border:1.5px solid lightgray}.review-sec .user-review>div textarea{width:80%;border-radius:5px;padding:10px;border:1.5px solid lightgray}.review-sec .user-review .review-action-btn{display:flex;flex-direction:row;gap:10px}.review-sec .user-review .review-action-btn button{width:fit-content!important;font-size:16px!important;margin:5px!important;border:1px solid transparent}.review-sec .user-review .secondary-text{font-size:18px}.product-detail{overflow-y:auto}.above-height{height:90vh}.mobile-footer{display:none}@media (min-width: 1024px){.height{width:min-content}.above-height{width:100%;display:flex}.product-detail{padding:2%}.product-heading{font-size:35px}.prod-img-block{height:100%;display:flex;gap:5px}}@media only screen and (max-width: 475px){.mobile-footer{width:100vw;height:60px;box-shadow:#64646f33 -2px -16px 29px;position:fixed;bottom:0;z-index:100000001;background-color:#fff;display:flex!important;justify-content:space-around;align-items:center}.mobile-footer .icons{margin-top:5px;display:flex;color:#000;align-items:center;justify-content:center;gap:15px;width:20%}.mobile-footer .icons .mat-icon{font-size:26px}.product-desc,.brief-desc{font-size:16px}.total-container{padding-top:10px!important;padding-bottom:10px!important}.out-of-stock,.add-btn,.quantity{text-align:center;width:70%!important;padding:5px;margin-top:0!important}.quantity{border:1px solid rgba(211,211,211,.332)!important}.item-img{width:100%!important;height:348px}.item-img img{width:100%;height:348px!important}.display-none{display:none}.prod-img-block{flex-direction:column;gap:5px}.img-list{flex-direction:row;overflow-x:scroll}.img-list img{width:25%;border:2px solid lightgray;cursor:pointer}.product-detail,.prod-desc{margin-top:20px}.product-img{height:220px}.send-btn{padding:.5rem 1rem!important}.favourite .mat-icon{padding:10px!important;position:relative!important;min-height:0px!important;height:43px!important;top:8px!important;min-width:52px!important}.review-sec :is(input,textarea){width:100%!important}.height{width:100%}.above-height{padding:0;min-height:95vh!important;height:unset!important}.product-heading{font-size:16px}}.send-btn{font-size:16px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important;margin-top:1rem}.favourite .mat-icon{min-height:55px;min-width:55px;font-size:35px;display:flex;align-items:center;justify-content:center;border-radius:5px;padding:30px 25px 25px;position:relative;top:5px;cursor:pointer}a{text-decoration:none}.body-large{color:#848484}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.modal-dialog{height:100vh;position:absolute;top:0;margin:0;right:0;border:none}.modal-content{height:100%;border:none;border-radius:0!important}@media (min-width:768px) and (max-width:991px){.item-img{position:relative;width:auto!important;height:auto!important;overflow:hidden}.item-img img{height:auto!important;width:auto!important}.height{width:min-content}.above-height{width:100%;padding:2%;display:flex;flex-direction:column}.product-detail{padding:0vw 42vw 0vw 2vw}.prod-img-block{height:100%;display:flex;gap:5px}}@media (min-width:911px){.product-detail{padding:0% 34% 0% 2%}.above-height{display:flex}.prod-img-block{height:100%;display:flex;gap:5px}}@media (min-width:1024px){.product-detail{padding:0% 0% 0% 2%}.above-height{display:flex}.product-headig{font-size:35px}.prod-img-block{height:100%;display:flex;gap:5px}}.mat-accordion .mat-expansion-panel:last-of-type{box-shadow:none}.mb-15{margin-bottom:15px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i7$1.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "ngmodule", type: NgxImageZoomModule }, { kind: "component", type: FeaturedProductsComponent, selector: "simpo-featured-products", inputs: ["data", "responseData", "index", "isRelatedProduct", "edit", "customClass", "delete", "nextComponentColor"], outputs: ["changeDetailProduct"] }, { kind: "ngmodule", type: MatBottomSheetModule }, { kind: "component", type: SociaIconsComponent, selector: "simpo-socia-icons", inputs: ["socialIconData", "color", "sectionId", "iconColor"] }, { kind: "ngmodule", type: RatingModule }, { kind: "component", type: i3$1.Rating, selector: "p-rating", inputs: ["disabled", "readonly", "stars", "cancel", "iconOnClass", "iconOnStyle", "iconOffClass", "iconOffStyle", "iconCancelClass", "iconCancelStyle", "autofocus"], outputs: ["onRate", "onCancel", "onFocus", "onBlur"] }, { kind: "ngmodule", type: SpeedDialModule }, { kind: "component", type: i15.SpeedDial, selector: "p-speedDial", inputs: ["id", "model", "visible", "style", "className", "direction", "transitionDelay", "type", "radius", "mask", "disabled", "hideOnClickOutside", "buttonStyle", "buttonClassName", "maskStyle", "maskClassName", "showIcon", "hideIcon", "rotateAnimation", "ariaLabel", "ariaLabelledBy"], outputs: ["onVisibleChange", "visibleChange", "onClick", "onShow", "onHide"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i13$1.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "ngmodule", type: PanelModule }, { kind: "component", type: i17.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }] }); }
13721
13795
  }
13722
13796
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductDescComponent, decorators: [{
13723
13797
  type: Component,
@@ -13744,7 +13818,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
13744
13818
  CustomerReviewComponent,
13745
13819
  PanelModule,
13746
13820
  SvgDividerComponent
13747
- ], providers: [MessageService], template: "<ng-container *ngIf=\"!isLoading\">\r\n <p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" key=\"wishlist\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [simpoBackground]=\"styles?.background\"\r\n simpoHover (hovering)=\"showEditTabs($event)\" [attr.style]=\"customClass\">\r\n\r\n <div style=\"position: relative;\" class=\"speeddial-linear\" *ngIf=\"isMobile\">\r\n <p-speedDial [model]=\"items\" direction=\"up\" [buttonStyle]=\"{'border-radius': '50%', 'height': '30px'}\" />\r\n </div>\r\n <section class=\"container\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"display-none\"><a href=\"javascript:void(0)\" style=\"text-decoration: none; color: #0267C1\"\r\n (click)=\"routeToHome()\">Home</a> /\r\n <span>{{ responseData?.name | titlecase }}</span>\r\n </div>\r\n <div class=\"row h-100\" style=\"margin-top: 25px;\" class=\"above-height\"\r\n [ngStyle]=\"{'min-height: 95vh': isMobile, 'max-width: 95vh': !isMobile}\">\r\n <div class=\"col-lg-6 col-12 h-100\" class=\"height\">\r\n <div class=\"prod-img-block\">\r\n <ng-container *ngTemplateOutlet=\"ImageSection\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 col-12 h-100 product-detail\">\r\n <ng-container *ngIf=\"isMobile\">\r\n <ng-container *ngTemplateOutlet=\"variants\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngTemplateOutlet=\"ProductDesc\"></ng-container>\r\n\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"ActionBtn\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"variants\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"product-desc body-large d-block\" *ngIf=\"responseData?.brief\"\r\n [innerHTML]=\"responseData.brief\"></div>\r\n <div class=\"product-sku\">\r\n <div *ngIf=\"responseData?.itemInventory\">SKU : {{responseData.itemInventory?.openingStock}}</div>\r\n <div\r\n *ngIf=\"responseData?.itemCategorisation?.itemCategories && (responseData?.itemCategorisation?.itemCategories?.length || 0) > 0\">\r\n Category : <a href=\"javascript:void(0)\" (click)=\"goToFilter(cat.refName)\"\r\n *ngFor=\"let cat of responseData?.itemCategorisation?.itemCategories;let idx = index\">{{cat.refName |\r\n titlecase}} <ng-container\r\n *ngIf=\"(idx+1) != responseData?.itemCategorisation?.itemCategories?.length\">,</ng-container>\r\n </a></div>\r\n <div *ngIf=\"(responseData?.itemCategorisation?.productTags?.length || 0) > 0\">Tags : <span\r\n *ngFor=\"let tag of responseData?.itemCategorisation?.productTags\">{{tag.tagName}},\r\n </span></div>\r\n </div>\r\n <!-- <ng-container *ngTemplateOutlet=\"SocialIcons\"></ng-container> -->\r\n <!-- <ng-container>\r\n <ng-container *ngTemplateOutlet=\"ReviewSection\"></ng-container>\r\n </ng-container> -->\r\n </div>\r\n </div>\r\n <div class=\"row prod-desc\">\r\n\r\n <div>\r\n <p-panel header=\"Description\" [toggleable]=\"true\" [collapsed]=\"true\" [collapsed]=\"isDescriptionCollapsed\"\r\n *ngIf=\"responseData?.descriptor?.name\" styleClass=\"smooth-panel\" (click)=\"toggleDescription()\">\r\n <div style=\"margin-top: 10px;\" class=\"body-large brief-desc\" *ngIf=\"responseData?.descriptor\"\r\n [innerHTML]=\"responseData?.descriptor?.name\"></div>\r\n </p-panel>\r\n <ng-container *ngIf=\"subIndustryName == 'Ecommerce Jewellery'\">\r\n <p-panel header=\"Pricing Breakdown\" [toggleable]=\"true\" [collapsed]=\"true\" styleClass=\"smooth-panel\" [collapsed]=\"isPriceBreakup\" (click)=\"togglePriceBreakDown()\">\r\n <div class=\"jewellery-table-container\">\r\n <table class=\"jewellery-table\">\r\n <ng-container *ngFor=\"let ele of responseData?.materials\">\r\n <tr class=\"material-header\">\r\n <td colspan=\"8\">{{ele.materialType | titlecase}}</td>\r\n </tr>\r\n <tr class=\"column-header\">\r\n <th colspan=\"2\">{{ele.materialType | titlecase}} Type</th>\r\n <th colspan=\"2\">Net Weight/Gram</th>\r\n <th colspan=\"2\">Price/Gram</th>\r\n <th colspan=\"2\">Value</th>\r\n </tr>\r\n <tr class=\"material-row\">\r\n <td colspan=\"2\">{{ getCarat(ele.materialPurity)}}</td>\r\n <td colspan=\"2\">{{ele.primaryMaterialWeight}}</td>\r\n <td colspan=\"2\">\u20B9{{ getPricePerGram(ele.primaryMaterialWeight,ele.materialPrice) |\r\n number:'1.2-2'}}</td>\r\n <td colspan=\"2\">\u20B9{{ele.materialPrice | number:'1.2-2'}}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"material-header\">\r\n <td colspan=\"8\">Making Charges</td>\r\n </tr>\r\n <tr class=\"column-header\">\r\n <th colspan=\"2\">Component</th>\r\n <th colspan=\"2\">Net Weight</th>\r\n <th colspan=\"2\">Making Charge %</th>\r\n <th colspan=\"2\">Value</th>\r\n </tr>\r\n <tr class=\"material-row\">\r\n <td colspan=\"2\">Making Charges</td>\r\n <td colspan=\"2\">{{responseData?.baseWeight}}</td>\r\n <td colspan=\"2\">{{responseData?.makingChargePercentage}}</td>\r\n <td colspan=\"2\">\u20B9{{responseData?.jewelryPriceBreakup?.makingChargeAmount | number:'1.2-2'}}</td>\r\n </tr>\r\n\r\n <!-- <tr class=\"charges-header\">\r\n <td colspan=\"4\">Making Charges%</td>\r\n <td colspan=\"4\">{{responseData?.makingChargePercentage ?? 0}}%</td>\r\n </tr> -->\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Total Value</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{responseData?.jewelryPriceBreakup?.priceWithoutTax |\r\n number:'1.2-2'}}</td>\r\n </tr>\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Tax Amount ({{(responseData?.jewelryPriceBreakup?.taxRef?.taxPercent)+ \"%\" + \" \" +\r\n \"GST\"}})</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{responseData?.jewelryPriceBreakup?.taxAmount |\r\n number:'1.2-2'}}</td>\r\n </tr>\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Total</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{(responseData?.jewelryPriceBreakup.priceWithoutTax +\r\n responseData?.jewelryPriceBreakup.taxAmount) | number:'1.2-2'}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </p-panel>\r\n </ng-container>\r\n </div>\r\n\r\n\r\n <!-- <div class=\"tab-group\">\r\n <div class=\"tab\" data-bs-toggle=\"collapse\" href=\"#collapseExample\" >Description</div>\r\n </div>\r\n <div style=\"margin-top: 10px;\" class=\"body-large collapse\" id=\"collapseExample\" *ngIf=\"responseData?.descriptor\"\r\n [innerHTML]=\"responseData?.descriptor?.name\"></div> -->\r\n </div>\r\n </section>\r\n <ng-container *ngIf=\"relatedProductData?.length\">\r\n <simpo-featured-products [edit]=\"false\" [data]=\"featureProductData\" [responseData]=\"relatedProductData\"\r\n [isRelatedProduct]=\"true\" (changeDetailProduct)=\"changeProduct($event)\"></simpo-featured-products>\r\n </ng-container>\r\n <ng-container *ngIf=\"recentViewItemList?.length\">\r\n <simpo-featured-products [edit]=\"false\" [data]=\"recentViewedData\" [responseData]=\"recentViewItemList\"\r\n [isRelatedProduct]=\"true\"></simpo-featured-products>\r\n </ng-container>\r\n <!-- <ng-container>\r\n <simpo-customer-review [data]=\"data\"></simpo-customer-review>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\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 </section>\r\n</ng-container>\r\n\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" 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\r\n\r\n<div class=\"mobile-footer\">\r\n <div class=\"icons\">\r\n <div (click)=\"goToCart()\">\r\n <mat-icon>shopping_cart</mat-icon>\r\n </div>\r\n <div>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">favorite</mat-icon>\r\n <!-- <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">bookmark</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">bookmark_border</mat-icon> -->\r\n </div>\r\n </div>\r\n <div class=\"out-of-stock\" *ngIf=\"isItemOutOfStock\">Out of Stock</div>\r\n <div class=\"quantity\" *ngIf=\"responseData?.quantity && !isItemOutOfStock\">\r\n <div class=\"plus\" (click)=\"addToCart('SUBSTRACT')\">-</div>\r\n <div style=\"width: 50px;\" class=\"d-flex justify-content-center\">{{responseData.quantity}}</div>\r\n <div class=\"minus\" (click)=\"addToCart('ADD')\">+</div>\r\n </div>\r\n <button class=\"add-btn\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\" (click)=\"addToCart()\"\r\n *ngIf=\"!responseData?.quantity && !isItemOutOfStock\">{{data?.action?.buttons?.[0]?.content?.label}}</button>\r\n</div>\r\n\r\n<ng-template #ReviewSection>\r\n <div class=\"review-sec\">\r\n <div class=\"title\">Customer Review</div>\r\n <p-rating [cancel]=\"false\" [readonly]=\"true\" [(ngModel)]=\"totalReview\" />\r\n <span>Be the first to write a review</span>\r\n <button class=\"mt-3\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"showReview = !showReview\">{{ !showReview ? 'Add\r\n Review' : 'Cancel Review'}}</button>\r\n <ng-container *ngIf=\"showReview\">\r\n <hr />\r\n <div class=\"user-review\">\r\n <div class=\"title\">Write a review</div>\r\n <span class=\"secondary-text\">RATING</span>\r\n <p-rating [(ngModel)]=\"productReview\" [cancel]=\"false\" [readonly]=\"false\" />\r\n <div>\r\n <span class=\"secondary-text\">Review Title</span>\r\n <input type=\"text\" placeholder=\"Give your review a title\" [(ngModel)]=\"reviewTitle\">\r\n </div>\r\n <div>\r\n <span class=\"secondary-text\">Review</span>\r\n <textarea placeholder=\"Write your comments here\" [(ngModel)]=\"reviewDescription\"></textarea>\r\n </div>\r\n <div class=\"review-action-btn\">\r\n <button [style.borderColor]=\"data?.styles?.background?.accentColor\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"showReview = false\">Cancel review</button>\r\n <button simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n (click)=\"addProductReview()\"\r\n [disabled]=\"productReview == 0 && reviewTitle?.length == 0 && reviewDescription?.length == 0\">Submit\r\n review</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template #SocialIcons>\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"data?.content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"data?.content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of data?.content?.socialLinks?.channels\">\r\n <div style=\"position: relative;margin-right: 10px;\">\r\n <simpo-socia-icons [socialIconData]=\"item\" [color]=\"data?.styles?.background?.accentColor\"\r\n [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ActionBtn>\r\n <div class=\"button-parent\">\r\n <div class=\"out-of-stock\" *ngIf=\"isItemOutOfStock\">Out of Stock</div>\r\n <div class=\"quantity\" *ngIf=\"responseData?.quantity\">\r\n <div class=\"plus\" (click)=\"addToCart('SUBSTRACT')\">-</div>\r\n <div style=\"width: 50px;\" class=\"d-flex justify-content-center\">{{responseData.quantity}}</div>\r\n <div class=\"minus\" (click)=\"addToCart('ADD')\">+</div>\r\n </div>\r\n <div *ngIf=\"!responseData?.quantity && !isItemOutOfStock\">\r\n <button class=\"send-btn\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n (click)=\"addToCart()\">{{data?.action?.buttons?.[0]?.content?.label}}</button>\r\n </div>\r\n <div class=\"favourite\">\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">favorite</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #variants>\r\n <ng-container *ngFor=\"let varient of varients | keyvalue\">\r\n <div class=\"mb-15\">\r\n <div class=\"varient-key\">{{varient.key}}</div>\r\n <div class=\"d-flex\" style=\"gap: 5px;\">\r\n\r\n <!-- [attr.class]=\"!isVarientAvailable(varient) ? 'varient-tag disable-varient' : 'varient-tag'\" -->\r\n <div *ngFor=\"let varientValue of varient.value\" class=\"varient-tag\"\r\n [style.color]=\"selectedVarient.get(varient.key) == varientValue ? 'white' : data?.styles?.background?.accentColor\"\r\n [style.backgroundColor]=\"selectedVarient.get(varient.key) == varientValue ? data?.styles?.background?.accentColor : ''\"\r\n (click)=\"selectVarient(varient.key, varientValue)\">{{varientValue}}</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #ProductDesc>\r\n <div class=\"heading-large trim-text\" class=\"product-heading\">{{responseData?.name}}</div>\r\n <div class=\"d-flex\" style=\"gap: 10px; align-items: center; margin-top: 15px;\">\r\n <div class=\"price\" [ngClass]=\"{'discount-price': responseData?.price?.discountedPrice}\"\r\n *ngIf=\"responseData?.price?.discountedPrice && responseData.price.discountedPrice > 0\"><span\r\n [innerHTML]='currency'></span>\r\n {{responseData?.price?.discountedPrice}}</div>\r\n <div class=\"price\" *ngIf=\"responseData?.price?.sellingPrice\"\r\n [ngClass]=\"{'strike-through': responseData?.price?.discountedPrice}\"><span [innerHTML]='currency'></span>\r\n {{responseData?.price?.sellingPrice | number:'1.0-0'}}</div>\r\n <div class=\"tax-text\">(Inclusive all taxes)</div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #ImageSection>\r\n <ng-container *ngIf=\"!varientLoading\">\r\n <div class=\"img-list\" *ngIf=\"screenWidth > 500\">\r\n <ng-container *ngFor=\"let img of itemImages\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"img.imgUrl\"\r\n alt=\"\" class=\"img\" (click)=\"changeImg(img.imgUrl)\"\r\n [style.borderColor]=\"img.imgUrl == currentImg ? data?.styles?.background?.accentColor : 'transparent'\">\r\n </ng-container>\r\n </div>\r\n <div class=\"item-img\">\r\n <ng-container *ngIf=\"currentImg\">\r\n\r\n <mat-icon class=\"share-icon\" (click)=\"shareProduct()\">share</mat-icon>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <img [src]=\"currentImg\" class=\"img\" style=\"height: 100%; width: 100%;\">\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <img loading=\"lazy\" [src]=\"currentImg\" alt=\"\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentImg\">\r\n <img loading=\"lazy\" src=\"https://i.postimg.cc/hPS2JpV0/no-image-available.jpg\" alt=\"\">\r\n </ng-container>\r\n </div>\r\n <div class=\"img-list\" *ngIf=\"screenWidth <= 500\">\r\n <ng-container *ngFor=\"let img of itemImages\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"img.imgUrl\"\r\n alt=\"\" class=\"img\" (click)=\"changeImg(img.imgUrl)\"\r\n [style.borderColor]=\"img.imgUrl == currentImg ? data?.styles?.background?.accentColor : 'transparent'\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"item-img\" *ngIf=\"varientLoading\">\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '100%',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n<!-- <div class=\"modal fade\" id=\"itemVarients\" tabindex=\"-1\" aria-labelledby=\"itemVarients\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Right-to-Left Modal</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n This content is aligned from right to left.\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Save changes</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->", styles: [".product-desc{display:flex}.strike-through{text-decoration:line-through;color:#d3d3d3}::ng-deep .smooth-panel .p-panel-header{cursor:pointer}.fw-600{font-weight:600}.jewellery-table-container{padding:15px;border-radius:8px}.jewellery-table{width:100%;border-collapse:collapse;border:1px solid #ddd;transition:all .3s ease}.jewellery-table th,.jewellery-table td{border:1px solid #ddd;padding:12px;text-align:left;transition:background-color .2s ease}.material-header td{background-color:#f8f9fa;font-weight:700;font-size:16px}.column-header{background-color:#f1f1f1}.column-header th{font-weight:600}.material-row:hover{background-color:#f5f5f5}.charges-header th,.total-header th{background-color:#eaeaea;font-weight:700}.total-row td{font-weight:700;font-size:18px;background-color:#f8f8f8}@media screen and (max-width: 600px){.jewellery-table{font-size:14px}.jewellery-table th,.jewellery-table td{padding:8px}}.share-icon{border:1.5px solid rgba(211,211,211,.382);position:absolute;top:10px;right:10px;z-index:1;opacity:.5;border-radius:50%;padding:5px;height:30px;width:30px;display:flex;align-items:center;justify-content:center;font-size:16px;box-shadow:#00000003 0 1px 2px;cursor:pointer}.row{margin-top:25px}.prod-img-block{height:100%;display:flex;gap:5px}.img-list{display:flex;flex-direction:column;gap:5px;max-height:460px;overflow:scroll}.img-list img{height:100px;width:100%;cursor:pointer}ngx-image-zoom{display:inline-block;position:relative}.ngx-image-zoom__zoomed{z-index:9999;max-width:100%;max-height:100%;object-fit:contain}.item-img{position:relative;width:500px;height:500px;overflow:hidden}.item-img img{width:100%!important;height:100%!important}.fast-checkout{position:absolute;top:10px;right:10px;display:flex;gap:10px;width:fit-content}.fast-checkout img{cursor:pointer}.selling-fast-tag{background-color:#fff;color:#000;padding:5px 10px;border-radius:3px;font-weight:700}.price{font-weight:600;font-family:Poppins;font-size:20px}.product-desc{margin-top:15px}.button-parent{margin-top:15px;display:flex;gap:10px;align-items:center}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:50px;width:155px;justify-content:space-between;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.trim-text{-webkit-line-clamp:3!important}.product-sku{margin-top:20px}.product-sku div{font-weight:400;font-size:15px;color:#848484;font-family:Poppins;margin-top:.5rem}.tab-group{display:flex;gap:10px;overflow-y:scroll}.tab{font-family:Poppins;font-weight:500;font-size:18px;color:#222;padding-bottom:2px;border-bottom:1px solid black;max-width:max-content}.img-list>img{border:2px solid transparent;border-radius:3px}.out-of-stock{background-color:#d3d3d333;color:#000;padding:15px 20px;border-radius:5px;margin-top:15px}.varient-key{font-weight:500;font-size:16px;margin-top:10px;margin-bottom:5px}.varient-tag{background-color:#fff;color:#000;border-radius:3px;border:1px solid #d3d3d347;margin-right:5px;padding:5px 15px;cursor:pointer}.send-btn{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:50px!important;width:130px!important;justify-content:space-between;margin-top:1rem;border-radius:5px}.disable-varient{text-decoration:line-through;cursor:not-allowed}.review-sec{box-shadow:#00000029 0 1px 4px;width:100%;padding:20px;margin:20px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:5px}.review-sec .title{font-size:26px;margin-bottom:10px}.review-sec button{border-radius:20px!important;background-color:transparent;padding:5px 15px;width:fit-content!important;margin:auto}.review-sec hr{border-top:1.5px solid lightgray;width:100%}.review-sec .user-review{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:100%}.review-sec .user-review>div{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%}.review-sec .user-review>div input{width:80%;margin:auto;border-radius:20px;padding:10px 10px 10px 20px;border:1.5px solid lightgray}.review-sec .user-review>div textarea{width:80%;border-radius:5px;padding:10px;border:1.5px solid lightgray}.review-sec .user-review .review-action-btn{display:flex;flex-direction:row;gap:10px}.review-sec .user-review .review-action-btn button{width:fit-content!important;font-size:16px!important;margin:5px!important;border:1px solid transparent}.review-sec .user-review .secondary-text{font-size:18px}.product-detail{overflow-y:auto}.above-height{height:90vh}.mobile-footer{display:none}@media (min-width: 1024px){.height{width:min-content}.above-height{width:100%;display:flex}.product-detail{padding:2%}.product-heading{font-size:35px}.prod-img-block{height:100%;display:flex;gap:5px}}@media only screen and (max-width: 475px){.mobile-footer{width:100vw;height:60px;box-shadow:#64646f33 -2px -16px 29px;position:fixed;bottom:0;z-index:100000001;background-color:#fff;display:flex!important;justify-content:space-around;align-items:center}.mobile-footer .icons{margin-top:5px;display:flex;color:#000;align-items:center;justify-content:center;gap:15px;width:20%}.mobile-footer .icons .mat-icon{font-size:26px}.product-desc,.brief-desc{font-size:16px}.total-container{padding-top:10px!important;padding-bottom:10px!important}.out-of-stock,.add-btn,.quantity{text-align:center;width:70%!important;padding:5px;margin-top:0!important}.quantity{border:1px solid rgba(211,211,211,.332)!important}.item-img{width:100%!important;height:348px}.item-img img{width:100%;height:348px!important}.display-none{display:none}.prod-img-block{flex-direction:column;gap:5px}.img-list{flex-direction:row;overflow-x:scroll}.img-list img{width:25%;border:2px solid lightgray;cursor:pointer}.product-detail,.prod-desc{margin-top:20px}.product-img{height:220px}.send-btn{padding:.5rem 1rem!important}.favourite .mat-icon{padding:10px!important;position:relative!important;min-height:0px!important;height:43px!important;top:8px!important;min-width:52px!important}.review-sec :is(input,textarea){width:100%!important}.height{width:100%}.above-height{padding:0;min-height:95vh!important;height:unset!important}.product-heading{font-size:16px}}.send-btn{font-size:16px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important;margin-top:1rem}.favourite .mat-icon{min-height:55px;min-width:55px;font-size:35px;display:flex;align-items:center;justify-content:center;border-radius:5px;padding:30px 25px 25px;position:relative;top:5px;cursor:pointer}a{text-decoration:none}.body-large{color:#848484}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.modal-dialog{height:100vh;position:absolute;top:0;margin:0;right:0;border:none}.modal-content{height:100%;border:none;border-radius:0!important}@media (min-width:768px) and (max-width:991px){.item-img{position:relative;width:auto!important;height:auto!important;overflow:hidden}.item-img img{height:auto!important;width:auto!important}.height{width:min-content}.above-height{width:100%;padding:2%;display:flex;flex-direction:column}.product-detail{padding:0vw 42vw 0vw 2vw}.prod-img-block{height:100%;display:flex;gap:5px}}@media (min-width:911px){.product-detail{padding:0% 34% 0% 2%}.above-height{display:flex}.prod-img-block{height:100%;display:flex;gap:5px}}@media (min-width:1024px){.product-detail{padding:0% 0% 0% 2%}.above-height{display:flex}.product-headig{font-size:35px}.prod-img-block{height:100%;display:flex;gap:5px}}.mat-accordion .mat-expansion-panel:last-of-type{box-shadow:none}.mb-15{margin-bottom:15px}\n"] }]
13821
+ ], providers: [MessageService], template: "<ng-container *ngIf=\"!isLoading\">\r\n <p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" key=\"wishlist\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [simpoBackground]=\"styles?.background\"\r\n simpoHover (hovering)=\"showEditTabs($event)\" [attr.style]=\"customClass\">\r\n\r\n <div style=\"position: relative;\" class=\"speeddial-linear\" *ngIf=\"isMobile\">\r\n <p-speedDial [model]=\"items\" direction=\"up\" [buttonStyle]=\"{'border-radius': '50%', 'height': '30px'}\" />\r\n </div>\r\n <section class=\"container\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"display-none\"><a href=\"javascript:void(0)\" style=\"text-decoration: none; color: #0267C1\"\r\n (click)=\"routeToHome()\">Home</a> /\r\n <span>{{ responseData?.name | titlecase }}</span>\r\n </div>\r\n <div class=\"row h-100\" style=\"margin-top: 25px;\" class=\"above-height\"\r\n [ngStyle]=\"{'min-height: 95vh': isMobile, 'max-width: 95vh': !isMobile}\">\r\n <div class=\"col-lg-6 col-12 h-100\" class=\"height\">\r\n <div class=\"prod-img-block\">\r\n <ng-container *ngTemplateOutlet=\"ImageSection\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 col-12 h-100 product-detail\">\r\n <ng-container *ngIf=\"isMobile\">\r\n <ng-container *ngTemplateOutlet=\"variants\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngTemplateOutlet=\"ProductDesc\"></ng-container>\r\n\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"ActionBtn\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"variants\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"product-desc body-large d-block\" *ngIf=\"responseData?.brief\"\r\n [innerHTML]=\"responseData.brief\"></div>\r\n <div class=\"product-sku\">\r\n <div *ngIf=\"responseData?.itemInventory\">SKU : {{responseData.itemInventory?.openingStock}}</div>\r\n <div\r\n *ngIf=\"responseData?.itemCategorisation?.itemCategories && (responseData?.itemCategorisation?.itemCategories?.length || 0) > 0\">\r\n Category : <a href=\"javascript:void(0)\" (click)=\"goToFilter(cat.refName)\"\r\n *ngFor=\"let cat of responseData?.itemCategorisation?.itemCategories;let idx = index\">{{cat.refName |\r\n titlecase}} <ng-container\r\n *ngIf=\"(idx+1) != responseData?.itemCategorisation?.itemCategories?.length\">,</ng-container>\r\n </a></div>\r\n <div *ngIf=\"(responseData?.itemCategorisation?.productTags?.length || 0) > 0\">Tags : <span\r\n *ngFor=\"let tag of responseData?.itemCategorisation?.productTags\">{{tag.tagName}},\r\n </span></div>\r\n </div>\r\n <!-- <ng-container *ngTemplateOutlet=\"SocialIcons\"></ng-container> -->\r\n <!-- <ng-container>\r\n <ng-container *ngTemplateOutlet=\"ReviewSection\"></ng-container>\r\n </ng-container> -->\r\n </div>\r\n </div>\r\n <div class=\"row prod-desc\">\r\n\r\n <div>\r\n <p-panel header=\"Description\" [toggleable]=\"true\" [collapsed]=\"true\" [collapsed]=\"isDescriptionCollapsed\"\r\n *ngIf=\"responseData?.descriptor?.name\" styleClass=\"smooth-panel\" (click)=\"toggleDescription()\">\r\n <div style=\"margin-top: 10px;\" class=\"body-large brief-desc\" *ngIf=\"responseData?.descriptor\"\r\n [innerHTML]=\"responseData?.descriptor?.name\"></div>\r\n </p-panel>\r\n <ng-container *ngIf=\"subIndustryName == 'Ecommerce Jewellery'\">\r\n <p-panel header=\"Pricing Breakdown\" [toggleable]=\"true\" styleClass=\"smooth-panel\" [collapsed]=\"isPriceBreakup\" (click)=\"togglePriceBreakDown()\">\r\n <div class=\"jewellery-table-container\">\r\n <table class=\"jewellery-table\">\r\n <ng-container *ngFor=\"let ele of responseData?.materials\">\r\n <tr class=\"material-header\">\r\n <td colspan=\"8\">{{ele.materialType | titlecase}}</td>\r\n </tr>\r\n <tr class=\"column-header\">\r\n <th colspan=\"2\">{{ele.materialType | titlecase}} Type</th>\r\n <th colspan=\"2\">Net Weight/Gram</th>\r\n <th colspan=\"2\">Price/Gram</th>\r\n <th colspan=\"2\">Value</th>\r\n </tr>\r\n <tr class=\"material-row\">\r\n <td colspan=\"2\">{{ getCarat(ele.materialPurity)}}</td>\r\n <td colspan=\"2\">{{ele.primaryMaterialWeight}}</td>\r\n <td colspan=\"2\">\u20B9{{ getPricePerGram(ele.primaryMaterialWeight,ele.materialPrice) |\r\n number:'1.2-2'}}</td>\r\n <td colspan=\"2\">\u20B9{{ele.materialPrice | number:'1.2-2'}}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"material-header\">\r\n <td colspan=\"8\">Making Charges</td>\r\n </tr>\r\n <tr class=\"column-header\">\r\n <th colspan=\"2\">Component</th>\r\n <th colspan=\"2\">Net Weight</th>\r\n <th colspan=\"2\">Making Charge %</th>\r\n <th colspan=\"2\">Value</th>\r\n </tr>\r\n <tr class=\"material-row\">\r\n <td colspan=\"2\">Making Charges</td>\r\n <td colspan=\"2\">{{responseData?.baseWeight}}</td>\r\n <td colspan=\"2\">{{responseData?.makingChargePercentage}}</td>\r\n <td colspan=\"2\">\u20B9{{responseData?.jewelryPriceBreakup?.makingChargeAmount | number:'1.2-2'}}</td>\r\n </tr>\r\n\r\n <!-- <tr class=\"charges-header\">\r\n <td colspan=\"4\">Making Charges%</td>\r\n <td colspan=\"4\">{{responseData?.makingChargePercentage ?? 0}}%</td>\r\n </tr> -->\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Total Value</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{responseData?.jewelryPriceBreakup?.priceWithoutTax |\r\n number:'1.2-2'}}</td>\r\n </tr>\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Tax Amount ({{(responseData?.jewelryPriceBreakup?.taxRef?.taxPercent)+ \"%\" + \" \" +\r\n \"GST\"}})</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{responseData?.jewelryPriceBreakup?.taxAmount |\r\n number:'1.2-2'}}</td>\r\n </tr>\r\n <tr class=\"total-header\">\r\n <td colspan=\"6\" class=\"fw-600\">Total</td>\r\n <td colspan=\"2\" class=\"text-start fw-600\">\u20B9{{(responseData?.jewelryPriceBreakup.priceWithoutTax +\r\n responseData?.jewelryPriceBreakup.taxAmount) | number:'1.2-2'}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </p-panel>\r\n </ng-container>\r\n </div>\r\n\r\n\r\n <!-- <div class=\"tab-group\">\r\n <div class=\"tab\" data-bs-toggle=\"collapse\" href=\"#collapseExample\" >Description</div>\r\n </div>\r\n <div style=\"margin-top: 10px;\" class=\"body-large collapse\" id=\"collapseExample\" *ngIf=\"responseData?.descriptor\"\r\n [innerHTML]=\"responseData?.descriptor?.name\"></div> -->\r\n </div>\r\n </section>\r\n <ng-container *ngIf=\"relatedProductData?.length\">\r\n <simpo-featured-products [edit]=\"false\" [data]=\"featureProductData\" [responseData]=\"relatedProductData\"\r\n [isRelatedProduct]=\"true\" (changeDetailProduct)=\"changeProduct($event)\"></simpo-featured-products>\r\n </ng-container>\r\n <ng-container *ngIf=\"recentViewItemList?.length\">\r\n <simpo-featured-products [edit]=\"false\" [data]=\"recentViewedData\" [responseData]=\"recentViewItemList\"\r\n [isRelatedProduct]=\"true\"></simpo-featured-products>\r\n </ng-container>\r\n <!-- <ng-container>\r\n <simpo-customer-review [data]=\"data\"></simpo-customer-review>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\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 </section>\r\n</ng-container>\r\n\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" 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\r\n\r\n<div class=\"mobile-footer\">\r\n <div class=\"icons\">\r\n <div (click)=\"goToCart()\">\r\n <mat-icon>shopping_cart</mat-icon>\r\n </div>\r\n <div>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">favorite</mat-icon>\r\n <!-- <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">bookmark</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">bookmark_border</mat-icon> -->\r\n </div>\r\n </div>\r\n <div class=\"out-of-stock\" *ngIf=\"isItemOutOfStock\">Out of Stock</div>\r\n <div class=\"quantity\" *ngIf=\"responseData?.quantity && !isItemOutOfStock\">\r\n <div class=\"plus\" (click)=\"addToCart('SUBSTRACT')\">-</div>\r\n <div style=\"width: 50px;\" class=\"d-flex justify-content-center\">{{responseData.quantity}}</div>\r\n <div class=\"minus\" (click)=\"addToCart('ADD')\">+</div>\r\n </div>\r\n <button class=\"add-btn\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\" (click)=\"addToCart()\"\r\n *ngIf=\"!responseData?.quantity && !isItemOutOfStock\">{{data?.action?.buttons?.[0]?.content?.label}}</button>\r\n</div>\r\n\r\n<ng-template #ReviewSection>\r\n <div class=\"review-sec\">\r\n <div class=\"title\">Customer Review</div>\r\n <p-rating [cancel]=\"false\" [readonly]=\"true\" [(ngModel)]=\"totalReview\" />\r\n <span>Be the first to write a review</span>\r\n <button class=\"mt-3\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"showReview = !showReview\">{{ !showReview ? 'Add\r\n Review' : 'Cancel Review'}}</button>\r\n <ng-container *ngIf=\"showReview\">\r\n <hr />\r\n <div class=\"user-review\">\r\n <div class=\"title\">Write a review</div>\r\n <span class=\"secondary-text\">RATING</span>\r\n <p-rating [(ngModel)]=\"productReview\" [cancel]=\"false\" [readonly]=\"false\" />\r\n <div>\r\n <span class=\"secondary-text\">Review Title</span>\r\n <input type=\"text\" placeholder=\"Give your review a title\" [(ngModel)]=\"reviewTitle\">\r\n </div>\r\n <div>\r\n <span class=\"secondary-text\">Review</span>\r\n <textarea placeholder=\"Write your comments here\" [(ngModel)]=\"reviewDescription\"></textarea>\r\n </div>\r\n <div class=\"review-action-btn\">\r\n <button [style.borderColor]=\"data?.styles?.background?.accentColor\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"showReview = false\">Cancel review</button>\r\n <button simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n (click)=\"addProductReview()\"\r\n [disabled]=\"productReview == 0 && reviewTitle?.length == 0 && reviewDescription?.length == 0\">Submit\r\n review</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template #SocialIcons>\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"data?.content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"data?.content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of data?.content?.socialLinks?.channels\">\r\n <div style=\"position: relative;margin-right: 10px;\">\r\n <simpo-socia-icons [socialIconData]=\"item\" [color]=\"data?.styles?.background?.accentColor\"\r\n [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ActionBtn>\r\n <div class=\"button-parent\">\r\n <div class=\"out-of-stock\" *ngIf=\"isItemOutOfStock\">Out of Stock</div>\r\n <div class=\"quantity\" *ngIf=\"responseData?.quantity\">\r\n <div class=\"plus\" (click)=\"addToCart('SUBSTRACT')\">-</div>\r\n <div style=\"width: 50px;\" class=\"d-flex justify-content-center\">{{responseData.quantity}}</div>\r\n <div class=\"minus\" (click)=\"addToCart('ADD')\">+</div>\r\n </div>\r\n <div *ngIf=\"!responseData?.quantity && !isItemOutOfStock\">\r\n <button class=\"send-btn\" simpoButtonDirective [id]=\"buttonId\" [buttonStyle]=\"button?.styles\"\r\n [backgroundInfo]=\"styles?.background\" [color]=\"data?.styles?.background?.accentColor\"\r\n (click)=\"addToCart()\">{{data?.action?.buttons?.[0]?.content?.label}}</button>\r\n </div>\r\n <div class=\"favourite\">\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"addToFavourite()\"\r\n *ngIf=\"!isItemAsFavorite\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"removeToFavourite()\"\r\n *ngIf=\"isItemAsFavorite\">favorite</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #variants>\r\n <ng-container *ngFor=\"let varient of varients | keyvalue\">\r\n <div class=\"mb-15\">\r\n <div class=\"varient-key\">{{varient.key}}</div>\r\n <div class=\"d-flex\" style=\"gap: 5px;\">\r\n\r\n <!-- [attr.class]=\"!isVarientAvailable(varient) ? 'varient-tag disable-varient' : 'varient-tag'\" -->\r\n <div *ngFor=\"let varientValue of varient.value\" class=\"varient-tag\"\r\n [style.color]=\"selectedVarient.get(varient.key) == varientValue ? 'white' : data?.styles?.background?.accentColor\"\r\n [style.backgroundColor]=\"selectedVarient.get(varient.key) == varientValue ? data?.styles?.background?.accentColor : ''\"\r\n (click)=\"selectVarient(varient.key, varientValue)\">{{varientValue}}</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #ProductDesc>\r\n <div class=\"heading-large trim-text\" class=\"product-heading\">{{responseData?.name}}</div>\r\n <div class=\"d-flex\" style=\"gap: 10px; align-items: center; margin-top: 15px;\">\r\n <div class=\"price\" [ngClass]=\"{'discount-price': responseData?.price?.discountedPrice}\"\r\n *ngIf=\"responseData?.price?.discountedPrice && responseData.price.discountedPrice > 0\"><span\r\n [innerHTML]='currency'></span>\r\n {{responseData?.price?.discountedPrice}}</div>\r\n <div class=\"price\" *ngIf=\"responseData?.price?.sellingPrice && getDifference(responseData?.price?.sellingPrice, responseData?.price?.discountedPrice) > 2\"\r\n [ngClass]=\"{'strike-through': responseData?.price?.discountedPrice}\"><span [innerHTML]='currency'></span>\r\n {{responseData?.price?.sellingPrice | number:'1.0-0'}}</div>\r\n <div class=\"tax-text\">(Inclusive all taxes)</div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #ImageSection>\r\n <ng-container *ngIf=\"!varientLoading\">\r\n <div class=\"img-list\" *ngIf=\"screenWidth > 500\">\r\n <ng-container *ngFor=\"let img of itemImages\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"img.imgUrl\"\r\n alt=\"\" class=\"img\" (click)=\"changeImg(img.imgUrl)\"\r\n [style.borderColor]=\"img.imgUrl == currentImg ? data?.styles?.background?.accentColor : 'transparent'\">\r\n </ng-container>\r\n </div>\r\n <div class=\"item-img\">\r\n <ng-container *ngIf=\"currentImg\">\r\n\r\n <mat-icon class=\"share-icon\" (click)=\"shareProduct()\">share</mat-icon>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <img [src]=\"currentImg\" class=\"img\" style=\"height: 100%; width: 100%;\">\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <img loading=\"lazy\" [src]=\"currentImg\" alt=\"\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentImg\">\r\n <img loading=\"lazy\" src=\"https://i.postimg.cc/hPS2JpV0/no-image-available.jpg\" alt=\"\">\r\n </ng-container>\r\n </div>\r\n <div class=\"img-list\" *ngIf=\"screenWidth <= 500\">\r\n <ng-container *ngFor=\"let img of itemImages\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" [src]=\"img.imgUrl\"\r\n alt=\"\" class=\"img\" (click)=\"changeImg(img.imgUrl)\"\r\n [style.borderColor]=\"img.imgUrl == currentImg ? data?.styles?.background?.accentColor : 'transparent'\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"item-img\" *ngIf=\"varientLoading\">\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '100%',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n<!-- <div class=\"modal fade\" id=\"itemVarients\" tabindex=\"-1\" aria-labelledby=\"itemVarients\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Right-to-Left Modal</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n This content is aligned from right to left.\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Save changes</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->", styles: [".product-desc{display:flex}.strike-through{text-decoration:line-through;color:#d3d3d3}::ng-deep .smooth-panel .p-panel-header{cursor:pointer}.fw-600{font-weight:600}.jewellery-table-container{padding:15px;border-radius:8px}.jewellery-table{width:100%;border-collapse:collapse;border:1px solid #ddd;transition:all .3s ease}.jewellery-table th,.jewellery-table td{border:1px solid #ddd;padding:12px;text-align:left;transition:background-color .2s ease}.material-header td{background-color:#f8f9fa;font-weight:700;font-size:16px}.column-header{background-color:#f1f1f1}.column-header th{font-weight:600}.material-row:hover{background-color:#f5f5f5}.charges-header th,.total-header th{background-color:#eaeaea;font-weight:700}.total-row td{font-weight:700;font-size:18px;background-color:#f8f8f8}@media screen and (max-width: 600px){.jewellery-table{font-size:14px}.jewellery-table th,.jewellery-table td{padding:8px}}.share-icon{border:1.5px solid rgba(211,211,211,.382);position:absolute;top:10px;right:10px;z-index:1;opacity:.5;border-radius:50%;padding:5px;height:30px;width:30px;display:flex;align-items:center;justify-content:center;font-size:16px;box-shadow:#00000003 0 1px 2px;cursor:pointer}.row{margin-top:25px}.prod-img-block{height:100%;display:flex;gap:5px}.img-list{display:flex;flex-direction:column;gap:5px;max-height:460px;overflow:scroll}.img-list img{height:100px;width:100%;cursor:pointer}ngx-image-zoom{display:inline-block;position:relative}.ngx-image-zoom__zoomed{z-index:9999;max-width:100%;max-height:100%;object-fit:contain}.item-img{position:relative;width:500px;height:500px;overflow:hidden}.item-img img{width:100%!important;height:100%!important}.fast-checkout{position:absolute;top:10px;right:10px;display:flex;gap:10px;width:fit-content}.fast-checkout img{cursor:pointer}.selling-fast-tag{background-color:#fff;color:#000;padding:5px 10px;border-radius:3px;font-weight:700}.price{font-weight:600;font-family:Poppins;font-size:20px}.product-desc{margin-top:15px}.button-parent{margin-top:15px;display:flex;gap:10px;align-items:center}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:50px;width:155px;justify-content:space-between;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.trim-text{-webkit-line-clamp:3!important}.product-sku{margin-top:20px}.product-sku div{font-weight:400;font-size:15px;color:#848484;font-family:Poppins;margin-top:.5rem}.tab-group{display:flex;gap:10px;overflow-y:scroll}.tab{font-family:Poppins;font-weight:500;font-size:18px;color:#222;padding-bottom:2px;border-bottom:1px solid black;max-width:max-content}.img-list>img{border:2px solid transparent;border-radius:3px}.out-of-stock{background-color:#d3d3d333;color:#000;padding:15px 20px;border-radius:5px;margin-top:15px}.varient-key{font-weight:500;font-size:16px;margin-top:10px;margin-bottom:5px}.varient-tag{background-color:#fff;color:#000;border-radius:3px;border:1px solid #d3d3d347;margin-right:5px;padding:5px 15px;cursor:pointer}.send-btn{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:50px!important;width:130px!important;justify-content:space-between;margin-top:1rem;border-radius:5px}.disable-varient{text-decoration:line-through;cursor:not-allowed}.review-sec{box-shadow:#00000029 0 1px 4px;width:100%;padding:20px;margin:20px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:5px}.review-sec .title{font-size:26px;margin-bottom:10px}.review-sec button{border-radius:20px!important;background-color:transparent;padding:5px 15px;width:fit-content!important;margin:auto}.review-sec hr{border-top:1.5px solid lightgray;width:100%}.review-sec .user-review{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:100%}.review-sec .user-review>div{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%}.review-sec .user-review>div input{width:80%;margin:auto;border-radius:20px;padding:10px 10px 10px 20px;border:1.5px solid lightgray}.review-sec .user-review>div textarea{width:80%;border-radius:5px;padding:10px;border:1.5px solid lightgray}.review-sec .user-review .review-action-btn{display:flex;flex-direction:row;gap:10px}.review-sec .user-review .review-action-btn button{width:fit-content!important;font-size:16px!important;margin:5px!important;border:1px solid transparent}.review-sec .user-review .secondary-text{font-size:18px}.product-detail{overflow-y:auto}.above-height{height:90vh}.mobile-footer{display:none}@media (min-width: 1024px){.height{width:min-content}.above-height{width:100%;display:flex}.product-detail{padding:2%}.product-heading{font-size:35px}.prod-img-block{height:100%;display:flex;gap:5px}}@media only screen and (max-width: 475px){.mobile-footer{width:100vw;height:60px;box-shadow:#64646f33 -2px -16px 29px;position:fixed;bottom:0;z-index:100000001;background-color:#fff;display:flex!important;justify-content:space-around;align-items:center}.mobile-footer .icons{margin-top:5px;display:flex;color:#000;align-items:center;justify-content:center;gap:15px;width:20%}.mobile-footer .icons .mat-icon{font-size:26px}.product-desc,.brief-desc{font-size:16px}.total-container{padding-top:10px!important;padding-bottom:10px!important}.out-of-stock,.add-btn,.quantity{text-align:center;width:70%!important;padding:5px;margin-top:0!important}.quantity{border:1px solid rgba(211,211,211,.332)!important}.item-img{width:100%!important;height:348px}.item-img img{width:100%;height:348px!important}.display-none{display:none}.prod-img-block{flex-direction:column;gap:5px}.img-list{flex-direction:row;overflow-x:scroll}.img-list img{width:25%;border:2px solid lightgray;cursor:pointer}.product-detail,.prod-desc{margin-top:20px}.product-img{height:220px}.send-btn{padding:.5rem 1rem!important}.favourite .mat-icon{padding:10px!important;position:relative!important;min-height:0px!important;height:43px!important;top:8px!important;min-width:52px!important}.review-sec :is(input,textarea){width:100%!important}.height{width:100%}.above-height{padding:0;min-height:95vh!important;height:unset!important}.product-heading{font-size:16px}}.send-btn{font-size:16px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important;margin-top:1rem}.favourite .mat-icon{min-height:55px;min-width:55px;font-size:35px;display:flex;align-items:center;justify-content:center;border-radius:5px;padding:30px 25px 25px;position:relative;top:5px;cursor:pointer}a{text-decoration:none}.body-large{color:#848484}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.modal-dialog{height:100vh;position:absolute;top:0;margin:0;right:0;border:none}.modal-content{height:100%;border:none;border-radius:0!important}@media (min-width:768px) and (max-width:991px){.item-img{position:relative;width:auto!important;height:auto!important;overflow:hidden}.item-img img{height:auto!important;width:auto!important}.height{width:min-content}.above-height{width:100%;padding:2%;display:flex;flex-direction:column}.product-detail{padding:0vw 42vw 0vw 2vw}.prod-img-block{height:100%;display:flex;gap:5px}}@media (min-width:911px){.product-detail{padding:0% 34% 0% 2%}.above-height{display:flex}.prod-img-block{height:100%;display:flex;gap:5px}}@media (min-width:1024px){.product-detail{padding:0% 0% 0% 2%}.above-height{display:flex}.product-headig{font-size:35px}.prod-img-block{height:100%;display:flex;gap:5px}}.mat-accordion .mat-expansion-panel:last-of-type{box-shadow:none}.mb-15{margin-bottom:15px}\n"] }]
13748
13822
  }], ctorParameters: () => [{ type: Object, decorators: [{
13749
13823
  type: Inject,
13750
13824
  args: [PLATFORM_ID]