desy-angular 5.1.3 → 5.2.0

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 (114) hide show
  1. package/bundles/desy-angular.umd.js +173 -667
  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 +15 -15
  6. package/desy-angular.metadata.json +1 -1
  7. package/esm2015/desy-angular.js +16 -16
  8. package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +2 -2
  9. package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +2 -24
  10. package/esm2015/lib/desy-buttons/components/pill/pill.component.js +1 -1
  11. package/esm2015/lib/desy-forms/components/character-count/character-count.component.js +2 -17
  12. package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +1 -4
  13. package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +1 -10
  14. package/esm2015/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.js +1 -9
  15. package/esm2015/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.js +1 -9
  16. package/esm2015/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.js +1 -9
  17. package/esm2015/lib/desy-forms/components/date-input/date-input.component.js +2 -15
  18. package/esm2015/lib/desy-forms/components/file-upload/file-upload.component.js +1 -15
  19. package/esm2015/lib/desy-forms/components/input/input.component.js +12 -16
  20. package/esm2015/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.js +1 -9
  21. package/esm2015/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.js +1 -9
  22. package/esm2015/lib/desy-forms/components/input-group/input-group.component.js +9 -20
  23. package/esm2015/lib/desy-forms/components/radios/radio-item/radio-item.component.js +1 -4
  24. package/esm2015/lib/desy-forms/components/radios/radios.component.js +1 -10
  25. package/esm2015/lib/desy-forms/components/search-bar/search-bar.component.js +1 -17
  26. package/esm2015/lib/desy-forms/components/select/select.component.js +9 -19
  27. package/esm2015/lib/desy-forms/components/textarea/textarea.component.js +3 -15
  28. package/esm2015/lib/desy-forms/components/tree/tree-item/tree-item.component.js +1 -1
  29. package/esm2015/lib/desy-forms/directives/condition.directive.js +2 -5
  30. package/esm2015/lib/desy-modals/components/dialog/dialog.component.js +1 -7
  31. package/esm2015/lib/desy-modals/components/modal/modal.component.js +2 -13
  32. package/esm2015/lib/desy-modals/services/dialog.service.js +8 -9
  33. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.js +2 -8
  34. package/esm2015/lib/desy-nav/components/error-summary/error-summary.component.js +4 -10
  35. package/esm2015/lib/desy-nav/components/footer/footer.component.js +2 -2
  36. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +1 -4
  37. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation.component.js +1 -4
  38. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.js +2 -5
  39. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +2 -5
  40. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +2 -5
  41. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +2 -15
  42. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +2 -8
  43. package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +2 -14
  44. package/esm2015/lib/desy-nav/components/nav/nav.component.js +2 -18
  45. package/esm2015/lib/desy-nav/components/notification/notification.component.js +2 -10
  46. package/esm2015/lib/desy-nav/components/skip-link/skip-link.component.js +2 -11
  47. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +2 -11
  48. package/esm2015/lib/desy-tables/components/table/table.component.js +2 -14
  49. package/esm2015/lib/desy-tables/components/table-advanced/table-advanced.component.js +2 -5
  50. package/esm2015/lib/desy-views/components/accordion/accordion.component.js +2 -13
  51. package/esm2015/lib/desy-views/components/alert/alert.component.js +1 -7
  52. package/esm2015/lib/desy-views/components/collapsible/collapsible.component.js +3 -10
  53. package/esm2015/lib/desy-views/components/description-list/description-list.component.js +2 -8
  54. package/esm2015/lib/desy-views/components/details/details.component.js +1 -12
  55. package/esm2015/lib/desy-views/components/item/item.component.js +3 -13
  56. package/esm2015/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.js +11 -0
  57. package/esm2015/lib/desy-views/components/media-object/media-object.component.js +17 -12
  58. package/esm2015/lib/desy-views/components/status/status.component.js +3 -11
  59. package/esm2015/lib/desy-views/components/status-item/status-item.component.js +2 -10
  60. package/esm2015/lib/desy-views/components/tabs/tabs.component.js +6 -18
  61. package/esm2015/lib/desy-views/components/tooltip/tooltip.component.js +2 -10
  62. package/esm2015/lib/desy-views/desy-views.module.js +4 -1
  63. package/esm2015/lib/desy-views/services/alert.service.js +8 -9
  64. package/esm2015/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.js +1 -1
  65. package/esm2015/lib/shared/components/text-or-html-required/text-or-html-required.component.js +1 -13
  66. package/esm2015/lib/shared/shared.module.js +1 -4
  67. package/esm2015/lib/shared/utils/search-utils.js +22 -1
  68. package/fesm2015/desy-angular.js +123 -593
  69. package/fesm2015/desy-angular.js.map +1 -1
  70. package/lib/desy-forms/components/character-count/character-count.component.d.ts +0 -1
  71. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +2 -3
  72. package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +2 -3
  73. package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +2 -3
  74. package/lib/desy-forms/components/date-input/date-input.component.d.ts +2 -4
  75. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +1 -4
  76. package/lib/desy-forms/components/input/input.component.d.ts +3 -2
  77. package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +2 -3
  78. package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +2 -3
  79. package/lib/desy-forms/components/input-group/input-group.component.d.ts +4 -2
  80. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +2 -5
  81. package/lib/desy-forms/components/select/select.component.d.ts +5 -5
  82. package/lib/desy-forms/components/textarea/textarea.component.d.ts +2 -3
  83. package/lib/desy-forms/directives/condition.directive.d.ts +2 -2
  84. package/lib/desy-modals/components/modal/modal.component.d.ts +2 -4
  85. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +0 -1
  86. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +0 -1
  87. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +0 -1
  88. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +0 -1
  89. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +0 -1
  90. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +0 -1
  91. package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +2 -4
  92. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +0 -1
  93. package/lib/desy-nav/components/menubar/menubar.component.d.ts +0 -1
  94. package/lib/desy-nav/components/nav/nav.component.d.ts +2 -4
  95. package/lib/desy-nav/components/notification/notification.component.d.ts +2 -4
  96. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +0 -1
  97. package/lib/desy-tables/components/table/table.component.d.ts +0 -1
  98. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +0 -1
  99. package/lib/desy-views/components/accordion/accordion.component.d.ts +2 -4
  100. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +2 -3
  101. package/lib/desy-views/components/description-list/description-list.component.d.ts +0 -1
  102. package/lib/desy-views/components/details/details.component.d.ts +1 -5
  103. package/lib/desy-views/components/item/item.component.d.ts +2 -5
  104. package/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.d.ts +3 -0
  105. package/lib/desy-views/components/media-object/media-object.component.d.ts +7 -4
  106. package/lib/desy-views/components/status/status.component.d.ts +1 -3
  107. package/lib/desy-views/components/status-item/status-item.component.d.ts +2 -4
  108. package/lib/desy-views/components/tabs/tabs.component.d.ts +2 -4
  109. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +2 -4
  110. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +1 -3
  111. package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +3 -11
  112. package/package.json +1 -1
  113. package/esm2015/lib/shared/directives/content-empty.directive.js +0 -86
  114. package/lib/shared/directives/content-empty.directive.d.ts +0 -26
@@ -56,9 +56,6 @@ ContentBaseComponent.propDecorators = {
56
56
  };
57
57
 
58
58
  class TextOrHtmlRequiredComponent {
59
- ngOnChanges(changes) {
60
- textOrHtmlRequiredFunction(this.text, this.html);
61
- }
62
59
  }
