desy-angular 4.0.0 → 5.1.1

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.
Files changed (73) hide show
  1. package/bundles/desy-angular.umd.js +1473 -386
  2. package/bundles/desy-angular.umd.js.map +1 -1
  3. package/bundles/desy-angular.umd.min.js +2 -2
  4. package/bundles/desy-angular.umd.min.js.map +1 -1
  5. package/desy-angular.d.ts +30 -25
  6. package/desy-angular.metadata.json +1 -1
  7. package/esm2015/desy-angular.js +31 -26
  8. package/esm2015/lib/desy-angular.module.js +1 -3
  9. package/esm2015/lib/desy-buttons/components/button/button.component.js +9 -16
  10. package/esm2015/lib/desy-buttons/components/button-loader/button-loader.component.js +8 -3
  11. package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +70 -70
  12. package/esm2015/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.js +6 -15
  13. package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +67 -55
  14. package/esm2015/lib/desy-buttons/components/pill/pill.component.js +5 -3
  15. package/esm2015/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.js +15 -0
  16. package/esm2015/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.js +15 -0
  17. package/esm2015/lib/desy-buttons/components/toggle/toggle.component.js +41 -0
  18. package/esm2015/lib/desy-buttons/desy-buttons.module.js +12 -3
  19. package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +36 -2
  20. package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +2 -2
  21. package/esm2015/lib/desy-forms/components/tree/interfaces/itree-item.js +3 -0
  22. package/esm2015/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.js +2 -0
  23. package/esm2015/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.js +151 -0
  24. package/esm2015/lib/desy-forms/components/tree/tree-item/tree-item.component.js +365 -0
  25. package/esm2015/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.js +25 -0
  26. package/esm2015/lib/desy-forms/components/tree/tree-sub/tree-sub.component.js +14 -0
  27. package/esm2015/lib/desy-forms/components/tree/tree.component.js +396 -0
  28. package/esm2015/lib/desy-forms/desy-forms.module.js +15 -1
  29. package/esm2015/lib/desy-forms/interfaces/item-checkbox-data.js +1 -1
  30. package/esm2015/lib/desy-modals/components/modal/modal.component.js +2 -2
  31. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +14 -49
  32. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +7 -4
  33. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +9 -37
  34. package/esm2015/lib/desy-nav/components/header/header.component.js +2 -2
  35. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +2 -2
  36. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +12 -3
  37. package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +3 -3
  38. package/esm2015/lib/desy-nav/components/nav/nav.component.js +33 -2
  39. package/esm2015/lib/desy-nav/desy-nav.module.js +4 -2
  40. package/esm2015/lib/desy-nav/interfaces/header-dropdown-data.js +1 -1
  41. package/esm2015/lib/desy-nav/interfaces/header-subnav-data.js +1 -1
  42. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +2 -2
  43. package/esm2015/lib/desy-views/components/alert/alert.component.js +28 -23
  44. package/esm2015/public-api.js +5 -1
  45. package/fesm2015/desy-angular.js +1371 -351
  46. package/fesm2015/desy-angular.js.map +1 -1
  47. package/lib/desy-buttons/components/button/button.component.d.ts +6 -6
  48. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +1 -0
  49. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +4 -7
  50. package/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.d.ts +2 -6
  51. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +1 -2
  52. package/lib/desy-buttons/components/pill/pill.component.d.ts +1 -0
  53. package/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.d.ts +5 -0
  54. package/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.d.ts +5 -0
  55. package/lib/desy-buttons/components/toggle/toggle.component.d.ts +15 -0
  56. package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +5 -0
  57. package/lib/desy-forms/components/tree/interfaces/itree-item.d.ts +5 -0
  58. package/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.d.ts +5 -0
  59. package/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.d.ts +43 -0
  60. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +85 -0
  61. package/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.d.ts +10 -0
  62. package/lib/desy-forms/components/tree/tree-sub/tree-sub.component.d.ts +6 -0
  63. package/lib/desy-forms/components/tree/tree.component.d.ts +107 -0
  64. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +1 -0
  65. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +7 -10
  66. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +5 -5
  67. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +1 -0
  68. package/lib/desy-nav/components/nav/nav.component.d.ts +3 -0
  69. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +5 -1
  70. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +5 -1
  71. package/lib/desy-views/components/alert/alert.component.d.ts +6 -4
  72. package/package.json +2 -2
  73. package/public-api.d.ts +4 -0
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/forms'), require('@angular/animations'), require('@angular/cdk/a11y'), require('@angular/common'), require('@angular/router'), require('@angular/platform-browser'), require('ngx-tippy-wrapper'), require('@angular/platform-browser/animations')) :
3
- typeof define === 'function' && define.amd ? define('desy-angular', ['exports', '@angular/core', '@angular/forms', '@angular/animations', '@angular/cdk/a11y', '@angular/common', '@angular/router', '@angular/platform-browser', 'ngx-tippy-wrapper', '@angular/platform-browser/animations'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['desy-angular'] = {}, global.ng.core, global.ng.forms, global.ng.animations, global.ng.cdk.a11y, global.ng.common, global.ng.router, global.ng.platformBrowser, global.ngxTippyWrapper, global.ng.platformBrowser.animations));
5
- }(this, (function (exports, i0, forms, animations, a11y, common, router, platformBrowser, ngxTippyWrapper, animations$1) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/forms'), require('@angular/animations'), require('@angular/cdk/a11y'), require('@angular/common'), require('@angular/router'), require('@angular/platform-browser'), require('ngx-tippy-wrapper')) :
3
+ typeof define === 'function' && define.amd ? define('desy-angular', ['exports', '@angular/core', '@angular/forms', '@angular/animations', '@angular/cdk/a11y', '@angular/common', '@angular/router', '@angular/platform-browser', 'ngx-tippy-wrapper'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['desy-angular'] = {}, global.ng.core, global.ng.forms, global.ng.animations, global.ng.cdk.a11y, global.ng.common, global.ng.router, global.ng.platformBrowser, global.ngxTippyWrapper));
5
+ }(this, (function (exports, i0, forms, animations, a11y, common, router, platformBrowser, ngxTippyWrapper) { 'use strict';
6
6
 
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
@@ -488,21 +488,11 @@
488
488
  __extends(ButtonComponent, _super);
489
489
  function ButtonComponent() {
490
490
  var _this = _super.apply(this, __spread(arguments)) || this;
491
+ _this.hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host
491
492
  _this.clickEvent = new i0.EventEmitter();
492
493
  _this.avoidingDoubleClick = false;
493
494
  return _this;
494
495
  }
495
- ButtonComponent.prototype.ngOnInit = function () {
496
- //this.required();
497
- };
498
- ButtonComponent.prototype.ngOnChanges = function (changes) {
499
- //this.required();
500
- };
501
- ButtonComponent.prototype.required = function () {
502
- if (this.getElement() !== this.staticElementTypeInput) {
503
- //textOrHtmlRequiredFunction(this.text, this.html);
504
- }
505
- };
506
496
  ButtonComponent.prototype.onClick = function (event) {
507
497
  var _this = this;
508
498
  if (this.preventDoubleClick) {
@@ -571,19 +561,22 @@
571
561
  configurable: true
572
562
  });
573
563
  return ButtonComponent;
574
- }(AccessibilityAndContentRequiredComponent));
564
+ }(AccessibilityComponent));
575
565
  ButtonComponent.ELEMENT_A = 'a';
576
566
  ButtonComponent.ELEMENT_BUTTON = 'button';
577
567
  ButtonComponent.ELEMENT_INPUT = 'input';
578
568
  ButtonComponent.decorators = [
579
569
  { type: i0.Component, args: [{
580
570
  selector: 'desy-button',
581
- template: "<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n<!-- button -->\r\n<ng-container [ngSwitch]=\"getElement()\">\r\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\r\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\r\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : null\"\r\n [attr.role]=\"role ? role : 'button'\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"\r\n [class]=\"getClassNames()\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"><ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></a>\r\n\r\n <a *ngIf=\"!routerLink\" data-module=\"c-button\" draggable=\"false\" (click)=\"onClick($event)\"\r\n [href]=\"href | externalHref\"\r\n [attr.target]=\"target ? target : null\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : null\"\r\n [attr.role]=\"role ? role : 'button'\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"\r\n [class]=\"getClassNames()\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"><ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></a>\r\n\r\n </ng-container>\r\n\r\n <button *ngSwitchCase=\"staticElementTypeButton\" data-module=\"c-button\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.value]=\"value ? value : null\"\r\n [attr.disabled]=\"isDisabled()\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\r\n [attr.type]=\"type ? type : null\"\r\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"\r\n [class]=\"getClassNames()\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"><ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></button>\r\n\r\n <input *ngSwitchCase=\"staticElementTypeInput\" data-module=\"c-button\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.name]=\"name ? name : null\"\r\n [value]=\"text ? text : null\"\r\n [attr.disabled]=\"isDisabled()\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\r\n [attr.type]=\"type ? type : 'submit'\"\r\n [class]=\"getClassNames()\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n</ng-container>\r\n\r\n<!-- /button -->\r\n"
571
+ template: "<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n<ng-container [ngSwitch]=\"getElement()\">\r\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\r\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\r\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\r\n [attr.role]=\"role ? role : 'button'\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"\r\n [class]=\"getClassNames()\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </a>\r\n\r\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\r\n [href]=\"href | externalHref\"\r\n [attr.target]=\"target ? target : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\r\n [attr.role]=\"role ? role : 'button'\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"\r\n [class]=\"getClassNames()\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </a>\r\n\r\n </ng-container>\r\n\r\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.value]=\"value ? value : null\"\r\n [attr.disabled]=\"isDisabled()\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\r\n [attr.type]=\"type ? type : null\"\r\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"\r\n [class]=\"getClassNames()\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </button>\r\n\r\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.name]=\"name ? name : null\"\r\n [value]=\"text ? text : null\"\r\n [attr.disabled]=\"isDisabled()\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\r\n [attr.type]=\"type ? type : 'submit'\"\r\n [class]=\"getClassNames()\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n</ng-container>\r\n"
582
572
  },] }
583
573
  ];
