@salla.sa/twilight-components
Version:
Salla Web Component
78 lines (74 loc) • 3.21 kB
JavaScript
/*!
* Crafted with ❤ by Salla
*/
import { r as registerInstance, h, H as Host, a as getElement } from './index-BQQ2x3w_.js';
const sallaMetadataCss = "";
const SallaMetadata = class {
constructor(hostRef) {
registerInstance(this, hostRef);
/**
* The entity type.
*/
this.entity = 'product';
this.specs = [];
this.download = salla.lang.get('pages.thank_you.download');
if (this.entityId) {
try {
this.entityId = Array.isArray(this.entityId)
? this.entityId
: JSON.parse(this.entityId);
return;
}
catch (e) {
salla.log('Bad json passed via entityId prop');
}
}
}
getValue(field) {
if (field.type === 'file') {
return `<a href="${field.value}" class="text-primary" target="_blank"><span class="sicon-download"></span> ${this.download}</a>`;
}
if (field.type === 'url') {
return `<a href="${field.value}" class="text-blue-700 underline" target="_blank">${field.value}</a>`; // classes will be moved to the utilities.json file
}
if (field.type === 'date') {
const date = new Date(field.value);
const day = String(date.getDate()).padStart(2, '0');
const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-based
const year = date.getFullYear();
const formattedDate = `${day}/${month}/${year}`;
return formattedDate;
}
return field.value;
}
async componentWillLoad() {
await salla.onReady();
if (!salla.config.get('store.features')?.includes('custom-fields')) {
return salla.logger.error('feature custom-fields is not activated');
}
//todo:: remove `product.showNewUrls` after changing it from BE
if (!this.entityId && (salla.url.is_page('product.single') || salla.url.is_page("product.showNewUrls"))) {
this.entityId = salla.config.get('page.id');
}
if (!this.entityId) {
return salla.logger.error("can't render salla-metadata without enity-id prop!");
}
await salla.lang.onLoaded();
this.download = salla.lang.get('pages.thank_you.download');
const response = await Salla.api.metadata.fetchValues(this.entity, this.entityId);
this.specs = response.data[0]?.sections;
}
render() {
if (!this.specs.length) {
return;
}
return (h(Host, { class: "s-metadata-wrapper" }, this.specs.map((item) => {
return (h("div", { class: "s-metadata-box" }, h("div", { class: "s-metadata-box-header" }, h("i", { class: "sicon-list" }), item.name), item.fields.map((field) => {
return (h("div", { class: "s-metadata-row" }, h("p", { class: "s-metadata-row-name" }, field.name), h("p", { class: "s-metadata-row-value", innerHTML: this.getValue(field) })));
})));
})));
}
get host() { return getElement(this); }
};
SallaMetadata.style = sallaMetadataCss;
export { SallaMetadata as salla_metadata };