@solcre-org/core-ui 2.15.15 → 2.15.16

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.
@@ -14867,6 +14867,22 @@ class GenericSidebarComponent {
14867
14867
  const maxItems = this.getMaxScrollItems();
14868
14868
  return this.getMobileType() === SidebarMobileType.SCROLL ? items.slice(0, maxItems) : items;
14869
14869
  });
14870
+ getActiveItemId = computed(() => {
14871
+ const items = this.getConfig()?.items || [];
14872
+ for (const item of items) {
14873
+ if (item.active) {
14874
+ return item.id;
14875
+ }
14876
+ if (item.children) {
14877
+ for (const subItem of item.children) {
14878
+ if (subItem.active) {
14879
+ return subItem.id;
14880
+ }
14881
+ }
14882
+ }
14883
+ }
14884
+ return '';
14885
+ });
14870
14886
  modalState = this.mobileModalService.getModalState();
14871
14887
  hasValidConfiguration = computed(() => {
14872
14888
  const currentConfig = this.getConfig();
@@ -15037,11 +15053,11 @@ class GenericSidebarComponent {
15037
15053
  return this.customModalService.getIsOpen();
15038
15054
  }
15039
15055
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GenericSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15040
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: GenericSidebarComponent, isStandalone: true, selector: "core-generic-sidebar", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, customTemplate: { classPropertyName: "customTemplate", publicName: "customTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked", subItemClicked: "subItemClicked" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "sidebarContentTemplate", first: true, predicate: ["sidebarContentTemplate"], descendants: true, isSignal: true }], hostDirectives: [{ directive: CoreHostDirective }], ngImport: i0, template: "@if(getConfig() && hasValidConfiguration() && shouldRenderSidebar()) {\n\n @if(getConfig()?.backButton) {\n <button class=\"c-back-link\" (click)=\"getConfig()?.backButton?.action()\">\n <span class=\"icon-arrow-left\"></span>\n @if(getConfig()?.backButton?.labelNeedsTranslation && getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label | translate }}\n } @else if(getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label }}\n }\n </button>\n }\n\n @if (shouldShowMobileVersion()) {\n \n @if (getMobileType() === SidebarMobileType.SELECT) {\n <div class=\"c-sidebar-mobile\">\n <label class=\"c-entry-input\">\n <select (change)=\"onMobileSelectChange($event)\">\n <option value=\"\">Seleccionar...</option>\n @for(item of getConfig()?.items || []; track item.id) {\n @if(item.children && item.children.length > 0) {\n <optgroup [label]=\"item.label\">\n @for(subItem of item.children; track subItem.id) {\n <option [disabled]=\"subItem.disabled\" [value]=\"subItem.id\">\n {{ subItem.label }}\n </option>\n }\n </optgroup>\n } @else {\n <option [disabled]=\"item.disabled\" [value]=\"item.id\">\n {{ item.label }}\n </option>\n }\n }\n </select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </label>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.SCROLL) {\n <div class=\"c-sidebar-mobile c-sidebar-mobile--scroll\">\n <nav class=\"c-sidenav c-sidenav--mobile-scroll\">\n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n <ul class=\"c-sidenav__list c-sidenav__list--scrollable\">\n @for(item of getScrollableItems(); track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n </nav>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.MODAL) {\n <!-- El modal se renderiza desde el componente layout usando el servicio -->\n <!-- No renderizamos nada aqu\u00ED para ocultar completamente el sidebar -->\n }\n }\n\n @if (shouldShowDesktopVersion()) {\n <nav class=\"c-sidenav\" style=\"--_layout-padd-y: calc(var(--space-y) * 1.8);\">\n \n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n @if(shouldUseCustomTemplate() && isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else if (!shouldUseCustomTemplate()) {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n }\n} \n\n<ng-template #sidebarContentTemplate>\n <nav class=\"c-sidenav c-sidenav--modal\">\n @if(shouldUseCustomTemplate() && isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else if (!shouldUseCustomTemplate()) {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem); modalService.closeModal()\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item); modalService.closeModal()\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n</ng-template>\n\n@if(shouldUseCustomTemplate() && !isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n}\n\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: IconCompatPipe, name: "coreIconCompat" }] });
15056
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: GenericSidebarComponent, isStandalone: true, selector: "core-generic-sidebar", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, customTemplate: { classPropertyName: "customTemplate", publicName: "customTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked", subItemClicked: "subItemClicked" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "sidebarContentTemplate", first: true, predicate: ["sidebarContentTemplate"], descendants: true, isSignal: true }], hostDirectives: [{ directive: CoreHostDirective }], ngImport: i0, template: "@if(getConfig() && hasValidConfiguration() && shouldRenderSidebar()) {\n\n @if(getConfig()?.backButton) {\n <button class=\"c-back-link\" (click)=\"getConfig()?.backButton?.action()\">\n <span class=\"icon-arrow-left\"></span>\n @if(getConfig()?.backButton?.labelNeedsTranslation && getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label | translate }}\n } @else if(getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label }}\n }\n </button>\n }\n\n @if (shouldShowMobileVersion()) {\n \n @if (getMobileType() === SidebarMobileType.SELECT) {\n <div class=\"c-sidebar-mobile\">\n <label class=\"c-entry-input\">\n <select (change)=\"onMobileSelectChange($event)\" [value]=\"getActiveItemId()\">\n <option value=\"\">Seleccionar...</option>\n @for(item of getConfig()?.items || []; track item.id) {\n @if(item.children && item.children.length > 0) {\n <optgroup [label]=\"item.label\">\n @for(subItem of item.children; track subItem.id) {\n <option [disabled]=\"subItem.disabled\" [value]=\"subItem.id\" [selected]=\"subItem.active\">\n {{ subItem.label }}\n </option>\n }\n </optgroup>\n } @else {\n <option [disabled]=\"item.disabled\" [value]=\"item.id\" [selected]=\"item.active\">\n {{ item.label }}\n </option>\n }\n }\n </select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </label>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.SCROLL) {\n <div class=\"c-sidebar-mobile c-sidebar-mobile--scroll\">\n <nav class=\"c-sidenav c-sidenav--mobile-scroll\">\n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n <ul class=\"c-sidenav__list c-sidenav__list--scrollable\">\n @for(item of getScrollableItems(); track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n </nav>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.MODAL) {\n <!-- El modal se renderiza desde el componente layout usando el servicio -->\n <!-- No renderizamos nada aqu\u00ED para ocultar completamente el sidebar -->\n }\n }\n\n @if (shouldShowDesktopVersion()) {\n <nav class=\"c-sidenav\" style=\"--_layout-padd-y: calc(var(--space-y) * 1.8);\">\n \n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n @if(shouldUseCustomTemplate() && isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else if (!shouldUseCustomTemplate()) {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n }\n} \n\n<ng-template #sidebarContentTemplate>\n <nav class=\"c-sidenav c-sidenav--modal\">\n @if(shouldUseCustomTemplate() && isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else if (!shouldUseCustomTemplate()) {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem); modalService.closeModal()\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item); modalService.closeModal()\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n</ng-template>\n\n@if(shouldUseCustomTemplate() && !isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n}\n\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: IconCompatPipe, name: "coreIconCompat" }] });
15041
15057
  }
