ng-easycommerce 1.1.4 → 1.1.5

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 CHANGED
@@ -1,3 +1,7 @@
1
+ # Version 1.1.5
2
+ - Banners: se resuelven explícitamente los destinos `taxon`/`category`, `attribute` y `url`, respetando el tipo de redirección configurado.
3
+ - Banners: las plantillas del core aplican `ecAddActionRedirect` a los enlaces; los destinos incompletos ya no generan navegación accidental a `/`.
4
+
1
5
  # Version 1.1.4
2
6
  - Navegación: `AddActionRedirectDirective` normaliza URLs absolutas del mismo origen para el Angular Router, respeta el `base href` y conserva query parameters y fragmentos.
3
7
  - Navegación: se mantiene el comportamiento nativo para clics modificados, botón central y enlaces con `target` explícito.
@@ -8205,17 +8205,25 @@
8205
8205
  ? banner.translations[_this.consts.getLocale()].mobileImageName
8206
8206
  : banner.translations[_this.consts.getLocale()].imageName); };
8207
8207
  this.formUrl = function (banner) {
8208
- var resultado = "/";
8209
- var element = (banner.redirectionType == 'attribute' ? 'attributes' : 'categories');
8210
- try {
8211
- var asociacion = banner[(element == 'categories' ? 'taxons' : element)];
8212
- asociacion = asociacion.length && asociacion[0];
8213
- if (asociacion)
8214
- resultado = '/collection/' + element + '/' + (asociacion.slug || asociacion.translations[_this.consts.getLocale()].slug);
8215
- }
8216
- catch (e) {
8217
- }
8218
- return resultado;
8208
+ var _a, _b, _c, _d;
8209
+ if (!banner)
8210
+ return '/';
8211
+ var type = String(banner.redirectionType || '').toLowerCase();
8212
+ var element = type === 'attribute'
8213
+ ? 'attributes'
8214
+ : type === 'taxon' || type === 'category'
8215
+ ? 'categories'
8216
+ : null;
8217
+ if (!element)
8218
+ return '/';
8219
+ var associations = element === 'categories' ? banner.taxons : banner.attributes;
8220
+ if (!Array.isArray(associations) || associations.length !== 1)
8221
+ return '/';
8222
+ var association = associations[0];
8223
+ var slug = ((_a = association) === null || _a === void 0 ? void 0 : _a.slug) || ((_d = (_c = (_b = association) === null || _b === void 0 ? void 0 : _b.translations) === null || _c === void 0 ? void 0 : _c[_this.consts.getLocale()]) === null || _d === void 0 ? void 0 : _d.slug);
8224
+ return typeof slug === 'string' && slug.trim()
8225
+ ? '/collection/' + element + '/' + encodeURIComponent(slug.trim())
8226
+ : '/';
8219
8227
  };
