ng-easycommerce-v18 0.2.10 → 0.2.11
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.
- package/README.md +3 -1
- package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +146 -11
- package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +2 -2
- package/fesm2022/ng-easycommerce-v18.mjs +146 -11
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.d.ts +41 -8
- package/package.json +1 -1
|
@@ -6056,12 +6056,26 @@ class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
6056
6056
|
* Datos del bloque que contiene a los banners
|
|
6057
6057
|
*/
|
|
6058
6058
|
meta;
|
|
6059
|
+
// =================== PERSONALIZACIÓN DE NAVEGACIÓN ===================
|
|
6060
|
+
/**
|
|
6061
|
+
* Personalización de las flechas de navegación
|
|
6062
|
+
* Por defecto usa símbolos de texto, pero se pueden especificar imágenes
|
|
6063
|
+
*/
|
|
6064
|
+
prevArrowImage; // undefined = usa símbolo de texto
|
|
6065
|
+
nextArrowImage; // undefined = usa símbolo de texto
|
|
6066
|
+
prevArrowText = '<';
|
|
6067
|
+
nextArrowText = '>';
|
|
6068
|
+
/**
|
|
6069
|
+
* Opción para habilitar/deshabilitar la navegación personalizada
|
|
6070
|
+
*/
|
|
6071
|
+
enableCustomNavigation = true;
|
|
6072
|
+
// ====================================================================
|
|
6059
6073
|
/**
|
|
6060
6074
|
* Servicio para Analytics
|
|
6061
6075
|
*/
|
|
6062
6076
|
analyticsService = inject(AnalyticsService);
|
|
6063
6077
|
/**
|
|
6064
|
-
* Signal
|
|
6078
|
+
* Signal utilizado para guardar el contenedor del carrusel
|
|
6065
6079
|
*/
|
|
6066
6080
|
swiperElement = signal(null);
|
|
6067
6081
|
/**
|
|
@@ -6070,19 +6084,21 @@ class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
6070
6084
|
* @returns
|
|
6071
6085
|
*/
|
|
6072
6086
|
getImage = (banner) => this.getBannerImage(banner);
|
|
6087
|
+
document;
|
|
6088
|
+
platformId = inject(PLATFORM_ID);
|
|
6073
6089
|
/**
|
|
6074
6090
|
* Se mappea los banners para sumarle el objeto de translations y que
|
|
6075
6091
|
* sean mas amigables para su uso.
|
|
6076
6092
|
*/
|
|
6077
6093
|
ngOnInit() {
|
|
6078
|
-
this.banners = this.banners.map((banner) => {
|
|
6094
|
+
this.banners = this.banners.map((banner) => {
|
|
6095
|
+
return { ...banner, ...banner.translations[this.apiConsts.LOCALE] };
|
|
6096
|
+
});
|
|
6079
6097
|
}
|
|
6080
|
-
document;
|
|
6081
|
-
platformId = inject(PLATFORM_ID);
|
|
6082
6098
|
/**
|
|
6083
|
-
* Ejecuta el método `afterNextRender`para cargar las configuraciones necesarias
|
|
6084
|
-
* para el carrusel
|
|
6085
|
-
* en el
|
|
6099
|
+
* Ejecuta el método `afterNextRender` para cargar las configuraciones necesarias
|
|
6100
|
+
* para el carrusel de banners. Esto debe ser así debido a que ya debe estar presente
|
|
6101
|
+
* en el DOM el elemento `<swiper-container>` para poder configurarlo.
|
|
6086
6102
|
*/
|
|
6087
6103
|
constructor() {
|
|
6088
6104
|
super();
|
|
@@ -6090,21 +6106,130 @@ class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
6090
6106
|
this.document = document;
|
|
6091
6107
|
}
|
|
6092
6108
|
afterNextRender(() => {
|
|
6093
|
-
|
|
6109
|
+
this.initializeSwiperWithNavigation();
|
|
6110
|
+
});
|
|
6111
|
+
}
|
|
6112
|
+
/**
|
|
6113
|
+
* Inicializa el Swiper con navegación personalizada
|
|
6114
|
+
*/
|
|
6115
|
+
initializeSwiperWithNavigation() {
|
|
6116
|
+
const swiperElemConstructor = this.document?.querySelector('#' + this.meta?.code);
|
|
6117
|
+
if (swiperElemConstructor) {
|
|
6118
|
+
// Configurar el Swiper con las opciones base
|
|
6094
6119
|
Object.assign(swiperElemConstructor, this.swiperOptions());
|
|
6095
6120
|
this.swiperElement.set(swiperElemConstructor);
|
|
6096
6121
|
this.swiperElement()?.initialize();
|
|
6122
|
+
// Configurar navegación personalizada si está habilitada
|
|
6123
|
+
if (this.enableCustomNavigation) {
|
|
6124
|
+
setTimeout(() => {
|
|
6125
|
+
this.setupCustomNavigation();
|
|
6126
|
+
}, 200);
|
|
6127
|
+
}
|
|
6128
|
+
}
|
|
6129
|
+
}
|
|
6130
|
+
/**
|
|
6131
|
+
* Configura la navegación personalizada del Swiper para banners
|
|
6132
|
+
*/
|
|
6133
|
+
setupCustomNavigation() {
|
|
6134
|
+
const prevButton = this.document?.getElementById(`${this.meta?.code}-prev`);
|
|
6135
|
+
const nextButton = this.document?.getElementById(`${this.meta?.code}-next`);
|
|
6136
|
+
const swiperElement = this.document?.getElementById(this.meta?.code);
|
|
6137
|
+
if (prevButton && nextButton && swiperElement) {
|
|
6138
|
+
console.log('Configurando navegación personalizada para banners:', this.meta?.code);
|
|
6139
|
+
// Actualizar configuración del Swiper existente
|
|
6140
|
+
this.updateSwiperForBanners(swiperElement);
|
|
6141
|
+
// Configurar los event listeners para los botones
|
|
6142
|
+
this.setupBannerNavigationEventListeners(prevButton, nextButton, swiperElement);
|
|
6143
|
+
console.log('Event listeners configurados para navegación de banners');
|
|
6144
|
+
}
|
|
6145
|
+
else {
|
|
6146
|
+
console.log('No se pudieron encontrar los elementos de navegación para banners:', {
|
|
6147
|
+
prevButton: !!prevButton,
|
|
6148
|
+
nextButton: !!nextButton,
|
|
6149
|
+
swiperElement: !!swiperElement
|
|
6150
|
+
});
|
|
6151
|
+
}
|
|
6152
|
+
}
|
|
6153
|
+
/**
|
|
6154
|
+
* Actualiza la configuración del Swiper específicamente para banners
|
|
6155
|
+
*/
|
|
6156
|
+
updateSwiperForBanners(swiperElement) {
|
|
6157
|
+
if (swiperElement.swiper) {
|
|
6158
|
+
console.log('Actualizando configuración de Swiper para banners');
|
|
6159
|
+
// Configuración específica para banners
|
|
6160
|
+
swiperElement.swiper.params.slidesPerGroup = 1;
|
|
6161
|
+
swiperElement.swiper.allowSlideNext = true;
|
|
6162
|
+
swiperElement.swiper.allowSlidePrev = true;
|
|
6163
|
+
// Actualizar también los breakpoints si existen
|
|
6164
|
+
if (swiperElement.swiper.params.breakpoints) {
|
|
6165
|
+
Object.keys(swiperElement.swiper.params.breakpoints).forEach(key => {
|
|
6166
|
+
swiperElement.swiper.params.breakpoints[key].slidesPerGroup = 1;
|
|
6167
|
+
});
|
|
6168
|
+
}
|
|
6169
|
+
swiperElement.swiper.update();
|
|
6170
|
+
}
|
|
6171
|
+
}
|
|
6172
|
+
/**
|
|
6173
|
+
* Configura los event listeners para los botones de navegación de banners
|
|
6174
|
+
*/
|
|
6175
|
+
setupBannerNavigationEventListeners(prevButton, nextButton, swiperElement) {
|
|
6176
|
+
// Remover event listeners existentes para evitar duplicados
|
|
6177
|
+
const prevClone = prevButton.cloneNode(true);
|
|
6178
|
+
const nextClone = nextButton.cloneNode(true);
|
|
6179
|
+
prevButton.parentNode?.replaceChild(prevClone, prevButton);
|
|
6180
|
+
nextButton.parentNode?.replaceChild(nextClone, nextButton);
|
|
6181
|
+
// Agregar nuevos event listeners
|
|
6182
|
+
prevClone.addEventListener('click', (e) => {
|
|
6183
|
+
e.preventDefault();
|
|
6184
|
+
e.stopPropagation();
|
|
6185
|
+
console.log('Click en botón anterior (banners)');
|
|
6186
|
+
if (swiperElement.swiper) {
|
|
6187
|
+
swiperElement.swiper.slidePrev();
|
|
6188
|
+
}
|
|
6189
|
+
});
|
|
6190
|
+
nextClone.addEventListener('click', (e) => {
|
|
6191
|
+
e.preventDefault();
|
|
6192
|
+
e.stopPropagation();
|
|
6193
|
+
console.log('Click en botón siguiente (banners)');
|
|
6194
|
+
if (swiperElement.swiper) {
|
|
6195
|
+
swiperElement.swiper.slideNext();
|
|
6196
|
+
}
|
|
6097
6197
|
});
|
|
6098
6198
|
}
|
|
6099
6199
|
/**
|
|
6100
|
-
* Aplica el evento `select_promotion` junto con el banner que
|
|
6200
|
+
* Aplica el evento `select_promotion` junto con el banner que interactúa.
|
|
6101
6201
|
* @param banner
|
|
6102
6202
|
*/
|
|
6103
6203
|
selectPromotion(banner) {
|
|
6104
6204
|
this.analyticsService.callEvent('select_promotion', banner);
|
|
6105
6205
|
}
|
|
6206
|
+
/**
|
|
6207
|
+
* Obtiene la configuración específica del Swiper para banners
|
|
6208
|
+
* Sobrescribe la configuración base si es necesario
|
|
6209
|
+
*/
|
|
6210
|
+
getBannerSwiperConfiguration() {
|
|
6211
|
+
return {
|
|
6212
|
+
slidesPerView: 1,
|
|
6213
|
+
spaceBetween: 0,
|
|
6214
|
+
slidesPerGroup: 1,
|
|
6215
|
+
navigation: false, // Deshabilitamos la navegación por defecto
|
|
6216
|
+
pagination: {
|
|
6217
|
+
el: '.swiper-pagination',
|
|
6218
|
+
clickable: true,
|
|
6219
|
+
},
|
|
6220
|
+
loop: true,
|
|
6221
|
+
autoplay: {
|
|
6222
|
+
delay: 5000,
|
|
6223
|
+
disableOnInteraction: false,
|
|
6224
|
+
},
|
|
6225
|
+
effect: 'fade',
|
|
6226
|
+
fadeEffect: {
|
|
6227
|
+
crossFade: true
|
|
6228
|
+
}
|
|
6229
|
+
};
|
|
6230
|
+
}
|
|
6106
6231
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6107
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerFullEcComponent, isStandalone: true, selector: "app-block-banner-full-ec", inputs: { banners: "banners", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length > 0) {\r\n <section [ngClass]=\"trimClassBlock(meta?.code)+' container-fluid px-0'\"\r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n @if (banners.length == 1) {\r\n <!-- si es formato fijo -->\r\n <div class=\"row justify-content-center\">\r\n @let banner = banners[0];\r\n @if(!banners.styles?.button?.text){\r\n <!-- banner sin boton -->\r\n <a [href]=\"banner.url\" >\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n </a>\r\n }@else {\r\n <!-- banner fijo con boton -->\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p \r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\"\r\n [class]=\"'item-button-full btn btn-light '\">\r\n {{banner.styles.button.text}}\r\n </a> \r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <!-- si es carrousel -->\r\n <!-- @if(swiperElement() != null){ -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <swiper-slide>\r\n <div class=\"item\">\r\n @if (!banner.styles?.button?.text) {\r\n <!-- banner sin boton -->\r\n @if(banner.url){\r\n <a [href]=\"banner.url\" class=\"\">\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n </a>\r\n }@else {\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n }\r\n }@else {\r\n <!-- banner con boton -->\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button-full btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n <!-- } -->\r\n \r\n }\r\n </section>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
6232
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerFullEcComponent, isStandalone: true, selector: "app-block-banner-full-ec", inputs: { banners: "banners", meta: "meta", prevArrowImage: "prevArrowImage", nextArrowImage: "nextArrowImage", prevArrowText: "prevArrowText", nextArrowText: "nextArrowText", enableCustomNavigation: "enableCustomNavigation" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length > 0) {\r\n <section [ngClass]=\"trimClassBlock(meta?.code)+' container-fluid px-0'\"\r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n @if (banners.length == 1) {\r\n <!-- si es formato fijo -->\r\n <div class=\"row justify-content-center\">\r\n @let banner = banners[0];\r\n @if(!banners.styles?.button?.text){\r\n <!-- banner sin boton -->\r\n <a [href]=\"banner.url\" >\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n </a>\r\n }@else {\r\n <!-- banner fijo con boton -->\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p \r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\"\r\n [class]=\"'item-button-full btn btn-light '\">\r\n {{banner.styles.button.text}}\r\n </a> \r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <!-- si es carrousel -->\r\n <!-- @if(swiperElement() != null){ -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <swiper-slide>\r\n <div class=\"item\">\r\n @if (!banner.styles?.button?.text) {\r\n <!-- banner sin boton -->\r\n @if(banner.url){\r\n <a [href]=\"banner.url\" class=\"\">\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n </a>\r\n }@else {\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n }\r\n }@else {\r\n <!-- banner con boton -->\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button-full btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n <!-- } -->\r\n \r\n }\r\n </section>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
6108
6233
|
}
|
|
6109
6234
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, decorators: [{
|
|
6110
6235
|
type: Component,
|
|
@@ -6117,6 +6242,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
6117
6242
|
}], meta: [{
|
|
6118
6243
|
type: Input,
|
|
6119
6244
|
args: [{ required: true }]
|
|
6245
|
+
}], prevArrowImage: [{
|
|
6246
|
+
type: Input
|
|
6247
|
+
}], nextArrowImage: [{
|
|
6248
|
+
type: Input
|
|
6249
|
+
}], prevArrowText: [{
|
|
6250
|
+
type: Input
|
|
6251
|
+
}], nextArrowText: [{
|
|
6252
|
+
type: Input
|
|
6253
|
+
}], enableCustomNavigation: [{
|
|
6254
|
+
type: Input
|
|
6120
6255
|
}] } });
|
|
6121
6256
|
|
|
6122
6257
|
register$1();
|
|
@@ -7210,7 +7345,7 @@ class BlocksEcComponent {
|
|
|
7210
7345
|
}
|
|
7211
7346
|
}
|
|
7212
7347
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlocksEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7213
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlocksEcComponent, isStandalone: true, selector: "app-blocks-ec", inputs: { templates: "templates", show_loading: "show_loading", section: "section", blockFilters: "blockFilters" }, ngImport: i0, template: "@if(blocks$ | async; as blocks){\r\n @if(blocks.length > 0){\r\n <div class=\"container-fluid px-0\">\r\n <div class=\"row\">\r\n @for (block of blocks; track $index) {\r\n @switch (block.contentType) {\r\n @case ('banner') {\r\n @switch(block.design){\r\n @case ('full') {\r\n <app-block-banner-full-ec [banners]=\"block.banners\" [meta]=\"block\" />\r\n }\r\n @case ('boxes') {\r\n <app-block-banner-box-ec [banners]=\"block.banners\" [meta]=\"block\"/>\r\n }\r\n }\r\n }\r\n @case ('html') {\r\n @if(showBlock(block)){\r\n <app-block-html-ec [html_content]=\"getHTMLContent(block)\" />\r\n }\r\n }\r\n @case ('products') {\r\n <app-block-products-ec [products]=\"block.products?.items\" [meta]=\"block\" />\r\n }\r\n @case ('contact_form') {\r\n @if(isNewsletter(block)){\r\n <app-block-newsletter-ec [block]=\"block.contactForm\" />\r\n } @else {\r\n <app-block-form-contact-ec [block]=\"block.contactForm\" />\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n }\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BlockBannerFullEcComponent, selector: "app-block-banner-full-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockBannerBoxEcComponent, selector: "app-block-banner-box-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockHtmlEcComponent, selector: "app-block-html-ec", inputs: ["html_content"] }, { kind: "component", type: BlockProductsEcComponent, selector: "app-block-products-ec", inputs: ["prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "appProduct", "products", "meta"] }, { kind: "component", type: BlockNewsletterEcComponent, selector: "app-block-newsletter-ec", inputs: ["block", "success_message", "subject"] }, { kind: "component", type: BlockFormContactEcComponent, selector: "app-block-form-contact-ec", inputs: ["block", "success_message", "redirect", "subject"] }] });
|
|
7348
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlocksEcComponent, isStandalone: true, selector: "app-blocks-ec", inputs: { templates: "templates", show_loading: "show_loading", section: "section", blockFilters: "blockFilters" }, ngImport: i0, template: "@if(blocks$ | async; as blocks){\r\n @if(blocks.length > 0){\r\n <div class=\"container-fluid px-0\">\r\n <div class=\"row\">\r\n @for (block of blocks; track $index) {\r\n @switch (block.contentType) {\r\n @case ('banner') {\r\n @switch(block.design){\r\n @case ('full') {\r\n <app-block-banner-full-ec [banners]=\"block.banners\" [meta]=\"block\" />\r\n }\r\n @case ('boxes') {\r\n <app-block-banner-box-ec [banners]=\"block.banners\" [meta]=\"block\"/>\r\n }\r\n }\r\n }\r\n @case ('html') {\r\n @if(showBlock(block)){\r\n <app-block-html-ec [html_content]=\"getHTMLContent(block)\" />\r\n }\r\n }\r\n @case ('products') {\r\n <app-block-products-ec [products]=\"block.products?.items\" [meta]=\"block\" />\r\n }\r\n @case ('contact_form') {\r\n @if(isNewsletter(block)){\r\n <app-block-newsletter-ec [block]=\"block.contactForm\" />\r\n } @else {\r\n <app-block-form-contact-ec [block]=\"block.contactForm\" />\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n }\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BlockBannerFullEcComponent, selector: "app-block-banner-full-ec", inputs: ["banners", "meta", "prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "enableCustomNavigation"] }, { kind: "component", type: BlockBannerBoxEcComponent, selector: "app-block-banner-box-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockHtmlEcComponent, selector: "app-block-html-ec", inputs: ["html_content"] }, { kind: "component", type: BlockProductsEcComponent, selector: "app-block-products-ec", inputs: ["prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "appProduct", "products", "meta"] }, { kind: "component", type: BlockNewsletterEcComponent, selector: "app-block-newsletter-ec", inputs: ["block", "success_message", "subject"] }, { kind: "component", type: BlockFormContactEcComponent, selector: "app-block-form-contact-ec", inputs: ["block", "success_message", "redirect", "subject"] }] });
|
|
7214
7349
|
}
|
|
7215
7350
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlocksEcComponent, decorators: [{
|
|
7216
7351
|
type: Component,
|