63
60
  TextOrHtmlRequiredComponent.decorators = [
64
61
  { type: Component, args: [{
@@ -69,16 +66,7 @@ TextOrHtmlRequiredComponent.decorators = [
69
66
  TextOrHtmlRequiredComponent.propDecorators = {
70
67
  text: [{ type: Input }],
71
68
  html: [{ type: Input }]
72
- };
73
- /**
74
- * funcion que comprueba si existe text o html
75
- * salta error si no es así
76
- */
77
- function textOrHtmlRequiredFunction(text, html) {
78
- if (!html && !text) {
79
- throw new Error(`html or text are required`);
80
- }
81
- }
69
+ };
82
70
 
83
71
  class AccessibilityAndTextOrHtmlRequiredComponent extends TextOrHtmlRequiredComponent {
84
72
  }
@@ -409,7 +397,7 @@ DropdownComponent.KEY_CODE_ESC = 'Escape';
409
397
  DropdownComponent.decorators = [
410
398
  { type: Component, args: [{
411
399
  selector: 'desy-dropdown',
412
- 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"
400
+ template: "<div [class]=\"classesContainer ? classesContainer : 'relative'\">\r\n <button (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\" 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"
413
401
  },] }
414
402
  ];
415
403
  DropdownComponent.propDecorators = {
@@ -590,18 +578,6 @@ class ListboxComponent extends AccessibilityAndTextOrHtmlRequiredComponent {
590
578
  }
591
579
  ngOnChanges() {
592
580
  setTimeout(() => {
593
- /*
594
- * Parámetros obligatorios
595
- */
596
- if (!this.id) {
597
- throw Error('id is required');
598
- }
599
- if (!this.items && !this.itemComponentList) {
600
- throw Error('items are required');
601
- }
602
- if (!this.label && !this.labelComponent) {
603
- throw Error('label is required');
604
- }
605
581
  if (this.itemComponentList && this.itemComponentList.length > 0) {
606
582
  if (this.itemComponentSubscriptions) {
607
583
  this.itemComponentSubscriptions.forEach(s => s.unsubscribe());
@@ -617,16 +593,6 @@ class ListboxComponent extends AccessibilityAndTextOrHtmlRequiredComponent {
617
593
  else {
618
594
  this.itemList = this.items;
619
595
  }
620
- if (this.items) {
621
- for (const item of this.items) {
622
- if (item) {
623
- textOrHtmlRequiredFunction(item.text, item.html);
624
- }
625
- else {
626
- throw Error('item is ' + item);
627
- }
628
- }
629
- }
630
596
  this.checkActiveItems();
631
597
  });
632
598
  }
@@ -1140,21 +1106,9 @@ class TextareaComponent extends FormFieldComponent {
1140
1106
  super();
1141
1107
  this.inputTransform = (value) => value;
1142
1108
  }
1143
- ngOnChanges(changes) {
1144
- this.checkRequiredParams();
1109
+ ngOnChanges() {
1145
1110
  this.writeValue(this.value);
1146
1111
  }
1147
- checkRequiredParams() {
1148
- if (!this.id) {
1149
- throw Error('id is required');
1150
- }
1151
- if (!this.name) {
1152
- throw Error('name is required');
1153
- }
1154
- if (!this.labelRef && !this.labelData && !this.labelText) {
1155
- throw Error('label is required');
1156
- }
1157
- }
1158
1112
  getRows() {
1159
1113
  return this.rows ? this.rows : TextareaComponent.DEFAULT_ROWS;
1160
1114
  }
@@ -1176,7 +1130,7 @@ TextareaComponent.DEFAULT_ROWS = 5;
1176
1130
  TextareaComponent.decorators = [
1177
1131
  { type: Component, args: [{
1178
1132
  selector: 'desy-textarea',
1179
- template: "<div [class]=\"['c-form-group', this.formGroupClasses] | makeHtmlList\" [ngClass]=\"{'c-form-group--error': hasErrorsMessage()}\">\r\n\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]=\"labelData.classes\"\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\" [for]=\"id\"></desy-label>\r\n\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\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\r\n\r\n <textarea #textarea\r\n [class]=\"['block mt-sm px-base py-sm border-black rounded font-semibold leading-normal 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 [value]=\"value\" (input)=\"onInput($event.target.value)\"\r\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base' : hasErrorsMessage()}\"\r\n [rows]=\"getRows()\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\"\r\n [attr.autocomplete]=\"autocomplete ? autocomplete : null\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.maxlength]=\"maxlength\"\r\n\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\"></textarea>\r\n</div>\r\n",
1133
+ template: "<div [class]=\"['c-form-group', this.formGroupClasses] | makeHtmlList\" [ngClass]=\"{'c-form-group--error': hasErrorsMessage()}\">\r\n\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]=\"labelData.classes\"\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\" [for]=\"id\"></desy-label>\r\n\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\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\r\n\r\n <textarea #textarea\r\n [class]=\"['block mt-sm px-base py-sm border-black rounded font-semibold leading-normal 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 [value]=\"value ? value : ''\" (input)=\"onInput($event.target.value)\"\r\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base' : hasErrorsMessage()}\"\r\n [rows]=\"getRows()\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\"\r\n [attr.autocomplete]=\"autocomplete ? autocomplete : null\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.maxlength]=\"maxlength\"\r\n\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\"></textarea>\r\n</div>\r\n",
1180
1134
  providers: [
1181
1135
  {
1182
1136
  provide: NG_VALUE_ACCESSOR,
@@ -1209,7 +1163,6 @@ class CharacterCountComponent extends FormFieldComponent {
1209
1163
  setTimeout(() => this.textarea.writeValue(this.value), 50);
1210
1164
  }
1211
1165
  ngOnChanges(changes) {
1212
- this.checkRequired();
1213
1166
  if (this.textarea) {
1214
1167
  setTimeout(() => this.textarea.ngOnChanges(changes), 50);
1215
1168
  }
@@ -1250,20 +1203,6 @@ class CharacterCountComponent extends FormFieldComponent {
1250
1203
  }
1251
1204
  return length;
1252
1205
  }
1253
- checkRequired() {
1254
- if (!this.id) {
1255
- throw Error('id is required');
1256
- }
1257
- if (!this.name) {
1258
- throw Error('name is required');
1259
- }
1260
- if (!this.maxlength && !this.maxwords) {
1261
- throw Error('maxlength or maxwords are required');
1262
- }
1263
- if (!this.hasLabel()) {
1264
- throw Error('label is required');
1265
- }
1266
- }
1267
1206
  registerOnChange(fn) {
1268
1207
  this.onChange = fn;
1269
1208
  if (this.textarea) {
@@ -1294,7 +1233,7 @@ class CharacterCountComponent extends FormFieldComponent {
1294
1233
  CharacterCountComponent.decorators = [
1295
1234
  { type: Component, args: [{
1296
1235
  selector: 'desy-character-count',
1297
- template: "<div>\r\n <desy-textarea\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [describedBy]=\"id + '-info'\"\r\n [rows]=\"rows\"\r\n [placeholder]=\"placeholder\"\r\n formGroupClasses= \"['' + (formGroupClasses ? formGroupClasses : 'mb-0')] | makeHtmlList\"\r\n [classes]=\"['js-character-count', hasErrorsMessage() ? 'border-alert-base ring-2 ring-alert-base' : null, classes] | makeHtmlList\"\r\n [labelRef]=\"labelRef\" [labelData]=\"labelData\" [labelText]=\"labelText\"\r\n [hintRef]=\"hintRef\" [hintData]=\"hintData\" [hintText]=\"hintText\"\r\n [errorMessageRef]=\"errorMessageRef\" [errorMessageData]=\"errorMessageData\" [errorMessageText]=\"errorMessageText\"\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\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\"></desy-textarea>\r\n\r\n <desy-hint *ngIf=\"!!displayCountMessage\"\r\n [id]=\"id + '-info'\" [classes]=\"['mt-xs text-sm', countMessageClasses] | makeHtmlList\" ariaLive=\"polite\"\r\n [text]=\"'Puedes escribir hasta ' + remaining + (maxlength ? ' caracteres' : ' palabras')\"></desy-hint>\r\n</div>\r\n",
1236
+ template: "<div>\r\n <desy-textarea\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [describedBy]=\"id + '-info'\"\r\n [rows]=\"rows\"\r\n [placeholder]=\"placeholder\"\r\n [formGroupClasses]=\"[formGroupClasses ? formGroupClasses : 'mb-0'] | makeHtmlList\"\r\n [classes]=\"['js-character-count', hasErrorsMessage() ? 'border-alert-base ring-2 ring-alert-base' : null, classes] | makeHtmlList\"\r\n [labelRef]=\"labelRef\" [labelData]=\"labelData\" [labelText]=\"labelText\"\r\n [hintRef]=\"hintRef\" [hintData]=\"hintData\" [hintText]=\"hintText\"\r\n [errorMessageRef]=\"errorMessageRef\" [errorMessageData]=\"errorMessageData\" [errorMessageText]=\"errorMessageText\"\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\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\"></desy-textarea>\r\n\r\n <desy-hint *ngIf=\"!!displayCountMessage\"\r\n [id]=\"id + '-info'\" [classes]=\"['mt-xs text-sm', countMessageClasses] | makeHtmlList\" ariaLive=\"polite\"\r\n [text]=\"'Puedes escribir hasta ' + remaining + (maxlength ? ' caracteres' : ' palabras')\"></desy-hint>\r\n</div>\r\n",
1298
1237
  providers: [
1299
1238
  {
1300
1239
  provide: NG_VALUE_ACCESSOR,
@@ -1320,8 +1259,13 @@ CharacterCountComponent.propDecorators = {
1320
1259
  };
1321
1260
 
1322
1261
  class InputComponent extends FormFieldComponent {
1262
+ constructor() {
1263
+ super(...arguments);
1264
+ // form group class - asignar clases a la etiqueta desy-input
1265
+ this.cfg = true;
1266
+ }
1323
1267
  ngOnChanges(changes) {
1324
- this.checkRequired();
1268
+ this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');
1325
1269
  }
1326
1270
  getErrorId() {
1327
1271
  return this.errorId ? this.errorId : super.getErrorId();
@@ -1335,22 +1279,11 @@ class InputComponent extends FormFieldComponent {
1335
1279
  }
1336
1280
  this.onChange(this.value);
1337
1281
  }
1338
- checkRequired() {
1339
- if (!this.id) {
1340
- throw Error('id is required');
1341
- }
1342
- if (!this.name) {
1343
- throw Error('name is required');
1344
- }
1345
- if (!this.hasLabel()) {
1346
- throw Error('label is required');
1347
- }
1348
- }
1349
1282
  }
1350
1283
  InputComponent.decorators = [
1351
1284
  { type: Component, args: [{
1352
1285
  selector: 'desy-input',
1353
- template: "\r\n<div [class]=\"['c-form-group', this.formGroupClasses] | makeHtmlList\" [ngClass]=\"{'c-form-group--error': hasErrorsMessage()}\">\r\n\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]=\"labelData.classes\"\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\" [for]=\"id\"></desy-label>\r\n\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\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\r\n <input [class]=\"['c-input block mt-sm 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',\r\n classes,\r\n getErrorId() ? 'border-alert-base ring-2 ring-alert-base' : null] | makeHtmlList\"\r\n [value]=\"value ? value : ''\" (input)=\"onInput($event.target.value)\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [type]=\"type ? type : 'text'\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"getErrorId() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"getErrorId() ? true : null\"\r\n [attr.autocomplete]=\"autocomplete ? autocomplete : null\"\r\n [attr.pattern]=\"pattern ? pattern : null\"\r\n [attr.inputmode]=\"inputmode ? inputmode : null\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.maxlength]=\"maxlength ? maxlength : null\"\r\n\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</div>\r\n",
1286
+ template: "\r\n\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]=\"labelData.classes\"\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\" [for]=\"id\"></desy-label>\r\n\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\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\r\n <input [class]=\"['c-input block mt-sm 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',\r\n classes,\r\n getErrorId() ? 'border-alert-base ring-2 ring-alert-base' : null] | makeHtmlList\"\r\n [value]=\"value ? value : ''\" (input)=\"onInput($event.target.value)\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [type]=\"type ? type : 'text'\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"getErrorId() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"getErrorId() ? true : null\"\r\n [attr.autocomplete]=\"autocomplete ? autocomplete : null\"\r\n [attr.pattern]=\"pattern ? pattern : null\"\r\n [attr.inputmode]=\"inputmode ? inputmode : null\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.maxlength]=\"maxlength ? maxlength : null\"\r\n\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",
1354
1287
  providers: [
1355
1288
  {
1356
1289
  provide: NG_VALUE_ACCESSOR,
@@ -1367,7 +1300,9 @@ InputComponent.propDecorators = {
1367
1300
  pattern: [{ type: Input }],
1368
1301
  inputmode: [{ type: Input }],
1369
1302
  placeholder: [{ type: Input }],
1370
- formGroupClasses: [{ type: Input }],
1303
+ cfg: [{ type: HostBinding, args: ['class.c-form-group',] }],
1304
+ cfgr: [{ type: HostBinding, args: ['class.c-form-group--error',] }],
1305
+ formGroupClasses: [{ type: Input }, { type: HostBinding, args: ['class',] }],
1371
1306
  classes: [{ type: Input }],
1372
1307
  autocomplete: [{ type: Input }],
1373
1308
  maxlength: [{ type: Input }],
@@ -1418,13 +1353,12 @@ OptionGroupComponent.propDecorators = {
1418
1353
  class SelectComponent extends FormFieldComponent {
1419
1354
  constructor() {
1420
1355
  super(...arguments);
1356
+ // form group class - asignar clases a la etiqueta desy-select
1357
+ this.cfg = true;
1421
1358
  this.contentInit = false;
1422
1359
  }
1423
- ngOnInit() {
1424
- this.checkRequiredParams();
1425
- }
1426
1360
  ngOnChanges(changes) {
1427
- this.checkRequiredParams();
1361
+ this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');
1428
1362
  }
1429
1363
  ngAfterContentInit() {
1430
1364
  this.contentInit = true;
@@ -1442,19 +1376,8 @@ class SelectComponent extends FormFieldComponent {
1442
1376
  }
1443
1377
  getItems() {
1444
1378
  const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;
1445
- if (this.contentInit && (!items || items.length === 0)) {
1446
- throw new Error(`items are required`);
1447
- }
1448
1379
  return items;
1449
1380
  }
1450
- checkRequiredParams() {
1451
- if (!this.id) {
1452
- throw Error('id is required');
1453
- }
1454
- if (!this.name) {
1455
- throw Error('name is required');
1456
- }
1457
- }
1458
1381
  isItemSelected(item) {
1459
1382
  return this.value ? this.value === item.value : item.selected;
1460
1383
  }
@@ -1465,7 +1388,7 @@ class SelectComponent extends FormFieldComponent {
1465
1388
  SelectComponent.decorators = [
1466
1389
  { type: Component, args: [{
1467
1390
  selector: 'desy-select',
1468
- template: "<div [class]=\"['c-form-group', this.formGroupClasses] | makeHtmlList\"\r\n [ngClass]=\"{'c-form-group--error': hasErrorsMessage()}\">\r\n <ng-container *ngIf=\"labelComponent\">\r\n <ng-content select=\"desy-label\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\r\n <desy-label *ngIf=\"!labelRef && labelData && !labelComponent\"\r\n [text]=\"labelData.text\"\r\n [html]=\"labelData.html\"\r\n [classes]=\"labelData.classes\"\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 && !labelComponent\" [text]=\"labelText\" [for]=\"id\"></desy-label>\r\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\r\n <ng-container *ngIf=\"hintComponent\">\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n</ng-container>\r\n <desy-hint *ngIf=\"!hintRef && hintData && !hintComponent\"\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 && !hintComponent\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\r\n\r\n <ng-container *ngIf=\"errorMessageComponent\">\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData && !errorMessageComponent\"\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 && !errorMessageComponent && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n <select\r\n [class]=\"['c-select block mt-sm transition duration-150 ease-in-out border-black rounded font-semibold focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base',\r\n classes,\r\n hasErrorsMessage() ? 'c-select--error border-alert-base ring-2 ring-alert-base' : null] | makeHtmlList\"\r\n [value]=\"value\" (input)=\"onInput($event.target.value)\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : 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 [disabled]=disabled>\r\n\r\n <ng-container *ngFor=\"let item of getItems()\">\r\n <optgroup *ngIf=\"isOptionGroup(item)\" [label]=\"item.label\" [attr.disabled]=\"item.disabled ? true : null\"\r\n [attr.role]=\"item?.role\"\r\n [attr.aria-label]=\"item?.ariaLabel\"\r\n [attr.aria-describedby]=\"item?.describedBy\"\r\n [attr.aria-labelledby]=\"item?.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item?.ariaHidden\"\r\n [attr.aria-disabled]=\"item?.ariaDisabled\"\r\n [attr.aria-controls]=\"item?.ariaControls\"\r\n [attr.aria-current]=\"item?.ariaCurrent\"\r\n [attr.aria-live]=\"item?.ariaLive\"\r\n [attr.aria-expanded]=\"item?.ariaExpanded\"\r\n [attr.aria-errormessage]=\"item?.ariaErrorMessage\"\r\n [attr.aria-haspopup]=\"item?.ariaHasPopup\"\r\n [attr.tabindex]=\"item?.tabindex\">>\r\n <option *ngFor=\"let subItem of item.items\"\r\n [value]=\"subItem.value\"\r\n [disabled]=\"subItem.disabled\"\r\n [selected]=\"isItemSelected(subItem)\"\r\n [attr.hidden]=\"subItem.hidden\"\r\n [attr.role]=\"subItem?.role\"\r\n [attr.aria-label]=\"subItem?.ariaLabel\"\r\n [attr.aria-describedby]=\"subItem?.describedBy\"\r\n [attr.aria-labelledby]=\"subItem?.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"subItem?.ariaHidden\"\r\n [attr.aria-disabled]=\"subItem?.ariaDisabled\"\r\n [attr.aria-controls]=\"subItem?.ariaControls\"\r\n [attr.aria-current]=\"subItem?.ariaCurrent\"\r\n [attr.aria-live]=\"subItem?.ariaLive\"\r\n [attr.aria-expanded]=\"subItem?.ariaExpanded\"\r\n [attr.aria-errormessage]=\"subItem?.ariaErrorMessage\"\r\n [attr.aria-haspopup]=\"subItem?.ariaHasPopup\"\r\n [attr.tabindex]=\"subItem?.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, text: subItem.text }\"></ng-container>\r\n </option>\r\n </optgroup>\r\n <option *ngIf=\"!isOptionGroup(item)\" [value]=\"item.value\" [disabled]=\"item.disabled ? true : null\" [selected]=\"isItemSelected(item)\"\r\n [attr.hidden]=\"item.hidden\"\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.describedBy ? item.describedBy : ariaDescribedBy\"\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-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.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </option>\r\n </ng-container>\r\n </select>\r\n</div>\r\n",
1391
+ template: "\r\n <ng-container *ngIf=\"labelComponent\">\r\n <ng-content select=\"desy-label\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\r\n <desy-label *ngIf=\"!labelRef && labelData && !labelComponent\"\r\n [text]=\"labelData.text\"\r\n [html]=\"labelData.html\"\r\n [classes]=\"labelData.classes\"\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 && !labelComponent\" [text]=\"labelText\" [for]=\"id\"></desy-label>\r\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\r\n <ng-container *ngIf=\"hintComponent\">\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n</ng-container>\r\n <desy-hint *ngIf=\"!hintRef && hintData && !hintComponent\"\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 && !hintComponent\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\r\n\r\n <ng-container *ngIf=\"errorMessageComponent\">\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData && !errorMessageComponent\"\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 && !errorMessageComponent && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n <select\r\n [class]=\"['c-select block mt-sm transition duration-150 ease-in-out border-black rounded font-semibold focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base',\r\n classes,\r\n hasErrorsMessage() ? 'c-select--error border-alert-base ring-2 ring-alert-base' : null] | makeHtmlList\"\r\n [value]=\"value\" (input)=\"onInput($event.target.value)\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : 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 [disabled]=disabled>\r\n\r\n <ng-container *ngFor=\"let item of getItems()\">\r\n <optgroup *ngIf=\"isOptionGroup(item)\" [label]=\"item.label\" [attr.disabled]=\"item.disabled ? true : null\"\r\n [attr.role]=\"item?.role\"\r\n [attr.aria-label]=\"item?.ariaLabel\"\r\n [attr.aria-describedby]=\"item?.describedBy\"\r\n [attr.aria-labelledby]=\"item?.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item?.ariaHidden\"\r\n [attr.aria-disabled]=\"item?.ariaDisabled\"\r\n [attr.aria-controls]=\"item?.ariaControls\"\r\n [attr.aria-current]=\"item?.ariaCurrent\"\r\n [attr.aria-live]=\"item?.ariaLive\"\r\n [attr.aria-expanded]=\"item?.ariaExpanded\"\r\n [attr.aria-errormessage]=\"item?.ariaErrorMessage\"\r\n [attr.aria-haspopup]=\"item?.ariaHasPopup\"\r\n [attr.tabindex]=\"item?.tabindex\">>\r\n <option *ngFor=\"let subItem of item.items\"\r\n [value]=\"subItem.value\"\r\n [disabled]=\"subItem.disabled\"\r\n [selected]=\"isItemSelected(subItem)\"\r\n [attr.hidden]=\"subItem.hidden\"\r\n [attr.role]=\"subItem?.role\"\r\n [attr.aria-label]=\"subItem?.ariaLabel\"\r\n [attr.aria-describedby]=\"subItem?.describedBy\"\r\n [attr.aria-labelledby]=\"subItem?.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"subItem?.ariaHidden\"\r\n [attr.aria-disabled]=\"subItem?.ariaDisabled\"\r\n [attr.aria-controls]=\"subItem?.ariaControls\"\r\n [attr.aria-current]=\"subItem?.ariaCurrent\"\r\n [attr.aria-live]=\"subItem?.ariaLive\"\r\n [attr.aria-expanded]=\"subItem?.ariaExpanded\"\r\n [attr.aria-errormessage]=\"subItem?.ariaErrorMessage\"\r\n [attr.aria-haspopup]=\"subItem?.ariaHasPopup\"\r\n [attr.tabindex]=\"subItem?.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, text: subItem.text }\"></ng-container>\r\n </option>\r\n </optgroup>\r\n <option *ngIf=\"!isOptionGroup(item)\" [value]=\"item.value\" [disabled]=\"item.disabled ? true : null\" [selected]=\"isItemSelected(item)\"\r\n [attr.hidden]=\"item.hidden\"\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.describedBy ? item.describedBy : ariaDescribedBy\"\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-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.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </option>\r\n </ng-container>\r\n </select>\r\n\r\n",
1469
1392
  providers: [
1470
1393
  {
1471
1394
  provide: NG_VALUE_ACCESSOR,
@@ -1479,7 +1402,9 @@ SelectComponent.propDecorators = {
1479
1402
  name: [{ type: Input }],
1480
1403
  items: [{ type: Input }],
1481
1404
  describedBy: [{ type: Input }],
1482
- formGroupClasses: [{ type: Input }],
1405
+ cfg: [{ type: HostBinding, args: ['class.c-form-group',] }],
1406
+ cfgr: [{ type: HostBinding, args: ['class.c-form-group--error',] }],
1407
+ formGroupClasses: [{ type: Input }, { type: HostBinding, args: ['class',] }],
1483
1408
  classes: [{ type: Input }],
1484
1409
  itemComponents: [{ type: ContentChildren, args: [SelectItemComponent,] }]
1485
1410
  };
@@ -1503,20 +1428,6 @@ class FileUploadComponent extends FormFieldComponent {
1503
1428
  this.onTouch();
1504
1429
  this.onChange(this.value);
1505
1430
  }
1506
- ngOnChanges(changes) {
1507
- this.checkRequiredParams();
1508
- }
1509
- checkRequiredParams() {
1510
- if (!this.id) {
1511
- throw Error('id is required');
1512
- }
1513
- if (!this.name) {
1514
- throw Error('name is required');
1515
- }
1516
- if (!this.labelRef && !this.labelData && !this.labelText) {
1517
- throw Error('label is required');
1518
- }
1519
- }
1520
1431
  }
1521
1432
  FileUploadComponent.decorators = [
1522
1433
  { type: Component, args: [{
@@ -1592,14 +1503,6 @@ class InputGroupInputComponent extends InputGroupItemComponent {
1592
1503
  this.isSelect = false;
1593
1504
  this.valueChange = new EventEmitter();
1594
1505
  }
1595
- ngAfterContentInit() {
1596
- if (!this.name) {
1597
- throw Error('item name is required');
1598
- }
1599
- if (!this.labelComponent) {
1600
- throw Error('item label is required');
1601
- }
1602
- }
1603
1506
  }
1604
1507
  InputGroupInputComponent.decorators = [
1605
1508
  { type: Component, args: [{
@@ -1633,14 +1536,6 @@ class InputGroupSelectComponent extends InputGroupItemComponent {
1633
1536
  this.isSelect = true;
1634
1537
  this.valueChange = new EventEmitter();
1635
1538
  }
1636
- ngAfterContentInit() {
1637
- if (!this.name) {
1638
- throw Error('item name is required');
1639
- }
1640
- if (!this.labelComponent) {
1641
- throw Error('item label is required');
1642
- }
1643
- }
1644
1539
  }
1645
1540
  InputGroupSelectComponent.decorators = [
1646
1541
  { type: Component, args: [{
@@ -1686,31 +1581,18 @@ class InputGroupComponent extends FormFieldComponent {
1686
1581
  super();
1687
1582
  this.controlContainer = controlContainer;
1688
1583
  this.itemsChange = new EventEmitter();
1584
+ // form group class - asignar clases a la etiqueta desy-input-group
1585
+ this.cfg = true;
1689
1586
  this.contentInit = false;
1690
1587
  }
1691
1588
  ngOnChanges() {
1692
- if (!this.id) {
1693
- throw Error('id is required');
1694
- }
1695
- if (this.items) {
1696
- for (const item of this.items) {
1697
- if (!item.divider && !item.name) {
1698
- throw Error('item name is required');
1699
- }
1700
- if (!item.divider && !this.hasItemLabel(item)) {
1701
- throw Error('item label is required');
1702
- }
1703
- }
1704
- }
1589
+ this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');
1705
1590
  }
1706
1591
  ngAfterContentInit() {
1707
1592
  this.contentInit = true;
1708
1593
  }
1709
1594
  ngAfterViewChecked() {
1710
1595
  const items = this.getItems();
1711
- if (!items || items.length === 0) {
1712
- throw Error('items are required');
1713
- }
1714
1596
  }
1715
1597
  writeValue(value) {
1716
1598
  if (value) {
@@ -1813,7 +1695,7 @@ class InputGroupComponent extends FormFieldComponent {
1813
1695
  InputGroupComponent.decorators = [
1814
1696
  { type: Component, args: [{
1815
1697
  selector: 'desy-input-group',
1816
- template: "\r\n<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\r\n<ng-template #itemDivider let-item=\"item\">\r\n <div role=\"separator\" [ngClass]=\"item.divider.classes\">\r\n <ng-container *desyCustomInnerContent=\"{ template: getItemDividerTemplate(item), html: getItemDividerHtml(item) }\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #innerHtml>\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\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\r\n <!-- Reactive forms -->\r\n <div *ngIf=\"controlContainer && !ngModelGroup\"\r\n [formGroup]=\"controlContainer.control\"\r\n [ngClass]=\"classes ? classes : 'flex'\"\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 <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\r\n <ng-template #itemSelect>\r\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [formControlName]=\"getItemName(item)\"\r\n [items]=\"getItemSelectOptions(item)\"\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\"></desy-select>\r\n </ng-template>\r\n <ng-template #itemInput>\r\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [formControlName]=\"getItemName(item)\"\r\n [type]=\"item.type ? item.type : 'text'\"\r\n [inputmode]=\"item.inputmode\"\r\n [autocomplete]=\"item.autocomplete\"\r\n [pattern]=\"item.pattern\"\r\n [placeholder]=\"item.placeholder\"\r\n\r\n [maxlength]=\"item.maxlength\"\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\"></desy-input>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Template-driven forms -->\r\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\r\n <div [ngModelGroup]=\"ngModelGroup\"\r\n [ngClass]=\"classes ? classes : 'flex'\"\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 <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\r\n <ng-template #itemSelect>\r\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\r\n [items]=\"getItemSelectOptions(item)\"\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\"></desy-select>\r\n </ng-template>\r\n <ng-template #itemInput>\r\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\r\n [type]=\"item.type ? item.type : 'text'\"\r\n [inputmode]=\"item.inputmode\"\r\n [autocomplete]=\"item.autocomplete\"\r\n [pattern]=\"item.pattern\"\r\n [placeholder]=\"item.placeholder\"\r\n\r\n [maxlength]=\"item.maxlength\"\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\"></desy-input>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </desy-template-driven-wrapper>\r\n\r\n <!-- With ngModel-->\r\n <div *ngIf=\"!controlContainer\"\r\n [ngClass]=\"classes ? classes : 'flex'\"\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 <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\r\n <ng-template #itemSelect>\r\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [items]=\"getItemSelectOptions(item)\"\r\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\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\"></desy-select>\r\n </ng-template>\r\n <ng-template #itemInput>\r\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\r\n [type]=\"item.type ? item.type : 'text'\"\r\n [inputmode]=\"item.inputmode\"\r\n [autocomplete]=\"item.autocomplete\"\r\n [pattern]=\"item.pattern\"\r\n [placeholder]=\"item.placeholder\"\r\n\r\n [maxlength]=\"item.maxlength\"\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\"></desy-input>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<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=\"group\"\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 && hasLegendComponent()\"\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 && !hasLegendComponent() && legendRef\"\r\n [legendRef]=\"legendRef\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\r\n role=\"group\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !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\"\r\n role=\"group\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\r\n [legendText]=\"legendText\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\r\n role=\"group\"></desy-fieldset>\r\n\r\n <ng-container *ngIf=\"!hasFieldset()\">\r\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n",
1698
+ template: "\r\n<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\r\n<ng-template #itemDivider let-item=\"item\">\r\n <div role=\"separator\" [ngClass]=\"item.divider.classes\">\r\n <ng-container *desyCustomInnerContent=\"{ template: getItemDividerTemplate(item), html: getItemDividerHtml(item) }\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #innerHtml>\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\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\r\n <!-- Reactive forms -->\r\n <div *ngIf=\"controlContainer && !ngModelGroup\"\r\n [formGroup]=\"controlContainer.control\"\r\n [ngClass]=\"classes ? classes : 'flex'\"\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 <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\r\n <ng-template #itemSelect>\r\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [formControlName]=\"getItemName(item)\"\r\n [items]=\"getItemSelectOptions(item)\"\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\"></desy-select>\r\n </ng-template>\r\n <ng-template #itemInput>\r\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [formControlName]=\"getItemName(item)\"\r\n [type]=\"item.type ? item.type : 'text'\"\r\n [inputmode]=\"item.inputmode\"\r\n [autocomplete]=\"item.autocomplete\"\r\n [pattern]=\"item.pattern\"\r\n [placeholder]=\"item.placeholder\"\r\n\r\n [maxlength]=\"item.maxlength\"\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\"></desy-input>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Template-driven forms -->\r\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\r\n <div [ngModelGroup]=\"ngModelGroup\"\r\n [ngClass]=\"classes ? classes : 'flex'\"\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 <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\r\n <ng-template #itemSelect>\r\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\r\n [items]=\"getItemSelectOptions(item)\"\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\"></desy-select>\r\n </ng-template>\r\n <ng-template #itemInput>\r\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\r\n [type]=\"item.type ? item.type : 'text'\"\r\n [inputmode]=\"item.inputmode\"\r\n [autocomplete]=\"item.autocomplete\"\r\n [pattern]=\"item.pattern\"\r\n [placeholder]=\"item.placeholder\"\r\n\r\n [maxlength]=\"item.maxlength\"\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\"></desy-input>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </desy-template-driven-wrapper>\r\n\r\n <!-- With ngModel-->\r\n <div *ngIf=\"!controlContainer\"\r\n [ngClass]=\"classes ? classes : 'flex'\"\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 <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\r\n <ng-template #itemSelect>\r\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [items]=\"getItemSelectOptions(item)\"\r\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\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\"></desy-select>\r\n </ng-template>\r\n <ng-template #itemInput>\r\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\r\n [labelRef]=\"getItemLabelRef(item)\"\r\n [labelData]=\"getItemLabelData(item)\"\r\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\r\n [formGroupClasses]=\"item.formGroupClasses\"\r\n [name]=\"getItemName(item)\"\r\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\r\n [type]=\"item.type ? item.type : 'text'\"\r\n [inputmode]=\"item.inputmode\"\r\n [autocomplete]=\"item.autocomplete\"\r\n [pattern]=\"item.pattern\"\r\n [placeholder]=\"item.placeholder\"\r\n\r\n [maxlength]=\"item.maxlength\"\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\"></desy-input>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n\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=\"group\"\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 && hasLegendComponent()\"\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 && !hasLegendComponent() && legendRef\"\r\n [legendRef]=\"legendRef\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\r\n role=\"group\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !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\"\r\n role=\"group\"></desy-fieldset>\r\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\r\n [legendText]=\"legendText\"\r\n [caller]=\"innerHtml\"\r\n [errorId]=\"getErrorId()\"\r\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\r\n role=\"group\"></desy-fieldset>\r\n\r\n <ng-container *ngIf=\"!hasFieldset()\">\r\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n",
1817
1699
  providers: [
1818
1700
  {
1819
1701
  provide: NG_VALUE_ACCESSOR,
@@ -1832,7 +1714,9 @@ InputGroupComponent.propDecorators = {
1832
1714
  itemsChange: [{ type: Output }],
1833
1715
  namePrefix: [{ type: Input }],
1834
1716
  classes: [{ type: Input }],
1835
- formGroupClasses: [{ type: Input }],
1717
+ cfg: [{ type: HostBinding, args: ['class.c-form-group',] }],
1718
+ cfgr: [{ type: HostBinding, args: ['class.c-form-group--error',] }],
1719
+ formGroupClasses: [{ type: Input }, { type: HostBinding, args: ['class',] }],
1836
1720
  errorMessage: [{ type: Input }],
1837
1721
  id: [{ type: Input }],
1838
1722
  fieldsetData: [{ type: Input }],
@@ -1875,9 +1759,6 @@ class RadioItemComponent extends ContentBaseComponent {
1875
1759
  this.radios.markForUpdateCheckboxIds();
1876
1760
  }
1877
1761
  ngOnChanges(changes) {
1878
- if (!this.value && !this.divider) {
1879
- throw Error('value or divider are required for checkbox item');
1880
- }
1881
1762
  if (this.checked !== this.lastChecked && this.isInit()) {
1882
1763
  this.setChecked(this.checked);
1883
1764
  this.radios.updateValueFromRadioItems();
@@ -2022,16 +1903,10 @@ class RadiosComponent extends FormFieldComponent {
2022
1903
  if (checkboxItems.length > 0) {
2023
1904
  checkboxItems.forEach((item, index) => item.updateRadioId(index));
2024
1905
  }
2025
- else {
2026
- throw Error('items are required');
2027
- }
2028
1906
  this.updateChekboxIds = false;
2029
1907
  }
2030
1908
  }
2031
1909
  ngAfterContentInit() {
2032
- if (!this.name) {
2033
- throw Error('name is required');
2034
- }
2035
1910
  this.contentInit = true;
2036
1911
  }
2037
1912
  /**
@@ -2050,9 +1925,6 @@ class RadiosComponent extends FormFieldComponent {
2050
1925
  this.propagateNewIdPrefixValue();
2051
1926
  }
2052
1927
  onNameChange() {
2053
- if (this.contentInit && !this.name) {
2054
- throw Error('name is required');
2055
- }
2056
1928
  if (this.contentInit) {
2057
1929
  this.markForUpdateCheckboxIds();
2058
1930
  }
@@ -2247,9 +2119,6 @@ class CheckboxItemComponent extends AccessibilityComponent {
2247
2119
  this.checkboxes.markForUpdateCheckboxIds();
2248
2120
  }
2249
2121
  ngOnChanges(changes) {
2250
- if (!this.value) {
2251
- throw Error('value is required for checkbox item');
2252
- }
2253
2122
  if (this.checked !== this.lastChecked && this.isInit()) {
2254
2123
  this.setChecked(this.checked);
2255
2124
  this.checkboxes.updateValueFromCheckboxItems();
@@ -2435,16 +2304,10 @@ class CheckboxesComponent extends FormFieldComponent {
2435
2304
  if (checkboxItems.length > 0) {
2436
2305
  checkboxItems.forEach((item, index) => item.updateCheckboxId(index));
2437
2306
  }
2438
- else {
2439
- throw Error('items are required');
2440
- }
2441
2307
  this.updateChekboxIds = false;
2442
2308
  }
2443
2309
  }
2444
2310
  ngAfterContentInit() {
2445
- if (!this.name) {
2446
- throw Error('name is required');
2447
- }
2448
2311
  this.contentInit = true;
2449
2312
  }
2450
2313
  /**
@@ -2463,9 +2326,6 @@ class CheckboxesComponent extends FormFieldComponent {
2463
2326
  this.propagateNewIdPrefixValue();
2464
2327
  }
2465
2328
  onNameChange() {
2466
- if (this.contentInit && !this.name) {
2467
- throw Error('name is required');
2468
- }
2469
2329
  if (this.contentInit) {
2470
2330
  this.markForUpdateCheckboxIds();
2471
2331
  }
@@ -2652,14 +2512,6 @@ class DateInputDayComponent extends DateInputItemComponent {
2652
2512
  super(...arguments);
2653
2513
  this.valueChange = new EventEmitter();
2654
2514
  }
2655
- ngAfterContentInit() {
2656
- if (!this.name) {
2657
- throw Error('day name is required');
2658
- }
2659
- if (!this.labelComponent) {
2660
- throw Error('day label is required');
2661
- }
2662
- }
2663
2515
  }
2664
2516
  DateInputDayComponent.decorators = [
2665
2517
  { type: Component, args: [{
@@ -2693,14 +2545,6 @@ class DateInputMonthComponent extends DateInputItemComponent {
2693
2545
  super(...arguments);
2694
2546
  this.valueChange = new EventEmitter();
2695
2547
  }
2696
- ngAfterContentInit() {
2697
- if (!this.name) {
2698
- throw Error('month name is required');
2699
- }
2700
- if (!this.labelComponent) {
2701
- throw Error('month label is required');
2702
- }
2703
- }
2704
2548
  }
2705
2549
  DateInputMonthComponent.decorators = [
2706
2550
  { type: Component, args: [{
@@ -2734,14 +2578,6 @@ class DateInputYearComponent extends DateInputItemComponent {
2734
2578
  super(...arguments);
2735
2579
  this.valueChange = new EventEmitter();
2736
2580
  }
2737
- ngAfterContentInit() {
2738
- if (!this.name) {
2739
- throw Error('year name is required');
2740
- }
2741
- if (!this.labelComponent) {
2742
- throw Error('year label is required');
2743
- }
2744
- }
2745
2581
  }
2746
2582
  DateInputYearComponent.decorators = [
2747
2583
  { type: Component, args: [{
@@ -2792,9 +2628,6 @@ class DateInputComponent extends FormFieldComponent {
2792
2628
  this.itemsChange = new EventEmitter();
2793
2629
  this.contentInit = false;
2794
2630
  }
2795
- ngOnChanges() {
2796
- this.checkRequired();
2797
- }
2798
2631
  ngAfterContentInit() {
2799
2632
  this.contentInit = true;
2800
2633
  }
@@ -2819,11 +2652,6 @@ class DateInputComponent extends FormFieldComponent {
2819
2652
  ];
2820
2653
  }
2821
2654
  }
2822
- checkRequired() {
2823
- if (!this.id) {
2824
- throw Error('id is required');
2825
- }
2826
- }
2827
2655
  writeValue(value) {
2828
2656
  this.value = value;
2829
2657
  if (this.value) {
@@ -2897,7 +2725,7 @@ class DateInputComponent extends FormFieldComponent {
2897
2725
  }
2898
2726
  else {
2899
2727
  labelData = {
2900
- text: item.labelText ? item.labelText : item.name.toUpperCase()
2728
+ text: item.labelText ? item.labelText : (item.name ? item.name.toUpperCase() : null)
2901
2729
  };
2902
2730
  }
2903
2731
  return labelData;
@@ -2920,11 +2748,6 @@ class DateInputComponent extends FormFieldComponent {
2920
2748
  else {
2921
2749
  items = [];
2922
2750
  }
2923
- items.forEach(item => {
2924
- if (!item.name && !(item instanceof DateInputDividerComponent)) {
2925
- throw new Error('Item name is required');
2926
- }
2927
- });
2928
2751
  return items;
2929
2752
  }
2930
2753
  getItemDividerTemplate(item) {
@@ -3004,22 +2827,6 @@ class SearchBarComponent extends FormFieldComponent {
3004
2827
  this.clickEvent = new EventEmitter();
3005
2828
  this.value = '';
3006
2829
  }
3007
- ngOnChanges(changes) {
3008
- this.checkRequiredParams();
3009
- }
3010
- checkRequiredParams() {
3011
- if (!this.id) {
3012
- throw Error('id is required');
3013
- }
3014
- if (!this.hasLabel()) {
3015
- throw Error('label is required');
3016
- }
3017
- }
3018
- ngAfterViewInit() {
3019
- if (this.button && this.button.length > 1) {
3020
- throw Error('only 1 button in content is allowed');
3021
- }
3022
- }
3023
2830
  onClick(event) {
3024
2831
  if (!this.disabled) {
3025
2832
  this.clickEvent.emit(event);
@@ -3099,6 +2906,22 @@ class SearchUtils {
3099
2906
  let res = str;
3100
2907
  if (str) {
3101
2908
  res = str.toLocaleUpperCase().trim();
2909
+ // acentos
2910
+ res = res.replace(/Á/g, 'A');
2911
+ res = res.replace(/É/g, 'E');
2912
+ res = res.replace(/Í/g, 'I');
2913
+ res = res.replace(/Ó/g, 'O');
2914
+ res = res.replace(/Ú/g, 'U');
2915
+ res = res.replace(/À/g, 'A');
2916
+ res = res.replace(/È/g, 'E');
2917
+ res = res.replace(/Ì/g, 'I');
2918
+ res = res.replace(/Ò/g, 'O');
2919
+ res = res.replace(/Ù/g, 'U');
2920
+ res = res.replace(/Ä/g, 'A');
2921
+ res = res.replace(/Ë/g, 'E');
2922
+ res = res.replace(/Ï/g, 'I');
2923
+ res = res.replace(/Ö/g, 'O');
2924
+ res = res.replace(/Ü/g, 'U');
3102
2925
  res = res.replace('Á', 'A');
3103
2926
  res = res.replace('É', 'E');
3104
2927
  res = res.replace('Í', 'I');
@@ -3114,10 +2937,15 @@ class SearchUtils {
3114
2937
  res = res.replace('Ï', 'I');
3115
2938
  res = res.replace('Ö', 'O');
3116
2939
  res = res.replace('Ü', 'U');
2940
+ // signos puntuacion
3117
2941
  res = res.replace(',', '');
3118
2942
  res = res.replace('.', '');
3119
2943
  res = res.replace('\'', '');
3120
2944
  res = res.replace('"', '');
2945
+ res = res.replace(/\,/g, '');
2946
+ res = res.replace(/\./g, '');
2947
+ res = res.replace(/\'/g, '');
2948
+ res = res.replace(/\"/g, '');
3121
2949
  }
3122
2950
  return res;
3123
2951
  }
@@ -4031,7 +3859,7 @@ class ConditionDirective {
4031
3859
  constructor(templateRef) {
4032
3860
  this.templateRef = templateRef;
4033
3861
  }
4034
- ngOnChanges(changes) {
3862
+ ngOnChanges() {
4035
3863
  if (this.item) {
4036
3864
  this.item.conditionalHtml = this.templateRef;
4037
3865
  }
@@ -4042,9 +3870,6 @@ class ConditionDirective {
4042
3870
  }
4043
3871
  }
4044
3872
  }
4045
- else {
4046
- throw Error('item or value + items are required');
4047
- }
4048
3873
  }
4049
3874
  }
4050
3875
  ConditionDirective.decorators = [
@@ -4142,14 +3967,6 @@ class ModalComponent extends AccessibilityComponent {
4142
3967
  }
4143
3968
  return type;
4144
3969
  }
4145
- ngOnChanges(changes) {
4146
- if (!this.id) {
4147
- throw new Error(`id are required`);
4148
- }
4149
- }
4150
- handleRequiredEmpty(element) {
4151
- throw new Error(`${element} is required`);
4152
- }
4153
3970
  checkDescriptionContent(element) {
4154
3971
  const childs = element.nativeElement.childNodes;
4155
3972
  let hasHtml = false;
@@ -4168,9 +3985,6 @@ class ModalComponent extends AccessibilityComponent {
4168
3985
  this.descriptionIsEmpty = !hasContent;
4169
3986
  this.descriptionIsHtml = hasHtml;
4170
3987
  this.changeDetectorRef.detectChanges();
4171
- if (!hasContent && !descriptionWasEmpty) {
4172
- this.handleRequiredEmpty('description');
4173
- }
4174
3988
  }
4175
3989
  clickButtonEmit(item, event) {
4176
3990
  this.clickButton.emit(event);
@@ -4214,7 +4028,7 @@ class ModalComponent extends AccessibilityComponent {
4214
4028
  ModalComponent.decorators = [
4215
4029
  { type: Component, args: [{
4216
4030
  selector: 'desy-modal',
4217
- 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"
4031
+ 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 <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'\" 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'\" 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'\" 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'\" 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'\" 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 <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 <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 <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 <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 <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"
4218
4032
  },] }
4219
4033
  ];
4220
4034
  ModalComponent.ctorParameters = () => [
@@ -4270,12 +4084,6 @@ class DialogComponent extends AccessibilityComponent {
4270
4084
  }
4271
4085
  }
4272
4086
  ngAfterViewInit() {
4273
- if (!this.id) {
4274
- throw Error('id is required');
4275
- }
4276
- if (!this.caller && !this.callerType) {
4277
- throw Error('caller is required');
4278
- }
4279
4087
  if (this.callerType) {
4280
4088
  const factory = this.factoryResolver.resolveComponentFactory(this.callerType);
4281
4089
  const component = this.container.createComponent(factory);
@@ -4416,14 +4224,13 @@ class DialogService {
4416
4224
  });
4417
4225
  }
4418
4226
  closeDialog(dialog) {
4419
- if (!dialog) {
4420
- throw Error('dialog is required');
4421
- }
4422
- if (dialog instanceof ComponentRef) {
4423
- dialog.instance.dismiss();
4424
- }
4425
- else {
4426
- dialog.dismiss();
4227
+ if (dialog) {
4228
+ if (dialog instanceof ComponentRef) {
4229
+ dialog.instance.dismiss();
4230
+ }
4231
+ else {
4232
+ dialog.dismiss();
4233
+ }
4427
4234
  }
4428
4235
  }
4429
4236
  onCloseDialog(dialog) {
@@ -4520,19 +4327,13 @@ class BreadcrumbsComponent extends AccessibilityComponent {
4520
4327
  }
4521
4328
  getItemList() {
4522
4329
  const itemList = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;
4523
- if (!itemList || itemList.length === 0) {
4524
- throw new Error(`items are required`);
4525
- }
4526
4330
  return itemList;
4527
4331
  }
4528
- handleEmptyItem(position) {
4529
- throw new Error(`item content, html or text are required at position ${position}`);
4530
- }
4531
4332
  }
4532
4333
  BreadcrumbsComponent.decorators = [
4533
4334
  { type: Component, args: [{
4534
4335
  selector: 'desy-breadcrumbs',
4535
- template: "<nav [class]=\"(classes ? 'c-breadcrumbs ' + classes : 'c-breadcrumbs') + (collapseOnMobile==true ? ' ' + 'c-breadcrumbs--collapse-on-mobile' : '')\"\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 ? ariaLabel : 'Est\u00E1s en: '\"\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 <ol [class]=\"'lg:grid lg:grid-cols-max-content-'+getLength()+' w-full items-baseline text-sm'\">\r\n <li *ngIf=\"hasBackButton\" class=\"c-breadcrumbs__backbutton flex items-baseline font-bold text-primary-base\">\r\n <a (click)=\"goBack()\" class=\"px-sm border-r border-neutral-base focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black cursor-pointer\">\r\n <span class=\"sr-only\">Volver a la p\u00E1gina anterior</span><span aria-hidden=\"true\" title=\"Volver a la p\u00E1gina anterior\">&larr;</span>\r\n </a>\r\n </li>\r\n <ng-container *ngFor=\"let item of getItemList(); last as isLast; index as index\">\r\n <li *ngIf=\"!isLast\" class=\"flex items-baseline mb-sm py-xs text-neutral-dark\" [ngClass]=\"{'hover:text-black' : item.routerLink}\">\r\n <a *ngIf=\"item.routerLink\" class=\"underline focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black truncate\"\r\n (desyContentEmpty)=\"handleEmptyItem(index)\"\r\n [routerLink]=\"item.routerLink\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </a>\r\n <span *ngIf=\"!item.routerLink\" class=\"no-underline truncate\"\r\n (desyContentEmpty)=\"handleEmptyItem(index)\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </span>\r\n </li>\r\n <li *ngIf=\"isLast\" class=\"flex items-baseline mb-sm py-xs text-neutral-dark flex-1 font-semibold\" [ngClass]=\"{'hover:text-black' : item.routerLink}\">\r\n <a *ngIf=\"item.routerLink\" class=\"underline focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black text-black font-semibold no-underline truncate\"\r\n (desyContentEmpty)=\"handleEmptyItem(index)\"\r\n aria-current=\"page\" [routerLink]=\"item.routerLink\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\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.tabindex]=\"item.tabindex\">\r\n <strong (desyContentEmpty)=\"handleEmptyItem(index)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </strong>\r\n </a>\r\n <span *ngIf=\"!item.routerLink\" class=\"no-underline text-black truncate\" aria-current=\"page\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\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.tabindex]=\"item.tabindex\">\r\n <strong (desyContentEmpty)=\"handleEmptyItem(index)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </strong>\r\n </span>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n"
4336
+ template: "<nav [class]=\"(classes ? 'c-breadcrumbs ' + classes : 'c-breadcrumbs') + (collapseOnMobile==true ? ' ' + 'c-breadcrumbs--collapse-on-mobile' : '')\"\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 ? ariaLabel : 'Est\u00E1s en: '\"\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 <ol [class]=\"'lg:grid lg:grid-cols-max-content-'+getLength()+' w-full items-baseline text-sm'\">\r\n <li *ngIf=\"hasBackButton\" class=\"c-breadcrumbs__backbutton flex items-baseline font-bold text-primary-base\">\r\n <a (click)=\"goBack()\" class=\"px-sm border-r border-neutral-base focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black cursor-pointer\">\r\n <span class=\"sr-only\">Volver a la p\u00E1gina anterior</span><span aria-hidden=\"true\" title=\"Volver a la p\u00E1gina anterior\">&larr;</span>\r\n </a>\r\n </li>\r\n <ng-container *ngFor=\"let item of getItemList(); last as isLast; index as index\">\r\n <li *ngIf=\"!isLast\" class=\"flex items-baseline mb-sm py-xs text-neutral-dark\" [ngClass]=\"{'hover:text-black' : item.routerLink}\">\r\n <a *ngIf=\"item.routerLink\" class=\"underline focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black truncate\"\r\n [routerLink]=\"item.routerLink\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </a>\r\n <span *ngIf=\"!item.routerLink\" class=\"no-underline truncate\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </span>\r\n </li>\r\n <li *ngIf=\"isLast\" class=\"flex items-baseline mb-sm py-xs text-neutral-dark flex-1 font-semibold\" [ngClass]=\"{'hover:text-black' : item.routerLink}\">\r\n <a *ngIf=\"item.routerLink\" class=\"underline focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black text-black font-semibold no-underline truncate\"\r\n aria-current=\"page\" [routerLink]=\"item.routerLink\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\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.tabindex]=\"item.tabindex\">\r\n <strong>\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </strong>\r\n </a>\r\n <span *ngIf=\"!item.routerLink\" class=\"no-underline text-black truncate\" aria-current=\"page\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\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.tabindex]=\"item.tabindex\">\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 </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n"
4536
4337
  },] }
4537
4338
  ];
4538
4339
  BreadcrumbsComponent.ctorParameters = () => [
@@ -4567,14 +4368,11 @@ class HeaderOffcanvasButtonComponent extends ContentBaseComponent {
4567
4368
  yield this.openOffcanvas();
4568
4369
  });
4569
4370
  }
4570
- handleEmptyContent(element) {
4571
- throw new Error(`${element} content is required`);
4572
- }
4573
4371
  }
4574
4372
  HeaderOffcanvasButtonComponent.decorators = [
4575
4373
  { type: Component, args: [{
4576
4374
  selector: 'desy-header-offcanvas-button',
4577
- template: "<ng-template #contentTemplate>\r\n <button id=\"header-offcanvas-button\" tabindex=\"0\" aria-haspopup=\"true\"\r\n class=\"inline-flex items-center px-3 py-4 text-sm text-white focus:outline-none focus:shadow-outline-warning\"\r\n (click)=\"handleClick($event)\">\r\n <span id=\"header-offcanvas-button-text\" class=\"inline-block align-middle text-right\"\r\n (desyContentEmpty)=\"handleEmptyContent('Header-offcanvas button')\">\r\n <ng-content></ng-content>\r\n </span>\r\n <svg role=\"img\" aria-label=\"Cerrado\" class=\"inline-block align-middle\" viewBox=\"0 0 96 96\" fill=\"currentColor\" 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</ng-template>\r\n\r\n"
4375
+ template: "<ng-template #contentTemplate>\r\n <button id=\"header-offcanvas-button\" tabindex=\"0\" aria-haspopup=\"true\"\r\n class=\"inline-flex items-center px-3 py-4 text-sm text-white focus:outline-none focus:shadow-outline-warning\"\r\n (click)=\"handleClick($event)\">\r\n <span id=\"header-offcanvas-button-text\" class=\"inline-block align-middle text-right\">\r\n <ng-content></ng-content>\r\n </span>\r\n <svg role=\"img\" aria-label=\"Cerrado\" class=\"inline-block align-middle\" viewBox=\"0 0 96 96\" fill=\"currentColor\" 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</ng-template>\r\n\r\n"
4578
4376
  },] }
4579
4377
  ];
4580
4378
 
@@ -4620,9 +4418,6 @@ class HeaderOffcanvasComponent {
4620
4418
  bindButton(button) {
4621
4419
  button.openOffcanvas = this.open.bind(this);
4622
4420
  }
4623
- handleEmptyContent(element) {
4624
- throw new Error(`${element} content is required`);
4625
- }
4626
4421
  }
4627
4422
  HeaderOffcanvasComponent.dialogOptions = {
4628
4423
  id: 'header-offcanvas-dialog',
@@ -4634,7 +4429,7 @@ HeaderOffcanvasComponent.dialogOptions = {
4634
4429
  HeaderOffcanvasComponent.decorators = [
4635
4430
  { type: Component, args: [{
4636
4431
  selector: 'desy-header-offcanvas',
4637
- 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"
4432
+ 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 <ng-container *desyCustomInnerContent=\"{ component: closeButton }\"></ng-container> <svg 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"
4638
4433
  },] }
4639
4434
  ];
4640
4435
  HeaderOffcanvasComponent.ctorParameters = () => [
@@ -4681,9 +4476,6 @@ HeaderNavigationItemComponent.propDecorators = {
4681
4476
  class HeaderNavigationComponent extends AccessibilityComponent {
4682
4477
  ngAfterContentInit() {
4683
4478
  const items = this.getItems();
4684
- if (!items || items.length === 0) {
4685
- throw new Error('Header-navigation items are required');
4686
- }
4687
4479
  }
4688
4480
  getItemId(item, index) {
4689
4481
  const prefix = this.idPrefix ? this.idPrefix : 'header-nav-item';
@@ -4765,26 +4557,10 @@ class NavComponent extends AccessibilityComponent {
4765
4557
  item.clickEvent.emit({ item, event });
4766
4558
  }
4767
4559
  }
4768
- ngOnChanges(changes) {
4769
- if (!this.idPrefix) {
4770
- throw new Error(`idPrefix is required`);
4771
- }
4772
- }
4773
4560
  getItemList() {
4774
4561
  const itemList = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;
4775
- if (!itemList || itemList.length === 0) {
4776
- throw new Error(`items are required`);
4777
- }
4778
- itemList.forEach(element => {
4779
- if (!element.href && !element.routerLink) {
4780
- throw new Error(`href or routerLink are required`);
4781
- }
4782
- });
4783
4562
  return itemList;
4784
4563
  }
4785
- handleContentEmpty(position) {
4786
- throw new Error(`item content, html or text are required at position ${position}`);
4787
- }
4788
4564
  getItemId(item, index) {
4789
4565
  let id;
4790
4566
  if (item.id) {
@@ -4841,7 +4617,7 @@ class NavComponent extends AccessibilityComponent {
4841
4617
  NavComponent.decorators = [
4842
4618
  { type: Component, args: [{
4843
4619
  selector: 'desy-nav',
4844
- 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 (keydown.space)=\"simulateClick($event, item, i)\"\r\n (keydown.enter)=\"simulateClick($event, item, 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 <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 (keydown.space)=\"simulateClick($event, item, i)\"\r\n (keydown.enter)=\"simulateClick($event, item, i)\"\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"
4620
+ 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 (keydown.arrowUp)=\"movePrevious($event, i)\"\r\n (keydown.arrowDown)=\"moveNext($event, i)\"\r\n (click)=\"onClick($event, item)\"\r\n (keydown.space)=\"simulateClick($event, item, i)\"\r\n (keydown.enter)=\"simulateClick($event, item, i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n <svg *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 (keydown.space)=\"simulateClick($event, item, i)\"\r\n (keydown.enter)=\"simulateClick($event, item, i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n <svg *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"
4845
4621
  },] }
4846
4622
  ];
4847
4623
  NavComponent.propDecorators = {
@@ -4864,14 +4640,11 @@ class HeaderSubnavComponent extends AccessibilityComponent {
4864
4640
  nav.classes = 'w-max max-w-64';
4865
4641
  // nav.id = 'id-subnav-nav'; // No existe como param de navComponent
4866
4642
  }
4867
- handleEmptyContent(element) {
4868
- throw new Error(`${element} content is required`);
4869
- }
4870
4643
  }
4871
4644
  HeaderSubnavComponent.decorators = [
4872
4645
  { type: Component, args: [{
4873
4646
  selector: 'desy-header-subnav',
4874
- 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"
4647
+ 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 <span 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"
4875
4648
  },] }
4876
4649
  ];
4877
4650
  HeaderSubnavComponent.propDecorators = {
@@ -4893,9 +4666,6 @@ class HeaderDropdownComponent extends AccessibilityComponent {
4893
4666
  nav.classes = 'w-max max-w-64';
4894
4667
  // nav.id = 'id-dropdown-nav'; // No existe como param de navComponent
4895
4668
  }
4896
- handleEmptyContent(element) {
4897
- throw new Error(`${element} content is required`);
4898
- }
4899
4669
  }
4900
4670
  HeaderDropdownComponent.decorators = [
4901
4671
  { type: Component, args: [{
@@ -4931,20 +4701,11 @@ class SkipLinkComponent extends AccessibilityComponent {
4931
4701
  }
4932
4702
  return classNames;
4933
4703
  }
4934
- handleNoContent() {
4935
- if (!this.html && !this.text) {
4936
- throw new Error('skip-link content, html or text are required');
4937
- }
4938
- else {
4939
- this.hasContent = false;
4940
- this.changeDetectorRef.detectChanges();
4941
- }
4942
- }
4943
4704
  }
4944
4705
  SkipLinkComponent.decorators = [
4945
4706
  { type: Component, args: [{
4946
4707
  selector: 'desy-skip-link',
4947
- template: "<a *ngIf=\"hasContent\"\r\n [routerLink]=\"[]\" [fragment]=\"fragment ? fragment : 'content'\"\r\n [class]=\"getClassNames()\"\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 (desyContentEmpty)=\"handleNoContent()\">\r\n <ng-content></ng-content>\r\n</a>\r\n\r\n<a *ngIf=\"!hasContent\"\r\n [routerLink]=\"[]\" [fragment]=\"fragment ? fragment : 'content'\"\r\n [class]=\"getClassNames()\"\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 <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\r\n</a>\r\n"
4708
+ template: "<a *ngIf=\"hasContent\"\r\n [routerLink]=\"[]\" [fragment]=\"fragment ? fragment : 'content'\"\r\n [class]=\"getClassNames()\"\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 <ng-content></ng-content>\r\n</a>\r\n\r\n<a *ngIf=\"!hasContent\"\r\n [routerLink]=\"[]\" [fragment]=\"fragment ? fragment : 'content'\"\r\n [class]=\"getClassNames()\"\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 <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\r\n</a>\r\n"
4948
4709
  },] }
4949
4710
  ];
4950
4711
  SkipLinkComponent.ctorParameters = () => [
@@ -5084,7 +4845,7 @@ class FooterComponent extends AccessibilityComponent {
5084
4845
  FooterComponent.decorators = [
5085
4846
  { type: Component, args: [{
5086
4847
  selector: 'desy-footer',
5087
- template: "<footer [class]=\"['py-base bg-neutral-lighter border-t border-neutral-base text-xs lg:text-sm text-neutral-dark', 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 <div [class]=\"['container mx-auto px-base', containerClasses] | makeHtmlList\">\r\n <ng-container *ngIf=\"getNavigationItems()\">\r\n <div class=\"flex flex-wrap\">\r\n <div class=\"flex-1 mr-base\" *ngFor=\"let nav of getNavigationItems()\">\r\n <h3 class=\"mb-base font-bold text-xl\">{{nav.title}}</h3>\r\n <ul [class]=\"'grid grid-cols-1 gap-base lg:grid-cols-' + nav.columns\">\r\n <li class=\"mb-xs\" *ngFor=\"let item of getNavigationItemItems(nav)\">\r\n <ng-container *ngTemplateOutlet=\"item.href != null ? itemHref : itemRouterLink; context: {item: item}\"></ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <hr class=\"my-base border-t border-neutral-base\">\r\n </ng-container>\r\n\r\n <div class=\"flex flex-wrap flex-col lg:flex-row justify-between\">\r\n <div class=\"mb-base\">\r\n <ng-template #metaTemplate let-metaElement=\"metaElement\">\r\n <ng-container *ngIf=\"metaElement\">\r\n <h2 class=\"sr-only\">{{(metaElement.visuallyHiddenTitle ? metaElement.visuallyHiddenTitle : 'Enlaces de pie de p\u00E1gina')}}</h2>\r\n <ul class=\"flex flex-col lg:flex-row lg:flex-wrap\" *ngIf=\"getMetaItems(metaElement)\">\r\n <li class=\"mb-sm mr-base\" *ngFor=\"let item of getMetaItems(metaElement)\">\r\n <ng-container *ngTemplateOutlet=\"item.href != null ? itemHref : itemRouterLink; context: {item: item}\"></ng-container>\r\n </li>\r\n </ul>\r\n <div class=\"mb-sm\" *ngIf=\"getMetaContent(metaElement) || metaElement.html || metaElement.text\">\r\n <p>\r\n <ng-container *desyCustomInnerContent=\"{ component: getMetaContent(metaElement), html: metaElement.html, text: metaElement.text }\"></ng-container>\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"metaTemplate; context: { metaElement: metaComponent ? metaComponent : meta }\"></ng-container>\r\n <div class=\"leading-tight\">\r\n <p>\r\n Todo el contenido bajo\r\n <a\r\n class=\"c-link c-link--neutral\"\r\n href=\"https://creativecommons.org/licenses/by/4.0/legalcode.es\"\r\n rel=\"license\"\r\n >licencia CC BY 4.0</a>\r\n </p>\r\n </div>\r\n <div class=\"leading-tight\">\r\n <p>\r\n <a\r\n class=\"c-link c-link--neutral\"\r\n href=\"https://www.aragon.es/\"\r\n >Gobierno de Arag\u00F3n</a>. Edificio Pignatelli. <abbr title=\u201DPaseo\u201D>P\u00BA</abbr> Mar\u00EDa Agust\u00EDn, 36. 50004 - Zaragoza - <abbr title=\"Tel\u00E9fono\" class=\"no-underline\">Tel.</abbr> <a href=\"tel:+976714000\" class=\"c-link c-link--neutral\">976 714 000</a>\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"mb-base lg:pl-base overflow-hidden\">\r\n <p *ngIf=\"iconComponent || icon?.html\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent, html: icon?.html }\"></ng-container>\r\n </p>\r\n <p>\r\n <a href=\"http://www.aragon.es/Fondos_Europeos\" class=\"inline-block text-sm c-link no-underline\" title=\"M\u00E1s informaci\u00F3n sobre los Fondos Estructurales y de Inversi\u00F3n Europeos (Fondos EIE)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 575 96\" width=\"288\" height=\"48\" class=\"w-auto h-12\" role=\"img\" aria-label=\"Logotipo Uni\u00F3n Europea. Fondo Europeo de Desarrollo Regional (FEDER). Construyendo Europa desde Arag\u00F3n.\"><text transform=\"translate(126 33)\" fill=\"#039\" font-size=\"20\" font-family=\"Arial, Tahoma, Verdana, Calibri, Garamond, Trebuchet, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, HelveticaNeue-Bold, Helvetica Neue, Helvetica, sans\" font-weight=\"700\"><tspan x=\"0\" y=\"0\">UNI\u00D3N EUROPEA</tspan></text><text transform=\"translate(126 56)\" fill=\"#039\" font-size=\"20\" font-family=\"Arial, Tahoma, Verdana, Calibri, Garamond, Trebuchet, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, HelveticaNeue-Bold, Helvetica Neue, Helvetica, sans\"><tspan x=\"0\" y=\"0\">Fondo Europeo de Desarrollo Regional (FEDER)</tspan></text><text transform=\"translate(126 79)\" fill=\"#039\" font-size=\"20\" font-family=\"Arial, Tahoma, Verdana, Calibri, Garamond, Trebuchet, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, HelveticaNeue-Bold, Helvetica Neue, Helvetica, sans\"><tspan x=\"0\" y=\"0\">\u201CConstruyendo Europa desde Arag\u00F3n\u201D</tspan></text><path fill=\"#039\" stroke=\"#fff\" stroke-width=\"1%\" d=\"M14.086 13.02h104.282v69.522H14.086z\"/><g fill=\"#fc0\"><path d=\"M64.004 28.167l2.2-1.606 2.2 1.606-.837-2.6 2.235-1.606h-2.755l-.843-2.628-.843 2.631h-2.753l2.233 1.606zM52.617 31.229l2.2-1.606 2.2 1.606-.836-2.6 2.233-1.606h-2.755l-.843-2.631-.843 2.634H51.22l2.234 1.606zM46.486 32.743l-.843 2.634H42.89l2.234 1.606-.837 2.6 2.2-1.606 2.2 1.606-.837-2.6 2.234-1.606h-2.752zM43.429 49.345l2.2 1.606-.836-2.6 2.234-1.606h-2.753l-.843-2.631-.843 2.637-2.755-.006 2.235 1.606-.837 2.6zM47.332 58.156l-.843-2.631-.843 2.634h-2.753l2.234 1.606-.837 2.6 2.2-1.609 2.2 1.609-.837-2.6 2.234-1.606zM55.677 66.504l-.843-2.628-.842 2.631h-2.755l2.234 1.606-.836 2.6 2.2-1.606 2.2 1.606-.836-2.6 2.234-1.606zM67.05 69.528l-.843-2.631-.842 2.634H62.61l2.234 1.606-.836 2.6 2.2-1.606 2.2 1.606-.837-2.6 2.235-1.606zM78.422 66.504l-.842-2.628-.845 2.631h-2.752l2.232 1.606-.836 2.6 2.2-1.606 2.2 1.606-.839-2.6 2.235-1.606zM86.774 58.156l-.845-2.631-.845 2.634h-2.752l2.235 1.606-.839 2.6 2.2-1.609 2.2 1.609-.839-2.6 2.235-1.606zM92.551 46.716h-2.755l-.845-2.631-.842 2.634h-2.755l2.235 1.606-.836 2.6 2.2-1.609 2.2 1.609-.836-2.6zM83.728 39.544l2.2-1.606 2.2 1.606-.839-2.6 2.235-1.6h-2.752l-.845-2.631-.845 2.634H82.33l2.235 1.6zM77.613 24.395l-.842 2.634-2.755-.006 2.232 1.609-.836 2.6 2.2-1.609 2.2 1.609-.836-2.6 2.235-1.609h-2.758z\"/></g></svg>\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</footer>\r\n\r\n<ng-template #itemHref let-item=\"item\">\r\n <a class=\"c-link font-semibold\" [href]=\"item.href | externalHref\"\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.ariaDisabled ? item.ariaDisabled : 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.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </a>\r\n</ng-template>\r\n\r\n<ng-template #itemRouterLink let-item=\"item\">\r\n <a class=\"c-link font-semibold\" [routerLink]=\"item.routerLink\" [fragment]=\"item.fragment\"\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.ariaDisabled ? item.ariaDisabled : 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.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </a>\r\n</ng-template>\r\n"
4848
+ template: "<footer [class]=\"['py-base bg-neutral-lighter border-t border-neutral-base text-xs lg:text-sm text-neutral-dark', 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 <div [class]=\"['container mx-auto px-base', containerClasses] | makeHtmlList\">\r\n <ng-container *ngIf=\"getNavigationItems()\">\r\n <div class=\"flex flex-wrap\">\r\n <div class=\"flex-1 mr-base\" *ngFor=\"let nav of getNavigationItems()\">\r\n <h3 class=\"mb-base font-bold text-xl\">{{nav.title}}</h3>\r\n <ul [class]=\"'grid grid-cols-1 gap-base lg:grid-cols-' + nav.columns\">\r\n <li class=\"mb-xs\" *ngFor=\"let item of getNavigationItemItems(nav)\">\r\n <ng-container *ngTemplateOutlet=\"item.href != null ? itemHref : itemRouterLink; context: {item: item}\"></ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <hr class=\"my-base border-t border-neutral-base\">\r\n </ng-container>\r\n\r\n <div class=\"flex flex-wrap flex-col lg:flex-row justify-between\">\r\n <div class=\"mb-base\">\r\n <ng-template #metaTemplate let-metaElement=\"metaElement\">\r\n <ng-container *ngIf=\"metaElement\">\r\n <h2 class=\"sr-only\">{{(metaElement.visuallyHiddenTitle ? metaElement.visuallyHiddenTitle : 'Enlaces de pie de p\u00E1gina')}}</h2>\r\n <ul class=\"flex flex-col lg:flex-row lg:flex-wrap\" *ngIf=\"getMetaItems(metaElement)\">\r\n <li class=\"mb-sm mr-base\" *ngFor=\"let item of getMetaItems(metaElement)\">\r\n <ng-container *ngTemplateOutlet=\"item.href != null ? itemHref : itemRouterLink; context: {item: item}\"></ng-container>\r\n </li>\r\n </ul>\r\n <div class=\"mb-sm\" *ngIf=\"getMetaContent(metaElement) || metaElement.html || metaElement.text\">\r\n <p>\r\n <ng-container *desyCustomInnerContent=\"{ component: getMetaContent(metaElement), html: metaElement.html, text: metaElement.text }\"></ng-container>\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"metaTemplate; context: { metaElement: metaComponent ? metaComponent : meta }\"></ng-container>\r\n <div class=\"leading-tight\">\r\n <p>\r\n Todo el contenido bajo\r\n <a\r\n class=\"c-link c-link--neutral\"\r\n href=\"https://creativecommons.org/licenses/by/4.0/legalcode.es\"\r\n rel=\"license\" target=\"_blank\"\r\n >licencia CC BY 4.0</a>\r\n </p>\r\n </div>\r\n <div class=\"leading-tight\">\r\n <p>\r\n <a target=\"_blank\"\r\n class=\"c-link c-link--neutral\"\r\n href=\"https://www.aragon.es/\"\r\n >Gobierno de Arag\u00F3n</a>. Edificio Pignatelli. <abbr title=\u201DPaseo\u201D>P\u00BA</abbr> Mar\u00EDa Agust\u00EDn, 36. 50004 - Zaragoza - <abbr title=\"Tel\u00E9fono\" class=\"no-underline\">Tel.</abbr> <a href=\"tel:+976714000\" class=\"c-link c-link--neutral\">976 714 000</a>\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"mb-base lg:pl-base overflow-hidden\">\r\n <p *ngIf=\"iconComponent || icon?.html\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent, html: icon?.html }\"></ng-container>\r\n </p>\r\n <p>\r\n <a href=\"http://www.aragon.es/Fondos_Europeos\" target=\"_blank\" class=\"inline-block text-sm c-link no-underline\" title=\"M\u00E1s informaci\u00F3n sobre los Fondos Estructurales y de Inversi\u00F3n Europeos (Fondos EIE)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 575 96\" width=\"288\" height=\"48\" class=\"w-auto h-12\" role=\"img\" aria-label=\"Logotipo Uni\u00F3n Europea. Fondo Europeo de Desarrollo Regional (FEDER). Construyendo Europa desde Arag\u00F3n.\"><text transform=\"translate(126 33)\" fill=\"#039\" font-size=\"20\" font-family=\"Arial, Tahoma, Verdana, Calibri, Garamond, Trebuchet, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, HelveticaNeue-Bold, Helvetica Neue, Helvetica, sans\" font-weight=\"700\"><tspan x=\"0\" y=\"0\">UNI\u00D3N EUROPEA</tspan></text><text transform=\"translate(126 56)\" fill=\"#039\" font-size=\"20\" font-family=\"Arial, Tahoma, Verdana, Calibri, Garamond, Trebuchet, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, HelveticaNeue-Bold, Helvetica Neue, Helvetica, sans\"><tspan x=\"0\" y=\"0\">Fondo Europeo de Desarrollo Regional (FEDER)</tspan></text><text transform=\"translate(126 79)\" fill=\"#039\" font-size=\"20\" font-family=\"Arial, Tahoma, Verdana, Calibri, Garamond, Trebuchet, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, HelveticaNeue-Bold, Helvetica Neue, Helvetica, sans\"><tspan x=\"0\" y=\"0\">\u201CConstruyendo Europa desde Arag\u00F3n\u201D</tspan></text><path fill=\"#039\" stroke=\"#fff\" stroke-width=\"1%\" d=\"M14.086 13.02h104.282v69.522H14.086z\"/><g fill=\"#fc0\"><path d=\"M64.004 28.167l2.2-1.606 2.2 1.606-.837-2.6 2.235-1.606h-2.755l-.843-2.628-.843 2.631h-2.753l2.233 1.606zM52.617 31.229l2.2-1.606 2.2 1.606-.836-2.6 2.233-1.606h-2.755l-.843-2.631-.843 2.634H51.22l2.234 1.606zM46.486 32.743l-.843 2.634H42.89l2.234 1.606-.837 2.6 2.2-1.606 2.2 1.606-.837-2.6 2.234-1.606h-2.752zM43.429 49.345l2.2 1.606-.836-2.6 2.234-1.606h-2.753l-.843-2.631-.843 2.637-2.755-.006 2.235 1.606-.837 2.6zM47.332 58.156l-.843-2.631-.843 2.634h-2.753l2.234 1.606-.837 2.6 2.2-1.609 2.2 1.609-.837-2.6 2.234-1.606zM55.677 66.504l-.843-2.628-.842 2.631h-2.755l2.234 1.606-.836 2.6 2.2-1.606 2.2 1.606-.836-2.6 2.234-1.606zM67.05 69.528l-.843-2.631-.842 2.634H62.61l2.234 1.606-.836 2.6 2.2-1.606 2.2 1.606-.837-2.6 2.235-1.606zM78.422 66.504l-.842-2.628-.845 2.631h-2.752l2.232 1.606-.836 2.6 2.2-1.606 2.2 1.606-.839-2.6 2.235-1.606zM86.774 58.156l-.845-2.631-.845 2.634h-2.752l2.235 1.606-.839 2.6 2.2-1.609 2.2 1.609-.839-2.6 2.235-1.606zM92.551 46.716h-2.755l-.845-2.631-.842 2.634h-2.755l2.235 1.606-.836 2.6 2.2-1.609 2.2 1.609-.836-2.6zM83.728 39.544l2.2-1.606 2.2 1.606-.839-2.6 2.235-1.6h-2.752l-.845-2.631-.845 2.634H82.33l2.235 1.6zM77.613 24.395l-.842 2.634-2.755-.006 2.232 1.609-.836 2.6 2.2-1.609 2.2 1.609-.836-2.6 2.235-1.609h-2.758z\"/></g></svg>\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</footer>\r\n\r\n<ng-template #itemHref let-item=\"item\">\r\n <a class=\"c-link font-semibold\" [href]=\"item.href | externalHref\"\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.ariaDisabled ? item.ariaDisabled : 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.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </a>\r\n</ng-template>\r\n\r\n<ng-template #itemRouterLink let-item=\"item\">\r\n <a class=\"c-link font-semibold\" [routerLink]=\"item.routerLink\" [fragment]=\"item.fragment\"\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.ariaDisabled ? item.ariaDisabled : 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.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </a>\r\n</ng-template>\r\n"
5088
4849
  },] }
5089
4850
  ];
5090
4851
  FooterComponent.propDecorators = {
@@ -5118,29 +4879,23 @@ ErrorSummaryItemComponent.propDecorators = {
5118
4879
  };
5119
4880
 
5120
4881
  class ErrorSummaryComponent extends AccessibilityComponent {
5121
- handleContentRequired(element) {
5122
- throw new Error(element + ' content, html or text are required');
5123
- }
5124
4882
  getErrorItemList() {
5125
4883
  let errorItemList;
5126
4884
  if (this.errorComponentList && this.errorComponentList.length > 0) {
5127
4885
  errorItemList = this.errorComponentList.toArray();
5128
4886
  }
5129
4887
  else {
5130
- errorItemList = this.errorList;
4888
+ errorItemList = this.errorList ? this.errorList : null;
5131
4889
  }
5132
4890
  const lastLength = this.lastErrorItemCount;
5133
- this.lastErrorItemCount = errorItemList.length;
5134
- if (errorItemList.length === 0 && lastLength !== 0) {
5135
- throw new Error(`errorList or inner error-summary-item are required`);
5136
- }
4891
+ this.lastErrorItemCount = errorItemList ? errorItemList.length : null;
5137
4892
  return errorItemList;
5138
4893
  }
5139
4894
  }
5140
4895
  ErrorSummaryComponent.decorators = [
5141
4896
  { type: Component, args: [{
5142
4897
  selector: 'desy-error-summary',
5143
- template: "<div [class]=\"['p-base bg-white border-2 border-alert-base', classes] | makeHtmlList\" tabindex=\"-1\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.role]=\"role ? role : 'alert'\"\r\n [attr.aria-describedby]=\"ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : 'error-summary-title'\"\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 <h2 class=\"mb-base font-bold\" [attr.id]=\"ariaLabelledBy ? ariaLabelledBy :'error-summary-title'\"\r\n (desyContentEmpty)=\"handleContentRequired('title')\">\r\n <ng-container *desyCustomInnerContent=\"{component: titleComponent, html: titleHtml, text: titleText}\"></ng-container>\r\n </h2>\r\n <div>\r\n <p *ngIf=\"(descriptionComponent && descriptionComponent.getContent()) || descriptionHtml || descriptionText\" class=\"mb-base\">\r\n <ng-container *desyCustomInnerContent=\"{component: descriptionComponent, html: descriptionHtml, text: descriptionText}\"></ng-container>\r\n </p>\r\n <ul class=\"font-semibold text-alert-base\">\r\n <ng-container *ngFor=\"let item of getErrorItemList(); index as i\">\r\n <li *ngIf=\"item.fragment\">\r\n <a routerLink=\"./\" [fragment]=\"item.fragment\" class=\"c-link c-link--alert\"\r\n (desyContentEmpty)=\"handleContentRequired('item at position ' + i)\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{component: item, html: item.html, text: item.text}\"></ng-container>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!item.fragment\" (desyContentEmpty)=\"handleContentRequired('item at position ' + i)\">\r\n <ng-container *desyCustomInnerContent=\"{component: item, 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"
4898
+ template: "<div [class]=\"['p-base bg-white border-2 border-alert-base', classes] | makeHtmlList\" tabindex=\"-1\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.role]=\"role ? role : 'alert'\"\r\n [attr.aria-describedby]=\"ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : 'error-summary-title'\"\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 <h2 class=\"mb-base font-bold\" [attr.id]=\"ariaLabelledBy ? ariaLabelledBy :'error-summary-title'\">\r\n <ng-container *desyCustomInnerContent=\"{component: titleComponent, html: titleHtml, text: titleText}\"></ng-container>\r\n </h2>\r\n <div>\r\n <p *ngIf=\"(descriptionComponent && descriptionComponent.getContent()) || descriptionHtml || descriptionText\" class=\"mb-base\">\r\n <ng-container *desyCustomInnerContent=\"{component: descriptionComponent, html: descriptionHtml, text: descriptionText}\"></ng-container>\r\n </p>\r\n <ul class=\"font-semibold text-alert-base\">\r\n <ng-container *ngFor=\"let item of getErrorItemList(); index as i\">\r\n <li *ngIf=\"item.fragment\">\r\n <a routerLink=\"./\" [fragment]=\"item.fragment\" class=\"c-link c-link--alert\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{component: item, html: item.html, text: item.text}\"></ng-container>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!item.fragment\">\r\n <ng-container *desyCustomInnerContent=\"{component: item, 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"
5144
4899
  },] }
5145
4900
  ];
5146
4901
  ErrorSummaryComponent.propDecorators = {
@@ -5193,8 +4948,6 @@ class MenuHorizontalComponent extends AccessibilityComponent {
5193
4948
  super(...arguments);
5194
4949
  this.clickEvent = new EventEmitter();
5195
4950
  }
5196
- ngOnChanges(changes) {
5197
- }
5198
4951
  onClick(event, item) {
5199
4952
  const itemsActiveChange = [];
5200
4953
  if (!item.active) {
@@ -5224,19 +4977,8 @@ class MenuHorizontalComponent extends AccessibilityComponent {
5224
4977
  }
5225
4978
  getItemList() {
5226
4979
  const itemList = this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;
5227
- if (!itemList || itemList.length === 0) {
5228
- throw new Error(`items are required`);
5229
- }
5230
- itemList.forEach(item => {
5231
- if (!item.routerLink && !item.href) {
5232
- throw Error('item routerLink or href are required');
5233
- }
5234
- });
5235
4980
  return itemList;
5236
4981
  }
5237
- handleEmptyItem(position) {
5238
- throw new Error(`item content, html or text are required at position ${position}`);
5239
- }
5240
4982
  getItemId(item, index) {
5241
4983
  let id;
5242
4984
  if (item.id) {
@@ -5254,7 +4996,7 @@ class MenuHorizontalComponent extends AccessibilityComponent {
5254
4996
  MenuHorizontalComponent.decorators = [
5255
4997
  { type: Component, args: [{
5256
4998
  selector: 'desy-menu-horizontal',
5257
- 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"
4999
+ 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>\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\">\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\">\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"
5258
5000
  },] }
5259
5001
  ];
5260
5002
  MenuHorizontalComponent.propDecorators = {
@@ -5329,9 +5071,6 @@ __decorate([
5329
5071
  ], MenuVerticalItemComponent.prototype, "subComponent", void 0);
5330
5072
 
5331
5073
  class MenuVerticalComponent extends AccessibilityComponent {
5332
- handleItemContentEmpty(index, isRoot) {
5333
- throw new Error(`${isRoot ? 'Item' : 'Subitem'} content, html or text ar required at position ${index}`);
5334
- }
5335
5074
  getItemHtml(item) {
5336
5075
  let itemHtml;
5337
5076
  if (item.active) {
@@ -5374,9 +5113,6 @@ class MenuVerticalComponent extends AccessibilityComponent {
5374
5113
  }
5375
5114
  getItems() {
5376
5115
  const itemList = this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;
5377
- if (!itemList || itemList.length === 0) {
5378
- throw new Error(`items are required`);
5379
- }
5380
5116
  return itemList;
5381
5117
  }
5382
5118
  getItemSub(item) {
@@ -5390,7 +5126,7 @@ class MenuVerticalComponent extends AccessibilityComponent {
5390
5126
  MenuVerticalComponent.decorators = [
5391
5127
  { type: Component, args: [{
5392
5128
  selector: 'desy-menu-vertical',
5393
- 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 <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",
5129
+ 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 [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 [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 <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 [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",
5394
5130
  animations: [
5395
5131
  trigger('displayMenuVertical', [
5396
5132
  state('void', style({
@@ -5774,21 +5510,9 @@ class MenubarComponent extends AccessibilityComponent {
5774
5510
  * Comunes
5775
5511
  */
5776
5512
  checkRequired() {
5777
- if (!this.id) {
5778
- throw Error('id is required');
5779
- }
5780
- if (!this.ariaLabel) {
5781
- throw Error('ariaLabel is required');
5782
- }
5783
5513
  const items = this.getItems();
5784
- if (!items || items.length === 0) {
5785
- throw Error('Items are required');
5786
- }
5787
5514
  // No se ha puesto label required porque en algunos ejemplos de desy-html no aparece
5788
5515
  }
5789
- handleEmptyItem(text) {
5790
- throw Error(text);
5791
- }
5792
5516
  activateMenuItem(itemIndex) {
5793
5517
  const items = this.getItems();
5794
5518
  this.activeItemChange.emit(items[itemIndex]);
@@ -6165,7 +5889,7 @@ class MenubarComponent extends AccessibilityComponent {
6165
5889
  MenubarComponent.decorators = [
6166
5890
  { type: Component, args: [{
6167
5891
  selector: 'desy-menubar',
6168
- 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"
5892
+ 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 <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 (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 (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 (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 (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 (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 (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"
6169
5893
  },] }
6170
5894
  ];
6171
5895
  MenubarComponent.ctorParameters = () => [
@@ -6239,19 +5963,11 @@ class NotificationComponent extends AccessibilityComponent {
6239
5963
  // Como que el contenido vacío se comprueba a posteriori, es necesario forzar la detección de cambios para mostrar el icono por defecto
6240
5964
  this.changeDetectorRef.detectChanges();
6241
5965
  }
6242
- handleRequiredEmpty(text) {
6243
- throw new Error(text);
6244
- }
6245
- ngOnChanges(changes) {
6246
- if (!this.id) {
6247
- throw new Error(`id is required`);
6248
- }
6249
- }
6250
5966
  }
6251
5967
  NotificationComponent.decorators = [
6252
5968
  { type: Component, args: [{
6253
5969
  selector: 'desy-notification',
6254
- template: "<div [attr.id]=\"id ? id : null\" [class]=\"(classes ? 'c-notification ' + classes : type=='success' ? 'c-notification c-notification--' + type : type=='alert' ? 'c-notification c-notification--' + type : 'c-notification c-notification--primary') \"\r\n *ngIf=\"isOpen && !isDismissing\"\r\n @displayNotification\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 || type\" class=\"h-full mr-base\"\r\n (desyContentEmpty)=\"handleIconEmpty(true)\"\r\n (desyContentNotEmpty)=\"handleIconEmpty(false)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent, html: icon ? icon.html : null }\"></ng-container>\r\n <ng-container *ngIf=\"displayDefaultIcon && type\">\r\n <ng-container [ngSwitch]=\"getType()\">\r\n <svg *ngSwitchCase=\"'success'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-5 h-5 text-success-dark\" aria-label=\"\u00C9xito\" focusable=\"false\" role=\"img\"><path d=\"M39.94 125a19.88 19.88 0 01-15.53-7.81L2.48 92.26a10 10 0 0115-13.2l20.55 23.39a2.5 2.5 0 003.68.08l81-84.42a10.002 10.002 0 1114.5 13.78l-82.02 86.33A19.41 19.41 0 0139.94 125z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'alert'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-5 h-5 text-alert-base\" aria-label=\"Error\" focusable=\"false\" role=\"img\"><path d=\"M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'info'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-5 h-5 text-primary-base\" aria-label=\"Informaci\u00F3n\" focusable=\"false\" role=\"img\"><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm7.5 105a7.5 7.5 0 01-15 0V70a7.5 7.5 0 0115 0zM70 50a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"lg:flex flex-1 self-center\">\r\n <div class=\"lg:flex-1 lg:self-center\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h1>\r\n <h2 *ngSwitchCase=\"2\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h2>\r\n <h3 *ngSwitchCase=\"3\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h3>\r\n <h4 *ngSwitchCase=\"4\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h4>\r\n <h5 *ngSwitchCase=\"5\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h5>\r\n <p *ngSwitchDefault [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </p>\r\n </ng-container>\r\n <ng-container *ngIf=\"descriptionComponent || description\">\r\n <p [class]=\"descriptionComponent ? descriptionComponent.classes : description.classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('description content, html or text are required')\">\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 </ng-container>\r\n <ul *ngIf=\"(itemCompontents && itemCompontents.length > 0) || items\">\r\n <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <li *ngIf=\"item.routerLink || item.href\">\r\n <a *ngIf=\"item.routerLink\" class=\"c-link\"\r\n [routerLink]=\"item.routerLink\"\r\n [fragment]=\"item.fragment\"\r\n [ngClass]=\"{'c-link--alert': type==='alert'}\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\r\n [attr.ariaLabel]=\"item.ariaLabel\"\r\n [attr.ariaDescribedBy]=\"item.ariaDescribedBy\"\r\n [attr.ariaLabelledBy]=\"item.ariaLabelledBy\"\r\n [attr.ariaHidden]=\"item.ariaHidden\"\r\n [attr.ariaDisabled]=\"item.ariaDisabled\"\r\n [attr.ariaControls]=\"item.ariaControls\"\r\n [attr.ariaCurrent]=\"item.ariaCurrent\"\r\n [attr.ariaLive]=\"item.ariaLive\"\r\n [attr.ariaExpanded]=\"item.ariaExpanded\"\r\n [attr.ariaErrorMessage]=\"item.ariaErrorMessage\"\r\n [attr.ariaHasPopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('item content, html or text are required at position ' + i)\">\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\" class=\"c-link\"\r\n [href]=\"item.href | externalHref\"\r\n [target]=\"item.target\"\r\n [ngClass]=\"{'c-link--alert': type==='alert'}\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\r\n [attr.ariaLabel]=\"item.ariaLabel\"\r\n [attr.ariaDescribedBy]=\"item.ariaDescribedBy\"\r\n [attr.ariaLabelledBy]=\"item.ariaLabelledBy\"\r\n [attr.ariaHidden]=\"item.ariaHidden\"\r\n [attr.ariaDisabled]=\"item.ariaDisabled\"\r\n [attr.ariaControls]=\"item.ariaControls\"\r\n [attr.ariaCurrent]=\"item.ariaCurrent\"\r\n [attr.ariaLive]=\"item.ariaLive\"\r\n [attr.ariaExpanded]=\"item.ariaExpanded\"\r\n [attr.ariaErrorMessage]=\"item.ariaErrorMessage\"\r\n [attr.ariaHasPopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('item content, html or text are required at position ' + i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!item.routerLink && !item.href\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('item content, html or text are required at position ' + i)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <p *ngIf=\"contentComponent || content\" [class]=\"['text-sm', contentComponent ? contentComponent.classes : content.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: contentComponent,\r\n html: content ? content.html : null,\r\n text: content ? content.text : null\r\n }\"></ng-container>\r\n </p>\r\n </div>\r\n <ng-container *ngIf=\"isDismissible\">\r\n <div class=\"absolute top-0 right-0 p-sm\">\r\n <button (click)=\"dismiss()\" 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 notificaci\u00F3n\">\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</div>\r\n",
5970
+ template: "<div [attr.id]=\"id ? id : null\" [class]=\"(classes ? 'c-notification ' + classes : type=='success' ? 'c-notification c-notification--' + type : type=='alert' ? 'c-notification c-notification--' + type : 'c-notification c-notification--primary') \"\r\n *ngIf=\"isOpen && !isDismissing\"\r\n @displayNotification\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 || type\" class=\"h-full mr-base\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent, html: icon ? icon.html : null }\"></ng-container>\r\n <ng-container *ngIf=\"displayDefaultIcon && type\">\r\n <ng-container [ngSwitch]=\"getType()\">\r\n <svg *ngSwitchCase=\"'success'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-5 h-5 text-success-dark\" aria-label=\"\u00C9xito\" focusable=\"false\" role=\"img\"><path d=\"M39.94 125a19.88 19.88 0 01-15.53-7.81L2.48 92.26a10 10 0 0115-13.2l20.55 23.39a2.5 2.5 0 003.68.08l81-84.42a10.002 10.002 0 1114.5 13.78l-82.02 86.33A19.41 19.41 0 0139.94 125z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'alert'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-5 h-5 text-alert-base\" aria-label=\"Error\" focusable=\"false\" role=\"img\"><path d=\"M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'info'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-5 h-5 text-primary-base\" aria-label=\"Informaci\u00F3n\" focusable=\"false\" role=\"img\"><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm7.5 105a7.5 7.5 0 01-15 0V70a7.5 7.5 0 0115 0zM70 50a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"lg:flex flex-1 self-center\">\r\n <div class=\"lg:flex-1 lg:self-center\">\r\n <ng-container *ngIf=\"titleComponent || title\" [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h1>\r\n <h2 *ngSwitchCase=\"2\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h2>\r\n <h3 *ngSwitchCase=\"3\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h3>\r\n <h4 *ngSwitchCase=\"4\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h4>\r\n <h5 *ngSwitchCase=\"5\" [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </h5>\r\n <p *ngSwitchDefault [id]=\"id ? id + '-title' : null\" tabindex=\"-1\"\r\n [class]=\"['font-bold pr-base focus:outline-none focus:underline', titleComponent ? titleComponent.classes : title.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </p>\r\n </ng-container>\r\n <ng-container *ngIf=\"descriptionComponent || description\">\r\n <p [class]=\"descriptionComponent ? descriptionComponent.classes : description.classes\">\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 </ng-container>\r\n <ul *ngIf=\"(itemCompontents && itemCompontents.length > 0) || items\">\r\n <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <li *ngIf=\"item.routerLink || item.href\">\r\n <a *ngIf=\"item.routerLink\" class=\"c-link\"\r\n [routerLink]=\"item.routerLink\"\r\n [fragment]=\"item.fragment\"\r\n [ngClass]=\"{'c-link--alert': type==='alert'}\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\r\n [attr.ariaLabel]=\"item.ariaLabel\"\r\n [attr.ariaDescribedBy]=\"item.ariaDescribedBy\"\r\n [attr.ariaLabelledBy]=\"item.ariaLabelledBy\"\r\n [attr.ariaHidden]=\"item.ariaHidden\"\r\n [attr.ariaDisabled]=\"item.ariaDisabled\"\r\n [attr.ariaControls]=\"item.ariaControls\"\r\n [attr.ariaCurrent]=\"item.ariaCurrent\"\r\n [attr.ariaLive]=\"item.ariaLive\"\r\n [attr.ariaExpanded]=\"item.ariaExpanded\"\r\n [attr.ariaErrorMessage]=\"item.ariaErrorMessage\"\r\n [attr.ariaHasPopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\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\" class=\"c-link\"\r\n [href]=\"item.href | externalHref\"\r\n [target]=\"item.target\"\r\n [ngClass]=\"{'c-link--alert': type==='alert'}\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\r\n [attr.ariaLabel]=\"item.ariaLabel\"\r\n [attr.ariaDescribedBy]=\"item.ariaDescribedBy\"\r\n [attr.ariaLabelledBy]=\"item.ariaLabelledBy\"\r\n [attr.ariaHidden]=\"item.ariaHidden\"\r\n [attr.ariaDisabled]=\"item.ariaDisabled\"\r\n [attr.ariaControls]=\"item.ariaControls\"\r\n [attr.ariaCurrent]=\"item.ariaCurrent\"\r\n [attr.ariaLive]=\"item.ariaLive\"\r\n [attr.ariaExpanded]=\"item.ariaExpanded\"\r\n [attr.ariaErrorMessage]=\"item.ariaErrorMessage\"\r\n [attr.ariaHasPopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!item.routerLink && !item.href\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <p *ngIf=\"contentComponent || content\" [class]=\"['text-sm', contentComponent ? contentComponent.classes : content.classes] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: contentComponent,\r\n html: content ? content.html : null,\r\n text: content ? content.text : null\r\n }\"></ng-container>\r\n </p>\r\n </div>\r\n <ng-container *ngIf=\"isDismissible\">\r\n <div class=\"absolute top-0 right-0 p-sm\">\r\n <button (click)=\"dismiss()\" 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 notificaci\u00F3n\">\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</div>\r\n",
6255
5971
  animations: [
6256
5972
  trigger('displayNotification', [
6257
5973
  state('void', style({
@@ -6374,27 +6090,16 @@ class TableComponent extends AccessibilityComponent {
6374
6090
  }
6375
6091
  getRows() {
6376
6092
  const rowList = this.rowComponentList && this.rowComponentList.length > 0 ? this.rowComponentList.toArray() : this.rows;
6377
- if (!rowList || rowList.length === 0) {
6378
- throw new Error(`rows are required`);
6379
- }
6380
6093
  return rowList;
6381
6094
  }
6382
6095
  getRowCells(row) {
6383
6096
  return row instanceof TableRowComponent ? row.cells.toArray() : row;
6384
6097
  }
6385
- handleEmptyCell(cell, row, cellIndex) {
6386
- if (cell instanceof TableCellComponent) {
6387
- throw new Error(`Content is required for cell at position ${cellIndex} of row ${row}`);
6388
- }
6389
- else {
6390
- throw new Error(`Text or Html are required for cell at position ${cellIndex} of row ${row}`);
6391
- }
6392
- }
6393
6098
  }
6394
6099
  TableComponent.decorators = [
6395
6100
  { type: Component, args: [{
6396
6101
  selector: 'desy-table',
6397
- template: "<ng-template #tableContent>\r\n <table [class]=\"['c-table', 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 <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\r\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\r\n </caption>\r\n <thead *ngIf=\"head || headerComponent\">\r\n <tr class=\"border-t border-b border-neutral-base\">\r\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\r\n <th scope=\"col\"\r\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\r\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\r\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\r\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\r\n [attr.role]=\"headerCell.role\"\r\n [attr.aria-describedby]=\"headerCell.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"headerCell.ariaErrorMessage\"\r\n [attr.aria-label]=\"headerCell.ariaLabel\"\r\n [attr.aria-labelledby]=\"headerCell.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"headerCell.ariaHidden\"\r\n [attr.aria-disabled]=\"headerCell.ariaDisabled\"\r\n [attr.aria-controls]=\"headerCell.ariaControls\"\r\n [attr.aria-current]=\"headerCell.ariaCurrent\"\r\n [attr.aria-live]=\"headerCell.ariaLive\"\r\n [attr.aria-expanded]=\"headerCell.ariaExpanded\"\r\n [attr.aria-haspopup]=\"headerCell.ariaHasPopup\"\r\n [attr.tabindex]=\"headerCell.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text }\"></ng-container>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"border-t border-b border-neutral-base\">\r\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\r\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\r\n (desyContentEmpty)=\"handleEmptyCell(cell, rowIndex, cellIndex)\"\r\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\r\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\r\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\r\n [attr.id]=\"cell.id ? cell.id : null\"\r\n [attr.role]=\"cell.role ? cell.role : null\"\r\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\r\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\r\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\r\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\r\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\r\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\r\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\r\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\r\n </th>\r\n <ng-template #elseTd>\r\n <td [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\r\n (desyContentEmpty)=\"handleEmptyCell(cell, rowIndex, cellIndex)\"\r\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\r\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\r\n [attr.id]=\"cell.id ? cell.id : null\"\r\n [attr.role]=\"cell.role ? cell.role : null\"\r\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\r\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\r\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\r\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\r\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\r\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\r\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\r\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\r\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\r\n</div>\r\n"
6102
+ template: "<ng-template #tableContent>\r\n <table [class]=\"['c-table', 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 <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\r\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\r\n </caption>\r\n <thead *ngIf=\"head || headerComponent\">\r\n <tr class=\"border-t border-b border-neutral-base\">\r\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\r\n <th scope=\"col\"\r\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\r\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\r\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\r\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\r\n [attr.role]=\"headerCell.role\"\r\n [attr.aria-describedby]=\"headerCell.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"headerCell.ariaErrorMessage\"\r\n [attr.aria-label]=\"headerCell.ariaLabel\"\r\n [attr.aria-labelledby]=\"headerCell.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"headerCell.ariaHidden\"\r\n [attr.aria-disabled]=\"headerCell.ariaDisabled\"\r\n [attr.aria-controls]=\"headerCell.ariaControls\"\r\n [attr.aria-current]=\"headerCell.ariaCurrent\"\r\n [attr.aria-live]=\"headerCell.ariaLive\"\r\n [attr.aria-expanded]=\"headerCell.ariaExpanded\"\r\n [attr.aria-haspopup]=\"headerCell.ariaHasPopup\"\r\n [attr.tabindex]=\"headerCell.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text }\"></ng-container>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"border-t border-b border-neutral-base\">\r\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\r\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\r\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\r\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\r\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\r\n [attr.id]=\"cell.id ? cell.id : null\"\r\n [attr.role]=\"cell.role ? cell.role : null\"\r\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\r\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\r\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\r\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\r\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\r\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\r\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\r\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\r\n </th>\r\n <ng-template #elseTd>\r\n <td [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\r\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\r\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\r\n [attr.id]=\"cell.id ? cell.id : null\"\r\n [attr.role]=\"cell.role ? cell.role : null\"\r\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\r\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\r\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\r\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\r\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\r\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\r\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\r\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\r\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\r\n</div>\r\n"
6398
6103
  },] }
6399
6104
  ];
6400
6105
  TableComponent.propDecorators = {
@@ -6646,9 +6351,6 @@ class TableAdvancedComponent extends AccessibilityComponent {
6646
6351
  return 'none';
6647
6352
  }
6648
6353
  }
6649
- handleTableCellContentEmpty(row, column) {
6650
- throw new Error(`cell content, html or text are required at row ${row} and column ${column}`);
6651
- }
6652
6354
  /**
6653
6355
  * checks
6654
6356
  */
@@ -6778,7 +6480,7 @@ class TableAdvancedComponent extends AccessibilityComponent {
6778
6480
  TableAdvancedComponent.decorators = [
6779
6481
  { type: Component, args: [{
6780
6482
  selector: 'desy-table-advanced',
6781
- template: "<ng-template #tableContent>\r\n <table role=\"grid\"\r\n [class]=\"['c-table-advanced border-t-2 border-b-2 border-neutral-base', 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 <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\r\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\r\n </caption>\r\n <thead *ngIf=\"getHeaderCells()\">\r\n <tr class=\"border-t border-neutral-base divide-x divide-neutral-base\">\r\n <th *ngIf=\"hasCheckboxes\" scope=\"col\" [class]=\"['align-top px-base py-xs', checkboxClasses] | makeHtmlList\">\r\n <span class=\"sr-only\">Seleccionar fila</span>\r\n </th>\r\n <th scope=\"col\" *ngFor=\"let item of getHeaderCells(); index as iHeader\" [id]=\"getIdHeader(iHeader)\"\r\n [attr.aria-sort]=\"item.orderBy ? getStringOrderBy(item.orderBy) : null\"\r\n [class]=\"['align-top px-base py-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\"\r\n [attr.colspan]=\"item.colspan ? item.colspan : null\"\r\n [attr.rowspan]=\"item.rowspan ? item.rowspan : 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.ariaDisabled ? item.ariaDisabled : 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.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n\r\n <span *ngIf=\"item.orderBy\" class=\"inline-block relative\" (click)=\"handleSortByColumn(iHeader)\" desyFocusClickedCell\r\n [attr.tabindex]=\"item.orderBy ? -1 : null\"\r\n [attr.role]=\"item.orderBy ? 'button' : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n <span class=\"c-table-advanced__order\" *ngIf=\"item.orderBy\">\r\n <span class=\"sr-only\">Pulsa para ordenar por esta columna</span>\r\n <span class=\"c-table-advanced__ascending\" *ngIf=\"item.orderBy == orderByType.asc\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M112.07 37.93l-35-35a10 10 0 00-14.14 0l-35 35a10 10 0 0014.14 14.14l13.66-13.66A2.5 2.5 0 0160 40.18V130a10 10 0 0020 0V40.18a2.5 2.5 0 014.27-1.77l13.66 13.66a10 10 0 0014.14-14.14z\" fill=\"currentColor\"/></svg>\r\n </span>\r\n <span class=\"c-table-advanced__descending\" *ngIf=\"item.orderBy == orderByType.desc\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M27.93 102.07l35 35a10 10 0 0014.14 0l35-35a10 10 0 00-14.14-14.14l-13.66 13.66A2.5 2.5 0 0180 99.82V10a10 10 0 00-20 0v89.82a2.5 2.5 0 01-4.27 1.77L42.07 87.93a10 10 0 00-14.14 14.14z\" fill=\"currentColor\"/></svg>\r\n </span>\r\n <span class=\"c-table-advanced__none\" *ngIf=\"item.orderBy == orderByType.none\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" class=\"text-neutral-base\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M94.7 97.2l-17.2 17.19V25.61L94.7 42.8a7.5 7.5 0 0010.6-10.6l-30-30a7.49 7.49 0 00-10.6 0l-30 30a7.5 7.5 0 0010.6 10.6l17.2-17.19v88.78L45.3 97.2a7.5 7.5 0 10-10.6 10.6l30 30a7.48 7.48 0 0010.6 0l30-30a7.5 7.5 0 00-10.6-10.6z\" fill=\"currentColor\"/></svg>\r\n </span>\r\n </span>\r\n </span>\r\n\r\n <span *ngIf=\"!item.orderBy\" class=\"inline-block relative\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr class=\"divide-x divide-neutral-base\" *ngIf=\"hasFilters()\">\r\n <td *ngIf=\"hasCheckboxes\" [ngClass]=\"checkboxClasses\"></td>\r\n <td tabindex=\"-1\" *ngFor=\"let item of getHeaderCells(); index as iHead\" desyFocusClickedCell\r\n [class]=\"['align-top px-base pb-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\">\r\n <desy-search-bar *ngIf=\"item.hasFilter\"\r\n [(ngModel)]=\"item.valueFilter\" [ngModelOptions]=\"{standalone: true}\"\r\n (clickEvent)=\"handleInputSearch(item)\"\r\n (ngModelChange)=\"handleInputSearch(item)\"\r\n labelText=\"Buscar en esta columna\"\r\n [id]=\"getIdHeaderFilter(iHead)\"\r\n placeholder=\"Buscar\"\r\n [classes]=\"['c-input--sm', item.filterClasses] | makeHtmlList\"\r\n buttonClasses=\"m-xs p-0.5 text-xs\"\r\n [describedBy]=\"getIdHeader(iHead)\"> </desy-search-bar>\r\n </td>\r\n </tr>\r\n\r\n\r\n <tr *ngFor=\"let row of getVisibleRows(); index as iRow\" class=\"border-t border-b border-neutral-base hover:bg-neutral-lighter\"\r\n [desyRow]=\"row\"\r\n [ngClass]=\"{'bg-neutral-light': hasCheckboxes && row.checked }\">\r\n <td *ngIf=\"hasCheckboxes\" desyFocusClickedCell [class]=\"['px-base py-sm', checkboxClasses] | makeHtmlList\"\r\n tabindex=\"-1\" >\r\n <div class=\"c-checkboxes c-checkboxes--sm\">\r\n <div>\r\n <div class=\"relative flex items-start\">\r\n <div class=\"flex items-center mx-sm\">\r\n <input type=\"checkbox\" 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-light disabled:border-neutral-base text-primary-base\"\r\n [(ngModel)]=\"row.checked\" (ngModelChange)=\"handleCheckboxChange(row)\"\r\n [id]=\"getIdRowCheckbox(iRow)\"\r\n [name]=\"getIdRowCheckbox(iRow)\"\r\n [attr.aria-label]=\"'Fila ' + iRow\">\r\n </div>\r\n <div class=\"pt-0.5 leading-5\">\r\n <label class=\"sr-only block text-sm -mt-1\" [for]=\"getIdRowCheckbox(iRow)\">Selecciona fila {{ iRow }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <ng-container *ngFor=\"let cell of row.cellsList; first as isFirstCell; index as columnIndex\">\r\n <th *ngIf=\"firstCellIsHeader && isFirstCell; else elseTd\" scope=\"row\"\r\n [class]=\"['px-base py-xs border-neutral-base border-b-0 border-r text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\r\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\r\n (desyContentEmpty)=\"handleTableCellContentEmpty(iRow, columnIndex)\"\r\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\r\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\r\n [attr.id]=\"cell.id ? cell.id : null\"\r\n [attr.role]=\"cell.role ? cell.role : null\"\r\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\r\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\r\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\r\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\r\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\r\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\r\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\r\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\r\n </th>\r\n <ng-template #elseTd>\r\n <td tabindex=\"-1\" desyFocusClickedCell\r\n [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\r\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\r\n (desyContentEmpty)=\"handleTableCellContentEmpty(iRow, columnIndex)\"\r\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\r\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\r\n [attr.id]=\"cell.id ? cell.id : null\"\r\n [attr.role]=\"cell.role ? cell.role : null\"\r\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\r\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\r\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\r\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\r\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\r\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\r\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\r\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : -1\">\r\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\r\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\r\n</div>\r\n"
6483
+ template: "<ng-template #tableContent>\r\n <table role=\"grid\"\r\n [class]=\"['c-table-advanced border-t-2 border-b-2 border-neutral-base', 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 <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\r\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\r\n </caption>\r\n <thead *ngIf=\"getHeaderCells()\">\r\n <tr class=\"border-t border-neutral-base divide-x divide-neutral-base\">\r\n <th *ngIf=\"hasCheckboxes\" scope=\"col\" [class]=\"['align-top px-base py-xs', checkboxClasses] | makeHtmlList\">\r\n <span class=\"sr-only\">Seleccionar fila</span>\r\n </th>\r\n <th scope=\"col\" *ngFor=\"let item of getHeaderCells(); index as iHeader\" [id]=\"getIdHeader(iHeader)\"\r\n [attr.aria-sort]=\"item.orderBy ? getStringOrderBy(item.orderBy) : null\"\r\n [class]=\"['align-top px-base py-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\"\r\n [attr.colspan]=\"item.colspan ? item.colspan : null\"\r\n [attr.rowspan]=\"item.rowspan ? item.rowspan : 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.ariaDisabled ? item.ariaDisabled : 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.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n\r\n <span *ngIf=\"item.orderBy\" class=\"inline-block relative\" (click)=\"handleSortByColumn(iHeader)\" desyFocusClickedCell\r\n [attr.tabindex]=\"item.orderBy ? -1 : null\"\r\n [attr.role]=\"item.orderBy ? 'button' : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n <span class=\"c-table-advanced__order\" *ngIf=\"item.orderBy\">\r\n <span class=\"sr-only\">Pulsa para ordenar por esta columna</span>\r\n <span class=\"c-table-advanced__ascending\" *ngIf=\"item.orderBy == orderByType.asc\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M112.07 37.93l-35-35a10 10 0 00-14.14 0l-35 35a10 10 0 0014.14 14.14l13.66-13.66A2.5 2.5 0 0160 40.18V130a10 10 0 0020 0V40.18a2.5 2.5 0 014.27-1.77l13.66 13.66a10 10 0 0014.14-14.14z\" fill=\"currentColor\"/></svg>\r\n </span>\r\n <span class=\"c-table-advanced__descending\" *ngIf=\"item.orderBy == orderByType.desc\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M27.93 102.07l35 35a10 10 0 0014.14 0l35-35a10 10 0 00-14.14-14.14l-13.66 13.66A2.5 2.5 0 0180 99.82V10a10 10 0 00-20 0v89.82a2.5 2.5 0 01-4.27 1.77L42.07 87.93a10 10 0 00-14.14 14.14z\" fill=\"currentColor\"/></svg>\r\n </span>\r\n <span class=\"c-table-advanced__none\" *ngIf=\"item.orderBy == orderByType.none\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" class=\"text-neutral-base\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M94.7 97.2l-17.2 17.19V25.61L94.7 42.8a7.5 7.5 0 0010.6-10.6l-30-30a7.49 7.49 0 00-10.6 0l-30 30a7.5 7.5 0 0010.6 10.6l17.2-17.19v88.78L45.3 97.2a7.5 7.5 0 10-10.6 10.6l30 30a7.48 7.48 0 0010.6 0l30-30a7.5 7.5 0 00-10.6-10.6z\" fill=\"currentColor\"/></svg>\r\n </span>\r\n </span>\r\n </span>\r\n\r\n <span *ngIf=\"!item.orderBy\" class=\"inline-block relative\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text }\"></ng-container>\r\n </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr class=\"divide-x divide-neutral-base\" *ngIf=\"hasFilters()\">\r\n <td *ngIf=\"hasCheckboxes\" [ngClass]=\"checkboxClasses\"></td>\r\n <td tabindex=\"-1\" *ngFor=\"let item of getHeaderCells(); index as iHead\" desyFocusClickedCell\r\n [class]=\"['align-top px-base pb-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\">\r\n <desy-search-bar *ngIf=\"item.hasFilter\"\r\n [(ngModel)]=\"item.valueFilter\" [ngModelOptions]=\"{standalone: true}\"\r\n (clickEvent)=\"handleInputSearch(item)\"\r\n (ngModelChange)=\"handleInputSearch(item)\"\r\n labelText=\"Buscar en esta columna\"\r\n [id]=\"getIdHeaderFilter(iHead)\"\r\n placeholder=\"Buscar\"\r\n [classes]=\"['c-input--sm', item.filterClasses] | makeHtmlList\"\r\n buttonClasses=\"m-xs p-0.5 text-xs\"\r\n [describedBy]=\"getIdHeader(iHead)\"> </desy-search-bar>\r\n </td>\r\n </tr>\r\n\r\n\r\n <tr *ngFor=\"let row of getVisibleRows(); index as iRow\" class=\"border-t border-b border-neutral-base hover:bg-neutral-lighter\"\r\n [desyRow]=\"row\"\r\n [ngClass]=\"{'bg-neutral-light': hasCheckboxes && row.checked }\">\r\n <td *ngIf=\"hasCheckboxes\" desyFocusClickedCell [class]=\"['px-base py-sm', checkboxClasses] | makeHtmlList\"\r\n tabindex=\"-1\" >\r\n <div class=\"c-checkboxes c-checkboxes--sm\">\r\n <div>\r\n <div class=\"relative flex items-start\">\r\n <div class=\"flex items-center mx-sm\">\r\n <input type=\"checkbox\" 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-light disabled:border-neutral-base text-primary-base\"\r\n [(ngModel)]=\"row.checked\" (ngModelChange)=\"handleCheckboxChange(row)\"\r\n [id]=\"getIdRowCheckbox(iRow)\"\r\n [name]=\"getIdRowCheckbox(iRow)\"\r\n [attr.aria-label]=\"'Fila ' + iRow\">\r\n </div>\r\n <div class=\"pt-0.5 leading-5\">\r\n <label class=\"sr-only block text-sm -mt-1\" [for]=\"getIdRowCheckbox(iRow)\">Selecciona fila {{ iRow }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <ng-container *ngFor=\"let cell of row.cellsList; first as isFirstCell; index as columnIndex\">\r\n <th *ngIf=\"firstCellIsHeader && isFirstCell; else elseTd\" scope=\"row\"\r\n [class]=\"['px-base py-xs border-neutral-base border-b-0 border-r text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\r\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\r\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\r\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\r\n [attr.id]=\"cell.id ? cell.id : null\"\r\n [attr.role]=\"cell.role ? cell.role : null\"\r\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\r\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\r\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\r\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\r\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\r\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\r\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\r\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\r\n </th>\r\n <ng-template #elseTd>\r\n <td tabindex=\"-1\" desyFocusClickedCell\r\n [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\r\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\r\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\r\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\r\n [attr.id]=\"cell.id ? cell.id : null\"\r\n [attr.role]=\"cell.role ? cell.role : null\"\r\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\r\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\r\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\r\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\r\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\r\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\r\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\r\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : -1\">\r\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\r\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\r\n</div>\r\n"
6782
6484
  },] }
6783
6485
  ];
6784
6486
  TableAdvancedComponent.ctorParameters = () => [
@@ -6836,12 +6538,6 @@ class AlertComponent extends AccessibilityComponent {
6836
6538
  this.active = false;
6837
6539
  }
6838
6540
  ngAfterViewInit() {
6839
- if (!this.id) {
6840
- throw Error('id is required');
6841
- }
6842
- if (!this.caller && !this.callerType) {
6843
- throw Error('caller is required');
6844
- }
6845
6541
  this.hasViewinit = true;
6846
6542
  this.handleActiveState();
6847
6543
  }
@@ -6934,11 +6630,6 @@ class AccordionComponent extends AccessibilityComponent {
6934
6630
  super(...arguments);
6935
6631
  this.showAll = true;
6936
6632
  }
6937
- ngOnChanges(changes) {
6938
- if (!this.idPrefix) {
6939
- throw new Error(`idPrefix is required`);
6940
- }
6941
- }
6942
6633
  getItemId(item, index) {
6943
6634
  let id;
6944
6635
  if (item.id) {
@@ -7021,9 +6712,6 @@ class AccordionComponent extends AccessibilityComponent {
7021
6712
  }
7022
6713
  getItems() {
7023
6714
  const items = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;
7024
- if (!items || items.length === 0) {
7025
- throw new Error(`items are required`);
7026
- }
7027
6715
  return items;
7028
6716
  }
7029
6717
  getItemHeader(item) {
@@ -7032,14 +6720,11 @@ class AccordionComponent extends AccessibilityComponent {
7032
6720
  getItemContent(item) {
7033
6721
  return item instanceof AccordionItemComponent ? item.contentComponent : null;
7034
6722
  }
7035
- handleRequiredEmpty(text) {
7036
- throw new Error(text);
7037
- }
7038
6723
  }
7039
6724
  AccordionComponent.decorators = [
7040
6725
  { type: Component, args: [{
7041
6726
  selector: 'desy-accordion',
7042
- template: "<div [class]=\"classes\"\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 class=\"flex justify-between\">\r\n <ng-container *ngIf=\"headingComponent || heading\">\r\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\r\n <h1 *ngSwitchCase=\"1\" [class]=\"getTitleClasses()\" (desyContentEmpty)=\"handleRequiredEmpty('heading content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h1>\r\n <h2 *ngSwitchCase=\"2\" [class]=\"getTitleClasses()\" (desyContentEmpty)=\"handleRequiredEmpty('heading content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h2>\r\n <h3 *ngSwitchCase=\"3\" [class]=\"getTitleClasses()\" (desyContentEmpty)=\"handleRequiredEmpty('heading content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h3>\r\n <h4 *ngSwitchCase=\"4\" [class]=\"getTitleClasses()\" (desyContentEmpty)=\"handleRequiredEmpty('heading content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h4>\r\n <h5 *ngSwitchCase=\"5\" [class]=\"getTitleClasses()\" (desyContentEmpty)=\"handleRequiredEmpty('heading content, html or text are required')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h5>\r\n </ng-container>\r\n <button *ngIf=\"showControl\" (click)=\"changeAll()\"\r\n class=\"ml-auto py-base text-sm text-neutral-dark underline focus:text-black focus:bg-warning-base focus:outline-none focus:shadow-outline-focus\">\r\n {{showAll ? 'Mostrar' : 'Ocultar'}} todo\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div class=\"Accordion\">\r\n <div *ngFor=\"let item of getItems(); index as i\" class=\"-my-px px-xs py-sm border-t border-b border-neutral-base\"\r\n (keydown.home)=\"focusFirstItem($event)\"\r\n (keydown.end)=\"focusLastItem($event)\"\r\n (keydown.arrowup)=\"focusPreviousItem($event, i)\"\r\n (keydown.arrowdown)=\"focusNextItem($event, i)\"\r\n (click)=\"selectItem(i)\">\r\n\r\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\r\n <h2 *ngSwitchCase=\"1\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h2>\r\n <h3 *ngSwitchCase=\"2\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h3>\r\n <h4 *ngSwitchCase=\"3\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h4>\r\n <h5 *ngSwitchCase=\"4\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h5>\r\n <h6 *ngSwitchCase=\"5\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h6>\r\n </ng-container>\r\n <p class=\"sr-only\" aria-hidden=\"true\">Haz click en el bot\u00F3n anterior para mostrar u ocultar</p>\r\n <div *ngIf=\"item.open\" class=\"Accordion-panel\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('item content, html or text are required at position ' + i)\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [attr.role]=\"(item.role ? role : 'accordion')\"\r\n [attr.aria-selected]=\"currentItem === i ? 'true' : 'false'\"\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]=\"'accordion-' + getItemId(item, i)\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\">\r\n <ng-container *desyCustomInnerContent=\"{ component: getItemContent(item), html: item.html, text: item.text }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #itemHeaderContent let-item=\"item\" let-id=\"id\" let-index=\"index\">\r\n <button #itemSelector [id]=\"id + '-title'\" class=\"Accordion-trigger group relative w-full py-sm font-semibold text-left cursor-pointer focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('item heading content, html or text are required at position ' + index)\"\r\n [attr.aria-controls]=\"id\" [attr.aria-expanded]=\"item.open\" (click)=\"toggleItem(item)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: getItemHeader(item), html: item.headerHtml, text: item.headerText }\"></ng-container>\r\n <span #desyContentEmptyIgnore *ngIf=\"allowToggle || !item.open\" class=\"absolute inset-y-0 right-0 py-sm font-normal text-sm text-neutral-dark underline group-focus:text-black pointer-events-none\" aria-hidden=\"true\">\r\n {{ item.open ? 'Ocultar' : 'Mostrar' }}\r\n </span>\r\n </button>\r\n</ng-template>\r\n"
6727
+ template: "<div [class]=\"classes\"\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 class=\"flex justify-between\">\r\n <ng-container *ngIf=\"headingComponent || heading\">\r\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\r\n <h1 *ngSwitchCase=\"1\" [class]=\"getTitleClasses()\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h1>\r\n <h2 *ngSwitchCase=\"2\" [class]=\"getTitleClasses()\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h2>\r\n <h3 *ngSwitchCase=\"3\" [class]=\"getTitleClasses()\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h3>\r\n <h4 *ngSwitchCase=\"4\" [class]=\"getTitleClasses()\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h4>\r\n <h5 *ngSwitchCase=\"5\" [class]=\"getTitleClasses()\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: headingComponent ? headingComponent : null,\r\n html: heading ? heading.html : null,\r\n text: heading ? heading.text : null\r\n }\"></ng-container>\r\n </h5>\r\n </ng-container>\r\n <button *ngIf=\"showControl\" (click)=\"changeAll()\"\r\n class=\"ml-auto py-base text-sm text-neutral-dark underline focus:text-black focus:bg-warning-base focus:outline-none focus:shadow-outline-focus\">\r\n {{showAll ? 'Mostrar' : 'Ocultar'}} todo\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div class=\"Accordion\">\r\n <div *ngFor=\"let item of getItems(); index as i\" class=\"-my-px px-xs py-sm border-t border-b border-neutral-base\"\r\n (keydown.home)=\"focusFirstItem($event)\"\r\n (keydown.end)=\"focusLastItem($event)\"\r\n (keydown.arrowup)=\"focusPreviousItem($event, i)\"\r\n (keydown.arrowdown)=\"focusNextItem($event, i)\"\r\n (click)=\"selectItem(i)\">\r\n\r\n <ng-container [ngSwitch]=\"headingLevel > 0 && headingLevel < 6 ? headingLevel : 2\">\r\n <h2 *ngSwitchCase=\"1\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h2>\r\n <h3 *ngSwitchCase=\"2\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h3>\r\n <h4 *ngSwitchCase=\"3\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h4>\r\n <h5 *ngSwitchCase=\"4\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h5>\r\n <h6 *ngSwitchCase=\"5\"><ng-container *ngTemplateOutlet=\"itemHeaderContent; context: {item: item, id: getItemId(item, i), index: i}\"></ng-container></h6>\r\n </ng-container>\r\n <p class=\"sr-only\" aria-hidden=\"true\">Haz click en el bot\u00F3n anterior para mostrar u ocultar</p>\r\n <div *ngIf=\"item.open\" class=\"Accordion-panel\"\r\n [attr.id]=\"getItemId(item, i)\"\r\n [attr.role]=\"(item.role ? role : 'accordion')\"\r\n [attr.aria-selected]=\"currentItem === i ? 'true' : 'false'\"\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]=\"'accordion-' + getItemId(item, i)\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\">\r\n <ng-container *desyCustomInnerContent=\"{ component: getItemContent(item), html: item.html, text: item.text }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #itemHeaderContent let-item=\"item\" let-id=\"id\" let-index=\"index\">\r\n <button #itemSelector [id]=\"id + '-title'\" class=\"Accordion-trigger group relative w-full py-sm font-semibold text-left cursor-pointer focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black\"\r\n [attr.aria-controls]=\"id\" [attr.aria-expanded]=\"item.open\" (click)=\"toggleItem(item)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: getItemHeader(item), html: item.headerHtml, text: item.headerText }\"></ng-container>\r\n <span *ngIf=\"allowToggle || !item.open\" class=\"absolute inset-y-0 right-0 py-sm font-normal text-sm text-neutral-dark underline group-focus:text-black pointer-events-none\" aria-hidden=\"true\">\r\n {{ item.open ? 'Ocultar' : 'Mostrar' }}\r\n </span>\r\n </button>\r\n</ng-template>\r\n"
7043
6728
  },] }
7044
6729
  ];
7045
6730
  AccordionComponent.propDecorators = {
@@ -7074,12 +6759,6 @@ SpinnerComponent.propDecorators = {
7074
6759
  };
7075
6760
 
7076
6761
  class DetailsComponent extends AccessibilityComponent {
7077
- ngOnInit() {
7078
- summaryTextOrSummaryHtmlRequiredFunction(this.summaryText, this.summaryHtml);
7079
- }
7080
- ngOnChanges(changes) {
7081
- summaryTextOrSummaryHtmlRequiredFunction(this.summaryText, this.summaryHtml);
7082
- }
7083
6762
  }
7084
6763
  DetailsComponent.decorators = [
7085
6764
  { type: Component, args: [{
@@ -7095,12 +6774,7 @@ DetailsComponent.propDecorators = {
7095
6774
  id: [{ type: Input }],
7096
6775
  open: [{ type: Input }],
7097
6776
  classes: [{ type: Input }]
7098
- };
7099
- function summaryTextOrSummaryHtmlRequiredFunction(text, html) {
7100
- if (!html && !text) {
7101
- throw new Error(`summaryHtml or summaryText are required`);
7102
- }
7103
- }
6777
+ };
7104
6778
 
7105
6779
  class TermComponent extends ContentBaseComponent {
7106
6780
  }
@@ -7150,21 +6824,15 @@ __decorate([
7150
6824
  ], DescriptionItemComponent.prototype, "definition", void 0);
7151
6825
 
7152
6826
  class DescriptionListComponent extends AccessibilityComponent {
7153
- handleContentEmpty(element) {
7154
- throw new Error(`${element} content, html or text is required`);
7155
- }
7156
6827
  getItems() {
7157
6828
  const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;
7158
- if (!items || items.length === 0) {
7159
- throw new Error(`items are required`);
7160
- }
7161
6829
  return items;
7162
6830
  }
7163
6831
  }
7164
6832
  DescriptionListComponent.decorators = [
7165
6833
  { type: Component, args: [{
7166
6834
  selector: 'desy-description-list',
7167
- template: "<dl [class]=\"classes\"\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 *ngFor=\"let item of getItems()\"\r\n [class]=\"item.classes\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <dt [class]=\"(item.term.classes ? item.term.classes : 'text-sm text-neutral-dark')\"\r\n (desyContentEmpty)=\"handleContentEmpty('term')\"\r\n [attr.id]=\"item.term.id ? item.term.id : null\"\r\n [attr.role]=\"item.term.role\"\r\n [attr.aria-describedby]=\"item.term.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.term.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.term.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.term.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.term.ariaHidden\"\r\n [attr.aria-disabled]=\"item.term.ariaDisabled\"\r\n [attr.aria-controls]=\"item.term.ariaControls\"\r\n [attr.aria-current]=\"item.term.ariaCurrent\"\r\n [attr.aria-live]=\"item.term.ariaLive\"\r\n [attr.aria-expanded]=\"item.term.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.term.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.term, html: item.term.html, text: item.term.text}\"></ng-container>\r\n </dt>\r\n <dd [class]=\"(item.definition.classes ? item.definition.classes : 'text-base text-black')\"\r\n (desyContentEmpty)=\"handleContentEmpty('definition')\"\r\n [attr.id]=\"item.definition.id ? item.definition.id : null\"\r\n [attr.role]=\"item.definition.role\"\r\n [attr.aria-describedby]=\"item.definition.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.definition.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.definition.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.definition.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.definition.ariaHidden\"\r\n [attr.aria-disabled]=\"item.definition.ariaDisabled\"\r\n [attr.aria-controls]=\"item.definition.ariaControls\"\r\n [attr.aria-current]=\"item.definition.ariaCurrent\"\r\n [attr.aria-live]=\"item.definition.ariaLive\"\r\n [attr.aria-expanded]=\"item.definition.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.definition.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.definition, html: item.definition.html, text: item.definition.text}\"></ng-container>\r\n </dd>\r\n </div>\r\n</dl>\r\n"
6835
+ template: "<dl [class]=\"classes\"\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 *ngFor=\"let item of getItems()\"\r\n [class]=\"item.classes\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <dt [class]=\"(item.term.classes ? item.term.classes : 'text-sm text-neutral-dark')\"\r\n [attr.id]=\"item.term.id ? item.term.id : null\"\r\n [attr.role]=\"item.term.role\"\r\n [attr.aria-describedby]=\"item.term.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.term.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.term.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.term.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.term.ariaHidden\"\r\n [attr.aria-disabled]=\"item.term.ariaDisabled\"\r\n [attr.aria-controls]=\"item.term.ariaControls\"\r\n [attr.aria-current]=\"item.term.ariaCurrent\"\r\n [attr.aria-live]=\"item.term.ariaLive\"\r\n [attr.aria-expanded]=\"item.term.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.term.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.term, html: item.term.html, text: item.term.text}\"></ng-container>\r\n </dt>\r\n <dd [class]=\"(item.definition.classes ? item.definition.classes : 'text-base text-black')\"\r\n [attr.id]=\"item.definition.id ? item.definition.id : null\"\r\n [attr.role]=\"item.definition.role\"\r\n [attr.aria-describedby]=\"item.definition.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.definition.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.definition.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.definition.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.definition.ariaHidden\"\r\n [attr.aria-disabled]=\"item.definition.ariaDisabled\"\r\n [attr.aria-controls]=\"item.definition.ariaControls\"\r\n [attr.aria-current]=\"item.definition.ariaCurrent\"\r\n [attr.aria-live]=\"item.definition.ariaLive\"\r\n [attr.aria-expanded]=\"item.definition.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.definition.ariaHasPopup\"\r\n [attr.tabindex]=\"item.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.definition, html: item.definition.html, text: item.definition.text}\"></ng-container>\r\n </dd>\r\n </div>\r\n</dl>\r\n"
7168
6836
  },] }
7169
6837
  ];
7170
6838
  DescriptionListComponent.propDecorators = {
@@ -7188,18 +6856,11 @@ class CollapsibleComponent extends AccessibilityAndContentRequiredComponent {
7188
6856
  }
7189
6857
  }
7190
6858
  ngOnInit() {
7191
- textOrHtmlRequiredFunction(this.text, this.html);
7192
6859
  this.toggleOpen();
7193
6860
  }
7194
- ngOnChanges(changes) {
7195
- textOrHtmlRequiredFunction(this.text, this.html);
6861
+ ngOnChanges() {
7196
6862
  this.toggleOpen();
7197
6863
  }
7198
- headerTextOrheaderHtmlRequiredFunction(text, html, content) {
7199
- if (!html && !text && !content) {
7200
- throw new Error(`headerHtml or headerText are required`);
7201
- }
7202
- }
7203
6864
  }
7204
6865
  CollapsibleComponent.decorators = [
7205
6866
  { type: Component, args: [{
@@ -7267,31 +6928,21 @@ class ItemComponent extends AccessibilityComponent {
7267
6928
  constructor(changeDetectorRef) {
7268
6929
  super();
7269
6930
  this.changeDetectorRef = changeDetectorRef;
7270
- this.hasIconContent = true;
7271
- }
7272
- ngAfterViewInit() {
7273
- if (!this.titleComponent && !this.title) {
7274
- throw new Error('title is required');
7275
- }
7276
6931
  }
7277
6932
  getItems() {
7278
6933
  return this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;
7279
6934
  }
7280
6935
  handleIconContentEmpty(isEmpty) {
7281
- this.hasIconContent = !isEmpty;
7282
6936
  this.changeDetectorRef.detectChanges();
7283
6937
  }
7284
- handleRequiredEmpty(text) {
7285
- throw new Error(text);
7286
- }
7287
6938
  getTitle() {
7288
- return this.titleComponent ? this.titleComponent : this.title;
6939
+ return this.titleComponent ? this.titleComponent : (this.title ? this.title : null);
7289
6940
  }
7290
6941
  }
7291
6942
  ItemComponent.decorators = [
7292
6943
  { type: Component, args: [{
7293
6944
  selector: 'desy-item',
7294
- template: "<div [class]=\"['flex flex-wrap p-base bg-white border border-neutral-base rounded', classes] | makeHtmlList\"\r\n [attr.id]=\"id ? id : null\">\r\n <div class=\"self-center h-full mr-lg\" *ngIf=\"isDraggable || isLocked\">\r\n <svg *ngIf=\"isDraggable && !isLocked\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-5 h-5 text-neutral-base\" aria-hidden=\"true\" focusable=\"false\"><g fill=\"currentColor\"><path d=\"M41 28a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M79.999 28a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M41 70a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M79.999 70a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M41 112a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M79.999 112a10 10 0 1010-10 10 10 0 00-10 10z\"/></g></svg>\r\n <svg *ngIf=\"isLocked && !isDraggable\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-base h-base text-neutral-dark\" aria-label=\"Item Bloqueado\" focusable=\"false\"><path d=\"M115 55.86V45a45 45 0 00-90 0v10.86A15 15 0 0015 70v55a15 15 0 0015 15h80a15 15 0 0015-15V70a15 15 0 00-10-14.14zM70 110a12.5 12.5 0 1112.5-12.5A12.5 12.5 0 0170 110zm25-55H45V45a25 25 0 0150 0z\" fill=\"currentColor\"/></svg>\r\n </div>\r\n <div class=\"self-center h-full mr-lg\" *ngIf=\"iconComponent || icon\"\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]=\"iconComponent ? iconComponent.type : icon.type\">\r\n <svg *ngSwitchCase=\"'clipboard'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-8 h-8 text-neutral-dark\" aria-label=\"Item tipo Solicitud\" focusable=\"false\"><path d=\"M96.25 52.5h-52.5a4.375 4.375 0 000 8.75h52.5a4.375 4.375 0 000-8.75zM100.625 77.286a4.375 4.375 0 00-4.375-4.375h-52.5a4.375 4.375 0 000 8.75h52.5a4.375 4.375 0 004.375-4.375zM58.333 37.917h23.334a5.833 5.833 0 005.833-5.834V17.5A17.54 17.54 0 0065.287.624 17.762 17.762 0 0052.5 18.007v14.076a5.833 5.833 0 005.833 5.834zm7.292-21.875A4.375 4.375 0 1170 20.417a4.375 4.375 0 01-4.375-4.381z\" fill=\"currentColor\"/><path d=\"M113.75 17.5H97.708a1.458 1.458 0 00-1.458 1.458v8.75a1.458 1.458 0 001.458 1.459h13.125a2.917 2.917 0 012.917 2.916v74.62a2.917 2.917 0 01-.852 2.065l-18.713 18.708a2.917 2.917 0 01-2.06.851H29.168a2.917 2.917 0 01-2.917-2.916V32.083a2.917 2.917 0 012.917-2.916h13.125a1.458 1.458 0 001.458-1.459v-8.75a1.458 1.458 0 00-1.458-1.458H26.25a11.667 11.667 0 00-11.667 11.667v99.166A11.667 11.667 0 0026.25 140h87.5a11.667 11.667 0 0011.667-11.667V29.167A11.667 11.667 0 00113.75 17.5z\" fill=\"currentColor\"/><path d=\"M43.75 93.333a4.375 4.375 0 000 8.75h21.875a4.375 4.375 0 000-8.75z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'link'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-8 h-8 text-neutral-dark\" aria-label=\"Item tipo Link\" focusable=\"false\"><path d=\"M72.368 86.946a5.833 5.833 0 00-3.167 7.624 5.833 5.833 0 01-1.266 6.358l-16.497 16.503a11.667 11.667 0 01-16.496 0l-12.379-12.373a11.667 11.667 0 010-16.502l16.52-16.497a5.91 5.91 0 016.364-1.266 5.834 5.834 0 004.451-10.786 17.698 17.698 0 00-19.063 3.804l-16.52 16.497a23.368 23.368 0 000 32.999l12.378 12.372a23.333 23.333 0 0032.994 0l16.502-16.496a17.547 17.547 0 003.798-19.075 5.833 5.833 0 00-7.619-3.162z\" fill=\"currentColor\"/><path d=\"M45.25 94.74a5.897 5.897 0 008.247 0l45.378-45.373a5.833 5.833 0 00-8.248-8.248L45.249 86.491a5.833 5.833 0 000 8.248z\" fill=\"currentColor\"/><path d=\"M125.685 26.682l-12.373-12.373a23.368 23.368 0 00-32.999 0L63.811 30.806a17.535 17.535 0 00-3.798 19.069A5.835 5.835 0 1070.8 45.418a5.833 5.833 0 011.266-6.335l16.497-16.496a11.667 11.667 0 0116.502 0l12.373 12.372a11.667 11.667 0 010 16.503l-16.52 16.467a5.92 5.92 0 01-6.364 1.266 5.836 5.836 0 00-4.463 10.786 17.652 17.652 0 0019.075-3.798l16.497-16.496a23.374 23.374 0 00.023-33.005z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'document'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-8 h-8 text-neutral-dark\" aria-label=\"Item tipo Archivo\" focusable=\"false\"><path d=\"M89.355 12.518l26.46 26.46a2.917 2.917 0 01.852 2.06v84.379a2.917 2.917 0 01-2.917 2.916h-87.5a2.917 2.917 0 01-2.917-2.916V14.583a2.917 2.917 0 012.917-2.916h61.046a2.917 2.917 0 012.059.851zM90.918 0H23.333a11.667 11.667 0 00-11.666 11.667v116.666A11.667 11.667 0 0023.333 140h93.334a11.667 11.667 0 0011.666-11.667V37.415a5.833 5.833 0 00-1.709-4.124L95.042 1.709A5.833 5.833 0 0090.918 0z\" fill=\"currentColor\"/><path d=\"M93.333 64.167h-52.5a5.833 5.833 0 010-11.667h52.5a5.833 5.833 0 010 11.667zM93.333 87.5h-52.5a5.833 5.833 0 010-11.667h52.5a5.833 5.833 0 010 11.667zM67.083 110.833h-26.25a5.833 5.833 0 010-11.666h26.25a5.833 5.833 0 010 11.666z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"lg:flex flex-1 self-center\">\r\n <div class=\"lg:flex-1 lg:self-center\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\"\r\n [class]=\"getTitle().classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h1>\r\n <h2 *ngSwitchCase=\"2\"\r\n [class]=\"getTitle().classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h2>\r\n <h3 *ngSwitchCase=\"3\"\r\n [class]=\"getTitle().classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h3>\r\n <h4 *ngSwitchCase=\"4\"\r\n [class]=\"getTitle().classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h4>\r\n <h5 *ngSwitchCase=\"5\"\r\n [class]=\"getTitle().classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h5>\r\n <p *ngSwitchDefault\r\n [class]=\"getTitle().classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('title content, html or text are required')\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </p>\r\n </ng-container>\r\n\r\n <p *ngIf=\"descriptionComponent || description\" [class]=\"descriptionComponent ? descriptionComponent.classes : description.classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('description content, html or text are required')\"\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 <ng-container *desyCustomInnerContent=\"{ component: descriptionComponent, html: description ? description.html : null, text: description ? description.text : null }\"></ng-container>\r\n </p>\r\n <ul class=\"-ml-sm lg:divide-x lg:divide-neutral-base\" *ngIf=\"itemComponents.length > 0 || items\">\r\n <li class=\"lg:inline-block px-sm text-sm text-neutral-dark\" *ngFor=\"let item of getItems(); index as index\"\r\n (desyContentEmpty)=\"handleRequiredEmpty('item content, html or text are required at position ' + index)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <p *ngIf=\"contentBottomComponent || content\" [class]=\"contentBottomComponent ? contentBottomComponent.classes : content.classes\"\r\n (desyContentEmpty)=\"handleRequiredEmpty(contentBottomComponent ? 'content for content at bottom is required' : 'html or text for content at bottom are required')\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentBottomComponent, html: content ? content.html : null, text: content ? content.text : null }\"></ng-container>\r\n </p>\r\n </div>\r\n <div class=\"w-full lg:w-auto lg:text-right mt-base lg:mt-0 lg:ml-base\" *ngIf=\"contentRightComponent || caller\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentRightComponent, template: caller }\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n"
6945
+ template: "<div *ngIf=\"getTitle()\" [class]=\"['flex flex-wrap p-base bg-white border border-neutral-base rounded', classes] | makeHtmlList\"\r\n [attr.id]=\"id ? id : null\">\r\n <div class=\"self-center h-full mr-lg\" *ngIf=\"isDraggable || isLocked\">\r\n <svg *ngIf=\"isDraggable && !isLocked\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-5 h-5 text-neutral-base\" aria-hidden=\"true\" focusable=\"false\"><g fill=\"currentColor\"><path d=\"M41 28a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M79.999 28a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M41 70a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M79.999 70a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M41 112a10 10 0 1010-10 10 10 0 00-10 10z\"/><path d=\"M79.999 112a10 10 0 1010-10 10 10 0 00-10 10z\"/></g></svg>\r\n <svg *ngIf=\"isLocked && !isDraggable\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-base h-base text-neutral-dark\" aria-label=\"Item Bloqueado\" focusable=\"false\"><path d=\"M115 55.86V45a45 45 0 00-90 0v10.86A15 15 0 0015 70v55a15 15 0 0015 15h80a15 15 0 0015-15V70a15 15 0 00-10-14.14zM70 110a12.5 12.5 0 1112.5-12.5A12.5 12.5 0 0170 110zm25-55H45V45a25 25 0 0150 0z\" fill=\"currentColor\"/></svg>\r\n </div>\r\n <div class=\"self-center h-full mr-lg\" *ngIf=\"iconComponent || icon\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent, html: icon ? icon.html : null }\"></ng-container>\r\n <ng-container [ngSwitch]=\"iconComponent ? iconComponent.type : icon.type\">\r\n <svg *ngSwitchCase=\"'clipboard'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-8 h-8 text-neutral-dark\" aria-label=\"Item tipo Solicitud\" focusable=\"false\"><path d=\"M96.25 52.5h-52.5a4.375 4.375 0 000 8.75h52.5a4.375 4.375 0 000-8.75zM100.625 77.286a4.375 4.375 0 00-4.375-4.375h-52.5a4.375 4.375 0 000 8.75h52.5a4.375 4.375 0 004.375-4.375zM58.333 37.917h23.334a5.833 5.833 0 005.833-5.834V17.5A17.54 17.54 0 0065.287.624 17.762 17.762 0 0052.5 18.007v14.076a5.833 5.833 0 005.833 5.834zm7.292-21.875A4.375 4.375 0 1170 20.417a4.375 4.375 0 01-4.375-4.381z\" fill=\"currentColor\"/><path d=\"M113.75 17.5H97.708a1.458 1.458 0 00-1.458 1.458v8.75a1.458 1.458 0 001.458 1.459h13.125a2.917 2.917 0 012.917 2.916v74.62a2.917 2.917 0 01-.852 2.065l-18.713 18.708a2.917 2.917 0 01-2.06.851H29.168a2.917 2.917 0 01-2.917-2.916V32.083a2.917 2.917 0 012.917-2.916h13.125a1.458 1.458 0 001.458-1.459v-8.75a1.458 1.458 0 00-1.458-1.458H26.25a11.667 11.667 0 00-11.667 11.667v99.166A11.667 11.667 0 0026.25 140h87.5a11.667 11.667 0 0011.667-11.667V29.167A11.667 11.667 0 00113.75 17.5z\" fill=\"currentColor\"/><path d=\"M43.75 93.333a4.375 4.375 0 000 8.75h21.875a4.375 4.375 0 000-8.75z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'link'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-8 h-8 text-neutral-dark\" aria-label=\"Item tipo Link\" focusable=\"false\"><path d=\"M72.368 86.946a5.833 5.833 0 00-3.167 7.624 5.833 5.833 0 01-1.266 6.358l-16.497 16.503a11.667 11.667 0 01-16.496 0l-12.379-12.373a11.667 11.667 0 010-16.502l16.52-16.497a5.91 5.91 0 016.364-1.266 5.834 5.834 0 004.451-10.786 17.698 17.698 0 00-19.063 3.804l-16.52 16.497a23.368 23.368 0 000 32.999l12.378 12.372a23.333 23.333 0 0032.994 0l16.502-16.496a17.547 17.547 0 003.798-19.075 5.833 5.833 0 00-7.619-3.162z\" fill=\"currentColor\"/><path d=\"M45.25 94.74a5.897 5.897 0 008.247 0l45.378-45.373a5.833 5.833 0 00-8.248-8.248L45.249 86.491a5.833 5.833 0 000 8.248z\" fill=\"currentColor\"/><path d=\"M125.685 26.682l-12.373-12.373a23.368 23.368 0 00-32.999 0L63.811 30.806a17.535 17.535 0 00-3.798 19.069A5.835 5.835 0 1070.8 45.418a5.833 5.833 0 011.266-6.335l16.497-16.496a11.667 11.667 0 0116.502 0l12.373 12.372a11.667 11.667 0 010 16.503l-16.52 16.467a5.92 5.92 0 01-6.364 1.266 5.836 5.836 0 00-4.463 10.786 17.652 17.652 0 0019.075-3.798l16.497-16.496a23.374 23.374 0 00.023-33.005z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'document'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-8 h-8 text-neutral-dark\" aria-label=\"Item tipo Archivo\" focusable=\"false\"><path d=\"M89.355 12.518l26.46 26.46a2.917 2.917 0 01.852 2.06v84.379a2.917 2.917 0 01-2.917 2.916h-87.5a2.917 2.917 0 01-2.917-2.916V14.583a2.917 2.917 0 012.917-2.916h61.046a2.917 2.917 0 012.059.851zM90.918 0H23.333a11.667 11.667 0 00-11.666 11.667v116.666A11.667 11.667 0 0023.333 140h93.334a11.667 11.667 0 0011.666-11.667V37.415a5.833 5.833 0 00-1.709-4.124L95.042 1.709A5.833 5.833 0 0090.918 0z\" fill=\"currentColor\"/><path d=\"M93.333 64.167h-52.5a5.833 5.833 0 010-11.667h52.5a5.833 5.833 0 010 11.667zM93.333 87.5h-52.5a5.833 5.833 0 010-11.667h52.5a5.833 5.833 0 010 11.667zM67.083 110.833h-26.25a5.833 5.833 0 010-11.666h26.25a5.833 5.833 0 010 11.666z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n </div>\r\n <div class=\"lg:flex flex-1 self-center\">\r\n <div class=\"lg:flex-1 lg:self-center\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\"\r\n [class]=\"getTitle().classes\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h1>\r\n <h2 *ngSwitchCase=\"2\"\r\n [class]=\"getTitle().classes\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h2>\r\n <h3 *ngSwitchCase=\"3\"\r\n [class]=\"getTitle().classes\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h3>\r\n <h4 *ngSwitchCase=\"4\"\r\n [class]=\"getTitle().classes\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h4>\r\n <h5 *ngSwitchCase=\"5\"\r\n [class]=\"getTitle().classes\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </h5>\r\n <p *ngSwitchDefault\r\n [class]=\"getTitle().classes\"\r\n [attr.role]=\"getTitle().role\" [attr.aria-describedby]=\"getTitle().ariaDescribedBy\" [attr.aria-errormessage]=\"getTitle().ariaErrorMessage\" [attr.aria-label]=\"getTitle().ariaLabel\" [attr.aria-labelledby]=\"getTitle().ariaLabelledBy\" [attr.aria-hidden]=\"getTitle().ariaHidden\" [attr.aria-disabled]=\"getTitle().ariaDisabled\" [attr.aria-controls]=\"getTitle().ariaControls\" [attr.aria-current]=\"getTitle().ariaCurrent\" [attr.aria-live]=\"getTitle().ariaLive\" [attr.aria-expanded]=\"getTitle().ariaExpanded\" [attr.aria-haspopup]=\"getTitle().ariaHasPopup\" [attr.tabindex]=\"getTitle().tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: titleComponent, html: getTitle().html, text: getTitle().text }\"></ng-container>\r\n </p>\r\n </ng-container>\r\n\r\n <p *ngIf=\"descriptionComponent || description\" [class]=\"descriptionComponent ? descriptionComponent.classes : description.classes\"\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 <ng-container *desyCustomInnerContent=\"{ component: descriptionComponent, html: description ? description.html : null, text: description ? description.text : null }\"></ng-container>\r\n </p>\r\n <ul class=\"-ml-sm lg:divide-x lg:divide-neutral-base\" *ngIf=\"itemComponents.length > 0 || items\">\r\n <li class=\"lg:inline-block px-sm text-sm text-neutral-dark\" *ngFor=\"let item of getItems(); index as index\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <p *ngIf=\"contentBottomComponent || content\" [class]=\"contentBottomComponent ? contentBottomComponent.classes : content.classes\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentBottomComponent, html: content ? content.html : null, text: content ? content.text : null }\"></ng-container>\r\n </p>\r\n </div>\r\n <div class=\"w-full lg:w-auto lg:text-right mt-base lg:mt-0 lg:ml-base\" *ngIf=\"contentRightComponent || caller\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentRightComponent, template: caller }\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n"
7295
6946
  },] }
7296
6947
  ];
7297
6948
  ItemComponent.ctorParameters = () => [
@@ -7332,20 +6983,21 @@ __decorate([
7332
6983
  DesyContentChild()
7333
6984
  ], ItemComponent.prototype, "contentRightComponent", void 0);
7334
6985
 
6986
+ class MediaObjectFigureComponent extends ContentBaseComponent {
6987
+ }
6988
+ MediaObjectFigureComponent.decorators = [
6989
+ { type: Component, args: [{
6990
+ selector: 'desy-media-object-figure',
6991
+ template: "<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n "
6992
+ },] }
6993
+ ];
6994
+
7335
6995
  class MediaObjectComponent extends AccessibilityComponent {
7336
- ngOnChanges(changes) {
7337
- this.checkRequiredParams();
7338
- }
7339
- checkRequiredParams() {
7340
- if (!this.figureHtml) {
7341
- throw new Error(`figureHtml are required`);
7342
- }
7343
- }
7344
6996
  }
7345
6997
  MediaObjectComponent.decorators = [
7346
6998
  { type: Component, args: [{
7347
6999
  selector: 'desy-media-object',
7348
- template: "<div [class]=\"'flex' + (classes ? ' ' + classes : '') + (center==true ? ' ' + 'items-center' : '')\" \r\n [attr.id]=\"id\"\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 ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex\">\r\n <div [class]=\"(reverse==true ? ' ' + 'order-1' : '') + (figureClasses ? ' ' + figureClasses : '')\" [attr.figureHtml]=\"figureHtml\" [innerHtml]=\"figureHtml\"></div>\r\n\r\n <div [class]=\"'flex-1' + (contenClasses ? ' ' + contenClasses : '')\">\r\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\r\n </div>\r\n</div>\r\n\r\n"
7000
+ template: "<div [class]=\"'flex' + (classes ? ' ' + classes : '') + (center==true ? ' ' + 'items-center' : '')\" \r\n [attr.id]=\"id\"\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 ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex\">\r\n \r\n <div *ngIf=\"figureHtml\" [class]=\"(reverse==true ? ' ' + 'order-1' : '') + (figureClasses ? ' ' + figureClasses : '')\" [attr.figureHtml]=\"figureHtml\" [innerHtml]=\"figureHtml\"></div>\r\n\r\n <div #mediaFigureContent *ngIf=\"!figureHtml\" [class]=\"(reverse==true ? ' ' + 'order-1' : '') + (figureClasses ? ' ' + figureClasses : '')\">\r\n <ng-container *desyCustomInnerContent=\"{ component: mediaObjectFigureComponent }\"></ng-container>\r\n </div>\r\n\r\n <div [class]=\"'flex-1' + (contenClasses ? ' ' + contenClasses : '')\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, template: caller }\"></ng-container>\r\n </div>\r\n \r\n</div>\r\n\r\n"
7349
7001
  },] }
7350
7002
  ];
7351
7003
  MediaObjectComponent.propDecorators = {
@@ -7356,13 +7008,22 @@ MediaObjectComponent.propDecorators = {
7356
7008
  figureClasses: [{ type: Input }],
7357
7009
  contenClasses: [{ type: Input }],
7358
7010
  caller: [{ type: Input }],
7359
- id: [{ type: Input }]
7360
- };
7011
+ id: [{ type: Input }],
7012
+ contentComponent: [{ type: ContentChildren, args: [ContentComponent,] }],
7013
+ mediaObjectFigureComponent: [{ type: ContentChildren, args: [MediaObjectFigureComponent,] }],
7014
+ mediaFigureContent: [{ type: ViewChild, args: ['mediaFigureContent', { read: ElementRef, static: true },] }]
7015
+ };
7016
+ __decorate([
7017
+ DesyContentChild()
7018
+ ], MediaObjectComponent.prototype, "contentComponent", void 0);
7019
+ __decorate([
7020
+ DesyContentChild()
7021
+ ], MediaObjectComponent.prototype, "mediaObjectFigureComponent", void 0);
7361
7022
 
7362
7023
  class StatusComponent extends AccessibilityComponent {
7363
7024
  getType() {
7364
7025
  let type;
7365
- if (this.icon.type) {
7026
+ if (this.icon && this.icon.type) {
7366
7027
  type = this.icon.type.toLocaleLowerCase();
7367
7028
  }
7368
7029
  else {
@@ -7370,19 +7031,11 @@ class StatusComponent extends AccessibilityComponent {
7370
7031
  }
7371
7032
  return type;
7372
7033
  }
7373
- ngOnChanges(changes) {
7374
- if (!this.text) {
7375
- throw new Error(`title is required`);
7376
- }
7377
- if (!this.icon) {
7378
- throw new Error(`icon is required`);
7379
- }
7380
- }
7381
7034
  }
7382
7035
  StatusComponent.decorators = [
7383
7036
  { type: Component, args: [{
7384
7037
  selector: 'desy-status',
7385
- template: "<div [class]=\"(classes ? classes : '')\"\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\r\n <p class=\"inline-flex items-center\">\r\n <span class=\"inline-block font-bold uppercase\">{{text}}</span>\r\n <span class=\"inline-block ml-sm\" *ngIf=\"!icon.html; else elseBlock\"> \r\n <ng-container [ngSwitch]=\"getType()\">\r\n <ng-container *ngSwitchCase=\"'success'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-success-dark\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M39.94 125a19.88 19.88 0 01-15.53-7.81L2.48 92.26a10 10 0 0115-13.2l20.55 23.39a2.5 2.5 0 003.68.08l81-84.42a10.002 10.002 0 1114.5 13.78l-82.02 86.33A19.41 19.41 0 0139.94 125z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'alert'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-alert-base\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'loading'\">\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\" focusable=\"false\"><path d=\"M71.15 2.3a7.7 7.7 0 100 15.4A52.3 52.3 0 1118.85 70a62.29 62.29 0 014.7-23.16l5.76 4a7.55 7.55 0 004.25 1.31 7.41 7.41 0 004.09-1.22 7.51 7.51 0 003.28-7.68L37 22.45a7.52 7.52 0 00-8.66-6l-21 3.65a7.5 7.5 0 00-3 13.57l6.21 4.27A77.78 77.78 0 003.45 70a67.7 67.7 0 1067.7-67.7z\" fill=\"currentColor\"/><path d=\"M91.15 92.5a7.45 7.45 0 01-3.35-.79l-20-10A7.51 7.51 0 0163.65 75V42.5a7.5 7.5 0 0115 0v27.87l15.86 7.92a7.5 7.5 0 01-3.36 14.21z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'error'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-alert-base\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M70 75a7.5 7.5 0 007.5-7.5v-25a7.5 7.5 0 00-15 0v25A7.5 7.5 0 0070 75zM60 92.5a10 10 0 1020 0 10 10 0 10-20 0z\" fill=\"currentColor\"/><path d=\"M139.78 101.83L135 82.6a7.51 7.51 0 00-9.1-5.45l-19.22 4.8a7.5 7.5 0 00-2 13.71l6.11 3.66A55.31 55.31 0 0170 120.19a50.47 50.47 0 01-47.16-33.06 7.503 7.503 0 00-14.09 5.16A65.52 65.52 0 0070 135.19 71.27 71.27 0 00123.57 107l5.07 3a7.5 7.5 0 0011.14-8.25zM14.13 62.85l19.22-4.8a7.5 7.5 0 002.05-13.71L29.76 41A56.18 56.18 0 0170 19.81a50.47 50.47 0 0147.16 33.06 7.51 7.51 0 007 4.92 7.61 7.61 0 002.59-.46 7.51 7.51 0 004.46-9.62A65.52 65.52 0 0070 4.81 71.53 71.53 0 0016.83 33.2l-5.47-3.28A7.5 7.5 0 00.22 38.17L5 57.4a7.51 7.51 0 007.27 5.68 7.65 7.65 0 001.86-.23z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n <ng-template #elseBlock>\r\n <span class=\"inline-block ml-sm\" [desyInnerContent]=\"icon.html\" [isHtml]=\"icon.html\" [deleteContentIfEmpty]=\"false\"><ng-content></ng-content></span> \r\n </ng-template>\r\n </p> \r\n</div>\r\n"
7038
+ template: "<div [class]=\"(classes ? classes : '')\"\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\r\n <p class=\"inline-flex items-center\">\r\n <span class=\"inline-block font-bold uppercase\">{{text}}</span>\r\n <span class=\"inline-block ml-sm\" *ngIf=\"!icon || !icon.html; else elseBlock\"> \r\n <ng-container [ngSwitch]=\"getType()\">\r\n <ng-container *ngSwitchCase=\"'success'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-success-dark\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M39.94 125a19.88 19.88 0 01-15.53-7.81L2.48 92.26a10 10 0 0115-13.2l20.55 23.39a2.5 2.5 0 003.68.08l81-84.42a10.002 10.002 0 1114.5 13.78l-82.02 86.33A19.41 19.41 0 0139.94 125z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'alert'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-alert-base\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'loading'\">\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\" focusable=\"false\"><path d=\"M71.15 2.3a7.7 7.7 0 100 15.4A52.3 52.3 0 1118.85 70a62.29 62.29 0 014.7-23.16l5.76 4a7.55 7.55 0 004.25 1.31 7.41 7.41 0 004.09-1.22 7.51 7.51 0 003.28-7.68L37 22.45a7.52 7.52 0 00-8.66-6l-21 3.65a7.5 7.5 0 00-3 13.57l6.21 4.27A77.78 77.78 0 003.45 70a67.7 67.7 0 1067.7-67.7z\" fill=\"currentColor\"/><path d=\"M91.15 92.5a7.45 7.45 0 01-3.35-.79l-20-10A7.51 7.51 0 0163.65 75V42.5a7.5 7.5 0 0115 0v27.87l15.86 7.92a7.5 7.5 0 01-3.36 14.21z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'error'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-alert-base\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M70 75a7.5 7.5 0 007.5-7.5v-25a7.5 7.5 0 00-15 0v25A7.5 7.5 0 0070 75zM60 92.5a10 10 0 1020 0 10 10 0 10-20 0z\" fill=\"currentColor\"/><path d=\"M139.78 101.83L135 82.6a7.51 7.51 0 00-9.1-5.45l-19.22 4.8a7.5 7.5 0 00-2 13.71l6.11 3.66A55.31 55.31 0 0170 120.19a50.47 50.47 0 01-47.16-33.06 7.503 7.503 0 00-14.09 5.16A65.52 65.52 0 0070 135.19 71.27 71.27 0 00123.57 107l5.07 3a7.5 7.5 0 0011.14-8.25zM14.13 62.85l19.22-4.8a7.5 7.5 0 002.05-13.71L29.76 41A56.18 56.18 0 0170 19.81a50.47 50.47 0 0147.16 33.06 7.51 7.51 0 007 4.92 7.61 7.61 0 002.59-.46 7.51 7.51 0 004.46-9.62A65.52 65.52 0 0070 4.81 71.53 71.53 0 0016.83 33.2l-5.47-3.28A7.5 7.5 0 00.22 38.17L5 57.4a7.51 7.51 0 007.27 5.68 7.65 7.65 0 001.86-.23z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n <ng-template #elseBlock>\r\n <span class=\"inline-block ml-sm\" [desyInnerContent]=\"icon.html\" [isHtml]=\"icon.html\" [deleteContentIfEmpty]=\"false\"><ng-content></ng-content></span> \r\n </ng-template>\r\n </p> \r\n</div>\r\n"
7386
7039
  },] }
7387
7040
  ];
7388
7041
  StatusComponent.propDecorators = {
@@ -7393,14 +7046,6 @@ StatusComponent.propDecorators = {
7393
7046
  };
7394
7047
 
7395
7048
  class StatusItemComponent extends AccessibilityComponent {
7396
- ngOnChanges(changes) {
7397
- if (!this.id) {
7398
- throw new Error(`id is required`);
7399
- }
7400
- }
7401
- handleContentEmpty(element) {
7402
- throw new Error(`${element} content, html or text is required`);
7403
- }
7404
7049
  getItems() {
7405
7050
  return (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;
7406
7051
  }
@@ -7408,7 +7053,7 @@ class StatusItemComponent extends AccessibilityComponent {
7408
7053
  StatusItemComponent.decorators = [
7409
7054
  { type: Component, args: [{
7410
7055
  selector: 'desy-status-item',
7411
- template: "<ng-template #commonHtml>\r\n <p *ngIf=\"titleComponent || title\" [class]=\"title ? title.classes : 'my-sm'\"\r\n (desyContentEmpty)=\"handleContentEmpty('title')\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </p>\r\n\r\n <ng-container *ngIf=\"hintComponent\">\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hintComponent && hint\">\r\n <desy-hint [text]=\"hint.text\" [html]=\"hint.html\" [classes]=\"hint.classes\" [id]=\"hint.id\"\r\n [role]=\"hint.role\"\r\n [ariaLabel]=\"hint.ariaLabel\"\r\n [ariaDescribedBy]=\"(hint.ariaDescribedBy ? hint.ariaDescribedBy + '' + hint.id : hint.id)\"\r\n [ariaLabelledBy]=\"hint.ariaLabelledBy\"\r\n [ariaHidden]=\"hint.ariaHidden\"\r\n [ariaDisabled]=\"hint.ariaDisabled\"\r\n [ariaControls]=\"hint.ariaControls\"\r\n [ariaCurrent]=\"hint.ariaCurrent\"\r\n [ariaLive]=\"hint.ariaLive\"\r\n [ariaExpanded]=\"hint.ariaExpanded\"\r\n [ariaErrorMessage]=\"hint.ariaErrorMessage\"\r\n [ariaHasPopup]=\"hint.ariaHasPopup\"\r\n [tabindex]=\"hint.tabindex\"></desy-hint>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"errorMessageComponent\">\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!errorMessageComponent && errorMessage\">\r\n <desy-error-message [text]=\"errorMessage.text\" [html]=\"errorMessage.html\"\r\n [visuallyHiddenText]=\"errorMessage.visuallyHiddenText\"\r\n [id]=\"(errorId ? errorId : id + '-error')\" [classes]=\"errorMessage.classes\"\r\n [role]=\"errorMessage.role\"\r\n [ariaLabel]=\"errorMessage.ariaLabel\"\r\n [ariaDescribedBy]=\"(errorMessage.ariaDescribedBy ? errorMessage.ariaDescribedBy + '' + errorId : errorId)\"\r\n [ariaLabelledBy]=\"errorMessage.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessage.ariaHidden\"\r\n [ariaDisabled]=\"errorMessage.ariaDisabled\"\r\n [ariaControls]=\"errorMessage.ariaControls\"\r\n [ariaCurrent]=\"errorMessage.ariaCurrent\"\r\n [ariaLive]=\"errorMessage.ariaLive\"\r\n [ariaExpanded]=\"errorMessage.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessage.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessage.ariaHasPopup\"\r\n [tabindex]=\"errorMessage.tabindex\"></desy-error-message>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<div [attr.id]=\"id ? id : null\" [class]=\"(classes ? classes : 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\r\n <div class=\"lg:flex lg:justify-between lg:items-start -my-px px-base py-sm border-t border-b border-neutral-base\">\r\n <ng-container *ngIf=\"getItems(); else noItems\">\r\n <div class=\"lg:w-2/3\">\r\n <ng-container *ngTemplateOutlet=\"commonHtml\"></ng-container>\r\n <dl>\r\n <div *ngFor=\"let item of getItems()\"\r\n [class]=\"(item.classes ? 'flex lg-flex-wrap ' + item.classes : 'flex lg-flex-wrap')\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\">\r\n <dt [class]=\"(item.term.classes ? item.term.classes : 'w-1/2 my-sm')\"\r\n (desyContentEmpty)=\"handleContentEmpty('term')\"\r\n [attr.id]=\"item.term.id ? item.term.id : null\"\r\n [attr.role]=\"item.term.role\"\r\n [attr.aria-describedby]=\"item.term.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.term.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.term.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.term.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.term.ariaHidden\"\r\n [attr.aria-disabled]=\"item.term.ariaDisabled\"\r\n [attr.aria-controls]=\"item.term.ariaControls\"\r\n [attr.aria-current]=\"item.term.ariaCurrent\"\r\n [attr.aria-live]=\"item.term.ariaLive\"\r\n [attr.aria-expanded]=\"item.term.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.term.ariaHasPopup\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.term, html: item.term.html, text: item.term.text}\"></ng-container>\r\n </dt>\r\n <dd [class]=\"(item.definition.classes ? item.definition.classes : 'w-1/2 my-sm font-semibold')\"\r\n (desyContentEmpty)=\"handleContentEmpty('definition')\"\r\n [attr.id]=\"item.definition.id ? item.definition.id : null\"\r\n [attr.role]=\"item.definition.role\"\r\n [attr.aria-describedby]=\"item.definition.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.definition.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.definition.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.definition.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.definition.ariaHidden\"\r\n [attr.aria-disabled]=\"item.definition.ariaDisabled\"\r\n [attr.aria-controls]=\"item.definition.ariaControls\"\r\n [attr.aria-current]=\"item.definition.ariaCurrent\"\r\n [attr.aria-live]=\"item.definition.ariaLive\"\r\n [attr.aria-expanded]=\"item.definition.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.definition.ariaHasPopup\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.definition, html: item.definition.html, text: item.definition.text}\"></ng-container>\r\n </dd>\r\n </div>\r\n </dl>\r\n </div>\r\n </ng-container>\r\n <ng-template #noItems>\r\n <div class=\"lg:w-2/3\">\r\n <ng-container *ngTemplateOutlet=\"commonHtml\"></ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"lg:flex lg:flex-wrap lg:items-center lg:1/3\">\r\n\r\n <div *ngIf=\"contentComponent || caller\" [id]=\"id + '-status-item'\"\r\n [class]=\"'w-full lg:w-auto lg:text-right mt-base lg:mt-0 mb-base lg:mb-0'\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, template: caller }\"></ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"statusComponent || status\" class=\"mb-base lg:mb-0 ml-base py-sm\">\r\n <ng-container *ngIf=\"statusComponent\">\r\n <ng-content select=\"desy-status\"></ng-content>\r\n </ng-container>\r\n <desy-status *ngIf=\"!statusComponent && status\"\r\n [text]=\"status.text\" [icon]=\"status.icon\" [classes]=\"status.classes\" [id]=\"status.id\"\r\n [role]=\"status.role\"\r\n [ariaLabel]=\"status.ariaLabel\"\r\n [ariaDescribedBy]=\"status.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"status.ariaLabelledBy\"\r\n [ariaHidden]=\"status.ariaHidden\"\r\n [ariaDisabled]=\"status.ariaDisabled\"\r\n [ariaControls]=\"status.ariaControls\"\r\n [ariaCurrent]=\"status.ariaCurrent\"\r\n [ariaLive]=\"status.ariaLive\"\r\n [ariaExpanded]=\"status.ariaExpanded\"\r\n [ariaErrorMessage]=\"status.ariaErrorMessage\"\r\n [ariaHasPopup]=\"status.ariaHasPopup\"\r\n [tabindex]=\"status.tabindex\"></desy-status>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n"
7056
+ template: "<ng-template #commonHtml>\r\n <p *ngIf=\"titleComponent || title\" [class]=\"title ? title.classes : 'my-sm'\">\r\n <ng-container *desyCustomInnerContent=\"{\r\n component: titleComponent,\r\n html: title ? title.html : null,\r\n text: title ? title.text : null\r\n }\"></ng-container>\r\n </p>\r\n\r\n <ng-container *ngIf=\"hintComponent\">\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hintComponent && hint\">\r\n <desy-hint [text]=\"hint.text\" [html]=\"hint.html\" [classes]=\"hint.classes\" [id]=\"hint.id\"\r\n [role]=\"hint.role\"\r\n [ariaLabel]=\"hint.ariaLabel\"\r\n [ariaDescribedBy]=\"(hint.ariaDescribedBy ? hint.ariaDescribedBy + '' + hint.id : hint.id)\"\r\n [ariaLabelledBy]=\"hint.ariaLabelledBy\"\r\n [ariaHidden]=\"hint.ariaHidden\"\r\n [ariaDisabled]=\"hint.ariaDisabled\"\r\n [ariaControls]=\"hint.ariaControls\"\r\n [ariaCurrent]=\"hint.ariaCurrent\"\r\n [ariaLive]=\"hint.ariaLive\"\r\n [ariaExpanded]=\"hint.ariaExpanded\"\r\n [ariaErrorMessage]=\"hint.ariaErrorMessage\"\r\n [ariaHasPopup]=\"hint.ariaHasPopup\"\r\n [tabindex]=\"hint.tabindex\"></desy-hint>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"errorMessageComponent\">\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!errorMessageComponent && errorMessage\">\r\n <desy-error-message [text]=\"errorMessage.text\" [html]=\"errorMessage.html\"\r\n [visuallyHiddenText]=\"errorMessage.visuallyHiddenText\"\r\n [id]=\"(errorId ? errorId : id + '-error')\" [classes]=\"errorMessage.classes\"\r\n [role]=\"errorMessage.role\"\r\n [ariaLabel]=\"errorMessage.ariaLabel\"\r\n [ariaDescribedBy]=\"(errorMessage.ariaDescribedBy ? errorMessage.ariaDescribedBy + '' + errorId : errorId)\"\r\n [ariaLabelledBy]=\"errorMessage.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessage.ariaHidden\"\r\n [ariaDisabled]=\"errorMessage.ariaDisabled\"\r\n [ariaControls]=\"errorMessage.ariaControls\"\r\n [ariaCurrent]=\"errorMessage.ariaCurrent\"\r\n [ariaLive]=\"errorMessage.ariaLive\"\r\n [ariaExpanded]=\"errorMessage.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessage.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessage.ariaHasPopup\"\r\n [tabindex]=\"errorMessage.tabindex\"></desy-error-message>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<div [attr.id]=\"id ? id : null\" [class]=\"(classes ? classes : 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\r\n <div class=\"lg:flex lg:justify-between lg:items-start -my-px px-base py-sm border-t border-b border-neutral-base\">\r\n <ng-container *ngIf=\"getItems(); else noItems\">\r\n <div class=\"lg:w-2/3\">\r\n <ng-container *ngTemplateOutlet=\"commonHtml\"></ng-container>\r\n <dl>\r\n <div *ngFor=\"let item of getItems()\"\r\n [class]=\"(item.classes ? 'flex lg-flex-wrap ' + item.classes : 'flex lg-flex-wrap')\"\r\n [attr.id]=\"item.id ? item.id : null\"\r\n [attr.role]=\"item.role\"\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-disabled]=\"item.ariaDisabled\"\r\n [attr.aria-controls]=\"item.ariaControls\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\">\r\n <dt [class]=\"(item.term.classes ? item.term.classes : 'w-1/2 my-sm')\"\r\n [attr.id]=\"item.term.id ? item.term.id : null\"\r\n [attr.role]=\"item.term.role\"\r\n [attr.aria-describedby]=\"item.term.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.term.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.term.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.term.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.term.ariaHidden\"\r\n [attr.aria-disabled]=\"item.term.ariaDisabled\"\r\n [attr.aria-controls]=\"item.term.ariaControls\"\r\n [attr.aria-current]=\"item.term.ariaCurrent\"\r\n [attr.aria-live]=\"item.term.ariaLive\"\r\n [attr.aria-expanded]=\"item.term.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.term.ariaHasPopup\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.term, html: item.term.html, text: item.term.text}\"></ng-container>\r\n </dt>\r\n <dd [class]=\"(item.definition.classes ? item.definition.classes : 'w-1/2 my-sm font-semibold')\"\r\n [attr.id]=\"item.definition.id ? item.definition.id : null\"\r\n [attr.role]=\"item.definition.role\"\r\n [attr.aria-describedby]=\"item.definition.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"item.definition.ariaErrorMessage\"\r\n [attr.aria-label]=\"item.definition.ariaLabel\"\r\n [attr.aria-labelledby]=\"item.definition.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item.definition.ariaHidden\"\r\n [attr.aria-disabled]=\"item.definition.ariaDisabled\"\r\n [attr.aria-controls]=\"item.definition.ariaControls\"\r\n [attr.aria-current]=\"item.definition.ariaCurrent\"\r\n [attr.aria-live]=\"item.definition.ariaLive\"\r\n [attr.aria-expanded]=\"item.definition.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.definition.ariaHasPopup\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.definition, html: item.definition.html, text: item.definition.text}\"></ng-container>\r\n </dd>\r\n </div>\r\n </dl>\r\n </div>\r\n </ng-container>\r\n <ng-template #noItems>\r\n <div class=\"lg:w-2/3\">\r\n <ng-container *ngTemplateOutlet=\"commonHtml\"></ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"lg:flex lg:flex-wrap lg:items-center lg:1/3\">\r\n\r\n <div *ngIf=\"contentComponent || caller\" [id]=\"id + '-status-item'\"\r\n [class]=\"'w-full lg:w-auto lg:text-right mt-base lg:mt-0 mb-base lg:mb-0'\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, template: caller }\"></ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"statusComponent || status\" class=\"mb-base lg:mb-0 ml-base py-sm\">\r\n <ng-container *ngIf=\"statusComponent\">\r\n <ng-content select=\"desy-status\"></ng-content>\r\n </ng-container>\r\n <desy-status *ngIf=\"!statusComponent && status\"\r\n [text]=\"status.text\" [icon]=\"status.icon\" [classes]=\"status.classes\" [id]=\"status.id\"\r\n [role]=\"status.role\"\r\n [ariaLabel]=\"status.ariaLabel\"\r\n [ariaDescribedBy]=\"status.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"status.ariaLabelledBy\"\r\n [ariaHidden]=\"status.ariaHidden\"\r\n [ariaDisabled]=\"status.ariaDisabled\"\r\n [ariaControls]=\"status.ariaControls\"\r\n [ariaCurrent]=\"status.ariaCurrent\"\r\n [ariaLive]=\"status.ariaLive\"\r\n [ariaExpanded]=\"status.ariaExpanded\"\r\n [ariaErrorMessage]=\"status.ariaErrorMessage\"\r\n [ariaHasPopup]=\"status.ariaHasPopup\"\r\n [tabindex]=\"status.tabindex\"></desy-status>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n"
7412
7057
  },] }
7413
7058
  ];
7414
7059
  StatusItemComponent.propDecorators = {
@@ -7486,24 +7131,15 @@ class TabsComponent extends AccessibilityComponent {
7486
7131
  this.changeDetector = changeDetector;
7487
7132
  this.currentTab = 0;
7488
7133
  }
7489
- ngOnChanges(changes) {
7490
- if (!this.title) {
7491
- throw new Error(`title is required`);
7492
- }
7493
- if (!this.tablistAriaLabel) {
7494
- throw new Error(`tablistAriaLabel is required`);
7495
- }
7496
- }
7497
7134
  ngAfterViewInit() {
7498
- const item = this.getItems();
7499
- this.selectTab(item.findIndex(value => !value.disabled));
7135
+ if (this.items) {
7136
+ const item = this.getItems();
7137
+ this.selectTab(item.findIndex(value => !value.disabled));
7138
+ }
7500
7139
  this.changeDetector.detectChanges();
7501
7140
  }
7502
7141
  getItems() {
7503
7142
  const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;
7504
- if (!items || items.length === 0) {
7505
- throw new Error(`items are required`);
7506
- }
7507
7143
  return items;
7508
7144
  }
7509
7145
  getItemPanel(tab) {
@@ -7515,9 +7151,6 @@ class TabsComponent extends AccessibilityComponent {
7515
7151
  }
7516
7152
  return panel;
7517
7153
  }
7518
- handleContentEmpty(element) {
7519
- throw new Error(`${element} content, html or text is required`);
7520
- }
7521
7154
  getIdPrefix() {
7522
7155
  if (this.idPrefix) {
7523
7156
  return this.idPrefix;
@@ -7587,7 +7220,7 @@ class TabsComponent extends AccessibilityComponent {
7587
7220
  TabsComponent.decorators = [
7588
7221
  { type: Component, args: [{
7589
7222
  selector: 'desy-tabs',
7590
- template: "<div [attr.id]=\"id ? id : null\" [class]=\"(classes ? 'c-tabs ' + classes : 'c-tabs')\" data-module=\"c-tabs\"\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\r\n <ng-container *ngIf=\"title\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h1>\r\n <h2 *ngSwitchCase=\"2\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h2>\r\n <h3 *ngSwitchCase=\"3\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h3>\r\n <h4 *ngSwitchCase=\"4\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h4>\r\n <h5 *ngSwitchCase=\"5\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h5>\r\n <h2 *ngSwitchDefault class=\"lg:hidden mb-sm text-sm\">{{title}}</h2>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!title\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\" class=\"lg:hidden mb-sm text-sm\">Contenido</h1>\r\n <h2 *ngSwitchCase=\"2\" class=\"lg:hidden mb-sm text-sm\">Contenido</h2>\r\n <h3 *ngSwitchCase=\"3\" class=\"lg:hidden mb-sm text-sm\">Contenido</h3>\r\n <h4 *ngSwitchCase=\"4\" class=\"lg:hidden mb-sm text-sm\">Contenido</h4>\r\n <h5 *ngSwitchCase=\"5\" class=\"lg:hidden mb-sm text-sm\">Contenido</h5>\r\n <h2 *ngSwitchDefault class=\"lg:hidden mb-sm text-sm\">Contenido</h2>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getItems()\">\r\n <div class=\"c-tabs lg:flex lg:flex-wrap\" role=\"tablist\" [attr.aria-label]=tablistAriaLabel>\r\n <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <button #tabSelector\r\n (click)=\"selectTab(i)\"\r\n (keydown.home)=\"focusFirstTab($event)\"\r\n (keydown.end)=\"focusLastTab($event)\"\r\n (keydown.arrowleft)=\"focusPreviousTab(i)\"\r\n (keydown.arrowright)=\"focusNextTab(i)\"\r\n class=\"c-tabs__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\"\r\n [ngClass]=\"{'opacity-50 pointer-events-none': isDisabled(item)}\"\r\n [attr.id]=\"getItemId(i)\"\r\n [attr.role]=\"(item.role ? role : 'tab')\"\r\n [attr.aria-selected]=\"currentTab === i ? 'true' : 'false'\"\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]=\"'tab-' + getItemId(i)\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"(currentTab !== i || item.disabled ? '-1' : null)\"\r\n [attr.disabled]=\"isDisabled(item)\"\r\n [attr.aria-disabled]=\"isDisabled(item) ? 'true' : (ariaDisabled ? ariaDisabled : null)\">\r\n <span #tabSelectorContentWrapper class=\"flex items-center pointer-events-none\" (desyContentEmpty)=\"handleContentEmpty('contentComponent')\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent, html: item.html, text: item.text}\"></ng-container>\r\n </span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n\r\n <div [class]=\"['p-base mt-base lg:mt-0 border border-neutral-base focus:outline-none focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base', currentPanel?.classes] | makeHtmlList\"\r\n [attr.id]=\"'tab-' + getItemId(currentTab)\"\r\n [attr.role]=\"(currentPanel?.role ? currentPanel?.role : 'tabpanel')\"\r\n [attr.aria-describedby]=\"currentPanel?.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"currentPanel?.ariaErrorMessage\"\r\n [attr.aria-label]=\"currentPanel?.ariaLabel\"\r\n [attr.aria-labelledby]=\"getItemId(currentTab)\"\r\n [attr.aria-hidden]=\"currentPanel?.ariaHidden\"\r\n [attr.aria-disabled]=\"currentPanel?.ariaDisabled\"\r\n [attr.aria-controls]=\"currentPanel?.ariaControls\"\r\n [attr.aria-current]=\"currentPanel?.ariaCurrent\"\r\n [attr.aria-live]=\"currentPanel?.ariaLive\"\r\n [attr.aria-expanded]=\"currentPanel?.ariaExpanded\"\r\n [attr.aria-haspopup]=\"currentPanel?.ariaHasPopup\"\r\n [attr.tabindex]=\"(currentPanel?.tabindex ? currentPanel?.tabindex : '0')\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h1>\r\n <h2 *ngSwitchCase=\"2\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h2>\r\n <h3 *ngSwitchCase=\"3\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\r\n <h4 *ngSwitchCase=\"4\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h4>\r\n <h5 *ngSwitchCase=\"5\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h5>\r\n <h3 *ngSwitchDefault #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\r\n </ng-container>\r\n <ng-container *desyCustomInnerContent=\"{ component: getItemPanel(currentTab), template: currentPanel?.html, html: getPanelContent(currentTab) }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</div>\r\n"
7223
+ template: "<div [attr.id]=\"id ? id : null\" [class]=\"(classes ? 'c-tabs ' + classes : 'c-tabs')\" data-module=\"c-tabs\"\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\r\n <ng-container *ngIf=\"title\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h1>\r\n <h2 *ngSwitchCase=\"2\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h2>\r\n <h3 *ngSwitchCase=\"3\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h3>\r\n <h4 *ngSwitchCase=\"4\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h4>\r\n <h5 *ngSwitchCase=\"5\" class=\"lg:hidden mb-sm text-sm\">{{title}}</h5>\r\n <h2 *ngSwitchDefault class=\"lg:hidden mb-sm text-sm\">{{title}}</h2>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!title\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\" class=\"lg:hidden mb-sm text-sm\">Contenido</h1>\r\n <h2 *ngSwitchCase=\"2\" class=\"lg:hidden mb-sm text-sm\">Contenido</h2>\r\n <h3 *ngSwitchCase=\"3\" class=\"lg:hidden mb-sm text-sm\">Contenido</h3>\r\n <h4 *ngSwitchCase=\"4\" class=\"lg:hidden mb-sm text-sm\">Contenido</h4>\r\n <h5 *ngSwitchCase=\"5\" class=\"lg:hidden mb-sm text-sm\">Contenido</h5>\r\n <h2 *ngSwitchDefault class=\"lg:hidden mb-sm text-sm\">Contenido</h2>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getItems()\">\r\n <div class=\"c-tabs lg:flex lg:flex-wrap\" role=\"tablist\" [attr.aria-label]=tablistAriaLabel>\r\n <ng-container *ngFor=\"let item of getItems(); index as i\">\r\n <button #tabSelector\r\n (click)=\"selectTab(i)\"\r\n (keydown.home)=\"focusFirstTab($event)\"\r\n (keydown.end)=\"focusLastTab($event)\"\r\n (keydown.arrowleft)=\"focusPreviousTab(i)\"\r\n (keydown.arrowright)=\"focusNextTab(i)\"\r\n class=\"c-tabs__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\"\r\n [ngClass]=\"{'opacity-50 pointer-events-none': isDisabled(item)}\"\r\n [attr.id]=\"getItemId(i)\"\r\n [attr.role]=\"(item.role ? role : 'tab')\"\r\n [attr.aria-selected]=\"currentTab === i ? 'true' : 'false'\"\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]=\"'tab-' + getItemId(i)\"\r\n [attr.aria-current]=\"item.ariaCurrent\"\r\n [attr.aria-live]=\"item.ariaLive\"\r\n [attr.aria-expanded]=\"item.ariaExpanded\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\r\n [attr.tabindex]=\"(currentTab !== i || item.disabled ? '-1' : null)\"\r\n [attr.disabled]=\"isDisabled(item)\"\r\n [attr.aria-disabled]=\"isDisabled(item) ? 'true' : (ariaDisabled ? ariaDisabled : null)\">\r\n <span #tabSelectorContentWrapper class=\"flex items-center pointer-events-none\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent, html: item.html, text: item.text}\"></ng-container>\r\n </span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n\r\n <div [class]=\"['p-base mt-base lg:mt-0 border border-neutral-base focus:outline-none focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base', currentPanel?.classes] | makeHtmlList\"\r\n [attr.id]=\"'tab-' + getItemId(currentTab)\"\r\n [attr.role]=\"(currentPanel?.role ? currentPanel?.role : 'tabpanel')\"\r\n [attr.aria-describedby]=\"currentPanel?.ariaDescribedBy\"\r\n [attr.aria-errormessage]=\"currentPanel?.ariaErrorMessage\"\r\n [attr.aria-label]=\"currentPanel?.ariaLabel\"\r\n [attr.aria-labelledby]=\"getItemId(currentTab)\"\r\n [attr.aria-hidden]=\"currentPanel?.ariaHidden\"\r\n [attr.aria-disabled]=\"currentPanel?.ariaDisabled\"\r\n [attr.aria-controls]=\"currentPanel?.ariaControls\"\r\n [attr.aria-current]=\"currentPanel?.ariaCurrent\"\r\n [attr.aria-live]=\"currentPanel?.ariaLive\"\r\n [attr.aria-expanded]=\"currentPanel?.ariaExpanded\"\r\n [attr.aria-haspopup]=\"currentPanel?.ariaHasPopup\"\r\n [attr.tabindex]=\"(currentPanel?.tabindex ? currentPanel?.tabindex : '0')\">\r\n <ng-container [ngSwitch]=\"headingLevel\">\r\n <h1 *ngSwitchCase=\"1\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h1>\r\n <h2 *ngSwitchCase=\"2\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h2>\r\n <h3 *ngSwitchCase=\"3\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\r\n <h4 *ngSwitchCase=\"4\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h4>\r\n <h5 *ngSwitchCase=\"5\" #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h5>\r\n <h3 *ngSwitchDefault #tabSrOnly class=\"lg:sr-only inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\r\n </ng-container>\r\n <ng-container *desyCustomInnerContent=\"{ component: getItemPanel(currentTab), template: currentPanel?.html, html: getPanelContent(currentTab) }\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</div>\r\n"
7591
7224
  },] }
7592
7225
  ];
7593
7226
  TabsComponent.ctorParameters = () => [
@@ -7638,14 +7271,13 @@ class AlertService {
7638
7271
  });
7639
7272
  }
7640
7273
  closeAlert(alert) {
7641
- if (!alert) {
7642
- throw Error('alert is required');
7643
- }
7644
- if (alert instanceof ComponentRef) {
7645
- alert.instance.dismiss();
7646
- }
7647
- else {
7648
- alert.dismiss();
7274
+ if (alert) {
7275
+ if (alert instanceof ComponentRef) {
7276
+ alert.instance.dismiss();
7277
+ }
7278
+ else {
7279
+ alert.dismiss();
7280
+ }
7649
7281
  }
7650
7282
  }
7651
7283
  onCloseAlert(alert) {
@@ -7712,15 +7344,6 @@ class PaginationComponent extends AccessibilityComponent {
7712
7344
  this.prefix = '<span class="sr-only">Página&nbsp;</span>';
7713
7345
  }
7714
7346
  ngOnChanges(changes) {
7715
- if (!this.id) {
7716
- throw new Error(`id is required`);
7717
- }
7718
- if (this.totalItems === undefined || this.totalItems === null) {
7719
- throw new Error(`totalItems is required`);
7720
- }
7721
- if (!this.itemsPerPage === undefined || this.itemsPerPage === null) {
7722
- throw new Error(`itemsPerPage is required`);
7723
- }
7724
7347
  this.nPages = Math.ceil(this.totalItems / this.itemsPerPage);
7725
7348
  if (!this.currentPage || this.currentPage < 1 || this.currentPage > this.nPages) {
7726
7349
  this.currentPage = 1;
@@ -7785,7 +7408,7 @@ class PaginationComponent extends AccessibilityComponent {
7785
7408
  PaginationComponent.decorators = [
7786
7409
  { type: Component, args: [{
7787
7410
  selector: 'desy-pagination',
7788
- 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"
7411
+ 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\" *ngIf=\"totalItems && itemsPerPage\">\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"
7789
7412
  },] }
7790
7413
  ];
7791
7414
  PaginationComponent.propDecorators = {
@@ -7999,91 +7622,6 @@ ContentChangeDirective.propDecorators = {
7999
7622
  desyContentChangeMutation: [{ type: Output }]
8000
7623
  };
8001
7624
 
8002
- /**
8003
- * Emite un evento cuando el contenido de un elemento esté vacío
8004
- * El contenido marcado con #desyContentEmptyIgnore será ignorado
8005
- *
8006
- * NOTA: tener en cuenta que los eventos se emiten después de generarse la vista, por lo que si al gestionar el evento se realizan
8007
- * cambios que afectan a la template, conviene forzar la detección de cambios. (Ejemplo de esto en el icono de NotificationComponent)
8008
- */
8009
- class ContentEmptyDirective {
8010
- constructor(elementRef) {
8011
- this.elementRef = elementRef;
8012
- this.desyContentEmpty = new EventEmitter();
8013
- this.desyContentNotEmpty = new EventEmitter();
8014
- this.lastWasEmpty = false;
8015
- this.viewInit = false;
8016
- const element = this.elementRef.nativeElement;
8017
- this.changes = new MutationObserver((mutations) => mutations.forEach(() => this.checkContent()));
8018
- this.changes.observe(element, {
8019
- attributes: false,
8020
- childList: true,
8021
- characterData: true,
8022
- subtree: false
8023
- });
8024
- }
8025
- ngAfterViewInit() {
8026
- if (!this.viewInit) {
8027
- this.viewInit = true;
8028
- this.checkContent();
8029
- }
8030
- }
8031
- /**
8032
- * Comprueba el contenido del elemento una vez se haya inicializado la vista. Si se detecta que el elemento está vacío, las comprobaciones
8033
- * sucesivas que tampoco detecten contenido no emitirán evento.
8034
- */
8035
- checkContent() {
8036
- if (this.viewInit) {
8037
- const childs = this.elementRef.nativeElement.childNodes;
8038
- let hasContent = false;
8039
- for (let i = 0; i < childs.length && !hasContent; i++) {
8040
- const item = childs.item(i);
8041
- if (item.nodeType === Node.TEXT_NODE && item.textContent.length > 0) {
8042
- hasContent = true;
8043
- }
8044
- else if ((item.nodeType === Node.ELEMENT_NODE || item.nodeType === Node.CDATA_SECTION_NODE) && this.isContentNode(item)) {
8045
- hasContent = true;
8046
- }
8047
- }
8048
- if (hasContent) {
8049
- if (this.lastWasEmpty) {
8050
- this.desyContentNotEmpty.emit(this.elementRef.nativeElement.innerHTML);
8051
- }
8052
- this.lastWasEmpty = false;
8053
- }
8054
- else {
8055
- if (!this.lastWasEmpty) {
8056
- this.desyContentEmpty.emit(this.elementRef.nativeElement.innerHTML);
8057
- }
8058
- this.lastWasEmpty = true;
8059
- }
8060
- }
8061
- }
8062
- isContentNode(elem) {
8063
- let contentNode = true;
8064
- if (this.contentsToIgnore && this.contentsToIgnore.length > 0) {
8065
- contentNode = !this.contentsToIgnore.find(ignoreElem => ignoreElem.nativeElement === elem);
8066
- }
8067
- return contentNode;
8068
- }
8069
- ngOnDestroy() {
8070
- this.changes.disconnect();
8071
- }
8072
- }
8073
- ContentEmptyDirective.decorators = [
8074
- { type: Directive, args: [{
8075
- selector: '[desyContentEmpty]'
8076
- },] }
8077
- ];
8078
- ContentEmptyDirective.ctorParameters = () => [
8079
- { type: ElementRef }
8080
- ];
8081
- ContentEmptyDirective.propDecorators = {
8082
- desyContentEmpty: [{ type: Output }],
8083
- desyContentNotEmpty: [{ type: Output }],
8084
- contentsToIgnore: [{ type: ContentChildren, args: ['desyContentEmptyIgnore', { read: ElementRef },] }]
8085
- };
8086
-
8087
7625
  /**
8088
7626
  * Permite introducir contenido de forma dinámica en una posición determinada desde:
8089
7627
  * - component: Componente existente de tipo ContentBase
@@ -8164,7 +7702,6 @@ SharedModule.decorators = [
8164
7702
  InnerContentDirective,
8165
7703
  ClickOutsideDirective,
8166
7704
  ContentChangeDirective,
8167
- ContentEmptyDirective,
8168
7705
  CustomInnerContentDirective,
8169
7706
  ],
8170
7707
  imports: [
@@ -8187,7 +7724,6 @@ SharedModule.decorators = [
8187
7724
  InnerContentDirective,
8188
7725
  ClickOutsideDirective,
8189
7726
  ContentChangeDirective,
8190
- ContentEmptyDirective,
8191
7727
  CustomInnerContentDirective,
8192
7728
  ]
8193
7729
  },] }
@@ -8321,11 +7857,6 @@ class TooltipComponent extends AccessibilityComponent {
8321
7857
  this.hasContent = true;
8322
7858
  this.hasIconComponentContent = true;
8323
7859
  }
8324
- ngOnChanges(changes) {
8325
- if (!this.id) {
8326
- throw Error('id is required');
8327
- }
8328
- }
8329
7860
  ngAfterContentInit() {
8330
7861
  const contentTooltip = this.tooltipContent.nativeElement;
8331
7862
  this.tippyProperties = {
@@ -8375,9 +7906,6 @@ class TooltipComponent extends AccessibilityComponent {
8375
7906
  this.hasIconComponentContent = !isEmpty;
8376
7907
  this.changeDetectorRef.detectChanges();
8377
7908
  }
8378
- handleEmptyTooltipContent() {
8379
- throw Error('caller attribute or inner desy-tooltip-content component are required');
8380
- }
8381
7909
  getMainContent() {
8382
7910
  let content;
8383
7911
  if (this.html) {
@@ -8409,7 +7937,7 @@ TooltipComponent.KEY_CODE_ESC = 'Escape';
8409
7937
  TooltipComponent.decorators = [
8410
7938
  { type: Component, args: [{
8411
7939
  selector: 'desy-tooltip',
8412
- template: "<div [attr.id]=\"id\" [ngClass]=\"classes\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : 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 <div *ngIf=\"tippyProperties\" [attr.id]=\"getIdButton()\"\r\n ngxTippy [tippyProps]=\"tippyProperties\"\r\n class=\"inline-flex items-center focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black\"\r\n tabindex=\"0\" role=\"button\"\r\n [attr.aria-labelledby]=\"getIdButton() + ' ' + getIdTooltip()\"\r\n (desyContentEmpty)=\"handleEmptyContent(true)\" (desyContentNotEmpty)=\"handleEmptyContent(false)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, html: getMainContent() }\"></ng-container>\r\n <span *ngIf=\"hasContent && ( (iconComponent) || (icon) )\" #desyContentEmptyIgnore class=\"inline-block w-1.5\"></span>\r\n <span *ngIf=\"iconComponent\" #desyContentEmptyIgnore class=\"inline-block\"\r\n (desyContentEmpty)=\"handleEmptyIconContent(true)\"\r\n (desyContentNotEmpty)=\"handleEmptyIconContent(false)\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent }\"></ng-container>\r\n\r\n <ng-container *ngIf=\"!hasIconComponentContent\">\r\n <ng-container [ngSwitch]=\"iconComponent.type\">\r\n <svg *ngSwitchCase=\"'info'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-primary-base\" role=\"img\" aria-label=\"Informaci\u00F3n\"><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm7.5 105a7.5 7.5 0 01-15 0V70a7.5 7.5 0 0115 0zM70 50a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'alert'\" #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-alert-base\" role=\"img\" aria-label=\"Alerta\"><path d=\"M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchDefault #desyContentEmptyIgnore xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-primary-base\" role=\"img\" aria-label=\"Ayuda\"><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm0 117.51a10 10 0 1110-10 10 10 0 01-10 10zm9.17-39.08a2.5 2.5 0 00-1.67 2.36v1.71a7.5 7.5 0 01-15 0v-10A7.5 7.5 0 0170 65a12.5 12.5 0 10-12.5-12.5 7.5 7.5 0 01-15 0 27.5 27.5 0 1136.67 25.93z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n <span *ngIf=\"!iconComponent && icon\" #desyContentEmptyIgnore class=\"inline-block\">\r\n <ng-container *desyCustomInnerContent=\"{ html: getIconContent(icon) }\"></ng-container>\r\n </span>\r\n </div>\r\n\r\n <div #tooltipContent [attr.id]=\"getIdTooltip()\"\r\n [class]=\"['-my-xs p-sm shadow-md bg-black rounded text-white', classesTooltip] | makeHtmlList\"\r\n (desyContentEmpty)=\"handleEmptyTooltipContent()\">\r\n <ng-container *desyCustomInnerContent=\"{ component: tooltipContentComponent, template: caller }\"></ng-container>\r\n </div>\r\n</div>\r\n"
7940
+ template: "<div [attr.id]=\"id\" [ngClass]=\"classes\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : 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 <div *ngIf=\"tippyProperties\" [attr.id]=\"getIdButton()\"\r\n ngxTippy [tippyProps]=\"tippyProperties\"\r\n class=\"inline-flex items-center focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black\"\r\n tabindex=\"0\" role=\"button\"\r\n [attr.aria-labelledby]=\"getIdButton() + ' ' + getIdTooltip()\">\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, html: getMainContent() }\"></ng-container>\r\n <span *ngIf=\"hasContent && ( (iconComponent) || (icon) )\" class=\"inline-block w-1.5\"></span>\r\n <span *ngIf=\"iconComponent\" class=\"inline-block\">\r\n <ng-container *desyCustomInnerContent=\"{ component: iconComponent }\"></ng-container>\r\n\r\n <ng-container *ngIf=\"!hasIconComponentContent\">\r\n <ng-container [ngSwitch]=\"iconComponent.type\">\r\n <svg *ngSwitchCase=\"'info'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-primary-base\" role=\"img\" aria-label=\"Informaci\u00F3n\"><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm7.5 105a7.5 7.5 0 01-15 0V70a7.5 7.5 0 0115 0zM70 50a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchCase=\"'alert'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-alert-base\" role=\"img\" aria-label=\"Alerta\"><path d=\"M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>\r\n <svg *ngSwitchDefault xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-primary-base\" role=\"img\" aria-label=\"Ayuda\"><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm0 117.51a10 10 0 1110-10 10 10 0 01-10 10zm9.17-39.08a2.5 2.5 0 00-1.67 2.36v1.71a7.5 7.5 0 01-15 0v-10A7.5 7.5 0 0170 65a12.5 12.5 0 10-12.5-12.5 7.5 7.5 0 01-15 0 27.5 27.5 0 1136.67 25.93z\" fill=\"currentColor\"/></svg>\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n <span *ngIf=\"!iconComponent && icon\" class=\"inline-block\">\r\n <ng-container *desyCustomInnerContent=\"{ html: getIconContent(icon) }\"></ng-container>\r\n </span>\r\n </div>\r\n\r\n <div #tooltipContent [attr.id]=\"getIdTooltip()\"\r\n [class]=\"['-my-xs p-sm shadow-md bg-black rounded text-white', classesTooltip] | makeHtmlList\">\r\n <ng-container *desyCustomInnerContent=\"{ component: tooltipContentComponent, template: caller }\"></ng-container>\r\n </div>\r\n</div>\r\n"
8413
7941
  },] }
8414
7942
  ];
8415
7943
  TooltipComponent.ctorParameters = () => [
@@ -8467,6 +7995,7 @@ DesyViewsModule.decorators = [
8467
7995
  TooltipContentComponent,
8468
7996
  PanelComponent,
8469
7997
  TabItemComponent,
7998
+ MediaObjectFigureComponent,
8470
7999
  ],
8471
8000
  imports: [
8472
8001
  CommonModule,
@@ -8499,6 +8028,7 @@ DesyViewsModule.decorators = [
8499
8028
  TooltipContentComponent,
8500
8029
  PanelComponent,
8501
8030
  TabItemComponent,
8031
+ MediaObjectFigureComponent,
8502
8032
  ]
8503
8033
  },] }
8504
8034
  ];
@@ -8885,5 +8415,5 @@ DesyAngularModule.decorators = [
8885
8415
  * Generated bundle index. Do not edit.
8886
8416
  */
8887
8417
 
8888
- export { AccordionComponent, AccordionHeaderComponent, AccordionItemComponent, AlertComponent, AlertService, BreadcrumbsComponent, BreadcrumbsItemComponent, ButtonComponent, ButtonLoaderComponent, CharacterCountComponent, CheckboxItemComponent, CheckboxesComponent, CollapsibleComponent, ConditionDirective, ContentComponent, DateInputComponent, DefinitionComponent, DescriptionComponent, DescriptionItemComponent, DescriptionListComponent, DesyAngularModule, DesyButtonsModule, DesyCommonsModule, DesyFormsModule, DesyModalsModule, DesyNavModule, DesyPaginationModule, DesyTablesModule, DesyViewsModule, DetailsComponent, DialogComponent, DialogService, DropdownComponent, ErrorMessageComponent, ErrorSummaryComponent, ErrorSummaryItemComponent, FieldsetComponent, FileUploadComponent, FooterComponent, FooterMetaComponent, FooterMetaItemComponent, FooterNavigationComponent, FooterNavigationItemComponent, HeaderComponent, HeaderDropdownComponent, HeaderNavigationComponent, HeaderOffcanvasButtonComponent, HeaderOffcanvasCloseButtonComponent, HeaderOffcanvasComponent, HeaderSubnavComponent, HintComponent, IconComponent, InputComponent, InputGroupComponent, InputGroupDividerComponent, InputGroupInputComponent, InputGroupSelectComponent, ItemComponent, ItemContentBottomComponent, ItemContentRightComponent, ItemItemComponent, LabelComponent, LegendComponent, ListboxComponent, ListboxItemComponent, ListboxLabelComponent, MediaObjectComponent, MenuHorizontalComponent, MenuHorizontalItemComponent, MenuVerticalComponent, MenuVerticalItemComponent, MenuVerticalItemSubComponent, MenuVerticalItemSubItemComponent, MenubarComponent, MenubarItemComponent, MenubarLabelComponent, MenubarSubitemComponent, MenubarSubsubitemComponent, ModalButtonPrimaryComponent, ModalButtonSecondaryComponent, ModalComponent, NavComponent, NavItemComponent, NotificationComponent, NotificationItemComponent, OptionComponent, OptionGroupComponent, OrderBy, PaginationComponent, PillComponent, RadioItemComponent, RadiosComponent, SearchBarComponent, SelectComponent, SkipLinkComponent, SpinnerComponent, StatusComponent, StatusItemComponent, TableAdvancedComponent, TableAdvancedHeaderCellComponent, TableAdvancedHeaderComponent, TableAdvancedRowCellComponent, TableAdvancedRowComponent, TableCaptionComponent, TableCellComponent, TableComponent, TableHeaderComponent, TableRowComponent, TabsComponent, TermComponent, TextareaComponent, TitleComponent, TooltipContentComponent, TreeComponent, TreeItemComponent, TreeItemsGeneratorComponent, TreeSubComponent, summaryTextOrSummaryHtmlRequiredFunction, AccessibilityComponent as ɵa, AccessibilityAndContentRequiredComponent as ɵb, AttributeChangeDirective as ɵba, InnerContentDirective as ɵbb, ClickOutsideDirective as ɵbc, ContentChangeDirective as ɵbd, ContentEmptyDirective as ɵbe, CustomInnerContentDirective as ɵbf, TooltipComponent as ɵbg, TemplateDrivenWrapperComponent as ɵbh, DateInputDividerComponent as ɵbi, DateInputDayComponent as ɵbj, DateInputMonthComponent as ɵbk, DateInputYearComponent as ɵbl, FocusClickedCellDirective as ɵbm, AccessibilityAndTextOrHtmlRequiredComponent as ɵc, DesyContentChild as ɵd, ContentBaseComponent as ɵe, FormFieldComponent as ɵf, SelectItemComponent as ɵg, DesyOnInputChange as ɵh, InputGroupItemComponent as ɵi, DateInputItemComponent as ɵj, ITreeItem as ɵk, TreeCheckboxComponent as ɵl, HeaderNavigationItemComponent as ɵm, MenubaritemDirective as ɵn, RowDirective as ɵo, CellDirective as ɵp, TabItemComponent as ɵq, PanelComponent as ɵr, ToggleComponent as ɵs, ToggleOnStateComponent as ɵt, ToggleOffStateComponent as ɵu, SharedModule as ɵv, TextOrHtmlRequiredComponent as ɵw, InnerHtmlPipe as ɵx, MakeHtmlListPipe as ɵy, ExternalHrefPipe as ɵz };
8418
+ export { AccordionComponent, AccordionHeaderComponent, AccordionItemComponent, AlertComponent, AlertService, BreadcrumbsComponent, BreadcrumbsItemComponent, ButtonComponent, ButtonLoaderComponent, CharacterCountComponent, CheckboxItemComponent, CheckboxesComponent, CollapsibleComponent, ConditionDirective, ContentComponent, DateInputComponent, DefinitionComponent, DescriptionComponent, DescriptionItemComponent, DescriptionListComponent, DesyAngularModule, DesyButtonsModule, DesyCommonsModule, DesyFormsModule, DesyModalsModule, DesyNavModule, DesyPaginationModule, DesyTablesModule, DesyViewsModule, DetailsComponent, DialogComponent, DialogService, DropdownComponent, ErrorMessageComponent, ErrorSummaryComponent, ErrorSummaryItemComponent, FieldsetComponent, FileUploadComponent, FooterComponent, FooterMetaComponent, FooterMetaItemComponent, FooterNavigationComponent, FooterNavigationItemComponent, HeaderComponent, HeaderDropdownComponent, HeaderNavigationComponent, HeaderOffcanvasButtonComponent, HeaderOffcanvasCloseButtonComponent, HeaderOffcanvasComponent, HeaderSubnavComponent, HintComponent, IconComponent, InputComponent, InputGroupComponent, InputGroupDividerComponent, InputGroupInputComponent, InputGroupSelectComponent, ItemComponent, ItemContentBottomComponent, ItemContentRightComponent, ItemItemComponent, LabelComponent, LegendComponent, ListboxComponent, ListboxItemComponent, ListboxLabelComponent, MediaObjectComponent, MenuHorizontalComponent, MenuHorizontalItemComponent, MenuVerticalComponent, MenuVerticalItemComponent, MenuVerticalItemSubComponent, MenuVerticalItemSubItemComponent, MenubarComponent, MenubarItemComponent, MenubarLabelComponent, MenubarSubitemComponent, MenubarSubsubitemComponent, ModalButtonPrimaryComponent, ModalButtonSecondaryComponent, ModalComponent, NavComponent, NavItemComponent, NotificationComponent, NotificationItemComponent, OptionComponent, OptionGroupComponent, OrderBy, PaginationComponent, PillComponent, RadioItemComponent, RadiosComponent, SearchBarComponent, SelectComponent, SkipLinkComponent, SpinnerComponent, StatusComponent, StatusItemComponent, TableAdvancedComponent, TableAdvancedHeaderCellComponent, TableAdvancedHeaderComponent, TableAdvancedRowCellComponent, TableAdvancedRowComponent, TableCaptionComponent, TableCellComponent, TableComponent, TableHeaderComponent, TableRowComponent, TabsComponent, TermComponent, TextareaComponent, TitleComponent, TooltipContentComponent, TreeComponent, TreeItemComponent, TreeItemsGeneratorComponent, TreeSubComponent, AccessibilityComponent as ɵa, AccessibilityAndContentRequiredComponent as ɵb, ExternalHrefPipe as ɵba, AttributeChangeDirective as ɵbb, InnerContentDirective as ɵbc, ClickOutsideDirective as ɵbd, ContentChangeDirective as ɵbe, CustomInnerContentDirective as ɵbf, TooltipComponent as ɵbg, TemplateDrivenWrapperComponent as ɵbh, DateInputDividerComponent as ɵbi, DateInputDayComponent as ɵbj, DateInputMonthComponent as ɵbk, DateInputYearComponent as ɵbl, FocusClickedCellDirective as ɵbm, AccessibilityAndTextOrHtmlRequiredComponent as ɵc, DesyContentChild as ɵd, ContentBaseComponent as ɵe, FormFieldComponent as ɵf, SelectItemComponent as ɵg, DesyOnInputChange as ɵh, InputGroupItemComponent as ɵi, DateInputItemComponent as ɵj, ITreeItem as ɵk, TreeCheckboxComponent as ɵl, HeaderNavigationItemComponent as ɵm, MenubaritemDirective as ɵn, RowDirective as ɵo, CellDirective as ɵp, MediaObjectFigureComponent as ɵq, TabItemComponent as ɵr, PanelComponent as ɵs, ToggleComponent as ɵt, ToggleOnStateComponent as ɵu, ToggleOffStateComponent as ɵv, SharedModule as ɵw, TextOrHtmlRequiredComponent as ɵx, InnerHtmlPipe as ɵy, MakeHtmlListPipe as ɵz };
8889
8419
  //# sourceMappingURL=desy-angular.js.map