@solcre-org/core-ui 2.15.4 → 2.15.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.
@@ -38,6 +38,10 @@
38
38
  "placeholder": "Select an option"
39
39
  }
40
40
  },
41
+ "mobile-header": {
42
+ "filter": "Filters",
43
+ "refresh": "Refresh data"
44
+ },
41
45
  "sidebar": {
42
46
  "title": "Admin panel",
43
47
  "logout": "Logout",
@@ -38,6 +38,10 @@
38
38
  "placeholder": "Seleccione una opción"
39
39
  }
40
40
  },
41
+ "mobile-header": {
42
+ "filter": "Filtros",
43
+ "refresh": "Actualizar"
44
+ },
41
45
  "sidebar": {
42
46
  "title": "Admin panel",
43
47
  "logout": "Cerrar sesión",
@@ -10842,6 +10842,7 @@ class HeaderService {
10842
10842
  showDefaultCreate = signal(true);
10843
10843
  headerOrder = signal(undefined);
10844
10844
  customTemplate = signal(null);
10845
+ mobileCustomTemplate = signal(null);
10845
10846
  filterButtonConfig = signal(undefined);
10846
10847
  createButtonConfig = signal(undefined);
10847
10848
  createButtonText = signal(undefined);
@@ -10906,6 +10907,12 @@ class HeaderService {
10906
10907
  setCustomTemplate(template) {
10907
10908
  this.customTemplate.set(template);
10908
10909
  }
10910
+ getMobileCustomTemplate() {
10911
+ return this.mobileCustomTemplate;
10912
+ }
10913
+ setMobileCustomTemplate(template) {
10914
+ this.mobileCustomTemplate.set(template);
10915
+ }
10909
10916
  clearHeaderData() {
10910
10917
  this.title.set('');
10911
10918
  this.text.set('');
@@ -10916,6 +10923,7 @@ class HeaderService {
10916
10923
  this.hasCreatePermission.set(false);
10917
10924
  this.headerOrder.set(undefined);
10918
10925
  this.customTemplate.set(null);
10926
+ this.mobileCustomTemplate.set(null);
10919
10927
  this.filterButtonConfig.set(undefined);
10920
10928
  this.createButtonConfig.set(undefined);
10921
10929
  this.createButtonText.set(undefined);
@@ -15197,6 +15205,10 @@ class MobileHeaderComponent {
15197
15205
  refreshClick = output();
15198
15206
  filterClick = output();
15199
15207
  shouldShow = this.mobileResolutionService.shouldShowMobileHeader;
15208
+ displayTitle = computed(() => {
15209
+ const headerTitle = this.headerService.getTitle()();
15210
+ return headerTitle || this.config().title;
15211
+ });
15200
15212
  shouldShowRefreshButton = computed(() => {
15201
15213
  const config = this.config();
15202
15214
  if (config.showRefreshButton !== undefined) {
@@ -15211,6 +15223,13 @@ class MobileHeaderComponent {
15211
15223
  }
15212
15224
  return this.headerService.hasFilters();
15213
15225
  });
15226
+ customTemplate = computed(() => {
15227
+ const configTemplate = this.config().customTemplate;
15228
+ if (configTemplate) {
15229
+ return configTemplate;
15230
+ }
15231
+ return this.headerService.getMobileCustomTemplate()();
15232
+ });
15214
15233
  onMenuClick() {
15215
15234
  this.menuClick.emit();
15216
15235
  }
@@ -15221,11 +15240,11 @@ class MobileHeaderComponent {
15221
15240
  this.filterClick.emit();
15222
15241
  }
15223
15242
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MobileHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15224
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: MobileHeaderComponent, isStandalone: true, selector: "core-mobile-header", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { menuClick: "menuClick", refreshClick: "refreshClick", filterClick: "filterClick" }, ngImport: i0, template: "@if (shouldShow()) {\n <div class=\"c-header-mobile__holder\">\n <div class=\"c-header-mobile__row\">\n <div class=\"c-header-mobile__col\">\n <p class=\"c-header-mobile__title\">{{ config().title | translate }}</p>\n </div>\n <div class=\"c-header-mobile__col\">\n <button \n type=\"button\" \n class=\"c-header-mobile__menu icon-burger\"\n [attr.aria-label]=\"'mobile-header.menu' | translate\"\n (click)=\"onMenuClick()\">\n </button>\n </div>\n </div>\n </div>\n \n @if (shouldShowRefreshButton() || shouldShowFilterButton()) {\n <div class=\"c-header-mobile__subnav\" \n [class.c-header-mobile__subnav--light]=\"config().lightSubnav !== false\">\n <div class=\"u-flex u-flex--space-between\">\n @if (shouldShowRefreshButton()) {\n <button \n type=\"button\"\n class=\"c-btn c-btn--stroke c-btn--secondary\"\n (click)=\"onRefreshClick()\">\n <span class=\"icon-reload\"></span>\n {{ (config().refreshButtonLabel || 'mobile-header.refresh') | translate }}\n </button>\n }\n \n @if (shouldShowFilterButton()) {\n <button \n type=\"button\"\n class=\"c-btn c-btn--stroke\"\n (click)=\"onFilterClick()\">\n <span class=\"icon-filter\"></span>\n {{ (config().filterButtonLabel || 'mobile-header.filter') | translate }}\n </button>\n }\n </div>\n </div>\n }\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
15243
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: MobileHeaderComponent, isStandalone: true, selector: "core-mobile-header", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { menuClick: "menuClick", refreshClick: "refreshClick", filterClick: "filterClick" }, ngImport: i0, template: "@if (shouldShow()) {\n <div class=\"c-header-mobile__holder\">\n <div class=\"c-header-mobile__row\">\n <div class=\"c-header-mobile__col\">\n <p class=\"c-header-mobile__title\">{{ displayTitle() | translate }}</p>\n </div>\n <div class=\"c-header-mobile__col\"> <button \n type=\"button\" \n class=\"c-header-mobile__menu icon-burger\"\n [attr.aria-label]=\"'mobile-header.menu' | translate\"\n (click)=\"onMenuClick()\">\n </button>\n </div>\n </div>\n </div>\n \n @if (customTemplate()) {\n <ng-container *ngTemplateOutlet=\"customTemplate()!\"></ng-container>\n }\n \n @if (shouldShowRefreshButton() || shouldShowFilterButton()) {\n <div class=\"c-header-mobile__subnav\" \n [class.c-header-mobile__subnav--light]=\"config().lightSubnav !== false\">\n <div class=\"u-flex u-flex--space-between\">\n @if (shouldShowRefreshButton()) {\n <button \n type=\"button\"\n class=\"c-btn c-btn--stroke c-btn--secondary\"\n (click)=\"onRefreshClick()\">\n <span class=\"icon-reload\"></span>\n {{ (config().refreshButtonLabel || 'mobile-header.refresh') | translate }}\n </button>\n }\n \n @if (shouldShowFilterButton()) {\n <button \n type=\"button\"\n class=\"c-btn c-btn--stroke\"\n (click)=\"onFilterClick()\">\n <span class=\"icon-filter\"></span>\n {{ (config().filterButtonLabel || 'mobile-header.filter') | translate }}\n </button>\n }\n </div>\n </div>\n }\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
15225
15244
  }
15226
15245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MobileHeaderComponent, decorators: [{
15227
15246
  type: Component,
15228
- args: [{ selector: 'core-mobile-header', standalone: true, imports: [CommonModule, TranslateModule], template: "@if (shouldShow()) {\n <div class=\"c-header-mobile__holder\">\n <div class=\"c-header-mobile__row\">\n <div class=\"c-header-mobile__col\">\n <p class=\"c-header-mobile__title\">{{ config().title | translate }}</p>\n </div>\n <div class=\"c-header-mobile__col\">\n <button \n type=\"button\" \n class=\"c-header-mobile__menu icon-burger\"\n [attr.aria-label]=\"'mobile-header.menu' | translate\"\n (click)=\"onMenuClick()\">\n </button>\n </div>\n </div>\n </div>\n \n @if (shouldShowRefreshButton() || shouldShowFilterButton()) {\n <div class=\"c-header-mobile__subnav\" \n [class.c-header-mobile__subnav--light]=\"config().lightSubnav !== false\">\n <div class=\"u-flex u-flex--space-between\">\n @if (shouldShowRefreshButton()) {\n <button \n type=\"button\"\n class=\"c-btn c-btn--stroke c-btn--secondary\"\n (click)=\"onRefreshClick()\">\n <span class=\"icon-reload\"></span>\n {{ (config().refreshButtonLabel || 'mobile-header.refresh') | translate }}\n </button>\n }\n \n @if (shouldShowFilterButton()) {\n <button \n type=\"button\"\n class=\"c-btn c-btn--stroke\"\n (click)=\"onFilterClick()\">\n <span class=\"icon-filter\"></span>\n {{ (config().filterButtonLabel || 'mobile-header.filter') | translate }}\n </button>\n }\n </div>\n </div>\n }\n}\n" }]
15247
+ args: [{ selector: 'core-mobile-header', standalone: true, imports: [CommonModule, TranslateModule], template: "@if (shouldShow()) {\n <div class=\"c-header-mobile__holder\">\n <div class=\"c-header-mobile__row\">\n <div class=\"c-header-mobile__col\">\n <p class=\"c-header-mobile__title\">{{ displayTitle() | translate }}</p>\n </div>\n <div class=\"c-header-mobile__col\"> <button \n type=\"button\" \n class=\"c-header-mobile__menu icon-burger\"\n [attr.aria-label]=\"'mobile-header.menu' | translate\"\n (click)=\"onMenuClick()\">\n </button>\n </div>\n </div>\n </div>\n \n @if (customTemplate()) {\n <ng-container *ngTemplateOutlet=\"customTemplate()!\"></ng-container>\n }\n \n @if (shouldShowRefreshButton() || shouldShowFilterButton()) {\n <div class=\"c-header-mobile__subnav\" \n [class.c-header-mobile__subnav--light]=\"config().lightSubnav !== false\">\n <div class=\"u-flex u-flex--space-between\">\n @if (shouldShowRefreshButton()) {\n <button \n type=\"button\"\n class=\"c-btn c-btn--stroke c-btn--secondary\"\n (click)=\"onRefreshClick()\">\n <span class=\"icon-reload\"></span>\n {{ (config().refreshButtonLabel || 'mobile-header.refresh') | translate }}\n </button>\n }\n \n @if (shouldShowFilterButton()) {\n <button \n type=\"button\"\n class=\"c-btn c-btn--stroke\"\n (click)=\"onFilterClick()\">\n <span class=\"icon-filter\"></span>\n {{ (config().filterButtonLabel || 'mobile-header.filter') | translate }}\n </button>\n }\n </div>\n </div>\n }\n}\n" }]
15229
15248
  }] });
15230
15249
 
15231
15250
  var PermissionsActions;
@@ -15302,11 +15321,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
15302
15321
  // Este archivo es generado automáticamente por scripts/update-version.js
15303
15322
  // No edites manualmente este archivo
15304
15323
  const VERSION = {
15305
- full: '2.15.4',
15324
+ full: '2.15.5',
15306
15325
  major: 2,
15307
15326
  minor: 15,
15308
- patch: 4,
15309
- timestamp: '2025-10-10T15:46:15.030Z',
15327
+ patch: 5,
15328
+ timestamp: '2025-10-10T16:14:37.566Z',
15310
15329
  buildDate: '10/10/2025'
15311
15330
  };
15312
15331
 
@@ -15382,6 +15401,9 @@ class MainNavComponent {
15382
15401
  this.routerSubscription.add(this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event) => {
15383
15402
  this.updateExpandedSectionsBasedOnCurrentRoute(event.url);
15384
15403
  this.updateBottomNavActiveState(event.url);
15404
+ if (this.isBottomNavOpen) {
15405
+ this.closeMobileNav();
15406
+ }
15385
15407
  }));
15386
15408
  this.updateExpandedSectionsBasedOnCurrentRoute(this.router.url);
15387
15409
  this.updateBottomNavActiveState(this.router.url);
@@ -15543,13 +15565,18 @@ class MainNavComponent {
15543
15565
  document.documentElement.classList.add('nav-expanded');
15544
15566
  }
15545
15567
  else {
15546
- document.body.classList.add('bottom-nav-closing');
15547
- setTimeout(() => {
15548
- document.body.classList.remove('bottom-nav-open');
15549
- document.body.classList.remove('bottom-nav-closing');
15550
- }, 700);
15568
+ this.closeMobileNav();
15551
15569
  }
15552
15570
  }
15571
+ closeMobileNav() {
15572
+ this.isBottomNavOpen = false;
15573
+ document.body.classList.add('bottom-nav-closing');
15574
+ document.documentElement.classList.remove('nav-expanded');
15575
+ setTimeout(() => {
15576
+ document.body.classList.remove('bottom-nav-open');
15577
+ document.body.classList.remove('bottom-nav-closing');
15578
+ }, 700);
15579
+ }
15553
15580
  onBottomNavItemClick(item) {
15554
15581
  if (item.disabled)
15555
15582
  return;