8220
8228
  this.sendResponse = function (response_obj) {
8221
8229
  return _this.connection.post(_this.contactFormResponseAPI(), _this.prepareData(response_obj));
@@ -9314,7 +9322,7 @@
9314
9322
  BlockBannerBoxesEcComponent = __decorate$J([
9315
9323
  core.Component({
9316
9324
  selector: 'app-block-banner-boxes-ec',
9317
- template: "<section [ngClass]=\"trimClassBlock(meta.code) + ' container-fluid'\" *ngIf=\"banners.length\"\n [style.background-color]=\"meta.styles?.backgroundColor\"\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + consts.mediaUrl() + meta.styles?.backgroundImage +')' : 'inherit'\">\n\n\n <div class=\"block-boxes\">\n <div class=\"row\" *ngIf=\"meta.name\">\n <div class=\"col-12 mt-4\">\n <h2 class=\"font-weight-normal font-gd\">\n <span>{{meta.name}}</span>\n </h2>\n </div>\n </div>\n\n <!-- Si es formato fijo -->\n <ng-container *ngIf=\"meta.styles && meta.styles.carrousel == false ; else carrousel\">\n\n <div class=\"banner-content\">\n\n <div class=\"row g-0\">\n <div [class]=\"'item '+ ' col-md-6 ' + ' col-lg-' + (12/banners.length) \"\n *ngFor=\"let banner of banners; let i = index\" [id]=\"i\">\n <img class=\"img-fluid\" [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n <div class=\"position-absolute w-100 top-0 start-0 h-100\">\n <h2 [class]=\"'item-title px-2 item-position-vertical-'+ (banner.styles?.description?.position)\" \n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000'\">\n {{banner.title}}\n </h2>\n <p *ngIf=\"banner.subtitle\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle item-position-vertical-' + (banner.styles?.description?.position)\">\n {{banner.subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\n <a *ngIf=\"banner.styles?.button?.text\" href=\"{{banner.url}}\"\n [class]=\"'item-button btn btn-light'\">\n {{banner.styles.button.text}}\n </a>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n\n </ng-container>\n\n <!-- Si es Carrousel -->\n <ng-template #carrousel>\n\n\n <!-- carrousel mobile -->\n <ng-container *ngIf=\"consts.mobile(); else carrouselNormal\">\n <div class=\"banner-content mobile carrousel\">\n\n <div class=\"row my-2\">\n\n <div class=\"col-12 item-carrousel\" *ngFor=\"let banner of banners; let i = index\" [id]=\"i\">\n <a href=\"{{banner.url}}\">\n <img class=\"img-fluid\" [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n <div class=\"position-absolute w-100 top-0 start-0 h-100\">\n <h2 *ngIf=\"banner.title\" [class]=\"'item-title-fullpx-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\n {{banner.title}}\n </h2>\n <p *ngIf=\"banner.subtitle\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle item-position-vertical-' + (banner.styles?.description?.position)\">\n {{banner.subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\n <a *ngIf=\"banner.styles?.button?.text\" href=\"{{banner.url}}\"\n [class]=\"'item-button btn btn-light'\">\n {{banner.styles.button.text}}\n </a>\n </div>\n </div>\n </a>\n\n </div>\n\n </div>\n </div>\n </ng-container>\n\n <!-- carrousel desktop -->\n <ng-template #carrouselNormal>\n\n <owl-carousel-o [options]=\"options\">\n <ng-template carouselSlide *ngFor=\"let banner of banners; let i = index\" [id]=\"i\">\n\n <div class=\"banner-content carrousel\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n <div class=\"position-absolute w-100 top-0 start-0 h-100\">\n <h2 *ngIf=\"banner.title\" \n [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\n style=\"color:#fff\">\n {{banner.title}}\n </h2>\n <p *ngIf=\"banner.subtitle\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\n {{banner.subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\n <a *ngIf=\"banner.styles?.button?.text\" href=\"{{banner.url}}\"\n [style.background-color]=\"(banner.styles?.button?.color) ? banner.styles?.button?.color : '#fff' \"\n [class]=\"'item-button-full btn btn-light'\">\n {{banner.styles.button.text}}\n </a>\n </div>\n </div>\n </div>\n <!-- <div *ngIf=\"!banner.url; else externalUrl\" class=\"item-carrousel\">\n <a [routerLink]=\"formUrl(banner)\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\"></a>\n </div>\n <ng-template #externalUrl>\n <div class=\"item-carrousel\">\n <a href=\"{{banner.url}}\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n <div class=\"bottom-left\">\n {{banner.title}}\n </div>\n\n </a>\n </div>\n </ng-template> -->\n </ng-template>\n </owl-carousel-o>\n\n </ng-template>\n\n </ng-template>\n </div>\n</section>",
9325
+ template: "<section [ngClass]=\"trimClassBlock(meta.code) + ' container-fluid'\" *ngIf=\"banners.length\"\n [style.background-color]=\"meta.styles?.backgroundColor\"\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + consts.mediaUrl() + meta.styles?.backgroundImage +')' : 'inherit'\">\n\n\n <div class=\"block-boxes\">\n <div class=\"row\" *ngIf=\"meta.name\">\n <div class=\"col-12 mt-4\">\n <h2 class=\"font-weight-normal font-gd\">\n <span>{{meta.name}}</span>\n </h2>\n </div>\n </div>\n\n <!-- Si es formato fijo -->\n <ng-container *ngIf=\"meta.styles && meta.styles.carrousel == false ; else carrousel\">\n\n <div class=\"banner-content\">\n\n <div class=\"row g-0\">\n <div [class]=\"'item '+ ' col-md-6 ' + ' col-lg-' + (12/banners.length) \"\n *ngFor=\"let banner of banners; let i = index\" [id]=\"i\">\n <a [ecAddActionRedirect]=\"banner\" [isTransparent]=\"false\" class=\"d-block\">\n <img class=\"img-fluid\" [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </a>\n <a [ecAddActionRedirect]=\"banner\" [isTransparent]=\"false\" class=\"position-absolute d-block w-100 top-0 start-0 h-100\">\n <h2 [class]=\"'item-title px-2 item-position-vertical-'+ (banner.styles?.description?.position)\" \n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000'\">\n {{banner.title}}\n </h2>\n <p *ngIf=\"banner.subtitle\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle item-position-vertical-' + (banner.styles?.description?.position)\">\n {{banner.subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\n <span *ngIf=\"banner.styles?.button?.text\"\n [class]=\"'item-button btn btn-light'\">\n {{banner.styles.button.text}}\n </span>\n </div>\n </a>\n </div>\n\n </div>\n </div>\n\n </ng-container>\n\n <!-- Si es Carrousel -->\n <ng-template #carrousel>\n\n\n <!-- carrousel mobile -->\n <ng-container *ngIf=\"consts.mobile(); else carrouselNormal\">\n <div class=\"banner-content mobile carrousel\">\n\n <div class=\"row my-2\">\n\n <div class=\"col-12 item-carrousel\" *ngFor=\"let banner of banners; let i = index\" [id]=\"i\">\n <a [ecAddActionRedirect]=\"banner\" [isTransparent]=\"false\">\n <img class=\"img-fluid\" [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n <div class=\"position-absolute w-100 top-0 start-0 h-100\">\n <h2 *ngIf=\"banner.title\" [class]=\"'item-title-fullpx-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\n {{banner.title}}\n </h2>\n <p *ngIf=\"banner.subtitle\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle item-position-vertical-' + (banner.styles?.description?.position)\">\n {{banner.subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\n <span *ngIf=\"banner.styles?.button?.text\"\n [class]=\"'item-button btn btn-light'\">\n {{banner.styles.button.text}}\n </span>\n </div>\n </div>\n </a>\n\n </div>\n\n </div>\n </div>\n </ng-container>\n\n <!-- carrousel desktop -->\n <ng-template #carrouselNormal>\n\n <owl-carousel-o [options]=\"options\">\n <ng-template carouselSlide *ngFor=\"let banner of banners; let i = index\" [id]=\"i\">\n\n <div class=\"banner-content carrousel\">\n <a [ecAddActionRedirect]=\"banner\" [isTransparent]=\"false\" class=\"d-block\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </a>\n <a [ecAddActionRedirect]=\"banner\" [isTransparent]=\"false\" class=\"position-absolute d-block w-100 top-0 start-0 h-100\">\n <h2 *ngIf=\"banner.title\" \n [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\n style=\"color:#fff\">\n {{banner.title}}\n </h2>\n <p *ngIf=\"banner.subtitle\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\n {{banner.subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\n <span *ngIf=\"banner.styles?.button?.text\"\n [style.background-color]=\"(banner.styles?.button?.color) ? banner.styles?.button?.color : '#fff' \"\n [class]=\"'item-button-full btn btn-light'\">\n {{banner.styles.button.text}}\n </span>\n </div>\n </a>\n </div>\n <!-- <div *ngIf=\"!banner.url; else externalUrl\" class=\"item-carrousel\">\n <a [routerLink]=\"formUrl(banner)\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\"></a>\n </div>\n <ng-template #externalUrl>\n <div class=\"item-carrousel\">\n <a href=\"{{banner.url}}\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n <div class=\"bottom-left\">\n {{banner.title}}\n </div>\n\n </a>\n </div>\n </ng-template> -->\n </ng-template>\n </owl-carousel-o>\n\n </ng-template>\n\n </ng-template>\n </div>\n</section>\n",
9318
9326
  styles: [".item{position:relative}.item-title{top:30%}.item-title-full{top:50%}.item-subtitle-full{top:60%}.item-subtitle{top:40%}.item-button{top:60%}.item-button.item-position-vertical-center{left:50%;transform:translate(-50%)}.item-button.item-position-vertical-left{left:10%}.item-button.item-position-vertical-right{right:5%;transform:translate(-50%)}.item-button-full{top:70%}.item-button-full.item-position-vertical-center{left:50%;transform:translate(-50%)}.item-button-full.item-position-vertical-left{left:10%}.item-button-full.item-position-vertical-right{right:5%;transform:translate(-50%)}.item-position-vertical-left{text-align:left}.item-position-vertical-center{text-align:center}.item-position-vertical-right{text-align:right}h2.item-title-full::after{content:none}"]
9319
9327
  })
9320
9328
  ], BlockBannerBoxesEcComponent);
@@ -9445,7 +9453,7 @@
9445
9453
  BlockBannerFullEcComponent = __decorate$K([
9446
9454
  core.Component({
9447
9455
  selector: 'app-block-banner-full-ec',
9448
- template: "<section [ngClass]=\"trimClassBlock(meta.code) + ' container-fluid px-0'\" *ngIf=\"banners.length\"\n [style.background-color]=\"meta.styles?.backgroundColor\"\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + consts.mediaUrl() + meta.styles?.backgroundImage +')' : 'inherit'\">\n\n\n <!-- si es formato fijo -->\n <ng-container *ngIf=\"banners.length == 1;else carrousel \">\n\n <div class=\"row justify-content-center\">\n <!-- banner sin boton -->\n <a *ngIf=\"!banners[0].styles?.button?.text; else fullwithButton\" href=\"{{banners[0].url}}\">\n <div class=\"item col-12\">\n <img class=\"img-fluid\" [src]=\"consts.mediaBannerUrl() + getImage(banners[0])\" alt=\"\">\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\n <h2 *ngIf=\"banners[0].title\" [class]=\"'item-title-full px-2 item-position-vertical-' + (banners[0].styles?.description?.position)\"\n [style.color]=\"(banners[0].styles?.description?.color) ? banners[0].styles?.description?.color : '#fff' \">\n {{banners[0].title}}\n </h2>\n <p *ngIf=\"banners[0].subtitle\"\n [style.color]=\"(banners[0].styles?.description?.color) ? banners[0].styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banners[0].styles?.description?.position)\">\n {{banners[0].subtitle}}\n </p>\n </div>\n </div>\n </a>\n\n <!-- banner fijo con boton -->\n <ng-template #fullwithButton>\n <div class=\"item col-12\">\n <img class=\"img-fluid\" [src]=\"consts.mediaBannerUrl() + getImage(banners[0])\" alt=\"\">\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\n <h2 *ngIf=\"banners[0].title\" [class]=\"'item-title-full px-2 item-position-vertical-' + (banners[0].styles?.description?.position)\"\n [style.color]=\"(banners[0].styles?.description?.color) ? banners[0].styles?.description?.color : '#000' \">\n {{banners[0].title}}\n </h2>\n <p *ngIf=\"banners[0].subtitle\"\n [style.color]=\"(banners[0].styles?.description?.color) ? banners[0].styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banners[0].styles?.description?.position)\">\n {{banners[0].subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banners[0].styles?.button?.position)\">\n <a *ngIf=\"banners[0].styles?.button?.text\" href=\"{{banners[0].url}}\"\n [class]=\"'item-button-full btn btn-light '\">\n {{banners[0].styles.button.text}}\n </a>\n </div>\n </div>\n </div>\n\n </ng-template>\n </div>\n </ng-container>\n\n\n <!-- si es carrousel -->\n <ng-template #carrousel>\n\n <owl-carousel-o [options]=\"options\">\n <ng-template carouselSlide *ngFor=\"let banner of banners\" [id]=\"banner.id\">\n\n <!-- banner sin boton -->\n <div class=\"item\" *ngIf=\"!banner.styles?.button?.text; else carrouselwithButton\">\n <a *ngIf=\"banner.url; else onlyImage\" href=\"{{banner.url}}\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </a>\n <ng-template #onlyImage>\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </ng-template>\n </div>\n\n <!-- banner con boton -->\n <ng-template #carrouselwithButton>\n <div class=\"item\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\n <h2 *ngIf=\"banner.title\"\n [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\n {{banner.title}}\n </h2>\n <p *ngIf=\"banner.subtitle\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\n {{banner.subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\n <a *ngIf=\"banner.styles?.button?.text\" href=\"{{banner.url}}\"\n [class]=\"'item-button-full btn btn-light'\">\n {{banner.styles.button.text}}\n </a>\n </div>\n </div>\n <!-- <a *ngIf=\"!banner.url && (formUrl(banner) != '/')\" [routerLink]=\"formUrl(banner)\"\n class=\"btn btn-outline-light rounded-0 py-3 px-4 btn-conoce btn-caption-banner\">\n Conoc&eacute; Mas</a>\n <a *ngIf=\"banner.url\" href=\"{{banner.url}}\"\n class=\"btn btn-outline-light rounded-0 py-3 px-4 btn-conoce btn-caption-banner\">\n Conoc&eacute; Mas</a> -->\n </div>\n </ng-template>\n\n\n <!-- <div class=\"item\">\n <a *ngIf=\"banner.url; else onlyImage\" href=\"{{banner.url}}\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </a>\n <ng-template #onlyImage>\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </ng-template>\n <div class=\"carousel-caption d-block\">\n <a *ngIf=\"!banner.url && (formUrl(banner) != '/')\" [routerLink]=\"formUrl(banner)\"\n class=\"btn btn-outline-light rounded-0 py-3 px-4 btn-conoce btn-caption-banner\">\n Conoc&eacute; Mas</a>\n <a *ngIf=\"banner.url\" href=\"{{banner.url}}\"\n class=\"btn btn-outline-light rounded-0 py-3 px-4 btn-conoce btn-caption-banner\">\n Conoc&eacute; Mas</a>\n </div>\n </div> -->\n </ng-template>\n </owl-carousel-o>\n </ng-template>\n</section>\n",
9456
+ template: "<section [ngClass]=\"trimClassBlock(meta.code) + ' container-fluid px-0'\" *ngIf=\"banners.length\"\n [style.background-color]=\"meta.styles?.backgroundColor\"\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + consts.mediaUrl() + meta.styles?.backgroundImage +')' : 'inherit'\">\n\n\n <!-- si es formato fijo -->\n <ng-container *ngIf=\"banners.length == 1;else carrousel \">\n\n <div class=\"row justify-content-center\">\n <!-- banner sin boton -->\n <a *ngIf=\"!banners[0].styles?.button?.text; else fullwithButton\" [ecAddActionRedirect]=\"banners[0]\" [isTransparent]=\"false\">\n <div class=\"item col-12\">\n <img class=\"img-fluid\" [src]=\"consts.mediaBannerUrl() + getImage(banners[0])\" alt=\"\">\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\n <h2 *ngIf=\"banners[0].title\" [class]=\"'item-title-full px-2 item-position-vertical-' + (banners[0].styles?.description?.position)\"\n [style.color]=\"(banners[0].styles?.description?.color) ? banners[0].styles?.description?.color : '#fff' \">\n {{banners[0].title}}\n </h2>\n <p *ngIf=\"banners[0].subtitle\"\n [style.color]=\"(banners[0].styles?.description?.color) ? banners[0].styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banners[0].styles?.description?.position)\">\n {{banners[0].subtitle}}\n </p>\n </div>\n </div>\n </a>\n\n <!-- banner fijo con boton -->\n <ng-template #fullwithButton>\n <div class=\"item col-12\">\n <img class=\"img-fluid\" [src]=\"consts.mediaBannerUrl() + getImage(banners[0])\" alt=\"\">\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\n <h2 *ngIf=\"banners[0].title\" [class]=\"'item-title-full px-2 item-position-vertical-' + (banners[0].styles?.description?.position)\"\n [style.color]=\"(banners[0].styles?.description?.color) ? banners[0].styles?.description?.color : '#000' \">\n {{banners[0].title}}\n </h2>\n <p *ngIf=\"banners[0].subtitle\"\n [style.color]=\"(banners[0].styles?.description?.color) ? banners[0].styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banners[0].styles?.description?.position)\">\n {{banners[0].subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banners[0].styles?.button?.position)\">\n <a *ngIf=\"banners[0].styles?.button?.text\" [ecAddActionRedirect]=\"banners[0]\" [isTransparent]=\"false\"\n [class]=\"'item-button-full btn btn-light '\">\n {{banners[0].styles.button.text}}\n </a>\n </div>\n </div>\n </div>\n\n </ng-template>\n </div>\n </ng-container>\n\n\n <!-- si es carrousel -->\n <ng-template #carrousel>\n\n <owl-carousel-o [options]=\"options\">\n <ng-template carouselSlide *ngFor=\"let banner of banners\" [id]=\"banner.id\">\n\n <!-- banner sin boton -->\n <div class=\"item\" *ngIf=\"!banner.styles?.button?.text; else carrouselwithButton\">\n <a *ngIf=\"banner.url || formUrl(banner) !== '/'; else onlyImage\" [ecAddActionRedirect]=\"banner\" [isTransparent]=\"false\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </a>\n <ng-template #onlyImage>\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </ng-template>\n </div>\n\n <!-- banner con boton -->\n <ng-template #carrouselwithButton>\n <div class=\"item\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\n <h2 *ngIf=\"banner.title\"\n [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\n {{banner.title}}\n </h2>\n <p *ngIf=\"banner.subtitle\"\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\n {{banner.subtitle}}\n </p>\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\n <a *ngIf=\"banner.styles?.button?.text\" [ecAddActionRedirect]=\"banner\" [isTransparent]=\"false\"\n [class]=\"'item-button-full btn btn-light'\">\n {{banner.styles.button.text}}\n </a>\n </div>\n </div>\n <!-- <a *ngIf=\"!banner.url && (formUrl(banner) != '/')\" [routerLink]=\"formUrl(banner)\"\n class=\"btn btn-outline-light rounded-0 py-3 px-4 btn-conoce btn-caption-banner\">\n Conoc&eacute; Mas</a>\n <a *ngIf=\"banner.url\" href=\"{{banner.url}}\"\n class=\"btn btn-outline-light rounded-0 py-3 px-4 btn-conoce btn-caption-banner\">\n Conoc&eacute; Mas</a> -->\n </div>\n </ng-template>\n\n\n <!-- <div class=\"item\">\n <a *ngIf=\"banner.url; else onlyImage\" href=\"{{banner.url}}\">\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </a>\n <ng-template #onlyImage>\n <img [src]=\"consts.mediaBannerUrl() + getImage(banner)\" alt=\"\">\n </ng-template>\n <div class=\"carousel-caption d-block\">\n <a *ngIf=\"!banner.url && (formUrl(banner) != '/')\" [routerLink]=\"formUrl(banner)\"\n class=\"btn btn-outline-light rounded-0 py-3 px-4 btn-conoce btn-caption-banner\">\n Conoc&eacute; Mas</a>\n <a *ngIf=\"banner.url\" href=\"{{banner.url}}\"\n class=\"btn btn-outline-light rounded-0 py-3 px-4 btn-conoce btn-caption-banner\">\n Conoc&eacute; Mas</a>\n </div>\n </div> -->\n </ng-template>\n </owl-carousel-o>\n </ng-template>\n</section>\n",
9449
9457
  styles: [".owl-theme .owl-nav{background:0 0!important}.item{position:relative}.item-title{top:30%}.item-title-full{top:50%}.item-subtitle-full{top:60%}.item-subtitle{top:40%}.item-button{top:60%}.item-button.item-position-vertical-center{left:50%;transform:translate(-50%)}.item-button.item-position-vertical-left{left:10%}.item-button.item-position-vertical-right{right:5%;transform:translate(-50%)}.item-button-full{top:70%}.item-button-full.item-position-vertical-center{left:50%;transform:translate(-50%)}.item-button-full.item-position-vertical-left{left:10%}.item-button-full.item-position-vertical-right{right:5%;transform:translate(-50%)}.item-position-vertical-left{text-align:left}.item-position-vertical-center{text-align:center}.item-position-vertical-right{text-align:right}h2.item-title-full::after{content:none}"]
9450
9458
  })
9451
9459
  ], BlockBannerFullEcComponent);
@@ -27169,7 +27177,7 @@
27169
27177
  AddActionRedirectDirective.prototype.ngOnInit = function () { };
27170
27178
  AddActionRedirectDirective.prototype.ngOnChanges = function (changes) {
27171
27179
  var _this = this;
27172
- var _a;
27180
+ var _a, _b, _c;
27173
27181
  var element = this.elementRef.nativeElement;
27174
27182
  var target = this.targetManaged ? this.originalTarget : element.getAttribute('target');
27175
27183
  var rel = this.relManaged ? this.originalRel : element.getAttribute('rel');
@@ -27192,7 +27200,27 @@
27192
27200
  console.log('add class directive -> ', error);
27193
27201
  }
27194
27202
  });
