fm-lp-factory
Version:
package created to build web ui components for FidelizarMais LP services
156 lines (137 loc) • 4.98 kB
JavaScript
import { updateFmTemplateCss } from "../index.js";
import { basicArrowSpinningLoading } from "../../../assets/components/loaders.js";
export default (component) => {
const section = document.createElement("section");
css();
section.classList.add("fm-section-container", "fm-list-of-all-awards");
section.innerHTML = template
.replace("%subtitle%", component.data.subtitle)
.replace("%title%", component.data.title);
document.querySelector("#fm-landing-page-content").appendChild(section);
const sectionBody = section.querySelector(".fm-awards-container-body");
setTimeout(() => {
LoyalJS.public.services().getAllPossibleAwards({ xApplication: "lp-rewards-redemption-coupons-and-products" })
.then((awards) => {
sectionBody.innerHTML = "";
awards.forEach((award) => {
const card = document.createElement("div");
card.classList.add("fm-awards-card");
card.innerHTML = cardTemplate
.replace("%cardName%", award.name)
.replace("%cardPoints%", `${award.point} ${LoyalJS.storeData.rules.customization.pointsName}`)
.replaceAll("%couponImage%", component.data.image)
.replace("%couponValue%", `R$ ${award.valueCoupon}`);
if (award.valueCoupon === 0)
card.querySelector(".card-coupon-img").remove();
sectionBody.appendChild(card);
});
})
.catch((error) => {
// Handle any errors that occur here
console.error(error);
});
}, 100);
}
const awardsLoader = /*html*/ `
<div class="fm-awards-loader">
${basicArrowSpinningLoading}
</div>
`;
const template = /*html*/ `
<div class="fm-awards-container">
<div class="fm-awards-container-header" >
<span class="subtitle">%subtitle%</span>
<span class="title">%title%</span>
</div>
<div class="fm-awards-container-body">
${awardsLoader}
</div>
</div>
`;
const cardTemplate = /*html*/ `
<div class="card-coupon-img">
<img src="%couponImage%" alt="%couponImage%">
<span class="card-coupon-value-money">%couponValue%</span>
</div>
<p >%cardName%</p>
<div class="card-coupon-detail-extra">
<span class="card-coupon-value-points">%cardPoints%</span>
</div>
`;
const css = () => {
updateFmTemplateCss(/*css*/ `
.fm-section-container.fm-list-of-all-awards{
width: 90%;
background-color: var(--fm-primary-color);
border-radius: var(--fm-base-border-radius);
}
.fm-list-of-all-awards .fm-awards-container-header {
color: var(--fm-secondary-button-text-color);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-bottom: 30px;
text-align: center;
}
.fm-list-of-all-awards .fm-awards-container-header .title {
font-size: 1.5rem;
font-weight: bold;
}
.fm-list-of-all-awards .fm-awards-container-header .subtitle {
font-size: 1rem;
}
.fm-list-of-all-awards .fm-awards-container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 20px;
margin: 40px;
}
.fm-awards-container .fm-awards-loader{
margin: 15px auto;
}
.fm-awards-container .fm-awards-loader img {
width: 75px;
}
.fm-awards-container-body {
display: flex;
gap: 15px;
flex-wrap: wrap;
align-items: center;
justify-content: center;
}
.fm-awards-container-body .fm-awards-card .card-coupon-img{
background-repeat: no-repeat;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.fm-awards-container-body .fm-awards-card .card-coupon-img .card-coupon-value-money{
color: white;
position: absolute;
}
.fm-awards-container-body .fm-awards-card {
text-align: center;
background: var(--fm-card-primary-background);
border-radius: var(--fm-base-border-radius);
padding: 20px;
flex-basis: 20%;
}
.fm-awards-container-body .card-coupon-detail-extra {
border: 2px solid var(--fm-card-primary-text-color);
color: var(--fm-card-primary-text-color);
border-radius: var(--fm-base-border-radius);
font-weight: bold;
padding: 5px;
}
@media (max-width: 768px) {
.fm-awards-container-body .fm-awards-card {
flex-basis: 100%;
}
}
`
);
}