ng-easycommerce-v18 0.2.9 → 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/constants/api.constants.service.mjs +2 -11
- 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 +147 -21
- 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
|
@@ -87,14 +87,8 @@ class ApiConstantsService {
|
|
|
87
87
|
*/
|
|
88
88
|
CMS_URL = 'cms/';
|
|
89
89
|
constructor() {
|
|
90
|
-
console.log('🚀 ApiConstantsService inicializando...');
|
|
91
90
|
this._channel = this.environment.channel;
|
|
92
91
|
this.LOCALE = this.environment.locale;
|
|
93
|
-
console.log('🌍 Environment:', this.environment);
|
|
94
|
-
// Verificar si window.__env existe
|
|
95
|
-
if (typeof window !== 'undefined') {
|
|
96
|
-
console.log('🪟 window.__env:', window.__env);
|
|
97
|
-
}
|
|
98
92
|
}
|
|
99
93
|
/**
|
|
100
94
|
* URL del backend para realizar las peticiones
|
|
@@ -105,14 +99,11 @@ class ApiConstantsService {
|
|
|
105
99
|
// Primero intenta leer de window.__env (configurado por Docker)
|
|
106
100
|
const windowEnv = window.__env;
|
|
107
101
|
if (windowEnv?.apiUrl) {
|
|
108
|
-
console.log('🐳 API_URL desde Docker:', windowEnv.apiUrl);
|
|
109
102
|
return windowEnv.apiUrl;
|
|
110
103
|
}
|
|
111
104
|
}
|
|
112
105
|
// Fallback al environment (para SSR y como backup)
|
|
113
|
-
|
|
114
|
-
console.log('📦 API_URL desde environment:', apiUrl);
|
|
115
|
-
return apiUrl;
|
|
106
|
+
return this.environment.apiUrl ?? '';
|
|
116
107
|
}
|
|
117
108
|
/**
|
|
118
109
|
* Retorna la url base
|
|
@@ -6065,12 +6056,26 @@ class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
6065
6056
|
* Datos del bloque que contiene a los banners
|
|
6066
6057
|
*/
|
|
6067
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
|
+
// ====================================================================
|
|
6068
6073
|
/**
|
|
6069
6074
|
* Servicio para Analytics
|
|
6070
6075
|
*/
|
|
6071
6076
|
analyticsService = inject(AnalyticsService);
|
|
6072
6077
|
/**
|
|
6073
|
-
* Signal
|
|
6078
|
+
* Signal utilizado para guardar el contenedor del carrusel
|
|
6074
6079
|
*/
|
|
6075
6080
|
swiperElement = signal(null);
|
|
6076
6081
|
/**
|
|
@@ -6079,19 +6084,21 @@ class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
6079
6084
|
* @returns
|
|
6080
6085
|
*/
|
|
6081
6086
|
getImage = (banner) => this.getBannerImage(banner);
|
|
6087
|
+
document;
|
|
6088
|
+
platformId = inject(PLATFORM_ID);
|
|
6082
6089
|
/**
|
|
6083
6090
|
* Se mappea los banners para sumarle el objeto de translations y que
|
|
6084
6091
|
* sean mas amigables para su uso.
|
|
6085
6092
|
*/
|
|
6086
6093
|
ngOnInit() {
|
|
6087
|
-
this.banners = this.banners.map((banner) => {
|
|
6094
|
+
this.banners = this.banners.map((banner) => {
|
|
6095
|
+
return { ...banner, ...banner.translations[this.apiConsts.LOCALE] };
|
|
6096
|
+
});
|
|
6088
6097
|
}
|
|
6089
|
-
document;
|
|
6090
|
-
platformId = inject(PLATFORM_ID);
|
|
6091
6098
|
/**
|
|
6092
|
-
* Ejecuta el método `afterNextRender`para cargar las configuraciones necesarias
|
|
6093
|
-
* para el carrusel
|
|
6094
|
-
* 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.
|
|
6095
6102
|
*/
|
|
6096
6103
|
constructor() {
|
|
6097
6104
|
super();
|
|
@@ -6099,21 +6106,130 @@ class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
6099
6106
|
this.document = document;
|
|
6100
6107
|
}
|
|
6101
6108
|
afterNextRender(() => {
|
|
6102
|
-
|
|
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
|
|
6103
6119
|
Object.assign(swiperElemConstructor, this.swiperOptions());
|
|
6104
6120
|
this.swiperElement.set(swiperElemConstructor);
|
|
6105
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
|
+
}
|
|
6106
6197
|
});
|
|
6107
6198
|
}
|
|
6108
6199
|
/**
|
|
6109
|
-
* Aplica el evento `select_promotion` junto con el banner que
|
|
6200
|
+
* Aplica el evento `select_promotion` junto con el banner que interactúa.
|
|
6110
6201
|
* @param banner
|
|
6111
6202
|
*/
|
|
6112
6203
|
selectPromotion(banner) {
|
|
6113
6204
|
this.analyticsService.callEvent('select_promotion', banner);
|
|
6114
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
|
+
}
|
|
6115
6231
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6116
|
-
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"] }] });
|
|
6117
6233
|
}
|
|
6118
6234
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, decorators: [{
|
|
6119
6235
|
type: Component,
|
|
@@ -6126,6 +6242,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
6126
6242
|
}], meta: [{
|
|
6127
6243
|
type: Input,
|
|
6128
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
|
|
6129
6255
|
}] } });
|
|
6130
6256
|
|
|
6131
6257
|
register$1();
|
|
@@ -7219,7 +7345,7 @@ class BlocksEcComponent {
|
|
|
7219
7345
|
}
|
|
7220
7346
|
}
|
|
7221
7347
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlocksEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7222
|
-
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"] }] });
|
|
7223
7349
|
}
|
|
7224
7350
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlocksEcComponent, decorators: [{
|
|
7225
7351
|
type: Component,
|