add idm-hotspot-tab
This commit is contained in:
BIN
demo-tabs/idm-hotspot-tab/image.png
Normal file
BIN
demo-tabs/idm-hotspot-tab/image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 297 KiB |
61
demo-tabs/idm-hotspot-tab/javascript.js
Normal file
61
demo-tabs/idm-hotspot-tab/javascript.js
Normal file
@@ -0,0 +1,61 @@
|
||||
class IdmHotspotTab {
|
||||
constructor({ name, productsId }) {
|
||||
this.productsId = productsId;
|
||||
this.name = name;
|
||||
this.html = `
|
||||
<div class="idm-hotspot-tab">
|
||||
<div class="idm-hotspot-tab__content">
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
initHotspot() {
|
||||
const classes = Array.from(this.container.classList).join(".");
|
||||
const tabId = this.container.dataset.tabId;
|
||||
const selector = `.${classes}[data-tab-id="${tabId}"] .idm-hotspot-tab__content`;
|
||||
const id = `idm-hotspot-tab__hotspot-${tabId}`;
|
||||
// deprecated. use new version
|
||||
idmInsertHotspotObject({
|
||||
id,
|
||||
classes: "idm-hotspot-tab__hotspot",
|
||||
title: "",
|
||||
placement: {
|
||||
selector,
|
||||
insert: "beforeend",
|
||||
},
|
||||
query: {
|
||||
string: `
|
||||
searchInput: {productsId : [${this.productsId}]}
|
||||
settingsInput: { limit: 100, page: 0 }
|
||||
`,
|
||||
graphFn: IDM_PRODUCTS_GQL,
|
||||
},
|
||||
options: {
|
||||
swiper: false,
|
||||
},
|
||||
onLoad: () => {
|
||||
setTimeout(() => {
|
||||
app_shop.fn.idmSetHeight({
|
||||
selectors: [
|
||||
`#${id} .product__name`,
|
||||
`#${id} .product__price`,
|
||||
`#${id} .btn-idm`,
|
||||
`#${id} .product__price-omnibus`,
|
||||
],
|
||||
container: `#${id} .products`,
|
||||
});
|
||||
}, 50);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async onInit(tab, modalInstance) {
|
||||
this.container = tab;
|
||||
if (this.productsId.length === 0) {
|
||||
console.error("IdmHotspotTab: no products");
|
||||
return;
|
||||
}
|
||||
|
||||
await this.initHotspot();
|
||||
}
|
||||
}
|
||||
127
demo-tabs/idm-hotspot-tab/style.less
Normal file
127
demo-tabs/idm-hotspot-tab/style.less
Normal file
@@ -0,0 +1,127 @@
|
||||
.idm-hotspot-tab {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1.6rem;
|
||||
|
||||
@media @laptop {
|
||||
gap: 3.2rem;
|
||||
}
|
||||
|
||||
& .bmFavourites {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&__search-wrapper {
|
||||
width: 100%;
|
||||
background-color: @idm-tabs__secondary-background-gray;
|
||||
border-radius: 100px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1.6rem;
|
||||
padding: 1.6rem 2.4rem;
|
||||
}
|
||||
|
||||
&__search {
|
||||
line-height: @idm-tabs__lineheight-l;
|
||||
font-size: @idm-tabs__mobile-body-medium;
|
||||
border: none;
|
||||
width: 100%;
|
||||
background: transparent;
|
||||
font-weight: @idm-tabs__weight-bold;
|
||||
color: @idm-tabs__primary-black;
|
||||
|
||||
&::placeholder {
|
||||
color: @idm-tabs__primary-black;
|
||||
}
|
||||
}
|
||||
|
||||
&__search-icon-wrapper {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&__content {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
& .products {
|
||||
gap: 4.8rem !important;
|
||||
}
|
||||
|
||||
& .product {
|
||||
&__name {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
line-height: 150%;
|
||||
max-height: calc(1.5em * 2);
|
||||
}
|
||||
|
||||
&--hidden {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
right: -2.4rem;
|
||||
top: 0;
|
||||
height: 80%;
|
||||
width: 1px; // Wpisane na sztywno (divider-thin)
|
||||
background-color: @idm-tabs__secondary-outline-gray;
|
||||
z-index: 67;
|
||||
}
|
||||
|
||||
&:nth-child(2n)::after {
|
||||
display: none;
|
||||
@media @tablet {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(4n)::after {
|
||||
@media @tablet {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
display: none;
|
||||
bottom: -2.4rem;
|
||||
left: 0;
|
||||
background-color: @idm-tabs__secondary-outline-gray;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
// mobile
|
||||
&:nth-child(2n + 1)::before {
|
||||
display: block;
|
||||
width: calc(200% + 4.8rem);
|
||||
@media @tablet {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
// desktop
|
||||
&:nth-child(4n - 3):before {
|
||||
@media @tablet {
|
||||
display: block;
|
||||
width: calc(400% + 3 * 4.8rem);
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-last-child(-n + 4)::before {
|
||||
@media @tablet {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user