15042
15058
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GenericSidebarComponent, decorators: [{
15043
15059
  type: Component,
15044
- args: [{ selector: 'core-generic-sidebar', standalone: true, imports: [CommonModule, TranslateModule, IconCompatPipe], hostDirectives: [CoreHostDirective], template: "@if(getConfig() && hasValidConfiguration() && shouldRenderSidebar()) {\n\n @if(getConfig()?.backButton) {\n <button class=\"c-back-link\" (click)=\"getConfig()?.backButton?.action()\">\n <span class=\"icon-arrow-left\"></span>\n @if(getConfig()?.backButton?.labelNeedsTranslation && getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label | translate }}\n } @else if(getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label }}\n }\n </button>\n }\n\n @if (shouldShowMobileVersion()) {\n \n @if (getMobileType() === SidebarMobileType.SELECT) {\n <div class=\"c-sidebar-mobile\">\n <label class=\"c-entry-input\">\n <select (change)=\"onMobileSelectChange($event)\">\n <option value=\"\">Seleccionar...</option>\n @for(item of getConfig()?.items || []; track item.id) {\n @if(item.children && item.children.length > 0) {\n <optgroup [label]=\"item.label\">\n @for(subItem of item.children; track subItem.id) {\n <option [disabled]=\"subItem.disabled\" [value]=\"subItem.id\">\n {{ subItem.label }}\n </option>\n }\n </optgroup>\n } @else {\n <option [disabled]=\"item.disabled\" [value]=\"item.id\">\n {{ item.label }}\n </option>\n }\n }\n </select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </label>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.SCROLL) {\n <div class=\"c-sidebar-mobile c-sidebar-mobile--scroll\">\n <nav class=\"c-sidenav c-sidenav--mobile-scroll\">\n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n <ul class=\"c-sidenav__list c-sidenav__list--scrollable\">\n @for(item of getScrollableItems(); track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n </nav>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.MODAL) {\n <!-- El modal se renderiza desde el componente layout usando el servicio -->\n <!-- No renderizamos nada aqu\u00ED para ocultar completamente el sidebar -->\n }\n }\n\n @if (shouldShowDesktopVersion()) {\n <nav class=\"c-sidenav\" style=\"--_layout-padd-y: calc(var(--space-y) * 1.8);\">\n \n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n @if(shouldUseCustomTemplate() && isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else if (!shouldUseCustomTemplate()) {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n }\n} \n\n<ng-template #sidebarContentTemplate>\n <nav class=\"c-sidenav c-sidenav--modal\">\n @if(shouldUseCustomTemplate() && isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else if (!shouldUseCustomTemplate()) {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem); modalService.closeModal()\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item); modalService.closeModal()\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n</ng-template>\n\n@if(shouldUseCustomTemplate() && !isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n}\n\n" }]
15060
+ args: [{ selector: 'core-generic-sidebar', standalone: true, imports: [CommonModule, TranslateModule, IconCompatPipe], hostDirectives: [CoreHostDirective], template: "@if(getConfig() && hasValidConfiguration() && shouldRenderSidebar()) {\n\n @if(getConfig()?.backButton) {\n <button class=\"c-back-link\" (click)=\"getConfig()?.backButton?.action()\">\n <span class=\"icon-arrow-left\"></span>\n @if(getConfig()?.backButton?.labelNeedsTranslation && getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label | translate }}\n } @else if(getConfig()?.backButton?.label) {\n {{ getConfig()!.backButton!.label }}\n }\n </button>\n }\n\n @if (shouldShowMobileVersion()) {\n \n @if (getMobileType() === SidebarMobileType.SELECT) {\n <div class=\"c-sidebar-mobile\">\n <label class=\"c-entry-input\">\n <select (change)=\"onMobileSelectChange($event)\" [value]=\"getActiveItemId()\">\n <option value=\"\">Seleccionar...</option>\n @for(item of getConfig()?.items || []; track item.id) {\n @if(item.children && item.children.length > 0) {\n <optgroup [label]=\"item.label\">\n @for(subItem of item.children; track subItem.id) {\n <option [disabled]=\"subItem.disabled\" [value]=\"subItem.id\" [selected]=\"subItem.active\">\n {{ subItem.label }}\n </option>\n }\n </optgroup>\n } @else {\n <option [disabled]=\"item.disabled\" [value]=\"item.id\" [selected]=\"item.active\">\n {{ item.label }}\n </option>\n }\n }\n </select>\n <span class=\"c-entry-input__addon icon-select-arrow\"></span>\n </label>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.SCROLL) {\n <div class=\"c-sidebar-mobile c-sidebar-mobile--scroll\">\n <nav class=\"c-sidenav c-sidenav--mobile-scroll\">\n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n <ul class=\"c-sidenav__list c-sidenav__list--scrollable\">\n @for(item of getScrollableItems(); track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n </nav>\n </div>\n }\n\n @if (getMobileType() === SidebarMobileType.MODAL) {\n <!-- El modal se renderiza desde el componente layout usando el servicio -->\n <!-- No renderizamos nada aqu\u00ED para ocultar completamente el sidebar -->\n }\n }\n\n @if (shouldShowDesktopVersion()) {\n <nav class=\"c-sidenav\" style=\"--_layout-padd-y: calc(var(--space-y) * 1.8);\">\n \n @if(getConfig()?.title) {\n <p class=\"c-sidenav__heading u-heading u-fz--300\">\n <strong>\n @if(shouldTranslateTitle()) {\n {{ getTitleDisplay() | translate }}\n } @else {\n {{ getTitleDisplay() }}\n }\n </strong>\n </p>\n }\n \n @if(shouldUseCustomTemplate() && isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else if (!shouldUseCustomTemplate()) {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem)\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item)\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n }\n} \n\n<ng-template #sidebarContentTemplate>\n <nav class=\"c-sidenav c-sidenav--modal\">\n @if(shouldUseCustomTemplate() && isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n } @else if (!shouldUseCustomTemplate()) {\n <ul class=\"c-sidenav__list\">\n @for(item of getConfig()?.items || []; track item.id) {\n <li class=\"c-sidenav__item\">\n @if(item.children && item.children.length > 0) {\n <a class=\"c-sidenav__link\">{{ item.label }}</a>\n <ul class=\"c-sidenav__sublist\">\n @for(subItem of item.children; track subItem.id) {\n <li class=\"c-sidenav__subitem\">\n <a class=\"c-sidenav__sublink\"\n [class.is-disabled]=\"subItem.disabled\"\n [class.is-active]=\"subItem.active\"\n (click)=\"onSubItemClick(subItem); modalService.closeModal()\">\n {{ subItem.label }}\n </a>\n </li>\n }\n </ul>\n } @else {\n <a class=\"c-sidenav__link\"\n [class.is-disabled]=\"item.disabled\"\n [class.is-active]=\"item.active\"\n (click)=\"onItemClick(item); modalService.closeModal()\">\n @if(item.icon) {\n <span [ngClass]=\"item.icon | coreIconCompat\"></span>\n }\n {{ item.label }}\n </a>\n }\n </li>\n }\n </ul>\n }\n </nav>\n</ng-template>\n\n@if(shouldUseCustomTemplate() && !isTemplateInsideNav()) {\n <ng-container \n [ngTemplateOutlet]=\"getActiveTemplate()\" \n [ngTemplateOutletContext]=\"{\n $implicit: getConfig(),\n config: getConfig(),\n position: position(),\n onItemClick: onItemClick.bind(this),\n onSubItemClick: onSubItemClick.bind(this)\n }\">\n </ng-container>\n}\n\n" }]
15045
15061
  }], propDecorators: { onResize: [{
15046
15062
  type: HostListener,
15047
15063
  args: ['window:resize', ['$event']]
@@ -15691,11 +15707,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
15691
15707
  // Este archivo es generado automáticamente por scripts/update-version.js
15692
15708
  // No edites manualmente este archivo
15693
15709
  const VERSION = {
15694
- full: '2.15.15',
15710
+ full: '2.15.16',
15695
15711
  major: 2,
15696
15712
  minor: 15,
15697
- patch: 15,
15698
- timestamp: '2025-10-15T13:03:12.947Z',
15713
+ patch: 16,
15714
+ timestamp: '2025-10-15T13:19:12.026Z',
15699
15715
  buildDate: '15/10/2025'
15700
15716
  };
15701
15717