584
574
  ButtonComponent.propDecorators = {
575
+ hostTabIndex: [{ type: i0.HostBinding, args: ['attr.tabindex',] }],
585
576
  id: [{ type: i0.Input }],
586
577
  classes: [{ type: i0.Input }],
578
+ html: [{ type: i0.Input }],
579
+ text: [{ type: i0.Input }],
587
580
  element: [{ type: i0.Input }],
588
581
  name: [{ type: i0.Input }],
589
582
  type: [{ type: i0.Input }],
@@ -600,7 +593,9 @@
600
593
  var ButtonLoaderComponent = /** @class */ (function (_super) {
601
594
  __extends(ButtonLoaderComponent, _super);
602
595
  function ButtonLoaderComponent() {
603
- return _super !== null && _super.apply(this, arguments) || this;
596
+ var _this = _super.apply(this, __spread(arguments)) || this;
597
+ _this.hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host
598
+ return _this;
604
599
  }
605
600
  ButtonLoaderComponent.prototype.getClassNames = function () {
606
601
  var classNames = 'c-button-loader relative';
@@ -635,10 +630,11 @@
635
630
  ButtonLoaderComponent.decorators = [
636
631
  { type: i0.Component, args: [{
637
632
  selector: 'desy-button-loader',
638
- template: "<ng-template #spinnerTemplate>\r\n <span class=\"c-button-loader__spinner flex items-center justify-center absolute inset-0\">\r\n <desy-spinner [text]=\"getSpinnerText()\" [classes]=\"loaderClasses\" ></desy-spinner>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #successTemplate>\r\n <span class=\"c-button-loader__success flex items-center justify-center absolute inset-0\">\r\n <p class=\"sr-only\" role=\"alert\" aria-live=\"assertive\">{{ getSuccessText() }}</p>\r\n <span aria-hidden=\"true\">\u2713</span>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n<!-- button-loader -->\r\n<ng-container [ngSwitch]=\"getElement()\">\r\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\r\n <a *ngIf=\"routerLink\" data-module=\"c-button\" draggable=\"false\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : null\"\r\n role=\"button\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n [class]=\"getClassNames()\">\r\n <ng-container *ngTemplateOutlet=\"spinnerTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"successTemplate\"></ng-container>\r\n <span class=\"c-button-loader__content inline-flex align-baseline\" [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"><ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></span>\r\n </a>\r\n\r\n <a *ngIf=\"!routerLink\" data-module=\"c-button\" draggable=\"false\" (click)=\"onClick($event)\"\r\n [href]=\"href | externalHref\" [attr.target]=\"target ? target : null\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : null\"\r\n role=\"button\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n [class]=\"getClassNames()\">\r\n <ng-container *ngTemplateOutlet=\"spinnerTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"successTemplate\"></ng-container>\r\n <span class=\"c-button-loader__content inline-flex align-baseline\" [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"><ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></span>\r\n </a>\r\n </ng-container>\r\n\r\n <button *ngSwitchCase=\"staticElementTypeButton\" data-module=\"c-button\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.value]=\"value ? value : null\"\r\n [attr.disabled]=\"isDisabled()\"\r\n [attr.role]=\"(role ? role : null)\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n [attr.type]=\"type ? type : null\"\r\n [class]=\"getClassNames()\">\r\n <ng-container *ngTemplateOutlet=\"spinnerTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"successTemplate\"></ng-container>\r\n <span class=\"c-button-loader__content inline-flex align-baseline\" [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"> <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></span>\r\n </button>\r\n\r\n <div *ngSwitchCase=\"staticElementTypeInput\" data-module=\"c-button\" (click)=\"onClick($event)\"\r\n [attr.name]=\"name ? name : null\"\r\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.disabled]=\"isDisabled()\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.role]=\"(role ? role : null)\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n [class]=\"getClassNames()\"\r\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\">\r\n <span class=\"c-button-loader__content inline-flex align-baseline\">\r\n <input [value]=\"text ? text : null\" [type]=\"type ? type : 'submit'\" class=\"bg-transparent font-semibold\">\r\n </span>\r\n <ng-container *ngTemplateOutlet=\"spinnerTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"successTemplate\"></ng-container>\r\n </div>\r\n</ng-container>\r\n<!-- /button-loader -->\r\n"
633
+ template: "<ng-template #spinnerTemplate>\r\n <span class=\"c-button-loader__spinner flex items-center justify-center absolute inset-0\">\r\n <desy-spinner [text]=\"getSpinnerText()\" [classes]=\"loaderClasses\" ></desy-spinner>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #successTemplate>\r\n <span class=\"c-button-loader__success flex items-center justify-center absolute inset-0\">\r\n <p class=\"sr-only\" role=\"alert\" aria-live=\"assertive\">{{ getSuccessText() }}</p>\r\n <span aria-hidden=\"true\">\u2713</span>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n<ng-container [ngSwitch]=\"getElement()\">\r\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\r\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n role=\"button\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\r\n [class]=\"getClassNames()\">\r\n <ng-container *ngTemplateOutlet=\"spinnerTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"successTemplate\"></ng-container>\r\n <span class=\"c-button-loader__content inline-flex align-baseline\" [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"><ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></span>\r\n </a>\r\n\r\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\r\n [href]=\"href | externalHref\" [attr.target]=\"target ? target : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\r\n role=\"button\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [class]=\"getClassNames()\">\r\n <ng-container *ngTemplateOutlet=\"spinnerTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"successTemplate\"></ng-container>\r\n <span class=\"c-button-loader__content inline-flex align-baseline\" [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"><ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></span>\r\n </a>\r\n </ng-container>\r\n\r\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\r\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.value]=\"value ? value : null\"\r\n [attr.disabled]=\"isDisabled()\"\r\n [attr.role]=\"(role ? role : null)\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n [attr.type]=\"type ? type : null\"\r\n [class]=\"getClassNames()\">\r\n <ng-container *ngTemplateOutlet=\"spinnerTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"successTemplate\"></ng-container>\r\n <span class=\"c-button-loader__content inline-flex align-baseline\" [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"> <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container></span>\r\n </button>\r\n\r\n <div *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\r\n [attr.name]=\"name ? name : null\"\r\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\r\n [attr.disabled]=\"isDisabled()\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.role]=\"(role ? role : null)\"\r\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n [class]=\"getClassNames()\"\r\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\">\r\n <span class=\"c-button-loader__content inline-flex align-baseline\">\r\n <input [value]=\"text ? text : null\" [type]=\"type ? type : 'submit'\" class=\"bg-transparent font-semibold\">\r\n </span>\r\n <ng-container *ngTemplateOutlet=\"spinnerTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"successTemplate\"></ng-container>\r\n </div>\r\n</ng-container>\r\n"
639
634
  },] }
640
635
  ];
641
636
  ButtonLoaderComponent.propDecorators = {
637
+ hostTabIndex: [{ type: i0.HostBinding, args: ['attr.tabindex',] }],
642
638
  loaderText: [{ type: i0.Input }],
643
639
  loaderClasses: [{ type: i0.Input }],
644
640
  state: [{ type: i0.Input }],
@@ -704,101 +700,100 @@
704
700
  function DropdownComponent() {
705
701
  var _this = _super.apply(this, __spread(arguments)) || this;
706
702
  _this.clickEvent = new i0.EventEmitter();
707
- _this.show = false;
703
+ _this.isOpen = false;
708
704
  _this.clickOutsideEnabled = false;
709
705
  return _this;
710
706
  }
711
707
  DropdownComponent.prototype.ngOnInit = function () {
712
- var _this = this;
713
- setTimeout(function () {
714
- var contentTooltip;
715
- if (_this.dropdownContent && _this.dropdownContent.nativeElement) {
716
- contentTooltip = _this.dropdownContent.nativeElement;
717
- contentTooltip.style.display = 'block';
718
- _this.tippyProperties = {
719
- placement: 'bottom-start',
720
- inlinePositioning: true,
721
- content: contentTooltip,
722
- allowHTML: true,
723
- trigger: 'click',
724
- hideOnClick: true,
725
- interactive: true,
726
- arrow: false,
727
- offset: [0, -10],
728
- theme: '',
729
- plugins: [{
730
- name: 'hideOnEsc',
731
- defaultValue: true,
732
- fn: function (_a) {
733
- var hide = _a.hide;
734
- function onKeyDown(event) {
735
- if (event.key === DropdownComponent.KEY_CODE_ESC) {
736
- hide();
737
- }
738
- }
739
- return {
740
- onShow: function () {
741
- document.addEventListener('keydown', onKeyDown);
742
- },
743
- onHide: function () {
744
- document.removeEventListener('keydown', onKeyDown);
745
- },
746
- };
747
- },
748
- }],
749
- role: false,
750
- aria: {
751
- content: 'auto',
752
- },
753
- onShown: function (instance) {
754
- var firstFocusable = FocusUtils.getFirstFocusableElement(contentTooltip);
755
- if (firstFocusable) {
756
- setTimeout(function () { return firstFocusable.focus(); });
708
+ var contentTooltip;
709
+ if (this.dropdownContent && this.dropdownContent.nativeElement) {
710
+ contentTooltip = this.dropdownContent.nativeElement;
711
+ contentTooltip.style.display = 'block';
712
+ this.tippyProperties = {
713
+ placement: 'bottom-start',
714
+ inlinePositioning: true,
715
+ content: contentTooltip,
716
+ allowHTML: true,
717
+ trigger: 'click',
718
+ hideOnClick: true,
719
+ interactive: true,
720
+ arrow: false,
721
+ offset: [0, -10],
722
+ theme: '',
723
+ plugins: [
724
+ {
725
+ name: 'hideOnPopperBlur',
726
+ defaultValue: true,
727
+ fn: function (instance) {
728
+ return {
729
+ onCreate: function () {
730
+ instance.popper.addEventListener('focusout', function (event) {
731
+ if (instance.props.hideOnPopperBlur &&
732
+ event.relatedTarget &&
733
+ !instance.popper.contains(event.relatedTarget)) {
734
+ instance.hide();
735
+ }
736
+ });
737
+ },
738
+ };
757
739
  }
740
+ },
741
+ {
742
+ name: 'hideOnEsc',
743
+ defaultValue: true,
744
+ fn: function (_a) {
745
+ var hide = _a.hide;
746
+ function onKeyDown(event) {
747
+ if (event.key === DropdownComponent.KEY_CODE_ESC) {
748
+ hide();
749
+ }
750
+ }
751
+ return {
752
+ onShow: function () {
753
+ document.addEventListener('keydown', onKeyDown);
754
+ },
755
+ onHide: function () {
756
+ document.removeEventListener('keydown', onKeyDown);
757
+ },
758
+ };
759
+ },
758
760
  }
759
- };
760
- }
761
- });
762
- };
763
- DropdownComponent.prototype.ngOnChanges = function (changes) {
764
- if (this.isDisabled()) { // se pone disable se cierra el dropdown
765
- this.closeDropdown();
761
+ ],
762
+ role: false,
763
+ aria: {
764
+ content: 'auto',
765
+ },
766
+ onShown: function (instance) {
767
+ var firstFocusable = FocusUtils.getFirstFocusableElement(contentTooltip);
768
+ if (firstFocusable) {
769
+ firstFocusable.focus();
770
+ }
771
+ }
772
+ };
766
773
  }
767
774
  };
768
775
  DropdownComponent.prototype.onClick = function (event) {
769
776
  if (!this.isDisabled()) {
770
- this.toggleDropdown();
771
777
  this.clickEvent.emit(event);
772
778
  }
773
779
  };
774
- DropdownComponent.prototype.toggleDropdown = function () {
775
- var _this = this;
776
- this.show = !this.show;
777
- setTimeout(function () { return _this.clickOutsideEnabled = _this.show; });
778
- };
779
- DropdownComponent.prototype.closeDropdown = function () {
780
- this.show = false;
781
- this.clickOutsideEnabled = false;
780
+ DropdownComponent.prototype.setOpen = function (isOpen) {
781
+ this.isOpen = isOpen;
782
782
  };
783
783
  DropdownComponent.prototype.isDisabled = function () {
784
784
  return this.disabled ? true : null;
785
785
  };
786
- DropdownComponent.prototype.onKeyDown = function (event) {
787
- if (event.key === DropdownComponent.KEY_CODE_ESC) {
788
- this.closeDropdown();
789
- }
790
- };
791
786
  return DropdownComponent;
792
787
  }(AccessibilityAndContentRequiredComponent));
793
788
  DropdownComponent.KEY_CODE_ESC = 'Escape';
794
789
  DropdownComponent.decorators = [
795
790
  { type: i0.Component, args: [{
796
791
  selector: 'desy-dropdown',
797
- template: "<!-- dropdown -->\r\n<div [class]=\"classesContainer ? classesContainer : 'relative'\">\r\n <button *ngIf=\"tippyProperties\" aria-haspopup=\"true\" (click)=\"onClick($event)\" ngxTippy [tippyProps]=\"tippyProperties\"\r\n [class]=\"['c-dropdown', classes] | makeHtmlList\"\r\n [attr.disabled]=\"isDisabled() ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.aria-expanded]=\"show\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.tabIndex]=\"isDisabled() ? '-1' : tabindex\">\r\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\" [desyInnerContent]=\"html ? html : text\" [isHtml]=\"html\" [deleteContentIfEmpty]=\"false\"><ng-content></ng-content></span> \r\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\r\n </button>\r\n <span *ngIf=\"hiddenText\" class=\"sr-only\">{{ hiddenText }}</span>\r\n <div #dropdownContent style=\"display: none;\"\r\n [class]=\"['-ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\"\r\n [desyClickOutside]=\"clickOutsideEnabled\" (clickOutside)=\"closeDropdown()\">\r\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\r\n </div>\r\n</div>\r\n<!-- /dropdown -->\r\n"
792
+ template: "<div [class]=\"classesContainer ? classesContainer : 'relative'\"\r\n (desyContentEmpty)=\"setOpen(false)\" (desyContentNotEmpty)=\"setOpen(true)\">\r\n <button #desyContentEmptyIgnore (click)=\"onClick($event)\"\r\n ngxTippy [tippyProps]=\"tippyProperties\"\r\n [class]=\"['c-dropdown', classes] | makeHtmlList\"\r\n [attr.disabled]=\"isDisabled() ? 'disabled' : null\"\r\n aria-haspopup=\"true\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.aria-expanded]=\"isOpen\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.tabIndex]=\"isDisabled() ? '-1' : tabindex\">\r\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\r\n <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\r\n <ng-content></ng-content>\r\n </span>\r\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\r\n </button>\r\n <span *ngIf=\"hiddenText\" #desyContentEmptyIgnore class=\"sr-only\">{{ hiddenText }}</span>\r\n <div #dropdownContent style=\"display: none;\"\r\n [class]=\"['-ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\r\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\r\n </div>\r\n</div>\r\n"
798
793
  },] }
799
794
  ];
800
795
  DropdownComponent.propDecorators = {
801
- dropdownContent: [{ type: i0.ViewChild, args: ['dropdownContent', { read: i0.ElementRef },] }],
796
+ dropdownContent: [{ type: i0.ViewChild, args: ['dropdownContent', { read: i0.ElementRef, static: true },] }],
802
797
  id: [{ type: i0.Input }],
803
798
  disabled: [{ type: i0.Input }],
804
799
  hiddenText: [{ type: i0.Input }],
@@ -806,8 +801,7 @@
806
801
  classesTooltip: [{ type: i0.Input }],
807
802
  classes: [{ type: i0.Input }],
808
803
  caller: [{ type: i0.Input }],
809
- clickEvent: [{ type: i0.Output }],
810
- onKeyDown: [{ type: i0.HostListener, args: ['window:keydown', ['$event'],] }]
804
+ clickEvent: [{ type: i0.Output }]
811
805
  };
812
806
 
813
807
  /**
@@ -831,28 +825,21 @@
831
825
  return StringUtils;
832
826
  }());
833
827
 
834
- var ListboxLabelComponent = /** @class */ (function () {
828
+ var ListboxLabelComponent = /** @class */ (function (_super) {
829
+ __extends(ListboxLabelComponent, _super);
835
830
  function ListboxLabelComponent() {
836
- this.isInit = false;
831
+ return _super !== null && _super.apply(this, arguments) || this;
837
832
  }
838
- ListboxLabelComponent.prototype.ngOnInit = function () {
839
- var _this = this;
840
- setTimeout(function () { return _this.isInit = !!_this.content; });
841
- };
842
- ListboxLabelComponent.prototype.getContent = function () {
843
- return this.isInit ? this.content : null;
844
- };
845
833
  return ListboxLabelComponent;
846
- }());
834
+ }(ContentBaseComponent));
847
835
  ListboxLabelComponent.decorators = [
848
836
  { type: i0.Component, args: [{
849
837
  selector: 'desy-listbox-label',
850
- template: "<ng-template #childComponentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n"
838
+ template: "<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n"
851
839
  },] }
852
840
  ];
853
841
  ListboxLabelComponent.propDecorators = {
854
- classes: [{ type: i0.Input }],
855
- content: [{ type: i0.ViewChild, args: ['childComponentTemplate',] }]
842
+ classes: [{ type: i0.Input }]
856
843
  };
857
844
 
858
845
  var ListboxItemComponent = /** @class */ (function (_super) {
@@ -929,54 +916,72 @@
929
916
  var _this = _super.apply(this, __spread(arguments)) || this;
930
917
  _this.itemsChange = new i0.EventEmitter();
931
918
  _this.activeItemChange = new i0.EventEmitter();
932
- _this.isListVisible = false;
919
+ _this.isListVisible = false; // Indica si la lista se está mostrando
933
920
  return _this;
934
921
  }
935
922
  ListboxComponent.prototype.ngOnInit = function () {
936
- var _this = this;
937
- setTimeout(function () {
938
- if (_this.listboxContent && _this.listboxContent.nativeElement) {
939
- var contentTooltip = _this.listboxContent.nativeElement;
940
- _this.tippyProperties = {
941
- placement: 'bottom-start',
942
- inlinePositioning: true,
943
- content: contentTooltip,
944
- allowHTML: true,
945
- trigger: 'click',
946
- hideOnClick: true,
947
- interactive: true,
948
- arrow: false,
949
- offset: [0, -10],
950
- theme: '',
951
- plugins: [{
952
- name: 'hideOnEsc',
953
- defaultValue: true,
954
- fn: function (_a) {
955
- var hide = _a.hide;
956
- function onKeyDown(event) {
957
- if (event.key === ListboxComponent.KEY_CODE_ESC) {
958
- hide();
959
- }
960
- }
961
- return {
962
- onShow: function () {
963
- document.addEventListener('keydown', onKeyDown);
964
- },
965
- onHide: function () {
966
- document.removeEventListener('keydown', onKeyDown);
967
- },
968
- };
969
- },
970
- }],
971
- role: false,
972
- aria: {
973
- content: 'auto',
923
+ var listboxButtonElement = this.listboxButton.nativeElement;
924
+ if (this.listboxContent && this.listboxContent.nativeElement) {
925
+ var contentTooltip = this.listboxContent.nativeElement;
926
+ this.tippyProperties = {
927
+ placement: 'bottom-start',
928
+ inlinePositioning: true,
929
+ content: contentTooltip,
930
+ allowHTML: true,
931
+ trigger: 'click',
932
+ hideOnClick: true,
933
+ interactive: true,
934
+ arrow: false,
935
+ offset: [0, -10],
936
+ theme: '',
937
+ plugins: [
938
+ {
939
+ name: 'hideOnPopperBlur',
940
+ defaultValue: true,
941
+ fn: function (instance) {
942
+ return {
943
+ onCreate: function () {
944
+ instance.popper.addEventListener('focusout', function (event) {
945
+ if (instance.props.hideOnPopperBlur &&
946
+ event.relatedTarget &&
947
+ !instance.popper.contains(event.relatedTarget)) {
948
+ instance.hide();
949
+ }
950
+ });
951
+ },
952
+ };
953
+ }
974
954
  },
975
- onShow: _this.onListShow.bind(_this),
976
- onHidden: _this.onListClose.bind(_this)
977
- };
978
- }
979
- });
955
+ {
956
+ name: 'hideOnEsc',
957
+ defaultValue: true,
958
+ fn: function (_a) {
959
+ var hide = _a.hide;
960
+ function onKeyDown(event) {
961
+ if (event.key === ListboxComponent.KEY_CODE_ESC) {
962
+ hide();
963
+ listboxButtonElement.focus();
964
+ }
965
+ }
966
+ return {
967
+ onShow: function () {
968
+ document.addEventListener('keydown', onKeyDown);
969
+ },
970
+ onHide: function () {
971
+ document.removeEventListener('keydown', onKeyDown);
972
+ },
973
+ };
974
+ },
975
+ }
976
+ ],
977
+ role: false,
978
+ aria: {
979
+ content: 'auto',
980
+ },
981
+ onShow: this.onListShow.bind(this),
982
+ onHidden: this.onListClose.bind(this)
983
+ };
984
+ }
980
985
  };
981
986
  ListboxComponent.prototype.ngOnChanges = function () {
982
987
  var _this = this;
@@ -1090,11 +1095,11 @@
1090
1095
  if (this.doesChangeButtonText && !this.isMultiselectable && activeItems.length > 0) {
1091
1096
  var activeItemOption = this.listboxOptions.find(function (item, index) { return index === activeItems[0].index; });
1092
1097
  if (activeItemOption) {
1093
- this.buttonContent = activeItemOption.nativeElement.innerHTML;
1098
+ this.buttonContentHtml = activeItemOption.nativeElement.innerHTML;
1094
1099
  }
1095
1100
  }
1096
1101
  else {
1097
- this.buttonContent = this.html ? this.html : this.text;
1102
+ this.buttonContentHtml = this.html ? this.html : null;
1098
1103
  }
1099
1104
  // Si hay cambios, se emiten
1100
1105
  if (hasActiveItemChange) {
@@ -1111,9 +1116,6 @@
1111
1116
  };
1112
1117
  ListboxComponent.prototype.onListClose = function () {
1113
1118
  this.isListVisible = false;
1114
- if (this.listboxButton) {
1115
- this.listboxButton.nativeElement.focus();
1116
- }
1117
1119
  };
1118
1120
  ListboxComponent.prototype.onListFocus = function () {
1119
1121
  var activeItemsData = this.getActiveItemsData();
@@ -1187,23 +1189,19 @@
1187
1189
  ListboxComponent.prototype.getLabelContent = function (label) {
1188
1190
  return label.html ? label.html : "<p>" + StringUtils.escapeHtml(label.text) + "</p>";
1189
1191
  };
1190
- ListboxComponent.prototype.isButtonContentHtml = function () {
1191
- var activeItemsData = this.getActiveItemsData();
1192
- return !!(this.doesChangeButtonText && !this.isMultiselectable && activeItemsData.length > 0 ? true : this.html);
1193
- };
1194
1192
  return ListboxComponent;
1195
1193
  }(AccessibilityAndTextOrHtmlRequiredComponent));
1196
1194
  ListboxComponent.KEY_CODE_ESC = 'Escape';
1197
1195
  ListboxComponent.decorators = [
1198
1196
  { type: i0.Component, args: [{
1199
1197
  selector: 'desy-listbox',
1200
- template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\">\r\n <div *ngIf=\"labelComponent\" [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent.classes] | makeHtmlList\">\r\n <ng-container *ngTemplateOutlet=\"labelComponent.getContent()\"></ng-container>\r\n </div>\r\n <div *ngIf=\"!labelComponent && label\" [id]=\"id + '-label'\" [class]=\"['mb-sm', label.classes] | makeHtmlList\"\r\n [desyInnerContent]=\"getLabelContent(label)\" [isHtml]=\"true\">\r\n </div>\r\n <button *ngIf=\"tippyProperties\"\r\n #button [id]=\"id + '-button'\"\r\n [class]=\"['c-listbox', classes] | makeHtmlList\"\r\n ngxTippy [tippyProps]=\"tippyProperties\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\r\n [attr.disabled]=\"disabled ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.aria-role] = \"role ? role : null\"\r\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\r\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\r\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\"\r\n [desyInnerContent]=\"buttonContent\" [isHtml]=\"isButtonContentHtml()\">\r\n </span>\r\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\r\n </button>\r\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\r\n <ul *ngIf=\"itemList\"\r\n #list [id]=\"id\"\r\n (focus)=\"onListFocus()\"\r\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\r\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\r\n (keydown.home)=\"moveFocus(0, $event)\"\r\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\r\n (keydown.space)=\"onSpace($event)\"\r\n role=\"listbox\"\r\n tabindex=\"-1\"\r\n class=\"text-sm outline-none\"\r\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\r\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\r\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-activedescendant] = \"lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\r\n <ng-container *ngFor=\"let item of itemList; index as index\">\r\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\r\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\r\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\r\n [id]=\"getItemId(item, index)\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\r\n\r\n [attr.aria-checked]=\"item.active\"\r\n [attr.aria-selected]=\"item.active\"\r\n [desyInnerContent]=\"!item['content'] ? (item.html ? item.html : item.text) : null\"\r\n [isHtml]=\"!item['content'] ? item.html : undefined\" [deleteContentIfEmpty]=\"false\">\r\n <ng-container *ngTemplateOutlet=\"item['content']\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n</div>\r\n"
1198
+ template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\">\r\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\r\n </div>\r\n <button #button [id]=\"id + '-button'\"\r\n [class]=\"['c-listbox', classes] | makeHtmlList\"\r\n ngxTippy [tippyProps]=\"tippyProperties\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\r\n [attr.disabled]=\"disabled ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\r\n [attr.aria-role] = \"role ? role : null\"\r\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\r\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\r\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\r\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\r\n </span>\r\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\r\n </button>\r\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\r\n <ul *ngIf=\"itemList\"\r\n #list [id]=\"id\"\r\n (focus)=\"onListFocus()\"\r\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\r\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\r\n (keydown.home)=\"moveFocus(0, $event)\"\r\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\r\n (keydown.space)=\"onSpace($event)\"\r\n role=\"listbox\"\r\n tabindex=\"-1\"\r\n class=\"text-sm outline-none\"\r\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\r\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\r\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-activedescendant] = \"lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\r\n <ng-container *ngFor=\"let item of itemList; index as index\">\r\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\r\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\r\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\r\n [id]=\"getItemId(item, index)\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\r\n\r\n [attr.aria-checked]=\"item.active\"\r\n [attr.aria-selected]=\"item.active\">\r\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n</div>\r\n"
1201
1199
  },] }
1202
1200
  ];
1203
1201
  ListboxComponent.propDecorators = {
1204
- listboxButton: [{ type: i0.ViewChild, args: ['button', { read: i0.ElementRef },] }],
1202
+ listboxButton: [{ type: i0.ViewChild, args: ['button', { read: i0.ElementRef, static: true },] }],
1205
1203
  listboxList: [{ type: i0.ViewChild, args: ['list', { read: i0.ElementRef },] }],
1206
- listboxContent: [{ type: i0.ViewChild, args: ['tooltip', { read: i0.ElementRef },] }],
1204
+ listboxContent: [{ type: i0.ViewChild, args: ['tooltip', { read: i0.ElementRef, static: true },] }],
1207
1205
  listboxOptions: [{ type: i0.ViewChildren, args: ['option', { read: i0.ElementRef },] }],
1208
1206
  labelComponent: [{ type: i0.ContentChildren, args: [ListboxLabelComponent,] }],
1209
1207
  itemComponentList: [{ type: i0.ContentChildren, args: [ListboxItemComponent,] }],
@@ -1229,6 +1227,7 @@
1229
1227
  function PillComponent() {
1230
1228
  var _this = _super.apply(this, __spread(arguments)) || this;
1231
1229
  _this.clickEvent = new i0.EventEmitter();
1230
+ _this.hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host
1232
1231
  return _this;
1233
1232
  }
1234
1233
  PillComponent.prototype.onClick = function (event) {
@@ -1296,7 +1295,8 @@
1296
1295
  routerLinkActiveClasses: [{ type: i0.Input }],
1297
1296
  classes: [{ type: i0.Input }],
1298
1297
  id: [{ type: i0.Input }],
1299
- clickEvent: [{ type: i0.Output }]
1298
+ clickEvent: [{ type: i0.Output }],
1299
+ hostTabIndex: [{ type: i0.HostBinding, args: ['attr.tabindex',] }]
1300
1300
  };
1301
1301
 
1302
1302
  var ContentComponent = /** @class */ (function (_super) {
@@ -2791,6 +2791,7 @@
2791
2791
  _this.checkboxes = checkboxes;
2792
2792
  _this.changeDetectorRef = changeDetectorRef;
2793
2793
  _this.checkedChange = new i0.EventEmitter();
2794
+ _this.indeterminateChange = new i0.EventEmitter();
2794
2795
  if (!_this.checkboxes) {
2795
2796
  throw Error('Checkbox items must be inside of CheckboxesComponent');
2796
2797
  }
@@ -2813,6 +2814,10 @@
2813
2814
  else if (this.lastValue !== undefined && this.lastValue !== this.value) {
2814
2815
  this.checkboxes.updateValueFromCheckboxItems();
2815
2816
  }
2817
+ if (this.indeterminateChecked !== this.lastIndeterminate && this.isInit()) {
2818
+ this.setIndeterminateChecked(this.indeterminateChecked);
2819
+ this.checkboxes.updateValueFromCheckboxItems();
2820
+ }
2816
2821
  this.lastValue = this.value;
2817
2822
  if (this.id !== this.checkboxId) {
2818
2823
  this.checkboxes.markForUpdateCheckboxIds();
@@ -2820,6 +2825,7 @@
2820
2825
  };
2821
2826
  CheckboxItemComponent.prototype.ngAfterViewInit = function () {
2822
2827
  this.setChecked(this.checked);
2828
+ this.setIndeterminateChecked(this.indeterminateChecked);
2823
2829
  this.checkboxes.updateValueFromCheckboxItems();
2824
2830
  };
2825
2831
  CheckboxItemComponent.prototype.getItemHintId = function () {
@@ -2839,6 +2845,7 @@
2839
2845
  }
2840
2846
  }
2841
2847
  this.setChecked(input.checked);
2848
+ this.setIndeterminateChecked(input.indeterminate);
2842
2849
  this.checkboxes.updateValueFromCheckboxItems();
2843
2850
  };
2844
2851
  CheckboxItemComponent.prototype.setChecked = function (checked) {
@@ -2847,6 +2854,26 @@
2847
2854
  this.checkedChange.emit(checked);
2848
2855
  this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
2849
2856
  };
2857
+ CheckboxItemComponent.prototype.setIndeterminateChecked = function (indeterminateChecked) {
2858
+ this.indeterminateChecked = indeterminateChecked;
2859
+ this.lastIndeterminate = indeterminateChecked;
2860
+ this.indeterminateChange.emit(indeterminateChecked);
2861
+ this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
2862
+ };
2863
+ CheckboxItemComponent.prototype.setIndeterminateStatus = function () {
2864
+ var _a;
2865
+ var input = (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
2866
+ if (input) {
2867
+ if (this.indeterminateChecked) {
2868
+ input.readOnly = true;
2869
+ input.indeterminate = true;
2870
+ }
2871
+ else if (input.readOnly) {
2872
+ input.readOnly = false;
2873
+ input.indeterminate = false;
2874
+ }
2875
+ }
2876
+ };
2850
2877
  CheckboxItemComponent.prototype.isInit = function () {
2851
2878
  return !!this.inputElement;
2852
2879
  };
@@ -2928,13 +2955,18 @@
2928
2955
  conditional: [{ type: i0.Input }],
2929
2956
  disabled: [{ type: i0.Input }],
2930
2957
  isIndeterminate: [{ type: i0.Input }],
2958
+ indeterminateChecked: [{ type: i0.Input }],
2931
2959
  classes: [{ type: i0.Input }],
2932
2960
  labelComponentList: [{ type: i0.ContentChildren, args: [LabelComponent,] }],
2933
2961
  hintComponentList: [{ type: i0.ContentChildren, args: [HintComponent,] }],
2934
2962
  conditionalContentList: [{ type: i0.ContentChildren, args: [ContentComponent,] }],
2935
2963
  checked: [{ type: i0.Input }],
2936
- checkedChange: [{ type: i0.Output }]
2937
- };
2964
+ checkedChange: [{ type: i0.Output }],
2965
+ indeterminateChange: [{ type: i0.Output }]
2966
+ };
2967
+ __decorate([
2968
+ DesyOnInputChange('setIndeterminateStatus')
2969
+ ], CheckboxItemComponent.prototype, "indeterminateChecked", void 0);
2938
2970
 
2939
2971
  var CheckboxesComponent = /** @class */ (function (_super) {
2940
2972
  __extends(CheckboxesComponent, _super);
@@ -3124,7 +3156,7 @@
3124
3156
  CheckboxesComponent.decorators = [
3125
3157
  { type: i0.Component, args: [{
3126
3158
  selector: 'desy-checkboxes',
3127
- template: "<div [class]=\"['c-form-group', formGroupClasses] | makeHtmlList\"\r\n [ngClass]=\"{'c-form-group--error': (hasErrorsMessage() || formGroupClasses == 'c-form-group--error') }\">\r\n\r\n <ng-container *ngIf=\"hasFieldsetComponent()\">\r\n <ng-content select=\"desy-fieldset\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasFieldsetComponent()\">\r\n <desy-fieldset *ngIf=\"fieldsetData\"\r\n [classes]=\"fieldsetData.classes\"\r\n [id]=\"fieldsetData.id\"\r\n [legendData]=\"fieldsetData.legend\"\r\n [headingLevel]=\"fieldsetData.headingLevel\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [role]=\"fieldsetData.role\"\r\n [ariaLabel]=\"fieldsetData.ariaLabel\"\r\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\r\n [ariaHidden]=\"fieldsetData.ariaHidden\"\r\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\r\n [ariaControls]=\"fieldsetData.ariaControls\"\r\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\r\n [ariaLive]=\"fieldsetData.ariaLive\"\r\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\r\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\r\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !!legendComponent\"\r\n [legendRef]=\"legendTemplate\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\">\r\n <ng-template #legendTemplate>\r\n <ng-content select=\"desy-legend\"></ng-content>\r\n </ng-template>\r\n </desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !legendComponent && legendRef\"\r\n [legendRef]=\"legendRef\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !legendComponent && !legendRef && legendData\"\r\n [legendData]=\"{text: legendData.text, html: legendData.html, classes: legendData.classes, isPageHeading: legendData.isPageHeading}\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !legendComponent && !legendRef && !legendData && legendText\"\r\n [legendText]=\"legendText\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"></desy-fieldset>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!hasFieldset()\">\r\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<ng-template #innerHtml>\r\n <ng-container *ngIf=\"hasHintComponent()\">\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasHintComponent()\">\r\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\r\n <desy-hint *ngIf=\"!hintRef && hintData\"\r\n [id]=\"getHintId()\"\r\n [text]=\"hintData.text\"\r\n [html]=\"hintData.html\"\r\n [classes]=\"hintData.classes\"\r\n [role]=\"hintData.role\"\r\n [ariaLabel]=\"hintData.ariaLabel\"\r\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\r\n [ariaHidden]=\"hintData.ariaHidden\"\r\n [ariaDisabled]=\"hintData.ariaDisabled\"\r\n [ariaControls]=\"hintData.ariaControls\"\r\n [ariaCurrent]=\"hintData.ariaCurrent\"\r\n [ariaLive]=\"hintData.ariaLive\"\r\n [ariaExpanded]=\"hintData.ariaExpanded\"\r\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\r\n [tabindex]=\"hintData.tabindex\"></desy-hint>\r\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"hasErrorMessageComponent()\">\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasErrorMessageComponent()\">\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\r\n [id]=\"getErrorId()\"\r\n [text]=\"errorMessageData.text\"\r\n [html]=\"errorMessageData.html\"\r\n [classes]=\"errorMessageData.classes\"\r\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\r\n [role]=\"errorMessageData.role\"\r\n [ariaLabel]=\"errorMessageData.ariaLabel\"\r\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessageData.ariaHidden\"\r\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\r\n [ariaControls]=\"errorMessageData.ariaControls\"\r\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\r\n [ariaLive]=\"errorMessageData.ariaLive\"\r\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\r\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\r\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n </ng-container>\r\n\r\n <div [class]=\"['c-checkboxes', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n\r\n <ng-container *ngIf=\"checkboxComponentItems && checkboxComponentItems.length > 0\">\r\n <ng-content select=\"desy-checkbox-item\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!(checkboxComponentItems && checkboxComponentItems.length > 0) && items\">\r\n <desy-checkbox-item *ngFor=\"let item of items; index as i\"\r\n [id]=\"item.id\"\r\n [disabled]=\"item.disabled\"\r\n [name]=\"item.name\"\r\n [classes]=\"item.classes\"\r\n [value]=\"item.value\"\r\n [(checked)]=\"item.checked\"\r\n [conditional]=\"item.conditional\"\r\n [isIndeterminate]=\"item.isIndeterminate\"\r\n\r\n [role]=\"item.role\"\r\n [ariaLabel]=\"item.ariaLabel\"\r\n [ariaDescribedBy]=\"item.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\r\n [ariaHidden]=\"item.ariaHidden\"\r\n [ariaDisabled]=\"item.ariaDisabled\"\r\n [ariaControls]=\"item.ariaControls\"\r\n [ariaCurrent]=\"item.ariaCurrent\"\r\n [ariaLive]=\"item.ariaLive\"\r\n [ariaExpanded]=\"item.ariaExpanded\"\r\n [ariaErrorMessage]=\"item.ariaErrorMessage\"\r\n [ariaHasPopup]=\"item.ariaHasPopup\"\r\n [tabindex]=\"item.tabindex\">\r\n <desy-label [text]=\"item.text\" [html]=\"item.html\"\r\n [classes]=\"item.labelData ? item.labelData.classes : null\"\r\n [role]=\"item.labelData ? item.labelData.role : null\"\r\n [ariaLabel]=\"item.labelData ? item.labelData.ariaLabel : null\"\r\n [ariaDescribedBy]=\"item.labelData ? item.labelData.ariaDescribedBy: null\"\r\n [ariaLabelledBy]=\"item.labelData ? item.labelData.ariaLabelledBy : null\"\r\n [ariaHidden]=\"item.labelData ? item.labelData.ariaHidden : null\"\r\n [ariaDisabled]=\"item.labelData ? item.labelData.ariaDisabled : null\"\r\n [ariaControls]=\"item.labelData ? item.labelData.ariaControls : null\"\r\n [ariaCurrent]=\"item.labelData ? item.labelData.ariaCurrent : null\"\r\n [ariaLive]=\"item.labelData ? item.labelData.ariaLive : null\"\r\n [ariaExpanded]=\"item.labelData ? item.labelData.ariaExpanded : null\"\r\n [ariaErrorMessage]=\"item.labelData ? item.labelData.ariaErrorMessage : null\"\r\n [ariaHasPopup]=\"item.labelData ? item.labelData.ariaHasPopup : null\"\r\n [tabindex]=\"tabindex ? item.labelData.tabindex : null\"></desy-label>\r\n <desy-hint *ngIf=\"item.hintData && (item.hintData.text || item.hintData.html)\"\r\n [text]=\"item.hintData.text\"\r\n [html]=\"item.hintData.html\"\r\n [classes]=\"item.hintData.classes\"\r\n [role]=\"item.hintData.role\"\r\n [ariaLabel]=\"item.hintData.ariaLabel\"\r\n [ariaDescribedBy]=\"item.hintData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"item.hintData.ariaLabelledBy\"\r\n [ariaHidden]=\"item.hintData.ariaHidden\"\r\n [ariaDisabled]=\"item.hintData.ariaDisabled\"\r\n [ariaControls]=\"item.hintData.ariaControls\"\r\n [ariaCurrent]=\"item.hintData.ariaCurrent\"\r\n [ariaLive]=\"item.hintData.ariaLive\"\r\n [ariaExpanded]=\"item.hintData.ariaExpanded\"\r\n [ariaErrorMessage]=\"item.hintData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"item.hintData.ariaHasPopup\"\r\n [tabindex]=\"item.hintData.tabindex\"></desy-hint>\r\n <desy-hint *ngIf=\"!item.hintData && item.hintText\" [text]=\"item.hintText\"></desy-hint>\r\n <desy-content *ngIf=\"item.conditionalHtml\">\r\n <ng-container *ngTemplateOutlet=\"item.conditionalHtml\"></ng-container>\r\n </desy-content>\r\n </desy-checkbox-item>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n",
3159
+ template: "<div [class]=\"['c-form-group', formGroupClasses] | makeHtmlList\"\r\n [ngClass]=\"{'c-form-group--error': (hasErrorsMessage() || formGroupClasses == 'c-form-group--error') }\">\r\n\r\n <ng-container *ngIf=\"hasFieldsetComponent()\">\r\n <ng-content select=\"desy-fieldset\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasFieldsetComponent()\">\r\n <desy-fieldset *ngIf=\"fieldsetData\"\r\n [classes]=\"fieldsetData.classes\"\r\n [id]=\"fieldsetData.id\"\r\n [legendData]=\"fieldsetData.legend\"\r\n [headingLevel]=\"fieldsetData.headingLevel\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [role]=\"fieldsetData.role\"\r\n [ariaLabel]=\"fieldsetData.ariaLabel\"\r\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\r\n [ariaHidden]=\"fieldsetData.ariaHidden\"\r\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\r\n [ariaControls]=\"fieldsetData.ariaControls\"\r\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\r\n [ariaLive]=\"fieldsetData.ariaLive\"\r\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\r\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\r\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !!legendComponent\"\r\n [legendRef]=\"legendTemplate\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\">\r\n <ng-template #legendTemplate>\r\n <ng-content select=\"desy-legend\"></ng-content>\r\n </ng-template>\r\n </desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !legendComponent && legendRef\"\r\n [legendRef]=\"legendRef\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !legendComponent && !legendRef && legendData\"\r\n [legendData]=\"{text: legendData.text, html: legendData.html, classes: legendData.classes, isPageHeading: legendData.isPageHeading}\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !legendComponent && !legendRef && !legendData && legendText\"\r\n [legendText]=\"legendText\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"></desy-fieldset>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!hasFieldset()\">\r\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<ng-template #innerHtml>\r\n <ng-container *ngIf=\"hasHintComponent()\">\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasHintComponent()\">\r\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\r\n <desy-hint *ngIf=\"!hintRef && hintData\"\r\n [id]=\"getHintId()\"\r\n [text]=\"hintData.text\"\r\n [html]=\"hintData.html\"\r\n [classes]=\"hintData.classes\"\r\n [role]=\"hintData.role\"\r\n [ariaLabel]=\"hintData.ariaLabel\"\r\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\r\n [ariaHidden]=\"hintData.ariaHidden\"\r\n [ariaDisabled]=\"hintData.ariaDisabled\"\r\n [ariaControls]=\"hintData.ariaControls\"\r\n [ariaCurrent]=\"hintData.ariaCurrent\"\r\n [ariaLive]=\"hintData.ariaLive\"\r\n [ariaExpanded]=\"hintData.ariaExpanded\"\r\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\r\n [tabindex]=\"hintData.tabindex\"></desy-hint>\r\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"hasErrorMessageComponent()\">\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasErrorMessageComponent()\">\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\r\n [id]=\"getErrorId()\"\r\n [text]=\"errorMessageData.text\"\r\n [html]=\"errorMessageData.html\"\r\n [classes]=\"errorMessageData.classes\"\r\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\r\n [role]=\"errorMessageData.role\"\r\n [ariaLabel]=\"errorMessageData.ariaLabel\"\r\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessageData.ariaHidden\"\r\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\r\n [ariaControls]=\"errorMessageData.ariaControls\"\r\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\r\n [ariaLive]=\"errorMessageData.ariaLive\"\r\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\r\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\r\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n </ng-container>\r\n\r\n <div [class]=\"['c-checkboxes', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n\r\n <ng-container *ngIf=\"checkboxComponentItems && checkboxComponentItems.length > 0\">\r\n <ng-content select=\"desy-checkbox-item\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!(checkboxComponentItems && checkboxComponentItems.length > 0) && items\">\r\n <desy-checkbox-item *ngFor=\"let item of items; index as i\"\r\n [id]=\"item.id\"\r\n [disabled]=\"item.disabled\"\r\n [name]=\"item.name\"\r\n [classes]=\"item.classes\"\r\n [value]=\"item.value\"\r\n [(checked)]=\"item.checked\"\r\n [conditional]=\"item.conditional\"\r\n [isIndeterminate]=\"item.isIndeterminate\"\r\n [indeterminateChecked]=\"item.indeterminateChecked\"\r\n\r\n [role]=\"item.role\"\r\n [ariaLabel]=\"item.ariaLabel\"\r\n [ariaDescribedBy]=\"item.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\r\n [ariaHidden]=\"item.ariaHidden\"\r\n [ariaDisabled]=\"item.ariaDisabled\"\r\n [ariaControls]=\"item.ariaControls\"\r\n [ariaCurrent]=\"item.ariaCurrent\"\r\n [ariaLive]=\"item.ariaLive\"\r\n [ariaExpanded]=\"item.ariaExpanded\"\r\n [ariaErrorMessage]=\"item.ariaErrorMessage\"\r\n [ariaHasPopup]=\"item.ariaHasPopup\"\r\n [tabindex]=\"item.tabindex\">\r\n <desy-label [text]=\"item.text\" [html]=\"item.html\"\r\n [classes]=\"item.labelData ? item.labelData.classes : null\"\r\n [role]=\"item.labelData ? item.labelData.role : null\"\r\n [ariaLabel]=\"item.labelData ? item.labelData.ariaLabel : null\"\r\n [ariaDescribedBy]=\"item.labelData ? item.labelData.ariaDescribedBy: null\"\r\n [ariaLabelledBy]=\"item.labelData ? item.labelData.ariaLabelledBy : null\"\r\n [ariaHidden]=\"item.labelData ? item.labelData.ariaHidden : null\"\r\n [ariaDisabled]=\"item.labelData ? item.labelData.ariaDisabled : null\"\r\n [ariaControls]=\"item.labelData ? item.labelData.ariaControls : null\"\r\n [ariaCurrent]=\"item.labelData ? item.labelData.ariaCurrent : null\"\r\n [ariaLive]=\"item.labelData ? item.labelData.ariaLive : null\"\r\n [ariaExpanded]=\"item.labelData ? item.labelData.ariaExpanded : null\"\r\n [ariaErrorMessage]=\"item.labelData ? item.labelData.ariaErrorMessage : null\"\r\n [ariaHasPopup]=\"item.labelData ? item.labelData.ariaHasPopup : null\"\r\n [tabindex]=\"tabindex ? item.labelData.tabindex : null\"></desy-label>\r\n <desy-hint *ngIf=\"item.hintData && (item.hintData.text || item.hintData.html)\"\r\n [text]=\"item.hintData.text\"\r\n [html]=\"item.hintData.html\"\r\n [classes]=\"item.hintData.classes\"\r\n [role]=\"item.hintData.role\"\r\n [ariaLabel]=\"item.hintData.ariaLabel\"\r\n [ariaDescribedBy]=\"item.hintData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"item.hintData.ariaLabelledBy\"\r\n [ariaHidden]=\"item.hintData.ariaHidden\"\r\n [ariaDisabled]=\"item.hintData.ariaDisabled\"\r\n [ariaControls]=\"item.hintData.ariaControls\"\r\n [ariaCurrent]=\"item.hintData.ariaCurrent\"\r\n [ariaLive]=\"item.hintData.ariaLive\"\r\n [ariaExpanded]=\"item.hintData.ariaExpanded\"\r\n [ariaErrorMessage]=\"item.hintData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"item.hintData.ariaHasPopup\"\r\n [tabindex]=\"item.hintData.tabindex\"></desy-hint>\r\n <desy-hint *ngIf=\"!item.hintData && item.hintText\" [text]=\"item.hintText\"></desy-hint>\r\n <desy-content *ngIf=\"item.conditionalHtml\">\r\n <ng-container *ngTemplateOutlet=\"item.conditionalHtml\"></ng-container>\r\n </desy-content>\r\n </desy-checkbox-item>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n",
3128
3160
  providers: [
3129
3161
  {
3130
3162
  provide: forms.NG_VALUE_ACCESSOR,
@@ -3579,32 +3611,1030 @@
3579
3611
  this.clickEvent.emit(event);
3580
3612
  }
3581
3613
  };
3582
- SearchBarComponent.prototype.hasButton = function () {
3583
- return this.button && this.button.length > 0;
3614
+ SearchBarComponent.prototype.hasButton = function () {
3615
+ return this.button && this.button.length > 0;
3616
+ };
3617
+ return SearchBarComponent;
3618
+ }(FormFieldComponent));
3619
+ SearchBarComponent.decorators = [
3620
+ { type: i0.Component, args: [{
3621
+ selector: 'desy-search-bar',
3622
+ template: "<!-- searchbar -->\r\n<div class=\"relative\" [ngClass]=\"{'flex flex-wrap items-end': hasButton()}\">\r\n <ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\r\n <desy-label *ngIf=\"!labelRef && labelData\"\r\n [text]=\"labelData.text\"\r\n [html]=\"labelData.html\"\r\n classes=\"sr-only\"\r\n [isPageHeading]=\"labelData.isPageHeading\"\r\n [for]=\"id\"\r\n [role]=\"labelData.role\"\r\n [ariaLabel]=\"labelData.ariaLabel\"\r\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\r\n [ariaHidden]=\"labelData.ariaHidden\"\r\n [ariaDisabled]=\"labelData.ariaDisabled\"\r\n [ariaControls]=\"labelData.ariaControls\"\r\n [ariaCurrent]=\"labelData.ariaCurrent\"\r\n [ariaLive]=\"labelData.ariaLive\"\r\n [ariaExpanded]=\"labelData.ariaExpanded\"\r\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\r\n [tabindex]=\"labelData.tabindex\"></desy-label>\r\n <desy-label *ngIf=\"!labelRef && !labelData && labelText\" [text]=\"labelText\" classes=\"sr-only\" [for]=\"id\"></desy-label>\r\n <input type=\"search\"\r\n [class]=\"['c-input block mt-sm pr-12 border-black rounded font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base', classes] | makeHtmlList\"\r\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base': hasErrorsMessage(),'w-full': !hasButton()}\"\r\n [value]=\"value\" (input)=\"onInput($event.target.value)\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"id ? id : null\"\r\n [attr.aria-describedby]=\"[describedBy, getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-container *ngIf=\"hasButton(); else defaultButton\">\r\n <ng-content select=\"desy-button\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultButton>\r\n <button type=\"submit\" [attr.disabled]=\"disabled ? 'disabled' : null\" [attr.aria-disabled]=\"disabled ? 'true' : null\"\r\n (click)=\"onClick($event)\"\r\n [class]=\"['absolute top-0 right-0 m-sm p-0.5 text-primary-base hover:text-primary-dark focus:bg-warning-base focus:outline-none focus:shadow-outline-focus', buttonClasses] | makeHtmlList\">\r\n <span class=\"sr-only\">Buscar</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"1.375em\" height=\"1.375em\" aria-hidden=\"true\"><path d=\"M23.498 23.487a1.713 1.713 0 000-2.421l-4.572-4.575a.43.43 0 01-.062-.539 10.283 10.283 0 10-2.911 2.911.43.43 0 01.539.055l4.574 4.574a1.712 1.712 0 002.433-.005zM3.451 10.289a6.85 6.85 0 116.85 6.85 6.85 6.85 0 01-6.85-6.85z\" fill=\"currentColor\"/></svg>\r\n </button>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\r\n [id]=\"getErrorId()\"\r\n [text]=\"errorMessageData.text\"\r\n [html]=\"errorMessageData.html\"\r\n [classes]=\"errorMessageData.classes\"\r\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\r\n [role]=\"errorMessageData.role\"\r\n [ariaLabel]=\"errorMessageData.ariaLabel\"\r\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessageData.ariaHidden\"\r\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\r\n [ariaControls]=\"errorMessageData.ariaControls\"\r\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\r\n [ariaLive]=\"errorMessageData.ariaLive\"\r\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\r\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\r\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n</div>\r\n<!-- /searchbar -->\r\n",
3623
+ providers: [
3624
+ {
3625
+ provide: forms.NG_VALUE_ACCESSOR,
3626
+ useExisting: i0.forwardRef(function () { return SearchBarComponent; }),
3627
+ multi: true
3628
+ }
3629
+ ]
3630
+ },] }
3631
+ ];
3632
+ SearchBarComponent.propDecorators = {
3633
+ button: [{ type: i0.ContentChildren, args: [ButtonComponent,] }],
3634
+ describedBy: [{ type: i0.Input }],
3635
+ classes: [{ type: i0.Input }],
3636
+ buttonClasses: [{ type: i0.Input }],
3637
+ placeholder: [{ type: i0.Input }],
3638
+ clickEvent: [{ type: i0.Output }]
3639
+ };
3640
+
3641
+ var TreeSubComponent = /** @class */ (function (_super) {
3642
+ __extends(TreeSubComponent, _super);
3643
+ function TreeSubComponent() {
3644
+ return _super !== null && _super.apply(this, arguments) || this;
3645
+ }
3646
+ return TreeSubComponent;
3647
+ }(ContentBaseComponent));
3648
+ TreeSubComponent.decorators = [
3649
+ { type: i0.Component, args: [{
3650
+ selector: 'desy-tree-sub',
3651
+ template: "<ng-template #contentTemplate>\r\n <ul [class]=\"['c-tree__itemgroup', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : 'group'\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-content></ng-content>\r\n </ul>\r\n</ng-template>\r\n"
3652
+ },] }
3653
+ ];
3654
+ TreeSubComponent.propDecorators = {
3655
+ classes: [{ type: i0.Input }]
3656
+ };
3657
+
3658
+ var ITreeItem = /** @class */ (function () {
3659
+ function ITreeItem() {
3660
+ }
3661
+ return ITreeItem;
3662
+ }());
3663
+
3664
+ var SearchUtils = /** @class */ (function () {
3665
+ function SearchUtils() {
3666
+ }
3667
+ /**
3668
+ * Comprueba si una cadena de texto (target) contiene cualquier palabra de otro texto (text)
3669
+ * @param target - Texto en el que buscar
3670
+ * @param text - Texto a buscar
3671
+ * @param fullWord - Indica si las palabras del texto a buscar deben aparecer enteras
3672
+ */
3673
+ SearchUtils.containsAnyWordFrom = function (target, text, fullWord) {
3674
+ var _this = this;
3675
+ var words = [];
3676
+ var includes = false;
3677
+ var simplifiedTarget = this.getSimplifiedString(target);
3678
+ if (text && text.split(' ').length > 1) {
3679
+ words = text.split(' ');
3680
+ }
3681
+ words.push(text);
3682
+ words.forEach(function (word) {
3683
+ if (simplifiedTarget && word) {
3684
+ if ((fullWord && simplifiedTarget === _this.getSimplifiedString(word))
3685
+ || (!fullWord && simplifiedTarget.includes(_this.getSimplifiedString(word)))) {
3686
+ includes = true;
3687
+ }
3688
+ }
3689
+ });
3690
+ return includes;
3691
+ };
3692
+ /**
3693
+ * Convierte a mayúsculas, elimina espacios y reemplaza/elimina caracteres especiales para realizar comparaciones más tolerantes
3694
+ * @param str - cadena de entrada
3695
+ */
3696
+ SearchUtils.getSimplifiedString = function (str) {
3697
+ var res = str;
3698
+ if (str) {
3699
+ res = str.toLocaleUpperCase().trim();
3700
+ res = res.replace('Á', 'A');
3701
+ res = res.replace('É', 'E');
3702
+ res = res.replace('Í', 'I');
3703
+ res = res.replace('Ó', 'O');
3704
+ res = res.replace('Ú', 'U');
3705
+ res = res.replace('À', 'A');
3706
+ res = res.replace('È', 'E');
3707
+ res = res.replace('Ì', 'I');
3708
+ res = res.replace('Ò', 'O');
3709
+ res = res.replace('Ù', 'U');
3710
+ res = res.replace('Ä', 'A');
3711
+ res = res.replace('Ë', 'E');
3712
+ res = res.replace('Ï', 'I');
3713
+ res = res.replace('Ö', 'O');
3714
+ res = res.replace('Ü', 'U');
3715
+ res = res.replace(',', '');
3716
+ res = res.replace('.', '');
3717
+ res = res.replace('\'', '');
3718
+ res = res.replace('"', '');
3719
+ }
3720
+ return res;
3721
+ };
3722
+ return SearchUtils;
3723
+ }());
3724
+
3725
+ var TreeCheckboxComponent = /** @class */ (function (_super) {
3726
+ __extends(TreeCheckboxComponent, _super);
3727
+ function TreeCheckboxComponent(changeDetector) {
3728
+ var _this = _super.call(this) || this;
3729
+ _this.changeDetector = changeDetector;
3730
+ _this.checkedChange = new i0.EventEmitter();
3731
+ _this.indeterminateCheckedChange = new i0.EventEmitter();
3732
+ _this.hasError = false;
3733
+ _this._hasInit = false;
3734
+ return _this;
3735
+ }
3736
+ TreeCheckboxComponent.prototype.ngOnInit = function () {
3737
+ this._hasInit = true;
3738
+ this.onDescribedByChange();
3739
+ };
3740
+ TreeCheckboxComponent.prototype.detectChanges = function () {
3741
+ this.changeDetector.detectChanges();
3742
+ };
3743
+ TreeCheckboxComponent.prototype.hasChanged = function () {
3744
+ if (this._hasInit) {
3745
+ var input = this.inputElement.nativeElement;
3746
+ // Se establece el cambio a visualizar en el input
3747
+ if (this.isIndeterminate) {
3748
+ if (input.readOnly) {
3749
+ input.checked = false;
3750
+ input.readOnly = false;
3751
+ }
3752
+ else if (!input.checked) {
3753
+ input.readOnly = true;
3754
+ input.indeterminate = true;
3755
+ }
3756
+ }
3757
+ this.setIndeterminateChecked(input.indeterminate);
3758
+ this.checkedChange.emit(input.checked);
3759
+ }
3760
+ };
3761
+ TreeCheckboxComponent.prototype.onIdChange = function () {
3762
+ this.overrideLabelParams();
3763
+ this.overrideHintParams();
3764
+ };
3765
+ TreeCheckboxComponent.prototype.setIndeterminateStatus = function () {
3766
+ var _a;
3767
+ var input = (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
3768
+ if (input) {
3769
+ if (this.indeterminateChecked) {
3770
+ input.readOnly = true;
3771
+ input.indeterminate = true;
3772
+ }
3773
+ else if (input.readOnly) {
3774
+ input.readOnly = false;
3775
+ input.indeterminate = false;
3776
+ }
3777
+ }
3778
+ };
3779
+ TreeCheckboxComponent.prototype.setIndeterminateChecked = function (indeterminateChecked) {
3780
+ this.indeterminateChecked = indeterminateChecked;
3781
+ this._lastIndeterminate = indeterminateChecked;
3782
+ this.indeterminateCheckedChange.emit(indeterminateChecked);
3783
+ this.changeDetector.detectChanges(); // Avisa al elemento input para que actualice su estado
3784
+ };
3785
+ TreeCheckboxComponent.prototype.focus = function () {
3786
+ this.inputElement.nativeElement.focus();
3787
+ };
3788
+ TreeCheckboxComponent.prototype.matchesText = function (value) {
3789
+ var checkboxText = this.contentWrapper.nativeElement.textContent;
3790
+ return SearchUtils.containsAnyWordFrom(checkboxText, value);
3791
+ };
3792
+ TreeCheckboxComponent.prototype.preventDefault = function (event) {
3793
+ event.preventDefault();
3794
+ };
3795
+ TreeCheckboxComponent.prototype.getHintId = function () {
3796
+ return this.hintComponent ? this.hintComponent.id : '';
3797
+ };
3798
+ TreeCheckboxComponent.prototype.overrideLabelParams = function () {
3799
+ if (this.labelComponent) {
3800
+ this.labelComponent.for = this.id + '-input';
3801
+ if (!this.labelComponent.classes) {
3802
+ this.labelComponent.classes = 'block relative -top-xs -left-8 pl-8 py-xs';
3803
+ }
3804
+ this.labelComponent.detectChanges();
3805
+ }
3806
+ };
3807
+ TreeCheckboxComponent.prototype.overrideHintParams = function () {
3808
+ if (this.hintComponent) {
3809
+ if (!this.hintComponent.id) {
3810
+ this.hintComponent.id = this.id + '-item-hint';
3811
+ }
3812
+ this.hintComponent.detectChanges();
3813
+ }
3814
+ this.onDescribedByChange();
3815
+ };
3816
+ TreeCheckboxComponent.prototype.getItemDescribedBy = function () {
3817
+ return (this.describedBy ? this.describedBy : '') + ' ' + this.getHintId();
3818
+ };
3819
+ TreeCheckboxComponent.prototype.onDescribedByChange = function () {
3820
+ if (this.ariaDescribedBy) {
3821
+ this.itemDescribedBy = this.ariaDescribedBy;
3822
+ }
3823
+ else {
3824
+ this.itemDescribedBy = this.getItemDescribedBy();
3825
+ }
3826
+ };
3827
+ return TreeCheckboxComponent;
3828
+ }(AccessibilityComponent));
3829
+ TreeCheckboxComponent.decorators = [
3830
+ { type: i0.Component, args: [{
3831
+ selector: 'desy-tree-checkbox',
3832
+ template: "<div [class]=\"classes\" [ngClass]=\"{'border-t border-b border-neutral-base -mb-px': hasDividers}\">\r\n <div class=\"relative flex items-start py-xs\">\r\n <div class=\"flex items-center mx-sm\">\r\n <input #input class=\"w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base\"\r\n [id]=\"id + '-input'\"\r\n [name]=\"name\"\r\n [type]=\"type === 'checkbox' ? 'checkbox' : 'radio'\"\r\n [value]=\"value\"\r\n [checked]=\"checked\"\r\n (change)=\"hasChanged()\"\r\n [disabled]=\"disabled ? disabled : null\"\r\n [attr.aria-invalid]=\"hasError ? 'true' : null\"\r\n\r\n [attr.role]=\"role ? role : 'group'\"\r\n [attr.aria-describedby]=\"itemDescribedBy\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n\r\n (keydown.home)=\"preventDefault($event)\"\r\n (keydown.end)=\"preventDefault($event)\"\r\n (keydown.arrowup)=\"preventDefault($event)\"\r\n (keydown.arrowdown)=\"preventDefault($event)\"\r\n (keydown.arrowright)=\"preventDefault($event)\"\r\n (keydown.arrowleft)=\"preventDefault($event)\">\r\n </div>\r\n <div #contentWrapper class=\"flex-1 pt-0.5 leading-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n"
3833
+ },] }
3834
+ ];
3835
+ TreeCheckboxComponent.ctorParameters = function () { return [
3836
+ { type: i0.ChangeDetectorRef }
3837
+ ]; };
3838
+ TreeCheckboxComponent.propDecorators = {
3839
+ inputElement: [{ type: i0.ViewChild, args: ['input', { static: true },] }],
3840
+ contentWrapper: [{ type: i0.ViewChild, args: ['contentWrapper', { static: true },] }],
3841
+ id: [{ type: i0.Input }],
3842
+ name: [{ type: i0.Input }],
3843
+ type: [{ type: i0.Input }],
3844
+ classes: [{ type: i0.Input }],
3845
+ value: [{ type: i0.Input }],
3846
+ checked: [{ type: i0.Input }],
3847
+ checkedChange: [{ type: i0.Output }],
3848
+ isIndeterminate: [{ type: i0.Input }],
3849
+ indeterminateChecked: [{ type: i0.Input }],
3850
+ indeterminateCheckedChange: [{ type: i0.Output }],
3851
+ disabled: [{ type: i0.Input }],
3852
+ hasDividers: [{ type: i0.Input }],
3853
+ describedBy: [{ type: i0.Input }],
3854
+ hasError: [{ type: i0.Input }],
3855
+ labelComponent: [{ type: i0.Input }],
3856
+ hintComponent: [{ type: i0.Input }]
3857
+ };
3858
+ __decorate([
3859
+ DesyOnInputChange('onIdChange')
3860
+ ], TreeCheckboxComponent.prototype, "id", void 0);
3861
+ __decorate([
3862
+ DesyOnInputChange('setIndeterminateStatus')
3863
+ ], TreeCheckboxComponent.prototype, "indeterminateChecked", void 0);
3864
+ __decorate([
3865
+ DesyOnInputChange('onDescribedByChange')
3866
+ ], TreeCheckboxComponent.prototype, "describedBy", void 0);
3867
+ __decorate([
3868
+ DesyOnInputChange('overrideLabelParams')
3869
+ ], TreeCheckboxComponent.prototype, "labelComponent", void 0);
3870
+ __decorate([
3871
+ DesyOnInputChange('overrideHintParams')
3872
+ ], TreeCheckboxComponent.prototype, "hintComponent", void 0);
3873
+
3874
+ var TreeItemComponent = /** @class */ (function (_super) {
3875
+ __extends(TreeItemComponent, _super);
3876
+ function TreeItemComponent(changeDetector, element) {
3877
+ var _this = _super.call(this) || this;
3878
+ _this.changeDetector = changeDetector;
3879
+ _this.element = element;
3880
+ _this.checkedChange = new i0.EventEmitter();
3881
+ _this.checkedChangeForTree = new i0.EventEmitter();
3882
+ _this.expandedChange = new i0.EventEmitter();
3883
+ _this.indeterminateCheckedChange = new i0.EventEmitter();
3884
+ /*
3885
+ * Identificador del wrapper del componente. Se utiliza para recorrer el árbol en sentido inverso y que cada item
3886
+ * sepa cuál es su item/árbol padre.
3887
+ * Esto es necesario ya que, a la hora de construir un árbol dinámico con templates,
3888
+ * el decorador @ContentChildren no funciona correctamente y no los detecta.
3889
+ * Dejo el enlace de un problema similar: https://github.com/angular/angular/issues/21751
3890
+ */
3891
+ _this.treeItemKey = TreeItemComponent.generateStaticItemKey();
3892
+ _this.allParentsExpanded = true; // True si el elemento es visible según los elementos expandidos
3893
+ _this.inheritedMatchesSearch = true; // True si el elemento es visible según los criterios de búsqueda
3894
+ // Evento para emitir al componente arbol cuando se pretende abandonar el foco del item
3895
+ _this.quitFocus = new i0.EventEmitter();
3896
+ _this.isFocus = false;
3897
+ _this.isHover = false;
3898
+ return _this;
3899
+ }
3900
+ TreeItemComponent.prototype.ngOnChanges = function (changes) {
3901
+ var _this = this;
3902
+ if (this.sub && this.sub.itemList) {
3903
+ this.sub.itemList.forEach(function (item) { return item.refreshAllParentsExpandedRecursive(_this.allParentsExpanded && _this.expanded); });
3904
+ }
3905
+ for (var propName in changes) {
3906
+ if (changes.hasOwnProperty(propName)) {
3907
+ switch (propName) {
3908
+ case 'checked': {
3909
+ // Reasignamos el valor de checked cuando detectamos el cambio en la entrada
3910
+ setTimeout(function () {
3911
+ _this.setChecked(_this.checked, false, false);
3912
+ if (_this.inheritedExpandedFirstLevel && _this.checked && !_this.expanded) {
3913
+ _this.expandSub(true);
3914
+ }
3915
+ });
3916
+ break;
3917
+ }
3918
+ }
3919
+ }
3920
+ }
3921
+ };
3922
+ /*
3923
+ * Métodos expuestos que permiten configurar al ítem de forma externa
3924
+ */
3925
+ TreeItemComponent.prototype.focus = function () {
3926
+ var _a;
3927
+ (_a = this.checkbox) === null || _a === void 0 ? void 0 : _a.focus();
3928
+ this.handleItemFocus(true);
3929
+ };
3930
+ TreeItemComponent.prototype.setCheckedAutomaticallyDependingOnChildren = function () {
3931
+ if (this.sub) {
3932
+ this.sub.itemList.forEach(function (item) { return item.setCheckedAutomaticallyDependingOnChildren(); });
3933
+ if (this.areAllChildrenChecked()) {
3934
+ if (this.indeterminateChecked) {
3935
+ this.setIndeterminateChecked(false);
3936
+ }
3937
+ if (!this.checked) {
3938
+ this.setChecked(true, true);
3939
+ }
3940
+ }
3941
+ else if (this.hasChildrenCheckedOrIndeterminate()) {
3942
+ if (!this.indeterminateChecked) {
3943
+ this.setIndeterminateChecked(true);
3944
+ }
3945
+ if (this.checked) {
3946
+ this.setChecked(false, true);
3947
+ }
3948
+ }
3949
+ else {
3950
+ if (this.indeterminateChecked) {
3951
+ this.setIndeterminateChecked(false);
3952
+ }
3953
+ if (this.checked) {
3954
+ this.setChecked(false, true);
3955
+ }
3956
+ }
3957
+ }
3958
+ };
3959
+ TreeItemComponent.prototype.refreshAllParentsExpandedRecursive = function (value) {
3960
+ var _this = this;
3961
+ this.allParentsExpanded = value;
3962
+ if (this.sub) {
3963
+ this.sub.itemList.forEach(function (item) { return item.refreshAllParentsExpandedRecursive(value && _this.expanded); });
3964
+ }
3965
+ };
3966
+ TreeItemComponent.prototype.detectChanges = function () {
3967
+ this.changeDetector.detectChanges();
3968
+ };
3969
+ TreeItemComponent.prototype.expandSub = function (value) {
3970
+ var _this = this;
3971
+ this.expanded = value;
3972
+ if (this.sub) {
3973
+ this.sub.itemList.forEach(function (item) { return item.refreshAllParentsExpandedRecursive(_this.allParentsExpanded && value); });
3974
+ }
3975
+ this.expandedChange.emit(value);
3976
+ };
3977
+ /*
3978
+ * Gestion de eventos
3979
+ */
3980
+ TreeItemComponent.prototype.handleCheckboxChange = function (checked) {
3981
+ this.setChecked(checked, false);
3982
+ if (this.inheritedExpandedFirstLevel && checked && !this.expanded) {
3983
+ this.expandSub(true);
3984
+ }
3985
+ };
3986
+ TreeItemComponent.prototype.handleIndeterminateCheckedChange = function (indeterminate) {
3987
+ this.indeterminateCheckedChange.emit(indeterminate);
3988
+ };
3989
+ TreeItemComponent.prototype.handleItemFocus = function (value, condition) {
3990
+ if (condition === void 0) { condition = true; }
3991
+ if (condition) {
3992
+ this.isFocus = value;
3993
+ }
3994
+ };
3995
+ TreeItemComponent.prototype.handleItemHover = function (value, condition) {
3996
+ if (condition === void 0) { condition = true; }
3997
+ if (condition) {
3998
+ this.isHover = value;
3999
+ }
4000
+ };
4001
+ TreeItemComponent.prototype.handleArrowUp = function (event, condition) {
4002
+ if (condition === void 0) { condition = true; }
4003
+ if (condition) {
4004
+ event.preventDefault();
4005
+ this.quitFocus.emit({
4006
+ nextElement: 'previous',
4007
+ currentItem: this
4008
+ });
4009
+ }
4010
+ };
4011
+ TreeItemComponent.prototype.handleHome = function (event, condition) {
4012
+ if (condition === void 0) { condition = true; }
4013
+ if (condition) {
4014
+ event.preventDefault();
4015
+ this.quitFocus.emit({
4016
+ nextElement: 'first',
4017
+ currentItem: this
4018
+ });
4019
+ }
4020
+ };
4021
+ TreeItemComponent.prototype.handleEnd = function (event, condition) {
4022
+ if (condition === void 0) { condition = true; }
4023
+ if (condition) {
4024
+ event.preventDefault();
4025
+ this.quitFocus.emit({
4026
+ nextElement: 'last',
4027
+ currentItem: this
4028
+ });
4029
+ }
4030
+ };
4031
+ TreeItemComponent.prototype.handleArrowDown = function (event, condition) {
4032
+ if (condition === void 0) { condition = true; }
4033
+ if (condition) {
4034
+ event.preventDefault();
4035
+ this.quitFocus.emit({
4036
+ nextElement: 'next',
4037
+ currentItem: this
4038
+ });
4039
+ }
4040
+ };
4041
+ TreeItemComponent.prototype.handleArrowRight = function (event, condition) {
4042
+ if (condition === void 0) { condition = true; }
4043
+ var _a;
4044
+ if (condition && this.sub && ((_a = this.sub.itemList) === null || _a === void 0 ? void 0 : _a.length) > 0) {
4045
+ event.preventDefault();
4046
+ if (this.expanded) {
4047
+ this.quitFocus.emit({
4048
+ nextElement: 'firstChild',
4049
+ currentItem: this
4050
+ });
4051
+ }
4052
+ else {
4053
+ this.expandSub(true);
4054
+ }
4055
+ }
4056
+ };
4057
+ TreeItemComponent.prototype.handleArrowLeft = function (event, condition) {
4058
+ if (condition === void 0) { condition = true; }
4059
+ if (condition) {
4060
+ event.preventDefault();
4061
+ if (this.expanded) {
4062
+ this.expandSub(false);
4063
+ }
4064
+ else if (this.subLevel > 0) {
4065
+ this.quitFocus.emit({
4066
+ nextElement: 'parent',
4067
+ currentItem: this
4068
+ });
4069
+ }
4070
+ }
4071
+ };
4072
+ /*
4073
+ * Setters and getters
4074
+ */
4075
+ TreeItemComponent.prototype.setChecked = function (checked, ignoreInTree, emitEvent) {
4076
+ if (emitEvent === void 0) { emitEvent = true; }
4077
+ if (!this.disabled) {
4078
+ this.checked = checked;
4079
+ }
4080
+ if (!this.inheritedDecoupleChildFromParent && this.sub && this.sub.itemList && !this.indeterminateChecked) {
4081
+ this.sub.itemList.forEach(function (item) {
4082
+ item.setIndeterminateChecked(false);
4083
+ item.setChecked(checked, true);
4084
+ });
4085
+ }
4086
+ if (emitEvent) {
4087
+ this.checkedChange.emit(checked);
4088
+ }
4089
+ if (!ignoreInTree) {
4090
+ this.checkedChangeForTree.emit(checked);
4091
+ }
4092
+ };
4093
+ TreeItemComponent.prototype.setIndeterminateChecked = function (indeterminate) {
4094
+ if (!this.disabled) {
4095
+ this.indeterminateChecked = indeterminate;
4096
+ this.indeterminateCheckedChange.emit(indeterminate);
4097
+ }
4098
+ };
4099
+ TreeItemComponent.prototype.setSubLevel = function (subLevel) {
4100
+ this.subLevel = subLevel;
4101
+ if (this.sub && this.sub.itemList) {
4102
+ this.sub.itemList.forEach(function (item) { return item.setSubLevel(subLevel + 1); });
4103
+ }
4104
+ };
4105
+ TreeItemComponent.prototype.setOrderRecursively = function (order) {
4106
+ this.orderInTree = order;
4107
+ var newOrder = order + 1;
4108
+ if (this.sub && this.sub.itemList) {
4109
+ this.sub.itemList.forEach(function (item) {
4110
+ newOrder = item.setOrderRecursively(newOrder);
4111
+ });
4112
+ }
4113
+ return newOrder;
4114
+ };
4115
+ TreeItemComponent.prototype.setDefaultId = function (defaultId) {
4116
+ this.defaultId = defaultId;
4117
+ this.setDefaultIdRecursive();
4118
+ };
4119
+ TreeItemComponent.prototype.setDefaultIdRecursive = function () {
4120
+ var _this = this;
4121
+ if (this.sub && this.sub.itemList) {
4122
+ this.sub.itemList.forEach(function (item, index) {
4123
+ item.setDefaultId("sub-" + _this.getId() + "-" + index);
4124
+ });
4125
+ }
4126
+ };
4127
+ TreeItemComponent.prototype.getId = function () {
4128
+ return this.id ? this.id : this.defaultId;
4129
+ };
4130
+ TreeItemComponent.prototype.isHidden = function () {
4131
+ return !this.inheritedMatchesSearch && (!this.sub || this.areAllChildrenHidden());
4132
+ };
4133
+ TreeItemComponent.prototype.areAllChildrenHidden = function () {
4134
+ var children = this.sub.itemList;
4135
+ return children.findIndex(function (child) { return !child.isHidden(); }) < 0;
4136
+ };
4137
+ TreeItemComponent.prototype.areAllChildrenChecked = function () {
4138
+ var children = this.sub.itemList;
4139
+ return children.findIndex(function (child) { return !child.checked; }) < 0;
4140
+ };
4141
+ TreeItemComponent.prototype.hasChildrenCheckedOrIndeterminate = function () {
4142
+ var children = this.sub.itemList;
4143
+ return children.findIndex(function (child) { return child.checked || child.indeterminateChecked; }) >= 0;
4144
+ };
4145
+ TreeItemComponent.prototype.matchesText = function (value) {
4146
+ var _a;
4147
+ var matches;
4148
+ if (this.allParentsExpanded && !this.isHidden()) {
4149
+ matches = (_a = this.checkbox) === null || _a === void 0 ? void 0 : _a.matchesText(value);
4150
+ }
4151
+ else {
4152
+ var itemText = this.hiddenWrapper.nativeElement.textContent;
4153
+ matches = SearchUtils.containsAnyWordFrom(itemText, value);
4154
+ }
4155
+ return matches;
4156
+ };
4157
+ TreeItemComponent.prototype.getKey = function () {
4158
+ return this.treeItemKey;
4159
+ };
4160
+ TreeItemComponent.prototype.getParentKey = function () {
4161
+ var parentKey;
4162
+ var parentElement = this.element.nativeElement.parentElement;
4163
+ while (parentElement && parentElement.tagName !== 'BODY' && parentElement.tagName !== 'DESY-TREE-ITEM' && parentElement.tagName !== 'DESY-TREE') {
4164
+ parentElement = parentElement.parentElement;
4165
+ }
4166
+ if (parentElement.tagName === 'BODY') {
4167
+ throw new Error('Parent for tree-item not found');
4168
+ }
4169
+ if (parentElement.tagName === 'DESY-TREE') {
4170
+ parentKey = 'root';
4171
+ }
4172
+ if (parentElement.tagName === 'DESY-TREE-ITEM') {
4173
+ parentKey = parentElement.getAttribute('desy-tree-item-key');
4174
+ }
4175
+ return parentKey;
4176
+ };
4177
+ /*
4178
+ * Métodos privados
4179
+ */
4180
+ /**
4181
+ * Genera una clave única para el componente
4182
+ * @private
4183
+ */
4184
+ TreeItemComponent.generateStaticItemKey = function () {
4185
+ var key = 'tree-item-key-' + TreeItemComponent._treeItemKeySuffix;
4186
+ TreeItemComponent._treeItemKeySuffix++;
4187
+ return key;
4188
+ };
4189
+ return TreeItemComponent;
4190
+ }(AccessibilityComponent));
4191
+ TreeItemComponent._treeItemKeySuffix = 0; // Sufijo estático para generar siempre claves distintas
4192
+ TreeItemComponent.decorators = [
4193
+ { type: i0.Component, args: [{
4194
+ selector: 'desy-tree-item',
4195
+ template: "<li *ngIf=\"allParentsExpanded && !isHidden(); else hidden\"\r\n [id]=\"id\"\r\n [class]=\"'c-tree__item focus:outline-none'\"\r\n [ngClass]=\"{\r\n 'ml-4': subLevel === 0,\r\n 'ml-8': subLevel !== 0,\r\n 'c-tree__item--focus': isFocus && !sub,\r\n 'c-tree__item--hover': isHover && !sub,\r\n 'font-bold': active && subLevel === 0\r\n }\"\r\n (focusin)=\"handleItemFocus(true, !sub)\"\r\n (focusout)=\"handleItemFocus(false, !sub)\"\r\n (mouseover)=\"handleItemHover(true, !sub)\"\r\n (mouseout)=\"handleItemHover(false, !sub)\"\r\n (keydown.home)=\"handleHome($event, !sub)\"\r\n (keydown.end)=\"handleEnd($event, !sub)\"\r\n (keydown.arrowup)=\"handleArrowUp($event, !sub)\"\r\n (keydown.arrowdown)=\"handleArrowDown($event, !sub)\"\r\n (keydown.arrowright)=\"handleArrowRight($event, !sub)\"\r\n (keydown.arrowleft)=\"handleArrowLeft($event, !sub)\"\r\n role=\"treeitem\"\r\n [attr.aria-expanded]=\"sub ? (expanded ? 'true' : 'false') : null\"\r\n [attr.aria-current]=\"active && subLevel === 0 ? 'page' : null\"\r\n [attr.disabled]=\"disabled && subLevel === 0 ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"disabled && subLevel === 0 ? 'true' : null\"\r\n [attr.tabIndex]=\"disabled && subLevel === 0 ? '-1' : null\">\r\n <div *ngIf=\"!sub && subLevel !== 0; else childrenTree\"\r\n [id]=\"id\"\r\n [class]=\"['block', classes] | makeHtmlList\"\r\n [ngClass]=\"{'font-bold': active}\"\r\n [attr.title]=\"title ? title : null\"\r\n [attr.disabled]=\"disabled ? 'disabled' : null\"\r\n\r\n [attr.role]=\"role ? role : 'tree'\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : (disabled ? 'true' : null)\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : (active ? 'page' : null)\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : (disabled ? '-1' : null)\">\r\n <div class=\"font-bold\" *ngIf=\"active; else checkbox\">\r\n <ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\r\n </div>\r\n </div>\r\n</li>\r\n\r\n<ng-template #childrenTree>\r\n <div *ngIf=\"sub; else checkbox\" class=\"w-full h-full\"\r\n [ngClass]=\"{'c-tree__item--focus': isFocus && sub, 'c-tree__item--hover': isHover && sub}\"\r\n (focusin)=\"handleItemFocus(true)\"\r\n (focusout)=\"handleItemFocus(false)\"\r\n (mouseover)=\"handleItemHover(true)\"\r\n (mouseout)=\"handleItemHover(false)\"\r\n (keydown.home)=\"handleHome($event)\"\r\n (keydown.end)=\"handleEnd($event)\"\r\n (keydown.arrowup)=\"handleArrowUp($event)\"\r\n (keydown.arrowdown)=\"handleArrowDown($event)\"\r\n (keydown.arrowright)=\"handleArrowRight($event)\"\r\n (keydown.arrowLeft)=\"handleArrowLeft($event)\">\r\n <div [class]=\"['w-full flex items-center relative focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black text-left', classes] | makeHtmlList\"\r\n\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <span class=\"absolute top-3 -left-4 flex items-center w-4 h-2.5 text-primary-base font-bold\">\r\n <svg (click)=\"expandSub(false)\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\" width=\"10\" height=\"10\" aria-hidden=\"true\" class=\"c-tree__minus\"><path fill=\"currentColor\" d=\"M9.286 5.714H.714a.714.714 0 010-1.428h8.572a.714.714 0 010 1.428z\"/></svg>\r\n <svg (click)=\"expandSub(true)\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\" width=\"10\" height=\"10\" aria-hidden=\"true\" class=\"c-tree__plus\"><path fill=\"currentColor\" d=\"M9.286 4.286H5.893a.179.179 0 01-.179-.179V.714a.714.714 0 00-1.428 0v3.393a.179.179 0 01-.179.179H.714a.714.714 0 000 1.428h3.393a.179.179 0 01.179.179v3.393a.714.714 0 001.428 0V5.893a.179.179 0 01.179-.179h3.393a.714.714 0 000-1.428z\"/></svg>\r\n </span>\r\n <ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <ng-container *desyCustomInnerContent=\"{ component: sub }\"></ng-container>\r\n</ng-template>\r\n\r\n<!-- Se incorpora el contenido m\u00EDnimo para funcionar con el objetivo de mejorar el rendimiento -->\r\n<ng-template #hidden>\r\n <li class=\"hidden\">\r\n <div #hiddenWrapper>\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n <ng-container *desyCustomInnerContent=\"{ component: sub }\"></ng-container>\r\n </li>\r\n</ng-template>\r\n\r\n<ng-template #checkbox>\r\n <desy-tree-checkbox [name]=\"name ? name : parentName\"\r\n [id]=\"getId()\"\r\n [value]=\"value\"\r\n [classes]=\"classes\"\r\n [type]=\"type\"\r\n [(checked)]=\"checked\" (checkedChange)=\"handleCheckboxChange($event)\"\r\n [hasError]=\"inheritedHasError\"\r\n [disabled]=\"disabled\"\r\n [hasDividers]=\"hasDividers\"\r\n [describedBy]=\"[inheritedDescribedBy, hint?.id] | makeHtmlList\"\r\n [isIndeterminate]=\"isIndeterminate\"\r\n [(indeterminateChecked)]=\"indeterminateChecked\"\r\n (indeterminateCheckedChange)=\"handleIndeterminateCheckedChange($event)\"\r\n\r\n [labelComponent]=\"label\"\r\n [hintComponent]=\"hint\"\r\n\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaDescribedBy]=\"ariaDescribedBy\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [ariaModal]=\"ariaModal\"\r\n [tabindex]=\"tabindex\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </desy-tree-checkbox>\r\n</ng-template>\r\n\r\n<ng-template #content>\r\n <ng-content select=\"desy-label\"></ng-content>\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n</ng-template>\r\n",
4196
+ providers: [
4197
+ {
4198
+ provide: ITreeItem,
4199
+ useExisting: i0.forwardRef(function () { return TreeItemComponent; })
4200
+ }
4201
+ ]
4202
+ },] }
4203
+ ];
4204
+ TreeItemComponent.ctorParameters = function () { return [
4205
+ { type: i0.ChangeDetectorRef },
4206
+ { type: i0.ElementRef }
4207
+ ]; };
4208
+ TreeItemComponent.propDecorators = {
4209
+ hiddenWrapper: [{ type: i0.ViewChild, args: ['hiddenWrapper',] }],
4210
+ id: [{ type: i0.Input }],
4211
+ name: [{ type: i0.Input }],
4212
+ value: [{ type: i0.Input }],
4213
+ classes: [{ type: i0.Input }],
4214
+ active: [{ type: i0.Input }],
4215
+ disabled: [{ type: i0.Input }],
4216
+ title: [{ type: i0.Input }],
4217
+ hasDividers: [{ type: i0.Input }],
4218
+ isIndeterminate: [{ type: i0.Input }],
4219
+ checked: [{ type: i0.Input }],
4220
+ checkedChange: [{ type: i0.Output }],
4221
+ expanded: [{ type: i0.Input }],
4222
+ expandedChange: [{ type: i0.Output }],
4223
+ indeterminateChecked: [{ type: i0.Input }],
4224
+ indeterminateCheckedChange: [{ type: i0.Output }],
4225
+ sub: [{ type: i0.ContentChildren, args: [TreeSubComponent,] }],
4226
+ hint: [{ type: i0.ContentChildren, args: [HintComponent,] }],
4227
+ label: [{ type: i0.ContentChildren, args: [LabelComponent,] }],
4228
+ checkbox: [{ type: i0.ViewChild, args: [TreeCheckboxComponent,] }],
4229
+ treeItemKey: [{ type: i0.HostBinding, args: ['attr.desy-tree-item-key',] }]
4230
+ };
4231
+ __decorate([
4232
+ DesyOnInputChange('setDefaultIdRecursive')
4233
+ ], TreeItemComponent.prototype, "id", void 0);
4234
+ __decorate([
4235
+ DesyContentChild({ onSetCallbackName: 'overrideSubValues' })
4236
+ ], TreeItemComponent.prototype, "sub", void 0);
4237
+ __decorate([
4238
+ DesyContentChild()
4239
+ ], TreeItemComponent.prototype, "hint", void 0);
4240
+ __decorate([
4241
+ DesyContentChild()
4242
+ ], TreeItemComponent.prototype, "label", void 0);
4243
+
4244
+ var TreeComponent = /** @class */ (function (_super) {
4245
+ __extends(TreeComponent, _super);
4246
+ function TreeComponent(changeDetector) {
4247
+ var _this = _super.call(this) || this;
4248
+ _this.changeDetector = changeDetector;
4249
+ _this.expandedFirstLevel = true;
4250
+ _this.decoupleChildFromParent = false;
4251
+ _this.disableDefaultSearch = false;
4252
+ _this.searchMatchValuesChange = new i0.EventEmitter();
4253
+ _this.rootItems = [];
4254
+ _this._itemListCheckedSubscriptions = [];
4255
+ _this._itemListQuitFocusSubscriptions = [];
4256
+ _this._alreadyConfiguringItems = false;
4257
+ return _this;
4258
+ }
4259
+ TreeComponent.prototype.ngOnDestroy = function () {
4260
+ var _a, _b;
4261
+ this.clearSubscriptions(this._itemListCheckedSubscriptions);
4262
+ this.clearSubscriptions(this._itemListQuitFocusSubscriptions);
4263
+ (_a = this._itemListSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
4264
+ (_b = this._allItemListSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
4265
+ };
4266
+ TreeComponent.prototype.ngOnChanges = function (changes) {
4267
+ this.configureAllItems();
4268
+ };
4269
+ /*
4270
+ * Eventos
4271
+ */
4272
+ /**
4273
+ * Actualiza el valor del componente al checkquearse un ítem
4274
+ * @param originItem ítem modificado
4275
+ */
4276
+ TreeComponent.prototype.updateValueFromItems = function (originItem) {
4277
+ var _this = this;
4278
+ // Si es radio, se desactivan el resto de items cuando se activa otro item
4279
+ if (this.type !== 'checkbox') {
4280
+ var items = this.getAllItemsInOrder();
4281
+ items.forEach(function (item) {
4282
+ if (item !== originItem && item.checked) {
4283
+ item.setChecked(false, true);
4284
+ }
4285
+ });
4286
+ }
4287
+ else if (!this.decoupleChildFromParent) {
4288
+ this.rootItems.forEach(function (item) { return item.setCheckedAutomaticallyDependingOnChildren(); });
4289
+ }
4290
+ // Si es checkbox se modifica el valor y se emite
4291
+ if (this.type === 'checkbox') {
4292
+ this.value = [];
4293
+ var items = this.getAllItemsInOrder();
4294
+ items.forEach(function (item) {
4295
+ if (item.checked) {
4296
+ _this.value.push(item.value);
4297
+ }
4298
+ });
4299
+ this.onChange(this.value);
4300
+ }
4301
+ };
4302
+ /**
4303
+ * Gestiona cuando el foco abandona un ítem desde un evento de teclado controlado
4304
+ * @param options
4305
+ */
4306
+ TreeComponent.prototype.handleItemQuitFocus = function (options) {
4307
+ if (options && options.nextElement) {
4308
+ var items = this.getAllItemsInOrder();
4309
+ var focusableItems = items.filter(function (item) { return !item.isHidden() && !item.disabled && item.allParentsExpanded; });
4310
+ switch (options.nextElement) {
4311
+ case "first":
4312
+ focusableItems[0].focus();
4313
+ break;
4314
+ case "last":
4315
+ focusableItems[focusableItems.length - 1].focus();
4316
+ break;
4317
+ case "parent":
4318
+ var currentSubLevel_1 = options.currentItem.subLevel;
4319
+ if (currentSubLevel_1 > 0) {
4320
+ var currentItemIndex = focusableItems.findIndex(function (item) { return item === options.currentItem; });
4321
+ var parent = focusableItems.slice(0, currentItemIndex).reverse().find(function (item) { return item.subLevel < currentSubLevel_1; });
4322
+ if (parent) {
4323
+ parent.focus();
4324
+ }
4325
+ }
4326
+ break;
4327
+ case "firstChild":
4328
+ case "next":
4329
+ if (options.currentItem) {
4330
+ var currentItemIndex = focusableItems.findIndex(function (item) { return item === options.currentItem; });
4331
+ if (currentItemIndex < focusableItems.length - 1) {
4332
+ focusableItems[currentItemIndex + 1].focus();
4333
+ }
4334
+ }
4335
+ break;
4336
+ case "previous":
4337
+ if (options.currentItem) {
4338
+ var currentItemIndex = focusableItems.findIndex(function (item) { return item === options.currentItem; });
4339
+ if (currentItemIndex > 0) {
4340
+ focusableItems[currentItemIndex - 1].focus();
4341
+ }
4342
+ }
4343
+ break;
4344
+ }
4345
+ }
4346
+ };
4347
+ /**
4348
+ * Realiza la búsqueda interna de los items en el componente
4349
+ * @param value texto de búsqueda
4350
+ */
4351
+ TreeComponent.prototype.onSearch = function (value) {
4352
+ if (!this.disableDefaultSearch) {
4353
+ if (value && value.length > 0) {
4354
+ this.searchMatchValues = this.allItems.filter(function (item) { return item.matchesText(value); }).map(function (item) { return item.value; });
4355
+ }
4356
+ else {
4357
+ this.searchMatchValues = null;
4358
+ }
4359
+ this.searchMatchValuesChange.emit(this.searchMatchValues);
4360
+ }
4361
+ };
4362
+ /*
4363
+ * Eventos al cambiar propiedades
4364
+ */
4365
+ /**
4366
+ * Configura los items del árbol
4367
+ */
4368
+ TreeComponent.prototype.configureAllItems = function () {
4369
+ var _this = this;
4370
+ if (!this._alreadyConfiguringItems) {
4371
+ this._alreadyConfiguringItems = true;
4372
+ // Lo realizamos desde un setTimeout para que todos los inputs, values y demás vivan en paz y armonía
4373
+ setTimeout(function () {
4374
+ var _a;
4375
+ if (((_a = _this.allItems) === null || _a === void 0 ? void 0 : _a.length) > 0) {
4376
+ _this.clearSubscriptions(_this._itemListCheckedSubscriptions);
4377
+ _this.clearSubscriptions(_this._itemListQuitFocusSubscriptions);
4378
+ _this.allItems.forEach(function (item) {
4379
+ item.parentName = _this.name;
4380
+ item.type = _this.type;
4381
+ item.inheritedDescribedBy = _this.getDescribedByForItems();
4382
+ item.inheritedExpandedFirstLevel = _this.expandedFirstLevel;
4383
+ item.inheritedDecoupleChildFromParent = _this.decoupleChildFromParent;
4384
+ if (_this.value && _this.value.length > 0) {
4385
+ item.setChecked(!!_this.value.find(function (v) { return v === item.value; }), true);
4386
+ }
4387
+ item.detectChanges();
4388
+ var checkedSubscription = item.checkedChangeForTree.subscribe(function () { return _this.updateValueFromItems(item); });
4389
+ _this._itemListCheckedSubscriptions.push(checkedSubscription);
4390
+ var quitFocusSubscription = item.quitFocus.subscribe(function (options) { return _this.handleItemQuitFocus(options); });
4391
+ _this._itemListQuitFocusSubscriptions.push(quitFocusSubscription);
4392
+ });
4393
+ _this.setErrorInItems(_this.hasErrorMessageComponent());
4394
+ _this.buildTree();
4395
+ if (!_this.value) {
4396
+ _this.updateValueFromItems();
4397
+ }
4398
+ }
4399
+ if (_this.allItems && !_this._allItemListSubscription) {
4400
+ _this._allItemListSubscription = _this.allItems.changes.subscribe(function () { return _this.configureAllItems(); });
4401
+ }
4402
+ _this.changeDetector.detectChanges();
4403
+ _this._alreadyConfiguringItems = false;
4404
+ });
4405
+ }
4406
+ };
4407
+ /**
4408
+ * Modifica los items visibles según el filtro de búsqueda
4409
+ */
4410
+ TreeComponent.prototype.onSearchMatchValuesChange = function () {
4411
+ var _this = this;
4412
+ if (this.allItems) {
4413
+ this.allItems.forEach(function (item) {
4414
+ item.inheritedMatchesSearch = true;
4415
+ });
4416
+ if (this.searchMatchValues !== null && this.searchMatchValues !== undefined) {
4417
+ this.allItems.forEach(function (item) {
4418
+ if (_this.searchMatchValues.findIndex(function (value) { return item.value === value; }) < 0) {
4419
+ item.inheritedMatchesSearch = false;
4420
+ }
4421
+ });
4422
+ }
4423
+ }
4424
+ };
4425
+ /*
4426
+ * Getters and setters
4427
+ */
4428
+ TreeComponent.prototype.getIdPrefix = function () {
4429
+ return this.idPrefix ? this.idPrefix : this.name;
4430
+ };
4431
+ TreeComponent.prototype.getDescribedBy = function () {
4432
+ var describedBy = '';
4433
+ if (this.describedBy) {
4434
+ describedBy = this.describedBy;
4435
+ }
4436
+ if (this.hasHintComponent() && this.hintComponent.id) {
4437
+ describedBy = describedBy + ' ' + this.hintComponent.id;
4438
+ }
4439
+ if (this.hasErrorMessageComponent() && this.errorMessageComponent.id) {
4440
+ describedBy = describedBy + ' ' + this.errorMessageComponent.id;
4441
+ }
4442
+ return describedBy;
4443
+ };
4444
+ /**
4445
+ * Devuelve el valor de describedBy que se transmitirá a los items
4446
+ */
4447
+ TreeComponent.prototype.getDescribedByForItems = function () {
4448
+ var describedBy;
4449
+ if (this.hasFieldsetComponent()) {
4450
+ describedBy = this.fieldsetComponent.describedBy;
4451
+ }
4452
+ else {
4453
+ describedBy = this.getDescribedBy();
4454
+ }
4455
+ return describedBy;
4456
+ };
4457
+ TreeComponent.prototype.hasFieldsetComponent = function () {
4458
+ return !!this.fieldsetComponent;
4459
+ };
4460
+ /**
4461
+ * Overrides super.getHintId();
4462
+ */
4463
+ TreeComponent.prototype.getHintId = function () {
4464
+ var _a;
4465
+ return this.idPrefix ? this.idPrefix + '-hint' : (_a = this.hintComponent) === null || _a === void 0 ? void 0 : _a.id;
4466
+ };
4467
+ /**
4468
+ * Overrides super.getHintId();
4469
+ */
4470
+ TreeComponent.prototype.getErrorId = function () {
4471
+ var _a;
4472
+ return this.idPrefix ? this.idPrefix + '-error' : (_a = this.errorMessageComponent) === null || _a === void 0 ? void 0 : _a.id;
4473
+ };
4474
+ /*
4475
+ * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage
4476
+ */
4477
+ TreeComponent.prototype.overrideFieldsetParams = function (fieldset) {
4478
+ fieldset.caller = this.innerHtml;
4479
+ fieldset.errorId = this.getErrorId();
4480
+ fieldset.describedBy = this.getDescribedBy();
4481
+ fieldset.detectChanges();
4482
+ };
4483
+ TreeComponent.prototype.overrideSearchBarParams = function (searchbar) {
4484
+ var _this = this;
4485
+ var defaultOnChange = searchbar.onChange;
4486
+ var newOnChange = function (value) {
4487
+ _this.onSearch(value);
4488
+ defaultOnChange(value);
4489
+ };
4490
+ searchbar.registerOnChange(newOnChange);
4491
+ };
4492
+ /**
4493
+ * Se llama desde FormField
4494
+ */
4495
+ TreeComponent.prototype.overrideHintParams = function (hint) {
4496
+ hint.id = this.getHintId();
4497
+ hint.detectChanges();
4498
+ };
4499
+ /**
4500
+ * Se llama desde FormField
4501
+ */
4502
+ TreeComponent.prototype.overrideErrorMessageParams = function (errorMessage) {
4503
+ errorMessage.id = this.getErrorId();
4504
+ this.setErrorInItems(this.hasErrorMessageComponent());
4505
+ errorMessage.detectChanges();
4506
+ };
4507
+ /**
4508
+ * Se llama desde FormField
4509
+ */
4510
+ TreeComponent.prototype.onDeleteErrorMessage = function (errorMessage) {
4511
+ this.setErrorInItems(this.hasErrorMessageComponent());
4512
+ };
4513
+ /*
4514
+ * Métodos privados
4515
+ */
4516
+ /**
4517
+ * Configura la estructura del árbol
4518
+ * @private
4519
+ */
4520
+ TreeComponent.prototype.buildTree = function () {
4521
+ var _this = this;
4522
+ // Se crea un mapa para tener accesibles los items por key y se borran los listados existentes
4523
+ var itemMap = {};
4524
+ this.rootItems = [];
4525
+ this.allItems.forEach(function (item) {
4526
+ var key = item.getKey();
4527
+ itemMap[key] = item;
4528
+ if (item.sub) {
4529
+ item.sub.itemList = [];
4530
+ }
4531
+ });
4532
+ // Se añaden los items a los listados correspondientes
4533
+ this.allItems.forEach(function (item) {
4534
+ var parentKey = item.getParentKey();
4535
+ if (parentKey === 'root') {
4536
+ _this.rootItems.push(item);
4537
+ }
4538
+ else if (parentKey) {
4539
+ var sub = itemMap[parentKey].sub;
4540
+ if (sub) {
4541
+ sub.itemList.push(item);
4542
+ }
4543
+ }
4544
+ });
4545
+ // Se configuran los items desde root
4546
+ var order = 0;
4547
+ this.rootItems.forEach(function (item, index) {
4548
+ item.setSubLevel(0);
4549
+ item.setDefaultId(_this.idPrefix + "-" + index);
4550
+ item.refreshAllParentsExpandedRecursive(true);
4551
+ item.setCheckedAutomaticallyDependingOnChildren();
4552
+ order = item.setOrderRecursively(order);
4553
+ });
4554
+ };
4555
+ /**
4556
+ * Si tiene un mensaje de error, se indica a los items
4557
+ * @param hasError
4558
+ * @private
4559
+ */
4560
+ TreeComponent.prototype.setErrorInItems = function (hasError) {
4561
+ var _a;
4562
+ if (((_a = this.allItems) === null || _a === void 0 ? void 0 : _a.length) > 0) {
4563
+ this.allItems.forEach(function (item) {
4564
+ item.inheritedHasError = hasError;
4565
+ item.detectChanges();
4566
+ });
4567
+ }
4568
+ };
4569
+ /**
4570
+ * Limpia un listado de subscripciones
4571
+ * @param subscriptionList
4572
+ * @private
4573
+ */
4574
+ TreeComponent.prototype.clearSubscriptions = function (subscriptionList) {
4575
+ if (subscriptionList.length > 0) {
4576
+ subscriptionList.forEach(function (s) { return s.unsubscribe(); });
4577
+ subscriptionList.splice(0, subscriptionList.length);
4578
+ }
4579
+ };
4580
+ /**
4581
+ * Devuelve los items del árbol ordenados
4582
+ * @private
4583
+ */
4584
+ TreeComponent.prototype.getAllItemsInOrder = function () {
4585
+ var list = [];
4586
+ if (this.allItems) {
4587
+ list = this.allItems.toArray().sort(function (a, b) { return a.orderInTree > b.orderInTree ? 1 : -1; });
4588
+ }
4589
+ return list;
3584
4590
  };
3585
- return SearchBarComponent;
4591
+ return TreeComponent;
3586
4592
  }(FormFieldComponent));
3587
- SearchBarComponent.decorators = [
4593
+ TreeComponent.decorators = [
3588
4594
  { type: i0.Component, args: [{
3589
- selector: 'desy-search-bar',
3590
- template: "<!-- searchbar -->\r\n<div class=\"relative\" [ngClass]=\"{'flex flex-wrap items-end': hasButton()}\">\r\n <ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\r\n <desy-label *ngIf=\"!labelRef && labelData\"\r\n [text]=\"labelData.text\"\r\n [html]=\"labelData.html\"\r\n classes=\"sr-only\"\r\n [isPageHeading]=\"labelData.isPageHeading\"\r\n [for]=\"id\"\r\n [role]=\"labelData.role\"\r\n [ariaLabel]=\"labelData.ariaLabel\"\r\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\r\n [ariaHidden]=\"labelData.ariaHidden\"\r\n [ariaDisabled]=\"labelData.ariaDisabled\"\r\n [ariaControls]=\"labelData.ariaControls\"\r\n [ariaCurrent]=\"labelData.ariaCurrent\"\r\n [ariaLive]=\"labelData.ariaLive\"\r\n [ariaExpanded]=\"labelData.ariaExpanded\"\r\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\r\n [tabindex]=\"labelData.tabindex\"></desy-label>\r\n <desy-label *ngIf=\"!labelRef && !labelData && labelText\" [text]=\"labelText\" classes=\"sr-only\" [for]=\"id\"></desy-label>\r\n <input type=\"search\"\r\n [class]=\"['c-input block mt-sm pr-12 border-black rounded font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base', classes] | makeHtmlList\"\r\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base': hasErrorsMessage(),'w-full': !hasButton()}\"\r\n [value]=\"value\" (input)=\"onInput($event.target.value)\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"id ? id : null\"\r\n [attr.aria-describedby]=\"[describedBy, getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-container *ngIf=\"hasButton(); else defaultButton\">\r\n <ng-content select=\"desy-button\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultButton>\r\n <button type=\"submit\" [attr.disabled]=\"disabled ? 'disabled' : null\" [attr.aria-disabled]=\"disabled ? 'true' : null\"\r\n (click)=\"onClick($event)\"\r\n [class]=\"['absolute top-0 right-0 m-sm p-0.5 text-primary-base hover:text-primary-dark focus:bg-warning-base focus:outline-none focus:shadow-outline-focus', buttonClasses] | makeHtmlList\">\r\n <span class=\"sr-only\">Buscar</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"1.375em\" height=\"1.375em\" aria-hidden=\"true\"><path d=\"M23.498 23.487a1.713 1.713 0 000-2.421l-4.572-4.575a.43.43 0 01-.062-.539 10.283 10.283 0 10-2.911 2.911.43.43 0 01.539.055l4.574 4.574a1.712 1.712 0 002.433-.005zM3.451 10.289a6.85 6.85 0 116.85 6.85 6.85 6.85 0 01-6.85-6.85z\" fill=\"currentColor\"/></svg>\r\n </button>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\r\n [id]=\"getErrorId()\"\r\n [text]=\"errorMessageData.text\"\r\n [html]=\"errorMessageData.html\"\r\n [classes]=\"errorMessageData.classes\"\r\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\r\n [role]=\"errorMessageData.role\"\r\n [ariaLabel]=\"errorMessageData.ariaLabel\"\r\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessageData.ariaHidden\"\r\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\r\n [ariaControls]=\"errorMessageData.ariaControls\"\r\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\r\n [ariaLive]=\"errorMessageData.ariaLive\"\r\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\r\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\r\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n</div>\r\n<!-- /searchbar -->\r\n",
4595
+ selector: 'desy-tree',
4596
+ template: "\r\n<ng-template #innerHtml>\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n <ng-content select=\"desy-search-bar\"></ng-content>\r\n <ul [class]=\"['c-tree', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : 'tree'\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-content></ng-content>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- tree -->\r\n<div [class]=\"['c-form-group', formGroupClasses] | makeHtmlList\"\r\n [ngClass]=\"{'c-form-group--error': (hasErrorsMessage() || formGroupClasses === 'c-form-group--error') }\">\r\n <ng-container *ngIf=\"hasFieldsetComponent(); else innerHtml\">\r\n <ng-content select=\"desy-fieldset\"></ng-content>\r\n </ng-container>\r\n</div>\r\n",
3591
4597
  providers: [
3592
4598
  {
3593
4599
  provide: forms.NG_VALUE_ACCESSOR,
3594
- useExisting: i0.forwardRef(function () { return SearchBarComponent; }),
4600
+ useExisting: i0.forwardRef(function () { return TreeComponent; }),
3595
4601
  multi: true
3596
4602
  }
3597
4603
  ]
3598
4604
  },] }
3599
4605
  ];
3600
- SearchBarComponent.propDecorators = {
3601
- button: [{ type: i0.ContentChildren, args: [ButtonComponent,] }],
3602
- describedBy: [{ type: i0.Input }],
4606
+ TreeComponent.ctorParameters = function () { return [
4607
+ { type: i0.ChangeDetectorRef }
4608
+ ]; };
4609
+ TreeComponent.propDecorators = {
4610
+ idPrefix: [{ type: i0.Input }],
3603
4611
  classes: [{ type: i0.Input }],
3604
- buttonClasses: [{ type: i0.Input }],
3605
- placeholder: [{ type: i0.Input }],
3606
- clickEvent: [{ type: i0.Output }]
3607
- };
4612
+ formGroupClasses: [{ type: i0.Input }],
4613
+ name: [{ type: i0.Input }],
4614
+ type: [{ type: i0.Input }],
4615
+ describedBy: [{ type: i0.Input }],
4616
+ expandedFirstLevel: [{ type: i0.Input }],
4617
+ decoupleChildFromParent: [{ type: i0.Input }],
4618
+ disableDefaultSearch: [{ type: i0.Input }],
4619
+ searchMatchValues: [{ type: i0.Input }],
4620
+ searchMatchValuesChange: [{ type: i0.Output }],
4621
+ allItems: [{ type: i0.ContentChildren, args: [TreeItemComponent, { descendants: true },] }],
4622
+ fieldsetComponent: [{ type: i0.ContentChildren, args: [FieldsetComponent,] }],
4623
+ searchBarComponent: [{ type: i0.ContentChildren, args: [SearchBarComponent,] }],
4624
+ innerHtml: [{ type: i0.ViewChild, args: ['innerHtml', { static: true },] }]
4625
+ };
4626
+ __decorate([
4627
+ DesyOnInputChange('onSearchMatchValuesChange')
4628
+ ], TreeComponent.prototype, "searchMatchValues", void 0);
4629
+ __decorate([
4630
+ DesyOnInputChange('configureAllItems')
4631
+ ], TreeComponent.prototype, "allItems", void 0);
4632
+ __decorate([
4633
+ DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams' })
4634
+ ], TreeComponent.prototype, "fieldsetComponent", void 0);
4635
+ __decorate([
4636
+ DesyContentChild({ onSetCallbackName: 'overrideSearchBarParams' })
4637
+ ], TreeComponent.prototype, "searchBarComponent", void 0);
3608
4638
 
3609
4639
  var ConditionDirective = /** @class */ (function () {
3610
4640
  function ConditionDirective(templateRef) {
@@ -3652,6 +4682,31 @@
3652
4682
  items: [{ type: i0.Input }]
3653
4683
  };
3654
4684
 
4685
+ var TreeItemsGeneratorComponent = /** @class */ (function () {
4686
+ function TreeItemsGeneratorComponent(viewContainerRef) {
4687
+ this.viewContainerRef = viewContainerRef;
4688
+ }
4689
+ TreeItemsGeneratorComponent.prototype.ngOnInit = function () {
4690
+ this.viewContainerRef.createEmbeddedView(this.content);
4691
+ };
4692
+ return TreeItemsGeneratorComponent;
4693
+ }());
4694
+ TreeItemsGeneratorComponent.decorators = [
4695
+ { type: i0.Component, args: [{
4696
+ selector: 'desy-tree-items-generator',
4697
+ template: "<ng-template #content>\r\n <ng-container *ngIf=\"items && itemTemplate\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n",
4698
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
4699
+ },] }
4700
+ ];
4701
+ TreeItemsGeneratorComponent.ctorParameters = function () { return [
4702
+ { type: i0.ViewContainerRef }
4703
+ ]; };
4704
+ TreeItemsGeneratorComponent.propDecorators = {
4705
+ content: [{ type: i0.ViewChild, args: ['content', { static: true },] }],
4706
+ items: [{ type: i0.Input }],
4707
+ itemTemplate: [{ type: i0.Input }]
4708
+ };
4709
+
3655
4710
  var ModalButtonPrimaryComponent = /** @class */ (function (_super) {
3656
4711
  __extends(ModalButtonPrimaryComponent, _super);
3657
4712
  function ModalButtonPrimaryComponent() {
@@ -3790,7 +4845,7 @@
3790
4845
  ModalComponent.decorators = [
3791
4846
  { type: i0.Component, args: [{
3792
4847
  selector: 'desy-modal',
3793
- template: "<div [class]=\"[ 'relative max-w-lg mx-auto p-base lg:p-lg border border-neutral-base rounded bg-white', classes] | makeHtmlList\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.role]=\"role\"\r\n [attr.aria-describedby]=\"ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-hidden]=\"ariaHidden\"\r\n [attr.aria-disabled]=\"ariaDisabled\"\r\n [attr.aria-controls]=\"ariaControls\"\r\n [attr.aria-current]=\"ariaCurrent\"\r\n [attr.aria-live]=\"ariaLive\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-haspopup]=\"ariaHasPopup\"\r\n [attr.tabindex]=\"tabindex\">\r\n <div *ngIf=\"iconComponent || icon\" class=\"flex justify-center p-base\"\r\n (desyContentEmpty)=\"handleIconContentEmpty(true)\"\r\n (desyContentNotEmpty)=\"handleIconContentEmpty(false)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent, html: icon ? icon.html : null }\"></ng-container>\r\n <ng-container *ngIf=\"!hasIconContent\">\r\n <ng-container [ngSwitch]=\"getType()\">\r\n <svg *ngSwitchCase=\"'discard'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-alert-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M4.375 70a65.625 65.625 0 10131.25 0 65.625 65.625 0 10-131.25 0zM23.596 116.404l92.808-92.808\" stroke-width=\"8.749995\"/></g></svg>\r\n <svg *ngSwitchCase=\"'delete'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-alert-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M100.625 122.5h-61.25a8.75 8.75 0 01-8.75-8.75V35h78.75v78.75a8.75 8.75 0 01-8.75 8.75zM56.875 96.25v-35M83.125 96.25v-35M13.125 35h113.75M83.125 17.5h-26.25a8.75 8.75 0 00-8.75 8.75V35h43.75v-8.75a8.75 8.75 0 00-8.75-8.75z\" stroke-width=\"8.749995\"/></g></svg>\r\n <svg *ngSwitchCase=\"'edit'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-primary-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M73.89 82.46l-21.652 3.098 3.091-21.66 55.685-55.685a13.125 13.125 0 0118.562 18.562z\" stroke-width=\"8.749995\"/><path d=\"M111.545 83.125v43.75a8.75 8.75 0 01-8.75 8.75h-87.5a8.75 8.75 0 01-8.75-8.75v-87.5a8.75 8.75 0 018.75-8.75h43.75\" stroke-width=\"8.749995\"/></g></svg>\r\n <svg *ngSwitchCase=\"'changes'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-primary-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M107.112 40.833a48.125 48.125 0 00-85.237 30.608v13.142M35 104.463a48.125 48.125 0 0083.125-33.022v-8.75\" stroke-width=\"8.749995\"/><path d=\"M4.375 67.066l17.5 17.5 17.5-17.5M135.625 80.19l-17.5-17.5-17.5 17.5\" stroke-width=\"8.749995\"/></g></svg>\r\n <svg *ngSwitchCase=\"'publish'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-primary-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M16.094 91.17a9.707 9.707 0 01-5.145-17.938L118.767 5.833a9.7 9.7 0 0114.676 10.034l-21 111.842a9.707 9.707 0 01-17.301 4.031L64.75 91.17z\" stroke-width=\"8.749995\"/><path d=\"M64.75 91.17H50.167v30.163a9.7 9.7 0 0015.166 8.015l18.539-12.635zM64.744 91.17l64.633-85.11\" stroke-width=\"8.749995\"/></g></svg>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\r\n <h1 *ngSwitchCase=\"1\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h1>\r\n <h2 *ngSwitchCase=\"2\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h2>\r\n <h3 *ngSwitchCase=\"3\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h3>\r\n <h4 *ngSwitchCase=\"4\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h4>\r\n <h5 *ngSwitchCase=\"5\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h5>\r\n </ng-container>\r\n\r\n <div *ngIf=\"descriptionIsHtml\" [class]=\"getDescriptionClasses()\"\r\n (desyContentChange)=\"checkDescriptionContent($event)\" [observeProperties]=\"{ attributes: false, childList: true, characterData: true, subtree: true }\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: descriptionComponent,\r\n html: description ? description.html : null,\r\n text: description ? description.text : null\r\n }\"></ng-container>\r\n </div>\r\n <p *ngIf=\"!descriptionIsHtml\" [class]=\"getDescriptionClasses()\"\r\n (desyContentChange)=\"checkDescriptionContent($event)\" [observeProperties]=\"{ attributes: false, childList: true, characterData: true, subtree: true }\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: descriptionComponent,\r\n html: description ? description.html : null,\r\n text: description ? description.text : null\r\n }\"></ng-container>\r\n </p>\r\n\r\n <div *ngIf=\"contentComponent || caller\" class=\"p-base\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, template: caller }\"></ng-container>\r\n </div>\r\n\r\n <div class=\"flex flex-wrap gap-sm w-full\" [ngClass]=\"(itemsPrimary || (primaryButtonComponents && primaryButtonComponents.length > 0)) && (itemsSecondary || (secondaryButtonComponents && secondaryButtonComponents.length > 0)) ? 'justify-between' : 'justify-center'\">\r\n <ng-template #buttons let-items=\"items\">\r\n <ng-container *ngIf=\"items\">\r\n <div class=\"mt-sm\" *ngIf=\"items.length === 1\">\r\n <desy-button (clickEvent)=\"clickButtonEmit(items[0], $event)\" [classes]=\"items[0].classes\">\r\n <ng-container *desyCustomInnerContent=\"{ component: items[0], text: items[0].text }\"></ng-container>\r\n </desy-button>\r\n </div>\r\n\r\n <!-- FIXME De momento se mantiene el nbsp por no tener clases diferentes a desy-frontend.\r\n Eliminar al adaptar a una versi\u00F3n de desy-frontend que lo contemple -->\r\n <ul class=\"flex flex-wrap gap-sm\" *ngIf=\"items.length > 1\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <li>\r\n <desy-button (clickEvent)=\"clickButtonEmit(item, $event)\" [classes]=\"item.classes\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </desy-button>\r\n </li>&nbsp;\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"buttons; context: { items: getPrimaryItems() }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"buttons; context: { items: getSecondaryItems() }\"></ng-container>\r\n </div>\r\n\r\n <ng-container *ngIf=\"isDismissible\">\r\n <div class=\"absolute top-0 right-0 p-sm lg:p-base\">\r\n <button (click)=\"closeDialog()\" class=\"p-sm focus:bg-warning-base focus:border-warning-base focus:shadow-outline-black focus:text-black focus:outline-none\" aria-label=\"X: Cerrar la ventana emergente\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4\" aria-hidden=\"true\" role=\"presentation\"><path d=\"M85.91 71.77a2.5 2.5 0 010-3.54l46.16-46.16a10 10 0 10-14.14-14.14L71.77 54.09a2.5 2.5 0 01-3.54 0L22.07 7.93A10 10 0 007.93 22.07l46.16 46.16a2.5 2.5 0 010 3.54L7.93 117.93a10 10 0 0014.14 14.14l46.16-46.16a2.5 2.5 0 013.54 0l46.16 46.16a10 10 0 0014.14-14.14z\" fill=\"currentColor\"/></svg>\r\n </button>\r\n </div>\r\n </ng-container>\r\n</div>\r\n"
4848
+ template: "<div [class]=\"[ 'relative max-w-lg mx-auto p-base lg:p-lg border border-neutral-base rounded bg-white', classes] | makeHtmlList\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.role]=\"role\"\r\n [attr.aria-describedby]=\"ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-hidden]=\"ariaHidden\"\r\n [attr.aria-disabled]=\"ariaDisabled\"\r\n [attr.aria-controls]=\"ariaControls\"\r\n [attr.aria-current]=\"ariaCurrent\"\r\n [attr.aria-live]=\"ariaLive\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-haspopup]=\"ariaHasPopup\"\r\n [attr.tabindex]=\"tabindex\">\r\n <div *ngIf=\"iconComponent || icon\" class=\"flex justify-center p-base\"\r\n (desyContentEmpty)=\"handleIconContentEmpty(true)\"\r\n (desyContentNotEmpty)=\"handleIconContentEmpty(false)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent, html: icon ? icon.html : null }\"></ng-container>\r\n <ng-container *ngIf=\"!hasIconContent\">\r\n <ng-container [ngSwitch]=\"getType()\">\r\n <svg *ngSwitchCase=\"'discard'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-alert-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M4.375 70a65.625 65.625 0 10131.25 0 65.625 65.625 0 10-131.25 0zM23.596 116.404l92.808-92.808\" stroke-width=\"8.749995\"/></g></svg>\r\n <svg *ngSwitchCase=\"'delete'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-alert-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M100.625 122.5h-61.25a8.75 8.75 0 01-8.75-8.75V35h78.75v78.75a8.75 8.75 0 01-8.75 8.75zM56.875 96.25v-35M83.125 96.25v-35M13.125 35h113.75M83.125 17.5h-26.25a8.75 8.75 0 00-8.75 8.75V35h43.75v-8.75a8.75 8.75 0 00-8.75-8.75z\" stroke-width=\"8.749995\"/></g></svg>\r\n <svg *ngSwitchCase=\"'edit'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-primary-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M73.89 82.46l-21.652 3.098 3.091-21.66 55.685-55.685a13.125 13.125 0 0118.562 18.562z\" stroke-width=\"8.749995\"/><path d=\"M111.545 83.125v43.75a8.75 8.75 0 01-8.75 8.75h-87.5a8.75 8.75 0 01-8.75-8.75v-87.5a8.75 8.75 0 018.75-8.75h43.75\" stroke-width=\"8.749995\"/></g></svg>\r\n <svg *ngSwitchCase=\"'changes'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-primary-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M107.112 40.833a48.125 48.125 0 00-85.237 30.608v13.142M35 104.463a48.125 48.125 0 0083.125-33.022v-8.75\" stroke-width=\"8.749995\"/><path d=\"M4.375 67.066l17.5 17.5 17.5-17.5M135.625 80.19l-17.5-17.5-17.5 17.5\" stroke-width=\"8.749995\"/></g></svg>\r\n <svg *ngSwitchCase=\"'publish'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"block w-16 h-16 text-primary-light\" focusable=\"false\" aria-hidden=\"true\" role=\"presentation\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M16.094 91.17a9.707 9.707 0 01-5.145-17.938L118.767 5.833a9.7 9.7 0 0114.676 10.034l-21 111.842a9.707 9.707 0 01-17.301 4.031L64.75 91.17z\" stroke-width=\"8.749995\"/><path d=\"M64.75 91.17H50.167v30.163a9.7 9.7 0 0015.166 8.015l18.539-12.635zM64.744 91.17l64.633-85.11\" stroke-width=\"8.749995\"/></g></svg>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\r\n <h1 *ngSwitchCase=\"1\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h1>\r\n <h2 *ngSwitchCase=\"2\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h2>\r\n <h3 *ngSwitchCase=\"3\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h3>\r\n <h4 *ngSwitchCase=\"4\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h4>\r\n <h5 *ngSwitchCase=\"5\" [attr.id]=\"'label-' + id\" [class]=\"getTitleClasses()\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: this.titleComponent,\r\n html: this.title ? this.title.html : null,\r\n text: this.title ? this.title.text : null\r\n }\"></ng-container>\r\n </h5>\r\n </ng-container>\r\n\r\n <div *ngIf=\"descriptionIsHtml\" [class]=\"getDescriptionClasses()\"\r\n (desyContentChange)=\"checkDescriptionContent($event)\" [observeProperties]=\"{ attributes: false, childList: true, characterData: true, subtree: true }\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: descriptionComponent,\r\n html: description ? description.html : null,\r\n text: description ? description.text : null\r\n }\"></ng-container>\r\n </div>\r\n <p *ngIf=\"!descriptionIsHtml\" [class]=\"getDescriptionClasses()\"\r\n (desyContentChange)=\"checkDescriptionContent($event)\" [observeProperties]=\"{ attributes: false, childList: true, characterData: true, subtree: true }\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: descriptionComponent,\r\n html: description ? description.html : null,\r\n text: description ? description.text : null\r\n }\"></ng-container>\r\n </p>\r\n\r\n <div *ngIf=\"contentComponent || caller\" class=\"p-base\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, template: caller }\"></ng-container>\r\n </div>\r\n\r\n <div class=\"flex flex-wrap gap-sm w-full\" [ngClass]=\"(itemsPrimary || (primaryButtonComponents && primaryButtonComponents.length > 0)) && (itemsSecondary || (secondaryButtonComponents && secondaryButtonComponents.length > 0)) ? 'justify-between' : 'justify-center'\">\r\n <ng-template #buttons let-items=\"items\">\r\n <ng-container *ngIf=\"items\">\r\n <div class=\"mt-sm\" *ngIf=\"items.length === 1\">\r\n <desy-button (clickEvent)=\"clickButtonEmit(items[0], $event)\" [classes]=\"items[0].classes\">\r\n <ng-container *desyCustomInnerContent=\"{ component: items[0], text: items[0].text }\"></ng-container>\r\n </desy-button>\r\n </div>\r\n\r\n <!-- FIXME De momento se mantiene el nbsp por no tener clases diferentes a desy-html.\r\n Eliminar al adaptar a una versi\u00F3n de desy-html que lo contemple -->\r\n <ul class=\"flex flex-wrap gap-sm\" *ngIf=\"items.length > 1\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <li>\r\n <desy-button (clickEvent)=\"clickButtonEmit(item, $event)\" [classes]=\"item.classes\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </desy-button>\r\n </li>&nbsp;\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"buttons; context: { items: getPrimaryItems() }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"buttons; context: { items: getSecondaryItems() }\"></ng-container>\r\n </div>\r\n\r\n <ng-container *ngIf=\"isDismissible\">\r\n <div class=\"absolute top-0 right-0 p-sm lg:p-base\">\r\n <button (click)=\"closeDialog()\" class=\"p-sm focus:bg-warning-base focus:border-warning-base focus:shadow-outline-black focus:text-black focus:outline-none\" aria-label=\"X: Cerrar la ventana emergente\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4\" aria-hidden=\"true\" role=\"presentation\"><path d=\"M85.91 71.77a2.5 2.5 0 010-3.54l46.16-46.16a10 10 0 10-14.14-14.14L71.77 54.09a2.5 2.5 0 01-3.54 0L22.07 7.93A10 10 0 007.93 22.07l46.16 46.16a2.5 2.5 0 010 3.54L7.93 117.93a10 10 0 0014.14 14.14l46.16-46.16a2.5 2.5 0 013.54 0l46.16 46.16a10 10 0 0014.14-14.14z\" fill=\"currentColor\"/></svg>\r\n </button>\r\n </div>\r\n </ng-container>\r\n</div>\r\n"
3794
4849
  },] }
3795
4850
  ];
3796
4851
  ModalComponent.ctorParameters = function () { return [
@@ -4220,6 +5275,8 @@
4220
5275
  if (this.isOpen()) {
4221
5276
  this.dialogService.closeDialog(this.dialog);
4222
5277
  this.dialog = null;
5278
+ var elementToFocus = document.getElementById('header-offcanvas-button');
5279
+ elementToFocus === null || elementToFocus === void 0 ? void 0 : elementToFocus.focus();
4223
5280
  }
4224
5281
  };
4225
5282
  HeaderOffcanvasComponent.prototype.isOpen = function () {
@@ -4245,14 +5302,15 @@
4245
5302
  }());
4246
5303
  HeaderOffcanvasComponent.dialogOptions = {
4247
5304
  id: 'header-offcanvas-dialog',
4248
- focusOnClose: 'header-offcanvas',
5305
+ focusOnClose: 'header-offcanvas-button',
4249
5306
  ariaModal: 'true',
4250
- ariaLabelledBy: 'header-offcanvas-button-text'
5307
+ ariaLabelledBy: 'header-offcanvas-button-text',
5308
+ role: 'dialog'
4251
5309
  };
4252
5310
  HeaderOffcanvasComponent.decorators = [
4253
5311
  { type: i0.Component, args: [{
4254
5312
  selector: 'desy-header-offcanvas',
4255
- template: "\r\n<ng-template #offcanvasContent>\r\n <div class=\"origin-top-left left-0 fixed inset-0 h-screen\">\r\n <div class=\"h-full overflow-auto relative w-offcanvas h-screen ml-offcanvas-negative bg-white z-10\"\r\n [desyClickOutside]=\"isOpen()\" (clickOutside)=\"close()\">\r\n <div class=\"text-right p-sm\">\r\n <button (click)=\"close()\" id=\"header-offcanvas-button-close\" class=\"c-button c-button--sm c-button--transparent m-sm\"\r\n (desyContentEmpty)=\"handleEmptyContent('Header-offcanvas close button')\">\r\n <ng-container *desyCustomInnerContent=\"{ component: closeButton }\"></ng-container> <svg #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 14\" width=\"14\" height=\"14\" class=\"self-center ml-2\"><path fill=\"currentColor\" d=\"M8.591 7.177a.25.25 0 010-.354l4.616-4.616A1 1 0 1011.793.793L7.177 5.409a.25.25 0 01-.354 0L2.207.793A1 1 0 00.793 2.207l4.616 4.616a.25.25 0 010 .354L.793 11.793a1 1 0 001.414 1.414l4.616-4.616a.25.25 0 01.354 0l4.616 4.616a1 1 0 001.414-1.414z\"/></svg>\r\n </button>\r\n </div>\r\n <ng-container *desyCustomInnerContent=\"{ component: content }\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-container *desyCustomInnerContent=\"{ component: button }\"></ng-container>\r\n"
5313
+ template: "\r\n<ng-template #offcanvasContent>\r\n <div class=\"origin-top-left left-0 fixed inset-0 h-screen\">\r\n <div class=\"h-full overflow-auto relative w-offcanvas h-screen ml-offcanvas-negative bg-white z-10\"\r\n [desyClickOutside]=\"isOpen()\" (clickOutside)=\"close()\">\r\n <div class=\"text-right p-sm\">\r\n <button (click)=\"close()\" id=\"header-offcanvas-button-close\" class=\"c-button c-button--sm c-button--transparent m-sm\"\r\n (desyContentEmpty)=\"handleEmptyContent('Header-offcanvas close button')\">\r\n <ng-container *desyCustomInnerContent=\"{ component: closeButton }\"></ng-container> <svg #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 14\" width=\"14\" height=\"14\" class=\"self-center ml-2\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M8.591 7.177a.25.25 0 010-.354l4.616-4.616A1 1 0 1011.793.793L7.177 5.409a.25.25 0 01-.354 0L2.207.793A1 1 0 00.793 2.207l4.616 4.616a.25.25 0 010 .354L.793 11.793a1 1 0 001.414 1.414l4.616-4.616a.25.25 0 01.354 0l4.616 4.616a1 1 0 001.414-1.414z\"/></svg>\r\n </button>\r\n </div>\r\n <ng-container *desyCustomInnerContent=\"{ component: content }\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-container *desyCustomInnerContent=\"{ component: button }\"></ng-container>\r\n"
4256
5314
  },] }
4257
5315
  ];
4258
5316
  HeaderOffcanvasComponent.ctorParameters = function () { return [
@@ -4434,12 +5492,43 @@
4434
5492
  NavComponent.prototype.getIdPrefix = function () {
4435
5493
  return this.idPrefix ? this.idPrefix : 'nav-item';
4436
5494
  };
5495
+ NavComponent.prototype.movePrevious = function (event, currentIndex) {
5496
+ event.preventDefault();
5497
+ var items = this.getItemList();
5498
+ var nextIndex = currentIndex - 1;
5499
+ while (nextIndex >= 0 && !this.isFocusableItem(items[nextIndex])) {
5500
+ nextIndex--;
5501
+ }
5502
+ if (nextIndex < items.length) {
5503
+ var itemElem = document.getElementById(this.getItemId(items[nextIndex], nextIndex));
5504
+ if (itemElem) {
5505
+ itemElem.focus();
5506
+ }
5507
+ }
5508
+ };
5509
+ NavComponent.prototype.moveNext = function (event, currentIndex) {
5510
+ event.preventDefault();
5511
+ var items = this.getItemList();
5512
+ var nextIndex = currentIndex + 1;
5513
+ while (nextIndex < items.length && !this.isFocusableItem(items[nextIndex])) {
5514
+ nextIndex++;
5515
+ }
5516
+ if (nextIndex < items.length) {
5517
+ var itemElem = document.getElementById(this.getItemId(items[nextIndex], nextIndex));
5518
+ if (itemElem) {
5519
+ itemElem.focus();
5520
+ }
5521
+ }
5522
+ };
5523
+ NavComponent.prototype.isFocusableItem = function (item) {
5524
+ return !item.active && !item.disabled;
5525
+ };
4437
5526
  return NavComponent;
4438
5527
  }(AccessibilityComponent));
4439
5528
  NavComponent.decorators = [
4440
5529
  { type: i0.Component, args: [{
4441
5530
  selector: 'desy-nav',
4442
- template: "<ng-template #innerHtml>\r\n <ng-container *ngFor=\"let item of getItemList(); index as i\">\r\n <li>\r\n <span *ngIf=\"item.active\"\r\n [class]=\"['flex items-center px-base py-sm font-semibold', item.classes] | makeHtmlList\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"hasNav ? 'true' : 'page'\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.tabindex]=\"item.tabindex\"\r\n (click)=\"onClick($event, item)\">\r\n <strong>\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </strong>\r\n </span>\r\n <a *ngIf=\"!item.active && item.href\"\r\n [href]=\"item.href | externalHref\" [target]=\"item.target\"\r\n [class]=\"['flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'pointer-events-none': item.disabled}\"\r\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : item.tabindex\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n (desyContentEmpty)=\"handleContentEmpty(i)\"\r\n (click)=\"onClick($event, item)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n <svg #desyContentEmptyIgnore *ngIf=\"item.disabled\" viewBox=\"0 0 140 140\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\" class=\"inline-block align-middle ml-sm text-neutral-base fill-current\" aria-hidden=\"true\" focusable=\"false\" ><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zM20 70a50 50 0 0174.8-43.4 2.51 2.51 0 011.23 1.84 2.48 2.48 0 01-.71 2.1L30.54 95.32a2.51 2.51 0 01-3.94-.52A49.63 49.63 0 0120 70zm100 0a50 50 0 01-74.8 43.4 2.51 2.51 0 01-1.23-1.84 2.48 2.48 0 01.71-2.1l64.78-64.78a2.51 2.51 0 013.94.52A49.63 49.63 0 01120 70z\"/></svg>\r\n </a>\r\n <a *ngIf=\"!item.active && !item.href\"\r\n [routerLink]=\"item.routerLink\" [fragment]=\"item.fragment\"\r\n [class]=\"['flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'pointer-events-none': item.disabled}\"\r\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : item.tabindex\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n (click)=\"onClick($event, item)\"\r\n (desyContentEmpty)=\"handleContentEmpty(i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n <svg #desyContentEmptyIgnore *ngIf=\"item.disabled\" viewBox=\"0 0 140 140\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\" class=\"inline-block align-middle ml-sm text-neutral-base fill-current\" aria-hidden=\"true\" focusable=\"false\" ><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zM20 70a50 50 0 0174.8-43.4 2.51 2.51 0 011.23 1.84 2.48 2.48 0 01-.71 2.1L30.54 95.32a2.51 2.51 0 01-3.94-.52A49.63 49.63 0 0120 70zm100 0a50 50 0 01-74.8 43.4 2.51 2.51 0 01-1.23-1.84 2.48 2.48 0 01.71-2.1l64.78-64.78a2.51 2.51 0 013.94.52A49.63 49.63 0 01120 70z\"/></svg>\r\n </a>\r\n </li>\r\n <li *ngIf=\"item.divider\" class=\"my-sm border-b border-neutral-base\" aria-hidden=\"true\">\r\n <div class=\"sr-only\">Separador</div>\r\n </li>\r\n </ng-container>\r\n</ng-template>\r\n\r\n\r\n<ul *ngIf=\"!hasNav; else wrapIntoNav\"\r\n [class]=\"['text-sm', classes] | makeHtmlList\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\r\n</ul>\r\n<ng-template #wrapIntoNav>\r\n <nav [class]=\"['text-sm', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ul>\r\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\r\n </ul>\r\n </nav>\r\n</ng-template>\r\n"
5531
+ template: "<ng-template #innerHtml>\r\n <ng-container *ngFor=\"let item of getItemList(); index as i\">\r\n <li>\r\n <span *ngIf=\"item.active\"\r\n [class]=\"['flex items-center px-base py-sm font-semibold', item.classes] | makeHtmlList\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"hasNav ? 'true' : 'page'\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.tabindex]=\"item.tabindex\"\r\n (click)=\"onClick($event, item)\">\r\n <strong>\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </strong>\r\n </span>\r\n <a *ngIf=\"!item.active && item.href\"\r\n [href]=\"item.href | externalHref\" [target]=\"item.target\"\r\n [class]=\"['flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'pointer-events-none': item.disabled}\"\r\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : item.tabindex\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n (desyContentEmpty)=\"handleContentEmpty(i)\"\r\n (keydown.arrowUp)=\"movePrevious($event, i)\"\r\n (keydown.arrowDown)=\"moveNext($event, i)\"\r\n (click)=\"onClick($event, item)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n <svg #desyContentEmptyIgnore *ngIf=\"item.disabled\" viewBox=\"0 0 140 140\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\" class=\"inline-block align-middle ml-sm text-neutral-base fill-current\" aria-hidden=\"true\" focusable=\"false\" ><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zM20 70a50 50 0 0174.8-43.4 2.51 2.51 0 011.23 1.84 2.48 2.48 0 01-.71 2.1L30.54 95.32a2.51 2.51 0 01-3.94-.52A49.63 49.63 0 0120 70zm100 0a50 50 0 01-74.8 43.4 2.51 2.51 0 01-1.23-1.84 2.48 2.48 0 01.71-2.1l64.78-64.78a2.51 2.51 0 013.94.52A49.63 49.63 0 01120 70z\"/></svg>\r\n </a>\r\n <a *ngIf=\"!item.active && !item.href\"\r\n [routerLink]=\"item.routerLink\" [fragment]=\"item.fragment\"\r\n [class]=\"['flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'pointer-events-none': item.disabled}\"\r\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : item.tabindex\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n (keydown.arrowUp)=\"movePrevious($event, i)\"\r\n (keydown.arrowDown)=\"moveNext($event, i)\"\r\n (click)=\"onClick($event, item)\"\r\n (desyContentEmpty)=\"handleContentEmpty(i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n <svg #desyContentEmptyIgnore *ngIf=\"item.disabled\" viewBox=\"0 0 140 140\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\" class=\"inline-block align-middle ml-sm text-neutral-base fill-current\" aria-hidden=\"true\" focusable=\"false\" ><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zM20 70a50 50 0 0174.8-43.4 2.51 2.51 0 011.23 1.84 2.48 2.48 0 01-.71 2.1L30.54 95.32a2.51 2.51 0 01-3.94-.52A49.63 49.63 0 0120 70zm100 0a50 50 0 01-74.8 43.4 2.51 2.51 0 01-1.23-1.84 2.48 2.48 0 01.71-2.1l64.78-64.78a2.51 2.51 0 013.94.52A49.63 49.63 0 01120 70z\"/></svg>\r\n </a>\r\n </li>\r\n <li *ngIf=\"item.divider\" class=\"my-sm border-b border-neutral-base\" aria-hidden=\"true\">\r\n <div class=\"sr-only\">Separador</div>\r\n </li>\r\n </ng-container>\r\n</ng-template>\r\n\r\n\r\n<ul *ngIf=\"!hasNav; else wrapIntoNav\"\r\n [class]=\"['text-sm', classes] | makeHtmlList\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\r\n</ul>\r\n<ng-template #wrapIntoNav>\r\n <nav [class]=\"['text-sm', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ul>\r\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\r\n </ul>\r\n </nav>\r\n</ng-template>\r\n"
4443
5532
  },] }
4444
5533
  ];
4445
5534
  NavComponent.propDecorators = {
@@ -4451,21 +5540,11 @@
4451
5540
  itemComponentList: [{ type: i0.ContentChildren, args: [NavItemComponent,] }]
4452
5541
  };
4453
5542
 
4454
- var HeaderSubnavComponent = /** @class */ (function () {
5543
+ var HeaderSubnavComponent = /** @class */ (function (_super) {
5544
+ __extends(HeaderSubnavComponent, _super);
4455
5545
  function HeaderSubnavComponent() {
4456
- this.isOpen = false;
4457
- this.clickOutsideEnabled = false;
5546
+ return _super !== null && _super.apply(this, arguments) || this;
4458
5547
  }
4459
- HeaderSubnavComponent.prototype.toggleOpen = function () {
4460
- var _this = this;
4461
- this.isOpen = !this.isOpen;
4462
- setTimeout(function () { return _this.clickOutsideEnabled = _this.isOpen; });
4463
- };
4464
- HeaderSubnavComponent.prototype.onKeydownEscape = function () {
4465
- this.isOpen = false;
4466
- this.clickOutsideEnabled = false;
4467
- document.getElementById('header-subnav-button').focus();
4468
- };
4469
5548
  HeaderSubnavComponent.prototype.hasSubnavItems = function () {
4470
5549
  return this.nav && this.nav.getItemList().length > 0;
4471
5550
  };
@@ -4480,55 +5559,29 @@
4480
5559
  throw new Error(element + " content is required");
4481
5560
  };
4482
5561
  return HeaderSubnavComponent;
4483
- }());
5562
+ }(AccessibilityComponent));
4484
5563
  HeaderSubnavComponent.decorators = [
4485
5564
  { type: i0.Component, args: [{
4486
5565
  selector: 'desy-header-subnav',
4487
- template: "\r\n<ng-template #templateNav>\r\n <ng-content select=\"desy-nav\"></ng-content>\r\n</ng-template>\r\n\r\n<ng-template #temlpateContent>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n<div class=\"hidden lg:flex items-center\" *ngIf=\"hasSubnavItems(); else noItems\">\r\n <div class=\"ml-3 relative\">\r\n <h2 id=\"subnav-title\">\r\n <button id=\"header-subnav-button\" (click)=\"toggleOpen()\" class=\"pr-2 pl-3 py-4 border-r border-l border-neutral-base text-sm text-white truncate focus:outline-none focus:ring-4 focus:ring-inset focus:ring-warning-base\"\r\n aria-haspopup=\"true\" [attr.aria-expanded]=\"isOpen\" (keydown.escape)=\"onKeydownEscape()\">\r\n <span class=\"inline-block align-middle\" (desyContentEmpty)=\"handleEmptyContent('Header-subnav')\">\r\n <ng-container *ngTemplateOutlet=\"temlpateContent\"></ng-container>\r\n </span>\r\n <svg class=\"inline-block align-middle\" viewBox=\"0 0 96 96\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\">\r\n <g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g>\r\n </svg>\r\n </button>\r\n </h2>\r\n <div *ngIf=\"isOpen\" @toggleDropdown\r\n [desyClickOutside]=\"clickOutsideEnabled\" (clickOutside)=\"toggleOpen()\"\r\n (keydown.escape)=\"onKeydownEscape()\"\r\n class=\"origin-top-left absolute left-0 max-h-64 mt-2 border border-neutral-base overflow-y-auto shadow-md\">\r\n <div class=\"bg-white shadow-xs\" (desyContentEmpty)=\"handleEmptyContent('Header-subnav nav')\">\r\n <ng-container *ngTemplateOutlet=\"templateNav\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #noItems>\r\n <p class=\"hidden lg:inline-block align-middle ml-4 px-3 py-4 border-r border-l border-neutral-base text-sm text-white\"\r\n (desyContentEmpty)=\"handleEmptyContent('Header-subnav')\">\r\n <span #desyContentEmptyIgnore class=\"sr-only\">Aplicaci\u00F3n actual: </span>\r\n <ng-container *ngTemplateOutlet=\"temlpateContent\"></ng-container>\r\n </p>\r\n</ng-template>\r\n\r\n",
4488
- animations: [
4489
- animations.trigger('toggleDropdown', [
4490
- animations.state('void', animations.style({
4491
- opacity: '0.0',
4492
- transform: 'scale(0.95)'
4493
- })),
4494
- animations.state('*', animations.style({
4495
- opacity: '1.0',
4496
- transform: 'scale(1.0)'
4497
- })),
4498
- animations.transition(':enter', [
4499
- animations.animate('100ms ease-out')
4500
- ]),
4501
- animations.transition(':leave', [
4502
- animations.animate('75ms ease-in')
4503
- ])
4504
- ])
4505
- ]
5566
+ template: "<ng-template #templateNav>\r\n <ng-content select=\"desy-nav\"></ng-content>\r\n</ng-template>\r\n\r\n<ng-template #templateContent>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n<div class=\"hidden lg:flex items-center\" *ngIf=\"hasSubnavItems(); else noItems\">\r\n <div class=\"ml-3 py-2 relative border-r border-l border-neutral-base\">\r\n <p class=\"sr-only\">Aplicaci\u00F3n actual: </p>\r\n <desy-dropdown [hiddenText]=\"hiddenText\"\r\n [classesContainer]=\"classesContainer\"\r\n [classesTooltip]=\"classesTooltip\"\r\n [classes]=\"classes ? classes : 'c-dropdown--header'\"\r\n [caller]=\"caller\"\r\n\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaDescribedBy]=\"ariaDescribedBy\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [tabindex]=\"tabindex\">\r\n <ng-container *ngTemplateOutlet=\"templateContent\"></ng-container>\r\n <ng-template #caller>\r\n <ng-container *ngTemplateOutlet=\"templateNav\"></ng-container>\r\n </ng-template>\r\n </desy-dropdown>\r\n </div>\r\n</div>\r\n<ng-template #noItems>\r\n <p class=\"hidden lg:inline-block align-middle ml-4 px-3 py-4 border-r border-l border-neutral-base text-sm text-white\"\r\n (desyContentEmpty)=\"handleEmptyContent('Header-subnav')\">\r\n <span #desyContentEmptyIgnore class=\"sr-only\">Aplicaci\u00F3n actual: </span>\r\n <ng-container *ngTemplateOutlet=\"templateContent\"></ng-container>\r\n </p>\r\n</ng-template>\r\n\r\n\r\n"
4506
5567
  },] }
4507
5568
  ];
4508
5569
  HeaderSubnavComponent.propDecorators = {
4509
- classes: [{ type: i0.HostBinding, args: ['class',] }, { type: i0.Input }],
5570
+ hiddenText: [{ type: i0.Input }],
5571
+ classesContainer: [{ type: i0.Input }],
5572
+ classesTooltip: [{ type: i0.Input }],
5573
+ classes: [{ type: i0.Input }],
4510
5574
  nav: [{ type: i0.ContentChildren, args: [NavComponent,] }]
4511
5575
  };
4512
5576
  __decorate([
4513
5577
  DesyContentChild({ onSetCallbackName: 'overrideNavParams' })
4514
5578
  ], HeaderSubnavComponent.prototype, "nav", void 0);
4515
5579
 
4516
- var HeaderDropdownComponent = /** @class */ (function () {
5580
+ var HeaderDropdownComponent = /** @class */ (function (_super) {
5581
+ __extends(HeaderDropdownComponent, _super);
4517
5582
  function HeaderDropdownComponent() {
4518
- this.hostClass = 'hidden lg:block';
4519
- this.isOpen = false;
4520
- this.clickOutsideEnabled = false;
5583
+ return _super !== null && _super.apply(this, arguments) || this;
4521
5584
  }
4522
- HeaderDropdownComponent.prototype.toggleOpen = function () {
4523
- var _this = this;
4524
- this.isOpen = !this.isOpen;
4525
- setTimeout(function () { return _this.clickOutsideEnabled = _this.isOpen; });
4526
- };
4527
- HeaderDropdownComponent.prototype.onKeydownEscape = function () {
4528
- this.isOpen = false;
4529
- this.clickOutsideEnabled = false;
4530
- document.getElementById('header-dropdown-button').focus();
4531
- };
4532
5585
  HeaderDropdownComponent.prototype.overrideNavParams = function (nav) {
4533
5586
  nav.hasNav = true;
4534
5587
  nav.idPrefix = 'header-dropdown-nav-item';
@@ -4536,52 +5589,31 @@
4536
5589
  nav.classes = 'w-max max-w-64';
4537
5590
  // nav.id = 'id-dropdown-nav'; // No existe como param de navComponent
4538
5591
  };
4539
- /**
4540
- * Estable las clases del elemento html del componente
4541
- */
4542
- HeaderDropdownComponent.prototype.setHostClass = function () {
4543
- this.hostClass = this.classes ? this.classes : 'hidden lg:block';
4544
- };
4545
5592
  HeaderDropdownComponent.prototype.handleEmptyContent = function (element) {
4546
5593
  throw new Error(element + " content is required");
4547
5594
  };
4548
5595
  return HeaderDropdownComponent;
4549
- }());
5596
+ }(AccessibilityComponent));
4550
5597
  HeaderDropdownComponent.decorators = [
4551
5598
  { type: i0.Component, args: [{
4552
5599
  selector: 'desy-header-dropdown',
4553
- template: "<div class=\"ml-4 flex items-center lg:ml-6\">\r\n <div class=\"ml-3 relative\">\r\n <div>\r\n <button id=\"header-dropdown-button\" (click)=\"toggleOpen()\" class=\"inline-flex items-center px-3 py-4 text-sm text-white focus:outline-none focus:ring-4 focus:ring-inset focus:ring-warning-base\"\r\n aria-haspopup=\"true\" [attr.aria-expanded]=\"isOpen\" (keydown.escape)=\"onKeydownEscape()\">\r\n <span class=\"inline-block align-middle text-right\" (desyContentEmpty)=\"handleEmptyContent('Header-dropdown')\">\r\n <ng-content></ng-content>\r\n </span> <svg class=\"inline-block align-middle\" viewBox=\"0 0 96 96\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\r\n </button>\r\n </div>\r\n <div *ngIf=\"isOpen\" @toggleDropdown (keydown.escape)=\"onKeydownEscape()\"\r\n [desyClickOutside]=\"clickOutsideEnabled\" (clickOutside)=\"toggleOpen()\"\r\n class=\"origin-top-right absolute right-0 max-h-64 mt-2 border border-neutral-base overflow-y-auto shadow-md\">\r\n <div class=\"bg-white shadow-xs\" (desyContentEmpty)=\"handleEmptyContent('Header-dropdown nav')\">\r\n <ng-content select=\"desy-nav\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
4554
- animations: [
4555
- animations.trigger('toggleDropdown', [
4556
- animations.state('void', animations.style({
4557
- opacity: '0.0',
4558
- transform: 'scale(0.95)'
4559
- })),
4560
- animations.state('*', animations.style({
4561
- opacity: '1.0',
4562
- transform: 'scale(1.0)'
4563
- })),
4564
- animations.transition(':enter', [
4565
- animations.animate('100ms ease-out')
4566
- ]),
4567
- animations.transition(':leave', [
4568
- animations.animate('75ms ease-in')
4569
- ])
4570
- ])
4571
- ]
5600
+ template: "<div class=\"ml-4 flex items-center lg:ml-6\">\r\n <div class=\"ml-3 relative\">\r\n <desy-dropdown [hiddenText]=\"hiddenText\"\r\n [classesContainer]=\"classesContainer ? classesContainer : 'hidden lg:block'\"\r\n [classesTooltip]=\"classesTooltip\"\r\n [classes]=\"classes ? classes : 'c-dropdown--header'\"\r\n [caller]=\"caller\"\r\n\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaDescribedBy]=\"ariaDescribedBy\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [tabindex]=\"tabindex\">\r\n <ng-content></ng-content>\r\n </desy-dropdown>\r\n <ng-template #caller>\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, template: templateNav }\"></ng-container>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<ng-template #templateNav>\r\n <ng-content select=\"desy-nav\"></ng-content>\r\n</ng-template>\r\n"
4572
5601
  },] }
4573
5602
  ];
4574
5603
  HeaderDropdownComponent.propDecorators = {
5604
+ hiddenText: [{ type: i0.Input }],
5605
+ classesContainer: [{ type: i0.Input }],
5606
+ classesTooltip: [{ type: i0.Input }],
4575
5607
  classes: [{ type: i0.Input }],
4576
- hostClass: [{ type: i0.HostBinding, args: ['class',] }],
4577
- nav: [{ type: i0.ContentChildren, args: [NavComponent,] }]
5608
+ nav: [{ type: i0.ContentChildren, args: [NavComponent,] }],
5609
+ contentComponent: [{ type: i0.ContentChildren, args: [ContentComponent,] }]
4578
5610
  };
4579
- __decorate([
4580
- DesyOnInputChange('setHostClass')
4581
- ], HeaderDropdownComponent.prototype, "classes", void 0);
4582
5611
  __decorate([
4583
5612
  DesyContentChild({ onSetCallbackName: 'overrideNavParams' })
4584
- ], HeaderDropdownComponent.prototype, "nav", void 0);
5613
+ ], HeaderDropdownComponent.prototype, "nav", void 0);
5614
+ __decorate([
5615
+ DesyContentChild()
5616
+ ], HeaderDropdownComponent.prototype, "contentComponent", void 0);
4585
5617
 
4586
5618
  var SkipLinkComponent = /** @class */ (function (_super) {
4587
5619
  __extends(SkipLinkComponent, _super);
@@ -4644,7 +5676,7 @@
4644
5676
  HeaderComponent.decorators = [
4645
5677
  { type: i0.Component, args: [{
4646
5678
  selector: 'desy-header',
4647
- template: "<header [ngClass]=\"classes\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <div [ngClass]=\"containerClasses\">\r\n <nav [attr.aria-labelledby]=\"skiplinkComponent ? skiplinkComponent.id : 'skip-link'\">\r\n <ng-content select=\"desy-skip-link\"></ng-content>\r\n <desy-skip-link *ngIf=\"!skiplinkComponent\" text=\"Saltar al contenido principal\" [id]=\"'skip-link'\"></desy-skip-link>\r\n </nav>\r\n <div class=\"flex h-1 bg-red-700\">\r\n <div class=\"flex-auto bg-yellow-300 h-full\"></div>\r\n <div class=\"flex-auto bg-red-500 h-full\"></div>\r\n <div class=\"flex-auto bg-red-800 h-full\"></div>\r\n </div>\r\n <div class=\"bg-black\">\r\n <div class=\"container mx-auto px-base\">\r\n <div class=\"flex items-center justify-between min-h-14\">\r\n <div class=\"flex flex-wrap items-center\">\r\n <div class=\"flex items-center flex-shrink-0\">\r\n <a *ngIf=\"homepageRouterLink || !homepageUrl\" [routerLink]=\"homepageRouterLink\" [fragment]=\"homepageFragment\" class=\"text-white focus:outline-none focus:shadow-outline-warning\" title=\"Ir a la p\u00E1gina de inicio\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 216.878 51.894\" width=\"144\" height=\"32\" [ngClass]=\"{'sm:block': expandedLogo}\" class=\"fill-current hidden\" aria-label=\"Gobierno de Arag\u00F3n\" role=\"img\"><title>Ir a la p\u00E1gina de inicio</title><path data-name=\"img\" d=\"M51.89 51.892H0V0h51.89zm-2.5-2.494v-8.96L38.906 42.33a17.743 17.743 0 01-3.136.278 18.211 18.211 0 01-9.225-2.517 21.42 21.42 0 00-9.317-2.082 20.786 20.786 0 00-4.9.571c-.743.15-1.526.292-2.282.429l-.125.023-.613.112-4.928.913-1.875.382V48.934l1.527-.247 22.517-4.133a17.458 17.458 0 013.236-.3 18.06 18.06 0 017.317 1.527l5.442 2.854a9.431 9.431 0 002.372.679 7.837 7.837 0 001.147.083h.029a16 16 0 003.3-.464zm0 0zm0-8.96V27.195a8.1 8.1 0 00-4.062-1.2 7.451 7.451 0 00-1.162.094l-10.852 2.009c-.026 0-2.878.518-4.281.779L17.12 31.048a18.266 18.266 0 01-2.5.173 18.246 18.246 0 01-7.67-1.683l-4.447-2.34V33.636l1.511-.281a19.009 19.009 0 014.442-.517 17.882 17.882 0 018.168 1.894 23.042 23.042 0 0010.673 2.617 23.64 23.64 0 002.884-.178l19.21-3.535zm0-13.243v-8.778l-1.341.282a19.092 19.092 0 01-4.442.516 17.873 17.873 0 01-8.169-1.894 23.049 23.049 0 00-10.672-2.618 23.464 23.464 0 00-2.884.179L2.5 18.417v6.538a7.558 7.558 0 003.968 1.128 9.406 9.406 0 001.426-.116l10.852-2.008c.027-.005 2.876-.518 4.28-.78l11.914-2.174a18.122 18.122 0 012.5-.173 18.236 18.236 0 017.67 1.683l4.277 2.441v-4.427zm0-8.778V2.981l-7.4 1.524-7.35 1.328-7.035 1.277a23.976 23.976 0 01-5.306.62 16.834 16.834 0 01-4.517-.57 19.322 19.322 0 01-5.084-2.209 95.551 95.551 0 00-1.3-.712c-.285-.139-.571-.291-.846-.437h-.005a9.085 9.085 0 00-2.252-.954 7.331 7.331 0 00-1.918-.341H2.5v9c1.433-.237 2.593-.442 3.651-.647l7.517-1.345a19.656 19.656 0 012.63-.178 17.162 17.162 0 012.63.2 22.628 22.628 0 017.434 2.705 21.654 21.654 0 008.584 1.768h.006a20.746 20.746 0 003.173-.242l11.264-2.256v6.907zM2.5 2.98v-.472h2.95a14.929 14.929 0 00-2.949.473z\"/><path data-name=\"typo\" d=\"M59.352 45.091V32.36h2.074c4.307 0 6.668 2.266 6.668 6.382 0 4.212-2.265 6.349-6.7 6.349zm15.489-16.974v21.281h14.1v-4.307h-9.348v-4.85h9.253v-4.308h-9.253v-3.542h9.348v-4.275zm32.389 0l-7.757 21.282h5.041l2.3-6.477h6.509l2.265 6.477h5.138l-7.912-21.281zm2.807 4.4l-1.978 6.287h3.989zm63.051 6h-4.754v6.7a6.262 6.262 0 01-2.042.288c-3.638 0-6.317-2.84-6.317-6.7 0-4.147 2.84-6.923 7.051-6.923a11.142 11.142 0 016.062 1.851v-4.849a17.388 17.388 0 00-6.477-1.276c-6.891 0-11.677 4.626-11.677 11.262 0 6.54 4.689 10.976 11.677 10.976a19.329 19.329 0 006.477-1.117zm24.023.192c0-6.35-4.722-10.976-11.167-10.976a11.024 11.024 0 00.16 22.047c6.445.001 11.007-4.593 11.007-11.07zm-11.1-6.637c-3.573 0-5.966 2.713-5.966 6.7s2.456 6.7 6.062 6.7c3.573 0 5.934-2.681 5.934-6.7s-2.428-6.699-6.033-6.699zm12.94-3.956v21.281h4.85v-13.56l8.58 13.56h4.5V28.116h-4.849l.006 13.235-8.237-13.235zm-126.6-15h-4.754v6.7a6.266 6.266 0 01-2.042.287c-3.637 0-6.317-2.84-6.317-6.7 0-4.148 2.84-6.923 7.051-6.923a11.152 11.152 0 016.062 1.85V3.481a17.386 17.386 0 00-6.477-1.277c-6.891 0-11.677 4.626-11.677 11.263 0 6.54 4.69 10.974 11.677 10.974a19.342 19.342 0 006.477-1.116zm24 .191c0-6.349-4.722-10.975-11.167-10.975a11.023 11.023 0 00.159 22.046c6.437-.002 11-4.597 11-11.074zm-11.1-6.636c-3.573 0-5.966 2.711-5.966 6.7s2.457 6.7 6.062 6.7c3.573 0 5.935-2.68 5.935-6.7s-2.437-6.702-6.042-6.702zm12.695-3.956v21.281h8.806c4.69 0 7.433-2.33 7.433-6.318 0-2.743-1.563-4.721-4.435-5.551a4.665 4.665 0 002.9-4.371c.032-3.382-2.265-5.041-6.859-5.041zm7.083 7.944c2.074 0 2.9-.575 2.9-2.01 0-1.372-.8-1.882-3.062-1.882h-2.074v3.892zm.638 9c2.36 0 3.381-.734 3.381-2.457 0-1.786-1.053-2.489-3.573-2.489h-2.679v4.946zm14.274-16.942h-4.768v21.281h4.754zm2.07 0v21.281h14.1v-4.307h-9.349v-4.85h9.253v-4.307h-9.253V6.993h9.349V2.718zm75.145 10.592c0-6.349-4.722-10.975-11.167-10.975a11.023 11.023 0 00.16 22.046c6.435-.004 10.997-4.599 10.997-11.076zm-11.1-6.636c-3.573 0-5.966 2.711-5.966 6.7s2.456 6.7 6.062 6.7c3.573 0 5.934-2.68 5.934-6.7s-2.438-6.704-6.043-6.704zm-37.783 32.132l-2.01-6.287-1.978 6.287zM126.43 49.398v-8.743h.606c3.063 0 3.382.319 5.423 5.583a10.7 10.7 0 00.447 1.085l.415.989a9.523 9.523 0 00.51 1.085h6.911l2.3-6.477h6.509l2.265 6.477h5.137l-7.912-21.281h-5.583l-6.288 17.258a89.817 89.817 0 01-1.549-3.411c-.83-1.819-1.308-2.362-2.84-3a5.086 5.086 0 003.892-5.106c0-3.828-2.52-5.743-7.593-5.743h-7.53v21.281zm0-12.763h2.105c2.042 0 3.063-.734 3.063-2.265s-.926-2.2-3-2.2h-2.17zm16.613-12.643V15.25h.605c3.063 0 3.382.319 5.424 5.583a10.427 10.427 0 00.447 1.085l.415.989a9.465 9.465 0 00.51 1.085h9.578l.027-13.652 8.555 13.652h4.5V2.711h-4.849l.021 13.056-8.252-13.056h-4.851v19.812a44.3 44.3 0 01-2.942-5.962c-.829-1.818-1.307-2.36-2.839-3a5.085 5.085 0 003.892-5.1c0-3.829-2.521-5.743-7.594-5.743h-7.529v21.281zm0-12.762h2.106c2.041 0 3.062-.734 3.062-2.265s-.924-2.2-3-2.2h-2.169zM54.53 28.117v21.281h7.114c7.21 0 11.454-3.956 11.454-10.657 0-6.669-4.339-10.625-11.709-10.625z\" fill-rule=\"evenodd\"/></svg>\r\n <svg class=\"w-8 h-8 fill-current\" [ngClass]=\"{'sm:hidden': expandedLogo}\" viewBox=\"0 0 51.894 51.894\" width=\"32\" height=\"32\" aria-label=\"Gobierno de Arag\u00F3n\" role=\"img\"><title>Ir a la p\u00E1gina de inicio</title><path data-name=\"img\" d=\"M51.89 51.892H0V0h51.89zm-2.5-2.494v-8.96L38.906 42.33a17.743 17.743 0 01-3.136.278 18.211 18.211 0 01-9.225-2.517 21.42 21.42 0 00-9.317-2.082 20.786 20.786 0 00-4.9.571c-.743.15-1.526.292-2.282.429l-.125.023-.613.112-4.928.913-1.875.382V48.934l1.527-.247 22.517-4.133a17.458 17.458 0 013.236-.3 18.06 18.06 0 017.317 1.527l5.442 2.854a9.431 9.431 0 002.372.679 7.837 7.837 0 001.147.083h.029a16 16 0 003.3-.464zm0 0zm0-8.96V27.195a8.1 8.1 0 00-4.062-1.2 7.451 7.451 0 00-1.162.094l-10.852 2.009c-.026 0-2.878.518-4.281.779L17.12 31.048a18.266 18.266 0 01-2.5.173 18.246 18.246 0 01-7.67-1.683l-4.447-2.34V33.636l1.511-.281a19.009 19.009 0 014.442-.517 17.882 17.882 0 018.168 1.894 23.042 23.042 0 0010.673 2.617 23.64 23.64 0 002.884-.178l19.21-3.535zm0-13.243v-8.778l-1.341.282a19.092 19.092 0 01-4.442.516 17.873 17.873 0 01-8.169-1.894 23.049 23.049 0 00-10.672-2.618 23.464 23.464 0 00-2.884.179L2.5 18.417v6.538a7.558 7.558 0 003.968 1.128 9.406 9.406 0 001.426-.116l10.852-2.008c.027-.005 2.876-.518 4.28-.78l11.914-2.174a18.122 18.122 0 012.5-.173 18.236 18.236 0 017.67 1.683l4.277 2.441v-4.427zm0-8.778V2.981l-7.4 1.524-7.35 1.328-7.035 1.277a23.976 23.976 0 01-5.306.62 16.834 16.834 0 01-4.517-.57 19.322 19.322 0 01-5.084-2.209 95.551 95.551 0 00-1.3-.712c-.285-.139-.571-.291-.846-.437h-.005a9.085 9.085 0 00-2.252-.954 7.331 7.331 0 00-1.918-.341H2.5v9c1.433-.237 2.593-.442 3.651-.647l7.517-1.345a19.656 19.656 0 012.63-.178 17.162 17.162 0 012.63.2 22.628 22.628 0 017.434 2.705 21.654 21.654 0 008.584 1.768h.006a20.746 20.746 0 003.173-.242l11.264-2.256v6.907zM2.5 2.98v-.472h2.95a14.929 14.929 0 00-2.949.473z\"/></svg>\r\n </a>\r\n <a *ngIf=\"!homepageRouterLink && homepageUrl\" [href]=\"homepageUrl | externalHref\" class=\"text-white focus:outline-none focus:shadow-outline-warning\" title=\"Ir a la p\u00E1gina de inicio\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 216.878 51.894\" width=\"144\" height=\"32\" [ngClass]=\"{'sm:block': expandedLogo}\" class=\"fill-current hidden\" aria-label=\"Gobierno de Arag\u00F3n\" role=\"img\"><title>Ir a la p\u00E1gina de inicio</title><path data-name=\"img\" d=\"M51.89 51.892H0V0h51.89zm-2.5-2.494v-8.96L38.906 42.33a17.743 17.743 0 01-3.136.278 18.211 18.211 0 01-9.225-2.517 21.42 21.42 0 00-9.317-2.082 20.786 20.786 0 00-4.9.571c-.743.15-1.526.292-2.282.429l-.125.023-.613.112-4.928.913-1.875.382V48.934l1.527-.247 22.517-4.133a17.458 17.458 0 013.236-.3 18.06 18.06 0 017.317 1.527l5.442 2.854a9.431 9.431 0 002.372.679 7.837 7.837 0 001.147.083h.029a16 16 0 003.3-.464zm0 0zm0-8.96V27.195a8.1 8.1 0 00-4.062-1.2 7.451 7.451 0 00-1.162.094l-10.852 2.009c-.026 0-2.878.518-4.281.779L17.12 31.048a18.266 18.266 0 01-2.5.173 18.246 18.246 0 01-7.67-1.683l-4.447-2.34V33.636l1.511-.281a19.009 19.009 0 014.442-.517 17.882 17.882 0 018.168 1.894 23.042 23.042 0 0010.673 2.617 23.64 23.64 0 002.884-.178l19.21-3.535zm0-13.243v-8.778l-1.341.282a19.092 19.092 0 01-4.442.516 17.873 17.873 0 01-8.169-1.894 23.049 23.049 0 00-10.672-2.618 23.464 23.464 0 00-2.884.179L2.5 18.417v6.538a7.558 7.558 0 003.968 1.128 9.406 9.406 0 001.426-.116l10.852-2.008c.027-.005 2.876-.518 4.28-.78l11.914-2.174a18.122 18.122 0 012.5-.173 18.236 18.236 0 017.67 1.683l4.277 2.441v-4.427zm0-8.778V2.981l-7.4 1.524-7.35 1.328-7.035 1.277a23.976 23.976 0 01-5.306.62 16.834 16.834 0 01-4.517-.57 19.322 19.322 0 01-5.084-2.209 95.551 95.551 0 00-1.3-.712c-.285-.139-.571-.291-.846-.437h-.005a9.085 9.085 0 00-2.252-.954 7.331 7.331 0 00-1.918-.341H2.5v9c1.433-.237 2.593-.442 3.651-.647l7.517-1.345a19.656 19.656 0 012.63-.178 17.162 17.162 0 012.63.2 22.628 22.628 0 017.434 2.705 21.654 21.654 0 008.584 1.768h.006a20.746 20.746 0 003.173-.242l11.264-2.256v6.907zM2.5 2.98v-.472h2.95a14.929 14.929 0 00-2.949.473z\"/><path data-name=\"typo\" d=\"M59.352 45.091V32.36h2.074c4.307 0 6.668 2.266 6.668 6.382 0 4.212-2.265 6.349-6.7 6.349zm15.489-16.974v21.281h14.1v-4.307h-9.348v-4.85h9.253v-4.308h-9.253v-3.542h9.348v-4.275zm32.389 0l-7.757 21.282h5.041l2.3-6.477h6.509l2.265 6.477h5.138l-7.912-21.281zm2.807 4.4l-1.978 6.287h3.989zm63.051 6h-4.754v6.7a6.262 6.262 0 01-2.042.288c-3.638 0-6.317-2.84-6.317-6.7 0-4.147 2.84-6.923 7.051-6.923a11.142 11.142 0 016.062 1.851v-4.849a17.388 17.388 0 00-6.477-1.276c-6.891 0-11.677 4.626-11.677 11.262 0 6.54 4.689 10.976 11.677 10.976a19.329 19.329 0 006.477-1.117zm24.023.192c0-6.35-4.722-10.976-11.167-10.976a11.024 11.024 0 00.16 22.047c6.445.001 11.007-4.593 11.007-11.07zm-11.1-6.637c-3.573 0-5.966 2.713-5.966 6.7s2.456 6.7 6.062 6.7c3.573 0 5.934-2.681 5.934-6.7s-2.428-6.699-6.033-6.699zm12.94-3.956v21.281h4.85v-13.56l8.58 13.56h4.5V28.116h-4.849l.006 13.235-8.237-13.235zm-126.6-15h-4.754v6.7a6.266 6.266 0 01-2.042.287c-3.637 0-6.317-2.84-6.317-6.7 0-4.148 2.84-6.923 7.051-6.923a11.152 11.152 0 016.062 1.85V3.481a17.386 17.386 0 00-6.477-1.277c-6.891 0-11.677 4.626-11.677 11.263 0 6.54 4.69 10.974 11.677 10.974a19.342 19.342 0 006.477-1.116zm24 .191c0-6.349-4.722-10.975-11.167-10.975a11.023 11.023 0 00.159 22.046c6.437-.002 11-4.597 11-11.074zm-11.1-6.636c-3.573 0-5.966 2.711-5.966 6.7s2.457 6.7 6.062 6.7c3.573 0 5.935-2.68 5.935-6.7s-2.437-6.702-6.042-6.702zm12.695-3.956v21.281h8.806c4.69 0 7.433-2.33 7.433-6.318 0-2.743-1.563-4.721-4.435-5.551a4.665 4.665 0 002.9-4.371c.032-3.382-2.265-5.041-6.859-5.041zm7.083 7.944c2.074 0 2.9-.575 2.9-2.01 0-1.372-.8-1.882-3.062-1.882h-2.074v3.892zm.638 9c2.36 0 3.381-.734 3.381-2.457 0-1.786-1.053-2.489-3.573-2.489h-2.679v4.946zm14.274-16.942h-4.768v21.281h4.754zm2.07 0v21.281h14.1v-4.307h-9.349v-4.85h9.253v-4.307h-9.253V6.993h9.349V2.718zm75.145 10.592c0-6.349-4.722-10.975-11.167-10.975a11.023 11.023 0 00.16 22.046c6.435-.004 10.997-4.599 10.997-11.076zm-11.1-6.636c-3.573 0-5.966 2.711-5.966 6.7s2.456 6.7 6.062 6.7c3.573 0 5.934-2.68 5.934-6.7s-2.438-6.704-6.043-6.704zm-37.783 32.132l-2.01-6.287-1.978 6.287zM126.43 49.398v-8.743h.606c3.063 0 3.382.319 5.423 5.583a10.7 10.7 0 00.447 1.085l.415.989a9.523 9.523 0 00.51 1.085h6.911l2.3-6.477h6.509l2.265 6.477h5.137l-7.912-21.281h-5.583l-6.288 17.258a89.817 89.817 0 01-1.549-3.411c-.83-1.819-1.308-2.362-2.84-3a5.086 5.086 0 003.892-5.106c0-3.828-2.52-5.743-7.593-5.743h-7.53v21.281zm0-12.763h2.105c2.042 0 3.063-.734 3.063-2.265s-.926-2.2-3-2.2h-2.17zm16.613-12.643V15.25h.605c3.063 0 3.382.319 5.424 5.583a10.427 10.427 0 00.447 1.085l.415.989a9.465 9.465 0 00.51 1.085h9.578l.027-13.652 8.555 13.652h4.5V2.711h-4.849l.021 13.056-8.252-13.056h-4.851v19.812a44.3 44.3 0 01-2.942-5.962c-.829-1.818-1.307-2.36-2.839-3a5.085 5.085 0 003.892-5.1c0-3.829-2.521-5.743-7.594-5.743h-7.529v21.281zm0-12.762h2.106c2.041 0 3.062-.734 3.062-2.265s-.924-2.2-3-2.2h-2.169zM54.53 28.117v21.281h7.114c7.21 0 11.454-3.956 11.454-10.657 0-6.669-4.339-10.625-11.709-10.625z\" fill-rule=\"evenodd\"/></svg>\r\n <svg class=\"w-8 h-8 fill-current\" [ngClass]=\"{'sm:hidden': expandedLogo}\" viewBox=\"0 0 51.894 51.894\" width=\"32\" height=\"32\" aria-label=\"Gobierno de Arag\u00F3n\" role=\"img\"><title>Ir a la p\u00E1gina de inicio</title><path data-name=\"img\" d=\"M51.89 51.892H0V0h51.89zm-2.5-2.494v-8.96L38.906 42.33a17.743 17.743 0 01-3.136.278 18.211 18.211 0 01-9.225-2.517 21.42 21.42 0 00-9.317-2.082 20.786 20.786 0 00-4.9.571c-.743.15-1.526.292-2.282.429l-.125.023-.613.112-4.928.913-1.875.382V48.934l1.527-.247 22.517-4.133a17.458 17.458 0 013.236-.3 18.06 18.06 0 017.317 1.527l5.442 2.854a9.431 9.431 0 002.372.679 7.837 7.837 0 001.147.083h.029a16 16 0 003.3-.464zm0 0zm0-8.96V27.195a8.1 8.1 0 00-4.062-1.2 7.451 7.451 0 00-1.162.094l-10.852 2.009c-.026 0-2.878.518-4.281.779L17.12 31.048a18.266 18.266 0 01-2.5.173 18.246 18.246 0 01-7.67-1.683l-4.447-2.34V33.636l1.511-.281a19.009 19.009 0 014.442-.517 17.882 17.882 0 018.168 1.894 23.042 23.042 0 0010.673 2.617 23.64 23.64 0 002.884-.178l19.21-3.535zm0-13.243v-8.778l-1.341.282a19.092 19.092 0 01-4.442.516 17.873 17.873 0 01-8.169-1.894 23.049 23.049 0 00-10.672-2.618 23.464 23.464 0 00-2.884.179L2.5 18.417v6.538a7.558 7.558 0 003.968 1.128 9.406 9.406 0 001.426-.116l10.852-2.008c.027-.005 2.876-.518 4.28-.78l11.914-2.174a18.122 18.122 0 012.5-.173 18.236 18.236 0 017.67 1.683l4.277 2.441v-4.427zm0-8.778V2.981l-7.4 1.524-7.35 1.328-7.035 1.277a23.976 23.976 0 01-5.306.62 16.834 16.834 0 01-4.517-.57 19.322 19.322 0 01-5.084-2.209 95.551 95.551 0 00-1.3-.712c-.285-.139-.571-.291-.846-.437h-.005a9.085 9.085 0 00-2.252-.954 7.331 7.331 0 00-1.918-.341H2.5v9c1.433-.237 2.593-.442 3.651-.647l7.517-1.345a19.656 19.656 0 012.63-.178 17.162 17.162 0 012.63.2 22.628 22.628 0 017.434 2.705 21.654 21.654 0 008.584 1.768h.006a20.746 20.746 0 003.173-.242l11.264-2.256v6.907zM2.5 2.98v-.472h2.95a14.929 14.929 0 00-2.949.473z\"/></svg>\r\n </a>\r\n\r\n <ng-content select=\"desy-header-subnav\"></ng-content>\r\n <desy-header-subnav *ngIf=\"!subnavComponent && subnavData && (subnavData.text || subnavData.html)\" [classes]=\"subnavData.classes\">\r\n <ng-container *desyCustomInnerContent=\"{ html: subnavData.html, text: subnavData.text }\"></ng-container>\r\n <desy-nav *ngIf=\"subnavData && subnavData.items && subnavData.items.length > 0\"\r\n [hasNav]=\"true\"\r\n [idPrefix]=\"'header-subnav-nav-item'\"\r\n [classes]=\"'w-max max-w-64'\"\r\n [items]=\"subnavData.items\"\r\n [id]=\"'id-subnav-nav'\"\r\n [ariaLabel]=\"'Aplicaciones'\"></desy-nav>\r\n </desy-header-subnav>\r\n </div>\r\n\r\n <ng-content select=\"desy-header-navigation\"></ng-content>\r\n <desy-header-navigation *ngIf=\"!navigationComponent && navigationData && navigationData.items && navigationData.items.length > 0\"\r\n [idPrefix]=\"'header-nav-item'\"\r\n [classes]=\"navigationData.classes\"\r\n [items]=\"navigationData.items\"\r\n [ariaLabel]=\"'Men\u00FA principal'\"></desy-header-navigation>\r\n </div>\r\n\r\n <ng-content select=\"desy-header-dropdown\"></ng-content>\r\n <ng-container *ngIf=\"!dropdownComponent && dropdownData && dropdownData.items && dropdownData.items.length > 0\">\r\n <desy-header-dropdown [classes]=\"dropdownData.classes\">\r\n <ng-container *desyCustomInnerContent=\"{ html: dropdownData.html, text: dropdownData.text }\"></ng-container>\r\n <desy-nav [hasNav]=\"true\"\r\n [idPrefix]=\"'header-dropdown-nav-item'\"\r\n [classes]=\"'w-max max-w-64'\"\r\n [items]=\"dropdownData.items\"\r\n [id]=\"'id-dropdown-nav'\"\r\n [ariaLabel]=\"'Men\u00FA de usuario'\"></desy-nav>\r\n </desy-header-dropdown>\r\n </ng-container>\r\n\r\n <ng-content select=\"desy-header-offcanvas\"></ng-content>\r\n <ng-container *ngIf=\"!offcanvasComponent && offcanvasData\">\r\n <desy-header-offcanvas [classes]=\"offcanvasData.classes\">\r\n <desy-header-offcanvas-button>\r\n <ng-container *desyCustomInnerContent=\"{ html: offcanvasData.html, text: offcanvasData.text }\"></ng-container>\r\n </desy-header-offcanvas-button>\r\n <desy-header-offcanvas-close-button>{{ offcanvasData.textClose }}</desy-header-offcanvas-close-button>\r\n <desy-content>\r\n <ng-container *desyCustomInnerContent=\"{ template: offcanvasData.contentHtml }\"></ng-container>\r\n </desy-content>\r\n </desy-header-offcanvas>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n"
5679
+ template: "<header [ngClass]=\"classes\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <div [ngClass]=\"containerClasses\">\r\n <nav [attr.aria-labelledby]=\"skiplinkComponent ? skiplinkComponent.id : 'skip-link'\">\r\n <ng-content select=\"desy-skip-link\"></ng-content>\r\n <desy-skip-link *ngIf=\"!skiplinkComponent\" text=\"Saltar al contenido principal\" [id]=\"'skip-link'\"></desy-skip-link>\r\n </nav>\r\n <div class=\"flex h-1 bg-red-700\">\r\n <div class=\"flex-auto bg-yellow-300 h-full\"></div>\r\n <div class=\"flex-auto bg-red-500 h-full\"></div>\r\n <div class=\"flex-auto bg-red-800 h-full\"></div>\r\n </div>\r\n <div class=\"bg-black\">\r\n <div class=\"container mx-auto px-base\">\r\n <div class=\"flex items-center justify-between min-h-14\">\r\n <div class=\"flex flex-wrap items-center\">\r\n <div class=\"flex items-center flex-shrink-0\">\r\n <a *ngIf=\"homepageRouterLink || !homepageUrl\" [routerLink]=\"homepageRouterLink\" [fragment]=\"homepageFragment\" class=\"text-white focus:outline-none focus:shadow-outline-warning\" title=\"Ir a la p\u00E1gina de inicio\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 216.878 51.894\" width=\"144\" height=\"32\" [ngClass]=\"{'sm:block': expandedLogo}\" class=\"fill-current hidden\" aria-label=\"Gobierno de Arag\u00F3n\" role=\"img\"><title>Ir a la p\u00E1gina de inicio</title><path data-name=\"img\" d=\"M51.89 51.892H0V0h51.89zm-2.5-2.494v-8.96L38.906 42.33a17.743 17.743 0 01-3.136.278 18.211 18.211 0 01-9.225-2.517 21.42 21.42 0 00-9.317-2.082 20.786 20.786 0 00-4.9.571c-.743.15-1.526.292-2.282.429l-.125.023-.613.112-4.928.913-1.875.382V48.934l1.527-.247 22.517-4.133a17.458 17.458 0 013.236-.3 18.06 18.06 0 017.317 1.527l5.442 2.854a9.431 9.431 0 002.372.679 7.837 7.837 0 001.147.083h.029a16 16 0 003.3-.464zm0 0zm0-8.96V27.195a8.1 8.1 0 00-4.062-1.2 7.451 7.451 0 00-1.162.094l-10.852 2.009c-.026 0-2.878.518-4.281.779L17.12 31.048a18.266 18.266 0 01-2.5.173 18.246 18.246 0 01-7.67-1.683l-4.447-2.34V33.636l1.511-.281a19.009 19.009 0 014.442-.517 17.882 17.882 0 018.168 1.894 23.042 23.042 0 0010.673 2.617 23.64 23.64 0 002.884-.178l19.21-3.535zm0-13.243v-8.778l-1.341.282a19.092 19.092 0 01-4.442.516 17.873 17.873 0 01-8.169-1.894 23.049 23.049 0 00-10.672-2.618 23.464 23.464 0 00-2.884.179L2.5 18.417v6.538a7.558 7.558 0 003.968 1.128 9.406 9.406 0 001.426-.116l10.852-2.008c.027-.005 2.876-.518 4.28-.78l11.914-2.174a18.122 18.122 0 012.5-.173 18.236 18.236 0 017.67 1.683l4.277 2.441v-4.427zm0-8.778V2.981l-7.4 1.524-7.35 1.328-7.035 1.277a23.976 23.976 0 01-5.306.62 16.834 16.834 0 01-4.517-.57 19.322 19.322 0 01-5.084-2.209 95.551 95.551 0 00-1.3-.712c-.285-.139-.571-.291-.846-.437h-.005a9.085 9.085 0 00-2.252-.954 7.331 7.331 0 00-1.918-.341H2.5v9c1.433-.237 2.593-.442 3.651-.647l7.517-1.345a19.656 19.656 0 012.63-.178 17.162 17.162 0 012.63.2 22.628 22.628 0 017.434 2.705 21.654 21.654 0 008.584 1.768h.006a20.746 20.746 0 003.173-.242l11.264-2.256v6.907zM2.5 2.98v-.472h2.95a14.929 14.929 0 00-2.949.473z\"/><path data-name=\"typo\" d=\"M59.352 45.091V32.36h2.074c4.307 0 6.668 2.266 6.668 6.382 0 4.212-2.265 6.349-6.7 6.349zm15.489-16.974v21.281h14.1v-4.307h-9.348v-4.85h9.253v-4.308h-9.253v-3.542h9.348v-4.275zm32.389 0l-7.757 21.282h5.041l2.3-6.477h6.509l2.265 6.477h5.138l-7.912-21.281zm2.807 4.4l-1.978 6.287h3.989zm63.051 6h-4.754v6.7a6.262 6.262 0 01-2.042.288c-3.638 0-6.317-2.84-6.317-6.7 0-4.147 2.84-6.923 7.051-6.923a11.142 11.142 0 016.062 1.851v-4.849a17.388 17.388 0 00-6.477-1.276c-6.891 0-11.677 4.626-11.677 11.262 0 6.54 4.689 10.976 11.677 10.976a19.329 19.329 0 006.477-1.117zm24.023.192c0-6.35-4.722-10.976-11.167-10.976a11.024 11.024 0 00.16 22.047c6.445.001 11.007-4.593 11.007-11.07zm-11.1-6.637c-3.573 0-5.966 2.713-5.966 6.7s2.456 6.7 6.062 6.7c3.573 0 5.934-2.681 5.934-6.7s-2.428-6.699-6.033-6.699zm12.94-3.956v21.281h4.85v-13.56l8.58 13.56h4.5V28.116h-4.849l.006 13.235-8.237-13.235zm-126.6-15h-4.754v6.7a6.266 6.266 0 01-2.042.287c-3.637 0-6.317-2.84-6.317-6.7 0-4.148 2.84-6.923 7.051-6.923a11.152 11.152 0 016.062 1.85V3.481a17.386 17.386 0 00-6.477-1.277c-6.891 0-11.677 4.626-11.677 11.263 0 6.54 4.69 10.974 11.677 10.974a19.342 19.342 0 006.477-1.116zm24 .191c0-6.349-4.722-10.975-11.167-10.975a11.023 11.023 0 00.159 22.046c6.437-.002 11-4.597 11-11.074zm-11.1-6.636c-3.573 0-5.966 2.711-5.966 6.7s2.457 6.7 6.062 6.7c3.573 0 5.935-2.68 5.935-6.7s-2.437-6.702-6.042-6.702zm12.695-3.956v21.281h8.806c4.69 0 7.433-2.33 7.433-6.318 0-2.743-1.563-4.721-4.435-5.551a4.665 4.665 0 002.9-4.371c.032-3.382-2.265-5.041-6.859-5.041zm7.083 7.944c2.074 0 2.9-.575 2.9-2.01 0-1.372-.8-1.882-3.062-1.882h-2.074v3.892zm.638 9c2.36 0 3.381-.734 3.381-2.457 0-1.786-1.053-2.489-3.573-2.489h-2.679v4.946zm14.274-16.942h-4.768v21.281h4.754zm2.07 0v21.281h14.1v-4.307h-9.349v-4.85h9.253v-4.307h-9.253V6.993h9.349V2.718zm75.145 10.592c0-6.349-4.722-10.975-11.167-10.975a11.023 11.023 0 00.16 22.046c6.435-.004 10.997-4.599 10.997-11.076zm-11.1-6.636c-3.573 0-5.966 2.711-5.966 6.7s2.456 6.7 6.062 6.7c3.573 0 5.934-2.68 5.934-6.7s-2.438-6.704-6.043-6.704zm-37.783 32.132l-2.01-6.287-1.978 6.287zM126.43 49.398v-8.743h.606c3.063 0 3.382.319 5.423 5.583a10.7 10.7 0 00.447 1.085l.415.989a9.523 9.523 0 00.51 1.085h6.911l2.3-6.477h6.509l2.265 6.477h5.137l-7.912-21.281h-5.583l-6.288 17.258a89.817 89.817 0 01-1.549-3.411c-.83-1.819-1.308-2.362-2.84-3a5.086 5.086 0 003.892-5.106c0-3.828-2.52-5.743-7.593-5.743h-7.53v21.281zm0-12.763h2.105c2.042 0 3.063-.734 3.063-2.265s-.926-2.2-3-2.2h-2.17zm16.613-12.643V15.25h.605c3.063 0 3.382.319 5.424 5.583a10.427 10.427 0 00.447 1.085l.415.989a9.465 9.465 0 00.51 1.085h9.578l.027-13.652 8.555 13.652h4.5V2.711h-4.849l.021 13.056-8.252-13.056h-4.851v19.812a44.3 44.3 0 01-2.942-5.962c-.829-1.818-1.307-2.36-2.839-3a5.085 5.085 0 003.892-5.1c0-3.829-2.521-5.743-7.594-5.743h-7.529v21.281zm0-12.762h2.106c2.041 0 3.062-.734 3.062-2.265s-.924-2.2-3-2.2h-2.169zM54.53 28.117v21.281h7.114c7.21 0 11.454-3.956 11.454-10.657 0-6.669-4.339-10.625-11.709-10.625z\" fill-rule=\"evenodd\"/></svg>\r\n <svg class=\"w-8 h-8 fill-current\" [ngClass]=\"{'sm:hidden': expandedLogo}\" viewBox=\"0 0 51.894 51.894\" width=\"32\" height=\"32\" aria-label=\"Gobierno de Arag\u00F3n\" role=\"img\"><title>Ir a la p\u00E1gina de inicio</title><path data-name=\"img\" d=\"M51.89 51.892H0V0h51.89zm-2.5-2.494v-8.96L38.906 42.33a17.743 17.743 0 01-3.136.278 18.211 18.211 0 01-9.225-2.517 21.42 21.42 0 00-9.317-2.082 20.786 20.786 0 00-4.9.571c-.743.15-1.526.292-2.282.429l-.125.023-.613.112-4.928.913-1.875.382V48.934l1.527-.247 22.517-4.133a17.458 17.458 0 013.236-.3 18.06 18.06 0 017.317 1.527l5.442 2.854a9.431 9.431 0 002.372.679 7.837 7.837 0 001.147.083h.029a16 16 0 003.3-.464zm0 0zm0-8.96V27.195a8.1 8.1 0 00-4.062-1.2 7.451 7.451 0 00-1.162.094l-10.852 2.009c-.026 0-2.878.518-4.281.779L17.12 31.048a18.266 18.266 0 01-2.5.173 18.246 18.246 0 01-7.67-1.683l-4.447-2.34V33.636l1.511-.281a19.009 19.009 0 014.442-.517 17.882 17.882 0 018.168 1.894 23.042 23.042 0 0010.673 2.617 23.64 23.64 0 002.884-.178l19.21-3.535zm0-13.243v-8.778l-1.341.282a19.092 19.092 0 01-4.442.516 17.873 17.873 0 01-8.169-1.894 23.049 23.049 0 00-10.672-2.618 23.464 23.464 0 00-2.884.179L2.5 18.417v6.538a7.558 7.558 0 003.968 1.128 9.406 9.406 0 001.426-.116l10.852-2.008c.027-.005 2.876-.518 4.28-.78l11.914-2.174a18.122 18.122 0 012.5-.173 18.236 18.236 0 017.67 1.683l4.277 2.441v-4.427zm0-8.778V2.981l-7.4 1.524-7.35 1.328-7.035 1.277a23.976 23.976 0 01-5.306.62 16.834 16.834 0 01-4.517-.57 19.322 19.322 0 01-5.084-2.209 95.551 95.551 0 00-1.3-.712c-.285-.139-.571-.291-.846-.437h-.005a9.085 9.085 0 00-2.252-.954 7.331 7.331 0 00-1.918-.341H2.5v9c1.433-.237 2.593-.442 3.651-.647l7.517-1.345a19.656 19.656 0 012.63-.178 17.162 17.162 0 012.63.2 22.628 22.628 0 017.434 2.705 21.654 21.654 0 008.584 1.768h.006a20.746 20.746 0 003.173-.242l11.264-2.256v6.907zM2.5 2.98v-.472h2.95a14.929 14.929 0 00-2.949.473z\"/></svg>\r\n </a>\r\n <a *ngIf=\"!homepageRouterLink && homepageUrl\" [href]=\"homepageUrl | externalHref\" class=\"text-white focus:outline-none focus:shadow-outline-warning\" title=\"Ir a la p\u00E1gina de inicio\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 216.878 51.894\" width=\"144\" height=\"32\" [ngClass]=\"{'sm:block': expandedLogo}\" class=\"fill-current hidden\" aria-label=\"Gobierno de Arag\u00F3n\" role=\"img\"><title>Ir a la p\u00E1gina de inicio</title><path data-name=\"img\" d=\"M51.89 51.892H0V0h51.89zm-2.5-2.494v-8.96L38.906 42.33a17.743 17.743 0 01-3.136.278 18.211 18.211 0 01-9.225-2.517 21.42 21.42 0 00-9.317-2.082 20.786 20.786 0 00-4.9.571c-.743.15-1.526.292-2.282.429l-.125.023-.613.112-4.928.913-1.875.382V48.934l1.527-.247 22.517-4.133a17.458 17.458 0 013.236-.3 18.06 18.06 0 017.317 1.527l5.442 2.854a9.431 9.431 0 002.372.679 7.837 7.837 0 001.147.083h.029a16 16 0 003.3-.464zm0 0zm0-8.96V27.195a8.1 8.1 0 00-4.062-1.2 7.451 7.451 0 00-1.162.094l-10.852 2.009c-.026 0-2.878.518-4.281.779L17.12 31.048a18.266 18.266 0 01-2.5.173 18.246 18.246 0 01-7.67-1.683l-4.447-2.34V33.636l1.511-.281a19.009 19.009 0 014.442-.517 17.882 17.882 0 018.168 1.894 23.042 23.042 0 0010.673 2.617 23.64 23.64 0 002.884-.178l19.21-3.535zm0-13.243v-8.778l-1.341.282a19.092 19.092 0 01-4.442.516 17.873 17.873 0 01-8.169-1.894 23.049 23.049 0 00-10.672-2.618 23.464 23.464 0 00-2.884.179L2.5 18.417v6.538a7.558 7.558 0 003.968 1.128 9.406 9.406 0 001.426-.116l10.852-2.008c.027-.005 2.876-.518 4.28-.78l11.914-2.174a18.122 18.122 0 012.5-.173 18.236 18.236 0 017.67 1.683l4.277 2.441v-4.427zm0-8.778V2.981l-7.4 1.524-7.35 1.328-7.035 1.277a23.976 23.976 0 01-5.306.62 16.834 16.834 0 01-4.517-.57 19.322 19.322 0 01-5.084-2.209 95.551 95.551 0 00-1.3-.712c-.285-.139-.571-.291-.846-.437h-.005a9.085 9.085 0 00-2.252-.954 7.331 7.331 0 00-1.918-.341H2.5v9c1.433-.237 2.593-.442 3.651-.647l7.517-1.345a19.656 19.656 0 012.63-.178 17.162 17.162 0 012.63.2 22.628 22.628 0 017.434 2.705 21.654 21.654 0 008.584 1.768h.006a20.746 20.746 0 003.173-.242l11.264-2.256v6.907zM2.5 2.98v-.472h2.95a14.929 14.929 0 00-2.949.473z\"/><path data-name=\"typo\" d=\"M59.352 45.091V32.36h2.074c4.307 0 6.668 2.266 6.668 6.382 0 4.212-2.265 6.349-6.7 6.349zm15.489-16.974v21.281h14.1v-4.307h-9.348v-4.85h9.253v-4.308h-9.253v-3.542h9.348v-4.275zm32.389 0l-7.757 21.282h5.041l2.3-6.477h6.509l2.265 6.477h5.138l-7.912-21.281zm2.807 4.4l-1.978 6.287h3.989zm63.051 6h-4.754v6.7a6.262 6.262 0 01-2.042.288c-3.638 0-6.317-2.84-6.317-6.7 0-4.147 2.84-6.923 7.051-6.923a11.142 11.142 0 016.062 1.851v-4.849a17.388 17.388 0 00-6.477-1.276c-6.891 0-11.677 4.626-11.677 11.262 0 6.54 4.689 10.976 11.677 10.976a19.329 19.329 0 006.477-1.117zm24.023.192c0-6.35-4.722-10.976-11.167-10.976a11.024 11.024 0 00.16 22.047c6.445.001 11.007-4.593 11.007-11.07zm-11.1-6.637c-3.573 0-5.966 2.713-5.966 6.7s2.456 6.7 6.062 6.7c3.573 0 5.934-2.681 5.934-6.7s-2.428-6.699-6.033-6.699zm12.94-3.956v21.281h4.85v-13.56l8.58 13.56h4.5V28.116h-4.849l.006 13.235-8.237-13.235zm-126.6-15h-4.754v6.7a6.266 6.266 0 01-2.042.287c-3.637 0-6.317-2.84-6.317-6.7 0-4.148 2.84-6.923 7.051-6.923a11.152 11.152 0 016.062 1.85V3.481a17.386 17.386 0 00-6.477-1.277c-6.891 0-11.677 4.626-11.677 11.263 0 6.54 4.69 10.974 11.677 10.974a19.342 19.342 0 006.477-1.116zm24 .191c0-6.349-4.722-10.975-11.167-10.975a11.023 11.023 0 00.159 22.046c6.437-.002 11-4.597 11-11.074zm-11.1-6.636c-3.573 0-5.966 2.711-5.966 6.7s2.457 6.7 6.062 6.7c3.573 0 5.935-2.68 5.935-6.7s-2.437-6.702-6.042-6.702zm12.695-3.956v21.281h8.806c4.69 0 7.433-2.33 7.433-6.318 0-2.743-1.563-4.721-4.435-5.551a4.665 4.665 0 002.9-4.371c.032-3.382-2.265-5.041-6.859-5.041zm7.083 7.944c2.074 0 2.9-.575 2.9-2.01 0-1.372-.8-1.882-3.062-1.882h-2.074v3.892zm.638 9c2.36 0 3.381-.734 3.381-2.457 0-1.786-1.053-2.489-3.573-2.489h-2.679v4.946zm14.274-16.942h-4.768v21.281h4.754zm2.07 0v21.281h14.1v-4.307h-9.349v-4.85h9.253v-4.307h-9.253V6.993h9.349V2.718zm75.145 10.592c0-6.349-4.722-10.975-11.167-10.975a11.023 11.023 0 00.16 22.046c6.435-.004 10.997-4.599 10.997-11.076zm-11.1-6.636c-3.573 0-5.966 2.711-5.966 6.7s2.456 6.7 6.062 6.7c3.573 0 5.934-2.68 5.934-6.7s-2.438-6.704-6.043-6.704zm-37.783 32.132l-2.01-6.287-1.978 6.287zM126.43 49.398v-8.743h.606c3.063 0 3.382.319 5.423 5.583a10.7 10.7 0 00.447 1.085l.415.989a9.523 9.523 0 00.51 1.085h6.911l2.3-6.477h6.509l2.265 6.477h5.137l-7.912-21.281h-5.583l-6.288 17.258a89.817 89.817 0 01-1.549-3.411c-.83-1.819-1.308-2.362-2.84-3a5.086 5.086 0 003.892-5.106c0-3.828-2.52-5.743-7.593-5.743h-7.53v21.281zm0-12.763h2.105c2.042 0 3.063-.734 3.063-2.265s-.926-2.2-3-2.2h-2.17zm16.613-12.643V15.25h.605c3.063 0 3.382.319 5.424 5.583a10.427 10.427 0 00.447 1.085l.415.989a9.465 9.465 0 00.51 1.085h9.578l.027-13.652 8.555 13.652h4.5V2.711h-4.849l.021 13.056-8.252-13.056h-4.851v19.812a44.3 44.3 0 01-2.942-5.962c-.829-1.818-1.307-2.36-2.839-3a5.085 5.085 0 003.892-5.1c0-3.829-2.521-5.743-7.594-5.743h-7.529v21.281zm0-12.762h2.106c2.041 0 3.062-.734 3.062-2.265s-.924-2.2-3-2.2h-2.169zM54.53 28.117v21.281h7.114c7.21 0 11.454-3.956 11.454-10.657 0-6.669-4.339-10.625-11.709-10.625z\" fill-rule=\"evenodd\"/></svg>\r\n <svg class=\"w-8 h-8 fill-current\" [ngClass]=\"{'sm:hidden': expandedLogo}\" viewBox=\"0 0 51.894 51.894\" width=\"32\" height=\"32\" aria-label=\"Gobierno de Arag\u00F3n\" role=\"img\"><title>Ir a la p\u00E1gina de inicio</title><path data-name=\"img\" d=\"M51.89 51.892H0V0h51.89zm-2.5-2.494v-8.96L38.906 42.33a17.743 17.743 0 01-3.136.278 18.211 18.211 0 01-9.225-2.517 21.42 21.42 0 00-9.317-2.082 20.786 20.786 0 00-4.9.571c-.743.15-1.526.292-2.282.429l-.125.023-.613.112-4.928.913-1.875.382V48.934l1.527-.247 22.517-4.133a17.458 17.458 0 013.236-.3 18.06 18.06 0 017.317 1.527l5.442 2.854a9.431 9.431 0 002.372.679 7.837 7.837 0 001.147.083h.029a16 16 0 003.3-.464zm0 0zm0-8.96V27.195a8.1 8.1 0 00-4.062-1.2 7.451 7.451 0 00-1.162.094l-10.852 2.009c-.026 0-2.878.518-4.281.779L17.12 31.048a18.266 18.266 0 01-2.5.173 18.246 18.246 0 01-7.67-1.683l-4.447-2.34V33.636l1.511-.281a19.009 19.009 0 014.442-.517 17.882 17.882 0 018.168 1.894 23.042 23.042 0 0010.673 2.617 23.64 23.64 0 002.884-.178l19.21-3.535zm0-13.243v-8.778l-1.341.282a19.092 19.092 0 01-4.442.516 17.873 17.873 0 01-8.169-1.894 23.049 23.049 0 00-10.672-2.618 23.464 23.464 0 00-2.884.179L2.5 18.417v6.538a7.558 7.558 0 003.968 1.128 9.406 9.406 0 001.426-.116l10.852-2.008c.027-.005 2.876-.518 4.28-.78l11.914-2.174a18.122 18.122 0 012.5-.173 18.236 18.236 0 017.67 1.683l4.277 2.441v-4.427zm0-8.778V2.981l-7.4 1.524-7.35 1.328-7.035 1.277a23.976 23.976 0 01-5.306.62 16.834 16.834 0 01-4.517-.57 19.322 19.322 0 01-5.084-2.209 95.551 95.551 0 00-1.3-.712c-.285-.139-.571-.291-.846-.437h-.005a9.085 9.085 0 00-2.252-.954 7.331 7.331 0 00-1.918-.341H2.5v9c1.433-.237 2.593-.442 3.651-.647l7.517-1.345a19.656 19.656 0 012.63-.178 17.162 17.162 0 012.63.2 22.628 22.628 0 017.434 2.705 21.654 21.654 0 008.584 1.768h.006a20.746 20.746 0 003.173-.242l11.264-2.256v6.907zM2.5 2.98v-.472h2.95a14.929 14.929 0 00-2.949.473z\"/></svg>\r\n </a>\r\n\r\n <ng-content select=\"desy-header-subnav\"></ng-content>\r\n <desy-header-subnav *ngIf=\"!subnavComponent && subnavData && (subnavData.text || subnavData.html)\"\r\n [classes]=\"subnavData.classes\"\r\n [hiddenText]=\"subnavData.hiddenText\"\r\n [classesContainer]=\"subnavData.classesContainer\"\r\n [classesTooltip]=\"subnavData.classesTooltip\"\r\n [role]=\"subnavData.role\"\r\n [ariaLabel]=\"subnavData.ariaLabel\"\r\n [ariaDescribedBy]=\"subnavData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"subnavData.ariaLabelledBy\"\r\n [ariaHidden]=\"subnavData.ariaHidden\"\r\n [ariaDisabled]=\"subnavData.ariaDisabled\"\r\n [ariaControls]=\"subnavData.ariaControls\"\r\n [ariaCurrent]=\"subnavData.ariaCurrent\"\r\n [ariaLive]=\"subnavData.ariaLive\"\r\n [ariaExpanded]=\"subnavData.ariaExpanded\"\r\n [ariaErrorMessage]=\"subnavData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"subnavData.ariaHasPopup\"\r\n [tabindex]=\"subnavData.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ html: subnavData.html, text: subnavData.text }\"></ng-container>\r\n <desy-nav *ngIf=\"subnavData && subnavData.items && subnavData.items.length > 0\"\r\n [hasNav]=\"true\"\r\n [idPrefix]=\"'header-subnav-nav-item'\"\r\n [classes]=\"'w-max max-w-64'\"\r\n [items]=\"subnavData.items\"\r\n [id]=\"'id-subnav-nav'\"\r\n [ariaLabel]=\"'Aplicaciones'\"></desy-nav>\r\n </desy-header-subnav>\r\n </div>\r\n\r\n <ng-content select=\"desy-header-navigation\"></ng-content>\r\n <desy-header-navigation *ngIf=\"!navigationComponent && navigationData && navigationData.items && navigationData.items.length > 0\"\r\n [idPrefix]=\"'header-nav-item'\"\r\n [classes]=\"navigationData.classes\"\r\n [items]=\"navigationData.items\"\r\n [ariaLabel]=\"'Men\u00FA principal'\"></desy-header-navigation>\r\n </div>\r\n\r\n <ng-content select=\"desy-header-dropdown\"></ng-content>\r\n <ng-container *ngIf=\"!dropdownComponent && dropdownData && dropdownData.items && dropdownData.items.length > 0\">\r\n <desy-header-dropdown [classes]=\"dropdownData.classes\"\r\n [hiddenText]=\"dropdownData.hiddenText\"\r\n [classesContainer]=\"dropdownData.classesContainer\"\r\n [classesTooltip]=\"dropdownData.classesTooltip\"\r\n [role]=\"dropdownData.role\"\r\n [ariaLabel]=\"dropdownData.ariaLabel\"\r\n [ariaDescribedBy]=\"dropdownData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"dropdownData.ariaLabelledBy\"\r\n [ariaHidden]=\"dropdownData.ariaHidden\"\r\n [ariaDisabled]=\"dropdownData.ariaDisabled\"\r\n [ariaControls]=\"dropdownData.ariaControls\"\r\n [ariaCurrent]=\"dropdownData.ariaCurrent\"\r\n [ariaLive]=\"dropdownData.ariaLive\"\r\n [ariaExpanded]=\"dropdownData.ariaExpanded\"\r\n [ariaErrorMessage]=\"dropdownData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"dropdownData.ariaHasPopup\"\r\n [tabindex]=\"dropdownData.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ html: dropdownData.html, text: dropdownData.text }\"></ng-container>\r\n <desy-nav [hasNav]=\"true\"\r\n [idPrefix]=\"'header-dropdown-nav-item'\"\r\n [classes]=\"'w-max max-w-64'\"\r\n [items]=\"dropdownData.items\"\r\n [id]=\"'id-dropdown-nav'\"\r\n [ariaLabel]=\"'Men\u00FA de usuario'\"></desy-nav>\r\n </desy-header-dropdown>\r\n </ng-container>\r\n\r\n <ng-content select=\"desy-header-offcanvas\"></ng-content>\r\n <ng-container *ngIf=\"!offcanvasComponent && offcanvasData\">\r\n <desy-header-offcanvas [classes]=\"offcanvasData.classes\">\r\n <desy-header-offcanvas-button>\r\n <ng-container *desyCustomInnerContent=\"{ html: offcanvasData.html, text: offcanvasData.text }\"></ng-container>\r\n </desy-header-offcanvas-button>\r\n <desy-header-offcanvas-close-button>{{ offcanvasData.textClose }}</desy-header-offcanvas-close-button>\r\n <desy-content>\r\n <ng-container *desyCustomInnerContent=\"{ template: offcanvasData.contentHtml }\"></ng-container>\r\n </desy-content>\r\n </desy-header-offcanvas>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n"
4648
5680
  },] }
4649
5681
  ];
4650
5682
  HeaderComponent.propDecorators = {
@@ -4966,7 +5998,7 @@
4966
5998
  MenuHorizontalComponent.decorators = [
4967
5999
  { type: i0.Component, args: [{
4968
6000
  selector: 'desy-menu-horizontal',
4969
- template: "<!-- menu-horizontal -->\r\n<nav [class]=\"['c-menu-horizontal', classes] | makeHtmlList\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ul class=\"c-menu-horizontal__list lg:flex lg:flex-wrap\">\r\n <ng-container *ngFor=\"let item of getItemList(); index as i\">\r\n <li *ngIf=\"item\">\r\n <span *ngIf=\"item.active; else elseBlock\" [attr.id]=\"getItemId(item, i)\"\r\n [class]=\"['c-menu-horizontal__active flex items-center relative py-sm lg:px-lg lg:py-base border border-transparent truncate font-semibold', item.classes] | makeHtmlList\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n aria-current=\"page\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-disabled]=\"item.ariaDisabled ? item.ariaDisabled : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <strong (desyContentEmpty)=\"handleEmptyItem(i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </strong>\r\n </span>\r\n <ng-template #elseBlock>\r\n <a *ngIf=\"item.routerLink && !item.href\" (click)=\"onClick($event, item)\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [routerLink]=\"item.routerLink\"\r\n [fragment]=\"item.fragment\"\r\n [class]=\"['c-menu-horizontal__link relative flex items-center py-sm lg:px-lg lg:py-base border border-transparent text-black hover:text-primary-base underline truncate focus:outline-none', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'opacity-50 pointer-events-none': item.disabled}\"\r\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : item.tabindex\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\">\r\n <span class=\"flex items-center pointer-events-none\" (desyContentEmpty)=\"handleEmptyItem(i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </span>\r\n </a>\r\n <a *ngIf=\"!item.routerLink && item.href\" (click)=\"onClick($event, item)\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [href]=\"item.href | externalHref\"\r\n [target]=\"item.target\"\r\n [class]=\"['c-menu-horizontal__link relative flex items-center py-sm lg:px-lg lg:py-base border border-transparent text-black hover:text-primary-base underline truncate focus:outline-none', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'opacity-50 pointer-events-none': item.disabled}\"\r\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : item.tabindex\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\">\r\n <span class=\"flex items-center pointer-events-none\" (desyContentEmpty)=\"handleEmptyItem(i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </span>\r\n </a>\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</nav>\r\n<!-- /menu-horizontal -->\r\n"
6001
+ template: "<!-- menu-horizontal -->\r\n<nav [class]=\"['c-menu-horizontal', classes] | makeHtmlList\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ul class=\"c-menu-horizontal__list lg:flex lg:flex-wrap\">\r\n <ng-container *ngFor=\"let item of getItemList(); index as i\">\r\n <li *ngIf=\"item\">\r\n <span *ngIf=\"item.active; else elseBlock\" [attr.id]=\"getItemId(item, i)\"\r\n [class]=\"['c-menu-horizontal__active flex items-center relative py-sm lg:px-lg lg:py-base border border-transparent truncate font-semibold', item.classes] | makeHtmlList\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n aria-current=\"page\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-disabled]=\"item.ariaDisabled ? item.ariaDisabled : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <strong (desyContentEmpty)=\"handleEmptyItem(i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </strong>\r\n </span>\r\n <ng-template #elseBlock>\r\n <a *ngIf=\"item.routerLink && !item.href\" (click)=\"onClick($event, item)\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [routerLink]=\"item.routerLink\"\r\n [fragment]=\"item.fragment\"\r\n [class]=\"['c-menu-horizontal__link relative flex items-center py-sm lg:px-lg lg:py-base border border-transparent text-black hover:text-primary-base underline truncate focus:outline-none', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'no-underline pointer-events-none': item.disabled}\"\r\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : item.tabindex\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\">\r\n <span class=\"flex items-center pointer-events-none\" (desyContentEmpty)=\"handleEmptyItem(i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </span>\r\n </a>\r\n <a *ngIf=\"!item.routerLink && item.href\" (click)=\"onClick($event, item)\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [href]=\"item.href | externalHref\"\r\n [target]=\"item.target\"\r\n [class]=\"['c-menu-horizontal__link relative flex items-center py-sm lg:px-lg lg:py-base border border-transparent text-black hover:text-primary-base underline truncate focus:outline-none', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'no-underline pointer-events-none': item.disabled}\"\r\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : item.tabindex\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\">\r\n <span class=\"flex items-center pointer-events-none\" (desyContentEmpty)=\"handleEmptyItem(i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </span>\r\n </a>\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</nav>\r\n<!-- /menu-horizontal -->\r\n"
4970
6002
  },] }
4971
6003
  ];
4972
6004
  MenuHorizontalComponent.propDecorators = {
@@ -5080,7 +6112,7 @@
5080
6112
  else {
5081
6113
  var idPrefix = this.idPrefix ? this.idPrefix : 'nav-item';
5082
6114
  if (i === 0) {
5083
- return idPrefix;
6115
+ return idPrefix + '-0';
5084
6116
  }
5085
6117
  else {
5086
6118
  return idPrefix + '-' + i;
@@ -5117,12 +6149,21 @@
5117
6149
  var subItems = sub instanceof MenuVerticalItemSubComponent ? sub.itemComponents.toArray() : sub.items;
5118
6150
  return subItems && subItems.length > 0 ? subItems : null;
5119
6151
  };
6152
+ MenuVerticalComponent.prototype.focus = function (id, idFocus) {
6153
+ var elementToQuitFocus = document.getElementById(id);
6154
+ elementToQuitFocus.blur();
6155
+ if (idFocus) {
6156
+ var elementToFocus = document.getElementById(idFocus);
6157
+ elementToFocus.tabIndex = 0;
6158
+ elementToFocus === null || elementToFocus === void 0 ? void 0 : elementToFocus.focus();
6159
+ }
6160
+ };
5120
6161
  return MenuVerticalComponent;
5121
6162
  }(AccessibilityComponent));
5122
6163
  MenuVerticalComponent.decorators = [
5123
6164
  { type: i0.Component, args: [{
5124
6165
  selector: 'desy-menu-vertical',
5125
- template: "<!--\r\n Template para ser utilizado tanto por los items como por los subitems:\r\n - item: Item que representa\r\n - index: indice del item en la lista\r\n - id: identificador del item\r\n - isRoot: si pertenece al nivel raiz\r\n-->\r\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\" let-id=\"id\" let-sub=\"sub\" let-isRoot=\"isRoot\">\r\n <ng-container *ngIf=\"item\">\r\n <li class=\"m-base\" [ngClass]=\"{'origin-top-left text-sm': !isRoot}\">\r\n <ng-container *ngIf=\"item.href || item.routerLink; else notHref\">\r\n <a *ngIf=\"item.href; else hasRouterLink\" [attr.id]=\"id\"\r\n (desyContentEmpty)=\"handleItemContentEmpty(index, isRoot)\"\r\n [href]=\"item.href | externalHref\"\r\n [class]=\"['block px-xs focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{\r\n 'underline': hasUnderline,\r\n 'hover:text-primary-base hover:underline': !item.disabled,\r\n 'no-underline pointer-events-none': item.disabled,\r\n 'font-bold': item.active\r\n }\"\r\n [attr.title]=\"item.title\"\r\n [attr.tabindex]=\"item.disabled ? -1 : null\"\r\n [attr.target]=\"item.target ? item.target : null\"\r\n [attr.aria-current]=\"item.active ? 'page' : null\"\r\n [attr.aria-disabled]=\"item.disabled\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.ariaHidden\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.disabled]=\"item.disabled\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: getItemHtml(item), text: item.text }\"></ng-container>\r\n </a>\r\n <ng-template #hasRouterLink>\r\n <!-- Todos los enlaces que admiten o href o routerLink estar\u00EDa bien unificarlos (en todos los componentes).\r\n Para ello, ser\u00EDa necesario crear una directiva para a\u00F1adir o quitar la directiva routerLink si no tiene href.\r\n Sin embargo, esto no es posible actualmente, ya que Angular todav\u00EDa no permite a\u00F1adir directivas din\u00E1micamente:\r\n https://angular.io/guide/roadmap#support-adding-directives-to-host-elements -->\r\n <a [attr.id]=\"id\"\r\n (desyContentEmpty)=\"handleItemContentEmpty(index, isRoot)\"\r\n [routerLink]=\"item.routerLink\" [fragment]=\"item.fragment ? item.fragment : null\" [routerLinkActive]=\"item.routerLinkActiveClasses\"\r\n [class]=\"['block px-xs focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{\r\n 'underline': hasUnderline,\r\n 'hover:text-primary-base hover:underline': !item.disabled,\r\n 'no-underline pointer-events-none': item.disabled,\r\n 'font-bold': item.active\r\n }\"\r\n [attr.title]=\"item.title\"\r\n [attr.tabindex]=\"item.disabled ? -1 : null\"\r\n [attr.target]=\"item.target ? item.target : null\"\r\n [attr.aria-current]=\"item.active ? 'page' : null\"\r\n [attr.aria-disabled]=\"item.disabled\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.ariaHidden\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.disabled]=\"item.disabled\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: getItemHtml(item), text: item.text }\"></ng-container>\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #notHref>\r\n <span [attr.id]=\"id\"\r\n (desyContentEmpty)=\"handleItemContentEmpty(index, isRoot)\"\r\n [class]=\"['block px-xs', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'font-bold': item.active}\"\r\n\r\n [attr.title]=\"item.title\"\r\n [attr.tabindex]=\"item.disabled ? -1 : null\"\r\n [attr.aria-current]=\"item.active ? 'page' : null\"\r\n [attr.aria-disabled]=\"item.disabled\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.ariaHidden\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.disabled]=\"item.disabled\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: getItemHtml(item), text: item.text }\"></ng-container>\r\n </span>\r\n </ng-template>\r\n <ng-container *ngIf=\"isRoot && sub\">\r\n <ul *ngIf=\"getSubItems(sub)\" [ngClass]=\"sub.classes\"\r\n [attr.aria-describedby]=\"sub.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"sub.ariaErrorMessage\"\r\n [attr.aria-label]=\"sub.ariaLabel\"\r\n [attr.aria-labelledby]=\"sub.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"sub.ariaHidden\"\r\n [attr.aria-disabled]=\"sub.ariaDisabled\"\r\n [attr.aria-controls]=\"sub.ariaControls\"\r\n [attr.aria-current]=\"sub.ariaCurrent\"\r\n [attr.aria-live]=\"sub.ariaLive\"\r\n [attr.aria-expanded]=\"sub.ariaExpanded\"\r\n [attr.aria-haspopup]=\"sub.ariaHasPopup\"\r\n [attr.tabindex]=\"sub.tabindex\">\r\n <ng-container *ngFor=\"let subItem of getSubItems(sub); index as subIndex\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n item: subItem,\r\n id: getSubItemId(item, index, subIndex),\r\n index: subIndex,\r\n isRoot: false\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n <div *ngIf=\"!getSubItems(sub)\"\r\n [class]=\"['mb-base px-xs origin-top-left text-sm text-neutral-dark', sub.classes] | makeHtmlList\"\r\n [id]=\"'sub-' + id\">\r\n <ng-container *desyCustomInnerContent=\"{ component: sub, html: sub.html }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n </li>\r\n <li *ngIf=\"item.divider\" class=\"my-sm border-b border-neutral-base\" aria-hidden=\"true\">\r\n <div class=\"sr-only\">Separador</div>\r\n </li>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<nav [ngClass]=\"classes\"\r\n [attr.role]=\"(role ? role : null)\"\r\n [attr.aria-describedby]=\"ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-hidden]=\"ariaHidden\"\r\n [attr.aria-disabled]=\"ariaDisabled\"\r\n [attr.aria-controls]=\"ariaControls\"\r\n [attr.aria-current]=\"ariaCurrent\"\r\n [attr.aria-live]=\"ariaLive\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-haspopup]=\"ariaHasPopup\"\r\n [attr.tabindex]=\"tabindex\">\r\n <ul class=\"text-base\">\r\n <ng-container *ngFor=\"let item of getItems(); index as index\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item, id: getId(item, index), index: index, sub: getItemSub(item), isRoot: true }\">\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n</nav>\r\n",
6166
+ template: "<!--\r\n Template para ser utilizado tanto por los items como por los subitems:\r\n - item: Item que representa\r\n - index: indice del item en la lista\r\n - id: identificador del item\r\n - isRoot: si pertenece al nivel raiz\r\n-->\r\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\" let-id=\"id\" let-sub=\"sub\" let-isRoot=\"isRoot\">\r\n <ng-container *ngIf=\"item\">\r\n <li class=\"m-base\" [ngClass]=\"{'origin-top-left text-sm': !isRoot}\">\r\n <ng-container *ngIf=\"item.href || item.routerLink; else notHref\">\r\n <a *ngIf=\"item.href; else hasRouterLink\" [attr.id]=\"id\"\r\n (desyContentEmpty)=\"handleItemContentEmpty(index, isRoot)\"\r\n [href]=\"item.href | externalHref\"\r\n [class]=\"['block px-xs focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{\r\n 'underline': hasUnderline,\r\n 'hover:text-primary-base hover:underline': !item.disabled,\r\n 'no-underline pointer-events-none': item.disabled,\r\n 'font-bold': item.active\r\n }\"\r\n [attr.title]=\"item.title\"\r\n [attr.tabindex]=\"item.disabled ? -1 : null\"\r\n [attr.target]=\"item.target ? item.target : null\"\r\n [attr.aria-current]=\"item.active ? 'page' : null\"\r\n [attr.aria-disabled]=\"item.disabled\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.ariaHidden\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.disabled]=\"item.disabled\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: getItemHtml(item), text: item.text }\"></ng-container>\r\n </a>\r\n <ng-template #hasRouterLink>\r\n <!-- Todos los enlaces que admiten o href o routerLink estar\u00EDa bien unificarlos (en todos los componentes).\r\n Para ello, ser\u00EDa necesario crear una directiva para a\u00F1adir o quitar la directiva routerLink si no tiene href.\r\n Sin embargo, esto no es posible actualmente, ya que Angular todav\u00EDa no permite a\u00F1adir directivas din\u00E1micamente:\r\n https://angular.io/guide/roadmap#support-adding-directives-to-host-elements -->\r\n <a [attr.id]=\"id\"\r\n (desyContentEmpty)=\"handleItemContentEmpty(index, isRoot)\"\r\n [routerLink]=\"item.routerLink\" [fragment]=\"item.fragment ? item.fragment : null\"\r\n [routerLinkActive]=\"item.routerLinkActiveClasses ? item.routerLinkActiveClasses : []\"\r\n [class]=\"['block px-xs focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{\r\n 'underline': hasUnderline,\r\n 'hover:text-primary-base hover:underline': !item.disabled,\r\n 'no-underline pointer-events-none': item.disabled,\r\n 'font-bold': item.active\r\n }\"\r\n [attr.title]=\"item.title\"\r\n [attr.tabindex]=\"item.disabled ? -1 : null\"\r\n [attr.target]=\"item.target ? item.target : null\"\r\n [attr.aria-current]=\"item.active ? 'page' : null\"\r\n [attr.aria-disabled]=\"item.disabled\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.ariaHidden\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.disabled]=\"item.disabled\"\r\n \r\n (click)=\"focus(id, item.fragment ? item.fragment : null)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: getItemHtml(item), text: item.text }\"></ng-container>\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #notHref>\r\n <span [attr.id]=\"id\"\r\n (desyContentEmpty)=\"handleItemContentEmpty(index, isRoot)\"\r\n [class]=\"['block px-xs', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'font-bold': item.active}\"\r\n\r\n [attr.title]=\"item.title\"\r\n [attr.tabindex]=\"item.disabled ? -1 : null\"\r\n [attr.aria-current]=\"item.active ? 'page' : null\"\r\n [attr.aria-disabled]=\"item.disabled\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.ariaHidden\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.disabled]=\"item.disabled\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: getItemHtml(item), text: item.text }\"></ng-container>\r\n </span>\r\n </ng-template>\r\n <ng-container *ngIf=\"isRoot && sub\">\r\n <ul *ngIf=\"getSubItems(sub)\" [ngClass]=\"sub.classes\"\r\n [attr.aria-describedby]=\"sub.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"sub.ariaErrorMessage\"\r\n [attr.aria-label]=\"sub.ariaLabel\"\r\n [attr.aria-labelledby]=\"sub.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"sub.ariaHidden\"\r\n [attr.aria-disabled]=\"sub.ariaDisabled\"\r\n [attr.aria-controls]=\"sub.ariaControls\"\r\n [attr.aria-current]=\"sub.ariaCurrent\"\r\n [attr.aria-live]=\"sub.ariaLive\"\r\n [attr.aria-expanded]=\"sub.ariaExpanded\"\r\n [attr.aria-haspopup]=\"sub.ariaHasPopup\"\r\n [attr.tabindex]=\"sub.tabindex\">\r\n <ng-container *ngFor=\"let subItem of getSubItems(sub); index as subIndex\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n item: subItem,\r\n id: getSubItemId(item, index, subIndex),\r\n index: subIndex,\r\n isRoot: false\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n <div *ngIf=\"!getSubItems(sub)\"\r\n [class]=\"['mb-base px-xs origin-top-left text-sm text-neutral-dark', sub.classes] | makeHtmlList\"\r\n [id]=\"'sub-' + id\">\r\n <ng-container *desyCustomInnerContent=\"{ component: sub, html: sub.html }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n </li>\r\n <li *ngIf=\"item.divider\" class=\"my-sm border-b border-neutral-base\" aria-hidden=\"true\">\r\n <div class=\"sr-only\">Separador</div>\r\n </li>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<nav [ngClass]=\"classes\"\r\n [attr.role]=\"(role ? role : null)\"\r\n [attr.aria-describedby]=\"ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-hidden]=\"ariaHidden\"\r\n [attr.aria-disabled]=\"ariaDisabled\"\r\n [attr.aria-controls]=\"ariaControls\"\r\n [attr.aria-current]=\"ariaCurrent\"\r\n [attr.aria-live]=\"ariaLive\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-haspopup]=\"ariaHasPopup\"\r\n [attr.tabindex]=\"tabindex\">\r\n <ul class=\"text-base\">\r\n <ng-container *ngFor=\"let item of getItems(); index as index\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item, id: getId(item, index), index: index, sub: getItemSub(item), isRoot: true }\">\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n</nav>\r\n",
5126
6167
  animations: [
5127
6168
  animations.trigger('displayMenuVertical', [
5128
6169
  animations.state('void', animations.style({
@@ -5536,7 +6577,7 @@
5536
6577
  if (!items || items.length === 0) {
5537
6578
  throw Error('Items are required');
5538
6579
  }
5539
- // No se ha puesto label required porque en algunos ejemplos de desy-frontend no aparece
6580
+ // No se ha puesto label required porque en algunos ejemplos de desy-html no aparece
5540
6581
  };
5541
6582
  MenubarComponent.prototype.handleEmptyItem = function (text) {
5542
6583
  throw Error(text);
@@ -5918,7 +6959,7 @@
5918
6959
  MenubarComponent.decorators = [
5919
6960
  { type: i0.Component, args: [{
5920
6961
  selector: 'desy-menubar',
5921
- template: "<div [attr.id]=\"id\" [class]=\"['c-menubar', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-container *ngIf=\"getLabelRef()\">\r\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent ? labelComponent.classes : (labelData ? labelData.classes : null)] | makeHtmlList\">\r\n <ng-container *ngTemplateOutlet=\"getLabelRef()\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!getLabelRef() && (labelData || labelText)\">\r\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelData ? labelData.classes : null] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{ html: getLabelContent() }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ul #menubar [id]=\"id + '-menubar'\" class=\"lg:flex lg:flex-wrap\" role=\"menubar\"\r\n (focusin)=\"handleMenuFocusIn()\"\r\n (focusout)=\"handleMenuFocusOut($event)\"\r\n [ngClass]=\"{ 'focus': isFocused }\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"getLabelRef() || labelData || labelText ? id + '-label' : null\">\r\n <ng-container *ngFor=\"let item of getItems(); index as itemIndex\">\r\n <li class=\"relative\" role=\"none\" desyMenubaritem (contentChanged)=\"checkChanges()\">\r\n <a *ngIf=\"item.sub\" #link\r\n role=\"menuitem\" aria-haspopup=\"true\" aria-expanded=\"false\"\r\n (click)=\"handleMenuItemClick($event, itemIndex)\"\r\n (keydown)=\"handleMenuItemKeydown($event, itemIndex)\"\r\n (mouseover)=\"handleMenuItemMouseOver(itemIndex)\"\r\n (desyAttributeChange)=\"checkChanges()\" [attributesToCheck]=\"'disabled'\"\r\n [id]=\"getItemId(item, itemIndex)\"\r\n [class]=\"['c-menubar__button', item.classes] | makeHtmlList\"\r\n\r\n [attr.disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : (item.ariaDisabled ? item.ariaDisabled : null)\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-modal]=\"item.ariaModal ? item.ariaModal : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : (itemIndex === currentFocusItemIndex ? 0 : -1)\">\r\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\" #itemContentWrapper\r\n (desyContentEmpty)=\"handleEmptyItem('item content, html or text is required at position ' + itemIndex)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text}\"></ng-container>\r\n </span>\r\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\r\n </a>\r\n <a *ngIf=\"item.routerLink && !item.sub\" #link #itemContentWrapper\r\n role=\"menuitem\"\r\n (click)=\"handleMenuItemClick($event, itemIndex)\"\r\n (keydown)=\"handleMenuItemKeydown($event, itemIndex)\"\r\n (mouseover)=\"handleMenuItemMouseOver(itemIndex)\"\r\n (desyContentEmpty)=\"handleEmptyItem('item content, html or text is required at position ' + itemIndex)\"\r\n (desyAttributeChange)=\"checkChanges()\" [attributesToCheck]=\"'disabled'\"\r\n [id]=\"getItemId(item, itemIndex)\"\r\n [routerLink]=\"item.routerLink\"\r\n [routerLinkActive]=\"item.routerLinkActiveClasses ? item.routerLinkActiveClasses : ''\"\r\n [fragment]=\"item.fragment\"\r\n [class]=\"['c-menubar__button', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'c-menubar__button--disabled': item.disabled, 'c-menubar__button--primary': item.active}\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : (item.ariaDisabled ? item.ariaDisabled : null)\"\r\n [attr.tabindex]=\"item.disabled ? -1 : (itemIndex === currentFocusItemIndex ? 0 : -1)\"\r\n [attr.target]=\"item.target ? item.target : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledBy]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.aria-modal]=\"item.ariaModal ? item.ariaModal : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text}\"></ng-container>\r\n </a>\r\n <a *ngIf=\"!item.routerLink && item.href && !item.sub\" #link #itemContentWrapper\r\n role=\"menuitem\"\r\n (click)=\"handleMenuItemClick($event, itemIndex)\"\r\n (keydown)=\"handleMenuItemKeydown($event, itemIndex)\"\r\n (mouseover)=\"handleMenuItemMouseOver(itemIndex)\"\r\n (desyContentEmpty)=\"handleEmptyItem('item content, html or text is required at position ' + itemIndex)\"\r\n (desyAttributeChange)=\"checkChanges()\" [attributesToCheck]=\"'disabled'\"\r\n [id]=\"getItemId(item, itemIndex)\"\r\n [href]=\"item.href | externalHref\"\r\n [class]=\"['c-menubar__button', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'c-menubar__button--disabled': item.disabled, 'c-menubar__button--primary': item.active}\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : (item.ariaDisabled ? item.ariaDisabled : null)\"\r\n [attr.tabindex]=\"item.disabled ? -1 : (itemIndex === currentFocusItemIndex ? 0 : -1)\"\r\n [attr.target]=\"item.target ? item.target : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledBy]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.aria-modal]=\"item.ariaModal ? item.ariaModal : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text}\"></ng-container>\r\n </a>\r\n\r\n <ul *ngIf=\"item.sub && getItemSubitems(item)\" #popupMenu role=\"menu\" tabindex=\"-1\"\r\n [ngStyle]=\"getPopupStyle(itemIndex)\"\r\n [class]=\"['c-menubar__tooltip w-max max-w-64 hidden border border-neutral-base shadow-md bg-white text-sm', item.sub.classes] | makeHtmlList\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : (item.sub.ariaLabel ? item.sub.ariaLabel : null)\"\r\n [attr.aria-describedby]=\"item.sub.ariaDescribedBy ? item.sub.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.sub.ariaLabelledBy ? item.sub.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.sub.ariaHidden ? item.sub.ariaHidden : null\"\r\n [attr.aria-disabled]=\"item.sub.ariaDisabled ? item.sub.ariaDisabled : null\"\r\n [attr.aria-controls]=\"item.sub.ariaControls ? item.sub.ariaControls : null\"\r\n [attr.aria-current]=\"item.sub.ariaCurrent ? item.sub.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.sub.ariaLive ? item.sub.ariaLive : null\"\r\n [attr.aria-expanded]=\"!!(menuData && menuData[itemIndex].open)\"\r\n [attr.aria-errormessage]=\"item.sub.ariaErrorMessage ? item.sub.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.sub.ariaHasPopup ? item.sub.ariaHasPopup : null\"\r\n [attr.aria-modal]=\"item.sub.ariaModal ? item.sub.ariaModal : null\">\r\n <ng-container *ngFor=\"let subItem of getItemSubitems(item); index as subItemIndex\">\r\n <ng-container [ngSwitch]=\"subItem.role\">\r\n <li #popupMenuItem *ngSwitchCase=\"'none'\" role=\"none\" tabindex=\"-1\"\r\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n (desyContentEmpty)=\"handleEmptyItem('subitem content, html or text is required at position ' + subItemIndex + ' of item ' + itemIndex)\"\r\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\r\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\r\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\r\n </li>\r\n <li *ngSwitchCase=\"'group'\">\r\n <ul role=\"group\" [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n [attr.aria-label]=\"subItem.ariaLabel ? subItem.ariaLabel : null\">\r\n <ng-container *ngFor=\"let subsubitem of getSubItemSubitems(subItem); index as subsubIndex\">\r\n <ng-container *ngIf=\"subsubitem\">\r\n <li #popupMenuItem [attr.role]=\"subsubitem.role ? subsubitem.role : null\" tabindex=\"-1\"\r\n [id]=\"getSubItemId(subsubitem, subsubIndex, getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex)))\"\r\n (desyContentEmpty)=\"handleEmptyItem('subsubitem content, html or text is required at position ' + subsubIndex + ' of subItem ' + subItemIndex + ' of item ' + itemIndex)\"\r\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex, subsubIndex)\"\r\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex, subsubIndex)\"\r\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex, subsubIndex)\"\r\n [attr.aria-checked]=\"getSubSubItemAriaChecked(subsubitem)\"\r\n class=\"flex items-center pr-base pl-lg py-sm cursor-pointer hover:bg-primary-base hover:text-white\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subsubitem, html: subsubitem.html, text: subsubitem.text}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n <li #popupMenuItem *ngSwitchCase=\"'menuitem'\" role=\"menuitem\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleEmptyItem('subitem content, html or text is required at position ' + subItemIndex + ' of item ' + itemIndex)\"\r\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\r\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\r\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\"\r\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n class=\"flex items-center pr-base pl-lg py-sm cursor-pointer hover:bg-primary-base hover:text-white focus:bg-primary-base focus:text-white focus:outline-none\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\r\n </li>\r\n <li #popupMenuItem *ngSwitchCase=\"'menuitemcheckbox'\" role=\"menuitemcheckbox\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleEmptyItem('subitem content, html or text is required at position ' + subItemIndex + ' of item ' + itemIndex)\"\r\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\r\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\r\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\"\r\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n [attr.aria-checked]=\"!!subItem.checked\"\r\n class=\"flex items-center pr-base pl-lg py-sm cursor-pointer hover:bg-primary-base hover:text-white\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\r\n </li>\r\n <li #popupMenuItem *ngSwitchCase=\"'separator'\" role=\"separator\"\r\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n class=\"my-sm border-b border-neutral-base\">\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n"
6962
+ template: "<div [attr.id]=\"id\" [class]=\"['c-menubar', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-container *ngIf=\"getLabelRef()\">\r\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent ? labelComponent.classes : (labelData ? labelData.classes : null)] | makeHtmlList\">\r\n <ng-container *ngTemplateOutlet=\"getLabelRef()\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!getLabelRef() && (labelData || labelText)\">\r\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelData ? labelData.classes : null] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{ html: getLabelContent() }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ul #menubar [id]=\"id + '-menubar'\" class=\"lg:flex lg:flex-wrap\" role=\"menubar\"\r\n (focusin)=\"handleMenuFocusIn()\"\r\n (focusout)=\"handleMenuFocusOut($event)\"\r\n [ngClass]=\"{ 'focus': isFocused }\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"getLabelRef() || labelData || labelText ? id + '-label' : null\">\r\n <ng-container *ngFor=\"let item of getItems(); index as itemIndex\">\r\n <li class=\"relative\" role=\"none\" desyMenubaritem (contentChanged)=\"checkChanges()\">\r\n <a *ngIf=\"item.sub\" #link\r\n role=\"menuitem\" aria-haspopup=\"true\" aria-expanded=\"false\"\r\n (click)=\"handleMenuItemClick($event, itemIndex)\"\r\n (keydown)=\"handleMenuItemKeydown($event, itemIndex)\"\r\n (mouseover)=\"handleMenuItemMouseOver(itemIndex)\"\r\n (desyAttributeChange)=\"checkChanges()\" [attributesToCheck]=\"'disabled'\"\r\n [id]=\"getItemId(item, itemIndex)\"\r\n [class]=\"['c-menubar__button', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'c-menubar__button--disabled': item.disabled, 'c-menubar__button--primary': item.active}\"\r\n [attr.disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : (item.ariaDisabled ? item.ariaDisabled : null)\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-modal]=\"item.ariaModal ? item.ariaModal : null\"\r\n [attr.tabindex]=\"item.disabled ? -1 : (itemIndex === currentFocusItemIndex ? 0 : -1)\">\r\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\" #itemContentWrapper\r\n (desyContentEmpty)=\"handleEmptyItem('item content, html or text is required at position ' + itemIndex)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text}\"></ng-container>\r\n </span>\r\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\r\n </a>\r\n <a *ngIf=\"item.routerLink && !item.sub\" #link #itemContentWrapper\r\n role=\"menuitem\"\r\n (click)=\"handleMenuItemClick($event, itemIndex)\"\r\n (keydown)=\"handleMenuItemKeydown($event, itemIndex)\"\r\n (mouseover)=\"handleMenuItemMouseOver(itemIndex)\"\r\n (desyContentEmpty)=\"handleEmptyItem('item content, html or text is required at position ' + itemIndex)\"\r\n (desyAttributeChange)=\"checkChanges()\" [attributesToCheck]=\"'disabled'\"\r\n [id]=\"getItemId(item, itemIndex)\"\r\n [routerLink]=\"item.routerLink\"\r\n [routerLinkActive]=\"item.routerLinkActiveClasses ? item.routerLinkActiveClasses : []\"\r\n [fragment]=\"item.fragment\"\r\n [class]=\"['c-menubar__button', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'c-menubar__button--disabled': item.disabled, 'c-menubar__button--primary': item.active}\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : (item.ariaDisabled ? item.ariaDisabled : null)\"\r\n [attr.tabindex]=\"item.disabled ? -1 : (itemIndex === currentFocusItemIndex ? 0 : -1)\"\r\n [attr.target]=\"item.target ? item.target : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledBy]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.aria-modal]=\"item.ariaModal ? item.ariaModal : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text}\"></ng-container>\r\n </a>\r\n <a *ngIf=\"!item.routerLink && item.href && !item.sub\" #link #itemContentWrapper\r\n role=\"menuitem\"\r\n (click)=\"handleMenuItemClick($event, itemIndex)\"\r\n (keydown)=\"handleMenuItemKeydown($event, itemIndex)\"\r\n (mouseover)=\"handleMenuItemMouseOver(itemIndex)\"\r\n (desyContentEmpty)=\"handleEmptyItem('item content, html or text is required at position ' + itemIndex)\"\r\n (desyAttributeChange)=\"checkChanges()\" [attributesToCheck]=\"'disabled'\"\r\n [id]=\"getItemId(item, itemIndex)\"\r\n [href]=\"item.href | externalHref\"\r\n [class]=\"['c-menubar__button', item.classes] | makeHtmlList\"\r\n [ngClass]=\"{'c-menubar__button--disabled': item.disabled, 'c-menubar__button--primary': item.active}\"\r\n [attr.title]=\"item.title ? item.title : null\"\r\n [attr.disabled]=\"item.disabled ? item.disabled : null\"\r\n [attr.aria-disabled]=\"item.disabled ? item.disabled : (item.ariaDisabled ? item.ariaDisabled : null)\"\r\n [attr.tabindex]=\"item.disabled ? -1 : (itemIndex === currentFocusItemIndex ? 0 : -1)\"\r\n [attr.target]=\"item.target ? item.target : null\"\r\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\r\n [attr.aria-labelledBy]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.aria-modal]=\"item.ariaModal ? item.ariaModal : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text}\"></ng-container>\r\n </a>\r\n\r\n <ul *ngIf=\"item.sub && getItemSubitems(item)\" #popupMenu role=\"menu\" tabindex=\"-1\"\r\n [ngStyle]=\"getPopupStyle(itemIndex)\"\r\n [class]=\"['c-menubar__tooltip w-max max-w-64 hidden border border-neutral-base shadow-md bg-white text-sm', item.sub.classes] | makeHtmlList\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : (item.sub.ariaLabel ? item.sub.ariaLabel : null)\"\r\n [attr.aria-describedby]=\"item.sub.ariaDescribedBy ? item.sub.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"item.sub.ariaLabelledBy ? item.sub.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.sub.ariaHidden ? item.sub.ariaHidden : null\"\r\n [attr.aria-disabled]=\"item.sub.ariaDisabled ? item.sub.ariaDisabled : null\"\r\n [attr.aria-controls]=\"item.sub.ariaControls ? item.sub.ariaControls : null\"\r\n [attr.aria-current]=\"item.sub.ariaCurrent ? item.sub.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.sub.ariaLive ? item.sub.ariaLive : null\"\r\n [attr.aria-expanded]=\"!!(menuData && menuData[itemIndex].open)\"\r\n [attr.aria-errormessage]=\"item.sub.ariaErrorMessage ? item.sub.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.sub.ariaHasPopup ? item.sub.ariaHasPopup : null\"\r\n [attr.aria-modal]=\"item.sub.ariaModal ? item.sub.ariaModal : null\">\r\n <ng-container *ngFor=\"let subItem of getItemSubitems(item); index as subItemIndex\">\r\n <ng-container [ngSwitch]=\"subItem.role\">\r\n <li #popupMenuItem *ngSwitchCase=\"'none'\" role=\"none\" tabindex=\"-1\"\r\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n (desyContentEmpty)=\"handleEmptyItem('subitem content, html or text is required at position ' + subItemIndex + ' of item ' + itemIndex)\"\r\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\r\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\r\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\r\n </li>\r\n <li *ngSwitchCase=\"'group'\" role=\"none\">\r\n <ul role=\"group\" [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n [attr.aria-label]=\"subItem.ariaLabel ? subItem.ariaLabel : null\">\r\n <ng-container *ngFor=\"let subsubitem of getSubItemSubitems(subItem); index as subsubIndex\">\r\n <ng-container *ngIf=\"subsubitem\">\r\n <li #popupMenuItem [attr.role]=\"subsubitem.role ? subsubitem.role : null\" tabindex=\"-1\"\r\n [id]=\"getSubItemId(subsubitem, subsubIndex, getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex)))\"\r\n (desyContentEmpty)=\"handleEmptyItem('subsubitem content, html or text is required at position ' + subsubIndex + ' of subItem ' + subItemIndex + ' of item ' + itemIndex)\"\r\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex, subsubIndex)\"\r\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex, subsubIndex)\"\r\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex, subsubIndex)\"\r\n [attr.aria-checked]=\"getSubSubItemAriaChecked(subsubitem)\"\r\n class=\"flex items-center pr-base pl-lg py-sm cursor-pointer hover:bg-primary-base hover:text-white\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subsubitem, html: subsubitem.html, text: subsubitem.text}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n <li #popupMenuItem *ngSwitchCase=\"'menuitem'\" role=\"menuitem\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleEmptyItem('subitem content, html or text is required at position ' + subItemIndex + ' of item ' + itemIndex)\"\r\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\r\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\r\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\"\r\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n class=\"flex items-center pr-base pl-lg py-sm cursor-pointer hover:bg-primary-base hover:text-white focus:bg-primary-base focus:text-white focus:outline-none\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\r\n </li>\r\n <li #popupMenuItem *ngSwitchCase=\"'menuitemcheckbox'\" role=\"menuitemcheckbox\" tabindex=\"-1\"\r\n (desyContentEmpty)=\"handleEmptyItem('subitem content, html or text is required at position ' + subItemIndex + ' of item ' + itemIndex)\"\r\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\r\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\r\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\"\r\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n [attr.aria-checked]=\"!!subItem.checked\"\r\n class=\"flex items-center pr-base pl-lg py-sm cursor-pointer hover:bg-primary-base hover:text-white\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\r\n </li>\r\n <li #popupMenuItem *ngSwitchCase=\"'separator'\" role=\"separator\"\r\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\r\n class=\"my-sm border-b border-neutral-base\">\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n"
5922
6963
  },] }
5923
6964
  ];
5924
6965
  MenubarComponent.ctorParameters = function () { return [
@@ -6200,67 +7241,6 @@
6200
7241
  DesyContentChild()
6201
7242
  ], TableComponent.prototype, "headerComponent", void 0);
6202
7243
 
6203
- var SearchUtils = /** @class */ (function () {
6204
- function SearchUtils() {
6205
- }
6206
- /**
6207
- * Comprueba si una cadena de texto (target) contiene cualquier palabra de otro texto (text)
6208
- * @param target - Texto en el que buscar
6209
- * @param text - Texto a buscar
6210
- * @param fullWord - Indica si las palabras del texto a buscar deben aparecer enteras
6211
- */
6212
- SearchUtils.containsAnyWordFrom = function (target, text, fullWord) {
6213
- var _this = this;
6214
- var words = [];
6215
- var includes = false;
6216
- var simplifiedTarget = this.getSimplifiedString(target);
6217
- if (text && text.split(' ').length > 1) {
6218
- words = text.split(' ');
6219
- }
6220
- words.push(text);
6221
- words.forEach(function (word) {
6222
- if (simplifiedTarget && word) {
6223
- if ((fullWord && simplifiedTarget === _this.getSimplifiedString(word))
6224
- || (!fullWord && simplifiedTarget.includes(_this.getSimplifiedString(word)))) {
6225
- includes = true;
6226
- }
6227
- }
6228
- });
6229
- return includes;
6230
- };
6231
- /**
6232
- * Convierte a mayúsculas, elimina espacios y reemplaza/elimina caracteres especiales para realizar comparaciones más tolerantes
6233
- * @param str - cadena de entrada
6234
- */
6235
- SearchUtils.getSimplifiedString = function (str) {
6236
- var res = str;
6237
- if (str) {
6238
- res = str.toLocaleUpperCase().trim();
6239
- res = res.replace('Á', 'A');
6240
- res = res.replace('É', 'E');
6241
- res = res.replace('Í', 'I');
6242
- res = res.replace('Ó', 'O');
6243
- res = res.replace('Ú', 'U');
6244
- res = res.replace('À', 'A');
6245
- res = res.replace('È', 'E');
6246
- res = res.replace('Ì', 'I');
6247
- res = res.replace('Ò', 'O');
6248
- res = res.replace('Ù', 'U');
6249
- res = res.replace('Ä', 'A');
6250
- res = res.replace('Ë', 'E');
6251
- res = res.replace('Ï', 'I');
6252
- res = res.replace('Ö', 'O');
6253
- res = res.replace('Ü', 'U');
6254
- res = res.replace(',', '');
6255
- res = res.replace('.', '');
6256
- res = res.replace('\'', '');
6257
- res = res.replace('"', '');
6258
- }
6259
- return res;
6260
- };
6261
- return SearchUtils;
6262
- }());
6263
-
6264
7244
  exports.OrderBy = void 0;
6265
7245
  (function (OrderBy) {
6266
7246
  OrderBy["none"] = "none";
@@ -6688,14 +7668,26 @@
6688
7668
  _this.activeChange = new i0.EventEmitter();
6689
7669
  _this.lastActiveState = undefined;
6690
7670
  _this.hasViewinit = false;
7671
+ _this.createdCallerFromType = false;
6691
7672
  return _this;
6692
7673
  }
6693
- AlertComponent.prototype.ngOnChanges = function () {
6694
- this.handleActiveState();
6695
- };
7674
+ Object.defineProperty(AlertComponent.prototype, "active", {
7675
+ get: function () {
7676
+ return this._active;
7677
+ },
7678
+ set: function (value) {
7679
+ var _this = this;
7680
+ setTimeout(function () {
7681
+ _this._active = value;
7682
+ _this.cdRef.detectChanges();
7683
+ _this.handleActiveState();
7684
+ });
7685
+ },
7686
+ enumerable: false,
7687
+ configurable: true
7688
+ });
6696
7689
  AlertComponent.prototype.ngOnDestroy = function () {
6697
7690
  this.active = false;
6698
- this.handleActiveState();
6699
7691
  };
6700
7692
  AlertComponent.prototype.ngAfterViewInit = function () {
6701
7693
  if (!this.id) {
@@ -6705,31 +7697,28 @@
6705
7697
  throw Error('caller is required');
6706
7698
  }
6707
7699
  this.hasViewinit = true;
6708
- this.cdRef.detectChanges();
6709
- if (this.callerType) {
6710
- var factory = this.factoryResolver.resolveComponentFactory(this.callerType);
6711
- var component = this.container.createComponent(factory);
6712
- if (this.onCallerCreationCallback) {
6713
- this.onCallerCreationCallback(this, component);
6714
- }
6715
- }
6716
7700
  this.handleActiveState();
6717
- this.cdRef.detectChanges();
6718
7701
  };
6719
7702
  AlertComponent.prototype.dismiss = function () {
6720
7703
  this.activeChange.emit(false);
6721
7704
  };
6722
7705
  AlertComponent.prototype.handleActiveState = function () {
6723
- var _this = this;
6724
- if (this.active !== this.lastActiveState && this.hasViewinit) {
6725
- this.lastActiveState = this.active;
6726
- if (this.active && this.focusFirst) {
6727
- setTimeout(function () {
6728
- var focusElem = FocusUtils.getFirstFocusableElement(_this.alertWrapper.nativeElement);
6729
- if (focusElem) {
6730
- setTimeout(function () { return focusElem.focus(); });
6731
- }
6732
- });
7706
+ if (this._active && this.callerType && !this.createdCallerFromType) {
7707
+ var factory = this.factoryResolver.resolveComponentFactory(this.callerType);
7708
+ var component = this.container.createComponent(factory);
7709
+ if (this.onCallerCreationCallback) {
7710
+ this.onCallerCreationCallback(this, component);
7711
+ }
7712
+ this.createdCallerFromType = true;
7713
+ }
7714
+ if (this._active !== this.lastActiveState && this.hasViewinit) {
7715
+ this.lastActiveState = this._active;
7716
+ if (this._active && this.focusFirst) {
7717
+ this.cdRef.detectChanges();
7718
+ var focusElem = FocusUtils.getFirstFocusableElement(this.alertWrapper.nativeElement);
7719
+ if (focusElem) {
7720
+ focusElem.focus();
7721
+ }
6733
7722
  }
6734
7723
  }
6735
7724
  };
@@ -6738,7 +7727,7 @@
6738
7727
  AlertComponent.decorators = [
6739
7728
  { type: i0.Component, args: [{
6740
7729
  selector: 'desy-alert',
6741
- template: "<div #alertWrapper\r\n [id]=\"id\" [class]=\"classes ? classes : null\" *ngIf=\"active\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\">\r\n <ng-template #container></ng-template>\r\n <ng-container *ngTemplateOutlet=\"caller; context:callerContext\"></ng-container>\r\n</div>\r\n\r\n"
7730
+ template: "<div #alertWrapper\r\n [id]=\"id\" [class]=\"classes ? classes : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\">\r\n <ng-container *ngIf=\"active\">\r\n <ng-template #container></ng-template>\r\n <ng-container *ngTemplateOutlet=\"caller; context:callerContext\"></ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n"
6742
7731
  },] }
6743
7732
  ];
6744
7733
  AlertComponent.ctorParameters = function () { return [
@@ -7754,7 +8743,7 @@
7754
8743
  PaginationComponent.decorators = [
7755
8744
  { type: i0.Component, args: [{
7756
8745
  selector: 'desy-pagination',
7757
- template: "<div [attr.id]=\"id ? id : null\" [class]=\"['lg:flex lg:flex-wrap lg:align-center', classesContainer] | makeHtmlList\">\r\n <ng-container *ngIf=\"hasSelect\">\r\n <p class=\"w-full mb-xs text-sm text-neutral-dark\">\r\n Selecciona una p\u00E1gina para cargar datos\r\n </p>\r\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <desy-button (clickEvent)=\"previous()\" [id]=\"getIdPrefix() + '-previous'\"\r\n [html]=\"previousIcon + prefix + previousText + getSuffix(currentPage - 2)\" [disabled]=\"currentPage === 1 || !hasPrevious\"\r\n classes=\"c-button--sm c-button--transparent mr-xs\"></desy-button>\r\n <desy-listbox [id]=\"id + '-listbox'\"\r\n [idPrefix]=\"idPrefix\"\r\n [text]=\"'P\u00E1gina ' + getActiveItemText()\"\r\n [classes]=\"'c-listbox--sm c-listbox--transparent mr-xs'\"\r\n [doesChangeButtonText]=\"true\"\r\n [label]=\"{ text: 'Selecciona una p\u00E1gina para cargar datos', classes: 'sr-only' }\"\r\n [(items)]=\"items\"\r\n (activeItemChange)=\"changePage(+$event.text)\"></desy-listbox>\r\n <desy-button (clickEvent)=\"next()\" [id]=\"getIdPrefix() + '-next'\"\r\n [html]=\"prefix + nextText + getSuffix(currentPage) + nextIcon\" [disabled]=\"currentPage === nPages || !hasNext\"\r\n classes=\"c-button--sm c-button--transparent mr-xs\"></desy-button>\r\n </nav>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasSelect\">\r\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ul class=\"flex flex-wrap\">\r\n <li *ngFor=\"let item of items; index as i\">\r\n <desy-button *ngIf=\"item.active\" [id]=\"getButtonId(i)\"\r\n [html]=\"'<strong>' + prefix + (i + 1) + getSuffix(i) + '</strong>'\"\r\n classes=\"c-button--primary c-button--disabled mb-sm mr-sm\"\r\n disabled=\"true\" ariaCurrent=\"page\" tabindex=\"-1\" ></desy-button>\r\n <desy-button *ngIf=\"!item.active\" [id]=\"getButtonId(i)\"\r\n [html]=\"prefix + (i + 1) + getSuffix(i)\"\r\n (clickEvent)=\"changePage(i + 1)\"\r\n classes=\"mb-sm mr-sm\"></desy-button>\r\n </li>\r\n </ul>\r\n </nav>\r\n </ng-container>\r\n <p class=\"block lg:ml-auto text-sm text-neutral-dark\">\r\n <span class=\"sr-only\">Posici\u00F3n de paginaci\u00F3n: </span>{{(currentPage - 1) * itemsPerPage + 1}} - {{getLastItemNumber(currentPage - 1)}} de {{totalItems}}\r\n </p>\r\n</div>\r\n"
8746
+ template: "<div [attr.id]=\"id ? id : null\" [class]=\"['lg:flex lg:flex-wrap lg:align-center', classesContainer] | makeHtmlList\">\r\n <ng-container *ngIf=\"hasSelect\">\r\n <p class=\"w-full mb-xs text-sm text-neutral-dark\">\r\n Selecciona una p\u00E1gina para cargar datos\r\n </p>\r\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <desy-button (clickEvent)=\"previous()\" [id]=\"getIdPrefix() + '-previous'\"\r\n [html]=\"previousIcon + prefix + previousText + getSuffix(currentPage - 2)\" [disabled]=\"currentPage === 1 || !hasPrevious\"\r\n classes=\"c-button--sm c-button--transparent mr-xs\"></desy-button>\r\n <desy-listbox [id]=\"id + '-listbox'\"\r\n [idPrefix]=\"idPrefix\"\r\n [text]=\"'P\u00E1gina ' + getActiveItemText()\"\r\n [classes]=\"'c-listbox--sm c-listbox--transparent mr-xs'\"\r\n [classesTooltip]=\"'max-h-52 overflow-y-auto'\"\r\n [doesChangeButtonText]=\"true\"\r\n [label]=\"{ text: 'Selecciona una p\u00E1gina para cargar datos', classes: 'sr-only' }\"\r\n [(items)]=\"items\"\r\n (activeItemChange)=\"changePage(+$event.text)\"></desy-listbox>\r\n <desy-button (clickEvent)=\"next()\" [id]=\"getIdPrefix() + '-next'\"\r\n [html]=\"prefix + nextText + getSuffix(currentPage) + nextIcon\" [disabled]=\"currentPage === nPages || !hasNext\"\r\n classes=\"c-button--sm c-button--transparent mr-xs\"></desy-button>\r\n </nav>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasSelect\">\r\n <nav [class]=\"['flex flex-wrap items-center flex-1 mb-base lg:mb-0 text-sm', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ul class=\"flex flex-wrap\">\r\n <li *ngFor=\"let item of items; index as i\">\r\n <desy-button *ngIf=\"item.active\" [id]=\"getButtonId(i)\"\r\n [html]=\"'<strong>' + prefix + (i + 1) + getSuffix(i) + '</strong>'\"\r\n classes=\"c-button--primary c-button--disabled mb-sm mr-sm\"\r\n disabled=\"true\" ariaCurrent=\"page\" tabindex=\"-1\" ></desy-button>\r\n <desy-button *ngIf=\"!item.active\" [id]=\"getButtonId(i)\"\r\n [html]=\"prefix + (i + 1) + getSuffix(i)\"\r\n (clickEvent)=\"changePage(i + 1)\"\r\n classes=\"mb-sm mr-sm\"></desy-button>\r\n </li>\r\n </ul>\r\n </nav>\r\n </ng-container>\r\n <p class=\"block lg:ml-auto text-sm text-neutral-dark\">\r\n <span class=\"sr-only\">Posici\u00F3n de paginaci\u00F3n: </span>{{(currentPage - 1) * itemsPerPage + 1}} - {{getLastItemNumber(currentPage - 1)}} de {{totalItems}}\r\n </p>\r\n</div>\r\n"
7758
8747
  },] }
7759
8748
  ];
7760
8749
  PaginationComponent.propDecorators = {
@@ -8258,6 +9247,11 @@
8258
9247
  DateInputDayComponent,
8259
9248
  DateInputMonthComponent,
8260
9249
  DateInputYearComponent,
9250
+ TreeComponent,
9251
+ TreeSubComponent,
9252
+ TreeItemComponent,
9253
+ TreeCheckboxComponent,
9254
+ TreeItemsGeneratorComponent,
8261
9255
  ConditionDirective,
8262
9256
  ],
8263
9257
  imports: [
@@ -8294,6 +9288,10 @@
8294
9288
  DateInputDayComponent,
8295
9289
  DateInputMonthComponent,
8296
9290
  DateInputYearComponent,
9291
+ TreeComponent,
9292
+ TreeSubComponent,
9293
+ TreeItemComponent,
9294
+ TreeItemsGeneratorComponent,
8297
9295
  ConditionDirective
8298
9296
  ]
8299
9297
  },] }
@@ -8495,6 +9493,80 @@
8495
9493
  },] }
8496
9494
  ];
8497
9495
 
9496
+ var ToggleOffStateComponent = /** @class */ (function (_super) {
9497
+ __extends(ToggleOffStateComponent, _super);
9498
+ function ToggleOffStateComponent() {
9499
+ return _super !== null && _super.apply(this, arguments) || this;
9500
+ }
9501
+ return ToggleOffStateComponent;
9502
+ }(AccessibilityComponent));
9503
+ ToggleOffStateComponent.decorators = [
9504
+ { type: i0.Component, args: [{
9505
+ selector: 'desy-toggle-off-state',
9506
+ template: "<ng-template #contentTemplateOffState>\r\n <ng-content></ng-content>\r\n</ng-template>"
9507
+ },] }
9508
+ ];
9509
+ ToggleOffStateComponent.propDecorators = {
9510
+ content: [{ type: i0.ViewChild, args: ['contentTemplateOffState', { static: true },] }],
9511
+ classes: [{ type: i0.Input }]
9512
+ };
9513
+
9514
+ var ToggleOnStateComponent = /** @class */ (function (_super) {
9515
+ __extends(ToggleOnStateComponent, _super);
9516
+ function ToggleOnStateComponent() {
9517
+ return _super !== null && _super.apply(this, arguments) || this;
9518
+ }
9519
+ return ToggleOnStateComponent;
9520
+ }(AccessibilityComponent));
9521
+ ToggleOnStateComponent.decorators = [
9522
+ { type: i0.Component, args: [{
9523
+ selector: 'desy-toggle-on-state',
9524
+ template: "<ng-template #contentTemplateOnState>\r\n <ng-content></ng-content>\r\n</ng-template>"
9525
+ },] }
9526
+ ];
9527
+ ToggleOnStateComponent.propDecorators = {
9528
+ content: [{ type: i0.ViewChild, args: ['contentTemplateOnState', { static: true },] }],
9529
+ classes: [{ type: i0.Input }]
9530
+ };
9531
+
9532
+ var ToggleComponent = /** @class */ (function (_super) {
9533
+ __extends(ToggleComponent, _super);
9534
+ function ToggleComponent() {
9535
+ var _this = _super.apply(this, __spread(arguments)) || this;
9536
+ _this.clickEvent = new i0.EventEmitter();
9537
+ _this.pressedChange = new i0.EventEmitter();
9538
+ return _this;
9539
+ }
9540
+ ToggleComponent.prototype.onClick = function (event) {
9541
+ this.pressed = !this.pressed;
9542
+ this.pressedChange.emit(this.pressed);
9543
+ this.clickEvent.emit(event);
9544
+ };
9545
+ return ToggleComponent;
9546
+ }(AccessibilityComponent));
9547
+ ToggleComponent.decorators = [
9548
+ { type: i0.Component, args: [{
9549
+ selector: 'desy-toggle',
9550
+ template: "<!-- toggle -->\r\n<div class=\"relative\">\r\n <button *ngIf=\"isSwitch\"\r\n (click)=\"onClick($event)\"\r\n [type]=\"'button'\"\r\n [class]=\"pressed ? (classes + ' ' + contentTemplateOnState?.classes) : (classes + ' ' + contentTemplateOffState?.classes)\"\r\n [attr.aria-checked]=\"pressed ? 'true' : 'false'\"\r\n \r\n [attr.id]=\"id ? id : null\" \r\n [attr.role]=\"'switch'\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\" \r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" \r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\" \r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" \r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" \r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" \r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n \r\n <span [class]=\"pressed ? 'hidden' : ''\"><ng-container *ngTemplateOutlet=\"contentTemplateOffState?.content\"></ng-container></span>\r\n <span [class]=\"pressed ? '' : 'hidden'\"><ng-container *ngTemplateOutlet=\"contentTemplateOnState?.content\"></ng-container></span>\r\n </button>\r\n\r\n <button *ngIf=\"!isSwitch\"\r\n (click)=\"onClick($event)\"\r\n [type]=\"'button'\"\r\n [class]=\"pressed ? (classes + ' ' + contentTemplateOnState?.classes) : (classes + ' ' + contentTemplateOffState?.classes)\"\r\n [attr.aria-pressed]=\"pressed ? 'true' : 'false'\"\r\n [attr.id]=\"id ? id : null\" \r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\" \r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" \r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\" \r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" \r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" \r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" \r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n \r\n <span [class]=\"pressed ? 'hidden' : ''\"><ng-container *ngTemplateOutlet=\"contentTemplateOffState?.content\"></ng-container></span>\r\n <span [class]=\"pressed ? '' : 'hidden'\"><ng-container *ngTemplateOutlet=\"contentTemplateOnState?.content\"></ng-container></span>\r\n </button>\r\n</div>\r\n<!-- /toggle -->"
9551
+ },] }
9552
+ ];
9553
+ ToggleComponent.propDecorators = {
9554
+ id: [{ type: i0.Input }],
9555
+ isSwitch: [{ type: i0.Input }],
9556
+ pressed: [{ type: i0.Input }],
9557
+ classes: [{ type: i0.Input }],
9558
+ clickEvent: [{ type: i0.Output }],
9559
+ pressedChange: [{ type: i0.Output }],
9560
+ contentTemplateOnState: [{ type: i0.ContentChildren, args: [ToggleOnStateComponent,] }],
9561
+ contentTemplateOffState: [{ type: i0.ContentChildren, args: [ToggleOffStateComponent,] }]
9562
+ };
9563
+ __decorate([
9564
+ DesyContentChild()
9565
+ ], ToggleComponent.prototype, "contentTemplateOnState", void 0);
9566
+ __decorate([
9567
+ DesyContentChild()
9568
+ ], ToggleComponent.prototype, "contentTemplateOffState", void 0);
9569
+
8498
9570
  var DesyButtonsModule = /** @class */ (function () {
8499
9571
  function DesyButtonsModule() {
8500
9572
  }
@@ -8509,7 +9581,10 @@
8509
9581
  ListboxComponent,
8510
9582
  PillComponent,
8511
9583
  ListboxItemComponent,
8512
- ListboxLabelComponent
9584
+ ListboxLabelComponent,
9585
+ ToggleComponent,
9586
+ ToggleOnStateComponent,
9587
+ ToggleOffStateComponent
8513
9588
  ],
8514
9589
  imports: [
8515
9590
  common.CommonModule,
@@ -8524,7 +9599,10 @@
8524
9599
  ListboxComponent,
8525
9600
  PillComponent,
8526
9601
  ListboxItemComponent,
8527
- ListboxLabelComponent
9602
+ ListboxLabelComponent,
9603
+ ToggleComponent,
9604
+ ToggleOnStateComponent,
9605
+ ToggleOffStateComponent
8528
9606
  ]
8529
9607
  },] }
8530
9608
  ];
@@ -8603,7 +9681,8 @@
8603
9681
  imports: [
8604
9682
  common.CommonModule,
8605
9683
  SharedModule,
8606
- DesyCommonsModule
9684
+ DesyCommonsModule,
9685
+ DesyButtonsModule
8607
9686
  ],
8608
9687
  exports: [
8609
9688
  BreadcrumbsComponent,
@@ -8807,7 +9886,6 @@
8807
9886
  DesyAngularModule.decorators = [
8808
9887
  { type: i0.NgModule, args: [{
8809
9888
  imports: [
8810
- animations$1.BrowserAnimationsModule,
8811
9889
  DesyButtonsModule,
8812
9890
  DesyCommonsModule,
8813
9891
  DesyFormsModule,
@@ -8952,41 +10030,50 @@
8952
10030
  exports.TextareaComponent = TextareaComponent;
8953
10031
  exports.TitleComponent = TitleComponent;
8954
10032
  exports.TooltipContentComponent = TooltipContentComponent;
10033
+ exports.TreeComponent = TreeComponent;
10034
+ exports.TreeItemComponent = TreeItemComponent;
10035
+ exports.TreeItemsGeneratorComponent = TreeItemsGeneratorComponent;
10036
+ exports.TreeSubComponent = TreeSubComponent;
8955
10037
  exports.summaryTextOrSummaryHtmlRequiredFunction = summaryTextOrSummaryHtmlRequiredFunction;
8956
- exports.ɵa = AccessibilityAndContentRequiredComponent;
8957
- exports.ɵb = AccessibilityAndTextOrHtmlRequiredComponent;
8958
- exports.ɵba = CustomInnerContentDirective;
8959
- exports.ɵbb = TooltipComponent;
8960
- exports.ɵbc = TemplateDrivenWrapperComponent;
8961
- exports.ɵbd = DateInputDividerComponent;
8962
- exports.ɵbe = DateInputDayComponent;
8963
- exports.ɵbf = DateInputMonthComponent;
8964
- exports.ɵbg = DateInputYearComponent;
8965
- exports.ɵbh = FocusClickedCellDirective;
8966
- exports.ɵc = DesyContentChild;
8967
- exports.ɵd = AccessibilityComponent;
10038
+ exports.ɵa = AccessibilityComponent;
10039
+ exports.ɵb = AccessibilityAndContentRequiredComponent;
10040
+ exports.ɵba = AttributeChangeDirective;
10041
+ exports.ɵbb = InnerContentDirective;
10042
+ exports.ɵbc = ClickOutsideDirective;
10043
+ exports.ɵbd = ContentChangeDirective;
10044
+ exports.ɵbe = ContentEmptyDirective;
10045
+ exports.ɵbf = CustomInnerContentDirective;
10046
+ exports.ɵbg = TooltipComponent;
10047
+ exports.ɵbh = TemplateDrivenWrapperComponent;
10048
+ exports.ɵbi = DateInputDividerComponent;
10049
+ exports.ɵbj = DateInputDayComponent;
10050
+ exports.ɵbk = DateInputMonthComponent;
10051
+ exports.ɵbl = DateInputYearComponent;
10052
+ exports.ɵbm = FocusClickedCellDirective;
10053
+ exports.ɵc = AccessibilityAndTextOrHtmlRequiredComponent;
10054
+ exports.ɵd = DesyContentChild;
8968
10055
  exports.ɵe = ContentBaseComponent;
8969
10056
  exports.ɵf = FormFieldComponent;
8970
10057
  exports.ɵg = SelectItemComponent;
8971
10058
  exports.ɵh = DesyOnInputChange;
8972
10059
  exports.ɵi = InputGroupItemComponent;
8973
10060
  exports.ɵj = DateInputItemComponent;
8974
- exports.ɵk = HeaderNavigationItemComponent;
8975
- exports.ɵl = MenubaritemDirective;
8976
- exports.ɵm = RowDirective;
8977
- exports.ɵn = CellDirective;
8978
- exports.ɵo = TabItemComponent;
8979
- exports.ɵp = PanelComponent;
8980
- exports.ɵq = SharedModule;
8981
- exports.ɵr = TextOrHtmlRequiredComponent;
8982
- exports.ɵs = InnerHtmlPipe;
8983
- exports.ɵt = MakeHtmlListPipe;
8984
- exports.ɵu = ExternalHrefPipe;
8985
- exports.ɵv = AttributeChangeDirective;
8986
- exports.ɵw = InnerContentDirective;
8987
- exports.ɵx = ClickOutsideDirective;
8988
- exports.ɵy = ContentChangeDirective;
8989
- exports.ɵz = ContentEmptyDirective;
10061
+ exports.ɵk = ITreeItem;
10062
+ exports.ɵl = TreeCheckboxComponent;
10063
+ exports.ɵm = HeaderNavigationItemComponent;
10064
+ exports.ɵn = MenubaritemDirective;
10065
+ exports.ɵo = RowDirective;
10066
+ exports.ɵp = CellDirective;
10067
+ exports.ɵq = TabItemComponent;
10068
+ exports.ɵr = PanelComponent;
10069
+ exports.ɵs = ToggleComponent;
10070
+ exports.ɵt = ToggleOnStateComponent;
10071
+ exports.ɵu = ToggleOffStateComponent;
10072
+ exports.ɵv = SharedModule;
10073
+ exports.ɵw = TextOrHtmlRequiredComponent;
10074
+ exports.ɵx = InnerHtmlPipe;
10075
+ exports.ɵy = MakeHtmlListPipe;
10076
+ exports.ɵz = ExternalHrefPipe;
8990
10077
 
8991
10078
  Object.defineProperty(exports, '__esModule', { value: true });
8992
10079