@salla.sa/twilight-components 2.14.139 → 2.14.140

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.
@@ -29,6 +29,10 @@ export class SallaReviewsSummary {
29
29
  .then(() => this.loadSummary());
30
30
  }
31
31
  async loadSummary() {
32
+ if (!this.itemId) {
33
+ console.error('Error loading reviews summary: itemId is not defined');
34
+ return this.canRender = false;
35
+ }
32
36
  try {
33
37
  let resp = await salla.api.request(`rating/summary/${this.itemId}`);
34
38
  if (Array.isArray(resp.data.reviews) && !resp.data.reviews.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"salla-reviews-summary.js","sourceRoot":"","sources":["../../../src/components/salla-reviews-summary/salla-reviews-summary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State } from '@stencil/core';\nimport Star2 from \"../../assets/svg/star2.svg\";\n\n@Component({\n tag: 'salla-reviews-summary',\n styleUrl: 'salla-reviews-summary.scss'\n})\nexport class SallaReviewsSummary {\n constructor() {\n salla.lang.onLoaded(() => {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n const setTranslations = async () => {\n await setNestedAsync('ar.trans', 'blocks.comments.based_on', 'بناءً على');\n await setNestedAsync('en.trans', 'blocks.comments.based_on', 'Based on');\n\n this.basedOnLabel = salla.lang.get('blocks.comments.based_on');\n };\n\n setTranslations();\n });\n }\n\n /**\n * Product ID\n */\n @Prop() itemId!: number;\n\n @State() canRender: boolean = false;\n @State() data: any;\n @State() basedOnLabel: string;\n\n componentWillLoad() {\n return salla.onReady()\n .then(() => this.loadSummary());\n }\n\n private async loadSummary() {\n try {\n let resp = await salla.api.request(`rating/summary/${this.itemId}`);\n if (Array.isArray(resp.data.reviews) && !resp.data.reviews.length) {\n return this.canRender = false;\n } else {\n this.data = resp.data;\n this.canRender = true;\n }\n } catch (error) {\n console.error('Error loading reviews summary:', error);\n }\n }\n\n render() {\n if (!this.canRender) {\n return null;\n }\n\n // Initialize all ratings with 0 if missing\n const ratings = {\n \"1\": 0,\n \"2\": 0,\n \"3\": 0,\n \"4\": 0,\n \"5\": 0,\n ...this.data.reviews\n };\n\n\n const reviewElements = Object.keys(ratings).reverse().map(rating => {\n const percentage = ratings[rating];\n return (\n <div class=\"s-reviews-summary-row\">\n <div class=\"s-reviews-summary-row-rate\">{rating} <span innerHTML={Star2}></span></div>\n <salla-progress-bar class=\"s-reviews-summary-progress\" value={percentage} target={100} hideUnits={true} height='14px'></salla-progress-bar>\n <span class=\"s-reviews-summary-percentage\">{percentage}%</span>\n </div>\n );\n });\n\n return (\n <Host class=\"s-reviews-summary-wrapper\">\n <div class=\"s-reviews-summary-header\">\n <h3 class=\"s-reviews-summary-average\">{this.data.rating}</h3>\n <div>\n <salla-rating-stars value={this.data.rating}></salla-rating-stars>\n <p class=\"s-reviews-summary-count\">{this.basedOnLabel} {salla.helpers.number(salla.lang.choice('pages.rating.reviews', this.data.count))}</p>\n </div>\n </div>\n <div class=\"s-reviews-summary-rows\">\n {reviewElements}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"salla-reviews-summary.js","sourceRoot":"","sources":["../../../src/components/salla-reviews-summary/salla-reviews-summary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State } from '@stencil/core';\nimport Star2 from \"../../assets/svg/star2.svg\";\n\n@Component({\n tag: 'salla-reviews-summary',\n styleUrl: 'salla-reviews-summary.scss'\n})\nexport class SallaReviewsSummary {\n constructor() {\n salla.lang.onLoaded(() => {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n const setTranslations = async () => {\n await setNestedAsync('ar.trans', 'blocks.comments.based_on', 'بناءً على');\n await setNestedAsync('en.trans', 'blocks.comments.based_on', 'Based on');\n\n this.basedOnLabel = salla.lang.get('blocks.comments.based_on');\n };\n\n setTranslations();\n });\n }\n\n /**\n * Product ID\n */\n @Prop() itemId!: number;\n\n @State() canRender: boolean = false;\n @State() data: any;\n @State() basedOnLabel: string;\n\n componentWillLoad() {\n return salla.onReady()\n .then(() => this.loadSummary());\n }\n\n private async loadSummary() {\n if(!this.itemId){\n console.error('Error loading reviews summary: itemId is not defined');\n return this.canRender = false;\n }\n try {\n let resp = await salla.api.request(`rating/summary/${this.itemId}`);\n if (Array.isArray(resp.data.reviews) && !resp.data.reviews.length) {\n return this.canRender = false;\n } else {\n this.data = resp.data;\n this.canRender = true;\n }\n } catch (error) {\n console.error('Error loading reviews summary:', error);\n }\n }\n\n render() {\n if (!this.canRender) {\n return null;\n }\n\n // Initialize all ratings with 0 if missing\n const ratings = {\n \"1\": 0,\n \"2\": 0,\n \"3\": 0,\n \"4\": 0,\n \"5\": 0,\n ...this.data.reviews\n };\n\n\n const reviewElements = Object.keys(ratings).reverse().map(rating => {\n const percentage = ratings[rating];\n return (\n <div class=\"s-reviews-summary-row\">\n <div class=\"s-reviews-summary-row-rate\">{rating} <span innerHTML={Star2}></span></div>\n <salla-progress-bar class=\"s-reviews-summary-progress\" value={percentage} target={100} hideUnits={true} height='14px'></salla-progress-bar>\n <span class=\"s-reviews-summary-percentage\">{percentage}%</span>\n </div>\n );\n });\n\n return (\n <Host class=\"s-reviews-summary-wrapper\">\n <div class=\"s-reviews-summary-header\">\n <h3 class=\"s-reviews-summary-average\">{this.data.rating}</h3>\n <div>\n <salla-rating-stars value={this.data.rating}></salla-rating-stars>\n <p class=\"s-reviews-summary-count\">{this.basedOnLabel} {salla.helpers.number(salla.lang.choice('pages.rating.reviews', this.data.count))}</p>\n </div>\n </div>\n <div class=\"s-reviews-summary-rows\">\n {reviewElements}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -36,6 +36,10 @@ const SallaReviewsSummary = /*@__PURE__*/ proxyCustomElement(class SallaReviewsS
36
36
  .then(() => this.loadSummary());
37
37
  }
38
38
  async loadSummary() {
39
+ if (!this.itemId) {
40
+ console.error('Error loading reviews summary: itemId is not defined');
41
+ return this.canRender = false;
42
+ }
39
43
  try {
40
44
  let resp = await salla.api.request(`rating/summary/${this.itemId}`);
41
45
  if (Array.isArray(resp.data.reviews) && !resp.data.reviews.length) {
@@ -1 +1 @@
1
- {"file":"salla-reviews-summary2.js","mappings":";;;;;;;;AAAA,MAAM,sBAAsB,GAAG,sBAAsB;;MCOxC,mBAAmB;EAC9B;;;;qBAyB8B,KAAK;;;IAxBjC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;MAClB,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;QACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO;UACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;UAC/D,OAAO,CAAC,IAAI,CAAC,CAAC;SACf,CAAC,CAAC;OACJ,CAAC;MAEF,MAAM,eAAe,GAAG;QACtB,MAAM,cAAc,CAAC,UAAU,EAAE,0BAA0B,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,cAAc,CAAC,UAAU,EAAE,0BAA0B,EAAE,UAAU,CAAC,CAAC;QAEzE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;OAChE,CAAC;MAEF,eAAe,EAAE,CAAC;KACnB,CAAC,CAAC;GACJ;EAWD,iBAAiB;IACf,OAAO,KAAK,CAAC,OAAO,EAAE;OACnB,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;GACnC;EAEO,MAAM,WAAW;IACvB,IAAI;MACF,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;MACpE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACjE,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;OAC/B;WAAM;QACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;OACvB;KACF;IAAC,OAAO,KAAK,EAAE;MACd,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;KACxD;GACF;EAED,MAAM;IACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;MACnB,OAAO,IAAI,CAAC;KACb;;IAGD,MAAM,OAAO,mBACX,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,IACH,IAAI,CAAC,IAAI,CAAC,OAAO,CACrB,CAAC;IAGF,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM;MAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;MACnC,QACE,WAAK,KAAK,EAAC,uBAAuB,IAChC,WAAK,KAAK,EAAC,4BAA4B,IAAE,MAAM,OAAE,YAAM,SAAS,EAAEA,IAAK,GAAS,CAAM,EACtF,0BAAoB,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,GAAsB,EAC3I,YAAM,KAAK,EAAC,8BAA8B,IAAE,UAAU,MAAS,CAC3D,EACN;KACH,CAAC,CAAC;IAEH,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,2BAA2B,IACrC,WAAK,KAAK,EAAC,0BAA0B,IACnC,UAAI,KAAK,EAAC,2BAA2B,IAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,EAC7D,eACE,0BAAoB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAuB,EAClE,SAAG,KAAK,EAAC,yBAAyB,IAAE,IAAI,CAAC,YAAY,OAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAK,CACzI,CACF,EACN,WAAK,KAAK,EAAC,wBAAwB,IAChC,cAAc,CACX,CACD,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["Star2"],"sources":["src/components/salla-reviews-summary/salla-reviews-summary.scss?tag=salla-reviews-summary","src/components/salla-reviews-summary/salla-reviews-summary.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, h, Prop, State } from '@stencil/core';\nimport Star2 from \"../../assets/svg/star2.svg\";\n\n@Component({\n tag: 'salla-reviews-summary',\n styleUrl: 'salla-reviews-summary.scss'\n})\nexport class SallaReviewsSummary {\n constructor() {\n salla.lang.onLoaded(() => {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n const setTranslations = async () => {\n await setNestedAsync('ar.trans', 'blocks.comments.based_on', 'بناءً على');\n await setNestedAsync('en.trans', 'blocks.comments.based_on', 'Based on');\n\n this.basedOnLabel = salla.lang.get('blocks.comments.based_on');\n };\n\n setTranslations();\n });\n }\n\n /**\n * Product ID\n */\n @Prop() itemId!: number;\n\n @State() canRender: boolean = false;\n @State() data: any;\n @State() basedOnLabel: string;\n\n componentWillLoad() {\n return salla.onReady()\n .then(() => this.loadSummary());\n }\n\n private async loadSummary() {\n try {\n let resp = await salla.api.request(`rating/summary/${this.itemId}`);\n if (Array.isArray(resp.data.reviews) && !resp.data.reviews.length) {\n return this.canRender = false;\n } else {\n this.data = resp.data;\n this.canRender = true;\n }\n } catch (error) {\n console.error('Error loading reviews summary:', error);\n }\n }\n\n render() {\n if (!this.canRender) {\n return null;\n }\n\n // Initialize all ratings with 0 if missing\n const ratings = {\n \"1\": 0,\n \"2\": 0,\n \"3\": 0,\n \"4\": 0,\n \"5\": 0,\n ...this.data.reviews\n };\n\n\n const reviewElements = Object.keys(ratings).reverse().map(rating => {\n const percentage = ratings[rating];\n return (\n <div class=\"s-reviews-summary-row\">\n <div class=\"s-reviews-summary-row-rate\">{rating} <span innerHTML={Star2}></span></div>\n <salla-progress-bar class=\"s-reviews-summary-progress\" value={percentage} target={100} hideUnits={true} height='14px'></salla-progress-bar>\n <span class=\"s-reviews-summary-percentage\">{percentage}%</span>\n </div>\n );\n });\n\n return (\n <Host class=\"s-reviews-summary-wrapper\">\n <div class=\"s-reviews-summary-header\">\n <h3 class=\"s-reviews-summary-average\">{this.data.rating}</h3>\n <div>\n <salla-rating-stars value={this.data.rating}></salla-rating-stars>\n <p class=\"s-reviews-summary-count\">{this.basedOnLabel} {salla.helpers.number(salla.lang.choice('pages.rating.reviews', this.data.count))}</p>\n </div>\n </div>\n <div class=\"s-reviews-summary-rows\">\n {reviewElements}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"salla-reviews-summary2.js","mappings":"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","names":["Star2"],"sources":["src/components/salla-reviews-summary/salla-reviews-summary.scss?tag=salla-reviews-summary","src/components/salla-reviews-summary/salla-reviews-summary.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, h, Prop, State } from '@stencil/core';\nimport Star2 from \"../../assets/svg/star2.svg\";\n\n@Component({\n tag: 'salla-reviews-summary',\n styleUrl: 'salla-reviews-summary.scss'\n})\nexport class SallaReviewsSummary {\n constructor() {\n salla.lang.onLoaded(() => {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n const setTranslations = async () => {\n await setNestedAsync('ar.trans', 'blocks.comments.based_on', 'بناءً على');\n await setNestedAsync('en.trans', 'blocks.comments.based_on', 'Based on');\n\n this.basedOnLabel = salla.lang.get('blocks.comments.based_on');\n };\n\n setTranslations();\n });\n }\n\n /**\n * Product ID\n */\n @Prop() itemId!: number;\n\n @State() canRender: boolean = false;\n @State() data: any;\n @State() basedOnLabel: string;\n\n componentWillLoad() {\n return salla.onReady()\n .then(() => this.loadSummary());\n }\n\n private async loadSummary() {\n if(!this.itemId){\n console.error('Error loading reviews summary: itemId is not defined');\n return this.canRender = false;\n }\n try {\n let resp = await salla.api.request(`rating/summary/${this.itemId}`);\n if (Array.isArray(resp.data.reviews) && !resp.data.reviews.length) {\n return this.canRender = false;\n } else {\n this.data = resp.data;\n this.canRender = true;\n }\n } catch (error) {\n console.error('Error loading reviews summary:', error);\n }\n }\n\n render() {\n if (!this.canRender) {\n return null;\n }\n\n // Initialize all ratings with 0 if missing\n const ratings = {\n \"1\": 0,\n \"2\": 0,\n \"3\": 0,\n \"4\": 0,\n \"5\": 0,\n ...this.data.reviews\n };\n\n\n const reviewElements = Object.keys(ratings).reverse().map(rating => {\n const percentage = ratings[rating];\n return (\n <div class=\"s-reviews-summary-row\">\n <div class=\"s-reviews-summary-row-rate\">{rating} <span innerHTML={Star2}></span></div>\n <salla-progress-bar class=\"s-reviews-summary-progress\" value={percentage} target={100} hideUnits={true} height='14px'></salla-progress-bar>\n <span class=\"s-reviews-summary-percentage\">{percentage}%</span>\n </div>\n );\n });\n\n return (\n <Host class=\"s-reviews-summary-wrapper\">\n <div class=\"s-reviews-summary-header\">\n <h3 class=\"s-reviews-summary-average\">{this.data.rating}</h3>\n <div>\n <salla-rating-stars value={this.data.rating}></salla-rating-stars>\n <p class=\"s-reviews-summary-count\">{this.basedOnLabel} {salla.helpers.number(salla.lang.choice('pages.rating.reviews', this.data.count))}</p>\n </div>\n </div>\n <div class=\"s-reviews-summary-rows\">\n {reviewElements}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -27645,6 +27645,10 @@ const SallaReviewsSummary = class {
27645
27645
  .then(() => this.loadSummary());
27646
27646
  }
27647
27647
  async loadSummary() {
27648
+ if (!this.itemId) {
27649
+ console.error('Error loading reviews summary: itemId is not defined');
27650
+ return this.canRender = false;
27651
+ }
27648
27652
  try {
27649
27653
  let resp = await salla.api.request(`rating/summary/${this.itemId}`);
27650
27654
  if (Array.isArray(resp.data.reviews) && !resp.data.reviews.length) {