27195
- this.redirectUrl = this.banner.url ? this.banner.url : this.blocksService.formUrl(this.banner);
27203
+ var configuredUrl = typeof ((_b = this.banner) === null || _b === void 0 ? void 0 : _b.url) === 'string' ? this.banner.url.trim() : '';
27204
+ var type = typeof ((_c = this.banner) === null || _c === void 0 ? void 0 : _c.redirectionType) === 'string'
27205
+ ? this.banner.redirectionType.toLowerCase()
27206
+ : '';
27207
+ var hasConfiguredDestination = false;
27208
+ if (type === 'url') {
27209
+ this.redirectUrl = configuredUrl;
27210
+ hasConfiguredDestination = !!configuredUrl;
27211
+ }
27212
+ else if (type === 'attribute' || type === 'taxon' || type === 'category') {
27213
+ this.redirectUrl = this.blocksService.formUrl(this.banner);
27214
+ }
27215
+ else {
27216
+ // Keep the previous URL-first behavior for legacy payloads without a type.
27217
+ this.redirectUrl = configuredUrl || this.blocksService.formUrl(this.banner);
27218
+ hasConfiguredDestination = !!configuredUrl;
27219
+ }
27220
+ if (!this.redirectUrl || (this.redirectUrl === '/' && !hasConfiguredDestination)) {
27221
+ this.renderer.removeAttribute(element, 'href');
27222
+ return;
27223
+ }
27196
27224
  var accessibleLabel = this.getAccessibleLabel();
27197
27225
  if (accessibleLabel) {
27198
27226
  this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-label', accessibleLabel);