desy-angular 6.0.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -21
- package/bundles/desy-angular.umd.js +10693 -10672
- package/bundles/desy-angular.umd.js.map +1 -1
- package/bundles/desy-angular.umd.min.js +1 -1
- package/bundles/desy-angular.umd.min.js.map +1 -1
- package/desy-angular.d.ts +51 -50
- package/desy-angular.metadata.json +1 -1
- package/esm2015/desy-angular.js +52 -51
- package/esm2015/lib/desy-angular.module.js +38 -38
- package/esm2015/lib/desy-buttons/components/button/button.component.js +92 -92
- package/esm2015/lib/desy-buttons/components/button-loader/button-loader.component.js +50 -50
- package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +111 -111
- package/esm2015/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.js +26 -26
- package/esm2015/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.js +14 -14
- package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +265 -265
- package/esm2015/lib/desy-buttons/components/pill/pill.component.js +64 -64
- package/esm2015/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.js +15 -15
- package/esm2015/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.js +15 -15
- package/esm2015/lib/desy-buttons/components/toggle/toggle.component.js +44 -44
- package/esm2015/lib/desy-buttons/desy-buttons.module.js +53 -53
- package/esm2015/lib/desy-buttons/interfaces/listbox-item-data.js +2 -2
- package/esm2015/lib/desy-buttons/interfaces/listbox-label-data.js +2 -2
- package/esm2015/lib/desy-commons/components/content/content.component.js +14 -14
- package/esm2015/lib/desy-commons/components/description/description.component.js +15 -15
- package/esm2015/lib/desy-commons/components/divider/divider.component.js +15 -15
- package/esm2015/lib/desy-commons/components/icon/icon.component.js +15 -15
- package/esm2015/lib/desy-commons/components/title/title.component.js +14 -14
- package/esm2015/lib/desy-commons/desy-commons.module.js +36 -36
- package/esm2015/lib/desy-commons/interfaces/content-data.js +2 -2
- package/esm2015/lib/desy-commons/interfaces/description-data.js +2 -2
- package/esm2015/lib/desy-commons/interfaces/divider-data.js +2 -2
- package/esm2015/lib/desy-commons/interfaces/icon-data.js +2 -2
- package/esm2015/lib/desy-commons/interfaces/index.js +6 -6
- package/esm2015/lib/desy-commons/interfaces/title-data.js +2 -2
- package/esm2015/lib/desy-forms/components/character-count/character-count.component.js +109 -109
- package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +188 -188
- package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +226 -226
- package/esm2015/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.js +38 -38
- package/esm2015/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.js +19 -19
- package/esm2015/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.js +13 -13
- package/esm2015/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.js +38 -38
- package/esm2015/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.js +36 -36
- package/esm2015/lib/desy-forms/components/date-input/date-input.component.js +222 -222
- package/esm2015/lib/desy-forms/components/error-message/error-message.component.js +28 -28
- package/esm2015/lib/desy-forms/components/fieldset/fieldset.component.js +44 -44
- package/esm2015/lib/desy-forms/components/fieldset/legend/legend.component.js +16 -16
- package/esm2015/lib/desy-forms/components/file-upload/file-upload.component.js +51 -51
- package/esm2015/lib/desy-forms/components/form-field/form-field.component.js +103 -103
- package/esm2015/lib/desy-forms/components/hint/hint.component.js +27 -27
- package/esm2015/lib/desy-forms/components/input/input.component.js +67 -67
- package/esm2015/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.js +20 -20
- package/esm2015/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.js +39 -39
- package/esm2015/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.js +13 -13
- package/esm2015/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.js +35 -35
- package/esm2015/lib/desy-forms/components/input-group/input-group.component.js +179 -179
- package/esm2015/lib/desy-forms/components/label/label.component.js +30 -30
- package/esm2015/lib/desy-forms/components/radios/radio-item/radio-item.component.js +144 -144
- package/esm2015/lib/desy-forms/components/radios/radios.component.js +233 -233
- package/esm2015/lib/desy-forms/components/search-bar/search-bar.component.js +45 -45
- package/esm2015/lib/desy-forms/components/select/option/option.component.js +17 -17
- package/esm2015/lib/desy-forms/components/select/option-group/option-group.component.js +17 -17
- package/esm2015/lib/desy-forms/components/select/select-item/select-item.component.js +14 -14
- package/esm2015/lib/desy-forms/components/select/select.component.js +64 -64
- package/esm2015/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.js +12 -12
- package/esm2015/lib/desy-forms/components/textarea/textarea.component.js +60 -60
- package/esm2015/lib/desy-forms/components/tree/interfaces/itree-item.js +3 -3
- package/esm2015/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.js +2 -2
- package/esm2015/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.js +151 -151
- package/esm2015/lib/desy-forms/components/tree/tree-item/tree-item.component.js +370 -370
- package/esm2015/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.js +25 -25
- package/esm2015/lib/desy-forms/components/tree/tree-sub/tree-sub.component.js +14 -14
- package/esm2015/lib/desy-forms/components/tree/tree.component.js +408 -408
- package/esm2015/lib/desy-forms/desy-forms.module.js +130 -130
- package/esm2015/lib/desy-forms/directives/condition.directive.js +32 -32
- package/esm2015/lib/desy-forms/interfaces/accesibility-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/error-message-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/fieldset-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/hint-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/index.js +13 -13
- package/esm2015/lib/desy-forms/interfaces/item-checkbox-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/item-date-input-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/item-divider-date-input-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/item-divider-input-group-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/item-input-group-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/item-radio-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/item-radio-with-template-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/label-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/legend-data.js +2 -2
- package/esm2015/lib/desy-forms/interfaces/select-item-data.js +2 -2
- package/esm2015/lib/desy-modals/components/dialog/dialog.component.js +121 -121
- package/esm2015/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.js +20 -20
- package/esm2015/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.js +19 -19
- package/esm2015/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.js +19 -19
- package/esm2015/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.js +19 -19
- package/esm2015/lib/desy-modals/components/modal/modal.component.js +145 -145
- package/esm2015/lib/desy-modals/desy-modals.module.js +41 -41
- package/esm2015/lib/desy-modals/interfaces/dialog-options.js +2 -2
- package/esm2015/lib/desy-modals/interfaces/index.js +8 -8
- package/esm2015/lib/desy-modals/interfaces/modal-button-data.js +2 -2
- package/esm2015/lib/desy-modals/interfaces/modal-data.js +2 -2
- package/esm2015/lib/desy-modals/interfaces/modal-icon-data.js +2 -2
- package/esm2015/lib/desy-modals/interfaces/modal-options.js +2 -2
- package/esm2015/lib/desy-modals/interfaces/open-dialog-result.js +2 -2
- package/esm2015/lib/desy-modals/services/dialog.service.js +117 -117
- package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.js +15 -15
- package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.js +42 -42
- package/esm2015/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.js +15 -15
- package/esm2015/lib/desy-nav/components/error-summary/error-summary.component.js +46 -46
- package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.js +16 -16
- package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta.component.js +23 -23
- package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.js +16 -16
- package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.js +16 -16
- package/esm2015/lib/desy-nav/components/footer/footer.component.js +52 -52
- package/esm2015/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.js +11 -0
- package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +36 -36
- package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.js +19 -19
- package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation.component.js +29 -29
- package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.js +22 -22
- package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.js +11 -11
- package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +88 -88
- package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +34 -34
- package/esm2015/lib/desy-nav/components/header/header.component.js +66 -61
- package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.js +28 -28
- package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +68 -68
- package/esm2015/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.js +35 -35
- package/esm2015/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.js +31 -31
- package/esm2015/lib/desy-nav/components/menu-navigation/menu-navigation.component.js +568 -568
- package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.js +32 -32
- package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.js +16 -16
- package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.js +24 -24
- package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +89 -89
- package/esm2015/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.js +36 -36
- package/esm2015/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.js +14 -14
- package/esm2015/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.js +29 -29
- package/esm2015/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.js +23 -23
- package/esm2015/lib/desy-nav/components/menubar/directives/menubaritem.directive.js +37 -37
- package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +672 -672
- package/esm2015/lib/desy-nav/components/nav/nav-item/nav-item.component.js +30 -30
- package/esm2015/lib/desy-nav/components/nav/nav.component.js +105 -105
- package/esm2015/lib/desy-nav/components/notification/notification-item/notification-item.component.js +18 -18
- package/esm2015/lib/desy-nav/components/notification/notification.component.js +102 -102
- package/esm2015/lib/desy-nav/components/skip-link/skip-link.component.js +33 -33
- package/esm2015/lib/desy-nav/desy-nav.module.js +136 -133
- package/esm2015/lib/desy-nav/interfaces/breadcrumbs.data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/error-summary-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/footer-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/header-dropdown-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/header-navigation-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/header-navigation-item-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/header-offcanvas-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/header-subnav-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/index.js +20 -20
- package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-event-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menu-navigation-item-sub-item.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menu-navigation.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menu-vertical-items-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-items-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menubar-item-sub.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/menubar-item.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/nav-item-event.data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/nav-item.data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/notification-items-data.js +2 -2
- package/esm2015/lib/desy-nav/interfaces/notification-options.js +2 -2
- package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +138 -138
- package/esm2015/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.js +15 -15
- package/esm2015/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.js +14 -14
- package/esm2015/lib/desy-pagination/desy-pagination.module.js +31 -31
- package/esm2015/lib/desy-pagination/interfaces/index.js +1 -1
- package/esm2015/lib/desy-pagination/interfaces/pagination-item.data.js +2 -2
- package/esm2015/lib/desy-tables/components/table/components/table-caption.component.js +14 -14
- package/esm2015/lib/desy-tables/components/table/components/table-cell.component.js +17 -17
- package/esm2015/lib/desy-tables/components/table/components/table-header.component.js +14 -14
- package/esm2015/lib/desy-tables/components/table/components/table-row.component.js +14 -14
- package/esm2015/lib/desy-tables/components/table/table.component.js +55 -55
- package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.js +33 -33
- package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.js +14 -14
- package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.js +17 -17
- package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.js +20 -20
- package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.js +22 -22
- package/esm2015/lib/desy-tables/components/table-advanced/table-advanced.component.js +316 -316
- package/esm2015/lib/desy-tables/desy-tables.module.js +64 -64
- package/esm2015/lib/desy-tables/directives/cell.directive.js +26 -26
- package/esm2015/lib/desy-tables/directives/focus-clicked-cell.directive.js +78 -78
- package/esm2015/lib/desy-tables/directives/row.directive.js +24 -24
- package/esm2015/lib/desy-tables/interfaces/cell-data.js +2 -2
- package/esm2015/lib/desy-tables/interfaces/head-cell-data.js +7 -7
- package/esm2015/lib/desy-tables/interfaces/index.js +5 -5
- package/esm2015/lib/desy-tables/interfaces/recalculate-table-params.js +2 -2
- package/esm2015/lib/desy-tables/interfaces/row-data.js +2 -2
- package/esm2015/lib/desy-tables/interfaces/wrapper-data.js +2 -2
- package/esm2015/lib/desy-views/components/accordion/accordion-header/accordion-header.component.js +14 -14
- package/esm2015/lib/desy-views/components/accordion/accordion-item/accordion-item.component.js +43 -43
- package/esm2015/lib/desy-views/components/accordion/accordion.component.js +153 -153
- package/esm2015/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.js +31 -31
- package/esm2015/lib/desy-views/components/accordion-history/accordion-history.component.js +15 -15
- package/esm2015/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.js +14 -14
- package/esm2015/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.js +14 -14
- package/esm2015/lib/desy-views/components/alert/alert.component.js +75 -75
- package/esm2015/lib/desy-views/components/collapsible/collapsible.component.js +55 -55
- package/esm2015/lib/desy-views/components/description-list/definition/definition.component.js +15 -15
- package/esm2015/lib/desy-views/components/description-list/description-item/description-item.component.js +26 -26
- package/esm2015/lib/desy-views/components/description-list/description-list.component.js +22 -22
- package/esm2015/lib/desy-views/components/description-list/term/term.component.js +15 -15
- package/esm2015/lib/desy-views/components/details/details.component.js +20 -20
- package/esm2015/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.js +14 -14
- package/esm2015/lib/desy-views/components/item/item-content-right/item-content-right.component.js +11 -11
- package/esm2015/lib/desy-views/components/item/item-item/item-item.component.js +11 -11
- package/esm2015/lib/desy-views/components/item/item.component.js +87 -87
- package/esm2015/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.js +11 -11
- package/esm2015/lib/desy-views/components/media-object/media-object.component.js +67 -67
- package/esm2015/lib/desy-views/components/spinner/spinner.component.js +45 -45
- package/esm2015/lib/desy-views/components/status/status.component.js +58 -58
- package/esm2015/lib/desy-views/components/status-item/status-item.component.js +86 -86
- package/esm2015/lib/desy-views/components/tabs/panel/panel.component.js +15 -15
- package/esm2015/lib/desy-views/components/tabs/tab-item/tab-item.component.js +28 -28
- package/esm2015/lib/desy-views/components/tabs/tabs.component.js +150 -150
- package/esm2015/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.js +11 -11
- package/esm2015/lib/desy-views/components/tooltip/tooltip.component.js +155 -155
- package/esm2015/lib/desy-views/desy-views.module.js +108 -108
- package/esm2015/lib/desy-views/interfaces/accordion-header.data.js +2 -2
- package/esm2015/lib/desy-views/interfaces/accordion-item.data.js +2 -2
- package/esm2015/lib/desy-views/interfaces/alert-options.js +2 -2
- package/esm2015/lib/desy-views/interfaces/description-item.data.js +2 -2
- package/esm2015/lib/desy-views/interfaces/index.js +11 -11
- package/esm2015/lib/desy-views/interfaces/open-alert-result.js +2 -2
- package/esm2015/lib/desy-views/interfaces/status-data.js +2 -2
- package/esm2015/lib/desy-views/interfaces/status-icon-data.js +2 -2
- package/esm2015/lib/desy-views/interfaces/status-item-title-data.js +2 -2
- package/esm2015/lib/desy-views/interfaces/tabs-items-data.js +2 -2
- package/esm2015/lib/desy-views/interfaces/tabs-panel-data.js +2 -2
- package/esm2015/lib/desy-views/interfaces/term-definition.data.js +2 -2
- package/esm2015/lib/desy-views/services/alert.service.js +89 -89
- package/esm2015/lib/shared/components/accessibility/accessibility.component.js +29 -29
- package/esm2015/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.js +27 -27
- package/esm2015/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.js +26 -26
- package/esm2015/lib/shared/components/content-base/content-base.component.js +20 -20
- package/esm2015/lib/shared/components/index.js +6 -6
- package/esm2015/lib/shared/components/text-or-html-required/text-or-html-required.component.js +14 -14
- package/esm2015/lib/shared/decorators/desy-content-child.decorator.js +41 -41
- package/esm2015/lib/shared/decorators/desy-on-input-change.decorator.js +19 -19
- package/esm2015/lib/shared/directives/attribute-change.directive.js +43 -43
- package/esm2015/lib/shared/directives/click-outside.directive.js +35 -35
- package/esm2015/lib/shared/directives/content-change.directive.js +43 -43
- package/esm2015/lib/shared/directives/custom-inner-content.directive.js +62 -62
- package/esm2015/lib/shared/directives/inner-content.directive.js +34 -34
- package/esm2015/lib/shared/interfaces/accesibility-data.js +2 -2
- package/esm2015/lib/shared/pipes/external-href.pipe.js +28 -28
- package/esm2015/lib/shared/pipes/inner-html.pipe.js +19 -19
- package/esm2015/lib/shared/pipes/make-html-list.pipe.js +16 -16
- package/esm2015/lib/shared/shared.module.js +62 -62
- package/esm2015/lib/shared/utils/focus-utils.js +51 -51
- package/esm2015/lib/shared/utils/search-utils.js +78 -78
- package/esm2015/lib/shared/utils/string-utils.js +18 -18
- package/esm2015/public-api.js +197 -197
- package/fesm2015/desy-angular.js +9589 -9574
- package/fesm2015/desy-angular.js.map +1 -1
- package/lib/desy-angular.module.d.ts +2 -2
- package/lib/desy-buttons/components/button/button.component.d.ts +31 -31
- package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +15 -15
- package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +22 -22
- package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +12 -12
- package/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.d.ts +4 -4
- package/lib/desy-buttons/components/listbox/listbox.component.d.ts +53 -53
- package/lib/desy-buttons/components/pill/pill.component.d.ts +22 -22
- package/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.d.ts +5 -5
- package/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.d.ts +5 -5
- package/lib/desy-buttons/components/toggle/toggle.component.d.ts +17 -17
- package/lib/desy-buttons/desy-buttons.module.d.ts +2 -2
- package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +9 -9
- package/lib/desy-buttons/interfaces/listbox-label-data.d.ts +5 -5
- package/lib/desy-commons/components/content/content.component.d.ts +5 -5
- package/lib/desy-commons/components/description/description.component.d.ts +6 -6
- package/lib/desy-commons/components/divider/divider.component.d.ts +6 -6
- package/lib/desy-commons/components/icon/icon.component.d.ts +6 -6
- package/lib/desy-commons/components/title/title.component.d.ts +5 -5
- package/lib/desy-commons/desy-commons.module.d.ts +2 -2
- package/lib/desy-commons/interfaces/content-data.d.ts +5 -5
- package/lib/desy-commons/interfaces/description-data.d.ts +6 -6
- package/lib/desy-commons/interfaces/divider-data.d.ts +4 -4
- package/lib/desy-commons/interfaces/icon-data.d.ts +5 -5
- package/lib/desy-commons/interfaces/index.d.ts +5 -5
- package/lib/desy-commons/interfaces/title-data.d.ts +6 -6
- package/lib/desy-forms/components/character-count/character-count.component.d.ts +27 -27
- package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +47 -47
- package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +75 -75
- package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +21 -21
- package/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.d.ts +7 -7
- package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +4 -4
- package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +21 -21
- package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +18 -18
- package/lib/desy-forms/components/date-input/date-input.component.d.ts +55 -55
- package/lib/desy-forms/components/error-message/error-message.component.d.ts +12 -12
- package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +28 -28
- package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +6 -6
- package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +20 -20
- package/lib/desy-forms/components/form-field/form-field.component.d.ts +40 -40
- package/lib/desy-forms/components/hint/hint.component.d.ts +11 -11
- package/lib/desy-forms/components/input/input.component.d.ts +23 -23
- package/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.d.ts +8 -8
- package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +20 -20
- package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +4 -4
- package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +16 -16
- package/lib/desy-forms/components/input-group/input-group.component.d.ts +56 -56
- package/lib/desy-forms/components/label/label.component.d.ts +14 -14
- package/lib/desy-forms/components/radios/radio-item/radio-item.component.d.ts +43 -43
- package/lib/desy-forms/components/radios/radios.component.d.ts +75 -75
- package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +16 -16
- package/lib/desy-forms/components/select/option/option.component.d.ts +7 -7
- package/lib/desy-forms/components/select/option-group/option-group.component.d.ts +7 -7
- package/lib/desy-forms/components/select/select-item/select-item.component.d.ts +4 -4
- package/lib/desy-forms/components/select/select.component.d.ts +21 -21
- package/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.d.ts +2 -2
- package/lib/desy-forms/components/textarea/textarea.component.d.ts +24 -24
- package/lib/desy-forms/components/tree/interfaces/itree-item.d.ts +5 -5
- package/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.d.ts +5 -5
- package/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.d.ts +43 -43
- package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +87 -87
- package/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.d.ts +10 -10
- package/lib/desy-forms/components/tree/tree-sub/tree-sub.component.d.ts +6 -6
- package/lib/desy-forms/components/tree/tree.component.d.ts +112 -112
- package/lib/desy-forms/desy-forms.module.d.ts +2 -2
- package/lib/desy-forms/directives/condition.directive.d.ts +15 -15
- package/lib/desy-forms/interfaces/accesibility-data.d.ts +15 -15
- package/lib/desy-forms/interfaces/error-message-data.d.ts +8 -8
- package/lib/desy-forms/interfaces/fieldset-data.d.ts +10 -10
- package/lib/desy-forms/interfaces/hint-data.d.ts +7 -7
- package/lib/desy-forms/interfaces/index.d.ts +12 -12
- package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +21 -21
- package/lib/desy-forms/interfaces/item-date-input-data.d.ts +17 -17
- package/lib/desy-forms/interfaces/item-divider-date-input-data.d.ts +5 -5
- package/lib/desy-forms/interfaces/item-divider-input-group-data.d.ts +5 -5
- package/lib/desy-forms/interfaces/item-input-group-data.d.ts +23 -23
- package/lib/desy-forms/interfaces/item-radio-data.d.ts +20 -20
- package/lib/desy-forms/interfaces/item-radio-with-template-data.d.ts +5 -5
- package/lib/desy-forms/interfaces/label-data.d.ts +9 -9
- package/lib/desy-forms/interfaces/legend-data.d.ts +6 -6
- package/lib/desy-forms/interfaces/select-item-data.d.ts +8 -8
- package/lib/desy-modals/components/dialog/dialog.component.d.ts +35 -35
- package/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.d.ts +8 -8
- package/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.d.ts +7 -7
- package/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.d.ts +7 -7
- package/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.d.ts +7 -7
- package/lib/desy-modals/components/modal/modal.component.d.ts +51 -51
- package/lib/desy-modals/desy-modals.module.d.ts +2 -2
- package/lib/desy-modals/interfaces/dialog-options.d.ts +9 -9
- package/lib/desy-modals/interfaces/index.d.ts +6 -6
- package/lib/desy-modals/interfaces/modal-button-data.d.ts +20 -20
- package/lib/desy-modals/interfaces/modal-data.d.ts +5 -5
- package/lib/desy-modals/interfaces/modal-icon-data.d.ts +4 -4
- package/lib/desy-modals/interfaces/modal-options.d.ts +16 -16
- package/lib/desy-modals/interfaces/open-dialog-result.d.ts +6 -6
- package/lib/desy-modals/services/dialog.service.d.ts +14 -14
- package/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.d.ts +6 -6
- package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +18 -18
- package/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.d.ts +6 -6
- package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +20 -20
- package/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.d.ts +7 -7
- package/lib/desy-nav/components/footer/footer-meta/footer-meta.component.d.ts +10 -10
- package/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.d.ts +7 -7
- package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +8 -8
- package/lib/desy-nav/components/footer/footer.component.d.ts +27 -27
- package/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.d.ts +3 -0
- package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +12 -12
- package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +10 -10
- package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +13 -13
- package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +5 -5
- package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.d.ts +3 -3
- package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +30 -30
- package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +11 -11
- package/lib/desy-nav/components/header/header.component.d.ts +34 -32
- package/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.d.ts +15 -15
- package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +16 -16
- package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +22 -22
- package/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.d.ts +19 -19
- package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +80 -80
- package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +18 -18
- package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.d.ts +8 -8
- package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +15 -15
- package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +18 -18
- package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +23 -23
- package/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.d.ts +4 -4
- package/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.d.ts +15 -15
- package/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.d.ts +10 -10
- package/lib/desy-nav/components/menubar/directives/menubaritem.directive.d.ts +16 -16
- package/lib/desy-nav/components/menubar/menubar.component.d.ts +101 -101
- package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +17 -17
- package/lib/desy-nav/components/nav/nav.component.d.ts +20 -20
- package/lib/desy-nav/components/notification/notification-item/notification-item.component.d.ts +9 -9
- package/lib/desy-nav/components/notification/notification.component.d.ts +36 -36
- package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +13 -13
- package/lib/desy-nav/desy-nav.module.d.ts +2 -2
- package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +7 -7
- package/lib/desy-nav/interfaces/error-summary-data.d.ts +7 -7
- package/lib/desy-nav/interfaces/footer-data.d.ts +24 -24
- package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +11 -11
- package/lib/desy-nav/interfaces/header-navigation-data.d.ts +5 -5
- package/lib/desy-nav/interfaces/header-navigation-item-data.d.ts +12 -12
- package/lib/desy-nav/interfaces/header-offcanvas-data.d.ts +8 -8
- package/lib/desy-nav/interfaces/header-subnav-data.d.ts +11 -11
- package/lib/desy-nav/interfaces/index.d.ts +19 -19
- package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +13 -13
- package/lib/desy-nav/interfaces/menu-horizontal-item-event-data.d.ts +5 -5
- package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +14 -14
- package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +6 -6
- package/lib/desy-nav/interfaces/menu-navigation.d.ts +17 -17
- package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +19 -19
- package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +7 -7
- package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +16 -16
- package/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.d.ts +6 -6
- package/lib/desy-nav/interfaces/menubar-item-sub-item.d.ts +9 -9
- package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +6 -6
- package/lib/desy-nav/interfaces/menubar-item.d.ts +18 -18
- package/lib/desy-nav/interfaces/nav-item-event.data.d.ts +5 -5
- package/lib/desy-nav/interfaces/nav-item.data.d.ts +15 -15
- package/lib/desy-nav/interfaces/notification-items-data.d.ts +10 -10
- package/lib/desy-nav/interfaces/notification-options.d.ts +15 -15
- package/lib/desy-pagination/components/pagination/pagination.component.d.ts +44 -44
- package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +7 -7
- package/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.d.ts +4 -4
- package/lib/desy-pagination/desy-pagination.module.d.ts +2 -2
- package/lib/desy-pagination/interfaces/index.d.ts +1 -1
- package/lib/desy-pagination/interfaces/pagination-item.data.d.ts +4 -4
- package/lib/desy-tables/components/table/components/table-caption.component.d.ts +4 -4
- package/lib/desy-tables/components/table/components/table-cell.component.d.ts +8 -8
- package/lib/desy-tables/components/table/components/table-header.component.d.ts +5 -5
- package/lib/desy-tables/components/table/components/table-row.component.d.ts +5 -5
- package/lib/desy-tables/components/table/table.component.d.ts +24 -24
- package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +20 -20
- package/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.d.ts +5 -5
- package/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.d.ts +8 -8
- package/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.d.ts +8 -8
- package/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.d.ts +9 -9
- package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +122 -122
- package/lib/desy-tables/desy-tables.module.d.ts +2 -2
- package/lib/desy-tables/directives/cell.directive.d.ts +14 -14
- package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +10 -10
- package/lib/desy-tables/directives/row.directive.d.ts +16 -16
- package/lib/desy-tables/interfaces/cell-data.d.ts +9 -9
- package/lib/desy-tables/interfaces/head-cell-data.d.ts +18 -18
- package/lib/desy-tables/interfaces/index.d.ts +4 -4
- package/lib/desy-tables/interfaces/recalculate-table-params.d.ts +11 -11
- package/lib/desy-tables/interfaces/row-data.d.ts +6 -6
- package/lib/desy-tables/interfaces/wrapper-data.d.ts +4 -4
- package/lib/desy-views/components/accordion/accordion-header/accordion-header.component.d.ts +5 -5
- package/lib/desy-views/components/accordion/accordion-item/accordion-item.component.d.ts +17 -17
- package/lib/desy-views/components/accordion/accordion.component.d.ts +48 -48
- package/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.d.ts +9 -9
- package/lib/desy-views/components/accordion-history/accordion-history.component.d.ts +6 -6
- package/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.d.ts +4 -4
- package/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.d.ts +4 -4
- package/lib/desy-views/components/alert/alert.component.d.ts +29 -29
- package/lib/desy-views/components/collapsible/collapsible.component.d.ts +14 -14
- package/lib/desy-views/components/description-list/definition/definition.component.d.ts +6 -6
- package/lib/desy-views/components/description-list/description-item/description-item.component.d.ts +9 -9
- package/lib/desy-views/components/description-list/description-list.component.d.ts +11 -11
- package/lib/desy-views/components/description-list/term/term.component.d.ts +6 -6
- package/lib/desy-views/components/details/details.component.d.ts +10 -10
- package/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.d.ts +5 -5
- package/lib/desy-views/components/item/item-content-right/item-content-right.component.d.ts +3 -3
- package/lib/desy-views/components/item/item-item/item-item.component.d.ts +3 -3
- package/lib/desy-views/components/item/item.component.d.ts +37 -37
- package/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.d.ts +3 -3
- package/lib/desy-views/components/media-object/media-object.component.d.ts +33 -33
- package/lib/desy-views/components/spinner/spinner.component.d.ts +21 -21
- package/lib/desy-views/components/status/status.component.d.ts +25 -25
- package/lib/desy-views/components/status-item/status-item.component.d.ts +44 -44
- package/lib/desy-views/components/tabs/panel/panel.component.d.ts +6 -6
- package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +12 -12
- package/lib/desy-views/components/tabs/tabs.component.d.ts +48 -48
- package/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.d.ts +3 -3
- package/lib/desy-views/components/tooltip/tooltip.component.d.ts +48 -48
- package/lib/desy-views/desy-views.module.d.ts +2 -2
- package/lib/desy-views/interfaces/accordion-header.data.d.ts +5 -5
- package/lib/desy-views/interfaces/accordion-item.data.d.ts +10 -10
- package/lib/desy-views/interfaces/alert-options.d.ts +8 -8
- package/lib/desy-views/interfaces/description-item.data.d.ts +8 -8
- package/lib/desy-views/interfaces/index.d.ts +10 -10
- package/lib/desy-views/interfaces/open-alert-result.d.ts +6 -6
- package/lib/desy-views/interfaces/status-data.d.ts +8 -8
- package/lib/desy-views/interfaces/status-icon-data.d.ts +4 -4
- package/lib/desy-views/interfaces/status-item-title-data.d.ts +5 -5
- package/lib/desy-views/interfaces/tabs-items-data.d.ts +9 -9
- package/lib/desy-views/interfaces/tabs-panel-data.d.ts +8 -8
- package/lib/desy-views/interfaces/term-definition.data.d.ts +7 -7
- package/lib/desy-views/services/alert.service.d.ts +14 -14
- package/lib/shared/components/accessibility/accessibility.component.d.ts +20 -20
- package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +26 -26
- package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +23 -23
- package/lib/shared/components/content-base/content-base.component.d.ts +9 -9
- package/lib/shared/components/index.d.ts +5 -5
- package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +8 -8
- package/lib/shared/decorators/desy-content-child.decorator.d.ts +15 -15
- package/lib/shared/decorators/desy-on-input-change.decorator.d.ts +5 -5
- package/lib/shared/directives/attribute-change.directive.d.ts +10 -10
- package/lib/shared/directives/click-outside.directive.d.ts +9 -9
- package/lib/shared/directives/content-change.directive.d.ts +19 -19
- package/lib/shared/directives/custom-inner-content.directive.d.ts +22 -22
- package/lib/shared/directives/inner-content.directive.d.ts +9 -9
- package/lib/shared/interfaces/accesibility-data.d.ts +16 -16
- package/lib/shared/pipes/external-href.pipe.d.ts +8 -8
- package/lib/shared/pipes/inner-html.pipe.d.ts +7 -7
- package/lib/shared/pipes/make-html-list.pipe.d.ts +4 -4
- package/lib/shared/shared.module.d.ts +2 -2
- package/lib/shared/utils/focus-utils.d.ts +4 -4
- package/lib/shared/utils/search-utils.d.ts +14 -14
- package/lib/shared/utils/string-utils.d.ts +10 -10
- package/package.json +1 -1
- package/public-api.d.ts +168 -168
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/desy-angular/src/lib/shared/components/accessibility/accessibility.component.ts","../../../projects/desy-angular/src/lib/shared/components/content-base/content-base.component.ts","../../../projects/desy-angular/src/lib/shared/components/text-or-html-required/text-or-html-required.component.ts","../../../projects/desy-angular/src/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.ts","../../../projects/desy-angular/src/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/button/button.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/button-loader/button-loader.component.ts","../../../projects/desy-angular/src/lib/shared/utils/focus-utils.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/dropdown/dropdown.component.ts","../../../projects/desy-angular/src/lib/shared/utils/string-utils.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.ts","../../../projects/desy-angular/src/lib/shared/decorators/desy-content-child.decorator.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/pill/pill.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/content/content.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/description/description.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/icon/icon.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/title/title.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/hint/hint.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/label/label.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/error-message/error-message.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/fieldset/legend/legend.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/fieldset/fieldset.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/form-field/form-field.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/textarea/textarea.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/character-count/character-count.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input/input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/select-item/select-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/option/option.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/option-group/option-group.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/select.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/file-upload/file-upload.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.ts","../../../projects/desy-angular/src/lib/shared/decorators/desy-on-input-change.decorator.ts","../../../projects/desy-angular/src/lib/shared/pipes/make-html-list.pipe.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/radios/radio-item/radio-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/radios/radios.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/checkboxes/checkboxes.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/search-bar/search-bar.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree-sub/tree-sub.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/interfaces/itree-item.ts","../../../projects/desy-angular/src/lib/shared/utils/search-utils.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree-item/tree-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree.component.ts","../../../projects/desy-angular/src/lib/desy-forms/directives/condition.directive.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/dialog/dialog.component.ts","../../../projects/desy-angular/src/lib/desy-modals/services/dialog.service.ts","../../../projects/desy-angular/src/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-navigation/header-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/nav/nav-item/nav-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/nav/nav.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-subnav/header-subnav.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/skip-link/skip-link.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-meta/footer-meta.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/error-summary/error-summary.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/directives/menubaritem.directive.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/menubar.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/notification/notification-item/notification-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/notification/notification.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-header.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-caption.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-row.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/table.component.ts","../../../projects/desy-angular/src/lib/desy-tables/interfaces/head-cell-data.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/cell.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/row.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/table-advanced.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/alert/alert.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion-header/accordion-header.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion-history/accordion-history.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/spinner/spinner.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/details/details.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/term/term.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/definition/definition.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/description-item/description-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/description-list.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/collapsible/collapsible.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-content-right/item-content-right.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-item/item-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/media-object/media-object.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/status/status.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/status-item/status-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/panel/panel.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/tab-item/tab-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/tabs.component.ts","../../../projects/desy-angular/src/lib/desy-views/services/alert.service.ts","../../../projects/desy-angular/src/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.ts","../../../projects/desy-angular/src/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.ts","../../../projects/desy-angular/src/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.ts","../../../projects/desy-angular/src/lib/desy-pagination/components/pagination/pagination.component.ts","../../../projects/desy-angular/src/lib/shared/pipes/inner-html.pipe.ts","../../../projects/desy-angular/src/lib/shared/pipes/external-href.pipe.ts","../../../projects/desy-angular/src/lib/shared/directives/attribute-change.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/inner-content.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/click-outside.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/content-change.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/custom-inner-content.directive.ts","../../../projects/desy-angular/src/lib/shared/shared.module.ts","../../../projects/desy-angular/src/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/divider/divider.component.ts","../../../projects/desy-angular/src/lib/desy-commons/desy-commons.module.ts","../../../projects/desy-angular/src/lib/desy-forms/desy-forms.module.ts","../../../projects/desy-angular/src/lib/desy-views/components/tooltip/tooltip.component.ts","../../../projects/desy-angular/src/lib/desy-views/desy-views.module.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/toggle/toggle.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/desy-buttons.module.ts","../../../projects/desy-angular/src/lib/desy-modals/desy-modals.module.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-navigation/menu-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/desy-nav.module.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/focus-clicked-cell.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/desy-tables.module.ts","../../../projects/desy-angular/src/lib/desy-pagination/desy-pagination.module.ts","../../../projects/desy-angular/src/lib/desy-angular.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","push","__values","o","s","m","__read","ar","error","__spread","concat","AccessibilityComponent","type","Component","args","selector","template","Input","ContentBaseComponent","_super","getContent","content","ViewChild","static","TextOrHtmlRequiredComponent","AccessibilityAndTextOrHtmlRequiredComponent","AccessibilityAndContentRequiredComponent","ButtonComponent","_this","hostTabIndex","clickEvent","EventEmitter","avoidingDoubleClick","onClick","event","preventDoubleClick","preventDefault","emit","setTimeout","getElement","element","toLocaleLowerCase","href","ELEMENT_A","ELEMENT_BUTTON","getClassNames","classNames","classes","disabled","isDisabled","get","ELEMENT_INPUT","HostBinding","Output","ButtonLoaderComponent","getSpinnerText","spinnerText","state","STATE_LOADING","loaderText","DEFAULT_LOADER_TEXT","getSuccessText","successText","STATE_SUCCESS","DEFAULT_SUCCESS_TEXT","FocusUtils","getFirstFocusableElement","parent","focusableList","selectionableElements","querySelectorAll","document","firstFocusable","item","isFocusable","tabIndex","getAttribute","nodeName","rel","DropdownComponent","isOpen","clickOutsideEnabled","ngOnInit","contentTooltip","dropdownContent","nativeElement","style","display","tippyProperties","placement","inlinePositioning","allowHTML","trigger","hideOnClick","interactive","arrow","offset","theme","plugins","name","defaultValue","fn","instance","onCreate","popper","addEventListener","props","hideOnPopperBlur","relatedTarget","contains","hide","_a","onKeyDown","KEY_CODE_ESC","onShow","onHide","removeEventListener","role","aria","onShown","focus","ngOnChanges","changes","classesContainer","setOpen","read","ElementRef","StringUtils","escapeHtml","replace","RegExp","ListboxLabelComponent","ListboxItemComponent","itemChange","DesyContentChild","options","propertyKey","privateKeyName","privateQueryListKeyName","set","queryList","QueryList","subscribe","previousValue","first","onSetCallbackName","onDeleteCallbackName","notifyOnChanges","ListboxComponent","itemsChange","activeItemChange","isListVisible","listboxButtonElement","listboxButton","listboxContent","onListShow","bind","onHidden","onListClose","itemComponentList","itemComponentSubscriptions","forEach","unsubscribe","itemList","subscription","checkActiveItems","items","ngDoCheck","getActiveItemsData","map","index","active","filter","activeItems","hasActiveItemChange","lastActiveItems","isMultiselectable","newItem","this_1","findIndex","activeItems_1","activeItems_1_1","doesChangeButtonText","activeItemOption","listboxOptions","find","buttonContentHtml","innerHTML","html","listboxList","onListFocus","activeItemsData","activeElem","getElementById","getItemId","currentFocusIndex","selectItem","console","warn","moveFocus","position","onSpace","getIdPrefix","idPrefix","id","itemId","hasLabel","labelComponent","getLabelContent","text","ViewChildren","ContentChildren","PillComponent","getType","TYPE_A","TYPE_SPAN","TYPE_BUTTON","ContentComponent","DescriptionComponent","IconComponent","TitleComponent","HintComponent","changeDetectorRef","detectChanges","ChangeDetectorRef","LabelComponent","ErrorMessageComponent","LegendComponent","FieldsetComponent","legendComponent","contentComponent","FormFieldComponent","onChange","onTouch","onblur","onInput","registerOnChange","registerOnTouched","setDisabledState","writeValue","getHintId","hasHint","getErrorId","hasErrorsMessage","hasLabelComponent","labelText","labelRef","labelData","hasHintComponent","hintText","hintRef","hintData","hasErrorMessageComponent","errorMessageText","errorMessageRef","errorMessageData","hintComponent","errorMessageComponent","HostListener","TextareaComponent","cfg","inputTransform","cfgr","formGroupClasses","getRows","rows","DEFAULT_ROWS","ensureText","registerInputTransform","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","textareaElement","CharacterCountComponent","ngAfterViewInit","textarea","maxlength","calculateLenght","displayCountMessage","threshold","substring","remaining","words","match","maxwords","lastIndexOf","countbbdd","specialChars","InputComponent","attributes","setAttributes","input","attr","keys","setAttribute","errorId","SelectItemComponent","OptionComponent","OptionGroupComponent","SelectComponent","contentInit","ngAfterContentInit","getItems","itemSelected_1","selected","itemComponents","toArray","isItemSelected","isOptionGroup","FileUploadComponent","InputGroupItemComponent","DesyOnInputChange","callbackName","MakeHtmlListPipe","transform","valueForEmpty","filteredList","join","Pipe","InputGroupInputComponent","isSelect","valueChange","InputGroupSelectComponent","selectItemComponentList","InputGroupDividerComponent","divider","dividerContent","InputGroupComponent","controlContainer","ngAfterViewChecked","getItemName","onExternalChange","onInternalChange","itemValue","itemName","overrideFieldsetParams","fieldset","caller","innerHtml","describedBy","itemsComponents","getItemLabelRef","getItemLabelData","hasFieldset","hasFieldsetComponent","hasLegendComponent","legendRef","fieldsetData","legendData","legendText","fieldsetComponent","namePrefix","getItemSelectOptions","selectItems","getItemDividerTemplate","getItemDividerHtml","isSelectItem","hasSelectItems","hasItemLabel","ControlContainer","Optional","RadioItemComponent","radios","checkedChange","Error","markForUpdateCheckboxIds","ngOnDestroy","checked","lastChecked","isInit","setChecked","updateValueFromRadioItems","undefined","lastValue","radioId","getItemHintId","hintComponentList","hasChanged","isInputChecked","inputElement","updateRadioId","labelComponentList","for","hasDividers","hasError","getNameRadio","getDescribedBy","animations","opacity","transition","animate","query","animateChild","optional","RadiosComponent","Host","conditionalContentList","nextValue","updateChekboxIds","updateItems_1","updateRadioItemsChecked","checkboxItems","getRadioItems","onIdPrefixChange","propagateNewIdPrefixValue","onNameChange","overrideHintParams","overrideErrorMessageParams","itemsUpdated","checkedItem","hint","errorMessage","onDeleteHint","onDeleteErrorMessage","radioComponentItems","radioComponentItems2","CheckboxItemComponent","checkboxes","indeterminateChange","updateValueFromCheckboxItems","indeterminateChecked","lastIndeterminate","setIndeterminateChecked","checkboxId","isIndeterminate","readOnly","indeterminate","setIndeterminateStatus","getValue","updateCheckboxId","getNameCheckbox","CheckboxesComponent","updateCheckboxItemsChecked","getCheckboxItems","itemChecked","isArray","checkboxComponentItems","checkboxComponentItems2","DateInputItemComponent","DateInputDayComponent","DateInputMonthComponent","DateInputYearComponent","DateInputDividerComponent","DateInputComponent","initDefaultItems","newVal","assign","getItemLabel","toUpperCase","dateInputItemComponents","defaultItems","SearchBarComponent","hasButton","button","hasButtonClass","TreeSubComponent","ITreeItem","SearchUtils","containsAnyWordFrom","fullWord","includes","simplifiedTarget","getSimplifiedString","split","word","str","res","toLocaleUpperCase","trim","TreeCheckboxComponent","changeDetector","indeterminateCheckedChange","_hasInit","onDescribedByChange","onIdChange","overrideLabelParams","_lastIndeterminate","matchesText","checkboxText","contentWrapper","textContent","getItemDescribedBy","ariaDescribedBy","itemDescribedBy","TreeItemComponent","checkedChangeForTree","expandedChange","treeItemKey","generateStaticItemKey","allParentsExpanded","inheritedMatchesSearch","quitFocus","isFocus","isHover","_matchesValidText","propName","sub","refreshAllParentsExpandedRecursive","expanded","inheritedExpandedFirstLevel","expandSub","checkbox","handleItemFocus","setCheckedAutomaticallyDependingOnChildren","areAllChildrenChecked","hasChildrenCheckedOrIndeterminate","handleCheckboxChange","handleIndeterminateCheckedChange","condition","handleItemHover","handleArrowUp","nextElement","currentItem","handleHome","handleEnd","handleArrowDown","handleArrowRight","handleArrowLeft","subLevel","ignoreInTree","emitEvent","inheritedDecoupleChildFromParent","setSubLevel","setOrderRecursively","order","orderInTree","newOrder","setDefaultId","defaultId","setDefaultIdRecursive","getId","isHidden","areAllChildrenHidden","child","matches","itemText","hiddenWrapper","getKey","getParentKey","parentKey","parentElement","tagName","isActive","_treeItemKeySuffix","TreeComponent","expandedFirstLevel","decoupleChildFromParent","disableDefaultSearch","searchMatchValuesChange","rootItems","_itemListCheckedSubscriptions","_itemListQuitFocusSubscriptions","_alreadyConfiguringItems","clearSubscriptions","_itemListSubscription","_b","_allItemListSubscription","configureAllItems","updateValueFromItems","originItem","getAllItemsInOrder","handleItemQuitFocus","focusableItems","currentSubLevel_1","currentItemIndex","slice","reverse","onSearch","searchMatchValues","allItems","isValueChange","parentName","inheritedDescribedBy","getDescribedByForItems","valueList","checkedSubscription","quitFocusSubscription","setErrorInItems","buildTree","onSearchMatchValuesChange","overrideSearchBarParams","searchbar","defaultOnChange","itemMap","inheritedHasError","subscriptionList","splice","list","sort","a","descendants","searchBarComponent","ConditionDirective","templateRef","conditionalHtml","_c","Directive","TemplateRef","TreeItemsGeneratorComponent","viewContainerRef","createEmbeddedView","changeDetection","ChangeDetectionStrategy","OnPush","ViewContainerRef","ModalButtonPrimaryComponent","ModalButtonSecondaryComponent","ModalButtonLoaderPrimaryComponent","ModalButtonLoaderSecondaryComponent","ModalComponent","closeModal","clickButton","hasIconContent","descriptionIsHtml","descriptionIsEmpty","closeDialog","iconComponent","icon","checkDescriptionContent","childs","childNodes","hasHtml","hasContent","nodeType","Node","TEXT_NODE","ELEMENT_NODE","CDATA_SECTION_NODE","clickButtonEmit","handleIconContentEmpty","isEmpty","getTitleClasses","titleComponent","title","getDescriptionClasses","descriptionComponent","description","getPrimaryItems","primaryButtonComponents","itemsPrimary","getSecondaryItems","secondaryButtonComponents","itemsSecondary","getPrimaryLoaderItems","primaryButtonLoaderComponents","itemsLoaderPrimary","getSecondaryLoaderItems","secondaryButtonLoaderComponents","itemsLoaderSecondary","numDialogsOpened","DialogComponent","cdRef","focusTrapFactory","factoryResolver","activeChange","lastActiveState","focusTrapWrapper","handleActiveState","callerType","factory","resolveComponentFactory","component","container","createComponent","onCallerCreationCallback","children","childElem","dismiss","onKeyUp","stopPropagation","focusTrap","focusElem_1","classList","add","DIALOG_OPEN_CLASS","remove","removeAttribute","focusInitialElement","destroy","focusOnClose","handleClickOutside","dismissOnBackdrop","ConfigurableFocusTrapFactory","ComponentFactoryResolver","DialogService","defaultInjector","appRef","openDialog","dialogOptions","dialog","createDialog","Type","initModal","ComponentRef","onCloseDialog","rootViewContainer","attachView","hostView","componentElement","rootNodes","appendChild","modalRef","modalOptions","isDismissible","subscription_1","Injectable","providedIn","Injector","ApplicationRef","BreadcrumbsItemComponent","BreadcrumbsComponent","location","getLength","itemsLength","hasBackButton","goBack","back","getItemList","Location","HeaderOffcanvasCloseButtonComponent","HeaderOffcanvasButtonComponent","openOffcanvas","handleClick","HeaderOffcanvasComponent","dialogService","hostClass","close","open","offcanvasContent","elementToFocus","setHostClass","bindButton","ariaModal","ariaLabelledBy","closeButton","HeaderNavigationItemComponent","HeaderNavigationComponent","prefix","suffix","NavItemComponent","NavComponent","hasNav","itemsActiveChange","movePrevious","currentIndex","nextIndex","isFocusableItem","itemElem","moveNext","simulateClick","click","HeaderSubnavComponent","hasSubnavItems","nav","overrideNavParams","ariaLabel","HeaderDropdownComponent","SkipLinkComponent","HeaderComponent","overrideSkipLinkParams","skiplinkComponent","overrideNavigationParams","navigationComponent","subnavComponent","dropdownComponent","offcanvasComponent","FooterNavigationItemComponent","FooterNavigationComponent","FooterMetaItemComponent","FooterMetaComponent","FooterComponent","getNavigationItems","navItems","navigation","getNavigationItemItems","getMetaItems","meta","getMetaContent","metaComponent","ErrorSummaryItemComponent","ErrorSummaryComponent","getErrorItemList","errorItemList","errorComponentList","errorList","lastErrorItemCount","MenuHorizontalItemComponent","MenuHorizontalComponent","MenuVerticalItemSubItemComponent","MenuVerticalItemSubComponent","MenuVerticalItemComponent","subComponent","MenuVerticalComponent","getItemHtml","getSubItemId","itemIndex","subItemIndex","subItemId","getItemSub","subItem","getSubItems","subItems","MenubaritemDirective","elementRef","contentChanged","contentHasBeenChecked","ngAfterContentChecked","popupMenu","lastPopupMenu","popupMenuItems","lastPopupMenuItems","link","lastLink","itemContentWrapper","lastItemContentWrapper","ContentChild","MenubarSubsubitemComponent","MenubarSubitemComponent","MenubarItemComponent","MenubarLabelComponent","MenubarComponent","activeSubItemChange","viewInit","currentFocusItemIndex","roleData","ariaLabelData","ariaDescribedbyData","ariaLabelledbyData","ariaHiddenData","ariaHidden","ariaDisabledData","ariaDisabled","ariaControlsData","ariaControls","ariaCurrentData","ariaCurrent","ariaLiveData","ariaLive","ariaExpandedData","ariaExpanded","ariaErrormessageData","ariaErrorMessage","ariaHaspopupData","ariaHasPopup","ariaModalData","checkChanges","menuItems","menuData","itemData","currentFocusSubItemIndex","currentFocusSubSubItemIndex","menuItem","checkRequired","lastCurrentFocusItemIndex","isItemFocusable","handleMenuFocusIn","isFocused","handleMenuFocusOut","menubar","closeMenu","handleMenuItemClick","hasPopupMenu","openMenu","activateMenuItem","handleMenuItemKeydown","focusFirstSubItem","focusNextAvailableItem","focusLastSubItem","focusFirstItem","focusLastItem","isPrintableChar","focusItemByFirstChar","handleMenuItemMouseOver","focusItem","handlePopupMenuItemClick","subSubItemIndex","activatePopupMenuItem","handlePopupMenuItemKeydown","currentSubIndex","currentSubSubIndex","mustCloseAfterSelectPopupItem","focusNextAvailableSubItem","focusSubItemByFirstChar","handlePopupMenuItemMouseOver","focusSubItem","getItemSubitems","subSubItems","getSubItemSubitems","wasOpened","getMenuDataIndex","menuDataIndex","hover","hasFocus","activeElement","fromItemIndex","nextItem","char","itemContents","foundIndex","substr","toLowerCase","elem","fromItemSubIndex","fromItemSubSubIndex","allSubItemsChecked","nextSubIndex","nextSubSubIndex","nextIndexes","getNextSubItemIndexes","subIndex","subSubIndex","isSubItemFocusable","firstSubSubItem","lastItemIndex","lastItem","lastSubSubItem","foundSubIndex","foundSubSubIndex","checkNextSubItem","nextSubItemItems","getLabelRef","getPopupStyle","rect","getBoundingClientRect","top","height","left","zIndex","parentId","getSubSubItemAriaChecked","subsubitem","ariaChecked","NotificationItemComponent","NotificationComponent","isOpenChange","isDismissing","displayDefaultIcon","itemCompontents","handleIconEmpty","empty","TableCellComponent","TableHeaderComponent","cells","TableCaptionComponent","TableRowComponent","OrderBy","TableComponent","getCaptionClass","captionComponent","captionClasses","getHeaderCells","headerCells","headerComponent","head","rowComponentList","getRowCells","row","TableAdvancedSelectComponent","TableAdvancedHeaderCellComponent","selectComponent","TableAdvancedHeaderComponent","TableAdvancedRowCellComponent","TableAdvancedRowComponent","cellsList","CellDirective","RowDirective","getCell","column","contentCells","cell","columnIndex","TableAdvancedComponent","el","rowsChange","rowsChecked","recalculateTable","orderByType","elemntsFocus","querySelector","recalculateVisibleElements","recalculateParams","buildRecalculateParams","observers","markForCheck","visibleRows","rowData","filterRows","sortRows","desyRow","params","filters","headerCell","headerCellIndex","hasFilter","activeFilter","filterText","valueFilter","hasSelect","activeSelect","valueSelect","orderByColumnIndex","orderBy","none","hasFilters","getVisibleRows","getIdHeader","getIdRowCheckbox","getIdHeaderFilter","getIdHeaderSelect","getStringOrderBy","asc","getSelectForItem","getContentComponent","notifyCheckedChange","uncheckAll","mustEmit","rowChecks","handleInputSearch","filteredRows","handleSortByColumn","cellIndex","getNextDirection","sortedRows","columnIndex_1","isAsc_1","compareCellContent","isAsc","aComparable","cleanCurrency","bComparable","isNaN","localeCompare","sensitivity","ignorePunctuation","numeric","txt","test","selectFilter","AlertComponent","hasViewinit","createdCallerFromType","_active","focusFirst","focusElem","alertWrapper","AccordionHeaderComponent","AccordionItemShowButtonComponent","AccordionItemHideButtonComponent","AccordionItemComponent","openChange","showHeaderButton","hideHeaderButton","AccordionComponent","showAll","changeAll","isChange","toggleItem","allowToggle","newOpenValue","allowMultiple","it","wasOpen","itemSelectors","focusNextItem","focusedItem","selectors","focusPreviousItem","headingComponent","heading","getItemHeader","getItemContent","AccordionHistoryItemComponent","showButton","hideButton","AccordionHistoryComponent","SpinnerComponent","DetailsComponent","TermComponent","DefinitionComponent","DescriptionItemComponent","term","definition","DescriptionListComponent","CollapsibleComponent","toggleOpen","show","ItemContentRightComponent","ItemContentBottomComponent","ItemItemComponent","ItemComponent","progressInterval","setInterval","checkClasses","clearInterval","getTitle","getIcon","contentBottomComponent","contentRightComponent","MediaObjectFigureComponent","MediaObjectComponent","center","idData","tabindexData","tabindex","mediaObjectFigureComponent","StatusComponent","StatusItemComponent","statusComponent","PanelComponent","TabItemComponent","panelComponent","TabsComponent","currentTab","selectTab","getItemPanel","tab","panel","currentPanel","tabSrOnly","tabSelectorContentWrapper","focusFirstTab","tabSelectors","focusLastTab","enabledTabs","focusNextTab","focusedTab","nextTab","focusPreviousTab","previousTab","getPanelContent","AlertService","openAlert","alertOptions","alert","createAlert","initNotification","closeAlert","onCloseAlert","place","notificationRef","TooltipContentComponent","PaginationItemPerPageComponent","PaginationListboxLabelComponent","PaginationComponent","currentPage","currentPageChange","defaultText","previousIcon","nextIcon","itemsPerPage","listboxItems","itemActive_1","nPages","Math","ceil","totalItems","previousText","nextText","buildPages","getSuffix","page","getLastItemNumber","pageIndex","min","routerLink","getButtonId","changePage","current","previous","getActiveItemText","getListboxLabel","listboxLabel","getItemsPerPage","changeItemsPerPage","newValue","InnerHtmlPipe","sanitizer","sanitize","SecurityContext","HTML","DomSanitizer","ExternalHrefPipe","AttributeChangeDirective","desyAttributeChange","desyAttributeChangeMutation","MutationObserver","mutations","mutation","attributesToCheck","attributeName","observe","childList","characterData","subtree","disconnect","InnerContentDirective","deleteContentIfEmpty","isHtml","innerText","ClickOutsideDirective","hostElementRef","clickOutside","desyClickOutsideElem","ContentChangeDirective","observeProperties","desyContentChange","desyContentChangeMutation","CustomInnerContentDirective","resolver","injector","clear","desyCustomInnerContent","tmpWrapper","createElement","nodeList_1","node","componentRef","textNode","createTextNode","SharedModule","NgModule","declarations","imports","CommonModule","exports","RouterModule","TemplateDrivenWrapperComponent","NgForm","DividerComponent","DesyCommonsModule","NgxTippyModule","DesyFormsModule","FormsModule","ReactiveFormsModule","TooltipComponent","hasIconComponentContent","tooltipContent","complex","getIdButton","getIdTooltip","handleEmptyContent","handleEmptyIconContent","getMainContent","getIconContent","tooltipContentComponent","DesyViewsModule","ToggleOffStateComponent","ToggleOnStateComponent","ToggleComponent","pressedChange","pressed","contentTemplateOnState","contentTemplateOffState","DesyButtonsModule","DesyModalsModule","A11yModule","MenuNavigationSubitemComponent","MenuNavigationItemComponent","MenuNavigationComponent","menunavigation","DesyNavModule","FocusClickedCellDirective","offsetParent","elemntsFocus_1","elemntsFocus_1_1","activeTabindex","manageArrows","code","tr","parentNode","nextElementSibling","previousElementSibling","inactiveTabindex","mynode","otherNode","isEqualNode","DesyTablesModule","DesyPaginationModule","DesyAngularModule"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\r\n\r\n/**\r\n * componente para heredar los atributos de accesibilidad\r\n */\r\n@Component({\r\n selector: 'desy-accessibility',\r\n template: '<div></div>'\r\n})\r\nexport class AccessibilityComponent implements AccesibilityData {\r\n @Input() role: string;\r\n @Input() ariaLabel: string;\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() ariaHidden: string;\r\n @Input() ariaDisabled: string;\r\n @Input() ariaControls: string;\r\n @Input() ariaCurrent: string;\r\n @Input() ariaLive: string;\r\n @Input() ariaExpanded: string;\r\n @Input() ariaErrorMessage: string;\r\n @Input() ariaHasPopup: string;\r\n @Input() ariaModal: string;\r\n @Input() tabindex: string;\r\n\r\n /*\r\n Copiar para facilitar el uso por defecto\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n */\r\n}\r\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\r\nimport {AccessibilityComponent} from '../accessibility/accessibility.component';\r\n/**\r\n * Componente base para proyectar contenido\r\n */\r\n@Component({\r\n selector: 'desy-content-base',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ContentBaseComponent extends AccessibilityComponent {\r\n\r\n @ViewChild('contentTemplate', { static: true }) private content: TemplateRef<any>;\r\n\r\n public getContent(): TemplateRef<any> {\r\n return this.content;\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'desy-text-or-html-required',\r\n template: '<div></div>'\r\n})\r\nexport class TextOrHtmlRequiredComponent {\r\n\r\n /***\r\n * componente base para el comportamiento de texto o html required - YA NO ES REQUIRIDO\r\n * \r\n **/\r\n\r\n @Input() text: string;\r\n @Input() html: string;\r\n\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\r\nimport { TextOrHtmlRequiredComponent } from '../text-or-html-required/text-or-html-required.component';\r\n\r\n@Component({\r\n selector: 'desy-accessibility-and-text-or-html-required',\r\n template: '<div></div>'\r\n})\r\nexport class AccessibilityAndTextOrHtmlRequiredComponent extends TextOrHtmlRequiredComponent implements AccesibilityData {\r\n\r\n /**\r\n * componente para heredar los atributos de accesibilidad y\r\n * el texto o html required - YA NO ES REQUIERIDO\r\n * \r\n * \r\n */\r\n\r\n // Atributos de accesibilidad\r\n @Input() role: string;\r\n @Input() ariaLabel: string;\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() ariaHidden: string;\r\n @Input() ariaDisabled: string;\r\n @Input() ariaControls: string;\r\n @Input() ariaCurrent: string;\r\n @Input() ariaLive: string;\r\n @Input() ariaExpanded: string;\r\n @Input() ariaErrorMessage: string;\r\n @Input() ariaHasPopup: string;\r\n @Input() tabindex: string;\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\r\n\r\n@Component({\r\n selector: 'desy-accessibility-and-content-required',\r\n template: '<div></div>'\r\n})\r\nexport class AccessibilityAndContentRequiredComponent implements AccesibilityData {\r\n\r\n /**\r\n * componente para heredar los atributos de accesibilidad y\r\n * el content required\r\n *\r\n * si en el componente que extiende de este, se implementa el onInit o Onchanges,\r\n * habra que incluir la llamada al a funcion contentRequiredFunction\r\n *\r\n */\r\n @Input() html: string;\r\n @Input() text: string;\r\n\r\n // Atributos de accesibilidad\r\n @Input() role: string;\r\n @Input() ariaLabel: string;\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() ariaHidden: string;\r\n @Input() ariaDisabled: string;\r\n @Input() ariaControls: string;\r\n @Input() ariaCurrent: string;\r\n @Input() ariaLive: string;\r\n @Input() ariaExpanded: string;\r\n @Input() ariaErrorMessage: string;\r\n @Input() ariaHasPopup: string;\r\n @Input() tabindex: string;\r\n\r\n}\r\n","import {Component, EventEmitter, HostBinding, Input, Output} from '@angular/core';\r\nimport { AccessibilityComponent, ContentBaseComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-button',\r\n templateUrl: './button.component.html'\r\n})\r\nexport class ButtonComponent extends ContentBaseComponent {\r\n\r\n public static readonly ELEMENT_A: string = 'a';\r\n public static readonly ELEMENT_BUTTON: string = 'button';\r\n public static readonly ELEMENT_INPUT: string = 'input';\r\n\r\n\r\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() html: string;\r\n @Input() text: string;\r\n\r\n @Input() element: string; // 'a', 'button' o 'input'\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() value: any;\r\n @Input() disabled: boolean;\r\n @Input() href: string;\r\n @Input() target: string;\r\n @Input() preventDoubleClick: boolean;\r\n\r\n @Input() routerLink: string|any[];\r\n @Input() routerLinkActiveClasses: string|string[];\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n avoidingDoubleClick = false;\r\n\r\n onClick(event: any): void {\r\n if (this.preventDoubleClick) {\r\n if (!this.avoidingDoubleClick){\r\n this.avoidingDoubleClick = true;\r\n this.clickEvent.emit(event);\r\n setTimeout(() => {\r\n this.avoidingDoubleClick = false;\r\n }, 1000);\r\n } else {\r\n event.preventDefault(); // evitamos propagar el evento por ejemplo un submit en un formulario\r\n }\r\n } else {\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n getElement(): string {\r\n let element: string;\r\n if (this.element) {\r\n element = this.element.toLocaleLowerCase();\r\n } else {\r\n if (this.href) {\r\n element = ButtonComponent.ELEMENT_A;\r\n } else {\r\n element = ButtonComponent.ELEMENT_BUTTON;\r\n }\r\n }\r\n return element;\r\n }\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-button';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n if (this.disabled) {\r\n classNames += ' c-button--disabled';\r\n }\r\n return classNames;\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.disabled ? true : null;\r\n }\r\n\r\n get staticElementTypeA(): string {\r\n return ButtonComponent.ELEMENT_A;\r\n }\r\n\r\n get staticElementTypeButton(): string {\r\n return ButtonComponent.ELEMENT_BUTTON;\r\n }\r\n\r\n get staticElementTypeInput(): string {\r\n return ButtonComponent.ELEMENT_INPUT;\r\n }\r\n}\r\n","import {Component, HostBinding, Input} from '@angular/core';\r\nimport { ButtonComponent } from '../button/button.component';\r\n\r\n@Component({\r\n selector: 'desy-button-loader',\r\n templateUrl: './button-loader.component.html'\r\n})\r\nexport class ButtonLoaderComponent extends ButtonComponent {\r\n\r\n public static readonly STATE_LOADING: string = 'is-loading';\r\n public static readonly STATE_SUCCESS: string = 'is-success';\r\n\r\n private static readonly DEFAULT_LOADER_TEXT: string = 'Acción en curso';\r\n private static readonly DEFAULT_SUCCESS_TEXT: string = 'Acción realizada con éxito';\r\n\r\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\r\n\r\n @Input() loaderText: string;\r\n @Input() loaderClasses: string;\r\n @Input() state: string;\r\n @Input() successText: string;\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-button-loader relative';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n if (this.disabled) {\r\n classNames += ' c-button-loader--disabled';\r\n }\r\n return classNames;\r\n }\r\n\r\n getSpinnerText(): string {\r\n let spinnerText: string = null;\r\n\r\n if (this.state === ButtonLoaderComponent.STATE_LOADING) {\r\n spinnerText = this.loaderText ? this.loaderText : ButtonLoaderComponent.DEFAULT_LOADER_TEXT;\r\n }\r\n\r\n return spinnerText;\r\n }\r\n\r\n\r\n getSuccessText(): string {\r\n let successText: string = null;\r\n\r\n if (this.state === ButtonLoaderComponent.STATE_SUCCESS) {\r\n successText = this.successText ? this.successText : ButtonLoaderComponent.DEFAULT_SUCCESS_TEXT;\r\n }\r\n\r\n return successText;\r\n }\r\n}\r\n","export class FocusUtils {\r\n\r\n public static getFirstFocusableElement(parent?: HTMLElement): HTMLElement {\r\n const selectionableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n let focusableList;\r\n if (parent) {\r\n focusableList = parent.querySelectorAll(selectionableElements);\r\n } else {\r\n focusableList = document.querySelectorAll(selectionableElements);\r\n }\r\n\r\n if (!focusableList || focusableList.length === 0) {\r\n return null;\r\n }\r\n\r\n let firstFocusable = null;\r\n let i = 0;\r\n while (i < focusableList.length) {\r\n try {\r\n const element = focusableList.item(i) as HTMLInputElement;\r\n if (FocusUtils.isFocusable(element)) {\r\n firstFocusable = element;\r\n break;\r\n }\r\n } catch (e) {\r\n\r\n }\r\n i++;\r\n }\r\n\r\n return firstFocusable;\r\n }\r\n\r\n public static isFocusable(element: any): boolean {\r\n if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)) {\r\n return true;\r\n }\r\n\r\n if (element.disabled) {\r\n return false;\r\n }\r\n\r\n switch (element.nodeName) {\r\n case 'A':\r\n return !!element.href && element.rel !== 'ignore';\r\n case 'INPUT':\r\n return element.type !== 'hidden' && element.type !== 'file';\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ElementRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n HostBinding,\r\n} from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent } from '../../../shared/components';\r\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\r\n\r\n@Component({\r\n selector: 'desy-dropdown',\r\n templateUrl: './dropdown.component.html'\r\n})\r\nexport class DropdownComponent extends AccessibilityAndContentRequiredComponent implements OnInit, OnChanges {\r\n \r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @ViewChild('dropdownContent', { read: ElementRef, static: true }) dropdownContent: ElementRef;\r\n\r\n @Input() id: string;\r\n @Input() disabled: boolean;\r\n @Input() hiddenText: string;\r\n @Input() @HostBinding('class') classesContainer: any;\r\n @Input() classesTooltip: string;\r\n @Input() caller: TemplateRef<any>;\r\n @Input() classes: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n isOpen = false;\r\n clickOutsideEnabled = false;\r\n\r\n tippyProperties: any;\r\n\r\n ngOnInit(): any {\r\n let contentTooltip: HTMLElement;\r\n if (this.dropdownContent && this.dropdownContent.nativeElement) {\r\n contentTooltip = this.dropdownContent.nativeElement as HTMLElement;\r\n contentTooltip.style.display = 'block';\r\n this.tippyProperties = {\r\n placement: 'bottom-start',\r\n inlinePositioning: true,\r\n content: contentTooltip,\r\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\r\n trigger: 'click',\r\n hideOnClick: true,\r\n interactive: true,\r\n arrow: false,\r\n offset: [0, -10],\r\n theme: '',\r\n plugins: [\r\n {\r\n name: 'hideOnPopperBlur',\r\n defaultValue: true,\r\n fn(instance) {\r\n return {\r\n onCreate() {\r\n instance.popper.addEventListener('focusout', (event) => {\r\n if (\r\n instance.props.hideOnPopperBlur &&\r\n event.relatedTarget &&\r\n !instance.popper.contains(event.relatedTarget)\r\n ) {\r\n instance.hide();\r\n }\r\n });\r\n },\r\n };\r\n }\r\n }, {\r\n name: 'hideOnEsc',\r\n defaultValue: true,\r\n fn({hide}): any {\r\n\r\n function onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === DropdownComponent.KEY_CODE_ESC) {\r\n hide();\r\n }\r\n }\r\n\r\n return {\r\n onShow(): void {\r\n document.addEventListener('keydown', onKeyDown);\r\n },\r\n onHide(): void {\r\n document.removeEventListener('keydown', onKeyDown);\r\n },\r\n };\r\n },\r\n }\r\n ],\r\n role: false,\r\n aria: {\r\n content: 'auto',\r\n },\r\n onShown(instance): void {\r\n const firstFocusable = FocusUtils.getFirstFocusableElement(contentTooltip);\r\n if (firstFocusable) {\r\n firstFocusable.focus();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.classesContainer = this.classesContainer ? this.classesContainer : 'relative';\r\n }\r\n\r\n onClick(event: any): void {\r\n if (!this.isDisabled()){\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n setOpen(isOpen: boolean): void {\r\n this.isOpen = isOpen;\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.disabled ? true : null;\r\n }\r\n}\r\n","/**\r\n * Facilita funciones de utilidad para trabajar con strings\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * Escapa los caracteres propios de HTML para mostrarlos como contenido\r\n * @param value texto en formato html\r\n */\r\n public static escapeHtml(value: string): string {\r\n return value ? value\r\n .replace(new RegExp(`&`, 'g'), '&')\r\n .replace(new RegExp(`<`, 'g'), '<')\r\n .replace(new RegExp(`>`, 'g'), '>')\r\n .replace(new RegExp(`\"`, 'g'), '"')\r\n .replace(new RegExp(`'`, 'g'), ''') : '';\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-listbox-label',\r\n templateUrl: './listbox-label.component.html'\r\n})\r\nexport class ListboxLabelComponent extends ContentBaseComponent {\r\n\r\n @Input() classes: string;\r\n\r\n}\r\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from '@angular/core';\r\nimport {ListboxItemData} from '../../../interfaces/listbox-item-data';\r\nimport {AccessibilityComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-listbox-item',\r\n templateUrl: './listbox-item.component.html'\r\n})\r\nexport class ListboxItemComponent extends AccessibilityComponent implements ListboxItemData, OnChanges {\r\n\r\n @ViewChild('childComponentTemplate') content;\r\n\r\n @Input() id?: string;\r\n @Input() active?: boolean;\r\n @Input() classes?: string;\r\n @Input() title?: string;\r\n\r\n @Output() itemChange = new EventEmitter();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.itemChange.emit(changes);\r\n }\r\n\r\n}\r\n","import {QueryList} from '@angular/core';\r\n\r\n/**\r\n * Decorador para convertir una queryList de componentes obtenidos con ContentChildren a un único componente, de forma que sea similar a un\r\n * ContentChild pero admitiendo únicamente los compontentes insertados en el primer nivel.\r\n * Debe utilizarse siempre junto a un ContentChildren\r\n * Si en el constructor de la clase en la que se utiliza se inyecta el Change detector con nombre 'changeDetectorRef', se indicará que hay\r\n * cambios cuando se detecten.\r\n * @param options opciones adicionales:\r\n * - onSetCallbackName: nombre del método al que llamar tras asociarse el valor. Esto puede utilizarse, por ejemplo, para sobreescribir\r\n * parámetros definidos externamente en el componente.\r\n * - onDeleteCallbackName: nombre del método al que llamar tras desasociarse el valor.\r\n */\r\nexport function DesyContentChild(options?: { onSetCallbackName?: string, onDeleteCallbackName?: string }): PropertyDecorator {\r\n return (target: any, propertyKey: string) => {\r\n const privateKeyName = `_${propertyKey}`;\r\n const privateQueryListKeyName = `_${propertyKey}Querylist`;\r\n\r\n Object.defineProperty(target, propertyKey, {\r\n set(value): void {\r\n const queryList = value instanceof QueryList ? value as QueryList<any> : null;\r\n if (queryList && !this[privateQueryListKeyName]) {\r\n this[privateQueryListKeyName] = queryList;\r\n queryList.changes.subscribe(() => {\r\n const previousValue = this[privateKeyName];\r\n this[privateKeyName] = queryList && queryList.length > 0 ? queryList.first : null;\r\n\r\n if (options && options.onSetCallbackName && this[options.onSetCallbackName] && this[privateKeyName] ) {\r\n this[options.onSetCallbackName](this[privateKeyName]);\r\n }\r\n\r\n if (options && options.onDeleteCallbackName && this[options.onDeleteCallbackName] && previousValue && !this[privateKeyName] ) {\r\n this[options.onDeleteCallbackName]();\r\n }\r\n });\r\n queryList.notifyOnChanges();\r\n }\r\n },\r\n get(): any {\r\n return this[privateKeyName];\r\n }\r\n });\r\n };\r\n}\r\n","import {\r\n Component,\r\n ContentChildren, DoCheck,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {AccessibilityAndTextOrHtmlRequiredComponent} from '../../../shared/components';\r\nimport {ListboxLabelData} from '../../interfaces/listbox-label-data';\r\nimport {ListboxItemData} from '../../interfaces/listbox-item-data';\r\nimport {StringUtils} from '../../../shared/utils/string-utils';\r\nimport {ListboxLabelComponent} from './listbox-label/listbox-label.component';\r\nimport {ListboxItemComponent} from './listbox-item/listbox-item.component';\r\nimport {Subscription} from 'rxjs';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-listbox',\r\n templateUrl: './listbox.component.html'\r\n})\r\nexport class ListboxComponent extends AccessibilityAndTextOrHtmlRequiredComponent implements OnInit, OnChanges, DoCheck {\r\n\r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @ViewChild('button', { read: ElementRef, static: true }) listboxButton: ElementRef;\r\n @ViewChild('list', { read: ElementRef }) listboxList: ElementRef;\r\n @ViewChild('tooltip', { read: ElementRef, static: true }) listboxContent: ElementRef;\r\n @ViewChildren('option', { read: ElementRef }) listboxOptions: QueryList<ElementRef>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ListboxLabelComponent) labelComponent: ListboxLabelComponent;\r\n @ContentChildren(ListboxItemComponent) itemComponentList: QueryList<ListboxItemComponent>;\r\n\r\n @Input() id: string; // required\r\n @Input() isMultiselectable: boolean;\r\n @Input() doesChangeButtonText: boolean;\r\n @Input() label: ListboxLabelData;\r\n @Input() classes: string;\r\n @Input() classesContainer: string;\r\n @Input() classesTooltip: string;\r\n @Input() idPrefix: string;\r\n @Input() disabled: boolean;\r\n @Input() items: ListboxItemData[];\r\n @Output() itemsChange = new EventEmitter();\r\n @Output() activeItemChange = new EventEmitter();\r\n\r\n tippyProperties: any; // Propiedades de tippy\r\n currentFocusIndex: number; // Índice del elemento actual con focus\r\n buttonContentHtml: string; // Puede ser el pasado por parámetro o el item seleccionado en caso de currentFocusIndex=true\r\n isListVisible = false; // Indica si la lista se está mostrando\r\n\r\n // conditionalId y conditionalItem representan en desy-html el item activo. Aquí es mejor obtenerlo cuando se necesita\r\n lastActiveItems: { item: ListboxItemData, index: number }[];\r\n itemComponentSubscriptions: Subscription[];\r\n\r\n itemList: ListboxItemData[];\r\n\r\n\r\n ngOnInit(): void {\r\n const listboxButtonElement = this.listboxButton.nativeElement;\r\n if (this.listboxContent && this.listboxContent.nativeElement) {\r\n const contentTooltip = this.listboxContent.nativeElement as HTMLElement;\r\n this.tippyProperties = { \r\n placement: 'bottom-start',\r\n inlinePositioning: true, \r\n content: contentTooltip,\r\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\r\n trigger: 'click',\r\n hideOnClick: true,\r\n interactive: true,\r\n arrow: false,\r\n offset: [0, -10],\r\n theme: '',\r\n plugins: [\r\n {\r\n name: 'hideOnPopperBlur',\r\n defaultValue: true,\r\n fn(instance) {\r\n return {\r\n onCreate() {\r\n instance.popper.addEventListener('focusout', (event) => {\r\n if (\r\n instance.props.hideOnPopperBlur &&\r\n event.relatedTarget &&\r\n !instance.popper.contains(event.relatedTarget)\r\n ) {\r\n instance.hide();\r\n }\r\n });\r\n },\r\n };\r\n }\r\n }, {\r\n name: 'hideOnEsc',\r\n defaultValue: true,\r\n fn({hide}): any {\r\n\r\n function onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === ListboxComponent.KEY_CODE_ESC) {\r\n hide();\r\n listboxButtonElement.focus();\r\n }\r\n }\r\n\r\n return {\r\n onShow(): void {\r\n document.addEventListener('keydown', onKeyDown);\r\n },\r\n onHide(): void {\r\n document.removeEventListener('keydown', onKeyDown);\r\n },\r\n };\r\n },\r\n }\r\n ],\r\n role: false,\r\n aria: {\r\n content: 'auto',\r\n },\r\n onShow: this.onListShow.bind(this),\r\n onHidden: this.onListClose.bind(this)\r\n };\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n setTimeout(() => {\r\n\r\n if (this.itemComponentList && this.itemComponentList.length > 0) {\r\n if (this.itemComponentSubscriptions) {\r\n this.itemComponentSubscriptions.forEach(s => s.unsubscribe());\r\n }\r\n this.itemComponentSubscriptions = [];\r\n this.itemList = [];\r\n this.itemComponentList.forEach(item => {\r\n const subscription = item.itemChange.subscribe(() => this.checkActiveItems());\r\n this.itemComponentSubscriptions.push(subscription);\r\n this.itemList.push(item);\r\n });\r\n } else {\r\n this.itemList = this.items;\r\n }\r\n\r\n this.checkActiveItems();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (!this.items || !this.itemList) {\r\n return;\r\n }\r\n\r\n this.checkActiveItems();\r\n }\r\n\r\n private getActiveItemsData(): { item: ListboxItemData, index: number }[] {\r\n return this.itemList\r\n .map((item, index) => item.active ? {item, index} : null)\r\n .filter(item => item !== null);\r\n }\r\n\r\n private checkActiveItems(): void {\r\n let activeItems: { item: ListboxItemData, index: number }[] = this.itemList\r\n .map((item, index) => item.active ? {item, index} : null)\r\n .filter(item => item !== null);\r\n\r\n let hasActiveItemChange = false;\r\n if (this.lastActiveItems && activeItems.length === this.lastActiveItems.length) {\r\n for (let i = 0; i < activeItems.length; i++) {\r\n if (activeItems[i].index !== this.lastActiveItems[i].index) {\r\n hasActiveItemChange = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n hasActiveItemChange = true;\r\n }\r\n\r\n // Si hay cambios externos y es selección única, anulamos la selección anterior\r\n if (this.lastActiveItems && !this.isMultiselectable && hasActiveItemChange) {\r\n if (activeItems.length !== this.lastActiveItems.length) {\r\n for (const newItem of activeItems) {\r\n if (this.lastActiveItems.findIndex(i => i.index === newItem.index) >= 0) {\r\n newItem.item.active = false;\r\n }\r\n\r\n activeItems = activeItems.filter(item => item.item.active);\r\n }\r\n }\r\n }\r\n\r\n this.lastActiveItems = activeItems;\r\n\r\n // Se cambia el contenido del botón\r\n if (this.doesChangeButtonText && !this.isMultiselectable && activeItems.length > 0) {\r\n const activeItemOption = this.listboxOptions.find((item, index) => index === activeItems[0].index);\r\n if (activeItemOption) {\r\n this.buttonContentHtml = activeItemOption.nativeElement.innerHTML;\r\n }\r\n } else {\r\n this.buttonContentHtml = this.html ? this.html : null;\r\n }\r\n\r\n // Si hay cambios, se emiten\r\n if (hasActiveItemChange) {\r\n this.itemsChange.emit(this.itemList);\r\n this.activeItemChange.emit(activeItems.length > 0 ? activeItems[0].item : null);\r\n }\r\n }\r\n\r\n onListShow(): void {\r\n this.isListVisible = true;\r\n if (this.listboxList) {\r\n setTimeout(() => this.listboxList.nativeElement.focus());\r\n }\r\n }\r\n\r\n onListClose(): void {\r\n this.isListVisible = false;\r\n }\r\n\r\n onListFocus(): void {\r\n const activeItemsData = this.getActiveItemsData();\r\n if (activeItemsData.length > 0) {\r\n const activeElem = document.getElementById(this.getItemId(activeItemsData[0].item, activeItemsData[0].index));\r\n if (activeElem) {\r\n activeElem.focus();\r\n this.currentFocusIndex = activeItemsData[0].index;\r\n }\r\n } else if (this.itemList && this.itemList.length > 0) {\r\n this.currentFocusIndex = 0;\r\n if (!this.isMultiselectable) {\r\n this.selectItem(0);\r\n }\r\n } else {\r\n console.warn('No element to focus');\r\n }\r\n }\r\n\r\n moveFocus(position: number, event: KeyboardEvent): void {\r\n event.preventDefault();\r\n if (position >= 0 && position < this.itemList.length) {\r\n if (this.isMultiselectable) {\r\n this.currentFocusIndex = position;\r\n } else {\r\n this.selectItem(position);\r\n }\r\n }\r\n }\r\n\r\n onSpace(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n if (this.isMultiselectable) {\r\n this.selectItem(this.currentFocusIndex);\r\n }\r\n }\r\n\r\n selectItem(index: number): void {\r\n if (!this.isMultiselectable) {\r\n this.itemList.forEach(item => item.active = false);\r\n this.itemList[index].active = true;\r\n } else {\r\n this.itemList[index].active = !this.itemList[index].active;\r\n }\r\n this.currentFocusIndex = index;\r\n\r\n this.checkActiveItems();\r\n }\r\n\r\n /*\r\n * Métodos para facilitar contenido al template\r\n */\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.id + '-listbox-item';\r\n }\r\n\r\n getItemId(item: ListboxItemData, index: number): string {\r\n let itemId: string;\r\n if (item.id) {\r\n itemId = item.id;\r\n } else {\r\n itemId = this.getIdPrefix();\r\n if (index > 0) {\r\n itemId += `-${index}`;\r\n }\r\n }\r\n return itemId;\r\n }\r\n\r\n hasLabel(): boolean {\r\n return !!(this.label || this.labelComponent);\r\n }\r\n\r\n getLabelContent(label: ListboxLabelData): string {\r\n return label.html ? label.html : `<p>${ StringUtils.escapeHtml(label.text) }</p>`;\r\n }\r\n}\r\n","import {Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-pill',\r\n templateUrl: './pill.component.html'\r\n})\r\nexport class PillComponent extends AccessibilityAndContentRequiredComponent {\r\n\r\n public static readonly TYPE_A: string = 'a';\r\n public static readonly TYPE_BUTTON: string = 'button';\r\n public static readonly TYPE_SPAN: string = 'span';\r\n\r\n @Input() type: string; // 'a', 'button' o 'span'\r\n @Input() href: string;\r\n @Input() target: string;\r\n @Input() routerLink: string|any[];\r\n @Input() routerLinkActiveClasses: string|string[];\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\r\n\r\n onClick(event: any): void {\r\n this.clickEvent.emit(event);\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.type){\r\n type = this.type.toLocaleLowerCase();\r\n } else {\r\n if (this.href) {\r\n type = PillComponent.TYPE_A;\r\n } else {\r\n type = PillComponent.TYPE_SPAN;\r\n }\r\n }\r\n return type;\r\n }\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-pill';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n return classNames;\r\n }\r\n\r\n get staticElementTypeA(): string {\r\n return PillComponent.TYPE_A;\r\n }\r\n\r\n get staticElementTypeButton(): string {\r\n return PillComponent.TYPE_BUTTON;\r\n }\r\n\r\n get staticElementTypeSpan(): string {\r\n return PillComponent.TYPE_SPAN;\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../shared/components';\r\nimport {ContentData} from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-content',\r\n templateUrl: './content.component.html'\r\n})\r\nexport class ContentComponent extends ContentBaseComponent implements ContentData {\r\n @Input() classes: string;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../shared/components';\r\nimport {DescriptionData} from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-description',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class DescriptionComponent extends ContentBaseComponent implements DescriptionData {\r\n @Input() classes: string;\r\n @Input() visuallyHiddenTitle?: string;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {IconData} from '../../interfaces';\r\nimport {ContentBaseComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-icon',\r\n templateUrl: './icon.component.html'\r\n})\r\nexport class IconComponent extends ContentBaseComponent implements IconData {\r\n\r\n @Input() type: string;\r\n @Input() containerClasses?: string;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../shared/components';\r\nimport {TitleData} from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-title',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TitleComponent extends ContentBaseComponent implements TitleData {\r\n @Input() classes: string;\r\n}\r\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-hint',\r\n templateUrl: './hint.component.html',\r\n})\r\nexport class HintComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() html: string;\r\n @Input() text: string;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n public detectChanges(): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n\r\n@Component({\r\n selector: 'desy-label',\r\n templateUrl: './label.component.html'\r\n})\r\nexport class LabelComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() html: string;\r\n @Input() text: string;\r\n @Input() isPageHeading: boolean;\r\n @Input() headingLevel: number;\r\n @Input() for: string;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n public detectChanges(): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-error-message',\r\n templateUrl: './error-message.component.html'\r\n})\r\nexport class ErrorMessageComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() html: string;\r\n @Input() text: string;\r\n @Input() visuallyHiddenText: string;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n public detectChanges(): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import { Component, Input, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-legend',\r\n templateUrl: './legend.component.html'\r\n})\r\nexport class LegendComponent extends AccessibilityAndContentRequiredComponent {\r\n\r\n @Input() classes: string;\r\n @Input() isPageHeading: boolean;\r\n @Input() headingLevel: number;\r\n \r\n}\r\n","import {ChangeDetectorRef, Component, ContentChildren, Input, TemplateRef} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { LegendComponent } from './legend/legend.component';\r\nimport { LegendData } from '../../interfaces';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-fieldset',\r\n templateUrl: './fieldset.component.html'\r\n})\r\nexport class FieldsetComponent extends AccessibilityComponent {\r\n\r\n @Input() describedBy: string;\r\n @Input() errorId: string;\r\n\r\n /**\r\n * legenda, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir legendComponent\r\n * 2) incluir template\r\n * 3) incluir objeto legend (interfaz expuesta)\r\n * 4) incluir legendText - incluir un label con solo un texto\r\n */\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Input() id: string;\r\n @Input() headingLevel: number;\r\n\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n public detectChanges(): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n HostListener,\r\n Input,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { LabelComponent } from '../label/label.component';\r\nimport { HintComponent } from '../hint/hint.component';\r\nimport { ErrorMessageComponent } from '../error-message/error-message.component';\r\nimport { LabelData, HintData, ErrorMessageData } from '../../interfaces';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n\r\n@Component({\r\n selector: 'desy-form-field',\r\n template: ''\r\n})\r\nexport class FormFieldComponent<T> extends AccessibilityComponent implements ControlValueAccessor {\r\n\r\n @Input() id: string;\r\n @Input() disabled: boolean;\r\n value: T;\r\n\r\n /*\r\n * label, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente\r\n * 2) incluir template\r\n * 3) incluir objeto label (interfaz expuesta)\r\n * 4) incluir legendText - incluir un label con solo un texto\r\n */\r\n @DesyContentChild({ onSetCallbackName: 'overrideLabelParams', onDeleteCallbackName: 'onDeleteLabel'})\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n @Input() labelRef: TemplateRef<LabelComponent>;\r\n @Input() labelData: LabelData;\r\n @Input() labelText: string;\r\n\r\n /*\r\n * hint, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente\r\n * 2) incluir template\r\n * 3) incluir objeto label (interfaz expuesta)\r\n * 4) incluir hintText - incluir un hint con solo un texto\r\n */\r\n @DesyContentChild({ onSetCallbackName: 'overrideHintParams', onDeleteCallbackName: 'onDeleteHint'})\r\n @ContentChildren(HintComponent) hintComponent: HintComponent;\r\n @Input() hintRef: TemplateRef<HintComponent>;\r\n @Input() hintData: HintData;\r\n @Input() hintText: string;\r\n\r\n /*\r\n * errorMessage, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente\r\n * 2) incluir template\r\n * 3) incluir objeto label (interfaz expuesta)\r\n * 4) incluir errorText - incluir un errorText con solo un texto\r\n */\r\n @DesyContentChild({ onSetCallbackName: 'overrideErrorMessageParams', onDeleteCallbackName: 'onDeleteErrorMessage'})\r\n @ContentChildren(ErrorMessageComponent) errorMessageComponent: ErrorMessageComponent;\r\n @Input() errorMessageRef: TemplateRef<ErrorMessageComponent>;\r\n @Input() errorMessageData: ErrorMessageData;\r\n @Input() errorMessageText: string;\r\n\r\n\r\n @HostListener('focusout')\r\n onblur(): void {\r\n // DESY-77 SI TOCAN EL COMPONENTE Y SALEN SIN MODIFICAR EL VALOR, QUE SE ACTUALICE TOUCHED\r\n this.onTouch();\r\n }\r\n\r\n\r\n /*\r\n * Implementación de los métodos del ControlValueAccessor\r\n */\r\n\r\n onChange = (_: any) => {};\r\n onTouch = () => { };\r\n\r\n onInput(value: T): void{\r\n this.value = value;\r\n this.onTouch();\r\n this.onChange(this.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: T): void {\r\n if (value){\r\n this.value = value;\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n\r\n /*\r\n * Funciones para recuperar valores comunes\r\n */\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.id + '-hint' : null;\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.id + '-error' : null;\r\n }\r\n\r\n hasLabel(): boolean {\r\n return !!(this.hasLabelComponent() || this.labelText || this.labelRef ||\r\n (this.labelData && (this.labelData.text || this.labelData.html)));\r\n }\r\n\r\n hasHint(): boolean {\r\n return !!(this.hasHintComponent() || this.hintText || this.hintRef || (this.hintData && (this.hintData.text || this.hintData.html)));\r\n }\r\n\r\n hasErrorsMessage(): boolean {\r\n return !!(this.hasErrorMessageComponent() || this.errorMessageText || this.errorMessageRef ||\r\n (this.errorMessageData && (this.errorMessageData.text || this.errorMessageData.html)));\r\n }\r\n\r\n hasLabelComponent(): boolean {\r\n return !!this.labelComponent;\r\n }\r\n\r\n hasHintComponent(): boolean {\r\n return !!this.hintComponent;\r\n }\r\n\r\n hasErrorMessageComponent(): boolean {\r\n return !!this.errorMessageComponent;\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n ViewChild,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-textarea',\r\n templateUrl: './textarea.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TextareaComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class TextareaComponent extends FormFieldComponent<string> implements OnChanges {\r\n\r\n protected static readonly DEFAULT_ROWS = 5;\r\n\r\n @ViewChild('textarea') textareaElement: ElementRef;\r\n\r\n @Input() name: string;\r\n @Input() rows: number;\r\n @Input() placeholder: string;\r\n @Input() describedBy: string;\r\n\r\n // form group class - asignar clases a la etiqueta desy-input\r\n @HostBinding('class.c-form-group') cfg = true;\r\n @HostBinding('class.c-form-group--error') cfgr: boolean;\r\n @Input() @HostBinding('class') formGroupClasses: any;\r\n @Input() classes: string;\r\n @Input() autocomplete: string;\r\n @Input() maxlength: number;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n inputTransform = (value: string): string => value;\r\n\r\n ngOnChanges(): void {\r\n this.writeValue(this.value);\r\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\r\n }\r\n\r\n\r\n getRows(): number {\r\n return this.rows ? this.rows : TextareaComponent.DEFAULT_ROWS;\r\n }\r\n\r\n onInput(value: any): void{\r\n super.onInput(this.inputTransform(this.ensureText(value)));\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = this.inputTransform(this.ensureText(value));\r\n this.onChange(this.value);\r\n }\r\n\r\n registerInputTransform(fn: (value: string) => string): void {\r\n this.inputTransform = fn;\r\n }\r\n\r\n private ensureText(value: any): string {\r\n return value ? value || '' : '';\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { TextareaComponent } from '../textarea/textarea.component';\r\n\r\n@Component({\r\n selector: 'desy-character-count',\r\n templateUrl: './character-count.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CharacterCountComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CharacterCountComponent extends FormFieldComponent<string> implements AfterViewInit, OnChanges {\r\n\r\n @ViewChild(TextareaComponent) textarea;\r\n\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() rows: number;\r\n @Input() placeholder: string;\r\n @Input() maxlength: number;\r\n @Input() countbbdd: boolean;\r\n @Input() maxwords: number;\r\n @Input() threshold: number;\r\n @Input() formGroupClasses: string;\r\n @Input() countMessageClasses: string;\r\n @Input() classes: string;\r\n\r\n textareaElement: HTMLTextAreaElement;\r\n displayCountMessage: boolean;\r\n remaining: number;\r\n\r\n ngAfterViewInit(): void {\r\n this.textareaElement = (this.textarea.textareaElement.nativeElement as HTMLTextAreaElement);\r\n this.textarea.registerInputTransform(this.inputTransform.bind(this));\r\n this.registerOnChange(this.onChange);\r\n this.registerOnTouched(this.onTouch);\r\n this.textarea.setDisabledState(this.disabled);\r\n setTimeout(() => this.textarea.writeValue(this.value), 50);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.textarea) {\r\n setTimeout(() => this.textarea.ngOnChanges(changes), 50);\r\n }\r\n }\r\n\r\n inputTransform(value: string): string {\r\n if (value) {\r\n if (this.maxlength) {\r\n let length = this.calculateLenght(value);\r\n this.displayCountMessage = !this.threshold || length > (this.maxlength * this.threshold / 100);\r\n while (length > this.maxlength) {\r\n value = value.substring(0, value.length - 1);\r\n length = this.calculateLenght(value);\r\n }\r\n this.remaining = this.maxlength - length;\r\n } else {\r\n const words = value.match(/[\\wáéíóúÁÉÍÓÚüÜñÑ]+/g) || [];\r\n this.displayCountMessage = !this.threshold || (words.length > this.maxwords * this.threshold / 100);\r\n while ( words.length > this.maxwords) {\r\n value = value.substring(0, value.lastIndexOf(words.pop()));\r\n }\r\n this.remaining = this.maxwords - words.length;\r\n }\r\n } else {\r\n value = '';\r\n this.displayCountMessage = !this.threshold;\r\n this.remaining = this.maxlength ? this.maxlength : this.maxwords;\r\n }\r\n\r\n this.textareaElement.value = value;\r\n return value;\r\n }\r\n\r\n calculateLenght(value: string): number {\r\n let length = value.length;\r\n if (this.countbbdd && value) {\r\n const specialChars = value.match(/[^A-z0-9_\\s.,:;]/g);\r\n length += specialChars ? specialChars.length : 0;\r\n }\r\n return length;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n if (this.textarea) {\r\n this.textarea.registerOnChange(fn);\r\n this.onChange = (_: any) => {};\r\n }\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n if (this.textarea) {\r\n this.textarea.registerOnTouched(fn);\r\n this.onTouch = () => { };\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n if (this.textarea) {\r\n this.textarea.setDisabledState(isDisabled);\r\n }\r\n }\r\n\r\n writeValue(value: string): void {\r\n this.value = value;\r\n if (this.textarea) {\r\n this.textarea.writeValue(value);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, HostBinding, Input, OnChanges, SimpleChanges, DoCheck } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-input',\r\n templateUrl: './input.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class InputComponent extends FormFieldComponent<any> implements OnChanges, DoCheck {\r\n\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() describedBy: string;\r\n @Input() pattern: string;\r\n @Input() inputmode: string;\r\n @Input() placeholder: string;\r\n\r\n // form group class - asignar clases a la etiqueta desy-input\r\n @HostBinding('class.c-form-group') cfg = true;\r\n @HostBinding('class.c-form-group--error') cfgr: boolean;\r\n @Input() @HostBinding('class') formGroupClasses: any;\r\n\r\n @Input() classes: string;\r\n @Input() autocomplete: string;\r\n @Input() maxlength: number;\r\n @Input() errorId: string;\r\n @Input() attributes: any;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\r\n }\r\n\r\n ngDoCheck(): void {\r\n if(this.attributes){\r\n this.setAttributes();\r\n }\r\n }\r\n\r\n setAttributes(){\r\n const input = document.getElementById(this.id ? this.id : 'input');\r\n const attr = this.attributes;\r\n Object.keys(attr).forEach(key => {\r\n input?.setAttribute(key, attr[key]);\r\n });\r\n }\r\n\r\n getErrorId(): string {\r\n return this.errorId ? this.errorId : super.getErrorId();\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.value = value || '';\r\n } else {\r\n this.value = '';\r\n }\r\n this.onChange(this.value);\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-select-item',\r\n templateUrl: './select-item.component.html'\r\n})\r\nexport class SelectItemComponent extends ContentBaseComponent {\r\n\r\n @Input() disabled: boolean;\r\n}\r\n","import {Component, forwardRef, Input} from '@angular/core';\r\nimport {SelectItemData} from '../../../interfaces';\r\nimport {SelectItemComponent} from '../select-item/select-item.component';\r\n\r\n@Component({\r\n selector: 'desy-option',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>',\r\n providers: [{provide: SelectItemComponent, useExisting: forwardRef(() => OptionComponent)}],\r\n})\r\nexport class OptionComponent extends SelectItemComponent implements SelectItemData {\r\n\r\n @Input() value: string;\r\n @Input() selected: boolean;\r\n @Input() hidden: boolean;\r\n\r\n}\r\n","import {Component, ContentChildren, forwardRef, Input, QueryList} from '@angular/core';\r\nimport {SelectItemComponent} from '../select-item/select-item.component';\r\nimport {OptionComponent} from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'desy-option-group',\r\n templateUrl: './option-group.component.html',\r\n providers: [{provide: SelectItemComponent, useExisting: forwardRef(() => OptionGroupComponent)}],\r\n})\r\nexport class OptionGroupComponent extends SelectItemComponent {\r\n\r\n @Input() label: string;\r\n\r\n @ContentChildren(OptionComponent) items: QueryList<OptionComponent>;\r\n}\r\n","import {Component, forwardRef, Input, OnInit, OnChanges, SimpleChanges, ContentChildren, QueryList, AfterContentInit, HostBinding} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { SelectItemData } from '../../interfaces';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport {OptionGroupComponent} from './option-group/option-group.component';\r\nimport {SelectItemComponent} from './select-item/select-item.component';\r\n\r\n@Component({\r\n selector: 'desy-select',\r\n templateUrl: './select.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SelectComponent extends FormFieldComponent<any> implements AfterContentInit, OnChanges {\r\n\r\n @Input() name: string;\r\n @Input() items: SelectItemData[];\r\n @Input() describedBy?: string;\r\n\r\n\r\n // form group class - asignar clases a la etiqueta desy-select\r\n @HostBinding('class.c-form-group') cfg = true;\r\n @HostBinding('class.c-form-group--error') cfgr: boolean;\r\n @Input() @HostBinding('class') formGroupClasses: any;\r\n\r\n @Input() classes: string;\r\n\r\n @ContentChildren(SelectItemComponent) itemComponents: QueryList<SelectItemComponent>;\r\n contentInit = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInit = true;\r\n if (!this.value) {\r\n const items = this.getItems();\r\n const itemSelected = items?.find(item => item.selected);\r\n if (itemSelected) {\r\n setTimeout(() => this.writeValue(itemSelected.value));\r\n }\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.onChange(value);\r\n }\r\n\r\n getItems(): SelectItemData[] {\r\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\r\n return items;\r\n }\r\n\r\n isItemSelected(item: SelectItemData): boolean {\r\n return this.value ? this.value === item.value : item.selected;\r\n }\r\n\r\n isOptionGroup(item: SelectItemData): boolean {\r\n return item instanceof OptionGroupComponent;\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => FileUploadComponent),\r\n }\r\n ]\r\n})\r\nexport class FileUploadComponent extends FormFieldComponent<File> implements ControlValueAccessor, OnChanges {\r\n\r\n @Input() name: string;\r\n @Input() describedBy: string;\r\n @Input() classes: string;\r\n @Input() accept: string;\r\n\r\n @HostBinding('class.c-form-group') cfg = true;\r\n @HostBinding('class.c-form-group--error') cfgr: boolean;\r\n @Input() @HostBinding('class') formGroupClasses: any;\r\n\r\n constructor() {\r\n super();\r\n }\r\n/***\r\n * nos devuelve un array de file : File[]\r\n * pero solo nos guardamos el primero\r\n * solo dejamos seleccionar uno\r\n */\r\n onInput(value: any): void{\r\n if (value && value.length > 0 && value[0]){\r\n this.value = value[0];\r\n }else {\r\n this.value = null;\r\n }\r\n this.onTouch();\r\n this.onChange(this.value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ItemInputGroupData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-input-group-item',\r\n template: ''\r\n})\r\nexport class InputGroupItemComponent implements ItemInputGroupData {\r\n @Input() classes?: string;\r\n\r\n}\r\n","/**\r\n * Decorador para controlar los cambios de un input\r\n * @param callbackName nombre de la función a la que se llamará tras aplicar el cambio\r\n */\r\nexport function DesyOnInputChange(callbackName: string): PropertyDecorator {\r\n return (target: any, propertyKey: string) => {\r\n const privateKeyName = `_${propertyKey}`;\r\n\r\n Object.defineProperty(target, propertyKey, {\r\n set(value): void {\r\n this[privateKeyName] = value;\r\n this[callbackName]();\r\n },\r\n get(): any {\r\n return this[privateKeyName];\r\n }\r\n });\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'makeHtmlList'\r\n})\r\nexport class MakeHtmlListPipe implements PipeTransform {\r\n\r\n transform(classes: string[], valueForEmpty?: string): string|null {\r\n let filteredList = classes.filter(c => c).join(' ');\r\n if (filteredList.length === 0 && valueForEmpty) {\r\n filteredList = valueForEmpty;\r\n }\r\n return filteredList;\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-input-group-input',\r\n templateUrl: './input-group-input.component.html',\r\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupInputComponent)}],\r\n})\r\nexport class InputGroupInputComponent extends InputGroupItemComponent {\r\n\r\n isSelect = false;\r\n\r\n @Input() id?: string;\r\n @Input() name: string;\r\n @Input() value?: any;\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Input() formGroupClasses?: string;\r\n\r\n @Input() type?: string;\r\n @Input() inputmode?: string;\r\n @Input() autocomplete?: string;\r\n @Input() placeholder?: string;\r\n @Input() pattern?: string;\r\n @Input() maxlength?: number;\r\n @Input() disabled?: boolean;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\r\nimport {OptionComponent} from '../../select/option/option.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {LabelComponent} from '../../label/label.component';\r\n\r\n@Component({\r\n selector: 'desy-input-group-select',\r\n templateUrl: './input-group-select.component.html',\r\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupSelectComponent)}],\r\n})\r\nexport class InputGroupSelectComponent extends InputGroupItemComponent {\r\n\r\n isSelect = true;\r\n\r\n @Input() id?: string;\r\n @Input() name: string;\r\n @Input() value?: any;\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Input() formGroupClasses?: string;\r\n @Input() disabled?: boolean;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n @ContentChildren(OptionComponent) selectItemComponentList: QueryList<OptionComponent>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n}\r\n","import {Component, forwardRef, TemplateRef, ViewChild} from '@angular/core';\r\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\r\nimport {ItemDividerInputGroupData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-input-group-divider',\r\n templateUrl: './input-group-divider.component.html',\r\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupDividerComponent)}],\r\n})\r\nexport class InputGroupDividerComponent extends InputGroupItemComponent implements ItemDividerInputGroupData {\r\n\r\n isSelect = false;\r\n divider = this;\r\n\r\n @ViewChild('dividerContent', { static: true }) dividerContent: TemplateRef<any>;\r\n\r\n}\r\n","import {\r\n AfterContentInit, AfterViewChecked,\r\n Component,\r\n ContentChildren, EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n Input,\r\n Optional, Output,\r\n QueryList,\r\n TemplateRef, ViewChild,\r\n OnChanges\r\n} from '@angular/core';\r\nimport {FieldsetData, LegendData, ItemInputGroupData, LabelData, SelectItemData} from '../../interfaces';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport {InputGroupItemComponent} from './input-group-item/input-group-item.component';\r\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\r\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\r\nimport {InputGroupInputComponent} from './input-group-input/input-group-input.component';\r\nimport {InputGroupSelectComponent} from './input-group-select/input-group-select.component';\r\nimport {InputGroupDividerComponent} from './input-group-divider/input-group-divider.component';\r\nimport {StringUtils} from '../../../shared/utils/string-utils';\r\n\r\n@Component({\r\n selector: 'desy-input-group',\r\n templateUrl: './input-group.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputGroupComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class InputGroupComponent extends FormFieldComponent<any> implements AfterContentInit, AfterViewChecked, OnChanges {\r\n\r\n @Input() ngModelGroup: string;\r\n\r\n @DesyOnInputChange('onExternalChange')\r\n @Input() items: ItemInputGroupData[];\r\n @Output() itemsChange: EventEmitter<ItemInputGroupData[]> = new EventEmitter<ItemInputGroupData[]>();\r\n\r\n @DesyOnInputChange('onExternalChange')\r\n @Input() namePrefix: string;\r\n @Input() classes: string;\r\n\r\n // form group class - asignar clases a la etiqueta desy-input-group\r\n @HostBinding('class.c-form-group') cfg = true;\r\n @HostBinding('class.c-form-group--error') cfgr: boolean;\r\n @Input() @HostBinding('class') formGroupClasses: any;\r\n\r\n @Input() errorMessage: string;\r\n @Input() id: string;\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto FieldsetData (interfaz expuesta)\r\n * 2) incluir template legend\r\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @ContentChildren(InputGroupItemComponent) itemsComponents: QueryList<InputGroupItemComponent>;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n\r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n\r\n private contentInit = false;\r\n\r\n constructor(@Optional() public controlContainer: ControlContainer) {\r\n super();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInit = true;\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n const items = this.getItems();\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.value = value;\r\n const items = this.getItems();\r\n items.forEach(item => {\r\n const v = this.value[this.getItemName(item)];\r\n item.value = v ? v : null;\r\n });\r\n\r\n if (this.items) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n onExternalChange(): void {\r\n if (!this.contentInit) {\r\n return;\r\n }\r\n\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n\r\n const items = this.getItems();\r\n items.forEach(item => this.value[this.getItemName(item)] = item.value);\r\n this.onChange(this.value);\r\n }\r\n\r\n onInternalChange(item: ItemInputGroupData, itemValue: any): void {\r\n const itemName = this.getItemName(item);\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n\r\n if (this.value[itemName] !== itemValue) {\r\n this.value[itemName] = itemValue;\r\n this.onChange(this.value);\r\n\r\n if (item instanceof InputGroupInputComponent || item instanceof InputGroupSelectComponent) {\r\n item.valueChange.emit(itemValue);\r\n }\r\n\r\n if (this.items) {\r\n item.value = itemValue;\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n }\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\r\n fieldset.role = 'group';\r\n fieldset.detectChanges();\r\n }\r\n\r\n /*\r\n * Métodos para proporcionar datos\r\n */\r\n getItems(): ItemInputGroupData[] {\r\n return this.itemsComponents && this.itemsComponents.length ? this.itemsComponents.toArray() : this.items;\r\n }\r\n\r\n getItemLabelRef(item: ItemInputGroupData): TemplateRef<any> {\r\n return item instanceof InputGroupInputComponent || item instanceof InputGroupSelectComponent ? item.labelRef : null;\r\n }\r\n\r\n getItemLabelData(item: ItemInputGroupData): LabelData {\r\n return item.labelData ? item.labelData : { text: item.labelText };\r\n }\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData\r\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n hasLegendComponent(): boolean {\r\n return !!this.legendComponent;\r\n }\r\n\r\n getItemName(item: ItemInputGroupData): string {\r\n return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;\r\n }\r\n\r\n getItemSelectOptions(item: ItemInputGroupData): SelectItemData[] {\r\n return item instanceof InputGroupSelectComponent ?\r\n item.selectItemComponentList.toArray() : item.selectItems;\r\n }\r\n\r\n getItemDividerTemplate(item: ItemInputGroupData): TemplateRef<any> {\r\n return item.divider instanceof InputGroupDividerComponent ? item.divider.dividerContent : null;\r\n }\r\n\r\n getItemDividerHtml(item: ItemInputGroupData): string {\r\n return item.divider.html ? item.divider.html : `<p>${ StringUtils.escapeHtml(item.divider.text) }</p>`;\r\n }\r\n\r\n isSelectItem(item: ItemInputGroupData): boolean {\r\n let hasSelectItems;\r\n if (item instanceof InputGroupSelectComponent) {\r\n hasSelectItems = item.selectItemComponentList && item.selectItemComponentList.length > 0;\r\n } else {\r\n hasSelectItems = item.selectItems;\r\n }\r\n return item.isSelect && hasSelectItems;\r\n }\r\n\r\n hasItemLabel(item: ItemInputGroupData): boolean {\r\n return !!((item.labelData && (item.labelData.text || item.labelData.html)) || item.labelText);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n Host,\r\n Input,\r\n OnChanges, OnDestroy, OnInit,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {ItemRadioData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {RadiosComponent} from '../radios.component';\r\nimport {animate, animateChild, query, state, style, transition, trigger} from '@angular/animations';\r\nimport {HintComponent} from '../../hint/hint.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-radio-item',\r\n templateUrl: './radio-item.component.html',\r\n animations: [\r\n trigger('displayConditional', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition('* => *', [\r\n query('@*', animateChild(), {optional: true})\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class RadioItemComponent extends ContentBaseComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit, ItemRadioData {\r\n\r\n @ViewChild('input') inputElement: ElementRef;\r\n\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() value: any;\r\n @Input() conditional: boolean;\r\n @Input() disabled: boolean;\r\n @Input() divider: string;\r\n @Input() classes: string;\r\n\r\n @ContentChildren(LabelComponent) labelComponentList: QueryList<LabelComponent>;\r\n @ContentChildren(HintComponent) hintComponentList: QueryList<HintComponent>;\r\n @ContentChildren(ContentComponent) conditionalContentList: QueryList<ContentComponent>;\r\n\r\n @Input() checked: boolean;\r\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n index = 0;\r\n lastChecked;\r\n lastValue;\r\n radioId;\r\n\r\n constructor(@Host() private radios: RadiosComponent, private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n if (!this.radios) {\r\n throw Error('Radios items must be inside of RadiosComponent');\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.radios.markForUpdateCheckboxIds();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.radios.markForUpdateCheckboxIds();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.checked !== this.lastChecked && this.isInit()) {\r\n this.setChecked(this.checked);\r\n this.radios.updateValueFromRadioItems();\r\n } else if (this.lastValue !== undefined && this.lastValue !== this.value) {\r\n this.radios.updateValueFromRadioItems();\r\n }\r\n this.lastValue = this.value;\r\n\r\n if (this.id !== this.radioId) {\r\n this.radios.markForUpdateCheckboxIds();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setChecked(this.checked);\r\n this.radios.updateValueFromRadioItems();\r\n }\r\n\r\n setChecked(checked: boolean): void {\r\n this.checked = checked;\r\n this.lastChecked = checked;\r\n this.checkedChange.emit(checked);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /*\r\n * Funciones para aportar información desde el componente checkboxes que lo contiene\r\n */\r\n\r\n getItemHintId(): string {\r\n return this.hintComponentList && this.hintComponentList.length > 0 && this.radioId ? this.radioId + '-item-hint' : null;\r\n }\r\n\r\n hasChanged(): void {\r\n this.setChecked(this.isInputChecked());\r\n this.radios.updateValueFromRadioItems();\r\n }\r\n\r\n isInit(): boolean {\r\n return !!this.inputElement;\r\n }\r\n\r\n isInputChecked(): boolean {\r\n return this.inputElement ? this.inputElement.nativeElement.checked : null;\r\n }\r\n\r\n updateRadioId(index?: number): void {\r\n if (this.id) {\r\n this.radioId = this.id;\r\n } else {\r\n const idPrefix = this.radios.idPrefix ? this.radios.idPrefix : this.radios.name;\r\n if (index === 0) {\r\n this.radioId = idPrefix;\r\n } else {\r\n this.radioId = `${idPrefix}-${index}`;\r\n }\r\n }\r\n\r\n if (this.labelComponentList && this.labelComponentList.length > 0) {\r\n this.labelComponentList.first.for = this.radioId;\r\n }\r\n\r\n if (this.hintComponentList && this.hintComponentList.length > 0) {\r\n this.hintComponentList.first.id = this.getItemHintId();\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /*\r\n * Funciones para aportar información desde el componente checkboxes que lo contiene\r\n */\r\n\r\n hasDividers(): boolean {\r\n return this.radios.hasDividers;\r\n }\r\n\r\n hasError(): boolean {\r\n return this.radios.hasErrorsMessage();\r\n }\r\n\r\n getNameRadio(): string {\r\n return this.radios.name;\r\n }\r\n\r\n getDescribedBy(): string {\r\n return !this.radios.hasFieldset() ? this.radios.describedBy : null;\r\n }\r\n\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n DoCheck,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef, ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {FieldsetData, ItemRadioData, LegendData} from '../../interfaces';\r\nimport {LegendComponent} from '../fieldset/legend/legend.component';\r\nimport {FormFieldComponent} from '../form-field/form-field.component';\r\nimport {RadioItemComponent} from './radio-item/radio-item.component';\r\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\r\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\r\nimport {HintComponent} from '../hint/hint.component';\r\nimport {ErrorMessageComponent} from '../error-message/error-message.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\r\n\r\n@Component({\r\n selector: 'desy-radios',\r\n templateUrl: './radios.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadiosComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class RadiosComponent extends FormFieldComponent<any> implements DoCheck, AfterContentInit {\r\n \r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente FieldsetComponent\r\n * 2) incluir objeto FieldsetData (interfaz expuesta)\r\n * 3) incluir componente LegendComponent\r\n * 4) incluir template legend\r\n * 5) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 6) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n \r\n @DesyOnInputChange('onIdPrefixChange')\r\n @Input() idPrefix: string;\r\n \r\n @DesyOnInputChange('onNameChange')\r\n @Input() name: string;\r\n \r\n @Input() items: ItemRadioData[];\r\n @Output() itemsChange = new EventEmitter<ItemRadioData[]>();\r\n \r\n @Input() formGroupClasses: string;\r\n @Input() hasDividers: boolean;\r\n @Input() hasError: boolean;\r\n @Input() classes: string;\r\n @Input() describedBy: string;\r\n \r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n \r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n \r\n @ContentChildren(RadioItemComponent) radioComponentItems: QueryList<RadioItemComponent>;\r\n \r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n @ViewChildren(RadioItemComponent) radioComponentItems2: QueryList<RadioItemComponent>;\r\n \r\n private nextValue = null;\r\n private updateChekboxIds = false;\r\n private contentInit = false;\r\n \r\n ngDoCheck(): void {\r\n if (this.nextValue !== null && (this.nextValue !== '' || (this.value && this.value !== ''))) {\r\n this.value = this.nextValue;\r\n this.nextValue = null;\r\n const updateItems = this.updateRadioItemsChecked();\r\n setTimeout(() => {\r\n this.onChange(this.value);\r\n if (updateItems && this.items && this.items.length > 0) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n });\r\n }\r\n\r\n if (this.updateChekboxIds) {\r\n const checkboxItems = this.getRadioItems();\r\n if (checkboxItems.length > 0) {\r\n checkboxItems.forEach((item, index) => item.updateRadioId(index));\r\n }\r\n this.updateChekboxIds = false;\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n\r\n this.contentInit = true;\r\n }\r\n\r\n /**\r\n * Se sobrescribe el writeValue de FormField para gestionar en un único punto el valor de value\r\n * @param value nuevo valor a establecer\r\n */\r\n writeValue(value: any[]): void {\r\n if (value) {\r\n this.nextValue = value;\r\n }\r\n }\r\n\r\n onIdPrefixChange(): void {\r\n if (this.contentInit) {\r\n this.markForUpdateCheckboxIds();\r\n }\r\n this.propagateNewIdPrefixValue();\r\n }\r\n\r\n\r\n onNameChange(): void {\r\n\r\n if (this.contentInit) {\r\n this.markForUpdateCheckboxIds();\r\n }\r\n\r\n this.propagateNewIdPrefixValue();\r\n }\r\n\r\n /**\r\n * Actualiza los componentes externos que tienen valores dependientes de idPrefix\r\n * @private\r\n */\r\n private propagateNewIdPrefixValue(): void {\r\n if (this.hintComponent) {\r\n this.overrideHintParams(this.hintComponent);\r\n }\r\n\r\n if (this.errorMessageComponent) {\r\n this.overrideErrorMessageParams(this.errorMessageComponent);\r\n }\r\n\r\n // Al hacer el override de hint o error ya se aplica sobre el fieldset, por lo que sólo es necesario aplicarlo directamente\r\n // sobre el fieldset cuando ninguno de estos existe\r\n if (!this.hintComponent && !this.errorMessageComponent && this.fieldsetComponent) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n markForUpdateCheckboxIds(): void {\r\n this.updateChekboxIds = true;\r\n }\r\n\r\n /**\r\n * Actualiza el estado de los items según el valor asignado al componente\r\n */\r\n private updateRadioItemsChecked(): boolean {\r\n let itemsUpdated = false;\r\n const checkboxItems = this.getRadioItems();\r\n if (checkboxItems.length > 0) {\r\n checkboxItems.forEach(item => {\r\n if (item.value === this.value && !item.lastChecked) {\r\n item.setChecked(true);\r\n itemsUpdated = true;\r\n } else if (item.value !== this.value && item.lastChecked) {\r\n item.setChecked(false);\r\n itemsUpdated = true;\r\n }\r\n });\r\n }\r\n return itemsUpdated;\r\n }\r\n\r\n /**\r\n * Actualiza el valor cuando se produce un cambio en los items, tanto interno como externo\r\n */\r\n updateValueFromRadioItems(): void {\r\n\r\n /*\r\n * Se realiza dentro de un timeout porque, aunque los componentes items se hayan inicializado, en este componente puede ser que todavía\r\n * no se detecten, y por tanto el getCheckboxItems no devuelva la lista correcta.\r\n */\r\n setTimeout( () => {\r\n const items = this.getRadioItems();\r\n if (items && items.length > 0 && items.findIndex(item => !item.isInit() && !item.divider) < 0) {\r\n const checkedItem = items.find(item => item.isInputChecked() && !item.divider);\r\n this.nextValue = checkedItem ? checkedItem.value : null;\r\n }\r\n });\r\n\r\n if (this.items && this.items.length > 0) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n\r\n /*\r\n * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage\r\n */\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\r\n fieldset.detectChanges();\r\n }\r\n\r\n overrideHintParams(hint: HintComponent): void {\r\n hint.id = this.getHintId();\r\n hint.detectChanges();\r\n\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n overrideErrorMessageParams(errorMessage: ErrorMessageComponent): void {\r\n errorMessage.id = this.getErrorId();\r\n errorMessage.detectChanges();\r\n\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n onDeleteHint(): void {\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n onDeleteErrorMessage(): void {\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Funciones para recuperar valores comunes\r\n */\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData ||\r\n (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n hasLegendComponent(): boolean {\r\n return !!this.legendComponent;\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.getIdPrefix() + '-error' : null;\r\n }\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.getIdPrefix() + '-hint' : null;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.name;\r\n }\r\n\r\n getRadioItems(): RadioItemComponent[] {\r\n let checkboxItems = [];\r\n if (this.radioComponentItems && this.radioComponentItems.length > 0) {\r\n checkboxItems = this.radioComponentItems.toArray();\r\n } else if (this.radioComponentItems2 && this.radioComponentItems2.length > 0) {\r\n checkboxItems = this.radioComponentItems2.toArray();\r\n }\r\n return checkboxItems;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n Host,\r\n HostBinding,\r\n Input, OnChanges, OnDestroy, OnInit,\r\n Output, QueryList, SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {ItemCheckboxData} from '../../../interfaces';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {animate, animateChild, query, state, style, transition, trigger} from '@angular/animations';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport {HintComponent} from '../../hint/hint.component';\r\nimport {CheckboxesComponent} from '../checkboxes.component';\r\nimport {AccessibilityComponent} from '../../../../shared/components';\r\nimport {DesyOnInputChange} from \"../../../../shared/decorators/desy-on-input-change.decorator\";\r\n\r\n@Component({\r\n selector: 'desy-checkbox-item',\r\n templateUrl: './checkbox-item.component.html',\r\n animations: [\r\n trigger('displayConditional', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition('* => *', [\r\n query('@*', animateChild(), {optional: true})\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class CheckboxItemComponent extends AccessibilityComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit, ItemCheckboxData {\r\n\r\n @ViewChild('input') inputElement: ElementRef;\r\n\r\n @Input() id: string;\r\n @Input() value: any;\r\n @Input() name: string;\r\n @Input() conditional: boolean;\r\n @Input() disabled: boolean;\r\n @Input() isIndeterminate: boolean;\r\n\r\n @DesyOnInputChange('setIndeterminateStatus')\r\n @Input() indeterminateChecked: boolean;\r\n @Input() @HostBinding('class') classes: any;\r\n\r\n @ContentChildren(LabelComponent) labelComponentList: QueryList<LabelComponent>;\r\n @ContentChildren(HintComponent) hintComponentList: QueryList<HintComponent>;\r\n @ContentChildren(ContentComponent) conditionalContentList: QueryList<ContentComponent>;\r\n\r\n @Input() checked: boolean;\r\n\r\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() indeterminateChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n lastChecked;\r\n lastIndeterminate;\r\n lastValue;\r\n checkboxId;\r\n\r\n constructor(@Host() private checkboxes: CheckboxesComponent, private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n if (!this.checkboxes) {\r\n throw Error('Checkbox items must be inside of CheckboxesComponent');\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkboxes.markForUpdateCheckboxIds();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.checkboxes.markForUpdateCheckboxIds();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.classes = this.checkboxes.hasDividers ? this.classes += ' border-t border-b border-neutral-base -mb-px' : this.classes;\r\n if (this.checked !== this.lastChecked && this.isInit()) {\r\n this.setChecked(this.checked);\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n } else if (this.lastValue !== undefined && this.lastValue !== this.value) {\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n }\r\n\r\n if(this.indeterminateChecked !== this.lastIndeterminate && this.isInit()){\r\n this.setIndeterminateChecked(this.indeterminateChecked);\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n }\r\n\r\n\r\n this.lastValue = this.value;\r\n\r\n if (this.id !== this.checkboxId) {\r\n this.checkboxes.markForUpdateCheckboxIds();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setChecked(this.checked);\r\n this.setIndeterminateChecked(this.indeterminateChecked);\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n }\r\n\r\n getItemHintId(): string {\r\n return this.hintComponentList && this.hintComponentList.length > 0 && this.checkboxId ? this.checkboxId + '-item-hint' : null;\r\n }\r\n\r\n hasChanged(): void {\r\n // Se establece el cambio a visualizar en el input\r\n const input = this.inputElement.nativeElement;\r\n if (this.isIndeterminate) {\r\n if (input.readOnly) {\r\n input.checked = false;\r\n input.readOnly = false;\r\n } else if (!input.checked) {\r\n input.readOnly = true;\r\n input.indeterminate = true;\r\n }\r\n }\r\n this.setChecked(input.checked);\r\n this.setIndeterminateChecked(input.indeterminate);\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n }\r\n\r\n setChecked(checked: boolean): void {\r\n this.checked = checked;\r\n this.lastChecked = checked;\r\n this.checkedChange.emit(checked);\r\n this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado\r\n }\r\n\r\n setIndeterminateChecked(indeterminateChecked: boolean): void {\r\n this.indeterminateChecked = indeterminateChecked;\r\n this.lastIndeterminate = indeterminateChecked;\r\n this.indeterminateChange.emit(indeterminateChecked);\r\n this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado\r\n }\r\n\r\n setIndeterminateStatus(): void {\r\n const input = this.inputElement?.nativeElement;\r\n if (input) {\r\n if (this.indeterminateChecked) {\r\n input.readOnly = true;\r\n input.indeterminate = true;\r\n } else if (input.readOnly) {\r\n input.readOnly = false;\r\n input.indeterminate = false;\r\n }\r\n }\r\n }\r\n\r\n isInit(): boolean {\r\n return !!this.inputElement;\r\n }\r\n\r\n getValue(): any {\r\n const input = this.inputElement.nativeElement;\r\n return input.checked || input.indeterminate ? this.value : null;\r\n }\r\n\r\n updateCheckboxId(index?: number): void {\r\n if (this.id) {\r\n this.checkboxId = this.id;\r\n } else {\r\n const idPrefix = this.checkboxes.idPrefix ? this.checkboxes.idPrefix : this.checkboxes.name;\r\n if (index === 0) {\r\n this.checkboxId = idPrefix;\r\n } else {\r\n this.checkboxId = `${idPrefix}-${index}`;\r\n }\r\n }\r\n\r\n if (this.labelComponentList && this.labelComponentList.length > 0) {\r\n this.labelComponentList.first.for = this.checkboxId;\r\n }\r\n\r\n if (this.hintComponentList && this.hintComponentList.length > 0) {\r\n this.hintComponentList.first.id = this.getItemHintId();\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /*\r\n * Funciones para aportar información desde el componente checkboxes que lo contiene\r\n */\r\n\r\n hasDividers(): boolean {\r\n return this.checkboxes.hasDividers; \r\n }\r\n\r\n hasError(): boolean {\r\n return this.checkboxes.hasErrorsMessage();\r\n }\r\n\r\n getNameCheckbox(): string {\r\n return this.checkboxes.name;\r\n }\r\n\r\n getDescribedBy(): string {\r\n return !this.checkboxes.hasFieldset() ? this.checkboxes.describedBy : null;\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren, DoCheck, EventEmitter,\r\n forwardRef,\r\n Input, Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef, ViewChild, ViewChildren\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { FieldsetData, LegendData, ItemCheckboxData } from '../../interfaces';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\nimport {CheckboxItemComponent} from './checkbox-item/checkbox-item.component';\r\nimport {HintComponent} from '../hint/hint.component';\r\nimport {ErrorMessageComponent} from '../error-message/error-message.component';\r\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\r\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\r\n\r\n\r\n@Component({\r\n selector: 'desy-checkboxes',\r\n templateUrl: './checkboxes.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckboxesComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CheckboxesComponent extends FormFieldComponent<any[]> implements AfterContentInit, DoCheck {\r\n \r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente FieldsetComponent\r\n * 2) incluir objeto FieldsetData (interfaz expuesta)\r\n * 3) incluir componente LegendComponent\r\n * 4) incluir template legend\r\n * 5) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 6) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @DesyOnInputChange('onIdPrefixChange')\r\n @Input() idPrefix: string;\r\n \r\n @DesyOnInputChange('onNameChange')\r\n @Input() name: string;\r\n \r\n @Input() items: ItemCheckboxData[];\r\n @Output() itemsChange = new EventEmitter<ItemCheckboxData[]>();\r\n \r\n @Input() formGroupClasses: string;\r\n @Input() hasDividers: boolean;\r\n @Input() hasError: boolean;\r\n @Input() classes: string;\r\n @Input() describedBy: string;\r\n \r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n \r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n \r\n @ContentChildren(CheckboxItemComponent) checkboxComponentItems: QueryList<CheckboxItemComponent>;\r\n \r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n @ViewChildren(CheckboxItemComponent) checkboxComponentItems2: QueryList<CheckboxItemComponent>;\r\n \r\n private nextValue = null;\r\n private updateChekboxIds = false;\r\n private contentInit = false;\r\n \r\n ngDoCheck(): void {\r\n if (this.nextValue !== null && (this.nextValue.length > 0 || (this.value && this.value.length > 0))) {\r\n this.value = this.nextValue;\r\n this.nextValue = null;\r\n this.updateCheckboxItemsChecked();\r\n setTimeout(() => {\r\n this.onChange(this.value);\r\n if (this.items && this.items.length > 0) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n });\r\n }\r\n\r\n if (this.updateChekboxIds) {\r\n const checkboxItems = this.getCheckboxItems();\r\n if (checkboxItems.length > 0) {\r\n checkboxItems.forEach((item, index) => item.updateCheckboxId(index));\r\n }\r\n this.updateChekboxIds = false;\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n\r\n this.contentInit = true;\r\n }\r\n\r\n /**\r\n * Se sobrescribe el writeValue de FormField para gestionar en un único punto el valor de value\r\n * @param value nuevo valor a establecer\r\n */\r\n writeValue(value: any[]): void {\r\n if (value) {\r\n this.nextValue = value;\r\n }\r\n }\r\n\r\n onIdPrefixChange(): void {\r\n if (this.contentInit) {\r\n this.markForUpdateCheckboxIds();\r\n }\r\n this.propagateNewIdPrefixValue();\r\n }\r\n\r\n\r\n onNameChange(): void {\r\n\r\n if (this.contentInit) {\r\n this.markForUpdateCheckboxIds();\r\n }\r\n\r\n this.propagateNewIdPrefixValue();\r\n }\r\n\r\n /**\r\n * Actualiza los componentes externos que tienen valores dependientes de idPrefix\r\n * @private\r\n */\r\n private propagateNewIdPrefixValue(): void {\r\n if (this.hintComponent) {\r\n this.overrideHintParams(this.hintComponent);\r\n }\r\n\r\n if (this.errorMessageComponent) {\r\n this.overrideErrorMessageParams(this.errorMessageComponent);\r\n }\r\n\r\n // Al hacer el override de hint o error ya se aplica sobre el fieldset, por lo que sólo es necesario aplicarlo directamente\r\n // sobre el fieldset cuando ninguno de estos existe\r\n if (!this.hintComponent && !this.errorMessageComponent && this.fieldsetComponent) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n markForUpdateCheckboxIds(): void {\r\n this.updateChekboxIds = true;\r\n }\r\n\r\n\r\n /**\r\n * Actualiza el estado de los items según el valor asignado al componente\r\n */\r\n private updateCheckboxItemsChecked(): void {\r\n const checkboxItems = this.getCheckboxItems();\r\n if (checkboxItems.length > 0) {\r\n checkboxItems.forEach(item => {\r\n const itemChecked = Array.isArray(this.value) ? this.value.findIndex(v => v === item.value) > -1 : this.value === item.value;\r\n if (itemChecked !== item.lastChecked) {\r\n item.setChecked(itemChecked);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Actualiza el valor cuando se produce un cambio en los items, tanto interno como externo\r\n */\r\n updateValueFromCheckboxItems(): void {\r\n\r\n /*\r\n * Se realiza dentro de un timeout porque, aunque los componentes items se hayan inicializado, en este componente puede ser que todavía\r\n * no se detecten, y por tanto el getCheckboxItems no devuelva la lista correcta.\r\n */\r\n setTimeout( () => {\r\n const items = this.getCheckboxItems();\r\n if (items && items.length > 0 && items.findIndex(item => !item.isInit()) < 0) {\r\n this.nextValue = items.filter(item => item.checked).map(item => item.getValue());\r\n }\r\n });\r\n\r\n if (this.items && this.items.length > 0) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n\r\n /*\r\n * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage\r\n */\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\r\n fieldset.detectChanges();\r\n }\r\n\r\n overrideHintParams(hint: HintComponent): void {\r\n hint.id = this.getHintId();\r\n hint.detectChanges();\r\n\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n overrideErrorMessageParams(errorMessage: ErrorMessageComponent): void {\r\n errorMessage.id = this.getErrorId();\r\n errorMessage.detectChanges();\r\n\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n onDeleteHint(): void {\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n onDeleteErrorMessage(): void {\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Funciones para recuperar valores comunes\r\n */\r\n\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData ||\r\n (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n hasLegendComponent(): boolean {\r\n return !!this.legendComponent;\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.getIdPrefix() + '-error' : undefined;\r\n }\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.getIdPrefix() + '-hint' : undefined;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.name;\r\n }\r\n\r\n getCheckboxItems(): CheckboxItemComponent[] {\r\n let checkboxItems = [];\r\n if (this.checkboxComponentItems && this.checkboxComponentItems.length > 0) {\r\n checkboxItems = this.checkboxComponentItems.toArray();\r\n } else if (this.checkboxComponentItems2 && this.checkboxComponentItems2.length > 0) {\r\n checkboxItems = this.checkboxComponentItems2.toArray();\r\n }\r\n return checkboxItems;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ItemDateInputData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-date-input-item',\r\n template: ''\r\n})\r\nexport class DateInputItemComponent implements ItemDateInputData {\r\n @Input() classes?: string;\r\n\r\n}\r\n","import {Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport { ItemDateInputData } from '../../../interfaces';\r\nimport { LabelData } from '../../../interfaces';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-input-day',\r\n templateUrl: './date-input-day.component.html',\r\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputDayComponent)}],\r\n})\r\nexport class DateInputDayComponent extends DateInputItemComponent implements ItemDateInputData {\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() labelText: string;\r\n @Input() labelData: LabelData;\r\n @Input() disabled: boolean;\r\n @Input() hasErrors: boolean;\r\n @Input() value: any;\r\n @Input() autocomplete: string;\r\n @Input() pattern: string;\r\n @Input() classes: string;\r\n @Input() maxlength: number;\r\n\r\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n\r\n}\r\n","import {Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport { ItemDateInputData } from '../../../interfaces';\r\nimport { LabelData } from '../../../interfaces';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-input-month',\r\n templateUrl: './date-input-month.component.html',\r\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputMonthComponent)}],\r\n})\r\nexport class DateInputMonthComponent extends DateInputItemComponent implements ItemDateInputData {\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() labelText: string;\r\n @Input() labelData: LabelData;\r\n @Input() disabled: boolean;\r\n @Input() hasErrors: boolean;\r\n @Input() value: any;\r\n @Input() autocomplete: string;\r\n @Input() pattern: string;\r\n @Input() classes: string;\r\n @Input() maxlength: number;\r\n\r\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n\r\n}\r\n","import {Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport { ItemDateInputData } from '../../../interfaces';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-input-year',\r\n templateUrl: './date-input-year.component.html',\r\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputYearComponent)}],\r\n})\r\nexport class DateInputYearComponent extends DateInputItemComponent implements ItemDateInputData {\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() disabled: boolean;\r\n @Input() hasErrors: boolean;\r\n @Input() value: any;\r\n @Input() autocomplete: string;\r\n @Input() pattern: string;\r\n @Input() classes: string;\r\n @Input() maxlength: number;\r\n\r\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n\r\n}\r\n","import {Component, forwardRef, TemplateRef, ViewChild} from '@angular/core';\r\nimport { ItemDividerDateInputData } from '../../../interfaces/item-divider-date-input-data';\r\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-date-input-divider',\r\n templateUrl: './date-input-divider.component.html',\r\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputDividerComponent)}],\r\n})\r\nexport class DateInputDividerComponent extends DateInputItemComponent implements ItemDividerDateInputData {\r\n\r\n divider = this;\r\n\r\n @ViewChild('dividerContent', { static: true }) dividerContent: TemplateRef<any>;\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren, EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n Optional, Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild,\r\n HostBinding,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { FieldsetData, LegendData, ItemDateInputData, LabelData } from '../../interfaces';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\nimport { FieldsetComponent } from '../fieldset/fieldset.component';\r\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\r\nimport { DateInputDayComponent } from './date-input-day/date-input-day.component';\r\nimport { DateInputMonthComponent } from './date-input-month/date-input-month.component';\r\nimport { DateInputYearComponent } from './date-input-year/date-input-year.component';\r\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\r\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\r\nimport { DateInputDividerComponent } from './date-input-divider/date-input-divider.component';\r\nimport { StringUtils } from '../../../shared/utils/string-utils';\r\nimport { DateInputItemComponent } from './date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-date-input',\r\n templateUrl: './date-input.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateInputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateInputComponent extends FormFieldComponent<any> implements AfterContentInit, OnChanges {\r\n\r\n private static defaultItems = [\r\n {\r\n name: 'day',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'month',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'year',\r\n classes: 'w-20',\r\n maxlength: 4\r\n }\r\n ];\r\n\r\n @Input() ngModelGroup: string;\r\n\r\n @DesyOnInputChange('onExternalChange')\r\n @Input() items: ItemDateInputData[];\r\n @Output() itemsChange: EventEmitter<ItemDateInputData[]> = new EventEmitter<ItemDateInputData[]>();\r\n\r\n @DesyOnInputChange('onExternalChange')\r\n @Input() namePrefix: string;\r\n @Input() classes: string;\r\n @Input() errorMessage: string;\r\n @Input() id: string;\r\n // form group class - asignar clases a la etiqueta desy-input\r\n @HostBinding('class.c-form-group') cfg = true;\r\n @HostBinding('class.c-form-group--error') cfgr: boolean;\r\n @Input() @HostBinding('class') formGroupClasses: any;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n\r\n @ContentChildren(DateInputItemComponent) dateInputItemComponents: QueryList<DateInputItemComponent>;\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto FieldsetData (interfaz expuesta)\r\n * 2) incluir template legend\r\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n\r\n private contentInit = false;\r\n\r\n constructor(@Optional() public controlContainer: ControlContainer) {\r\n super();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInit = true;\r\n }\r\n\r\n initDefaultItems(): void {\r\n if (!this.items) {\r\n this.items = [\r\n {\r\n name: 'día',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'mes',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'año',\r\n classes: 'w-20',\r\n maxlength: 4\r\n }\r\n ];\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n if (this.value) {\r\n const items = this.getItems();\r\n items.forEach(item => item.value = this.value[this.getItemName(item)]);\r\n\r\n if (this.items) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\r\n fieldset.role = 'group';\r\n fieldset.detectChanges();\r\n }\r\n\r\n onExternalChange(): void {\r\n if (!this.contentInit) {\r\n return;\r\n }\r\n\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n\r\n const items = this.getItems();\r\n items.forEach(item => this.value[this.getItemName(item)] = item.value);\r\n const newVal = {};\r\n Object.assign(newVal, this.value);\r\n this.onChange(newVal);\r\n }\r\n\r\n onInternalChange(item: ItemDateInputData, itemValue: number): void {\r\n const itemName = this.getItemName(item);\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n\r\n if (this.value[itemName] !== itemValue) {\r\n this.value[itemName] = itemValue ? +itemValue : undefined;\r\n const newVal = {};\r\n Object.assign(newVal, this.value);\r\n this.onChange(newVal);\r\n if (item instanceof DateInputDayComponent || item instanceof DateInputMonthComponent || item instanceof DateInputYearComponent) {\r\n item.valueChange.emit(itemValue);\r\n }\r\n\r\n if (this.items) {\r\n item.value = itemValue;\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n }\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData\r\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n hasLegendComponent(): boolean {\r\n return !!this.legendComponent;\r\n }\r\n\r\n hasErrorMessageComponent(): boolean {\r\n return !!this.errorMessageComponent;\r\n }\r\n\r\n getItemName(item: ItemDateInputData): string {\r\n return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;\r\n }\r\n\r\n getItemLabel(item: ItemDateInputData): LabelData {\r\n let labelData: LabelData;\r\n if (item.labelData && (item.labelData.text || item.labelData.html)) {\r\n labelData = item.labelData;\r\n } else {\r\n labelData = {\r\n text: item.labelText ? item.labelText : (item.name ? item.name.toUpperCase() : null)\r\n };\r\n }\r\n return labelData;\r\n }\r\n\r\n getItemLabelRef(item: ItemDateInputData): TemplateRef<any> {\r\n return item instanceof DateInputDayComponent || item instanceof DateInputMonthComponent || item instanceof DateInputYearComponent ?\r\n item.labelRef : null;\r\n }\r\n\r\n getItems(): ItemDateInputData[] {\r\n let items;\r\n if (this.dateInputItemComponents && this.dateInputItemComponents.length > 0) {\r\n items = this.dateInputItemComponents.toArray();\r\n } else if (this.items) {\r\n items = this.items;\r\n } else if (this.contentInit) {\r\n items = DateInputComponent.defaultItems;\r\n } else {\r\n items = [];\r\n }\r\n\r\n\r\n return items;\r\n }\r\n\r\n getItemDividerTemplate(item: ItemDateInputData): TemplateRef<any> {\r\n return item.divider instanceof DateInputDividerComponent ? item.divider.dividerContent : null;\r\n }\r\n getItemDividerHtml(item: ItemDateInputData): string {\r\n return item.divider.html ? item.divider.html : `<p>${ StringUtils.escapeHtml(item.divider.text) }</p>`;\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n DoCheck,\r\n EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n Input,\r\n Output, QueryList, SimpleChanges\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { ButtonComponent } from '../../../desy-buttons/components/button/button.component';\r\n\r\n@Component({\r\n selector: 'desy-search-bar',\r\n templateUrl: './search-bar.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SearchBarComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SearchBarComponent extends FormFieldComponent<string> implements DoCheck { \r\n \r\n @ContentChildren(ButtonComponent) button: QueryList<ButtonComponent>;\r\n\r\n @Input() describedBy: string;\r\n @HostBinding('class') hasButtonClass: string;\r\n @Input() classes: any;\r\n @Input() buttonClasses: string;\r\n @Input() placeholder: string;\r\n @Output() clickEvent = new EventEmitter();\r\n \r\n value = '';\r\n \r\n onClick(event: any): void {\r\n if (!this.disabled) {\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n hasButton(): boolean {\r\n return this.button && this.button.length > 0;\r\n }\r\n\r\n ngDoCheck(): void {\r\n this.hasButtonClass = this.hasButton() ? 'relative flex flex-wrap items-end' : 'relative';\r\n } \r\n}\r\n","import {\r\n Component,\r\n Input,\r\n} from '@angular/core';\r\nimport {ITreeItem} from \"../interfaces/itree-item\";\r\nimport {ContentBaseComponent} from \"../../../../shared/components\";\r\n\r\n@Component({\r\n selector: 'desy-tree-sub',\r\n templateUrl: './tree-sub.component.html'\r\n})\r\nexport class TreeSubComponent extends ContentBaseComponent {\r\n\r\n @Input() classes: string;\r\n\r\n itemList: ITreeItem[];\r\n\r\n}\r\n","export class ITreeItem {\r\n id: string;\r\n subLevel: number;\r\n defaultId: string;\r\n}\r\n","export class SearchUtils {\r\n\r\n /**\r\n * Comprueba si una cadena de texto (target) contiene cualquier palabra de otro texto (text)\r\n * @param target - Texto en el que buscar\r\n * @param text - Texto a buscar\r\n * @param fullWord - Indica si las palabras del texto a buscar deben aparecer enteras\r\n */\r\n public static containsAnyWordFrom(target: string, text: string, fullWord?: boolean): boolean {\r\n let words: string[] = [];\r\n let includes = false;\r\n const simplifiedTarget = this.getSimplifiedString(target);\r\n\r\n if (text && text.split(' ').length > 1) {\r\n words = text.split(' ');\r\n }\r\n words.push(text);\r\n\r\n words.forEach(word => {\r\n if (simplifiedTarget && word) {\r\n if ((fullWord && simplifiedTarget === this.getSimplifiedString(word))\r\n || (!fullWord && simplifiedTarget.includes(this.getSimplifiedString(word)))) {\r\n includes = true;\r\n }\r\n }\r\n });\r\n\r\n return includes;\r\n }\r\n\r\n /**\r\n * Convierte a mayúsculas, elimina espacios y reemplaza/elimina caracteres especiales para realizar comparaciones más tolerantes\r\n * @param str - cadena de entrada\r\n */\r\n private static getSimplifiedString(str: string): string {\r\n let res = str;\r\n if (str) {\r\n res = str.toLocaleUpperCase().trim();\r\n // acentos\r\n res = res.replace(/Á/g, 'A');\r\n res = res.replace(/É/g, 'E');\r\n res = res.replace(/Í/g, 'I');\r\n res = res.replace(/Ó/g, 'O');\r\n res = res.replace(/Ú/g, 'U');\r\n res = res.replace(/À/g, 'A');\r\n res = res.replace(/È/g, 'E');\r\n res = res.replace(/Ì/g, 'I');\r\n res = res.replace(/Ò/g, 'O');\r\n res = res.replace(/Ù/g, 'U');\r\n res = res.replace(/Ä/g, 'A');\r\n res = res.replace(/Ë/g, 'E');\r\n res = res.replace(/Ï/g, 'I');\r\n res = res.replace(/Ö/g, 'O');\r\n res = res.replace(/Ü/g, 'U');\r\n\r\n res = res.replace('Á', 'A');\r\n res = res.replace('É', 'E');\r\n res = res.replace('Í', 'I');\r\n res = res.replace('Ó', 'O');\r\n res = res.replace('Ú', 'U');\r\n res = res.replace('À', 'A');\r\n res = res.replace('È', 'E');\r\n res = res.replace('Ì', 'I');\r\n res = res.replace('Ò', 'O');\r\n res = res.replace('Ù', 'U');\r\n res = res.replace('Ä', 'A');\r\n res = res.replace('Ë', 'E');\r\n res = res.replace('Ï', 'I');\r\n res = res.replace('Ö', 'O');\r\n res = res.replace('Ü', 'U');\r\n\r\n // signos puntuacion\r\n res = res.replace(',', '');\r\n res = res.replace('.', '');\r\n res = res.replace('\\'', '');\r\n res = res.replace('\"', '');\r\n res = res.replace(/\\,/g, '');\r\n res = res.replace(/\\./g, '');\r\n res = res.replace(/\\'/g, '');\r\n res = res.replace(/\\\"/g, '');\r\n }\r\n\r\n return res;\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {LabelComponent} from \"../../label/label.component\";\r\nimport {HintComponent} from \"../../hint/hint.component\";\r\nimport {DesyOnInputChange} from \"../../../../shared/decorators/desy-on-input-change.decorator\";\r\nimport {SearchUtils} from \"../../../../shared/utils/search-utils\";\r\nimport {AccessibilityComponent} from \"../../../../shared/components\";\r\n\r\n@Component({\r\n selector: 'desy-tree-checkbox',\r\n templateUrl: './tree-checkbox.component.html'\r\n})\r\nexport class TreeCheckboxComponent extends AccessibilityComponent implements OnInit {\r\n\r\n @ViewChild('input', { static: true }) inputElement: ElementRef;\r\n @ViewChild('contentWrapper', { static: true }) contentWrapper: ElementRef;\r\n\r\n @DesyOnInputChange('onIdChange')\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() type: 'radio'|'checkbox'|null|undefined;\r\n @Input() classes: string;\r\n\r\n @Input() value: any;\r\n\r\n @Input() checked: boolean;\r\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input() isIndeterminate: boolean;\r\n\r\n @DesyOnInputChange('setIndeterminateStatus')\r\n @Input() indeterminateChecked: boolean;\r\n @Output() indeterminateCheckedChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input() disabled: boolean;\r\n @Input() hasDividers: boolean;\r\n\r\n @DesyOnInputChange('onDescribedByChange')\r\n @Input() describedBy: string;\r\n @Input() hasError = false;\r\n\r\n @DesyOnInputChange('overrideLabelParams')\r\n @Input() labelComponent: LabelComponent;\r\n\r\n @DesyOnInputChange('overrideHintParams')\r\n @Input() hintComponent: HintComponent;\r\n\r\n itemDescribedBy: string;\r\n\r\n private _lastIndeterminate;\r\n private _hasInit = false;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this._hasInit = true;\r\n this.onDescribedByChange();\r\n }\r\n\r\n detectChanges(): void {\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n hasChanged(): void {\r\n if (this._hasInit) {\r\n\r\n const input = this.inputElement.nativeElement;\r\n\r\n // Se establece el cambio a visualizar en el input\r\n if (this.isIndeterminate) {\r\n if (input.readOnly) {\r\n input.checked = false;\r\n input.readOnly = false;\r\n } else if (!input.checked) {\r\n input.readOnly = true;\r\n input.indeterminate = true;\r\n }\r\n }\r\n\r\n this.setIndeterminateChecked(input.indeterminate);\r\n this.checkedChange.emit(input.checked);\r\n }\r\n }\r\n\r\n onIdChange(): void {\r\n this.overrideLabelParams();\r\n this.overrideHintParams();\r\n }\r\n\r\n setIndeterminateStatus(): void {\r\n const input = this.inputElement?.nativeElement;\r\n if (input) {\r\n if (this.indeterminateChecked) {\r\n input.readOnly = true;\r\n input.indeterminate = true;\r\n } else if (input.readOnly) {\r\n input.readOnly = false;\r\n input.indeterminate = false;\r\n }\r\n }\r\n }\r\n\r\n setIndeterminateChecked(indeterminateChecked: boolean): void {\r\n this.indeterminateChecked = indeterminateChecked;\r\n this._lastIndeterminate = indeterminateChecked;\r\n this.indeterminateCheckedChange.emit(indeterminateChecked);\r\n this.changeDetector.detectChanges(); // Avisa al elemento input para que actualice su estado\r\n }\r\n\r\n focus(): void {\r\n this.inputElement.nativeElement.focus();\r\n }\r\n\r\n matchesText(value: string): boolean {\r\n const checkboxText = this.contentWrapper.nativeElement.textContent;\r\n return SearchUtils.containsAnyWordFrom(checkboxText, value);\r\n }\r\n\r\n preventDefault(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n getHintId(): string {\r\n return this.hintComponent ? this.hintComponent.id : '';\r\n }\r\n\r\n overrideLabelParams(): void {\r\n if (this.labelComponent) {\r\n this.labelComponent.for = this.id + '-input';\r\n if (!this.labelComponent.classes) {\r\n this.labelComponent.classes = 'block relative -top-xs -left-8 pl-8 py-xs';\r\n }\r\n this.labelComponent.detectChanges();\r\n }\r\n }\r\n\r\n overrideHintParams(): void {\r\n if (this.hintComponent) {\r\n if (!this.hintComponent.id) {\r\n this.hintComponent.id = this.id + '-item-hint';\r\n }\r\n this.hintComponent.detectChanges();\r\n }\r\n this.onDescribedByChange();\r\n }\r\n\r\n getItemDescribedBy(): string {\r\n return (this.describedBy ? this.describedBy : '') + ' ' + this.getHintId();\r\n }\r\n\r\n onDescribedByChange(): void {\r\n if (this.ariaDescribedBy) {\r\n this.itemDescribedBy = this.ariaDescribedBy;\r\n } else {\r\n this.itemDescribedBy = this.getItemDescribedBy();\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren, ElementRef,\r\n EventEmitter,\r\n forwardRef, HostBinding,\r\n Input,\r\n OnChanges,\r\n Output, SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {DesyContentChild} from \"../../../../shared/decorators/desy-content-child.decorator\";\r\nimport {TreeSubComponent} from \"../tree-sub/tree-sub.component\";\r\nimport {ITreeItem} from \"../interfaces/itree-item\";\r\nimport {HintComponent} from \"../../hint/hint.component\";\r\nimport {LabelComponent} from \"../../label/label.component\";\r\nimport {QuitTreeItemFocusOptions} from \"../interfaces/quit-tree-item-focus-options\";\r\nimport {TreeCheckboxComponent} from \"../tree-checkbox/tree-checkbox.component\";\r\nimport {AccessibilityComponent} from \"../../../../shared/components\";\r\nimport {DesyOnInputChange} from \"../../../../shared/decorators/desy-on-input-change.decorator\";\r\nimport {SearchUtils} from \"../../../../shared/utils/search-utils\";\r\n\r\n@Component({\r\n selector: 'desy-tree-item',\r\n templateUrl: './tree-item.component.html',\r\n providers: [\r\n {\r\n provide: ITreeItem,\r\n useExisting: forwardRef(() => TreeItemComponent)\r\n }\r\n ]\r\n})\r\nexport class TreeItemComponent extends AccessibilityComponent implements OnChanges, ITreeItem {\r\n\r\n private static _treeItemKeySuffix = 0; // Sufijo estático para generar siempre claves distintas\r\n @ViewChild('hiddenWrapper') hiddenWrapper: ElementRef;\r\n\r\n @DesyOnInputChange('setDefaultIdRecursive')\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() value: string;\r\n @Input() classes: string;\r\n @Input() active: boolean;\r\n @Input() disabled: boolean;\r\n @Input() title: string;\r\n @Input() hasDividers: boolean;\r\n @Input() isIndeterminate: boolean;\r\n\r\n @Input() checked: boolean;\r\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\r\n checkedChangeForTree: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input() expanded: boolean;\r\n @Output() expandedChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input() indeterminateChecked: boolean;\r\n @Output() indeterminateCheckedChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideSubValues'})\r\n @ContentChildren(TreeSubComponent) sub: TreeSubComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HintComponent) hint: HintComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) label: LabelComponent;\r\n\r\n @ViewChild(TreeCheckboxComponent) checkbox: TreeCheckboxComponent;\r\n\r\n /*\r\n * Identificador del wrapper del componente. Se utiliza para recorrer el árbol en sentido inverso y que cada item\r\n * sepa cuál es su item/árbol padre.\r\n * Esto es necesario ya que, a la hora de construir un árbol dinámico con templates,\r\n * el decorador @ContentChildren no funciona correctamente y no los detecta.\r\n * Dejo el enlace de un problema similar: https://github.com/angular/angular/issues/21751\r\n */\r\n @HostBinding('attr.desy-tree-item-key')\r\n readonly treeItemKey: string = TreeItemComponent.generateStaticItemKey();\r\n\r\n type: 'radio'|'checkbox'|null|undefined;\r\n subLevel: number; // Nivel dentro del arbol. 0 son los items a nivel de raiz.\r\n\r\n // Propiedades definidas por el componente árbol que el item puede utilizar, sobrescribir o ampliar\r\n parentName: string;\r\n defaultId;\r\n inheritedExpandedFirstLevel: boolean;\r\n inheritedDecoupleChildFromParent: boolean;\r\n inheritedDescribedBy: string;\r\n inheritedHasError: boolean;\r\n allParentsExpanded = true; // True si el elemento es visible según los elementos expandidos\r\n inheritedMatchesSearch = true; // True si el elemento es visible según los criterios de búsqueda\r\n orderInTree: number;\r\n\r\n // Evento para emitir al componente arbol cuando se pretende abandonar el foco del item\r\n quitFocus: EventEmitter<QuitTreeItemFocusOptions> = new EventEmitter<QuitTreeItemFocusOptions>();\r\n\r\n isFocus = false;\r\n isHover = false;\r\n private _matchesValidText = false; // True si el contenido del item encaja con los criterios de búsqueda y se está filtrando\r\n\r\n constructor(private changeDetector: ChangeDetectorRef, private element: ElementRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.sub && this.sub.itemList) {\r\n this.sub.itemList.forEach(item => (item as TreeItemComponent).refreshAllParentsExpandedRecursive(this.allParentsExpanded && this.expanded));\r\n }\r\n\r\n for (const propName in changes) {\r\n if (changes.hasOwnProperty(propName)) {\r\n switch (propName) {\r\n case 'checked': {\r\n // Reasignamos el valor de checked cuando detectamos el cambio en la entrada\r\n setTimeout(() => {\r\n this.setChecked(this.checked, false, false);\r\n if (this.inheritedExpandedFirstLevel && this.checked && !this.expanded) {\r\n this.expandSub(true);\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /*\r\n * Métodos expuestos que permiten configurar al ítem de forma externa\r\n */\r\n\r\n focus(): void {\r\n this.checkbox?.focus();\r\n this.handleItemFocus(true);\r\n }\r\n\r\n setCheckedAutomaticallyDependingOnChildren(): void {\r\n if (this.sub) {\r\n this.sub.itemList.forEach(item => (item as TreeItemComponent).setCheckedAutomaticallyDependingOnChildren());\r\n if (this.areAllChildrenChecked()) {\r\n if (this.indeterminateChecked) {\r\n this.setIndeterminateChecked(false);\r\n }\r\n\r\n if (!this.checked) {\r\n this.setChecked(true, true);\r\n }\r\n } else if (this.hasChildrenCheckedOrIndeterminate()) {\r\n if (!this.indeterminateChecked) {\r\n this.setIndeterminateChecked(true);\r\n }\r\n\r\n if (this.checked) {\r\n this.setChecked(false, true);\r\n }\r\n } else {\r\n if (this.indeterminateChecked) {\r\n this.setIndeterminateChecked(false);\r\n }\r\n\r\n if (this.checked) {\r\n this.setChecked(false, true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n refreshAllParentsExpandedRecursive(value): void {\r\n this.allParentsExpanded = value;\r\n if (this.sub) {\r\n this.sub.itemList.forEach(item => (item as TreeItemComponent).refreshAllParentsExpandedRecursive(value && this.expanded));\r\n }\r\n }\r\n\r\n detectChanges(): void {\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n expandSub(value: boolean): void {\r\n this.expanded = value;\r\n if (this.sub) {\r\n this.sub.itemList.forEach(item => (item as TreeItemComponent).refreshAllParentsExpandedRecursive(this.allParentsExpanded && value));\r\n }\r\n this.expandedChange.emit(value);\r\n }\r\n\r\n /*\r\n * Gestion de eventos\r\n */\r\n\r\n handleCheckboxChange(checked: boolean): void {\r\n this.setChecked(checked, false);\r\n if (this.inheritedExpandedFirstLevel && checked && !this.expanded) {\r\n this.expandSub(true);\r\n }\r\n }\r\n\r\n handleIndeterminateCheckedChange(indeterminate: boolean): void {\r\n this.indeterminateCheckedChange.emit(indeterminate);\r\n }\r\n\r\n handleItemFocus(value, condition=true): void {\r\n if (condition) {\r\n this.isFocus = value;\r\n }\r\n }\r\n\r\n handleItemHover(value, condition=true): void {\r\n if (condition) {\r\n this.isHover = value;\r\n }\r\n }\r\n\r\n handleArrowUp(event: KeyboardEvent, condition=true): void {\r\n if (condition) {\r\n event.preventDefault();\r\n this.quitFocus.emit({\r\n nextElement: 'previous',\r\n currentItem: this\r\n });\r\n }\r\n }\r\n\r\n handleHome(event: KeyboardEvent, condition=true): void {\r\n if (condition) {\r\n event.preventDefault();\r\n this.quitFocus.emit({\r\n nextElement: 'first',\r\n currentItem: this\r\n });\r\n }\r\n }\r\n\r\n handleEnd(event: KeyboardEvent, condition=true): void {\r\n if (condition) {\r\n event.preventDefault();\r\n this.quitFocus.emit({\r\n nextElement: 'last',\r\n currentItem: this\r\n });\r\n }\r\n }\r\n\r\n handleArrowDown(event: KeyboardEvent, condition=true): void {\r\n if (condition) {\r\n event.preventDefault();\r\n this.quitFocus.emit({\r\n nextElement: 'next',\r\n currentItem: this\r\n });\r\n }\r\n }\r\n\r\n handleArrowRight(event: KeyboardEvent, condition=true): void {\r\n if (condition && this.sub && this.sub.itemList?.length > 0) {\r\n event.preventDefault();\r\n if (this.expanded) {\r\n this.quitFocus.emit({\r\n nextElement: 'firstChild',\r\n currentItem: this\r\n });\r\n } else {\r\n this.expandSub(true);\r\n }\r\n }\r\n }\r\n\r\n handleArrowLeft(event: KeyboardEvent, condition=true): void {\r\n if (condition) {\r\n event.preventDefault();\r\n if (this.expanded) {\r\n this.expandSub(false);\r\n } else if (this.subLevel > 0) {\r\n this.quitFocus.emit({\r\n nextElement: 'parent',\r\n currentItem: this\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Setters and getters\r\n */\r\n\r\n setChecked(checked: boolean, ignoreInTree: boolean, emitEvent = true): void {\r\n if (!this.disabled) {\r\n this.checked = checked;\r\n }\r\n\r\n if (!this.inheritedDecoupleChildFromParent && this.sub && this.sub.itemList && !this.indeterminateChecked) {\r\n this.sub.itemList.forEach(item => {\r\n (item as TreeItemComponent).setIndeterminateChecked(false);\r\n (item as TreeItemComponent).setChecked(checked, true)\r\n });\r\n }\r\n\r\n if (emitEvent) {\r\n this.checkedChange.emit(checked);\r\n }\r\n\r\n if (!ignoreInTree) {\r\n this.checkedChangeForTree.emit(checked);\r\n }\r\n }\r\n\r\n setIndeterminateChecked(indeterminate: boolean): void {\r\n if (!this.disabled) {\r\n this.indeterminateChecked = indeterminate;\r\n this.indeterminateCheckedChange.emit(indeterminate);\r\n }\r\n }\r\n\r\n setSubLevel(subLevel: number): void {\r\n this.subLevel = subLevel;\r\n if (this.sub && this.sub.itemList) {\r\n this.sub.itemList.forEach(item => (item as TreeItemComponent).setSubLevel(subLevel + 1));\r\n }\r\n }\r\n\r\n setOrderRecursively(order: number): number {\r\n this.orderInTree = order;\r\n let newOrder = order + 1;\r\n if (this.sub && this.sub.itemList) {\r\n this.sub.itemList.forEach(item => {\r\n newOrder = (item as TreeItemComponent).setOrderRecursively(newOrder);\r\n });\r\n }\r\n return newOrder;\r\n }\r\n\r\n setDefaultId(defaultId: string): void {\r\n this.defaultId = defaultId;\r\n this.setDefaultIdRecursive();\r\n }\r\n\r\n setDefaultIdRecursive(): void {\r\n if (this.sub && this.sub.itemList) {\r\n this.sub.itemList.forEach((item, index) => {\r\n (item as TreeItemComponent).setDefaultId(`sub-${this.getId()}-${index}`);\r\n });\r\n }\r\n }\r\n\r\n getId(): string {\r\n return this.id ? this.id : this.defaultId;\r\n }\r\n\r\n isHidden(): boolean {\r\n return !this.inheritedMatchesSearch && (!this.sub || this.areAllChildrenHidden());\r\n }\r\n\r\n areAllChildrenHidden(): boolean {\r\n const children = this.sub.itemList;\r\n return children.findIndex(child => !(child as TreeItemComponent).isHidden()) < 0;\r\n }\r\n\r\n areAllChildrenChecked(): boolean {\r\n const children = this.sub.itemList;\r\n return children.findIndex(child => !(child as TreeItemComponent).checked) < 0;\r\n }\r\n\r\n hasChildrenCheckedOrIndeterminate(): boolean {\r\n const children = this.sub.itemList;\r\n return children.findIndex(child => (child as TreeItemComponent).checked || (child as TreeItemComponent).indeterminateChecked) >= 0;\r\n }\r\n\r\n matchesText(value: string): boolean {\r\n let matches: boolean;\r\n if (this.allParentsExpanded && !this.isHidden()) {\r\n matches = this.checkbox?.matchesText(value);\r\n } else {\r\n const itemText = this.hiddenWrapper.nativeElement.textContent;\r\n matches = SearchUtils.containsAnyWordFrom(itemText, value);\r\n }\r\n this._matchesValidText = value ? matches : false;\r\n return matches;\r\n }\r\n\r\n getKey(): string {\r\n return this.treeItemKey;\r\n }\r\n\r\n getParentKey(): string {\r\n let parentKey: string;\r\n let parentElement = this.element.nativeElement.parentElement;\r\n while (parentElement && parentElement.tagName !== 'BODY' && parentElement.tagName !== 'DESY-TREE-ITEM' && parentElement.tagName !== 'DESY-TREE') {\r\n parentElement = parentElement.parentElement;\r\n }\r\n\r\n if (parentElement.tagName === 'BODY') {\r\n throw new Error('Parent for tree-item not found');\r\n }\r\n\r\n if (parentElement.tagName === 'DESY-TREE') {\r\n parentKey = 'root';\r\n }\r\n\r\n if (parentElement.tagName === 'DESY-TREE-ITEM') {\r\n parentKey = parentElement.getAttribute('desy-tree-item-key');\r\n }\r\n\r\n return parentKey;\r\n }\r\n\r\n isActive(): boolean {\r\n return this.active || this._matchesValidText;\r\n }\r\n\r\n /*\r\n * Métodos privados\r\n */\r\n\r\n /**\r\n * Genera una clave única para el componente\r\n * @private\r\n */\r\n private static generateStaticItemKey(): string {\r\n const key = 'tree-item-key-' + TreeItemComponent._treeItemKeySuffix;\r\n TreeItemComponent._treeItemKeySuffix++;\r\n return key;\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren, EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output, QueryList,\r\n SimpleChanges, TemplateRef, ViewChild\r\n} from '@angular/core';\r\nimport {DesyContentChild} from \"../../../shared/decorators/desy-content-child.decorator\";\r\nimport {TreeItemComponent} from \"./tree-item/tree-item.component\";\r\nimport {DesyOnInputChange} from \"../../../shared/decorators/desy-on-input-change.decorator\";\r\nimport {NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {FormFieldComponent} from \"../form-field/form-field.component\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {FieldsetComponent} from \"../fieldset/fieldset.component\";\r\nimport {QuitTreeItemFocusOptions} from \"./interfaces/quit-tree-item-focus-options\";\r\nimport {SearchBarComponent} from \"../search-bar/search-bar.component\";\r\n\r\n@Component({\r\n selector: 'desy-tree',\r\n templateUrl: './tree.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TreeComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class TreeComponent extends FormFieldComponent<any[]> implements OnChanges, OnDestroy {\r\n\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() name: string;\r\n @Input() type: 'radio'|'checkbox'|null|undefined;\r\n @Input() describedBy: string;\r\n\r\n @Input() formGroupClasses: any;\r\n\r\n @Input() expandedFirstLevel = true;\r\n @Input() decoupleChildFromParent = false;\r\n\r\n @Input() disableDefaultSearch = false;\r\n\r\n @DesyOnInputChange('onSearchMatchValuesChange')\r\n @Input() searchMatchValues: string[];\r\n @Output() searchMatchValuesChange: EventEmitter<string[]> = new EventEmitter<string[]>();\r\n\r\n @DesyOnInputChange('configureAllItems')\r\n @ContentChildren(TreeItemComponent, { descendants: true }) allItems: QueryList<TreeItemComponent>;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideSearchBarParams'})\r\n @ContentChildren(SearchBarComponent) searchBarComponent: SearchBarComponent;\r\n\r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n\r\n private rootItems: TreeItemComponent[] = [];\r\n private _itemListSubscription: Subscription;\r\n private _allItemListSubscription: Subscription;\r\n private _itemListCheckedSubscriptions: Subscription[] = [];\r\n private _itemListQuitFocusSubscriptions: Subscription[] = [];\r\n private _alreadyConfiguringItems = false;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.clearSubscriptions(this._itemListCheckedSubscriptions);\r\n this.clearSubscriptions(this._itemListQuitFocusSubscriptions);\r\n this._itemListSubscription?.unsubscribe();\r\n this._allItemListSubscription?.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.configureAllItems();\r\n }\r\n\r\n /**\r\n * Se sobrescribe el valor para actualizar los items\r\n * @Override\r\n */\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.configureAllItems(true);\r\n this.onChange(this.value);\r\n }\r\n\r\n /*\r\n * Eventos\r\n */\r\n\r\n /**\r\n * Actualiza el valor del componente al checkquearse un ítem\r\n * @param originItem ítem modificado\r\n */\r\n updateValueFromItems(originItem?: TreeItemComponent): void {\r\n\r\n // Si es radio, se desactivan el resto de items cuando se activa otro item\r\n if (this.type !== 'checkbox') {\r\n const items = this.getAllItemsInOrder();\r\n items.forEach(item => {\r\n if (item !== originItem && item.checked) {\r\n item.setChecked(false, true);\r\n }\r\n });\r\n } else if (!this.decoupleChildFromParent) {\r\n this.rootItems.forEach(item => item.setCheckedAutomaticallyDependingOnChildren());\r\n }\r\n\r\n this.value = [];\r\n const items = this.getAllItemsInOrder();\r\n items.forEach(item => {\r\n if (item.checked) {\r\n this.value.push(item.value);\r\n }\r\n });\r\n this.onChange(this.value);\r\n }\r\n\r\n /**\r\n * Gestiona cuando el foco abandona un ítem desde un evento de teclado controlado\r\n * @param options\r\n */\r\n handleItemQuitFocus(options: QuitTreeItemFocusOptions): void {\r\n if (options && options.nextElement) {\r\n const items = this.getAllItemsInOrder();\r\n const focusableItems = items.filter(item => !item.isHidden() && !item.disabled && item.allParentsExpanded);\r\n switch (options.nextElement) {\r\n case \"first\":\r\n focusableItems[0].focus();\r\n break;\r\n case \"last\":\r\n focusableItems[focusableItems.length - 1].focus();\r\n break;\r\n case \"parent\":\r\n const currentSubLevel = options.currentItem.subLevel;\r\n if (currentSubLevel > 0) {\r\n const currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);\r\n const parent = focusableItems.slice(0, currentItemIndex).reverse().find(item => item.subLevel < currentSubLevel);\r\n if (parent) {\r\n parent.focus();\r\n }\r\n }\r\n break;\r\n case \"firstChild\":\r\n case \"next\":\r\n if (options.currentItem) {\r\n let currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);\r\n if (currentItemIndex < focusableItems.length - 1) {\r\n focusableItems[currentItemIndex + 1].focus();\r\n }\r\n }\r\n break;\r\n case \"previous\":\r\n if (options.currentItem) {\r\n const currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);\r\n if (currentItemIndex > 0) {\r\n focusableItems[currentItemIndex - 1].focus();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Realiza la búsqueda interna de los items en el componente\r\n * @param value texto de búsqueda\r\n */\r\n onSearch(value: string): void {\r\n if (!this.disableDefaultSearch) {\r\n if (value && value.length > 0) {\r\n this.searchMatchValues = this.allItems.filter(item => item.matchesText(value)).map(item => item.value);\r\n } else {\r\n this.searchMatchValues = null;\r\n }\r\n this.searchMatchValuesChange.emit(this.searchMatchValues);\r\n }\r\n }\r\n\r\n /*\r\n * Eventos al cambiar propiedades\r\n */\r\n\r\n /**\r\n * Configura los items del árbol\r\n */\r\n configureAllItems(isValueChange = false): void {\r\n\r\n if (!this._alreadyConfiguringItems) {\r\n this._alreadyConfiguringItems = true;\r\n\r\n // Lo realizamos desde un setTimeout para que todos los inputs, values y demás vivan en paz y armonía\r\n setTimeout(() => {\r\n if (this.allItems?.length > 0) {\r\n this.clearSubscriptions(this._itemListCheckedSubscriptions);\r\n this.clearSubscriptions(this._itemListQuitFocusSubscriptions);\r\n this.allItems.forEach(item => {\r\n item.parentName = this.name;\r\n item.type = this.type;\r\n item.inheritedDescribedBy = this.getDescribedByForItems();\r\n item.inheritedExpandedFirstLevel = this.expandedFirstLevel;\r\n item.inheritedDecoupleChildFromParent = this.decoupleChildFromParent;\r\n if ((this.value && this.value.length > 0) || isValueChange) {\r\n const valueList = this.value ? this.value : [];\r\n item.setChecked(!!valueList.find(v => v === item.value), true);\r\n }\r\n item.detectChanges();\r\n\r\n const checkedSubscription = item.checkedChangeForTree.subscribe(() => this.updateValueFromItems(item));\r\n this._itemListCheckedSubscriptions.push(checkedSubscription);\r\n\r\n const quitFocusSubscription = item.quitFocus.subscribe(options => this.handleItemQuitFocus(options));\r\n this._itemListQuitFocusSubscriptions.push(quitFocusSubscription);\r\n });\r\n\r\n this.setErrorInItems(this.hasErrorMessageComponent());\r\n\r\n this.buildTree();\r\n if (!this.value) {\r\n this.updateValueFromItems();\r\n }\r\n\r\n if (this.searchMatchValues) {\r\n this.onSearchMatchValuesChange();\r\n }\r\n }\r\n\r\n if (this.allItems && !this._allItemListSubscription) {\r\n this._allItemListSubscription = this.allItems.changes.subscribe(() => this.configureAllItems());\r\n }\r\n\r\n this.changeDetector.detectChanges();\r\n this._alreadyConfiguringItems = false;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Modifica los items visibles según el filtro de búsqueda\r\n */\r\n onSearchMatchValuesChange(): void {\r\n if (this.allItems) {\r\n this.allItems.forEach(item => {\r\n item.inheritedMatchesSearch = true;\r\n });\r\n\r\n if (this.searchMatchValues !== null && this.searchMatchValues !== undefined) {\r\n this.allItems.forEach(item => {\r\n if (this.searchMatchValues.findIndex(value => item.value === value) < 0) {\r\n item.inheritedMatchesSearch = false;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n /*\r\n * Getters and setters\r\n */\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.name;\r\n }\r\n\r\n getDescribedBy(): string {\r\n let describedBy = '';\r\n if (this.describedBy) {\r\n describedBy = this.describedBy;\r\n }\r\n\r\n if (this.hasHintComponent() && this.hintComponent.id) {\r\n describedBy = describedBy + ' ' + this.hintComponent.id;\r\n }\r\n\r\n if (this.hasErrorMessageComponent() && this.errorMessageComponent.id) {\r\n describedBy = describedBy + ' ' + this.errorMessageComponent.id;\r\n }\r\n\r\n return describedBy;\r\n }\r\n\r\n /**\r\n * Devuelve el valor de describedBy que se transmitirá a los items\r\n */\r\n getDescribedByForItems(): string {\r\n let describedBy;\r\n if (this.hasFieldsetComponent()) {\r\n describedBy = this.fieldsetComponent.describedBy;\r\n } else {\r\n describedBy = this.getDescribedBy();\r\n }\r\n\r\n return describedBy;\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n /**\r\n * Overrides super.getHintId();\r\n */\r\n getHintId(): string {\r\n return this.idPrefix ? this.idPrefix + '-hint' : this.hintComponent?.id;\r\n }\r\n\r\n /**\r\n * Overrides super.getHintId();\r\n */\r\n getErrorId(): string {\r\n return this.idPrefix ? this.idPrefix + '-error' : this.errorMessageComponent?.id;\r\n }\r\n\r\n /*\r\n * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage\r\n */\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = this.getDescribedBy();\r\n fieldset.detectChanges();\r\n }\r\n\r\n overrideSearchBarParams(searchbar: SearchBarComponent): void {\r\n const defaultOnChange = searchbar.onChange;\r\n const newOnChange = value => {\r\n this.onSearch(value);\r\n defaultOnChange(value);\r\n }\r\n searchbar.registerOnChange(newOnChange);\r\n }\r\n\r\n /**\r\n * Se llama desde FormField\r\n */\r\n overrideHintParams(hint): void {\r\n hint.id = this.getHintId();\r\n hint.detectChanges();\r\n }\r\n\r\n /**\r\n * Se llama desde FormField\r\n */\r\n overrideErrorMessageParams(errorMessage): void {\r\n errorMessage.id = this.getErrorId();\r\n this.setErrorInItems(this.hasErrorMessageComponent());\r\n errorMessage.detectChanges();\r\n }\r\n\r\n /**\r\n * Se llama desde FormField\r\n */\r\n onDeleteErrorMessage(errorMessage): void {\r\n this.setErrorInItems(this.hasErrorMessageComponent());\r\n }\r\n\r\n /*\r\n * Métodos privados\r\n */\r\n\r\n /**\r\n * Configura la estructura del árbol\r\n * @private\r\n */\r\n private buildTree(): void {\r\n\r\n // Se crea un mapa para tener accesibles los items por key y se borran los listados existentes\r\n const itemMap = {}\r\n this.rootItems = [];\r\n this.allItems.forEach(item => {\r\n const key = item.getKey();\r\n itemMap[key] = item;\r\n if (item.sub) {\r\n item.sub.itemList = [];\r\n }\r\n });\r\n\r\n // Se añaden los items a los listados correspondientes\r\n this.allItems.forEach(item => {\r\n const parentKey = item.getParentKey();\r\n if (parentKey === 'root') {\r\n this.rootItems.push(item);\r\n } else if (parentKey) {\r\n const sub = itemMap[parentKey].sub;\r\n if (sub) {\r\n sub.itemList.push(item);\r\n }\r\n }\r\n });\r\n\r\n // Se configuran los items desde root\r\n let order = 0;\r\n this.rootItems.forEach((item, index) => {\r\n item.setSubLevel(0);\r\n item.setDefaultId(`${this.idPrefix}-${index}`);\r\n item.refreshAllParentsExpandedRecursive(true);\r\n if (!this.decoupleChildFromParent) {\r\n item.setCheckedAutomaticallyDependingOnChildren();\r\n }\r\n order = item.setOrderRecursively(order);\r\n });\r\n }\r\n\r\n /**\r\n * Si tiene un mensaje de error, se indica a los items\r\n * @param hasError\r\n * @private\r\n */\r\n private setErrorInItems(hasError: boolean): void {\r\n if (this.allItems?.length > 0) {\r\n this.allItems.forEach(item => {\r\n item.inheritedHasError = hasError;\r\n item.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Limpia un listado de subscripciones\r\n * @param subscriptionList\r\n * @private\r\n */\r\n private clearSubscriptions(subscriptionList: Subscription[]): void {\r\n if (subscriptionList.length > 0) {\r\n subscriptionList.forEach(s => s.unsubscribe());\r\n subscriptionList.splice(0, subscriptionList.length)\r\n }\r\n }\r\n\r\n /**\r\n * Devuelve los items del árbol ordenados\r\n * @private\r\n */\r\n private getAllItemsInOrder(): TreeItemComponent[] {\r\n let list = [];\r\n if (this.allItems) {\r\n list = this.allItems.toArray().sort((a, b) => a.orderInTree > b.orderInTree ? 1 : -1)\r\n }\r\n return list\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, TemplateRef } from '@angular/core';\r\nimport { ItemCheckboxData, ItemRadioWithTemplateData } from '../interfaces';\r\n\r\n@Directive({\r\n selector: '[desyCondition]'\r\n})\r\nexport class ConditionDirective implements OnChanges {\r\n\r\n /**\r\n * Condition, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto ItemCheckboxData o ItemRadioWithTemplateData (interfaces expuesta)\r\n * 2) incluir value y el listado de ItemCheckboxData[] o ItemRadioWithTemplateData[]\r\n */\r\n @Input() item: ItemCheckboxData|ItemRadioWithTemplateData;\r\n\r\n @Input() value: any;\r\n @Input() items: ItemCheckboxData[]|ItemRadioWithTemplateData[];\r\n\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(): void {\r\n if (this.item) {\r\n this.item.conditionalHtml = this.templateRef;\r\n } else if (this.value && this.items) {\r\n for (const item of this.items) {\r\n if (item.value === this.value) {\r\n item.conditionalHtml = this.templateRef;\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport {TreeItemComponent} from \"../tree-item/tree-item.component\";\r\n\r\n@Component({\r\n selector: 'desy-tree-items-generator',\r\n templateUrl: './tree-items-generator.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TreeItemsGeneratorComponent implements OnInit {\r\n\r\n @ViewChild('content', { static: true }) content: TemplateRef<any>;\r\n\r\n @Input() items: any[];\r\n @Input() itemTemplate: TemplateRef<TreeItemComponent>;\r\n\r\n constructor(private viewContainerRef: ViewContainerRef) { }\r\n\r\n ngOnInit(): void {\r\n this.viewContainerRef.createEmbeddedView(this.content);\r\n }\r\n\r\n}\r\n","import { ButtonComponent } from './../../../../desy-buttons/components/button/button.component';\r\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ModalButtonData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-modal-button-primary',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ModalButtonPrimaryComponent extends ButtonComponent implements ModalButtonData {\r\n @Input() classes: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n}\r\n","import { ButtonComponent } from './../../../../desy-buttons/components/button/button.component';\r\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ModalButtonData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-modal-button-secondary',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ModalButtonSecondaryComponent extends ButtonComponent implements ModalButtonData {\r\n @Input() classes: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n}\r\n","import { ButtonLoaderComponent } from './../../../../desy-buttons/components/button-loader/button-loader.component';\r\nimport { ButtonComponent } from './../../../../desy-buttons/components/button/button.component';\r\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ModalButtonData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-modal-button-loader-primary',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ModalButtonLoaderPrimaryComponent extends ButtonLoaderComponent implements ModalButtonData {\r\n @Input() classes: string;\r\n @Input() state: string;\r\n @Output() clickEvent = new EventEmitter();\r\n}\r\n","import { ButtonLoaderComponent } from './../../../../desy-buttons/components/button-loader/button-loader.component';\r\nimport { ButtonComponent } from './../../../../desy-buttons/components/button/button.component';\r\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ModalButtonData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-modal-button-loader-secondary',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ModalButtonLoaderSecondaryComponent extends ButtonLoaderComponent implements ModalButtonData {\r\n @Input() classes: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren, ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport { ModalButtonData, ModalData, ModalIconData } from '../../interfaces';\r\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\r\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\nimport {ModalButtonPrimaryComponent} from './modal-button-primary/modal-button-primary.component';\r\nimport {ModalButtonSecondaryComponent} from './modal-button-secondary/modal-button-secondary.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport { ModalButtonLoaderPrimaryComponent } from './modal-button-loader-primary/modal-button-loader-primary.component';\r\nimport { ModalButtonLoaderSecondaryComponent } from './modal-button-loader-secondary/modal-button-loader-secondary.component';\r\n\r\n@Component({\r\n selector: 'desy-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ModalComponent extends AccessibilityComponent {\r\n\r\n @Input() title: ModalData;\r\n @Input() description: ModalData;\r\n @Input() itemsPrimary: ModalButtonData[];\r\n @Input() itemsSecondary: ModalButtonData[];\r\n @Input() itemsLoaderPrimary: ModalButtonData[];\r\n @Input() itemsLoaderSecondary: ModalButtonData[];\r\n @Input() icon: ModalIconData;\r\n @Input() headingLevel: number;\r\n\r\n @Input() isDismissible: boolean;\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Output() closeModal: EventEmitter<void> = new EventEmitter();\r\n @Output() clickButton: EventEmitter<any> = new EventEmitter();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @ContentChildren(ModalButtonPrimaryComponent) primaryButtonComponents: QueryList<ModalButtonPrimaryComponent>;\r\n @ContentChildren(ModalButtonSecondaryComponent) secondaryButtonComponents: QueryList<ModalButtonSecondaryComponent>;\r\n\r\n @ContentChildren(ModalButtonLoaderPrimaryComponent) primaryButtonLoaderComponents: QueryList<ModalButtonLoaderPrimaryComponent>;\r\n @ContentChildren(ModalButtonLoaderSecondaryComponent) secondaryButtonLoaderComponents: QueryList<ModalButtonLoaderSecondaryComponent>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n hasIconContent = true;\r\n descriptionIsHtml = true;\r\n descriptionIsEmpty = false;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n closeDialog(): void {\r\n this.closeModal.emit();\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.iconComponent) {\r\n type = this.iconComponent.type ? this.iconComponent.type.toLocaleLowerCase() : null;\r\n } else if (this.icon.type) {\r\n type = this.icon.type ? this.icon.type.toLocaleLowerCase() : null;\r\n }\r\n\r\n return type;\r\n }\r\n\r\n checkDescriptionContent(element: ElementRef): void {\r\n const childs: NodeListOf<ChildNode> = element.nativeElement.childNodes;\r\n let hasHtml = false;\r\n let hasContent = false;\r\n for (let i = 0; i < childs.length && !hasHtml; i++) {\r\n const item = childs.item(i);\r\n if (item.nodeType === Node.TEXT_NODE && item.textContent.length > 0) {\r\n hasContent = true;\r\n } else if (item.nodeType === Node.ELEMENT_NODE || item.nodeType === Node.CDATA_SECTION_NODE) {\r\n hasHtml = true;\r\n hasContent = true;\r\n }\r\n }\r\n\r\n const descriptionWasEmpty = this.descriptionIsEmpty;\r\n this.descriptionIsEmpty = !hasContent;\r\n this.descriptionIsHtml = hasHtml;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n clickButtonEmit(item: ModalButtonData, event): void{\r\n this.clickButton.emit(event);\r\n\r\n if (item instanceof ModalButtonPrimaryComponent || item instanceof ModalButtonSecondaryComponent || item instanceof ModalButtonLoaderPrimaryComponent || item instanceof ModalButtonLoaderSecondaryComponent) {\r\n item.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n handleIconContentEmpty(isEmpty: boolean): void {\r\n this.hasIconContent = !isEmpty;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n getTitleClasses(): string {\r\n let classes = 'c-h2 px-base text-center focus:outline-none focus:underline';\r\n if (this.titleComponent && this.titleComponent.classes) {\r\n classes = this.titleComponent.classes;\r\n } else if (this.title && this.title.classes) {\r\n classes = this.title.classes;\r\n }\r\n return classes;\r\n }\r\n\r\n getDescriptionClasses(): string {\r\n let classes = 'c-paragraph-base my-base text-center';\r\n if (this.descriptionComponent && this.descriptionComponent.classes) {\r\n classes = this.descriptionComponent.classes;\r\n } else if (this.description && this.description.classes) {\r\n classes = this.description.classes;\r\n }\r\n return classes;\r\n }\r\n\r\n getPrimaryItems(): ModalButtonData[]|ModalButtonPrimaryComponent[] {\r\n return this.primaryButtonComponents && this.primaryButtonComponents.length > 0 ? this.primaryButtonComponents.toArray()\r\n : this.itemsPrimary;\r\n }\r\n\r\n getSecondaryItems(): ModalButtonData[]|ModalButtonPrimaryComponent[] {\r\n return this.secondaryButtonComponents && this.secondaryButtonComponents.length > 0 ? this.secondaryButtonComponents.toArray()\r\n : this.itemsSecondary;\r\n }\r\n\r\n getPrimaryLoaderItems(): ModalButtonData[]|ModalButtonLoaderPrimaryComponent[] {\r\n return this.primaryButtonLoaderComponents && this.primaryButtonLoaderComponents.length > 0 ? this.primaryButtonLoaderComponents.toArray() : this.itemsLoaderPrimary;\r\n }\r\n\r\n getSecondaryLoaderItems(): ModalButtonData[]|ModalButtonLoaderSecondaryComponent[] {\r\n return this.secondaryButtonLoaderComponents && this.secondaryButtonLoaderComponents.length > 0 ? this.secondaryButtonLoaderComponents.toArray() : this.itemsLoaderSecondary;\r\n }\r\n}\r\n","import {\r\n Component,\r\n HostListener,\r\n OnChanges,\r\n OnDestroy,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n TemplateRef,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Output,\r\n HostBinding,\r\n EventEmitter, ComponentRef, ElementRef, Type, ComponentFactoryResolver\r\n} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\r\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\r\n\r\nlet numDialogsOpened = 0;\r\ntype DialogCreationCallback = ((dialog: DialogComponent, caller: ComponentRef<any>) => void);\r\n\r\n@Component({\r\n selector: 'desy-dialog',\r\n templateUrl: './dialog.component.html'\r\n})\r\nexport class DialogComponent extends AccessibilityComponent implements OnChanges, OnDestroy, AfterViewInit {\r\n\r\n static readonly DIALOG_OPEN_CLASS = 'has-dialog';\r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @ViewChild('container', {read: ViewContainerRef}) container: ViewContainerRef;\r\n @ViewChild('focusTrapWrapper') focusTrapWrapper: ElementRef;\r\n\r\n @Input() active: boolean;\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n @Input() id: any;\r\n @Input() caller: TemplateRef<any>;\r\n @Input() focusOnClose: string|HTMLElement;\r\n @Input() dismissOnBackdrop: boolean;\r\n @Input() classes: string;\r\n \r\n public callerType: Type<any>;\r\n public onCallerCreationCallback: DialogCreationCallback;\r\n\r\n lastActiveState = false;\r\n focusTrap: ConfigurableFocusTrap;\r\n clickOutsideEnabled = false;\r\n childElem: ElementRef;\r\n\r\n constructor(private cdRef: ChangeDetectorRef,\r\n private focusTrapFactory: ConfigurableFocusTrapFactory,\r\n private factoryResolver: ComponentFactoryResolver) {\r\n super();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.focusTrapWrapper) {\r\n this.handleActiveState();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n \r\n if (this.callerType) {\r\n const factory = this.factoryResolver.resolveComponentFactory(this.callerType);\r\n const component = this.container.createComponent(factory);\r\n if (this.onCallerCreationCallback) {\r\n this.onCallerCreationCallback(this, component);\r\n }\r\n }\r\n\r\n if (this.focusTrapWrapper.nativeElement.children && this.focusTrapWrapper.nativeElement.children.length === 1) {\r\n this.childElem = this.focusTrapWrapper.nativeElement.children[0];\r\n }\r\n\r\n this.handleActiveState();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.handleActiveState();\r\n }\r\n\r\n\r\n public dismiss(): void {\r\n this.activeChange.emit(false);\r\n }\r\n\r\n\r\n @HostListener('document:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n if (event.key === DialogComponent.KEY_CODE_ESC) {\r\n event.stopPropagation();\r\n this.dismiss();\r\n }\r\n }\r\n\r\n handleActiveState(): void {\r\n if (!this.focusTrap) {\r\n this.focusTrap = this.focusTrapFactory.create(this.focusTrapWrapper.nativeElement);\r\n }\r\n\r\n if (this.active !== this.lastActiveState) {\r\n this.lastActiveState = this.active;\r\n\r\n // Habilitar/deshabilitar scroll\r\n if (this.active && numDialogsOpened === 0) {\r\n document.body.classList.add(DialogComponent.DIALOG_OPEN_CLASS);\r\n } else if (!this.active && numDialogsOpened === 1) {\r\n document.body.classList.remove(DialogComponent.DIALOG_OPEN_CLASS);\r\n if (document.body.classList.length === 0) {\r\n document.body.removeAttribute('class');\r\n }\r\n }\r\n\r\n if (this.active) {\r\n setTimeout(() => this.focusTrap.focusInitialElement());\r\n numDialogsOpened++;\r\n } else {\r\n let focusElem: HTMLElement;\r\n this.focusTrap.destroy();\r\n if (this.focusOnClose) {\r\n if (typeof this.focusOnClose === 'string') {\r\n focusElem = document.getElementById(this.focusOnClose);\r\n } else {\r\n focusElem = this.focusOnClose;\r\n }\r\n } else {\r\n focusElem = FocusUtils.getFirstFocusableElement();\r\n }\r\n if (focusElem) {\r\n setTimeout(() => focusElem.focus());\r\n }\r\n numDialogsOpened--;\r\n }\r\n\r\n setTimeout(() => this.clickOutsideEnabled = this.active);\r\n }\r\n }\r\n\r\n handleClickOutside(): void {\r\n if (this.dismissOnBackdrop) {\r\n this.dismiss();\r\n }\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef, EmbeddedViewRef,\r\n Injectable,\r\n Injector,\r\n TemplateRef,\r\n Type\r\n} from '@angular/core';\r\nimport { DialogOptions, ModalOptions, OpenDialogResult } from '../interfaces';\r\nimport { DialogComponent } from '../components/dialog/dialog.component';\r\nimport { ModalComponent } from '../components/modal/modal.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n constructor(private factoryResolver: ComponentFactoryResolver,\r\n private defaultInjector: Injector,\r\n private appRef: ApplicationRef) { }\r\n\r\n openDialog(caller: Type<any>|ModalOptions|TemplateRef<any>,\r\n dialogOptions: DialogOptions): Promise<OpenDialogResult> {\r\n return new Promise<OpenDialogResult>((resolve, reject) => {\r\n\r\n if (!caller) {\r\n reject('caller is required');\r\n }\r\n\r\n if (!dialogOptions) {\r\n reject('dialogOptions is required');\r\n }\r\n\r\n const dialog = this.createDialog(dialogOptions);\r\n const result: OpenDialogResult = {\r\n dialog\r\n };\r\n\r\n if (caller instanceof Type) {\r\n dialog.instance.callerType = caller;\r\n dialog.instance.onCallerCreationCallback = (d, c) => {\r\n result.component = c;\r\n resolve(result);\r\n };\r\n } else if (caller instanceof TemplateRef) {\r\n dialog.instance.caller = caller;\r\n resolve(result);\r\n } else {\r\n dialog.instance.callerType = ModalComponent;\r\n dialog.instance.onCallerCreationCallback = (d, c) => {\r\n this.initModal(d, c, caller);\r\n result.component = c;\r\n resolve(result);\r\n };\r\n }\r\n });\r\n }\r\n\r\n closeDialog(dialog: ComponentRef<DialogComponent>|DialogComponent): void {\r\n if (dialog) {\r\n if (dialog instanceof ComponentRef) {\r\n dialog.instance.dismiss();\r\n } else {\r\n dialog.dismiss();\r\n }\r\n }\r\n }\r\n\r\n onCloseDialog(dialog: ComponentRef<DialogComponent>|DialogComponent): Promise<void> {\r\n return new Promise<void>((resolve => {\r\n let d;\r\n if (dialog instanceof ComponentRef) {\r\n d = dialog.instance;\r\n } else {\r\n d = dialog;\r\n }\r\n\r\n const subscription = d.activeChange.subscribe(() => {\r\n resolve();\r\n subscription.unsubscribe();\r\n });\r\n }));\r\n }\r\n\r\n private createDialog(dialogOptions: DialogOptions): ComponentRef<DialogComponent> {\r\n const factory = this.factoryResolver.resolveComponentFactory(DialogComponent);\r\n let dialog;\r\n if (dialogOptions.rootViewContainer) {\r\n dialog = dialogOptions.rootViewContainer.createComponent<DialogComponent>(factory);\r\n } else {\r\n dialog = factory.create(this.defaultInjector);\r\n this.appRef.attachView(dialog.hostView);\r\n const componentElement = (dialog.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(componentElement);\r\n }\r\n\r\n dialog.instance.active = true;\r\n if (dialogOptions) {\r\n Object.assign(dialog.instance, dialogOptions);\r\n }\r\n\r\n this.onCloseDialog(dialog).then(() => dialog.destroy());\r\n\r\n return dialog;\r\n }\r\n\r\n private initModal(dialog: DialogComponent, modalRef: ComponentRef<ModalComponent>, modalOptions: ModalOptions): void {\r\n modalRef.instance.title = modalOptions.title;\r\n modalRef.instance.description = modalOptions.description;\r\n modalRef.instance.itemsPrimary = modalOptions.itemsPrimary;\r\n modalRef.instance.itemsSecondary = modalOptions.itemsSecondary;\r\n modalRef.instance.icon = modalOptions.icon;\r\n\r\n modalRef.instance.isDismissible = modalOptions.isDismissible;\r\n modalRef.instance.id = modalOptions.id;\r\n modalRef.instance.classes = modalOptions.classes;\r\n modalRef.instance.caller = modalOptions.caller;\r\n\r\n if (modalOptions.isDismissible) {\r\n const subscription = modalRef.instance.closeModal.subscribe(() => {\r\n this.closeDialog(dialog);\r\n subscription.unsubscribe();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport { BreadcrumbsData } from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-breadcrumbs-item',\r\n templateUrl: './breadcrumbs-item.component.html'\r\n})\r\nexport class BreadcrumbsItemComponent extends ContentBaseComponent implements BreadcrumbsData {\r\n\r\n @Input() id?: string;\r\n @Input() routerLink?: string;\r\n\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { BreadcrumbsData } from '../../interfaces';\r\nimport { BreadcrumbsItemComponent } from './breadcrumbs-item/breadcrumbs-item.component';\r\n\r\n@Component({\r\n selector: 'desy-breadcrumbs',\r\n templateUrl: './breadcrumbs.component.html'\r\n})\r\nexport class BreadcrumbsComponent extends AccessibilityComponent {\r\n\r\n @Input() items: Array<BreadcrumbsData>;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n @Input() collapseOnMobile: boolean;\r\n @Input() hasBackButton: boolean;\r\n @ContentChildren(BreadcrumbsItemComponent) itemComponentList: QueryList<BreadcrumbsItemComponent>;\r\n\r\n constructor(private location: Location){\r\n super();\r\n }\r\n\r\n getLength(): number {\r\n let itemsLength: number = this.items ? this.items.length : this.itemComponentList.length;\r\n\r\n if (this.hasBackButton) {\r\n itemsLength += 1;\r\n }\r\n return itemsLength;\r\n }\r\n\r\n goBack(): void {\r\n this.location.back();\r\n }\r\n\r\n getItemList(): BreadcrumbsData[] {\r\n const itemList = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\r\n\r\n return itemList;\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-offcanvas-close-button',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class HeaderOffcanvasCloseButtonComponent extends ContentBaseComponent {\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-offcanvas-button',\r\n templateUrl: './header-offcanvas-button.component.html'\r\n})\r\nexport class HeaderOffcanvasButtonComponent extends ContentBaseComponent {\r\n\r\n openOffcanvas = async () => {};\r\n\r\n async handleClick(event: Event): Promise<void> {\r\n event.stopPropagation();\r\n await this.openOffcanvas();\r\n }\r\n\r\n\r\n}\r\n","import {\r\n Component,\r\n ComponentRef,\r\n ContentChildren,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {HeaderOffcanvasCloseButtonComponent} from './header-offcanvas-close-button/header-offcanvas-close-button.component';\r\nimport {DialogComponent} from '../../../../desy-modals/components/dialog/dialog.component';\r\nimport {DialogService} from '../../../../desy-modals/services/dialog.service';\r\nimport {DialogOptions} from '../../../../desy-modals/interfaces';\r\nimport {HeaderOffcanvasButtonComponent} from './header-offcanvas-button/header-offcanvas-button.component';\r\nimport {DesyOnInputChange} from '../../../../shared/decorators/desy-on-input-change.decorator';\r\n\r\n@Component({\r\n selector: 'desy-header-offcanvas',\r\n templateUrl: './header-offcanvas.component.html'\r\n})\r\nexport class HeaderOffcanvasComponent implements OnDestroy {\r\n\r\n private static dialogOptions: DialogOptions = {\r\n id: 'header-offcanvas-dialog',\r\n focusOnClose: 'header-offcanvas-button',\r\n ariaModal: 'true',\r\n ariaLabelledBy: 'header-offcanvas-button-text',\r\n role: 'dialog'\r\n };\r\n\r\n @DesyOnInputChange('setHostClass')\r\n @Input() classes: string;\r\n\r\n @HostBinding('class') hostClass = '-mr-2 flex lg:hidden';\r\n\r\n @ViewChild('offcanvasContent') offcanvasContent: TemplateRef<any>;\r\n\r\n @DesyContentChild({onSetCallbackName: 'bindButton'})\r\n @ContentChildren(HeaderOffcanvasButtonComponent) button: HeaderOffcanvasButtonComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) content: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HeaderOffcanvasCloseButtonComponent) closeButton: HeaderOffcanvasCloseButtonComponent;\r\n\r\n private dialog: ComponentRef<DialogComponent>;\r\n\r\n constructor(private dialogService: DialogService) {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n }\r\n\r\n async open(): Promise<void> {\r\n if (!this.isOpen()) {\r\n this.dialog = (await this.dialogService.openDialog(this.offcanvasContent, HeaderOffcanvasComponent.dialogOptions)).dialog;\r\n this.dialogService.onCloseDialog(this.dialog).then(() => this.dialog = null);\r\n }\r\n }\r\n\r\n close(): void {\r\n if (this.isOpen()) {\r\n this.dialogService.closeDialog(this.dialog);\r\n this.dialog = null;\r\n const elementToFocus = document.getElementById('header-offcanvas-button');\r\n elementToFocus?.focus()\r\n }\r\n }\r\n\r\n isOpen(): boolean {\r\n return !!this.dialog;\r\n }\r\n\r\n /**\r\n * Estable las clases del elemento html del componente\r\n */\r\n setHostClass(): void {\r\n this.hostClass = this.classes ? this.classes : '-mr-2 flex lg:hidden';\r\n }\r\n\r\n /**\r\n * Enlaza el botón del componente hijo con la acción de abrir de este componente\r\n * @param button componente botón pasado como contenido\r\n */\r\n bindButton(button: HeaderOffcanvasButtonComponent): void {\r\n button.openOffcanvas = this.open.bind(this);\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {HeaderNavigationItemData} from '../../../../interfaces/header-navigation-item-data';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-navigation-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class HeaderNavigationItemComponent extends ContentBaseComponent implements HeaderNavigationItemData {\r\n @Input() href: string;\r\n @Input() routerLink: string;\r\n @Input() fragment: string;\r\n @Input() id: string;\r\n @Input() active: boolean;\r\n @Input() disabled: boolean;\r\n}\r\n","import {AfterContentInit, Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport { HeaderNavigationItemData } from '../../../interfaces/header-navigation-item-data';\r\nimport { AccessibilityComponent } from '../../../../shared/components';\r\nimport {HeaderNavigationItemComponent} from './header-navigation-item/header-navigation-item.component';\r\n\r\n@Component({\r\n selector: 'desy-header-navigation',\r\n templateUrl: './header-navigation.component.html'\r\n})\r\nexport class HeaderNavigationComponent extends AccessibilityComponent implements AfterContentInit {\r\n\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() items: HeaderNavigationItemData[];\r\n\r\n @ContentChildren(HeaderNavigationItemComponent) itemComponents: QueryList<HeaderNavigationItemComponent>;\r\n\r\n ngAfterContentInit(): void {\r\n const items = this.getItems();\r\n }\r\n\r\n getItemId(item: HeaderNavigationItemData, index: number): string {\r\n const prefix = this.idPrefix ? this.idPrefix : 'header-nav-item';\r\n const suffix = index > 0 ? '-' + index : '';\r\n return item.id ? item.id : prefix + suffix;\r\n }\r\n\r\n getItems(): HeaderNavigationItemData[] {\r\n return this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {NavItemData, NavItemEventData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-nav-item',\r\n templateUrl: './nav-item.component.html'\r\n})\r\nexport class NavItemComponent extends ContentBaseComponent implements NavItemData {\r\n\r\n @Input() id?: string;\r\n @Input() active?: boolean;\r\n @Input() classes?: string;\r\n @Input() title?: string;\r\n @Input() href?: string;\r\n @Input() routerLink?: string|any[];\r\n @Input() fragment?: string;\r\n @Input() target?: string;\r\n @Input() disabled?: boolean;\r\n @Input() divider?: boolean;\r\n\r\n @Output() clickEvent = new EventEmitter<NavItemEventData>();\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList\r\n} from '@angular/core';\r\nimport {\r\n AccessibilityComponent\r\n} from '../../../shared/components';\r\nimport {NavItemData, NavItemEventData} from '../../interfaces';\r\nimport {NavItemComponent} from './nav-item/nav-item.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-nav',\r\n templateUrl: './nav.component.html'\r\n})\r\nexport class NavComponent extends AccessibilityComponent {\r\n\r\n @Input() hasNav = true;\r\n @Input() idPrefix: string;\r\n @Input() items: NavItemData[];\r\n @Input() classes: string;\r\n\r\n @Output() clickEvent = new EventEmitter<NavItemEventData>();\r\n @ContentChildren(NavItemComponent) itemComponentList: QueryList<NavItemComponent>;\r\n\r\n onClick(event: any, item: NavItemData): void {\r\n const itemsActiveChange = [];\r\n if (!item.active) {\r\n itemsActiveChange.push(item);\r\n }\r\n\r\n const itemList = this.getItemList();\r\n itemList.forEach(i => {\r\n if (i.active && i !== item) {\r\n itemsActiveChange.push(i);\r\n }\r\n i.active = false;\r\n });\r\n item.active = true;\r\n\r\n // Se emite el evento sólo para los items cuyo valor de active ha sido modificado\r\n itemsActiveChange.forEach(i => {\r\n if (i instanceof NavItemComponent) {\r\n i.activeChange.emit(i.active);\r\n }\r\n });\r\n\r\n this.clickEvent.emit({ item, event });\r\n if (item instanceof NavItemComponent) {\r\n item.clickEvent.emit({ item, event });\r\n }\r\n }\r\n\r\n getItemList(): NavItemData[] {\r\n const itemList = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\r\n \r\n return itemList;\r\n }\r\n\r\n getItemId(item: NavItemData, index: number): string {\r\n let id;\r\n if (item.id) {\r\n id = item.id;\r\n } else if (index === 0) {\r\n id = this.getIdPrefix();\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'nav-item';\r\n }\r\n\r\n movePrevious(event: KeyboardEvent, currentIndex: number): void {\r\n event.preventDefault();\r\n const items = this.getItemList();\r\n let nextIndex = currentIndex - 1;\r\n while (nextIndex >= 0 && !this.isFocusableItem(items[nextIndex])) {\r\n nextIndex--;\r\n }\r\n\r\n if (nextIndex < items.length) {\r\n const itemElem = document.getElementById(this.getItemId(items[nextIndex], nextIndex));\r\n if (itemElem) {\r\n itemElem.focus();\r\n }\r\n }\r\n }\r\n\r\n moveNext(event: KeyboardEvent, currentIndex: number): void {\r\n event.preventDefault();\r\n const items = this.getItemList();\r\n let nextIndex = currentIndex + 1;\r\n while (nextIndex < items.length && !this.isFocusableItem(items[nextIndex])) {\r\n nextIndex++;\r\n }\r\n\r\n if (nextIndex < items.length) {\r\n const itemElem = document.getElementById(this.getItemId(items[nextIndex], nextIndex));\r\n if (itemElem) {\r\n itemElem.focus();\r\n }\r\n }\r\n }\r\n\r\n simulateClick(event: KeyboardEvent, item: NavItemData, index: number): void {\r\n event.preventDefault();\r\n const element = document.getElementById(this.getItemId(item, index));\r\n element?.click();\r\n }\r\n\r\n\r\n private isFocusableItem(item: NavItemData): boolean {\r\n return !item.active && !item.disabled;\r\n }\r\n\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {NavComponent} from '../../nav/nav.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {AccessibilityComponent} from \"../../../../shared/components\";\r\n\r\n@Component({\r\n selector: 'desy-header-subnav',\r\n templateUrl: './header-subnav.component.html'\r\n})\r\nexport class HeaderSubnavComponent extends AccessibilityComponent {\r\n\r\n @Input() hiddenText: string;\r\n @Input() classesContainer: string;\r\n @Input() classesTooltip: string;\r\n @Input() classes: string;\r\n\r\n @DesyContentChild({onSetCallbackName: 'overrideNavParams'})\r\n @ContentChildren(NavComponent) nav: NavComponent;\r\n\r\n hasSubnavItems(): boolean {\r\n return this.nav && this.nav.getItemList().length > 0;\r\n }\r\n\r\n overrideNavParams(nav: NavComponent): void {\r\n nav.hasNav = true;\r\n nav.idPrefix = 'header-subnav-nav-item';\r\n nav.ariaLabel = 'Aplicaciones';\r\n nav.classes = 'w-max max-w-64';\r\n // nav.id = 'id-subnav-nav'; // No existe como param de navComponent\r\n }\r\n\r\n\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {NavComponent} from '../../nav/nav.component';\r\nimport {AccessibilityComponent} from \"../../../../shared/components\";\r\nimport {ContentComponent} from \"../../../../desy-commons/components/content/content.component\";\r\n\r\n@Component({\r\n selector: 'desy-header-dropdown',\r\n templateUrl: './header-dropdown.component.html',\r\n})\r\nexport class HeaderDropdownComponent extends AccessibilityComponent {\r\n\r\n @Input() hiddenText: string;\r\n @Input() classesContainer: string;\r\n @Input() classesTooltip: string;\r\n @Input() classes: string;\r\n\r\n @DesyContentChild({onSetCallbackName: 'overrideNavParams'})\r\n @ContentChildren(NavComponent) nav: NavComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n overrideNavParams(nav: NavComponent): void {\r\n nav.hasNav = true;\r\n nav.idPrefix = 'header-dropdown-nav-item';\r\n nav.ariaLabel = 'Menú de usuario';\r\n nav.classes = 'w-max max-w-64';\r\n // nav.id = 'id-dropdown-nav'; // No existe como param de navComponent\r\n }\r\n\r\n}\r\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-skip-link',\r\n templateUrl: './skip-link.component.html'\r\n})\r\nexport class SkipLinkComponent extends AccessibilityComponent {\r\n\r\n @Input() html: string;\r\n @Input() text: string;\r\n @Input() fragment: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n hasContent = true;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-skip-link sr-only active:not-sr-only focus:not-sr-only focus:outline-none focus:shadow-outline-focus block p-base bg-warning-base text-center text-black underline';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n return classNames;\r\n }\r\n\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { HeaderSubnavData } from '../../interfaces';\r\nimport { HeaderNavigationData } from '../../interfaces';\r\nimport { HeaderDropdownData } from '../../interfaces';\r\nimport { HeaderOffcanvasData } from '../../interfaces';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {HeaderOffcanvasComponent} from './header-offcanvas/header-offcanvas.component';\r\nimport {HeaderNavigationComponent} from './header-navigation/header-navigation.component';\r\nimport {HeaderSubnavComponent} from './header-subnav/header-subnav.component';\r\nimport {HeaderDropdownComponent} from './header-dropdown/header-dropdown.component';\r\nimport {SkipLinkComponent} from '../skip-link/skip-link.component';\r\n\r\n@Component({\r\n selector: 'desy-header',\r\n templateUrl: './header.component.html'\r\n})\r\nexport class HeaderComponent extends AccessibilityComponent {\r\n\r\n @Input() classes: string;\r\n @Input() containerClasses: string;\r\n @Input() homepageUrl: string;\r\n @Input() homepageRouterLink: string;\r\n @Input() homepageFragment: string;\r\n @Input() expandedLogo: boolean;\r\n @Input() noLogo: boolean;\r\n @Input() customLogoHtml: string;\r\n @Input() customNavigationHtml: string;\r\n\r\n @Input() subnavData: HeaderSubnavData;\r\n @Input() navigationData: HeaderNavigationData;\r\n @Input() dropdownData: HeaderDropdownData;\r\n @Input() offcanvasData: HeaderOffcanvasData;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideSkipLinkParams'})\r\n @ContentChildren(SkipLinkComponent) skiplinkComponent: SkipLinkComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HeaderSubnavComponent) subnavComponent: HeaderSubnavComponent;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideNavigationParams'})\r\n @ContentChildren(HeaderNavigationComponent) navigationComponent: HeaderNavigationComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HeaderDropdownComponent) dropdownComponent: HeaderDropdownComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HeaderOffcanvasComponent) offcanvasComponent: HeaderOffcanvasComponent;\r\n\r\n\r\n overrideSkipLinkParams(skiplinkComponent: SkipLinkComponent): void {\r\n skiplinkComponent.id = skiplinkComponent.id || 'skip-link';\r\n skiplinkComponent.text = 'Saltar al contenido principal';\r\n }\r\n\r\n overrideNavigationParams(navigationComponent: HeaderNavigationComponent): void {\r\n navigationComponent.idPrefix = 'header-nav-item';\r\n navigationComponent.ariaLabel = 'Menú principal';\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {NavigationItemData} from '../../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-footer-navigation-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class FooterNavigationItemComponent extends ContentBaseComponent implements NavigationItemData {\r\n @Input() href?: string;\r\n @Input() routerLink?: string;\r\n @Input() fragment?: string;\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport {NavigationData} from '../../../interfaces';\r\nimport {FooterNavigationItemComponent} from './footer-navigation-item/footer-navigation-item.component';\r\n\r\n@Component({\r\n selector: 'desy-footer-navigation',\r\n templateUrl: './footer-navigation.component.html'\r\n})\r\nexport class FooterNavigationComponent implements NavigationData {\r\n @Input() title: string;\r\n @Input() columns: number;\r\n\r\n @ContentChildren(FooterNavigationItemComponent) itemComponents: QueryList<FooterNavigationItemComponent>;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {MetaItemData} from '../../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-footer-meta-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class FooterMetaItemComponent extends ContentBaseComponent implements MetaItemData {\r\n @Input() href?: string;\r\n @Input() routerLink?: string;\r\n @Input() fragment?: string;\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport {MetaData} from '../../../interfaces';\r\nimport {FooterMetaItemComponent} from './footer-meta-item/footer-meta-item.component';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-footer-meta',\r\n template: ''\r\n})\r\nexport class FooterMetaComponent extends ContentBaseComponent implements MetaData {\r\n\r\n @Input() visuallyHiddenTitle: string;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n @ContentChildren(FooterMetaItemComponent) itemComponents: QueryList<FooterMetaItemComponent>;\r\n}\r\n","import { DescriptionComponent } from './../../../desy-commons/components/description/description.component';\r\nimport { DescriptionData } from '../../../desy-commons/interfaces/';\r\nimport {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {MetaData, MetaItemData, NavigationData, NavigationItemData} from '../../interfaces';\r\nimport {IconData} from '../../../desy-commons/interfaces';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {FooterNavigationComponent} from './footer-navigation/footer-navigation.component';\r\nimport {FooterMetaComponent} from './footer-meta/footer-meta.component';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-footer',\r\n templateUrl: './footer.component.html'\r\n})\r\nexport class FooterComponent extends AccessibilityComponent {\r\n\r\n @Input() meta: MetaData;\r\n @Input() navigation: NavigationData[];\r\n @Input() icon: IconData;\r\n @Input() containerClasses: string;\r\n @Input() classes: string;\r\n @Input() description: DescriptionData;\r\n @Input() noLogo: boolean;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(FooterMetaComponent) metaComponent: FooterMetaComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent\r\n\r\n @ContentChildren(FooterNavigationComponent) navigationComponent: QueryList<FooterNavigationComponent>;\r\n\r\n\r\n getNavigationItems(): NavigationData[] {\r\n const navItems = this.navigationComponent && this.navigationComponent.length > 0 ? this.navigationComponent.toArray() : this.navigation;\r\n return navItems && navItems.length > 0 ? navItems : null;\r\n }\r\n\r\n getNavigationItemItems(navigation: NavigationData): NavigationItemData[] {\r\n return navigation instanceof FooterNavigationComponent ? navigation.itemComponents.toArray() : navigation.items;\r\n }\r\n\r\n getMetaItems(meta: MetaData): MetaItemData[] {\r\n return meta instanceof FooterMetaComponent ? meta.itemComponents.toArray() : meta.items;\r\n }\r\n\r\n getMetaContent(meta: MetaData): ContentComponent {\r\n return meta instanceof FooterMetaComponent ? meta.contentComponent : null;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ErrorSummaryData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-error-summary-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ErrorSummaryItemComponent extends ContentBaseComponent implements ErrorSummaryData {\r\n\r\n @Input() fragment: string;\r\n @Input() id: string;\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ContentChildren,\r\n QueryList\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {ErrorSummaryData} from '../../interfaces';\r\nimport {ErrorSummaryItemComponent} from './error-summary-item/error-summary-item.component';\r\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\r\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-error-summary',\r\n templateUrl: './error-summary.component.html'\r\n})\r\nexport class ErrorSummaryComponent extends AccessibilityComponent {\r\n\r\n @Input() titleText: string;\r\n @Input() titleHtml: string;\r\n @Input() descriptionText: string;\r\n @Input() descriptionHtml: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n @Input() errorList: Array<ErrorSummaryData>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\r\n\r\n @ContentChildren(ErrorSummaryItemComponent) errorComponentList: QueryList<ErrorSummaryItemComponent>;\r\n\r\n lastErrorItemCount: number;\r\n\r\n getErrorItemList(): ErrorSummaryData[] {\r\n let errorItemList: ErrorSummaryData[];\r\n if (this.errorComponentList && this.errorComponentList.length > 0) {\r\n errorItemList = this.errorComponentList.toArray();\r\n } else {\r\n errorItemList = this.errorList ? this.errorList : null;\r\n }\r\n\r\n const lastLength = this.lastErrorItemCount;\r\n this.lastErrorItemCount = errorItemList ? errorItemList.length : null;\r\n\r\n return errorItemList;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {MenuHorizontalItemData, MenuHorizontalItemEventData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menu-horizontal-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class MenuHorizontalItemComponent extends ContentBaseComponent implements MenuHorizontalItemData {\r\n\r\n @Input() href?: string;\r\n @Input() routerLink?: string|any[];\r\n @Input() fragment?: string;\r\n @Input() target?: string;\r\n @Input() id?: string;\r\n @Input() active?: boolean;\r\n @Input() disabled?: boolean;\r\n @Input() classes?: string;\r\n\r\n @Output() clickEvent = new EventEmitter<MenuHorizontalItemEventData>();\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n}\r\n","import {Component, ContentChildren, EventEmitter, Input, OnChanges, Output, QueryList, SimpleChanges} from '@angular/core';\r\nimport { MenuHorizontalItemData, MenuHorizontalItemEventData } from '../../interfaces';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport {MenuHorizontalItemComponent} from './menu-horizontal-item/menu-horizontal-item.component';\r\n\r\n@Component({\r\n selector: 'desy-menu-horizontal',\r\n templateUrl: './menu-horizontal.component.html'\r\n})\r\nexport class MenuHorizontalComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() items: MenuHorizontalItemData[];\r\n\r\n @ContentChildren(MenuHorizontalItemComponent) itemComponents: QueryList<MenuHorizontalItemComponent>;\r\n\r\n @Output() clickEvent = new EventEmitter<MenuHorizontalItemEventData>();\r\n\r\n onClick(event: any, item: MenuHorizontalItemData): void {\r\n const itemsActiveChange = [];\r\n if (!item.active) {\r\n itemsActiveChange.push(item);\r\n }\r\n\r\n const itemList = this.getItemList();\r\n itemList.forEach(i => {\r\n if (i.active && i !== item) {\r\n itemsActiveChange.push(i);\r\n }\r\n i.active = false;\r\n });\r\n item.active = true;\r\n\r\n // Se emite el evento sólo para los items cuyo valor de active ha sido modificado\r\n itemsActiveChange.forEach(i => {\r\n if (i instanceof MenuHorizontalItemComponent) {\r\n i.activeChange.emit(i.active);\r\n }\r\n });\r\n\r\n this.clickEvent.emit({ item, event });\r\n if (item instanceof MenuHorizontalItemComponent) {\r\n item.clickEvent.emit({ item, event });\r\n }\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'menu-item';\r\n }\r\n\r\n getItemList(): MenuHorizontalItemData[] {\r\n const itemList = this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items; \r\n return itemList;\r\n }\r\n\r\n\r\n getItemId(item: MenuHorizontalItemData, index: number): string {\r\n let id;\r\n if (item.id) {\r\n id = item.id;\r\n } else if (index === 0) {\r\n id = this.getIdPrefix();\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {MenuVerticalSubItemsData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical-item-sub-item',\r\n templateUrl: './menu-vertical-item-sub-item.component.html'\r\n})\r\nexport class MenuVerticalItemSubItemComponent extends ContentBaseComponent implements MenuVerticalSubItemsData {\r\n\r\n @Input() id?: string;\r\n @Input() classes?: string;\r\n @Input() href?: string;\r\n @Input() routerLink?: string;\r\n @Input() routerLinkActiveClasses?: string;\r\n @Input() fragment?: string;\r\n @Input() target?: string;\r\n @Input() disabled?: boolean;\r\n @Input() active?: boolean;\r\n @Input() divider?: boolean;\r\n @Input() title?: string;\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport {MenuVerticalSubData} from '../../../interfaces';\r\nimport {MenuVerticalItemSubItemComponent} from '../menu-vertical-item-sub-item/menu-vertical-item-sub-item.component';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical-item-sub',\r\n templateUrl: './menu-vertical-item-sub.component.html'\r\n})\r\nexport class MenuVerticalItemSubComponent extends ContentBaseComponent implements MenuVerticalSubData {\r\n @Input() classes?: string;\r\n\r\n @ContentChildren(MenuVerticalItemSubItemComponent) itemComponents: QueryList<MenuVerticalItemSubItemComponent>;\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {MenuVerticalItemsData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {MenuVerticalItemSubComponent} from '../menu-vertical-item-sub/menu-vertical-item-sub.component';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical-item',\r\n templateUrl: './menu-vertical-item.component.html'\r\n})\r\nexport class MenuVerticalItemComponent extends ContentBaseComponent implements MenuVerticalItemsData {\r\n\r\n @Input() id?: string;\r\n @Input() classes?: string;\r\n @Input() href?: string;\r\n @Input() routerLink?: string;\r\n @Input() routerLinkActiveClasses?: string;\r\n @Input() fragment?: string;\r\n @Input() target?: string;\r\n @Input() disabled?: boolean;\r\n @Input() active?: boolean;\r\n @Input() divider?: boolean;\r\n @Input() title?: string;\r\n @Input() expanded?: boolean; // no se utiliza\r\n\r\n @DesyContentChild()\r\n @ContentChildren(MenuVerticalItemSubComponent) subComponent: MenuVerticalItemSubComponent;\r\n\r\n}\r\n","import {Component, Input, ContentChildren, QueryList} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport {MenuVerticalItemsData, MenuVerticalSubData, MenuVerticalSubItemsData} from '../../interfaces';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { StringUtils } from '../../../shared/utils/string-utils';\r\nimport {MenuVerticalItemComponent} from './menu-vertical-item/menu-vertical-item.component';\r\nimport {MenuVerticalItemSubComponent} from './menu-vertical-item-sub/menu-vertical-item-sub.component';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical',\r\n templateUrl: './menu-vertical.component.html',\r\n animations: [\r\n trigger('displayMenuVertical', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class MenuVerticalComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() items: MenuVerticalItemsData[];\r\n @Input() hasUnderline: boolean;\r\n @Input() classes: string;\r\n\r\n @ContentChildren(MenuVerticalItemComponent) itemComponents: QueryList<MenuVerticalItemComponent>;\r\n\r\n getItemHtml(item: MenuVerticalItemsData): string {\r\n let itemHtml: string;\r\n if (item.active) {\r\n itemHtml = item.html ? `<strong>${ item.html }</strong>` : `<strong>${ StringUtils.escapeHtml(item.text) }</strong>`;\r\n } else {\r\n itemHtml = item.html;\r\n }\r\n\r\n return itemHtml;\r\n }\r\n\r\n getId(item: MenuVerticalItemsData, i: number): string {\r\n if (item.id) {\r\n return item.id;\r\n } else {\r\n const idPrefix = this.idPrefix ? this.idPrefix : 'nav-item';\r\n if (i === 0) {\r\n return idPrefix + '-0';\r\n } else {\r\n return idPrefix + '-' + i;\r\n }\r\n }\r\n }\r\n\r\n getSubItemId(item: MenuVerticalItemsData, itemIndex: number, subItemIndex: number): string{\r\n let subItemId: string;\r\n const sub = this.getItemSub(item);\r\n const subItems = this.getSubItems(sub);\r\n const subItem = subItems[subItemIndex];\r\n if (subItem) {\r\n if (subItem.id) {\r\n subItemId = subItem.id;\r\n } else {\r\n const itemId = this.getId(item, itemIndex);\r\n subItemId = subItemIndex === 0 ? `sub-${itemId}` : `sub-${itemId}-${subItemIndex}`;\r\n }\r\n }\r\n\r\n return subItemId;\r\n }\r\n\r\n getItems(): MenuVerticalItemsData[] {\r\n const itemList = this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\r\n return itemList;\r\n }\r\n\r\n getItemSub(item: MenuVerticalItemsData): MenuVerticalSubData {\r\n return item instanceof MenuVerticalItemComponent ? item.subComponent : item.sub;\r\n }\r\n\r\n getSubItems(sub: MenuVerticalSubData): MenuVerticalSubItemsData[] {\r\n const subItems = sub instanceof MenuVerticalItemSubComponent ? sub.itemComponents.toArray() : sub.items;\r\n return subItems && subItems.length > 0 ? subItems : null;\r\n }\r\n}\r\n","import {\r\n ContentChild,\r\n ContentChildren,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Output,\r\n QueryList,\r\n AfterContentChecked\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyMenubaritem]'\r\n})\r\nexport class MenubaritemDirective implements AfterContentChecked {\r\n @ContentChild('link', { read: ElementRef }) link: ElementRef;\r\n @ContentChild('itemContentWrapper', { read: ElementRef }) itemContentWrapper: ElementRef;\r\n @ContentChild('popupMenu', { read: ElementRef }) popupMenu: ElementRef;\r\n @ContentChildren('popupMenuItem', { read: ElementRef, descendants: true}) popupMenuItems: QueryList<ElementRef>;\r\n\r\n @Output() contentChanged: EventEmitter<any> = new EventEmitter();\r\n\r\n private lastPopupMenu: ElementRef;\r\n private lastPopupMenuItems: QueryList<ElementRef>;\r\n private lastItemContentWrapper: ElementRef;\r\n private lastLink: ElementRef;\r\n\r\n contentHasBeenChecked = false;\r\n\r\n constructor(public elementRef: ElementRef) { }\r\n\r\n ngAfterContentChecked(): void {\r\n if (this.popupMenu !== this.lastPopupMenu || this.popupMenuItems !== this.lastPopupMenuItems\r\n || this.link !== this.lastLink || this.itemContentWrapper !== this.lastItemContentWrapper) {\r\n setTimeout(() => this.contentChanged.emit());\r\n this.lastPopupMenu = this.popupMenu;\r\n this.lastPopupMenuItems = this.popupMenuItems;\r\n this.lastLink = this.link;\r\n this.lastItemContentWrapper = this.itemContentWrapper;\r\n }\r\n\r\n if (!this.contentHasBeenChecked) {\r\n setTimeout(() => this.contentHasBeenChecked = true);\r\n }\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {MenubarItemSubItemSubItem} from '../../../../interfaces/menubar-item-sub-item-sub-item';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menubar-subsubitem',\r\n templateUrl: './menubar-subsubitem.component.html'\r\n})\r\nexport class MenubarSubsubitemComponent extends ContentBaseComponent implements MenubarItemSubItemSubItem {\r\n\r\n @Input() html?: string;\r\n @Input() text?: string;\r\n @Input() checked?: boolean;\r\n\r\n @Output() selected = new EventEmitter<any>();\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n} from '@angular/core';\r\nimport {MenubarItemSubItem} from '../../../../interfaces/menubar-item-sub-item';\r\nimport {MenubarItemSubItemSubItem} from '../../../../interfaces/menubar-item-sub-item-sub-item';\r\nimport {MenubarSubsubitemComponent} from '../menubar-subsubitem/menubar-subsubitem.component';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menubar-subitem',\r\n templateUrl: './menubar-subitem.component.html'\r\n})\r\nexport class MenubarSubitemComponent extends ContentBaseComponent implements MenubarItemSubItem {\r\n\r\n @Input() text?: string;\r\n @Input() html?: string;\r\n @Input() checked?: boolean;\r\n @Input() items?: MenubarItemSubItemSubItem[];\r\n\r\n @Output() selected = new EventEmitter<any>();\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n\r\n @ContentChildren(MenubarSubsubitemComponent) subItems: QueryList<MenubarSubsubitemComponent>;\r\n\r\n public getSubItems(): MenubarSubsubitemComponent[] {\r\n return this.subItems.toArray();\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n} from '@angular/core';\r\nimport {MenubarItem} from '../../../../interfaces/menubar-item';\r\nimport {MenubarItemSub} from '../../../../interfaces/menubar-item-sub';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\nimport {MenubarSubitemComponent} from '../menubar-subitem/menubar-subitem.component';\r\n\r\n@Component({\r\n selector: 'desy-menubar-item',\r\n templateUrl: './menubar-item.component.html'\r\n})\r\nexport class MenubarItemComponent extends ContentBaseComponent implements MenubarItem {\r\n\r\n @Input() href?: string;\r\n @Input() target?: string;\r\n @Input() routerLink?: string|any[];\r\n @Input() routerLinkActiveClasses?: string;\r\n @Input() fragment?: string;\r\n @Input() text?: string;\r\n @Input() html?: string;\r\n @Input() id?: string;\r\n @Input() sub?: MenubarItemSub;\r\n @Input() classes?: string;\r\n\r\n @Input() title?: string;\r\n @Input() disabled?: boolean;\r\n @Input() active?: boolean;\r\n\r\n @Output() selected = new EventEmitter<any>();\r\n\r\n @ContentChildren(MenubarSubitemComponent) subItems: QueryList<MenubarSubitemComponent>;\r\n\r\n public getSubItems(): MenubarSubitemComponent[] {\r\n return this.subItems.toArray();\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menubar-label',\r\n templateUrl: './menubar-label.component.html'\r\n})\r\nexport class MenubarLabelComponent extends ContentBaseComponent {\r\n\r\n @Input() classes: string;\r\n\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef,\r\n Component, ContentChildren,\r\n ElementRef, EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnChanges, Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {MenubarItem} from '../../interfaces/menubar-item';\r\nimport {MenubaritemDirective} from './directives/menubaritem.directive';\r\nimport {MenubarItemSubItem} from '../../interfaces/menubar-item-sub-item';\r\nimport {MenubarItemSubItemSubItem} from '../../interfaces/menubar-item-sub-item-sub-item';\r\nimport {LabelComponent} from '../../../desy-forms/components/label/label.component';\r\nimport {LabelData} from '../../../desy-forms/interfaces';\r\nimport {StringUtils} from '../../../shared/utils/string-utils';\r\nimport {MenubarItemComponent} from './components/menubar-item/menubar-item.component';\r\nimport {MenubarSubitemComponent} from './components/menubar-subitem/menubar-subitem.component';\r\nimport {MenubarSubsubitemComponent} from './components/menubar-subsubitem/menubar-subsubitem.component';\r\nimport {MenubarLabelComponent} from './components/menubar-label/menubar-label.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-menubar',\r\n templateUrl: './menubar.component.html'\r\n})\r\nexport class MenubarComponent extends AccessibilityComponent implements OnChanges, AfterViewInit {\r\n\r\n @Input() idPrefix: string;\r\n @Input() items: MenubarItem[];\r\n @Output() itemsChange = new EventEmitter<MenubarItem[]>();\r\n @Output() activeItemChange = new EventEmitter<MenubarItem>();\r\n @Output() activeSubItemChange = new EventEmitter<MenubarItemSubItem|MenubarItemSubItemSubItem>();\r\n\r\n /**\r\n * label, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente menubar-label anidado\r\n * 2) incluir template\r\n * 3) incluir objeto label (interfaz expuesta)\r\n * 4) incluir legendText - incluir un label con solo un texto\r\n */\r\n @Input() labelRef: TemplateRef<LabelComponent>;\r\n @Input() labelData: LabelData;\r\n @Input() labelText: string;\r\n\r\n @Input() @HostBinding('class') classes: any;\r\n @HostBinding('class.c-menubar') cfg = true\r\n @Input() @HostBinding('attr.id') id: any;\r\n\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.aria-modal') ariaModalData: any\r\n\r\n @ViewChild('menubar', { read: ElementRef }) menubar: ElementRef;\r\n @ViewChildren(MenubaritemDirective) menuItems: QueryList<MenubaritemDirective>;\r\n @DesyContentChild() @ContentChildren(MenubarLabelComponent) labelComponent: MenubarLabelComponent;\r\n @ContentChildren(MenubarItemComponent) itemComponentList: QueryList<MenubarItemComponent>;\r\n\r\n menuData: any[];\r\n viewInit = false;\r\n isFocused: boolean;\r\n currentFocusItemIndex = 0;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes?: SimpleChanges): void {\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.ariaModalData = this.ariaModal ? this.ariaModal : null;\r\n if (this.viewInit) {\r\n this.checkChanges();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.viewInit = true;\r\n this.checkChanges();\r\n }\r\n\r\n checkChanges(): void {\r\n if (!this.menuItems) {\r\n return;\r\n }\r\n \r\n this.menuData = [];\r\n this.getItems().forEach((_, index) => {\r\n const itemData = {\r\n open: false,\r\n currentFocusSubItemIndex: 0,\r\n currentFocusSubSubItemIndex: 0,\r\n menuItem: this.menuItems.toArray()[index]\r\n };\r\n this.menuData.push(itemData);\r\n });\r\n\r\n if (this.viewInit) {\r\n this.checkRequired();\r\n }\r\n\r\n\r\n const lastCurrentFocusItemIndex = this.currentFocusItemIndex;\r\n const items = this.getItems();\r\n if (items) {\r\n while (!this.isItemFocusable(this.currentFocusItemIndex % items.length)) {\r\n this.currentFocusItemIndex = (this.currentFocusItemIndex + items.length + 1) % items.length;\r\n if (this.currentFocusItemIndex === lastCurrentFocusItemIndex) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Eventos\r\n */\r\n\r\n handleMenuFocusIn(): void {\r\n this.isFocused = true;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleMenuFocusOut(event): void {\r\n if (!this.menubar.nativeElement.contains(event.relatedTarget)) {\r\n this.closeMenu();\r\n }\r\n this.isFocused = false;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleMenuItemClick(event, itemIndex: number): void {\r\n if (this.hasPopupMenu(itemIndex)) {\r\n event.preventDefault();\r\n const isOpen = this.menuData[itemIndex].open;\r\n this.closeMenu();\r\n if (!isOpen) {\r\n this.openMenu(itemIndex);\r\n }\r\n } else {\r\n this.activateMenuItem(itemIndex);\r\n }\r\n }\r\n\r\n handleMenuItemKeydown(event: KeyboardEvent, itemIndex: number): void {\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n case 'ArrowDown':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n setTimeout(() => this.focusFirstSubItem(itemIndex));\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n\r\n case 'Escape':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu(itemIndex);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowLeft':\r\n this.focusNextAvailableItem(itemIndex, -1);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowRight':\r\n this.focusNextAvailableItem(itemIndex, +1);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowUp':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n setTimeout(() => this.focusLastSubItem(itemIndex));\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Home':\r\n case 'PageUp':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu();\r\n }\r\n this.focusFirstItem();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'End':\r\n case 'PageDown':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu();\r\n }\r\n this.focusLastItem();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n default:\r\n if (this.isPrintableChar(event.key)) {\r\n this.focusItemByFirstChar(event.key);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handleMenuItemMouseOver(itemIndex: number): void {\r\n this.focusItem(itemIndex, true);\r\n }\r\n\r\n handlePopupMenuItemClick(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n this.focusItem(itemIndex);\r\n this.closeMenu(itemIndex);\r\n }\r\n\r\n handlePopupMenuItemKeydown(event: KeyboardEvent, itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n const currentSubIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\r\n const currentSubSubIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\r\n const items = this.getItems();\r\n switch (event.key) {\r\n case ' ':\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n if (this.mustCloseAfterSelectPopupItem(itemIndex, subItemIndex, subSubItemIndex)) {\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Enter':\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Escape':\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowUp':\r\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, -1);\r\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength - 1) % listLength);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowDown':\r\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, +1);\r\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength + 1) % listLength);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowLeft':\r\n this.closeMenu(itemIndex);\r\n this.focusItem((itemIndex + items.length - 1) % items.length);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowRight':\r\n this.closeMenu(itemIndex);\r\n this.focusItem((itemIndex + items.length + 1) % items.length);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Home':\r\n case 'PageUp':\r\n this.focusFirstSubItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'End':\r\n case 'PageDown':\r\n this.focusLastSubItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Tab':\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n break;\r\n\r\n default:\r\n if (this.isPrintableChar(event.key)) {\r\n this.focusSubItemByFirstChar(itemIndex, event.key);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handlePopupMenuItemMouseOver(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n this.focusSubItem(itemIndex, subItemIndex, subSubItemIndex);\r\n }\r\n\r\n /*\r\n * Comunes\r\n */\r\n\r\n checkRequired(): void {\r\n\r\n\r\n const items = this.getItems();\r\n\r\n // No se ha puesto label required porque en algunos ejemplos de desy-html no aparece\r\n }\r\n\r\n\r\n activateMenuItem(itemIndex: number): void {\r\n const items = this.getItems();\r\n this.activeItemChange.emit(items[itemIndex] as MenubarItem);\r\n if (items[itemIndex] instanceof MenubarItemComponent) {\r\n (items[itemIndex] as MenubarItemComponent).selected.emit();\r\n }\r\n }\r\n\r\n activatePopupMenuItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\r\n let subSubItems = [];\r\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\r\n subSubItems = this.getSubItemSubitems(item);\r\n item = subSubItems[subSubItemIndex];\r\n }\r\n\r\n let checkedChange = false;\r\n if (item.role === 'menuitemcheckbox') {\r\n item.checked = !item.checked;\r\n checkedChange = true;\r\n } else if (item.role === 'menuitemradio') {\r\n checkedChange = !item.checked;\r\n subSubItems.forEach(i => i.checked = false);\r\n item.checked = true;\r\n }\r\n\r\n this.itemsChange.emit(items);\r\n this.activeSubItemChange.emit(item as MenubarItem);\r\n if (item instanceof MenubarSubitemComponent || item instanceof MenubarSubsubitemComponent) {\r\n item.selected.emit();\r\n\r\n if (checkedChange) {\r\n item.checkedChange.emit(item.checked);\r\n }\r\n }\r\n }\r\n\r\n mustCloseAfterSelectPopupItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\r\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\r\n const subSubItems = this.getSubItemSubitems(item);\r\n item = subSubItems[subSubItemIndex];\r\n }\r\n\r\n return item.role !== 'menuitemcheckbox' && item.role !== 'menuitemradio';\r\n }\r\n\r\n openMenu(itemIndex: number): void {\r\n const wasOpened = this.menuData[itemIndex].open;\r\n this.menuData[itemIndex].open = true;\r\n if (wasOpened) {\r\n this.activateMenuItem(itemIndex);\r\n }\r\n }\r\n\r\n closeMenu(itemIndex?: number): void {\r\n if (itemIndex !== null && itemIndex !== undefined) {\r\n this.menuData[itemIndex].open = false;\r\n } else {\r\n this.menuData.forEach(item => item.open = false);\r\n }\r\n }\r\n\r\n hasPopupMenu(itemIndex: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n return items[itemIndex].sub && subItems && subItems.length > 0;\r\n }\r\n\r\n private isPrintableChar(str: string): boolean {\r\n return str.length === 1 && !!str.match(/\\S/);\r\n }\r\n\r\n private getMenuDataIndex(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): number {\r\n let menuDataIndex = 0;\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n for (let i = 0; i < subItemIndex; i++) {\r\n const subItem = subItems[i];\r\n const subSubItems = this.getSubItemSubitems(subItem);\r\n menuDataIndex += subSubItems && subSubItems.length > 0 ? subSubItems.length : 1;\r\n }\r\n\r\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\r\n menuDataIndex += subSubItemIndex;\r\n }\r\n\r\n return menuDataIndex;\r\n }\r\n\r\n /*\r\n * Comunes - focus\r\n */\r\n\r\n focusItem(itemIndex: number, hover?: boolean): void {\r\n const hasFocus = this.menubar.nativeElement.contains(document.activeElement);\r\n const isOpen = this.menuData[this.currentFocusItemIndex].open;\r\n\r\n if (!hover || hasFocus) {\r\n this.menuData[itemIndex].menuItem.link.nativeElement.focus();\r\n }\r\n\r\n this.closeMenu();\r\n if (isOpen && this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n }\r\n\r\n this.currentFocusItemIndex = itemIndex;\r\n }\r\n\r\n focusNextAvailableItem(fromItemIndex: number, step: number): void {\r\n let nextItem = fromItemIndex;\r\n const items = this.getItems();\r\n do {\r\n nextItem = (nextItem + items.length + step) % items.length;\r\n } while (!this.isItemFocusable(nextItem) && nextItem !== fromItemIndex);\r\n\r\n if (nextItem !== fromItemIndex) {\r\n this.focusItem(nextItem);\r\n }\r\n }\r\n\r\n focusFirstItem(): void {\r\n if (this.isItemFocusable(0)) {\r\n this.focusItem(0);\r\n } else {\r\n this.focusNextAvailableItem(0, +1);\r\n }\r\n }\r\n\r\n focusLastItem(): void {\r\n const items = this.getItems();\r\n if (this.isItemFocusable(items.length - 1)) {\r\n this.focusItem(items.length - 1);\r\n } else {\r\n this.focusNextAvailableItem(items.length - 1, -1);\r\n }\r\n }\r\n\r\n isItemFocusable(itemIndex: number): boolean {\r\n return !this.getItems()[itemIndex].disabled;\r\n }\r\n\r\n focusItemByFirstChar(char: string): void {\r\n const itemContents: string[] = this.menuItems.map(menuItem => menuItem.itemContentWrapper.nativeElement.textContent);\r\n let index = this.currentFocusItemIndex;\r\n let foundIndex = -1;\r\n do {\r\n index = (index + itemContents.length + 1) % itemContents.length;\r\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\r\n && this.isItemFocusable(index)) {\r\n foundIndex = index;\r\n }\r\n } while (foundIndex === -1 && index !== this.currentFocusItemIndex);\r\n\r\n if (foundIndex >= 0) {\r\n this.focusItem(foundIndex);\r\n }\r\n }\r\n\r\n focusSubItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n if (this.menuData[itemIndex].menuItem.popupMenuItems.length > 0) {\r\n const menuDataIndex = this.getMenuDataIndex(itemIndex, subItemIndex, subSubItemIndex);\r\n\r\n this.menuData[itemIndex].currentFocusSubItemIndex = subItemIndex;\r\n this.menuData[itemIndex].currentFocusSubSubItemIndex = subSubItemIndex;\r\n const elem = this.menuData[itemIndex].menuItem.popupMenuItems.toArray()[menuDataIndex].nativeElement;\r\n if (elem) {\r\n elem.focus();\r\n } else {\r\n console.error('No subitem to focus');\r\n }\r\n } else {\r\n console.error('No subitems');\r\n }\r\n }\r\n\r\n focusNextAvailableSubItem(itemIndex: number, fromItemSubIndex: number, fromItemSubSubIndex: number, step: number): void {\r\n let nextSubIndex = fromItemSubIndex;\r\n let nextSubSubIndex = fromItemSubSubIndex;\r\n let allSubItemsChecked;\r\n const items = this.getItems();\r\n do {\r\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step);\r\n nextSubIndex = nextIndexes.subIndex;\r\n nextSubSubIndex = nextIndexes.subSubIndex;\r\n allSubItemsChecked = (fromItemSubIndex === nextSubIndex && fromItemSubSubIndex === nextSubSubIndex);\r\n } while (!this.isSubItemFocusable(itemIndex, nextSubIndex, nextSubSubIndex) && !allSubItemsChecked);\r\n\r\n if (!allSubItemsChecked) {\r\n this.focusSubItem(itemIndex, nextSubIndex, nextSubSubIndex);\r\n }\r\n }\r\n\r\n focusFirstSubItem(itemIndex: number): void {\r\n let firstSubSubItem = null;\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n const subSubItems = this.getSubItemSubitems(subItems[0]);\r\n if (subSubItems && subSubItems.length > 0) {\r\n firstSubSubItem = 0;\r\n }\r\n\r\n if (this.isSubItemFocusable(itemIndex, 0, firstSubSubItem)) {\r\n this.focusSubItem(itemIndex, 0, firstSubSubItem);\r\n } else {\r\n this.focusNextAvailableSubItem(itemIndex, 0, firstSubSubItem, +1);\r\n }\r\n }\r\n\r\n focusLastSubItem(itemIndex: number): void {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n const lastItemIndex = subItems.length - 1;\r\n const lastItem = subItems[lastItemIndex];\r\n const subSubItems = this.getSubItemSubitems(lastItem);\r\n let lastSubSubItem = null;\r\n if (subSubItems && subSubItems.length > 0) {\r\n lastSubSubItem = subSubItems.length - 1;\r\n }\r\n\r\n if (this.isSubItemFocusable(itemIndex, lastItemIndex, lastSubSubItem)) {\r\n this.focusSubItem(itemIndex, lastItemIndex, lastSubSubItem);\r\n } else {\r\n this.focusNextAvailableSubItem(itemIndex, lastItemIndex, lastSubSubItem, -1);\r\n }\r\n }\r\n\r\n isSubItemFocusable(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\r\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\r\n const subSubItems = this.getSubItemSubitems(item);\r\n item = subSubItems[subSubItemIndex];\r\n }\r\n\r\n let isFocusable = false;\r\n if (item.role !== 'separator' && item.role !== 'none') {\r\n isFocusable = true;\r\n }\r\n\r\n return isFocusable;\r\n }\r\n\r\n focusSubItemByFirstChar(itemIndex: number, char: string): void {\r\n const itemContents: string[] = this.menuItems.toArray()[itemIndex].popupMenuItems.map(menuItem => menuItem.nativeElement.textContent);\r\n let subItemIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\r\n let subSubItemIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\r\n let foundSubIndex = -1;\r\n let foundSubSubIndex = null;\r\n let allSubItemsChecked = false;\r\n const items = this.getItems();\r\n do {\r\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, subItemIndex, subSubItemIndex, +1);\r\n subItemIndex = nextIndexes.subIndex;\r\n subSubItemIndex = nextIndexes.subSubIndex;\r\n const index = this.getMenuDataIndex(itemIndex, subItemIndex, subSubItemIndex);\r\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\r\n && this.isSubItemFocusable(itemIndex, subItemIndex, subSubItemIndex)) {\r\n foundSubIndex = subItemIndex;\r\n foundSubSubIndex = subSubItemIndex;\r\n }\r\n allSubItemsChecked = (this.menuData[itemIndex].currentFocusSubItemIndex === subItemIndex\r\n && this.menuData[itemIndex].currentFocusSubSubItemIndex === subSubItemIndex);\r\n } while (foundSubIndex === -1 && !allSubItemsChecked);\r\n\r\n if (foundSubIndex >= 0) {\r\n this.focusSubItem(itemIndex, foundSubIndex, foundSubSubIndex);\r\n }\r\n }\r\n\r\n /*\r\n * Metodos para facilitar contenido\r\n */\r\n\r\n getItems(): MenubarItem[]|MenubarItemComponent[] {\r\n let items;\r\n if (this.itemComponentList && this.itemComponentList.length > 0) {\r\n items = this.itemComponentList.toArray();\r\n } else {\r\n items = this.items;\r\n }\r\n return items;\r\n }\r\n\r\n getItemSubitems(item: MenubarItem|MenubarItemComponent): MenubarItemSubItem[]|MenubarSubitemComponent[] {\r\n let subItems = [];\r\n if (item instanceof MenubarItemComponent){\r\n subItems = item.getSubItems();\r\n }\r\n\r\n if (!subItems || subItems.length === 0) {\r\n subItems = item.sub ? item.sub.items : [];\r\n }\r\n\r\n return subItems;\r\n }\r\n\r\n getSubItemSubitems(item: MenubarItemSubItem|MenubarSubitemComponent): MenubarItemSubItemSubItem[]|MenubarSubsubitemComponent[] {\r\n let subItems = [];\r\n\r\n if (item.role === 'group') {\r\n if (item instanceof MenubarSubitemComponent) {\r\n subItems = item.getSubItems();\r\n }\r\n\r\n if (!subItems || subItems.length === 0) {\r\n subItems = item.items ? item.items : [];\r\n }\r\n }\r\n\r\n return subItems;\r\n }\r\n\r\n getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step): { subIndex: number, subSubIndex?: number} {\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n const subSubItems = this.getSubItemSubitems(subItems[nextSubIndex]);\r\n\r\n let checkNextSubItem = true;\r\n if (subSubItems && subSubItems.length > 0) {\r\n if (nextSubSubIndex + step >= 0 && nextSubSubIndex + step < subSubItems.length) {\r\n nextSubSubIndex += step;\r\n checkNextSubItem = false;\r\n }\r\n }\r\n\r\n if (checkNextSubItem) {\r\n nextSubIndex = (nextSubIndex + step + subItems.length) % subItems.length;\r\n const nextSubItemItems = this.getSubItemSubitems(subItems[nextSubIndex]);\r\n if (nextSubItemItems && nextSubItemItems.length > 0) {\r\n nextSubSubIndex = ((step > 0 ? -1 : 0) + step + nextSubItemItems.length) % nextSubItemItems.length;\r\n } else {\r\n nextSubSubIndex = null;\r\n }\r\n }\r\n\r\n return {subIndex: nextSubIndex, subSubIndex: nextSubSubIndex};\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.id + 'menubar-item';\r\n }\r\n\r\n getLabelRef(): TemplateRef<any> {\r\n return this.labelComponent ? this.labelComponent.getContent() : this.labelRef;\r\n }\r\n\r\n getLabelContent(): string {\r\n let content: string;\r\n if (this.labelData) {\r\n content = this.labelData.html ? this.labelData.html : `<p>${ StringUtils.escapeHtml(this.labelData.text) }</p>`;\r\n } else if (this.labelText) {\r\n content = `<p>${ StringUtils.escapeHtml(this.labelText) }</p>`;\r\n }\r\n return content;\r\n }\r\n\r\n getItemId(item, index: number): string {\r\n let id: string;\r\n if (item) {\r\n if (item.id) {\r\n id = item.id;\r\n } else {\r\n id = index === 0 ? this.getIdPrefix() : `${this.getIdPrefix()}-${index}`;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n getPopupStyle(itemIndex: number): object {\r\n let style = {};\r\n if (this.menuData && itemIndex < this.menuData.length) {\r\n const menuItem = this.menuData[itemIndex].menuItem;\r\n const rect = menuItem.link.nativeElement.getBoundingClientRect();\r\n if (this.menuData[itemIndex].open) {\r\n style = {\r\n position: 'absolute',\r\n top: (rect.height - 1) + 'px',\r\n left: '0px',\r\n zIndex: 100,\r\n display: 'block'\r\n };\r\n } else {\r\n style = {\r\n zIndex: 0,\r\n display: 'none'\r\n };\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n\r\n getSubItemId(item, index: number, parentId: string): string {\r\n let id: string;\r\n if (item) {\r\n if (item.id) {\r\n id = item.id;\r\n } else {\r\n id = index === 0 ? `sub-${parentId}` : `sub-${parentId}-${index}`;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n getSubSubItemAriaChecked(subsubitem): string {\r\n let ariaChecked = null;\r\n if (subsubitem.role === 'menuitemcheckbox' || subsubitem.role === 'menuitemradio') {\r\n ariaChecked = !!subsubitem.checked;\r\n }\r\n return ariaChecked;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {NotificationItemsData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-notification-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class NotificationItemComponent extends ContentBaseComponent implements NotificationItemsData {\r\n @Input() href: string;\r\n @Input() target?: string;\r\n @Input() routerLink?: string;\r\n @Input() fragment?: string;\r\n @Input() id: string;\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport {NotificationItemsData} from '../../interfaces';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\nimport {NotificationItemComponent} from './notification-item/notification-item.component';\r\nimport {ContentData, DescriptionData, IconData, TitleData} from '../../../desy-commons/interfaces';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-notification',\r\n templateUrl: './notification.component.html',\r\n animations: [\r\n trigger('displayNotification', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scaleY(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scaleY(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition(':leave', [\r\n animate('75ms ease-in')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class NotificationComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() isOpen = true;\r\n @Output() isOpenChange = new EventEmitter<boolean>();\r\n\r\n @Input() title: TitleData;\r\n @Input() description: DescriptionData;\r\n @Input() content: ContentData;\r\n @Input() items: NotificationItemsData[];\r\n\r\n @Input() icon: IconData;\r\n @Input() type: string;\r\n @Input() isDismissible: boolean;\r\n @Input() headingLevel: number;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n @ContentChildren(NotificationItemComponent) itemCompontents: QueryList<NotificationItemComponent>;\r\n\r\n isDismissing = false;\r\n displayDefaultIcon = false;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n dismiss(): void {\r\n // Se emite 75ms más tarde para poder visualizar la animación en cualquier caso\r\n this.isDismissing = true;\r\n setTimeout(() => {\r\n this.isDismissing = false;\r\n this.isOpenChange.emit(false);\r\n }, 75);\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.type){\r\n type = this.type.toLocaleLowerCase();\r\n }\r\n return type;\r\n }\r\n\r\n getItems(): NotificationItemsData[] {\r\n return this.itemCompontents && this.itemCompontents.length > 0 ? this.itemCompontents.toArray() : this.items;\r\n }\r\n\r\n handleIconEmpty(empty: boolean): void {\r\n this.displayDefaultIcon = empty;\r\n\r\n // Como que el contenido vacío se comprueba a posteriori, es necesario forzar la detección de cambios para mostrar el icono por defecto\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {CellData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-table-cell',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TableCellComponent extends ContentBaseComponent implements CellData {\r\n @Input() classes?: string;\r\n @Input() id?: string;\r\n @Input() colspan?: number;\r\n @Input() rowspan?: number;\r\n}\r\n","import {Component, ContentChildren, QueryList} from '@angular/core';\r\nimport {TableCellComponent} from './table-cell.component';\r\n\r\n@Component({\r\n selector: 'desy-table-header',\r\n template: ''\r\n})\r\nexport class TableHeaderComponent {\r\n @ContentChildren(TableCellComponent) cells: QueryList<TableCellComponent>;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-table-caption',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TableCaptionComponent extends ContentBaseComponent {\r\n @Input() classes: string;\r\n}\r\n","import {Component, ContentChildren, QueryList} from '@angular/core';\r\nimport {TableCellComponent} from './table-cell.component';\r\n\r\n@Component({\r\n selector: 'desy-table-row',\r\n template: ''\r\n})\r\nexport class TableRowComponent {\r\n @ContentChildren(TableCellComponent) cells: QueryList<TableCellComponent>;\r\n}\r\n","import {Component, Input, ContentChildren, QueryList} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport {CellData, WrapperData} from '../../interfaces';\r\nimport {TableHeaderComponent} from './components/table-header.component';\r\nimport {TableCellComponent} from './components/table-cell.component';\r\nimport {TableCaptionComponent} from './components/table-caption.component';\r\nimport {TableRowComponent} from './components/table-row.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n\r\n@Component({\r\n selector: 'desy-table',\r\n templateUrl: './table.component.html'\r\n})\r\nexport class TableComponent extends AccessibilityComponent {\r\n\r\n @Input() rows: Array<CellData[]>;\r\n @Input() head: CellData[];\r\n @Input() caption: string;\r\n @Input() captionClasses: string;\r\n @Input() firstCellIsHeader: boolean;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n @Input() wrapper: WrapperData;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableCaptionComponent) captionComponent: TableCaptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableHeaderComponent) headerComponent: TableHeaderComponent;\r\n\r\n @ContentChildren(TableRowComponent) rowComponentList: QueryList<TableRowComponent>;\r\n\r\n getCaptionClass(): string {\r\n return this.captionComponent ? this.captionComponent.classes : this.captionClasses;\r\n }\r\n\r\n getHeaderCells(): TableCellComponent[]|CellData[] {\r\n let headerCells = [];\r\n if (this.headerComponent && this.headerComponent.cells) {\r\n headerCells = this.headerComponent.cells.toArray();\r\n } else if (this.head) {\r\n headerCells = this.head;\r\n }\r\n return headerCells;\r\n }\r\n\r\n getRows(): TableRowComponent[]|CellData[][] {\r\n const rowList = this.rowComponentList && this.rowComponentList.length > 0 ? this.rowComponentList.toArray() : this.rows;\r\n return rowList;\r\n }\r\n\r\n getRowCells(row: TableRowComponent|CellData[]): TableCellComponent[]|CellData[] {\r\n return row instanceof TableRowComponent ? row.cells.toArray() : row;\r\n }\r\n\r\n}\r\n\r\n","import { CellData } from './cell-data';\r\n\r\nexport interface HeadCellData extends CellData {\r\n orderBy?: OrderBy; // Possible values `none`, `asc`, `desc`.\r\n hasFilter?: boolean;\r\n filterClasses?: string;\r\n hasSelect?: boolean;\r\n}\r\n\r\nexport interface HeadCellModelData extends HeadCellData {\r\n valueFilter?: string;\r\n activeFilter?: boolean;\r\n valueSelect?: string;\r\n activeSelect?: boolean;\r\n}\r\n\r\nexport enum OrderBy {\r\n none = 'none',\r\n asc = 'asc',\r\n desc = 'desc'\r\n}\r\n","import { OptionComponent } from './../../../../desy-forms/components/select/option/option.component';\r\nimport { SelectComponent } from './../../../../desy-forms/components/select/select.component';\r\nimport { Component, ContentChildren, EventEmitter, Input, Output, QueryList, ViewChild } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-select',\r\n template: ''\r\n})\r\nexport class TableAdvancedSelectComponent extends SelectComponent{\r\n isSelect = true;\r\n\r\n @Input() value: any;\r\n @Output() valueChange = new EventEmitter<any>();\r\n\r\n @ContentChildren(OptionComponent) selectItemComponentList: QueryList<OptionComponent>;\r\n}","import { ContentComponent } from './../../../../desy-commons/components/content/content.component';\r\nimport { TableAdvancedSelectComponent } from './table-advanced-select.component';\r\nimport { DesyContentChild } from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {Component, ContentChildren, Input} from '@angular/core';\r\nimport {HeadCellModelData, OrderBy} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-header-cell',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TableAdvancedHeaderCellComponent extends ContentBaseComponent implements HeadCellModelData {\r\n @Input() classes: string;\r\n @Input() id: string;\r\n @Input() colspan: number;\r\n @Input() rowspan: number;\r\n @Input() orderBy: OrderBy; // Possible values `none`, `asc`, `desc`.\r\n @Input() hasFilter: boolean;\r\n @Input() filterClasses: string;\r\n @Input() hasSelect?: boolean;\r\n valueFilter?: string;\r\n activeFilter?: boolean;\r\n valueSelect?: string;\r\n activeSelect?: boolean;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableAdvancedSelectComponent) selectComponent?: TableAdvancedSelectComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent?: ContentComponent;\r\n}\r\n","import {Component, ContentChildren, QueryList} from '@angular/core';\r\nimport {TableAdvancedHeaderCellComponent} from './table-advanced-header-cell.component';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-header',\r\n template: ''\r\n})\r\nexport class TableAdvancedHeaderComponent {\r\n @ContentChildren(TableAdvancedHeaderCellComponent) cells: QueryList<TableAdvancedHeaderCellComponent>;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {CellData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-row-cell',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TableAdvancedRowCellComponent extends ContentBaseComponent implements CellData {\r\n @Input() classes?: string;\r\n @Input() id?: string;\r\n @Input() colspan?: number;\r\n @Input() rowspan?: number;\r\n}\r\n","import {Component, ContentChildren, EventEmitter, Input, Output, QueryList} from '@angular/core';\r\nimport {TableAdvancedRowCellComponent} from './table-advanced-row-cell.component';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-row',\r\n template: ''\r\n})\r\nexport class TableAdvancedRowComponent {\r\n\r\n @ContentChildren(TableAdvancedRowCellComponent) cellsList: QueryList<TableAdvancedRowCellComponent>;\r\n\r\n @Input() id: string;\r\n @Input() checked: boolean;\r\n @Output() checkedChange: EventEmitter<boolean> = new EventEmitter();\r\n}\r\n","import {Directive, ElementRef, Input} from '@angular/core';\r\nimport {RowData} from '../interfaces';\r\nimport {TableAdvancedRowComponent} from '../components/table-advanced/components/table-advanced-row.component';\r\n\r\n/**\r\n * Permite gestionar celdas de una fila de la tabla\r\n */\r\n@Directive({\r\n selector: '[desyCell]'\r\n})\r\nexport class CellDirective {\r\n\r\n @Input() row: RowData|TableAdvancedRowComponent;\r\n @Input() rowIndex: number;\r\n @Input() columnIndex: number;\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n public getContent(): string {\r\n return this.element.nativeElement.textContent;\r\n }\r\n}\r\n","import {ContentChildren, Directive, Input, QueryList} from '@angular/core';\r\nimport {CellDirective} from './cell.directive';\r\nimport {RowData} from '../interfaces';\r\nimport {TableAdvancedRowComponent} from '../components/table-advanced/components/table-advanced-row.component';\r\n\r\n/**\r\n * Permite gestionar filas de la tabla\r\n */\r\n@Directive({\r\n selector: '[desyRow]'\r\n})\r\nexport class RowDirective {\r\n\r\n @ContentChildren(CellDirective) contentCells: QueryList<CellDirective>;\r\n @Input() desyRow: RowData|TableAdvancedRowComponent;\r\n\r\n\r\n /**\r\n * Devuelve la celda ubicada en la columna indicada\r\n * @param column índice de la columna\r\n */\r\n public getCell(column: number): CellDirective {\r\n return this.contentCells.find(cell => cell.columnIndex === column);\r\n }\r\n}\r\n","import { ContentComponent } from './../../../desy-commons/components/content/content.component';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {SearchUtils} from '../../../shared/utils/search-utils';\r\nimport {HeadCellModelData, OrderBy, RowData, WrapperData} from '../../interfaces';\r\nimport {TableCaptionComponent} from '../table/components/table-caption.component';\r\nimport {TableAdvancedHeaderCellComponent} from './components/table-advanced-header-cell.component';\r\nimport {TableAdvancedHeaderComponent} from './components/table-advanced-header.component';\r\nimport {TableAdvancedRowComponent} from './components/table-advanced-row.component';\r\nimport {CellDirective} from '../../directives/cell.directive';\r\nimport {RowDirective} from '../../directives/row.directive';\r\nimport {RecalculateTableParams} from '../../interfaces/recalculate-table-params';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport { TableAdvancedSelectComponent } from './components/table-advanced-select.component';\r\nimport { SelectItemData } from '../../../desy-forms/interfaces/select-item-data';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced',\r\n templateUrl: './table-advanced.component.html'\r\n})\r\nexport class TableAdvancedComponent extends AccessibilityComponent implements AfterViewInit {\r\n\r\n @Input() rows: RowData[]; // original data\r\n @Input() head: HeadCellModelData[];\r\n\r\n @Input() caption: string;\r\n @Input() captionClasses: string;\r\n @Input() firstCellIsHeader: boolean;\r\n @Input() hasCheckboxes: boolean;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() checkboxClasses: string;\r\n @Input() id: string;\r\n @Input() wrapper: WrapperData;\r\n\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableCaptionComponent) captionComponent: TableCaptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableAdvancedHeaderComponent) headerComponent: TableAdvancedHeaderComponent;\r\n\r\n @ContentChildren(TableAdvancedRowComponent) rowComponentList: QueryList<TableAdvancedRowComponent>;\r\n @ViewChildren(RowDirective) rowData: QueryList<RowDirective>;\r\n\r\n @Output() rowsChange = new EventEmitter();\r\n @Output() rowsChecked = new EventEmitter();\r\n @Output() recalculateTable = new EventEmitter<RecalculateTableParams>();\r\n\r\n visibleRows: RowData[]|TableAdvancedRowComponent[];\r\n orderByType = OrderBy;\r\n isReset: boolean;\r\n\r\n constructor(private el: ElementRef, private changeDetector: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const elemntsFocus = this.el.nativeElement.querySelector('[tabindex]');\r\n if (elemntsFocus) {\r\n elemntsFocus.setAttribute('tabindex', '0');\r\n }\r\n this.recalculateVisibleElements();\r\n }\r\n\r\n /**\r\n * Refresca las filas visibles tras realizarse una búsqueda o una ordenación\r\n */\r\n recalculateVisibleElements(): void {\r\n const recalculateParams = this.buildRecalculateParams();\r\n\r\n // Si se captura el evento recalculateTable se deja al usuario la responsabilidad de filtrar y ordenar los elementos.\r\n if (this.recalculateTable.observers.length > 0) {\r\n this.recalculateTable.emit(recalculateParams);\r\n this.changeDetector.markForCheck();\r\n } else {\r\n\r\n // Se deben mostrar todas las filas temporalmente para poder aplicar el filtro y la ordenación sobre el contenido insertado\r\n this.visibleRows = this.getRows();\r\n this.changeDetector.detectChanges();\r\n\r\n // Se aplica el filtro y la ordenación\r\n let rowData = this.filterRows(recalculateParams, this.rowData.toArray());\r\n rowData = this.sortRows(recalculateParams, rowData);\r\n this.visibleRows = rowData.map(r => r.desyRow) as RowData[]|TableAdvancedRowComponent[];\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Construye los parámetros necesarios para recalcular la tabla, indicando los filtros y la ordenación\r\n */\r\n private buildRecalculateParams(): RecalculateTableParams {\r\n const params = {\r\n filters: [],\r\n sort: null\r\n };\r\n\r\n const head = this.getHeaderCells() as (HeadCellModelData|TableAdvancedHeaderCellComponent)[];\r\n if (head) {\r\n head.forEach((headerCell, headerCellIndex) => {\r\n if (headerCell.hasFilter && headerCell.activeFilter) {\r\n params.filters.push({ columnIndex: headerCellIndex, filterText: headerCell.valueFilter });\r\n }\r\n if(headerCell.hasSelect && headerCell.activeSelect){\r\n params.filters.push({ columnIndex: headerCellIndex, filterText: headerCell.valueSelect });\r\n }\r\n });\r\n\r\n const orderByColumnIndex = head.findIndex(cell => cell.orderBy && cell.orderBy !== OrderBy.none);\r\n params.sort = (orderByColumnIndex >= 0) ? { columnIndex: orderByColumnIndex, order: head[orderByColumnIndex].orderBy } : null;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n /**\r\n * funciones de recoger ids, y caracteristicas\r\n */\r\n\r\n hasFilters(): boolean {\r\n const head = this.getHeaderCells();\r\n return head ? head.findIndex(cell => (cell.hasFilter) || (cell.hasSelect)) >= 0 : false;\r\n }\r\n\r\n getHeaderCells(): HeadCellModelData[]|TableAdvancedHeaderCellComponent[] {\r\n return this.headerComponent && this.headerComponent.cells.length > 0 ? this.headerComponent.cells.toArray() : this.head;\r\n }\r\n\r\n getRows(): RowData[]|TableAdvancedRowComponent[] {\r\n let rows = [];\r\n if (this.rowComponentList.length > 0) {\r\n rows = this.rowComponentList.toArray();\r\n } else if (this.rows) {\r\n rows = this.rows;\r\n }\r\n return rows;\r\n }\r\n\r\n /**\r\n * Si se sobreescribe el comportamiento por defecto de filtrado y ordenación, se utilizarán las indicadas desde fuera del\r\n * componente (ya sea por parámetro o por contenido).\r\n * Si no se sobreescribe, devuelve las filas calculadas.\r\n */\r\n getVisibleRows(): RowData[]|TableAdvancedRowComponent[] {\r\n return this.recalculateTable.observers.length > 0 ? this.getRows() : this.visibleRows;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'id-table-row';\r\n }\r\n\r\n getIdHeader(index: number): string {\r\n return this.getIdPrefix() + '-header-' + index;\r\n }\r\n\r\n getIdRowCheckbox(index: number): string {\r\n return this.getIdPrefix() + '-checkbox-' + index;\r\n }\r\n\r\n getIdHeaderFilter(index: number): string {\r\n return this.getIdPrefix() + '-header-filter-' + index;\r\n }\r\n\r\n getIdHeaderSelect(index: number): string {\r\n return this.getIdPrefix() + '-header-select-' + index;\r\n }\r\n\r\n getCaptionClass(): string {\r\n return this.captionComponent ? this.captionComponent.classes : this.captionClasses;\r\n }\r\n\r\n getStringOrderBy(orderBy: OrderBy): string {\r\n if (orderBy === OrderBy.asc){\r\n return 'ascending';\r\n } else if (orderBy === OrderBy.desc){\r\n return 'descending';\r\n } else if (orderBy === OrderBy.none){\r\n return 'none';\r\n }\r\n }\r\n\r\n getSelectForItem(item: TableAdvancedHeaderCellComponent): TableAdvancedSelectComponent{\r\n return item.selectComponent ? item.selectComponent : null;\r\n }\r\n\r\n getItemSelectOptions(item: TableAdvancedSelectComponent): SelectItemData[] {\r\n return item.selectItemComponentList && item.selectItemComponentList.length > 0 ?\r\n item.selectItemComponentList.toArray() : item.items;\r\n }\r\n\r\n getContentComponent(item: TableAdvancedHeaderCellComponent): ContentComponent{\r\n return item.contentComponent ? item.contentComponent : null;\r\n }\r\n\r\n\r\n /**\r\n * checks\r\n */\r\n handleCheckboxChange(row: RowData|TableAdvancedRowComponent): void {\r\n if (row instanceof TableAdvancedRowComponent) {\r\n row.checkedChange.emit(row.checked);\r\n }\r\n this.notifyCheckedChange();\r\n }\r\n\r\n /**\r\n * Permite desmarcar todas las filas\r\n */\r\n private uncheckAll(): void{\r\n this.getRows().forEach(r => {\r\n const mustEmit = r.checked && r instanceof TableAdvancedRowComponent;\r\n r.checked = false;\r\n if (mustEmit) {\r\n (r as TableAdvancedRowComponent).checkedChange.emit(r.checked);\r\n }\r\n });\r\n this.notifyCheckedChange();\r\n }\r\n\r\n /**\r\n * Notifica cambios en las filas\r\n */\r\n private notifyCheckedChange(): void {\r\n if (this.rowComponentList.length === 0) {\r\n this.rowsChange.emit(this.rows);\r\n }\r\n\r\n const rowChecks: any = {};\r\n this.getRows().forEach(r => rowChecks[r.id] = !!r.checked); // Se aplican también a las no visibles\r\n this.rowsChecked.emit(rowChecks);\r\n }\r\n\r\n\r\n /**\r\n * busqueda\r\n */\r\n handleInputSearch(item: HeadCellModelData): void {\r\n if (item.hasFilter) { // si tiene buscador\r\n item.activeFilter = !!item.valueFilter;\r\n this.uncheckAll();\r\n }\r\n if(item.hasSelect){ //Si tiene seleccionable\r\n item.activeSelect = !!item.valueSelect;\r\n this.uncheckAll();\r\n }\r\n\r\n this.recalculateVisibleElements();\r\n }\r\n\r\n /**\r\n * Se filtran las filas según lo especificado en la barra de búsqueda de cada columna.\r\n * Si no hay búsqueda sse devuelven todas las filas.\r\n * @param recalculateParams parametros para recalcular los elementos visibles\r\n * @param rows lista con todas las filas\r\n * @return lista de filas filtrada\r\n */\r\n private filterRows(recalculateParams: RecalculateTableParams, rows: RowDirective[]): RowDirective[] {\r\n let filteredRows = rows;\r\n recalculateParams.filters.forEach(filter => {\r\n filteredRows = filteredRows.filter(row =>\r\n SearchUtils.containsAnyWordFrom(row.getCell(filter.columnIndex).getContent(), filter.filterText));\r\n });\r\n return filteredRows;\r\n }\r\n\r\n /**\r\n * ordenacion\r\n */\r\n\r\n /**\r\n * Permite indicar que se debe ordenar la tabla\r\n * @param index indice de la columna\r\n */\r\n handleSortByColumn(index: number): void {\r\n const head = this.getHeaderCells();\r\n if (head) {\r\n head.forEach((cell, cellIndex) => {\r\n if (cell.orderBy) {\r\n cell.orderBy = cellIndex === index ? this.getNextDirection(cell) : OrderBy.none;\r\n }\r\n });\r\n }\r\n\r\n this.recalculateVisibleElements();\r\n }\r\n\r\n\r\n /**\r\n * Ordena las filas indicadas según la columna especificada en la cabecera\r\n * @param recalculateParams parametros para recalcular los elementos visibles\r\n * @param rows filas de la tabla a ordenar\r\n * @return mismas filas pero ordenadas por la columna indicada\r\n */\r\n private sortRows(recalculateParams: RecalculateTableParams, rows: RowDirective[]): RowDirective[] {\r\n let sortedRows = rows;\r\n if (recalculateParams.sort) {\r\n const columnIndex = recalculateParams.sort.columnIndex;\r\n const isAsc = recalculateParams.sort.order === OrderBy.asc;\r\n sortedRows = rows.sort((a, b) =>\r\n this.compareCellContent(a.getCell(columnIndex), b.getCell(columnIndex), isAsc));\r\n }\r\n\r\n return sortedRows;\r\n }\r\n\r\n /**\r\n * Compara el contenido de dos celdas. Este se invierte si el orden especificado es descendente.\r\n */\r\n compareCellContent(a: CellDirective, b: CellDirective, isAsc: boolean): number{\r\n let result;\r\n const aComparable = this.cleanCurrency(a.getContent());\r\n const bComparable = this.cleanCurrency(b.getContent());\r\n\r\n if (isNaN(+aComparable) && isNaN(+bComparable) ) { // son textos\r\n result = aComparable.localeCompare(bComparable, 'es', { sensitivity: 'base', ignorePunctuation: true });\r\n }else{ // son numeros\r\n result = aComparable.localeCompare(bComparable, undefined, { numeric: true });\r\n }\r\n\r\n return result * (isAsc ? 1 : -1);\r\n }\r\n\r\n /**\r\n * se calcula la ordenación nueva\r\n */\r\n private getNextDirection(item: HeadCellModelData): OrderBy {\r\n if (item.orderBy === OrderBy.none || item.orderBy === OrderBy.desc) {\r\n return OrderBy.asc;\r\n } else {\r\n return OrderBy.desc;\r\n }\r\n }\r\n\r\n /**\r\n * si es una cantidad de dinero se quita € para poder comparar los numeros\r\n */\r\n private cleanCurrency(txt: string): string {\r\n if (/[\\d.,]+[\\€]/g.test(txt)) {\r\n txt = txt.replace(/€/g, '');\r\n }\r\n return txt;\r\n }\r\n\r\n selectFilter(item: TableAdvancedSelectComponent, itemValue: any): void {\r\n item.valueChange.emit(itemValue);\r\n\r\n const head = this.getHeaderCells();\r\n const rows = this.getRows();\r\n if (head && rows) {\r\n head.forEach((cell: TableAdvancedHeaderCellComponent, cellIndex) => {\r\n });\r\n rows.forEach(row => {\r\n });\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component, ComponentFactoryResolver, ComponentRef,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n TemplateRef, Type,\r\n ViewChild, ViewContainerRef\r\n} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\r\n\r\ntype AlertCreationCallback = ((dialog: AlertComponent, caller: ComponentRef<any>) => void);\r\n\r\n@Component({\r\n selector: 'desy-alert',\r\n templateUrl: './alert.component.html'\r\n})\r\nexport class AlertComponent extends AccessibilityComponent implements OnDestroy, AfterViewInit {\r\n\r\n @ViewChild('alertWrapper') alertWrapper: ElementRef;\r\n @ViewChild('container', {read: ViewContainerRef}) container: ViewContainerRef;\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n @Input() focusFirst: boolean;\r\n\r\n @Input() set active(value: boolean) {\r\n setTimeout(() => {\r\n this._active = value;\r\n this.cdRef.detectChanges();\r\n this.handleActiveState();\r\n });\r\n }\r\n get active(): boolean {\r\n return this._active;\r\n }\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n private _active: boolean;\r\n public callerContext: any;\r\n public callerType: Type<any>;\r\n public onCallerCreationCallback: AlertCreationCallback;\r\n\r\n private lastActiveState: boolean = undefined;\r\n private hasViewinit = false;\r\n private createdCallerFromType = false;\r\n\r\n constructor(private cdRef: ChangeDetectorRef, private factoryResolver: ComponentFactoryResolver) {\r\n super();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n this.hasViewinit = true;\r\n this.handleActiveState();\r\n }\r\n\r\n dismiss(): void {\r\n this.activeChange.emit(false);\r\n }\r\n\r\n handleActiveState(): void {\r\n if (this._active && this.callerType && !this.createdCallerFromType) {\r\n const factory = this.factoryResolver.resolveComponentFactory(this.callerType);\r\n const component = this.container.createComponent(factory);\r\n if (this.onCallerCreationCallback) {\r\n this.onCallerCreationCallback(this, component);\r\n }\r\n this.createdCallerFromType = true;\r\n }\r\n\r\n if (this._active !== this.lastActiveState && this.hasViewinit) {\r\n this.lastActiveState = this._active;\r\n\r\n if (this._active && this.focusFirst) {\r\n this.cdRef.detectChanges();\r\n const focusElem = FocusUtils.getFirstFocusableElement(this.alertWrapper.nativeElement as HTMLElement);\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {AccordionHeaderData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-accordion-header',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class AccordionHeaderComponent extends ContentBaseComponent implements AccordionHeaderData {\r\n\r\n @Input() classes?: string;\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { ContentBaseComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-accordion-item-show-button',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class AccordionItemShowButtonComponent extends ContentBaseComponent {\r\n\r\n @Input() classes: string;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { ContentBaseComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-accordion-item-hide-button',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class AccordionItemHideButtonComponent extends ContentBaseComponent {\r\n\r\n @Input() classes: string;\r\n}\r\n","import {Component, ContentChildren, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {AccordionItemData} from '../../../interfaces';\r\nimport {AccordionHeaderComponent} from '../accordion-header/accordion-header.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {AccessibilityComponent} from '../../../../shared/components';\r\nimport {AccordionItemShowButtonComponent} from '../../accordion-history/accordion-item-show-button/accordion-item-show-button.component';\r\nimport {AccordionItemHideButtonComponent} from '../../accordion-history/accordion-item-hide-button/accordion-item-hide-button.component';\r\n\r\n@Component({\r\n selector: 'desy-accordion-item',\r\n template: '',\r\n})\r\nexport class AccordionItemComponent extends AccessibilityComponent implements AccordionItemData {\r\n\r\n @Input() id: string;\r\n @Input() open: boolean;\r\n @Input() classes: string;\r\n\r\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(AccordionHeaderComponent) headerComponent: AccordionHeaderComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(AccordionItemShowButtonComponent) showHeaderButton: AccordionItemShowButtonComponent;\r\n \r\n @DesyContentChild()\r\n @ContentChildren(AccordionItemHideButtonComponent) hideHeaderButton: AccordionItemHideButtonComponent;\r\n\r\n}\r\n","import {Component, ContentChildren, ElementRef, HostBinding, Input, OnChanges, QueryList, SimpleChanges, ViewChildren} from '@angular/core';\r\nimport {AccordionHeaderData} from '../../interfaces';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {AccordionItemData} from '../../interfaces';\r\nimport {AccordionHeaderComponent} from './accordion-header/accordion-header.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {AccordionItemComponent} from './accordion-item/accordion-item.component';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-accordion',\r\n templateUrl: './accordion.component.html'\r\n})\r\nexport class AccordionComponent extends AccessibilityComponent implements OnChanges {\r\n \r\n @ViewChildren('itemSelector') itemSelectors: QueryList<ElementRef>;\r\n\r\n @Input() idPrefix: string;\r\n @Input() allowToggle: boolean;\r\n @Input() allowMultiple: boolean;\r\n @Input() heading: AccordionHeaderData;\r\n @Input() headingLevel;\r\n @Input() showControl: boolean;\r\n @Input() items: AccordionItemData[];\r\n \r\n @Input() @HostBinding('class') classes: any;\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.aria-modal') ariaModalData: any\r\n \r\n @DesyContentChild()\r\n @ContentChildren(AccordionHeaderComponent) headingComponent: AccordionHeaderComponent;\r\n @ContentChildren(AccordionItemComponent) itemComponentList: QueryList<AccordionItemComponent>;\r\n\r\n showAll = true;\r\n currentItem: number;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.ariaModalData = this.ariaModal ? this.ariaModal : null;\r\n }\r\n\r\n getItemId(item, index: number): string {\r\n let id;\r\n if (item.id) {\r\n id = item.id;\r\n } else {\r\n if (index === 0) {\r\n id = this.idPrefix ? this.idPrefix : undefined;\r\n } else {\r\n id = this.idPrefix ? this.idPrefix + '-' + index : index;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n changeAll(): void {\r\n const items = this.getItems();\r\n items.forEach(item => {\r\n const isChange = item.open !== this.showAll;\r\n item.open = this.showAll;\r\n if (isChange && item instanceof AccordionItemComponent) {\r\n item.openChange.emit(item.open);\r\n }\r\n });\r\n this.showAll = !this.showAll;\r\n }\r\n\r\n toggleItem(item: AccordionItemData): void {\r\n if (!item.open || this.allowToggle) {\r\n const newOpenValue = !item.open;\r\n if (!this.allowMultiple) {\r\n const items = this.getItems();\r\n items.forEach(it => {\r\n const wasOpen = it.open;\r\n it.open = false;\r\n if (wasOpen && it !== item && it instanceof AccordionItemComponent) {\r\n it.openChange.emit(it.open);\r\n }\r\n });\r\n }\r\n item.open = newOpenValue;\r\n if (item instanceof AccordionItemComponent) {\r\n item.openChange.emit(item.open);\r\n }\r\n }\r\n }\r\n\r\n focusFirstItem(event): void {\r\n event.preventDefault();\r\n this.itemSelectors.toArray()[0].nativeElement.focus();\r\n }\r\n\r\n focusLastItem(event): void {\r\n event.preventDefault();\r\n this.itemSelectors.toArray()[this.itemSelectors.length - 1].nativeElement.focus();\r\n }\r\n\r\n focusNextItem(event, focusedItem: number): void {\r\n event.preventDefault();\r\n const selectors = this.itemSelectors.toArray();\r\n if (selectors[(focusedItem + 1) % selectors.length] != null) {\r\n selectors[(focusedItem + 1) % selectors.length].nativeElement.focus();\r\n }\r\n }\r\n\r\n focusPreviousItem(event, focusedItem: number): void {\r\n event.preventDefault();\r\n const selectors = this.itemSelectors.toArray();\r\n if (selectors[(focusedItem + selectors.length - 1) % selectors.length] != null) {\r\n selectors[(focusedItem + selectors.length - 1) % selectors.length].nativeElement.focus();\r\n }\r\n }\r\n\r\n selectItem( i: number ): void {\r\n this.currentItem = i;\r\n }\r\n\r\n getTitleClasses(): string {\r\n let classes = 'c-h2 mb-base';\r\n if (this.headingComponent && this.headingComponent.classes) {\r\n classes = this.headingComponent.classes;\r\n } else if (this.heading && this.heading.classes) {\r\n classes = this.heading.classes;\r\n }\r\n return classes;\r\n }\r\n\r\n getItems(): AccordionItemData[] {\r\n const items = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\r\n return items;\r\n }\r\n\r\n getItemHeader(item: AccordionItemData): AccordionHeaderComponent {\r\n return item instanceof AccordionItemComponent ? item.headerComponent : null;\r\n } \r\n\r\n getItemContent(item: AccordionItemData): ContentComponent {\r\n return item instanceof AccordionItemComponent ? item.contentComponent : null;\r\n }\r\n\r\n}\r\n","import { Component, ContentChildren, Input } from '@angular/core';\r\nimport { DesyContentChild } from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport { AccordionItemComponent } from '../../accordion/accordion-item/accordion-item.component';\r\nimport { AccordionItemHideButtonComponent } from '../accordion-item-hide-button/accordion-item-hide-button.component';\r\nimport { AccordionItemShowButtonComponent } from '../accordion-item-show-button/accordion-item-show-button.component';\r\n\r\n@Component({\r\n selector: 'desy-accordion-history-item',\r\n template: '',\r\n})\r\nexport class AccordionHistoryItemComponent extends AccordionItemComponent {\r\n\r\n @Input() status: 'current' | 'pending' | 'muted' | 'currentmuted' | any;\r\n @Input() disabled = false;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(AccordionItemShowButtonComponent) showButton: AccordionItemShowButtonComponent;\r\n \r\n @DesyContentChild()\r\n @ContentChildren(AccordionItemHideButtonComponent) hideButton: AccordionItemHideButtonComponent;\r\n}\r\n","import { Component, ContentChildren, QueryList } from '@angular/core';\r\nimport { AccordionComponent } from '../accordion/accordion.component';\r\nimport { AccordionHistoryItemComponent } from './accordion-history-item/accordion-history-item.component';\r\n\r\n@Component({\r\n selector: 'desy-accordion-history',\r\n templateUrl: './accordion-history.component.html'\r\n})\r\nexport class AccordionHistoryComponent extends AccordionComponent {\r\n\r\n // Sobreescribe el tipo del listado de items\r\n @ContentChildren(AccordionHistoryItemComponent) itemComponentList: QueryList<AccordionHistoryItemComponent>;\r\n}\r\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-spinner',\r\n templateUrl: './spinner.component.html'\r\n})\r\nexport class SpinnerComponent extends AccessibilityComponent implements OnChanges{\r\n\r\n @Input() text: string;\r\n\r\n @Input() @HostBinding('class') classes: any;\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.aria-modal') ariaModalData: any\r\n\r\n @Input() id: string;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.classes = this.classes ? this.classes += ' c-spinner' : 'c-spinner'\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.ariaModalData = this.ariaModal ? this.ariaModal : null;\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-details',\r\n templateUrl: './details.component.html'\r\n})\r\nexport class DetailsComponent extends AccessibilityComponent {\r\n\r\n @Input() summaryText: string;\r\n @Input() summaryHtml: string;\r\n @Input() summaryClasses: string;\r\n @Input() containerClasses: string;\r\n @Input() id: string;\r\n @Input() open: boolean;\r\n @Input() classes: string;\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {TermDefinitionData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-term',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TermComponent extends ContentBaseComponent implements TermDefinitionData {\r\n\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {TermDefinitionData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-definition',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class DefinitionComponent extends ContentBaseComponent implements TermDefinitionData {\r\n\r\n @Input() classes: string;\r\n @Input() id: string;\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {DescriptionItemData} from '../../../interfaces';\r\nimport {TermComponent} from '../term/term.component';\r\nimport {DefinitionComponent} from '../definition/definition.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-description-item',\r\n template: ''\r\n})\r\nexport class DescriptionItemComponent implements DescriptionItemData {\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TermComponent) term: TermComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DefinitionComponent) definition: DefinitionComponent;\r\n\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { DescriptionItemData } from '../../interfaces';\r\nimport {DescriptionItemComponent} from './description-item/description-item.component';\r\n\r\n@Component({\r\n selector: 'desy-description-list',\r\n templateUrl: './description-list.component.html'\r\n})\r\nexport class DescriptionListComponent extends AccessibilityComponent {\r\n\r\n @Input() items: Array<DescriptionItemData>;\r\n @ContentChildren(DescriptionItemComponent) itemComponents: QueryList<DescriptionItemComponent>;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n\r\n getItems(): DescriptionItemData[]|DescriptionItemComponent[] {\r\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\r\n return items;\r\n }\r\n\r\n}\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-collapsible',\r\n templateUrl: './collapsible.component.html',\r\n animations: [\r\n trigger('displayCollapsible', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scaleY(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scaleY(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition(':leave', [\r\n animate('75ms ease-in')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class CollapsibleComponent extends AccessibilityAndContentRequiredComponent implements OnInit, OnChanges {\r\n\r\n @Input() headerText: string;\r\n @Input() headerHtml: string;\r\n @Input() id: string;\r\n @Input() open: boolean;\r\n @Input() classes: string;\r\n show: string;\r\n\r\n isOpen(): void {\r\n this.open = !this.open;\r\n this.toggleOpen();\r\n }\r\n\r\n toggleOpen(): void {\r\n if (this.open){\r\n this.show = 'Ocultar';\r\n } else {\r\n this.show = 'Mostrar';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.toggleOpen();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.toggleOpen();\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-item-content-right',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ItemContentRightComponent extends ContentBaseComponent {\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ContentData} from '../../../../desy-commons/interfaces';\r\n\r\n@Component({\r\n selector: 'desy-item-content-bottom',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ItemContentBottomComponent extends ContentBaseComponent implements ContentData {\r\n @Input() classes: string;\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-item-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ItemItemComponent extends ContentBaseComponent {\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {ContentData, DescriptionData, IconData, TitleData} from '../../../desy-commons/interfaces';\r\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\r\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\r\nimport {ItemContentRightComponent} from './item-content-right/item-content-right.component';\r\nimport {ItemContentBottomComponent} from './item-content-bottom/item-content-bottom.component';\r\nimport {ItemItemComponent} from './item-item/item-item.component';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-item',\r\n templateUrl: './item.component.html'\r\n})\r\nexport class ItemComponent extends AccessibilityComponent implements OnChanges, OnInit {\r\n\r\n @Input() title: TitleData;\r\n @Input() description: DescriptionData;\r\n @Input() headingLevel: number;\r\n @Input() items: string[];\r\n @Input() content: ContentData;\r\n @Input() icon: IconData;\r\n @Input() isDraggable: boolean;\r\n @Input() isLocked: boolean;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Input() @HostBinding('class') classes: any;\r\n @Input() @HostBinding('attr.id') id: any;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ItemContentBottomComponent) contentBottomComponent: ItemContentBottomComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ItemContentRightComponent) contentRightComponent: ItemContentRightComponent;\r\n\r\n @ContentChildren(ItemItemComponent) itemComponents: QueryList<ItemItemComponent>;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n ngOnInit(): void {\r\n const progressInterval = setInterval(() => {\r\n this.checkClasses();\r\n clearInterval(progressInterval); \r\n }, 500);\r\n }\r\n\r\n getItems(): string[]|ItemItemComponent[] {\r\n return this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\r\n }\r\n\r\n handleIconContentEmpty(isEmpty: boolean): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n getTitle(): TitleData {\r\n return this.titleComponent ? this.titleComponent : (this.title ? this.title : null);\r\n }\r\n\r\n getIcon(): IconData {\r\n return this.iconComponent ? this.iconComponent : (this.icon ? this.icon : null)\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkClasses();\r\n }\r\n\r\n checkClasses (): void {\r\n if(this.getTitle()){\r\n this.classes = this.classes ? this.classes += ' flex flex-wrap p-base bg-white border border-neutral-base rounded' : 'flex flex-wrap p-base bg-white border border-neutral-base rounded';\r\n this.id = this.id ? this.id : null;\r\n }\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-media-object-figure',\r\n templateUrl: './media-object-figure.component.html'\r\n})\r\nexport class MediaObjectFigureComponent extends ContentBaseComponent {\r\n\r\n}\r\n","import { AccessibilityComponent } from '../../../shared/components';\r\nimport { Component, Input, TemplateRef, ContentChildren, ElementRef, ViewChild, HostBinding, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ContentComponent } from '../../../desy-commons/components/content/content.component';\r\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\r\nimport { MediaObjectFigureComponent } from './media-object-figure/media-object-figure.component';\r\n\r\n@Component({\r\n selector: 'desy-media-object',\r\n templateUrl: './media-object.component.html'\r\n})\r\nexport class MediaObjectComponent extends AccessibilityComponent implements OnChanges { \r\n\r\n @Input() figureHtml: string;\r\n @Input() center: boolean;\r\n @Input() reverse: boolean;\r\n @Input() figureClasses: string;\r\n @Input() contenClasses: string;\r\n \r\n @Input() caller: TemplateRef<any>;\r\n @Input() id: string;\r\n \r\n @Input() @HostBinding('class') classes: any;\r\n @HostBinding('class.items-center') cfgr: boolean;\r\n\r\n //Accessibility\r\n @HostBinding('attr.id') idData: any;\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.tabindex') tabindexData: any;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n \r\n @DesyContentChild()\r\n @ContentChildren(MediaObjectFigureComponent) mediaObjectFigureComponent: MediaObjectFigureComponent;\r\n\r\n @ViewChild('mediaFigureContent', { read: ElementRef, static: true }) mediaFigureContent: ElementRef;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.classes = 'flex' + (this.classes ? ' ' + this.classes : '') + (this.center==true ? ' ' : '');\r\n this.cfgr = this.center;\r\n this.idData = this.id ? this.id : null;\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.tabindexData = this.tabindex ? this.tabindex : null;\r\n }\r\n\r\n}\r\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { StatusIconData } from '../../interfaces/status-icon-data';\r\n\r\n@Component({\r\n selector: 'desy-status',\r\n templateUrl: './status.component.html'\r\n})\r\nexport class StatusComponent extends AccessibilityComponent implements OnChanges{\r\n\r\n @Input() text: string;\r\n @Input() id: string;\r\n @Input() icon: StatusIconData;\r\n\r\n @Input() @HostBinding('class') classes: any;\r\n\r\n //Accessibility\r\n @HostBinding('attr.id') idData: any;\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.tabindex') tabindexData: any;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.classes = this.classes ? this.classes : null;\r\n this.idData = this.id ? this.id : null;\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.tabindexData = this.tabindex ? this.tabindex : null;\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.icon && this.icon.type){\r\n type = this.icon.type.toLocaleLowerCase();\r\n } else {\r\n type = 'success';\r\n } \r\n return type;\r\n }\r\n}\r\n","import { Component, ContentChildren, HostBinding, Input, OnChanges, QueryList, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { DescriptionItemData, StatusItemTitleData, StatusData } from '../../interfaces';\r\nimport { ErrorMessageData, HintData } from '../../../desy-forms/interfaces';\r\nimport { DescriptionItemComponent } from '../description-list/description-item/description-item.component';\r\nimport { TitleComponent } from '../../../desy-commons/components/title/title.component';\r\nimport { HintComponent } from '../../../desy-forms/components/hint/hint.component';\r\nimport { ErrorMessageComponent } from '../../../desy-forms/components/error-message/error-message.component';\r\nimport { StatusComponent } from '../status/status.component';\r\nimport { ContentComponent } from '../../../desy-commons/components/content/content.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-status-item',\r\n templateUrl: './status-item.component.html'\r\n})\r\nexport class StatusItemComponent extends AccessibilityComponent implements OnChanges{ \r\n\r\n @Input() id: string; \r\n\r\n @Input() errorId: string;\r\n @Input() describedBy: string;\r\n\r\n @Input() title: StatusItemTitleData;\r\n @Input() hint: HintData;\r\n @Input() errorMessage: ErrorMessageData;\r\n @Input() items: DescriptionItemData[];\r\n @Input() status: StatusData;\r\n\r\n @Input() @HostBinding('class') classes: any;\r\n\r\n //Accessibility\r\n @HostBinding('attr.id') idData: any;\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.tabindex') tabindexData: any;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HintComponent) hintComponent: HintComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ErrorMessageComponent) errorMessageComponent: ErrorMessageComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @ContentChildren(DescriptionItemComponent) itemComponents: QueryList<DescriptionItemComponent>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(StatusComponent) statusComponent: StatusComponent;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.classes = this.classes ? this.classes : null;\r\n this.idData = this.id ? this.id : null;\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.tabindexData = this.tabindex ? this.tabindex : null;\r\n }\r\n\r\n getItems(): DescriptionItemData[]|DescriptionItemComponent[] {\r\n return (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {TabsPanelData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-panel',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class PanelComponent extends ContentBaseComponent implements TabsPanelData {\r\n\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n}","import {Component, ContentChildren, Input } from '@angular/core';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport { PanelComponent } from '../panel/panel.component';\r\nimport { TabsItemsData, TabsPanelData } from '../../../interfaces';\r\nimport { AccessibilityComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-tab-item',\r\n template: ''\r\n})\r\nexport class TabItemComponent extends AccessibilityComponent implements TabsItemsData {\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(PanelComponent) panelComponent: PanelComponent;\r\n\r\n @Input() classes: string;\r\n @Input() disabled: boolean;\r\n @Input() id: string;\r\n panel?: TabsPanelData;\r\n\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { StringUtils } from '../../../shared/utils/string-utils';\r\nimport {TabsItemsData} from '../../interfaces';\r\nimport { TabItemComponent } from './tab-item/tab-item.component';\r\n\r\n@Component({\r\n selector: 'desy-tabs',\r\n templateUrl: './tabs.component.html'\r\n})\r\nexport class TabsComponent extends AccessibilityComponent implements AfterViewInit, OnChanges {\r\n\r\n @ContentChildren(TabItemComponent) itemComponents: QueryList<TabItemComponent>;\r\n @ViewChildren('tabSelector') tabSelectors: QueryList<ElementRef>;\r\n @ViewChildren('tabSelectorContentWrapper') tabSelectorContentWrapper: QueryList<ElementRef>;\r\n @ViewChild('tabSrOnly') tabSrOnly: ElementRef;\r\n\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() headingLevel: number;\r\n \r\n @Input() title: string;\r\n @Input() tablistAriaLabel: string;\r\n @Input() items: TabsItemsData[];\r\n \r\n @Input() @HostBinding('class') classes: any;\r\n\r\n //Accessibility\r\n @HostBinding('attr.id') idData: any;\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.tabindex') tabindexData: any;\r\n\r\n currentTab = 0;\r\n currentPanel;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.classes = this.classes ? 'c-tabs ' + this.classes : 'c-tabs';\r\n this.idData = this.id ? this.id : null;\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.tabindexData = this.tabindex ? this.tabindex : null;\r\n }\r\n \r\n ngAfterViewInit(): void {\r\n if(this.items){\r\n const item = this.getItems();\r\n this.selectTab(item.findIndex(value => !value.disabled));\r\n }\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n getItems(): TabsItemsData[]|TabItemComponent[] {\r\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\r\n return items;\r\n }\r\n\r\n getItemPanel(tab: number): TabItemComponent {\r\n let panel;\r\n const items = this.getItems();\r\n const item = items[tab];\r\n if (item instanceof TabItemComponent){\r\n panel = item.panelComponent;\r\n }\r\n return panel;\r\n }\r\n\r\n\r\n getIdPrefix(): string {\r\n if (this.idPrefix) {\r\n return this.idPrefix;\r\n }\r\n }\r\n\r\n getItemId(index: number): string {\r\n let id;\r\n const item = this.getItems();\r\n if (item[index].id) {\r\n id = item[index].id;\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n\r\n isDisabled(item: TabsItemsData): boolean {\r\n return item.disabled ? true : null;\r\n }\r\n\r\n\r\n selectTab( i: number ): void {\r\n this.currentTab = i;\r\n const currentItem = this.getItems()[i];\r\n this.currentPanel = currentItem instanceof TabItemComponent ? currentItem.panelComponent : currentItem.panel;\r\n this.tabSrOnly.nativeElement.innerHTML = this.tabSelectorContentWrapper.toArray()[this.currentTab].nativeElement.innerHTML;\r\n }\r\n\r\n focusFirstTab(event?): void {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n const enabledTabs = this.tabSelectors.filter((item, index) => !item[index].disabled);\r\n enabledTabs[0].nativeElement.focus();\r\n }\r\n\r\n focusLastTab(event?): void {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n const enabledTabs = this.tabSelectors.filter((item, index) => !item[index].disabled);\r\n enabledTabs[enabledTabs.length - 1].nativeElement.focus();\r\n }\r\n\r\n focusNextTab(focusedTab: number): void {\r\n const item = this.getItems();\r\n let nextTab = (focusedTab + 1) % item.length;\r\n while (nextTab !== focusedTab) {\r\n if (!item[nextTab].disabled) {\r\n this.tabSelectors.find((i, index) => index === nextTab).nativeElement.focus();\r\n break;\r\n }\r\n nextTab = (nextTab + 1) % item.length;\r\n }\r\n }\r\n\r\n focusPreviousTab(focusedTab: number): void {\r\n const item = this.getItems();\r\n let previousTab = (focusedTab - 1 + item.length) % item.length;\r\n while (previousTab !== focusedTab) {\r\n if (!item[previousTab].disabled) {\r\n this.tabSelectors.find((i, index) => index === previousTab).nativeElement.focus();\r\n break;\r\n }\r\n previousTab = (previousTab - 1 + item.length) % item.length;\r\n }\r\n }\r\n\r\n getPanelContent(tab: number): string {\r\n const item = this.getItems();\r\n return item[tab].panel && item[tab].panel.text ? `<p>${ StringUtils.escapeHtml(item[tab].panel.text) }</p>` : null;\r\n }\r\n}\r\n","import {\r\n ComponentFactoryResolver, ComponentRef,\r\n Injectable,\r\n TemplateRef, Type\r\n} from '@angular/core';\r\nimport { AlertOptions } from '../interfaces/alert-options';\r\nimport { OpenAlertResult } from '../interfaces/open-alert-result';\r\nimport { AlertComponent } from '../components/alert/alert.component';\r\nimport { NotificationComponent } from '../../desy-nav/components/notification/notification.component';\r\nimport { NotificationOptions } from '../../desy-nav/interfaces/notification-options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n constructor(private factoryResolver: ComponentFactoryResolver) { }\r\n\r\n public openAlert(caller: TemplateRef<any>|NotificationOptions, alertOptions: AlertOptions): Promise<OpenAlertResult> {\r\n return new Promise<OpenAlertResult>((resolve, reject) => {\r\n\r\n if (!caller) {\r\n reject('caller is required');\r\n }\r\n\r\n if (!alertOptions) {\r\n reject('alertOptions is required');\r\n }\r\n\r\n const alert = this.createAlert(alertOptions);\r\n const result: OpenAlertResult = {\r\n alert\r\n };\r\n\r\n\r\n if (caller instanceof TemplateRef) {\r\n alert.instance.caller = caller;\r\n resolve(result);\r\n } else {\r\n alert.instance.callerType = NotificationComponent;\r\n alert.instance.onCallerCreationCallback = (d, c) => {\r\n this.initNotification(d, c, caller);\r\n result.component = c;\r\n resolve(result);\r\n };\r\n }\r\n });\r\n }\r\n\r\n public closeAlert(alert: ComponentRef<AlertComponent>|AlertComponent): void {\r\n if (alert) {\r\n if (alert instanceof ComponentRef) {\r\n alert.instance.dismiss();\r\n } else {\r\n alert.dismiss();\r\n }\r\n }\r\n }\r\n\r\n public onCloseAlert(alert: ComponentRef<AlertComponent>|AlertComponent): Promise<void> {\r\n return new Promise<void>((resolve => {\r\n let a;\r\n if (alert instanceof ComponentRef) {\r\n a = alert.instance;\r\n } else {\r\n a = alert;\r\n }\r\n\r\n const subscription = a.activeChange.subscribe(() => {\r\n resolve();\r\n subscription.unsubscribe();\r\n });\r\n }));\r\n }\r\n\r\n\r\n private createAlert(alertOptions: AlertOptions): ComponentRef<AlertComponent> {\r\n const factory = this.factoryResolver.resolveComponentFactory(AlertComponent);\r\n const alert = alertOptions.place.createComponent<AlertComponent>(factory);\r\n\r\n alert.instance.active = true;\r\n if (alertOptions) {\r\n Object.assign(alert.instance, alertOptions);\r\n }\r\n\r\n this.onCloseAlert(alert).then(() => alert.destroy());\r\n\r\n return alert;\r\n }\r\n\r\n private initNotification(alert: AlertComponent, notificationRef: ComponentRef<NotificationComponent>,\r\n options: NotificationOptions): void {\r\n Object.assign(notificationRef.instance, options);\r\n if (options.isDismissible) {\r\n const subscription = notificationRef.instance.isOpenChange.subscribe(() => {\r\n this.closeAlert(alert);\r\n subscription.unsubscribe();\r\n });\r\n }\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-tooltip-content',\r\n templateUrl: './tooltip-content.component.html'\r\n})\r\nexport class TooltipContentComponent extends ContentBaseComponent {\r\n}\r\n","import { ContentBaseComponent } from './../../../shared/components/content-base/content-base.component';\r\nimport { Component, Input } from '@angular/core';\r\nimport { ListboxItemData } from '../../../desy-buttons/interfaces/listbox-item-data';\r\n\r\n\r\n@Component({\r\n selector: 'desy-pagination-item-perpage',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class PaginationItemPerPageComponent extends ContentBaseComponent implements ListboxItemData {\r\n @Input() classes?: string;\r\n @Input() value: number;\r\n active: boolean;\r\n}\r\n","import { ContentBaseComponent } from './../../../shared/components/content-base/content-base.component';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'desy-pagination-listbox-label',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class PaginationListboxLabelComponent extends ContentBaseComponent {\r\n @Input() classes?: string;\r\n\r\n}\r\n","\r\nimport { Component, ContentChildren, EventEmitter, Input, OnChanges, Output, SimpleChanges, QueryList, AfterViewInit, HostBinding } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\r\nimport { PaginationItemData } from '../../interfaces';\r\nimport { PaginationItemPerPageComponent } from '../pagination-item-perpage/pagination-item-perpage.component';\r\nimport { PaginationListboxLabelComponent } from '../pagination-listbox-label/pagination-listbox-label.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-pagination',\r\n templateUrl: './pagination.component.html'\r\n})\r\nexport class PaginationComponent extends AccessibilityComponent implements OnChanges, AfterViewInit { \r\n \r\n @Input() hasSelect: boolean;\r\n @Input() idPrefix: string;\r\n @Input() totalItems: number;\r\n @Input() itemsPerPage: number;\r\n @Input() hasPrevious: boolean;\r\n @Input() hasNext: boolean;\r\n @Input() previousText: string;\r\n @Input() nextText: string;\r\n @Input() hasSelectItemsPerPage: string;\r\n @Input() classes: string;\r\n\r\n @Input() @HostBinding('class') classesContainer: any;\r\n @Input() @HostBinding('attr.id') id: any;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(PaginationListboxLabelComponent) listboxLabel: PaginationListboxLabelComponent;\r\n\r\n @ContentChildren(PaginationItemPerPageComponent) listboxItems: QueryList<PaginationItemPerPageComponent>;\r\n\r\n @Input() currentPage = 1; // == currentPageindex + 1\r\n @Output() currentPageChange = new EventEmitter<number>();\r\n\r\n nPages: number;\r\n items: PaginationItemData[];\r\n\r\n defaultText: boolean = false;\r\n\r\n readonly previousIcon = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"self-center h-2.5 w-2.5 mr-2\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M54.87 71.77a2.5 2.5 0 010-3.54L106 17.07A10 10 0 1091.89 2.93L35.43 59.39a15 15 0 000 21.22l56.46 56.46A10 10 0 10106 122.93z\" fill=\"currentColor\" /></svg>';\r\n readonly nextIcon = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"self-center h-2.5 w-2.5 ml-2\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M34 137.07a10 10 0 010-14.14l51.13-51.16a2.5 2.5 0 000-3.54L34 17.07A10 10 0 0148.11 2.93l56.46 56.46a15 15 0 010 21.22l-56.46 56.46a10 10 0 01-14.11 0z\" fill=\"currentColor\" /></svg>';\r\n readonly prefix = '<span class=\"sr-only\">Página </span>';\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkChanges();\r\n this.classesContainer = this.classesContainer ? this.classesContainer += ' lg:flex lg:flex-wrap lg:items-center lg:gap-base' : 'lg:flex lg:flex-wrap lg:items-center lg:gap-base'\r\n this.id = this.id ? this.id : null\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if(this.itemsPerPage && this.listboxItems && this.listboxItems.length > 0){\r\n let itemActive = false;\r\n this.listboxItems.forEach((item) => {\r\n if(this.itemsPerPage == item.value){\r\n item.active = true; \r\n itemActive = true\r\n }\r\n });\r\n if(!itemActive){\r\n this.listboxItems.first.active = true;\r\n }\r\n }\r\n }\r\n\r\n checkChanges(){\r\n this.nPages = Math.ceil(this.totalItems / this.itemsPerPage);\r\n\r\n if (!this.currentPage || this.currentPage < 1 || this.currentPage > this.nPages) {\r\n this.currentPage = 1;\r\n setTimeout( () => this.currentPageChange.emit(this.currentPage));\r\n }\r\n\r\n if (!this.previousText) {\r\n this.previousText = 'Anterior';\r\n }\r\n if (!this.nextText) {\r\n this.nextText = 'Siguiente';\r\n }\r\n this.buildPages();\r\n }\r\n\r\n getSuffix(page: number): string {\r\n return page >= 0 && page * this.itemsPerPage < this.totalItems ?\r\n `<span class=\"sr-only\">: Página ${page + 1} con los resultados del ${page * this.itemsPerPage + 1} al ${this.getLastItemNumber(page)}</span>`\r\n : '';\r\n }\r\n\r\n getLastItemNumber(pageIndex: number): number {\r\n return Math.min((pageIndex + 1) * this.itemsPerPage, this.totalItems);\r\n }\r\n\r\n buildPages(): void {\r\n this.items = [];\r\n for (let i = 0; i < this.nPages; i++) {\r\n const item: PaginationItemData = {\r\n text: i + 1,\r\n active: ( (i + 1) === this.currentPage),\r\n routerLink: []\r\n };\r\n this.items.push(item);\r\n }\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'pagination-item';\r\n }\r\n\r\n getButtonId( index: number): string {\r\n return this.getIdPrefix() + (index === 0) ? '' : '-' + index;\r\n }\r\n\r\n changePage(current: number): void{\r\n this.currentPage = current;\r\n this.currentPageChange.emit(this.currentPage);\r\n for (let i = 0; i < this.items.length; i++) {\r\n const item = this.items[i];\r\n item.active = ((i + 1) === this.currentPage);\r\n }\r\n }\r\n\r\n previous(): void {\r\n if (this.currentPage > 1) {\r\n this.changePage(this.currentPage - 1);\r\n }\r\n }\r\n\r\n next(): void {\r\n if (this.currentPage < this.nPages) {\r\n this.changePage(this.currentPage + 1);\r\n }\r\n }\r\n\r\n getActiveItemText(): any {\r\n const activeItems = this.items.filter(item => item.active);\r\n return activeItems && activeItems.length > 0 ? activeItems[0].text : '';\r\n }\r\n\r\n getListboxLabel(): PaginationListboxLabelComponent {\r\n return this.listboxLabel ? this.listboxLabel : null;\r\n }\r\n\r\n getItemsPerPage(): PaginationItemPerPageComponent[] {\r\n return this.listboxItems && this.listboxItems.length > 0 ? this.listboxItems.toArray() : null;\r\n }\r\n\r\n changeItemsPerPage(event: any) {\r\n if(event && event.value){\r\n let newValue = event.value;\r\n this.itemsPerPage = newValue;\r\n this.buildPages();\r\n }\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'innerHtml'\r\n})\r\nexport class InnerHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(value: string): SafeHtml {\r\n return this.sanitizer.sanitize(SecurityContext.HTML, value);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'externalHref'\r\n})\r\nexport class ExternalHrefPipe implements PipeTransform {\r\n\r\n /**\r\n * Asegura que un enlace externo sea correcto\r\n * @param href enlace\r\n */\r\n transform(href: string): string {\r\n let externalHref: string;\r\n if (href) {\r\n if (href.match('http(s)?://')) {\r\n externalHref = href;\r\n } else {\r\n externalHref = 'http://' + href;\r\n }\r\n } else {\r\n externalHref = '#';\r\n }\r\n return externalHref;\r\n }\r\n\r\n}\r\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyAttributeChange]'\r\n})\r\nexport class AttributeChangeDirective implements OnDestroy {\r\n\r\n private changes: MutationObserver;\r\n\r\n @Input() attributesToCheck: string|string[];\r\n\r\n @Output()\r\n public desyAttributeChange = new EventEmitter();\r\n\r\n @Output()\r\n public desyAttributeChangeMutation = new EventEmitter();\r\n\r\n constructor(private elementRef: ElementRef) {\r\n const element = this.elementRef.nativeElement;\r\n\r\n this.changes = new MutationObserver((mutations: MutationRecord[]) => {\r\n mutations.forEach((mutation: MutationRecord) => {\r\n if (this.attributesToCheck) {\r\n const attrs = typeof (this.attributesToCheck) === 'string' ? [this.attributesToCheck] : this.attributesToCheck;\r\n if (attrs.findIndex(v => v === mutation.attributeName) >= 0) {\r\n this.desyAttributeChange.emit(this.elementRef.nativeElement.innerHTML);\r\n this.desyAttributeChangeMutation.emit(mutation);\r\n }\r\n }\r\n });\r\n }\r\n );\r\n\r\n this.changes.observe(element, {\r\n attributes: true,\r\n childList: false,\r\n characterData: false,\r\n subtree: false\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.changes.disconnect();\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, SimpleChanges} from '@angular/core';\r\n@Directive({\r\n selector: '[desyInnerContent]'\r\n})\r\nexport class InnerContentDirective implements OnChanges {\r\n\r\n @Input('desyInnerContent') content: string;\r\n @Input() isHtml: boolean;\r\n @Input() deleteContentIfEmpty = true;\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.content) {\r\n if (this.isHtml) {\r\n this.el.nativeElement.innerHTML = this.content;\r\n } else {\r\n this.el.nativeElement.innerText = this.content;\r\n }\r\n } else if (this.deleteContentIfEmpty) {\r\n this.el.nativeElement.innerText = null;\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyClickOutside]'\r\n})\r\nexport class ClickOutsideDirective {\r\n\r\n @Input('desyClickOutside') active = true;\r\n @Output() clickOutside = new EventEmitter<void>();\r\n @Input() desyClickOutsideElem: Element;\r\n\r\n constructor(private hostElementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target): void {\r\n let clickedInside;\r\n if (this.desyClickOutsideElem) {\r\n clickedInside = this.desyClickOutsideElem.contains(target);\r\n } else {\r\n clickedInside = (this.hostElementRef.nativeElement as Element).contains(target);\r\n }\r\n if (!clickedInside && this.active) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n\r\n}\r\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\r\n\r\n/**\r\n * Permite comprobar cuándo se produce un cambio en el contenido de un elemento.\r\n * La propia directiva emite el html interno del elemento en formato string, mientras que desyContentChangeMutation emite los cambios.\r\n */\r\n@Directive({\r\n selector: '[desyContentChange]'\r\n})\r\nexport class ContentChangeDirective implements OnDestroy {\r\n\r\n private changes: MutationObserver;\r\n\r\n @Input() observeProperties: { attributes: boolean, childList: boolean, characterData: boolean, subtree: boolean } = {\r\n attributes: false,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n };\r\n\r\n @Output()\r\n public desyContentChange = new EventEmitter<ElementRef>();\r\n\r\n @Output()\r\n public desyContentChangeMutation = new EventEmitter();\r\n\r\n constructor(private elementRef: ElementRef) {\r\n const element = this.elementRef.nativeElement;\r\n\r\n this.changes = new MutationObserver((mutations: MutationRecord[]) => {\r\n mutations.forEach((mutation: MutationRecord) => {\r\n this.desyContentChange.emit(this.elementRef);\r\n this.desyContentChangeMutation.emit(mutation);\r\n });\r\n }\r\n );\r\n\r\n this.changes.observe(element, this.observeProperties);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.changes.disconnect();\r\n }\r\n}\r\n","import {\r\n ComponentFactory,\r\n ComponentFactoryResolver,\r\n Directive,\r\n Injector,\r\n Input, OnChanges,\r\n SimpleChanges, TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport {ContentBaseComponent} from '../components';\r\n\r\n/**\r\n * Permite introducir contenido de forma dinámica en una posición determinada desde:\r\n * - component: Componente existente de tipo ContentBase\r\n * - html: texto html en formato string\r\n * - text: texto plano en formato string\r\n */\r\n@Directive({\r\n selector: '[desyCustomInnerContent]'\r\n})\r\nexport class CustomInnerContentDirective implements OnChanges {\r\n\r\n @Input() desyCustomInnerContent: { component?: any|ContentBaseComponent, template?: TemplateRef<any>, html?: string, text?: string };\r\n\r\n private factory: ComponentFactory<ContentBaseComponent>;\r\n\r\n constructor(private viewContainerRef: ViewContainerRef, private resolver: ComponentFactoryResolver, private injector: Injector) {\r\n this.factory = this.resolver.resolveComponentFactory(ContentBaseComponent);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.viewContainerRef.clear();\r\n if (this.desyCustomInnerContent.component && this.desyCustomInnerContent.component instanceof ContentBaseComponent) {\r\n\r\n // Se crea la vista embebida basándose en el contenido del ContentBase indicado.\r\n this.viewContainerRef.createEmbeddedView(this.desyCustomInnerContent.component.getContent());\r\n } else if (this.desyCustomInnerContent.template) {\r\n\r\n // Se crea la vista embebida utilizando directamente el template.\r\n this.viewContainerRef.createEmbeddedView(this.desyCustomInnerContent.template);\r\n } else if (this.desyCustomInnerContent.html) {\r\n\r\n // Se carga el contenido en un div temporal.\r\n const tmpWrapper = document.createElement('div');\r\n tmpWrapper.innerHTML = this.desyCustomInnerContent.html;\r\n\r\n // Los nodos hijos del div se proyectan dentro de un componente ContentBase.\r\n const nodeList = [];\r\n tmpWrapper.childNodes.forEach(node => nodeList.push(node));\r\n const componentRef = this.factory.create(this.injector, [ nodeList ]);\r\n\r\n // Finalmente se crea la vista embebida basándose en el contenido del ContentBase creado.\r\n // Se podría hacer con un this.viewContainerRef.createComponent(), pero así se evita el tag envolvente del componente en el DOM\r\n this.viewContainerRef.createEmbeddedView(componentRef.instance.getContent());\r\n } else if (this.desyCustomInnerContent.text) {\r\n\r\n // Se carga el contenido en un nodo de texto\r\n const textNode = document.createTextNode(this.desyCustomInnerContent.text);\r\n\r\n // El nodo de texto se proyecta dentro de un componente ContentBase\r\n const componentRef = this.factory.create(this.injector, [[ textNode ]]);\r\n\r\n // Finalmente se crea la vista embebida basándose en el contenido del ContentBase creado.\r\n // Se podría hacer con un this.viewContainerRef.createComponent(), pero así se evita el tag envolvente del componente en el DOM\r\n this.viewContainerRef.createEmbeddedView(componentRef.instance.getContent());\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n// components\r\nimport {\r\n AccessibilityComponent,\r\n ContentBaseComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent,\r\n AccessibilityAndContentRequiredComponent\r\n} from './components';\r\n\r\n// pipes\r\nimport { InnerHtmlPipe } from './pipes/inner-html.pipe';\r\nimport { MakeHtmlListPipe } from './pipes/make-html-list.pipe';\r\nimport { ExternalHrefPipe } from './pipes/external-href.pipe';\r\n\r\n// directives\r\nimport { AttributeChangeDirective } from './directives/attribute-change.directive';\r\nimport { InnerContentDirective } from './directives/inner-content.directive';\r\nimport { ClickOutsideDirective } from './directives/click-outside.directive';\r\nimport { ContentChangeDirective } from './directives/content-change.directive';\r\nimport { CustomInnerContentDirective } from './directives/custom-inner-content.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n // components\r\n AccessibilityComponent,\r\n ContentBaseComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent,\r\n AccessibilityAndContentRequiredComponent,\r\n\r\n // pipes\r\n InnerHtmlPipe,\r\n MakeHtmlListPipe,\r\n ExternalHrefPipe,\r\n\r\n // directives\r\n AttributeChangeDirective,\r\n InnerContentDirective,\r\n ClickOutsideDirective,\r\n ContentChangeDirective,\r\n CustomInnerContentDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [\r\n RouterModule,\r\n\r\n // components\r\n AccessibilityComponent,\r\n ContentBaseComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent,\r\n AccessibilityAndContentRequiredComponent,\r\n\r\n // pipes\r\n InnerHtmlPipe,\r\n MakeHtmlListPipe,\r\n ExternalHrefPipe,\r\n\r\n // directives\r\n AttributeChangeDirective,\r\n InnerContentDirective,\r\n ClickOutsideDirective,\r\n ContentChangeDirective,\r\n CustomInnerContentDirective,\r\n ]\r\n})\r\nexport class SharedModule { }\r\n","import { Component } from '@angular/core';\r\nimport { ControlContainer, NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'desy-template-driven-wrapper',\r\n templateUrl: './template-driven-wrapper.component.html',\r\n providers: [ { provide: ControlContainer, useExisting: NgForm, } ]\r\n})\r\nexport class TemplateDrivenWrapperComponent {\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { ContentBaseComponent } from '../../../shared/components';\r\nimport { DividerData } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-divider',\r\n templateUrl: './divider.component.html'\r\n})\r\nexport class DividerComponent extends ContentBaseComponent implements DividerData {\r\n @Input() text?: string;\r\n @Input() html?: string;\r\n\r\n}\r\n","// componentes\r\nimport { NgModule } from '@angular/core';\r\nimport { IconComponent } from './components/icon/icon.component';\r\nimport { ContentComponent } from './components/content/content.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\r\nimport { TitleComponent } from './components/title/title.component';\r\nimport { DescriptionComponent } from './components/description/description.component';\r\nimport { DividerComponent } from './components/divider/divider.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n IconComponent,\r\n ContentComponent,\r\n DescriptionComponent,\r\n TitleComponent,\r\n DividerComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n NgxTippyModule\r\n ],\r\n exports: [\r\n IconComponent,\r\n ContentComponent,\r\n DescriptionComponent,\r\n TitleComponent,\r\n DividerComponent\r\n ]\r\n})\r\n\r\nexport class DesyCommonsModule { }\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedModule } from '../shared/shared.module';\r\n// componentes\r\nimport { TemplateDrivenWrapperComponent } from './components/template-driven-wrapper/template-driven-wrapper.component';\r\nimport { FormFieldComponent } from './components/form-field/form-field.component';\r\nimport { HintComponent } from './components/hint/hint.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\r\nimport { FieldsetComponent } from './components/fieldset/fieldset.component';\r\nimport { LegendComponent } from './components/fieldset/legend/legend.component';\r\nimport { TextareaComponent } from './components/textarea/textarea.component';\r\nimport { CharacterCountComponent } from './components/character-count/character-count.component';\r\nimport { InputComponent } from './components/input/input.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { FileUploadComponent } from './components/file-upload/file-upload.component';\r\nimport { InputGroupComponent } from './components/input-group/input-group.component';\r\nimport { RadiosComponent } from './components/radios/radios.component';\r\nimport { RadioItemComponent } from './components/radios/radio-item/radio-item.component';\r\nimport { CheckboxesComponent } from './components/checkboxes/checkboxes.component';\r\nimport { CheckboxItemComponent } from './components/checkboxes/checkbox-item/checkbox-item.component';\r\nimport { DateInputComponent } from './components/date-input/date-input.component';\r\nimport { SearchBarComponent} from './components/search-bar/search-bar.component';\r\nimport { OptionComponent } from './components/select/option/option.component';\r\nimport { DateInputDayComponent } from './components/date-input/date-input-day/date-input-day.component';\r\nimport { DateInputMonthComponent } from './components/date-input/date-input-month/date-input-month.component';\r\nimport { DateInputYearComponent } from './components/date-input/date-input-year/date-input-year.component';\r\n\r\n// directivas\r\nimport { ConditionDirective } from './directives/condition.directive';\r\n\r\nimport { DesyCommonsModule } from '../desy-commons/desy-commons.module';\r\nimport { InputGroupItemComponent } from './components/input-group/input-group-item/input-group-item.component';\r\nimport { DateInputItemComponent } from './components/date-input/date-input-item/date-input-item.component';\r\nimport { InputGroupDividerComponent } from './components/input-group/input-group-divider/input-group-divider.component';\r\nimport { DateInputDividerComponent } from './components/date-input/date-input-divider/date-input-divider.component';\r\nimport { InputGroupInputComponent } from './components/input-group/input-group-input/input-group-input.component';\r\nimport { InputGroupSelectComponent } from './components/input-group/input-group-select/input-group-select.component';\r\nimport { OptionGroupComponent } from './components/select/option-group/option-group.component';\r\nimport { SelectItemComponent } from './components/select/select-item/select-item.component';\r\nimport { TreeComponent } from './components/tree/tree.component';\r\nimport { TreeCheckboxComponent } from './components/tree/tree-checkbox/tree-checkbox.component';\r\nimport { TreeSubComponent } from './components/tree/tree-sub/tree-sub.component';\r\nimport { TreeItemComponent } from './components/tree/tree-item/tree-item.component';\r\nimport { TreeItemsGeneratorComponent } from './components/tree/tree-items-generator/tree-items-generator.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TemplateDrivenWrapperComponent,\r\n FormFieldComponent,\r\n HintComponent,\r\n LabelComponent,\r\n ErrorMessageComponent,\r\n FieldsetComponent,\r\n LegendComponent,\r\n TextareaComponent,\r\n CharacterCountComponent,\r\n InputComponent,\r\n SelectComponent,\r\n FileUploadComponent,\r\n InputGroupComponent,\r\n InputGroupItemComponent,\r\n DateInputItemComponent,\r\n InputGroupDividerComponent,\r\n DateInputDividerComponent,\r\n InputGroupInputComponent,\r\n InputGroupSelectComponent,\r\n RadiosComponent,\r\n RadioItemComponent,\r\n CheckboxesComponent,\r\n CheckboxItemComponent,\r\n DateInputComponent,\r\n SearchBarComponent,\r\n OptionComponent,\r\n OptionGroupComponent,\r\n SelectItemComponent,\r\n DateInputDayComponent,\r\n DateInputMonthComponent,\r\n DateInputYearComponent,\r\n TreeComponent,\r\n TreeSubComponent,\r\n TreeItemComponent,\r\n TreeCheckboxComponent,\r\n TreeItemsGeneratorComponent,\r\n\r\n ConditionDirective,\r\n\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SharedModule,\r\n DesyCommonsModule,\r\n ],\r\n exports: [\r\n HintComponent,\r\n LabelComponent,\r\n ErrorMessageComponent,\r\n FieldsetComponent,\r\n LegendComponent,\r\n TextareaComponent,\r\n CharacterCountComponent,\r\n InputComponent,\r\n SelectComponent,\r\n FileUploadComponent,\r\n InputGroupComponent,\r\n InputGroupDividerComponent,\r\n DateInputDividerComponent,\r\n InputGroupInputComponent,\r\n InputGroupSelectComponent,\r\n RadiosComponent,\r\n RadioItemComponent,\r\n CheckboxesComponent,\r\n CheckboxItemComponent,\r\n DateInputComponent,\r\n SearchBarComponent,\r\n OptionComponent,\r\n OptionGroupComponent,\r\n DateInputDayComponent,\r\n DateInputMonthComponent,\r\n DateInputYearComponent,\r\n TreeComponent,\r\n TreeSubComponent,\r\n TreeItemComponent,\r\n TreeItemsGeneratorComponent,\r\n\r\n ConditionDirective\r\n ]\r\n})\r\nexport class DesyFormsModule { }\r\n","import {\r\n AfterContentInit, ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {IconData} from '../../../desy-commons/interfaces';\r\nimport {TooltipContentComponent} from './tooltip-content/tooltip-content.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-tooltip',\r\n templateUrl: './tooltip.component.html'\r\n})\r\nexport class TooltipComponent extends AccessibilityComponent implements AfterContentInit, OnChanges {\r\n\r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TooltipContentComponent) tooltipContentComponent: TooltipContentComponent;\r\n\r\n @ViewChild('tooltipContent', { read: ElementRef, static: true }) tooltipContent: ElementRef;\r\n\r\n @Input() id: string;\r\n @Input() text: string;\r\n @Input() html: string;\r\n @Input() complex: boolean;\r\n @Input() classesTooltip: string;\r\n @Input() icon: IconData;\r\n @Input() caller: TemplateRef<any>;\r\n @Input() @HostBinding('class') classes: any;\r\n // @HostBinding('data-module') dataModule = \"c-tabs\";\r\n\r\n //Accessibility\r\n @HostBinding('attr.id') idData: any;\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.tabindex') tabindexData: any;\r\n\r\n tippyProperties: any;\r\n hasContent = true;\r\n hasIconComponentContent = true;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.classes = this.classes ? this.classes : null;\r\n this.idData = this.id ? this.id : null;\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.tabindexData = this.tabindex ? this.tabindex : null;\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n const contentTooltip = this.tooltipContent.nativeElement as HTMLElement;\r\n this.tippyProperties = {\r\n placement: 'top',\r\n inlinePositioning: true,\r\n content: contentTooltip,\r\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\r\n trigger: 'mouseenter focus',\r\n hideOnClick: false,\r\n theme: '',\r\n plugins: [{\r\n name: 'hideOnEsc',\r\n defaultValue: true,\r\n fn({hide}): any {\r\n\r\n function onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === TooltipComponent.KEY_CODE_ESC) {\r\n hide();\r\n }\r\n }\r\n\r\n return {\r\n onShow(): void {\r\n document.addEventListener('keydown', onKeyDown);\r\n },\r\n onHide(): void {\r\n document.removeEventListener('keydown', onKeyDown);\r\n },\r\n };\r\n },\r\n }],\r\n role: 'tooltip',\r\n aria: {\r\n content: this.complex ? 'describedby' : 'labelledby',\r\n },\r\n };\r\n }\r\n\r\n getIdButton(): string {\r\n return this.id + '-button';\r\n }\r\n\r\n getIdTooltip(): string {\r\n return this.id + '-tooltip';\r\n }\r\n\r\n handleEmptyContent(isEmpty: boolean): void {\r\n this.hasContent = !isEmpty;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleEmptyIconContent(isEmpty: boolean): void {\r\n this.hasIconComponentContent = !isEmpty;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n\r\n getMainContent(): string {\r\n let content;\r\n if (this.html) {\r\n content = this.html;\r\n } else if (this.text) {\r\n content = `<p>${this.text}</p>`;\r\n }\r\n return content;\r\n }\r\n\r\n getIconContent(icon: IconData): string {\r\n let iconContent;\r\n if (icon.html) {\r\n iconContent = this.icon.html;\r\n } else if (icon.type === 'info') {\r\n iconContent = '<svg 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ón\"><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 } else if (icon.type === 'alert') {\r\n iconContent = '<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\" 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 } else {\r\n iconContent = '<svg 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 }\r\n return iconContent;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\nimport { AlertComponent } from './components/alert/alert.component';\r\nimport { AccordionComponent } from './components/accordion/accordion.component';\r\nimport { AccordionHeaderComponent } from './components/accordion/accordion-header/accordion-header.component';\r\nimport { AccordionHistoryComponent } from './components/accordion-history/accordion-history.component';\r\nimport { AccordionHistoryItemComponent } from './components/accordion-history/accordion-history-item/accordion-history-item.component';\r\nimport { AccordionItemComponent } from './components/accordion/accordion-item/accordion-item.component';\r\nimport { SpinnerComponent } from './components/spinner/spinner.component';\r\nimport { DetailsComponent } from './components/details/details.component';\r\nimport { CollapsibleComponent } from './components/collapsible/collapsible.component';\r\nimport { DescriptionListComponent } from './components/description-list/description-list.component';\r\nimport { ItemComponent } from './components/item/item.component';\r\nimport { MediaObjectComponent } from './components/media-object/media-object.component';\r\nimport { StatusComponent } from './components/status/status.component';\r\nimport { StatusItemComponent } from './components/status-item/status-item.component';\r\nimport { DesyFormsModule } from '../desy-forms/desy-forms.module';\r\nimport { TabsComponent } from './components/tabs/tabs.component';\r\nimport { TooltipComponent } from './components/tooltip/tooltip.component';\r\nimport { DesyCommonsModule } from '../desy-commons/desy-commons.module';\r\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\r\nimport { TooltipContentComponent } from './components/tooltip/tooltip-content/tooltip-content.component';\r\nimport { DescriptionItemComponent } from './components/description-list/description-item/description-item.component';\r\nimport { TermComponent } from './components/description-list/term/term.component';\r\nimport { DefinitionComponent } from './components/description-list/definition/definition.component';\r\nimport { ItemContentBottomComponent } from './components/item/item-content-bottom/item-content-bottom.component';\r\nimport { ItemContentRightComponent } from './components/item/item-content-right/item-content-right.component';\r\nimport { ItemItemComponent } from './components/item/item-item/item-item.component';\r\nimport { PanelComponent } from './components/tabs/panel/panel.component';\r\nimport { TabItemComponent } from './components/tabs/tab-item/tab-item.component';\r\nimport { MediaObjectFigureComponent } from './components/media-object/media-object-figure/media-object-figure.component';\r\nimport { AccordionItemShowButtonComponent } from './components/accordion-history/accordion-item-show-button/accordion-item-show-button.component';\r\nimport { AccordionItemHideButtonComponent } from './components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AlertComponent,\r\n AccordionComponent,\r\n AccordionHeaderComponent,\r\n AccordionHistoryComponent,\r\n AccordionHistoryItemComponent,\r\n AccordionItemShowButtonComponent,\r\n AccordionItemHideButtonComponent,\r\n AccordionItemComponent,\r\n SpinnerComponent,\r\n DetailsComponent,\r\n CollapsibleComponent,\r\n DescriptionListComponent,\r\n DescriptionItemComponent,\r\n TermComponent,\r\n DefinitionComponent,\r\n ItemComponent,\r\n ItemContentBottomComponent,\r\n ItemContentRightComponent,\r\n ItemItemComponent,\r\n MediaObjectComponent,\r\n StatusComponent,\r\n StatusItemComponent,\r\n TabsComponent,\r\n TooltipComponent,\r\n TooltipContentComponent,\r\n PanelComponent,\r\n TabItemComponent,\r\n MediaObjectFigureComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyFormsModule,\r\n DesyCommonsModule,\r\n NgxTippyModule\r\n ],\r\n exports: [\r\n AlertComponent,\r\n AccordionComponent,\r\n AccordionHeaderComponent,\r\n AccordionHistoryComponent,\r\n AccordionHistoryItemComponent,\r\n AccordionItemShowButtonComponent,\r\n AccordionItemHideButtonComponent,\r\n AccordionItemComponent,\r\n SpinnerComponent,\r\n DetailsComponent,\r\n CollapsibleComponent,\r\n DescriptionListComponent,\r\n DescriptionItemComponent,\r\n TermComponent,\r\n DefinitionComponent,\r\n ItemComponent,\r\n ItemContentBottomComponent,\r\n ItemContentRightComponent,\r\n ItemItemComponent,\r\n MediaObjectComponent,\r\n StatusComponent,\r\n StatusItemComponent,\r\n TabsComponent,\r\n TooltipComponent,\r\n TooltipContentComponent,\r\n PanelComponent,\r\n TabItemComponent,\r\n MediaObjectFigureComponent,\r\n ]\r\n})\r\nexport class DesyViewsModule { }\r\n","import { Component, Input, ViewChild } from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-toggle-off-state',\r\n templateUrl: './toggle-off-state.component.html'\r\n})\r\nexport class ToggleOffStateComponent extends AccessibilityComponent {\r\n \r\n @ViewChild('contentTemplateOffState', { static: true }) content;\r\n\r\n @Input() classes: string;\r\n\r\n}","import { Component, Input, ViewChild } from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-toggle-on-state',\r\n templateUrl: './toggle-on-state.component.html'\r\n})\r\nexport class ToggleOnStateComponent extends AccessibilityComponent {\r\n\r\n @ViewChild('contentTemplateOnState', { static: true }) content;\r\n\r\n @Input() classes: string;\r\n\r\n}\r\n","import { Component, ContentChildren, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\r\nimport { ToggleOffStateComponent } from './toggle-off-state/toggle-off-state.component';\r\nimport { ToggleOnStateComponent } from './toggle-on-state/toggle-on-state.component';\r\n\r\n@Component({\r\n selector: 'desy-toggle',\r\n templateUrl: './toggle.component.html'\r\n})\r\nexport class ToggleComponent extends AccessibilityComponent {\r\n \r\n @Input() id: string;\r\n @Input() isSwitch: boolean;\r\n @Input() pressed: boolean;\r\n @Input() classes: string;\r\n @Input() isExpandible: boolean;\r\n\r\n @Input() @HostBinding('class.relative') cfg = true;\r\n \r\n @Output() clickEvent = new EventEmitter();\r\n @Output() pressedChange: EventEmitter<any> = new EventEmitter<any>();\r\n \r\n @DesyContentChild()\r\n @ContentChildren(ToggleOnStateComponent) contentTemplateOnState: ToggleOnStateComponent;\r\n \r\n @DesyContentChild()\r\n @ContentChildren(ToggleOffStateComponent) contentTemplateOffState: ToggleOffStateComponent;\r\n\r\n onClick(event: any): void {\r\n this.pressed = !this.pressed;\r\n this.pressedChange.emit(this.pressed);\r\n this.clickEvent.emit(event);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DesyViewsModule } from '../desy-views/desy-views.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\r\n\r\n// componentes\r\nimport { ButtonComponent } from './components/button/button.component';\r\nimport { ButtonLoaderComponent } from './components/button-loader/button-loader.component';\r\nimport { PillComponent } from './components/pill/pill.component';\r\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\r\nimport { ListboxComponent } from './components/listbox/listbox.component';\r\nimport { ListboxItemComponent } from './components/listbox/listbox-item/listbox-item.component';\r\nimport { ListboxLabelComponent } from './components/listbox/listbox-label/listbox-label.component';\r\nimport { ToggleComponent } from './components/toggle/toggle.component';\r\nimport { ToggleOnStateComponent } from './components/toggle/toggle-on-state/toggle-on-state.component';\r\nimport { ToggleOffStateComponent } from './components/toggle/toggle-off-state/toggle-off-state.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ButtonComponent,\r\n ButtonLoaderComponent,\r\n DropdownComponent,\r\n ListboxComponent,\r\n PillComponent,\r\n\r\n ListboxItemComponent,\r\n ListboxLabelComponent,\r\n ToggleComponent,\r\n ToggleOnStateComponent,\r\n ToggleOffStateComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyViewsModule,\r\n NgxTippyModule\r\n ],\r\n exports: [\r\n ButtonComponent,\r\n ButtonLoaderComponent,\r\n DropdownComponent,\r\n ListboxComponent,\r\n PillComponent,\r\n\r\n ListboxItemComponent,\r\n ListboxLabelComponent,\r\n ToggleComponent,\r\n ToggleOnStateComponent,\r\n ToggleOffStateComponent\r\n ]\r\n})\r\nexport class DesyButtonsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\r\n\r\n// components\r\nimport { ModalComponent } from './components/modal/modal.component';\r\nimport { ModalButtonPrimaryComponent } from './components/modal/modal-button-primary/modal-button-primary.component';\r\nimport { ModalButtonSecondaryComponent } from './components/modal/modal-button-secondary/modal-button-secondary.component';\r\nimport { DialogComponent } from './components/dialog/dialog.component';\r\nimport { ModalButtonLoaderPrimaryComponent } from './components/modal/modal-button-loader-primary/modal-button-loader-primary.component';\r\nimport { ModalButtonLoaderSecondaryComponent } from './components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ModalComponent,\r\n ModalButtonPrimaryComponent,\r\n ModalButtonSecondaryComponent,\r\n ModalButtonLoaderPrimaryComponent,\r\n ModalButtonLoaderSecondaryComponent,\r\n DialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n SharedModule,\r\n DesyButtonsModule\r\n ],\r\n exports: [\r\n ModalComponent,\r\n ModalButtonPrimaryComponent,\r\n ModalButtonSecondaryComponent,\r\n ModalButtonLoaderPrimaryComponent,\r\n ModalButtonLoaderSecondaryComponent,\r\n DialogComponent\r\n ],\r\n})\r\nexport class DesyModalsModule { }\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { DividerData } from '../../../../../desy-commons/interfaces';\r\nimport { ContentBaseComponent } from '../../../../../shared/components';\r\nimport { MenuNavigationItemSubItem } from '../../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-menu-navigation-subitem',\r\n templateUrl: './menu-navigation-subitem.component.html'\r\n})\r\nexport class MenuNavigationSubitemComponent extends ContentBaseComponent implements MenuNavigationItemSubItem {\r\n \r\n @Input() href?: string;\r\n @Input() target?: string;\r\n @Input() text: string;\r\n @Input() html: string;\r\n @Input() id?: string;\r\n @Input() expanded?: boolean;\r\n @Input() divider?: DividerData;\r\n @Input() disabled?: boolean;\r\n @Input() sub?: MenuNavigationItemSubItem[];\r\n @Input() classes?: string;\r\n @Input() active?: boolean;\r\n\r\n @Output() selected = new EventEmitter<any>();\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n\r\n}\r\n","import { Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\r\nimport { HintData } from '../../../../../desy-forms/interfaces/hint-data';\r\nimport { DividerData } from '../../../../../desy-commons/interfaces';\r\nimport { ContentBaseComponent } from '../../../../../shared/components/content-base/content-base.component';\r\nimport { MenuNavigationItem, MenuNavigationItemSubItem } from '../../../../interfaces';\r\nimport { MenuNavigationSubitemComponent } from '../menu-navigation-subitem/menu-navigation-subitem.component';\r\n\r\n@Component({\r\n selector: 'desy-menu-navigation-item',\r\n templateUrl: './menu-navigation-item.component.html'\r\n})\r\nexport class MenuNavigationItemComponent extends ContentBaseComponent implements MenuNavigationItem {\r\n \r\n @Input() href?: string;\r\n @Input() target?: string;\r\n @Input() text: string;\r\n @Input() html: string;\r\n @Input() id?: string;\r\n @Input() expanded?: boolean;\r\n @Input() divider?: DividerData;\r\n @Input() disabled?: boolean;\r\n @Input() sub?: MenuNavigationItemSubItem;\r\n @Input() classes?: string;\r\n\r\n @Input() title?: string;\r\n @Input() active?: boolean;\r\n\r\n @Output() selected = new EventEmitter<any>();\r\n\r\n @ContentChildren(MenuNavigationSubitemComponent) subItems: QueryList<MenuNavigationSubitemComponent>;\r\n\r\n public getSubItems(): MenuNavigationSubitemComponent[] {\r\n return this.subItems.toArray();\r\n }\r\n\r\n}\r\n","import { AfterViewInit, \r\n ChangeDetectorRef, \r\n Component, \r\n ContentChildren, \r\n ElementRef, \r\n EventEmitter, \r\n HostBinding, \r\n Input, \r\n OnChanges, \r\n Output, \r\n QueryList, \r\n SimpleChanges,\r\n ViewChild, \r\n ViewChildren } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { MenuNavigationItemSubItem, MenuNavigationItemSubItemSubItem } from '../../interfaces';\r\nimport { MenuNavigationItem } from '../../interfaces/menu-navigation';\r\nimport { MenubaritemDirective } from '../menubar/directives/menubaritem.directive';\r\nimport { MenuNavigationItemComponent } from './components/menu-navigation-item/menu-navigation-item.component';\r\nimport { MenuNavigationSubitemComponent } from './components/menu-navigation-subitem/menu-navigation-subitem.component';\r\n\r\n@Component({\r\n selector: 'desy-menu-navigation',\r\n templateUrl: './menu-navigation.component.html'\r\n})\r\nexport class MenuNavigationComponent extends AccessibilityComponent implements OnChanges, AfterViewInit{\r\n\r\n @Input() idPrefix: string;\r\n @Input() items: MenuNavigationItem[];\r\n @Output() itemsChange = new EventEmitter<MenuNavigationItem[]>();\r\n @Output() activeItemChange = new EventEmitter<MenuNavigationItem>();\r\n @Output() activeSubItemChange = new EventEmitter<MenuNavigationItemSubItem | MenuNavigationItemSubItemSubItem>();\r\n\r\n @ViewChild('menunavigation', { read: ElementRef }) menunavigation: ElementRef;\r\n @ViewChildren(MenubaritemDirective) menuItems: QueryList<MenubaritemDirective>;\r\n @ContentChildren(MenuNavigationItemComponent) itemComponentList: QueryList<MenuNavigationItemComponent>;\r\n\r\n @Input() @HostBinding('class') classes: any;\r\n @HostBinding('class.c-menu-navigation') cfg = true\r\n @Input() @HostBinding('attr.id') id: any;\r\n\r\n @HostBinding('attr.role') roleData: any;\r\n @HostBinding('attr.aria-label') ariaLabelData: any;\r\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\r\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\r\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\r\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\r\n @HostBinding('attr.aria-controls') ariaControlsData: any;\r\n @HostBinding('attr.aria-current') ariaCurrentData: any;\r\n @HostBinding('attr.aria-live') ariaLiveData: any;\r\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\r\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\r\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\r\n @HostBinding('attr.aria-modal') ariaModalData: any;\r\n\r\n menuData: any[];\r\n viewInit = false;\r\n isFocused: boolean;\r\n currentFocusItemIndex = 0;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes?: SimpleChanges): void {\r\n this.roleData = this.role ? this.role : null;\r\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\r\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\r\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\r\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\r\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\r\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\r\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\r\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\r\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\r\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\r\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\r\n this.ariaModalData = this.ariaModal ? this.ariaModal : null;\r\n if (this.viewInit) {\r\n this.checkChanges();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.viewInit = true;\r\n this.checkChanges();\r\n }\r\n\r\n checkChanges(): void {\r\n if (!this.menuItems) {\r\n return;\r\n }\r\n \r\n this.menuData = [];\r\n this.getItems().forEach((_, index) => {\r\n const itemData = {\r\n open: false,\r\n currentFocusSubItemIndex: 0,\r\n currentFocusSubSubItemIndex: 0,\r\n menuItem: this.menuItems.toArray()[index]\r\n };\r\n this.menuData.push(itemData);\r\n });\r\n\r\n if (this.viewInit) {\r\n this.checkRequired();\r\n }\r\n\r\n\r\n const lastCurrentFocusItemIndex = this.currentFocusItemIndex;\r\n const items = this.getItems();\r\n if (items) {\r\n while (!this.isItemFocusable(this.currentFocusItemIndex % items.length)) {\r\n this.currentFocusItemIndex = (this.currentFocusItemIndex + items.length + 1) % items.length;\r\n if (this.currentFocusItemIndex === lastCurrentFocusItemIndex) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Eventos\r\n */\r\n\r\n handleMenuFocusIn(): void {\r\n this.isFocused = true;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleMenuFocusOut(event): void {\r\n if (!this.menunavigation.nativeElement.contains(event.relatedTarget)) {\r\n this.closeMenu();\r\n }\r\n this.isFocused = false;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleMenuItemClick(event, itemIndex: number): void {\r\n if (this.hasPopupMenu(itemIndex)) {\r\n event.preventDefault();\r\n const isOpen = this.menuData[itemIndex].open;\r\n this.closeMenu();\r\n if (!isOpen) {\r\n this.openMenu(itemIndex);\r\n }\r\n } else {\r\n this.activateMenuItem(itemIndex);\r\n }\r\n }\r\n\r\n handleMenuItemKeydown(event: KeyboardEvent, itemIndex: number): void {\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n case 'ArrowDown':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n setTimeout(() => this.focusFirstSubItem(itemIndex));\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n\r\n case 'Escape':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu(itemIndex);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowLeft':\r\n this.focusNextAvailableItem(itemIndex, -1);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowRight':\r\n this.focusNextAvailableItem(itemIndex, +1);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowUp':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n setTimeout(() => this.focusLastSubItem(itemIndex));\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Home':\r\n case 'PageUp':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu();\r\n }\r\n this.focusFirstItem();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'End':\r\n case 'PageDown':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu();\r\n }\r\n this.focusLastItem();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n default:\r\n if (this.isPrintableChar(event.key)) {\r\n this.focusItemByFirstChar(event.key);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handleMenuItemMouseOver(itemIndex: number): void {\r\n this.focusItem(itemIndex, true);\r\n }\r\n\r\n handlePopupMenuItemClick(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n this.focusItem(itemIndex);\r\n this.closeMenu(itemIndex);\r\n }\r\n\r\n handlePopupMenuItemKeydown(event: KeyboardEvent, itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n const currentSubIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\r\n const currentSubSubIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\r\n const items = this.getItems();\r\n switch (event.key) {\r\n case ' ':\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n if (this.mustCloseAfterSelectPopupItem(itemIndex, subItemIndex, subSubItemIndex)) {\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Enter':\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Escape':\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowUp':\r\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, -1);\r\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength - 1) % listLength);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowDown':\r\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, +1);\r\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength + 1) % listLength);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowLeft':\r\n this.closeMenu(itemIndex);\r\n this.focusItem((itemIndex + items.length - 1) % items.length);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowRight':\r\n this.closeMenu(itemIndex);\r\n this.focusItem((itemIndex + items.length + 1) % items.length);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Home':\r\n case 'PageUp':\r\n this.focusFirstSubItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'End':\r\n case 'PageDown':\r\n this.focusLastSubItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Tab':\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n break;\r\n\r\n default:\r\n if (this.isPrintableChar(event.key)) {\r\n this.focusSubItemByFirstChar(itemIndex, event.key);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handlePopupMenuItemMouseOver(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n this.focusSubItem(itemIndex, subItemIndex, subSubItemIndex);\r\n }\r\n\r\n /*\r\n * Comunes\r\n */\r\n\r\n checkRequired(): void {\r\n const items = this.getItems();\r\n }\r\n\r\n\r\n activateMenuItem(itemIndex: number): void {\r\n const items = this.getItems();\r\n this.activeItemChange.emit(items[itemIndex] as MenuNavigationItem);\r\n if (items[itemIndex] instanceof MenuNavigationItemComponent) {\r\n (items[itemIndex] as MenuNavigationItemComponent).selected.emit();\r\n }\r\n }\r\n\r\n activatePopupMenuItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenuNavigationItemSubItem|MenuNavigationItemSubItemSubItem = subItems[subItemIndex]; \r\n\r\n this.itemsChange.emit(items);\r\n this.activeSubItemChange.emit(item as MenuNavigationItem);\r\n if (item instanceof MenuNavigationSubitemComponent) {\r\n item.selected.emit();\r\n }\r\n }\r\n\r\n mustCloseAfterSelectPopupItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenuNavigationItemSubItem|MenuNavigationItemSubItemSubItem = subItems[subItemIndex];\r\n\r\n return item.role !== 'menuitemcheckbox' && item.role !== 'menuitemradio';\r\n }\r\n\r\n openMenu(itemIndex: number): void {\r\n const wasOpened = this.menuData[itemIndex].open;\r\n this.menuData[itemIndex].open = true;\r\n if (wasOpened) {\r\n this.activateMenuItem(itemIndex);\r\n }\r\n }\r\n\r\n closeMenu(itemIndex?: number): void {\r\n if (itemIndex !== null && itemIndex !== undefined) {\r\n this.menuData[itemIndex].open = false;\r\n } else {\r\n this.menuData.forEach(item => item.open = false);\r\n }\r\n }\r\n\r\n hasPopupMenu(itemIndex: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n return items[itemIndex].sub && subItems && subItems.length > 0;\r\n }\r\n\r\n private isPrintableChar(str: string): boolean {\r\n return str.length === 1 && !!str.match(/\\S/);\r\n }\r\n\r\n \r\n\r\n /*\r\n * Comunes - focus\r\n */\r\n\r\n focusItem(itemIndex: number, hover?: boolean): void {\r\n const hasFocus = this.menunavigation.nativeElement.contains(document.activeElement);\r\n const isOpen = this.menuData[this.currentFocusItemIndex].open;\r\n\r\n if (!hover || hasFocus) {\r\n this.menuData[itemIndex].menuItem.link.nativeElement.focus();\r\n }\r\n\r\n this.closeMenu();\r\n if (isOpen && this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n }\r\n\r\n this.currentFocusItemIndex = itemIndex;\r\n }\r\n\r\n focusNextAvailableItem(fromItemIndex: number, step: number): void {\r\n let nextItem = fromItemIndex;\r\n const items = this.getItems();\r\n do {\r\n nextItem = (nextItem + items.length + step) % items.length;\r\n } while (!this.isItemFocusable(nextItem) && nextItem !== fromItemIndex);\r\n\r\n if (nextItem !== fromItemIndex) {\r\n this.focusItem(nextItem);\r\n }\r\n }\r\n\r\n focusFirstItem(): void {\r\n if (this.isItemFocusable(0)) {\r\n this.focusItem(0);\r\n } else {\r\n this.focusNextAvailableItem(0, +1);\r\n }\r\n }\r\n\r\n focusLastItem(): void {\r\n const items = this.getItems();\r\n if (this.isItemFocusable(items.length - 1)) {\r\n this.focusItem(items.length - 1);\r\n } else {\r\n this.focusNextAvailableItem(items.length - 1, -1);\r\n }\r\n }\r\n\r\n isItemFocusable(itemIndex: number): boolean {\r\n return !this.getItems()[itemIndex].disabled;\r\n }\r\n\r\n focusItemByFirstChar(char: string): void {\r\n const itemContents: string[] = this.menuItems.map(menuItem => menuItem.itemContentWrapper.nativeElement.textContent);\r\n let index = this.currentFocusItemIndex;\r\n let foundIndex = -1;\r\n do {\r\n index = (index + itemContents.length + 1) % itemContents.length;\r\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\r\n && this.isItemFocusable(index)) {\r\n foundIndex = index;\r\n }\r\n } while (foundIndex === -1 && index !== this.currentFocusItemIndex);\r\n\r\n if (foundIndex >= 0) {\r\n this.focusItem(foundIndex);\r\n }\r\n }\r\n\r\n focusSubItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n if (this.menuData[itemIndex].menuItem.popupMenuItems.length > 0) {\r\n const menuDataIndex = subItemIndex;\r\n this.menuData[itemIndex].currentFocusSubItemIndex = subItemIndex;\r\n this.menuData[itemIndex].currentFocusSubSubItemIndex = subSubItemIndex;\r\n const elem = this.menuData[itemIndex].menuItem.popupMenuItems.toArray()[menuDataIndex].nativeElement;\r\n if (elem) {\r\n elem.focus();\r\n } else {\r\n console.error('No subitem to focus');\r\n }\r\n } else {\r\n console.error('No subitems');\r\n }\r\n }\r\n\r\n focusNextAvailableSubItem(itemIndex: number, fromItemSubIndex: number, fromItemSubSubIndex: number, step: number): void {\r\n let nextSubIndex = fromItemSubIndex;\r\n let nextSubSubIndex = fromItemSubSubIndex;\r\n let allSubItemsChecked;\r\n const items = this.getItems();\r\n do {\r\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step);\r\n nextSubIndex = nextIndexes.subIndex;\r\n nextSubSubIndex = nextIndexes.subSubIndex;\r\n allSubItemsChecked = (fromItemSubIndex === nextSubIndex && fromItemSubSubIndex === nextSubSubIndex);\r\n } while (!this.isSubItemFocusable(itemIndex, nextSubIndex, nextSubSubIndex) && !allSubItemsChecked);\r\n\r\n if (!allSubItemsChecked) {\r\n this.focusSubItem(itemIndex, nextSubIndex, nextSubSubIndex);\r\n }\r\n }\r\n\r\n focusFirstSubItem(itemIndex: number): void {\r\n let firstSubSubItem = null;\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n if (subItems && subItems.length > 0) {\r\n firstSubSubItem = 0;\r\n }\r\n\r\n if (this.isSubItemFocusable(itemIndex, 0, firstSubSubItem)) {\r\n this.focusSubItem(itemIndex, 0, firstSubSubItem);\r\n } else {\r\n this.focusNextAvailableSubItem(itemIndex, 0, firstSubSubItem, +1);\r\n }\r\n }\r\n\r\n focusLastSubItem(itemIndex: number): void {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n const lastItemIndex = subItems.length - 1;\r\n const lastItem = subItems[lastItemIndex];\r\n let lastSubSubItem = null;\r\n\r\n if (this.isSubItemFocusable(itemIndex, lastItemIndex, lastSubSubItem)) {\r\n this.focusSubItem(itemIndex, lastItemIndex, lastSubSubItem);\r\n } else {\r\n this.focusNextAvailableSubItem(itemIndex, lastItemIndex, lastSubSubItem, -1);\r\n }\r\n }\r\n\r\n isSubItemFocusable(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenuNavigationItemSubItem|MenuNavigationItemSubItemSubItem = subItems[subItemIndex];\r\n\r\n let isFocusable = false;\r\n if (item.role !== 'separator' && item.role !== 'none') {\r\n isFocusable = true;\r\n }\r\n return isFocusable;\r\n }\r\n\r\n focusSubItemByFirstChar(itemIndex: number, char: string): void {\r\n const itemContents: string[] = this.menuItems.toArray()[itemIndex].popupMenuItems.map(menuItem => menuItem.nativeElement.textContent);\r\n let subItemIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\r\n let subSubItemIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\r\n let foundSubIndex = -1;\r\n let foundSubSubIndex = null;\r\n let allSubItemsChecked = false;\r\n const items = this.getItems();\r\n do {\r\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, subItemIndex, subSubItemIndex, +1);\r\n subItemIndex = nextIndexes.subIndex;\r\n subSubItemIndex = nextIndexes.subSubIndex;\r\n const index = subItemIndex;\r\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\r\n && this.isSubItemFocusable(itemIndex, subItemIndex, subSubItemIndex)) {\r\n foundSubIndex = subItemIndex;\r\n foundSubSubIndex = subSubItemIndex;\r\n }\r\n allSubItemsChecked = (this.menuData[itemIndex].currentFocusSubItemIndex === subItemIndex\r\n && this.menuData[itemIndex].currentFocusSubSubItemIndex === subSubItemIndex);\r\n } while (foundSubIndex === -1 && !allSubItemsChecked);\r\n\r\n if (foundSubIndex >= 0) {\r\n this.focusSubItem(itemIndex, foundSubIndex, foundSubSubIndex);\r\n }\r\n }\r\n\r\n /*\r\n * Metodos para facilitar contenido\r\n */\r\n\r\n getItems(): MenuNavigationItem[]|MenuNavigationItemComponent[] {\r\n let items;\r\n if (this.itemComponentList && this.itemComponentList.length > 0) {\r\n items = this.itemComponentList.toArray();\r\n } else {\r\n items = this.items;\r\n }\r\n return items;\r\n }\r\n\r\n getItemSubitems(item: MenuNavigationItem|MenuNavigationItemComponent): MenuNavigationItemSubItem[]|MenuNavigationSubitemComponent[] {\r\n let subItems = [];\r\n if (item instanceof MenuNavigationItemComponent){\r\n subItems = item.getSubItems();\r\n }\r\n\r\n if (!subItems || subItems.length === 0) {\r\n subItems = item.sub ? item.sub.items : [];\r\n }\r\n return subItems;\r\n }\r\n\r\n getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step): { subIndex: number, subSubIndex?: number} {\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n\r\n let checkNextSubItem = true;\r\n if (checkNextSubItem) {\r\n nextSubIndex = (nextSubIndex + step + subItems.length) % subItems.length;\r\n } \r\n return {subIndex: nextSubIndex, subSubIndex: nextSubSubIndex};\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.id + 'menunavigation-item';\r\n }\r\n\r\n getItemId(item, index: number): string {\r\n let id: string;\r\n if (item) {\r\n if (item.id) {\r\n id = item.id;\r\n } else {\r\n id = index === 0 ? this.getIdPrefix() : `${this.getIdPrefix()}-${index}`;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n getPopupStyle(itemIndex: number): object {\r\n let style = {};\r\n if (this.menuData && itemIndex < this.menuData.length) {\r\n const menuItem = this.menuData[itemIndex].menuItem;\r\n const rect = menuItem.link.nativeElement.getBoundingClientRect();\r\n if (this.menuData[itemIndex].open) {\r\n style = {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n zIndex: 100,\r\n display: 'block'\r\n };\r\n } else {\r\n style = {\r\n zIndex: 0,\r\n display: 'none'\r\n };\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n\r\n getSubItemId(item, index: number, parentId: string): string {\r\n let id: string;\r\n if (item) {\r\n if (item.id) {\r\n id = item.id;\r\n } else {\r\n id = index === 0 ? `sub-${parentId}` : `sub-${parentId}-${index}`;\r\n }\r\n }\r\n return id;\r\n }\r\n \r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { DesyCommonsModule } from '../desy-commons/desy-commons.module';\r\n\r\nimport { BreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';\r\nimport { BreadcrumbsItemComponent } from './components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component';\r\nimport { ErrorSummaryComponent } from './components/error-summary/error-summary.component';\r\nimport { ErrorSummaryItemComponent } from './components/error-summary/error-summary-item/error-summary-item.component';\r\nimport { MenuHorizontalComponent } from './components/menu-horizontal/menu-horizontal.component';\r\nimport { MenuHorizontalItemComponent } from './components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component';\r\nimport { MenuVerticalComponent } from './components/menu-vertical/menu-vertical.component';\r\nimport { NavComponent } from './components/nav/nav.component';\r\nimport { SkipLinkComponent } from './components/skip-link/skip-link.component';\r\nimport { HeaderComponent } from './components/header/header.component';\r\nimport { HeaderSubnavComponent } from './components/header/header-subnav/header-subnav.component';\r\nimport { HeaderNavigationComponent } from './components/header/header-navigation/header-navigation.component';\r\nimport { HeaderDropdownComponent } from './components/header/header-dropdown/header-dropdown.component';\r\nimport { HeaderOffcanvasButtonComponent } from './components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component';\r\nimport { HeaderOffcanvasComponent } from './components/header/header-offcanvas/header-offcanvas.component';\r\nimport { NotificationComponent } from './components/notification/notification.component';\r\nimport { NotificationItemComponent } from './components/notification/notification-item/notification-item.component';\r\nimport { FooterComponent } from './components/footer/footer.component';\r\nimport { MenubarComponent } from './components/menubar/menubar.component';\r\nimport { MenubaritemDirective } from './components/menubar/directives/menubaritem.directive';\r\nimport { MenubarItemComponent } from './components/menubar/components/menubar-item/menubar-item.component';\r\nimport { MenubarSubitemComponent } from './components/menubar/components/menubar-subitem/menubar-subitem.component';\r\nimport { MenubarSubsubitemComponent } from './components/menubar/components/menubar-subsubitem/menubar-subsubitem.component';\r\nimport { MenubarLabelComponent } from './components/menubar/components/menubar-label/menubar-label.component';\r\nimport { NavItemComponent } from './components/nav/nav-item/nav-item.component';\r\nimport { MenuVerticalItemComponent } from './components/menu-vertical/menu-vertical-item/menu-vertical-item.component';\r\nimport { MenuVerticalItemSubComponent } from './components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component';\r\nimport { MenuVerticalItemSubItemComponent } from './components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component';\r\nimport { HeaderOffcanvasCloseButtonComponent } from './components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component';\r\nimport { HeaderNavigationItemComponent } from './components/header/header-navigation/header-navigation-item/header-navigation-item.component';\r\nimport { FooterMetaComponent } from './components/footer/footer-meta/footer-meta.component';\r\nimport { FooterMetaItemComponent } from './components/footer/footer-meta/footer-meta-item/footer-meta-item.component';\r\nimport { FooterNavigationComponent } from './components/footer/footer-navigation/footer-navigation.component';\r\nimport { FooterNavigationItemComponent } from './components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component';\r\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\r\nimport { MenuNavigationComponent } from './components/menu-navigation/menu-navigation.component';\r\nimport { MenuNavigationItemComponent } from './components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component';\r\nimport { MenuNavigationSubitemComponent } from './components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n BreadcrumbsComponent,\r\n BreadcrumbsItemComponent,\r\n ErrorSummaryComponent,\r\n ErrorSummaryItemComponent,\r\n FooterComponent,\r\n FooterMetaComponent,\r\n FooterMetaItemComponent,\r\n FooterNavigationComponent,\r\n FooterNavigationItemComponent,\r\n HeaderComponent,\r\n HeaderSubnavComponent,\r\n HeaderNavigationComponent,\r\n HeaderNavigationItemComponent,\r\n HeaderDropdownComponent,\r\n HeaderOffcanvasButtonComponent,\r\n HeaderOffcanvasComponent,\r\n HeaderOffcanvasCloseButtonComponent,\r\n MenuHorizontalComponent,\r\n MenuHorizontalItemComponent,\r\n MenuVerticalComponent,\r\n MenuVerticalItemComponent,\r\n MenuVerticalItemSubComponent,\r\n MenuVerticalItemSubItemComponent,\r\n MenubarComponent,\r\n MenubarLabelComponent,\r\n MenubarItemComponent,\r\n MenubarSubitemComponent,\r\n MenubarSubsubitemComponent,\r\n NavComponent,\r\n NotificationComponent,\r\n NotificationItemComponent,\r\n SkipLinkComponent,\r\n NavItemComponent,\r\n MenuNavigationComponent,\r\n\r\n MenubaritemDirective,\r\n\r\n MenuNavigationItemComponent,\r\n MenuNavigationSubitemComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyCommonsModule,\r\n DesyButtonsModule\r\n ],\r\n exports: [\r\n BreadcrumbsComponent,\r\n BreadcrumbsItemComponent,\r\n ErrorSummaryComponent,\r\n ErrorSummaryItemComponent,\r\n FooterComponent,\r\n FooterMetaComponent,\r\n FooterMetaItemComponent,\r\n FooterNavigationComponent,\r\n FooterNavigationItemComponent,\r\n HeaderComponent,\r\n HeaderSubnavComponent,\r\n HeaderNavigationComponent,\r\n HeaderNavigationItemComponent,\r\n HeaderDropdownComponent,\r\n HeaderOffcanvasComponent,\r\n HeaderOffcanvasButtonComponent,\r\n HeaderOffcanvasCloseButtonComponent,\r\n MenuHorizontalComponent,\r\n MenuHorizontalItemComponent,\r\n MenuVerticalComponent,\r\n MenuVerticalItemComponent,\r\n MenuVerticalItemSubComponent,\r\n MenuVerticalItemSubItemComponent,\r\n MenubarComponent,\r\n MenubarLabelComponent,\r\n MenubarItemComponent,\r\n MenubarSubitemComponent,\r\n MenubarSubsubitemComponent,\r\n NavComponent,\r\n NotificationComponent,\r\n NotificationItemComponent,\r\n NavItemComponent,\r\n SkipLinkComponent,\r\n MenuNavigationComponent,\r\n MenuNavigationSubitemComponent,\r\n MenuNavigationItemComponent,\r\n MenuNavigationSubitemComponent,\r\n ]\r\n})\r\nexport class DesyNavModule { }\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyFocusClickedCell]'\r\n})\r\nexport class FocusClickedCellDirective {\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n const hostElem = this.el.nativeElement; // la tabla - offsetParent\r\n const elemntsFocus = hostElem.offsetParent.querySelectorAll('[tabindex]'); // buscamos todos que pueden tener tabindex\r\n for (const iterator of elemntsFocus) {\r\n iterator.setAttribute('tabindex', '-1'); // se les quita\r\n }\r\n this.activeTabindex();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n manageArrows(event): void {\r\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp' || event.code === 'ArrowRight' || event.code === 'ArrowLeft'){\r\n let next = null;\r\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp'){\r\n let tr = null;\r\n if (event.code === 'ArrowDown') {\r\n tr = this.el.nativeElement.parentNode.nextElementSibling;\r\n } else if (event.code === 'ArrowUp') {\r\n tr = this.el.nativeElement.parentNode.previousElementSibling;\r\n }\r\n\r\n next = tr ? tr.children[this.findIndex()] : null;\r\n event.preventDefault();\r\n }\r\n\r\n if (event.code === 'ArrowRight' || event.code === 'ArrowLeft') {\r\n next = this.el.nativeElement;\r\n do {\r\n if (event.code === 'ArrowRight') {\r\n next = next.nextElementSibling;\r\n } else if (event.code === 'ArrowLeft') {\r\n next = next.previousElementSibling;\r\n }\r\n } while (next && !next.getAttribute('tabindex'));\r\n }\r\n\r\n if (next && next.getAttribute('tabindex')){\r\n this.inactiveTabindex();\r\n next.setAttribute('tabindex', '0');\r\n next.focus();\r\n }\r\n }\r\n }\r\n\r\n private activeTabindex(): void {\r\n this.el.nativeElement.setAttribute('tabindex', '0');\r\n }\r\n\r\n private inactiveTabindex(): void {\r\n this.el.nativeElement.setAttribute('tabindex', '-1');\r\n }\r\n\r\n private findIndex(): number {\r\n const mynode = this.el.nativeElement;\r\n const parentNode = this.el.nativeElement.parentNode;\r\n let index = -1;\r\n for (let i = 0; i < parentNode.children.length; i++) {\r\n const otherNode = parentNode.children[i];\r\n if (mynode.isEqualNode(otherNode)){\r\n index = i;\r\n break;\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { DesyFormsModule } from '../desy-forms/desy-forms.module';\r\n\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { TableAdvancedComponent } from './components/table-advanced/table-advanced.component';\r\nimport { FocusClickedCellDirective } from './directives/focus-clicked-cell.directive';\r\nimport { TableCellComponent } from './components/table/components/table-cell.component';\r\nimport { TableHeaderComponent } from './components/table/components/table-header.component';\r\nimport { TableRowComponent } from './components/table/components/table-row.component';\r\nimport { TableCaptionComponent } from './components/table/components/table-caption.component';\r\nimport { TableAdvancedHeaderComponent } from './components/table-advanced/components/table-advanced-header.component';\r\nimport { TableAdvancedHeaderCellComponent } from './components/table-advanced/components/table-advanced-header-cell.component';\r\nimport { TableAdvancedRowComponent } from './components/table-advanced/components/table-advanced-row.component';\r\nimport { CellDirective } from './directives/cell.directive';\r\nimport { RowDirective } from './directives/row.directive';\r\nimport {TableAdvancedRowCellComponent} from './components/table-advanced/components/table-advanced-row-cell.component';\r\nimport { TableAdvancedSelectComponent } from './components/table-advanced/components/table-advanced-select.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TableComponent,\r\n TableCaptionComponent,\r\n TableCellComponent,\r\n TableHeaderComponent,\r\n TableRowComponent,\r\n TableAdvancedComponent,\r\n TableAdvancedHeaderComponent,\r\n TableAdvancedHeaderCellComponent,\r\n TableAdvancedRowComponent,\r\n TableAdvancedRowCellComponent,\r\n TableAdvancedSelectComponent,\r\n\r\n FocusClickedCellDirective,\r\n CellDirective,\r\n RowDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n A11yModule,\r\n SharedModule,\r\n DesyFormsModule\r\n ],\r\n exports: [\r\n TableComponent,\r\n TableCaptionComponent,\r\n TableCellComponent,\r\n TableHeaderComponent,\r\n TableRowComponent,\r\n TableAdvancedComponent,\r\n TableAdvancedHeaderComponent,\r\n TableAdvancedHeaderCellComponent,\r\n TableAdvancedRowComponent,\r\n TableAdvancedRowCellComponent,\r\n TableAdvancedSelectComponent\r\n ]\r\n})\r\nexport class DesyTablesModule { }\r\n","import { PaginationItemPerPageComponent } from './components/pagination-item-perpage/pagination-item-perpage.component';\r\nimport { PaginationListboxLabelComponent } from './components/pagination-listbox-label/pagination-listbox-label.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { DesyNavModule } from '../desy-nav/desy-nav.module';\r\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\r\n\r\nimport { PaginationComponent } from './components/pagination/pagination.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n PaginationComponent, \r\n PaginationListboxLabelComponent,\r\n PaginationItemPerPageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyNavModule,\r\n DesyButtonsModule\r\n ],\r\n exports: [\r\n PaginationComponent, \r\n PaginationListboxLabelComponent,\r\n PaginationItemPerPageComponent\r\n ]\r\n})\r\nexport class DesyPaginationModule { }\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { DesyButtonsModule } from './desy-buttons/desy-buttons.module';\r\nimport { DesyFormsModule } from './desy-forms/desy-forms.module';\r\nimport { DesyModalsModule } from './desy-modals/desy-modals.module';\r\nimport { DesyNavModule } from './desy-nav/desy-nav.module';\r\nimport { DesyTablesModule } from './desy-tables/desy-tables.module';\r\nimport { DesyViewsModule } from './desy-views/desy-views.module';\r\nimport { DesyPaginationModule } from './desy-pagination/desy-pagination.module';\r\nimport { DesyCommonsModule } from './desy-commons/desy-commons.module';\r\n\r\n@NgModule({\r\n imports: [\r\n DesyButtonsModule,\r\n DesyCommonsModule,\r\n DesyFormsModule,\r\n DesyModalsModule,\r\n DesyNavModule,\r\n DesyTablesModule,\r\n DesyViewsModule,\r\n DesyPaginationModule,\r\n DesyCommonsModule,\r\n ],\r\n exports: [\r\n DesyButtonsModule,\r\n DesyCommonsModule,\r\n DesyFormsModule,\r\n DesyModalsModule,\r\n DesyNavModule,\r\n DesyTablesModule,\r\n DesyViewsModule,\r\n DesyPaginationModule,\r\n DesyCommonsModule,\r\n ]\r\n})\r\nexport class DesyAngularModule { }\r\n"]}
|
|
1
|
+
{"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","push","__values","o","s","m","__read","ar","error","__spread","concat","AccessibilityComponent","type","Component","args","selector","template","Input","ContentBaseComponent","_super","getContent","content","ViewChild","static","TextOrHtmlRequiredComponent","AccessibilityAndTextOrHtmlRequiredComponent","AccessibilityAndContentRequiredComponent","ButtonComponent","_this","hostTabIndex","clickEvent","EventEmitter","avoidingDoubleClick","onClick","event","preventDoubleClick","preventDefault","emit","setTimeout","getElement","element","toLocaleLowerCase","href","ELEMENT_A","ELEMENT_BUTTON","getClassNames","classNames","classes","disabled","isDisabled","get","ELEMENT_INPUT","HostBinding","Output","ButtonLoaderComponent","getSpinnerText","spinnerText","state","STATE_LOADING","loaderText","DEFAULT_LOADER_TEXT","getSuccessText","successText","STATE_SUCCESS","DEFAULT_SUCCESS_TEXT","FocusUtils","getFirstFocusableElement","parent","focusableList","selectionableElements","querySelectorAll","document","firstFocusable","item","isFocusable","tabIndex","getAttribute","nodeName","rel","DropdownComponent","isOpen","clickOutsideEnabled","ngOnInit","contentTooltip","dropdownContent","nativeElement","style","display","tippyProperties","placement","inlinePositioning","allowHTML","trigger","hideOnClick","interactive","arrow","offset","theme","plugins","name","defaultValue","fn","instance","onCreate","popper","addEventListener","props","hideOnPopperBlur","relatedTarget","contains","hide","_a","onKeyDown","KEY_CODE_ESC","onShow","onHide","removeEventListener","role","aria","onShown","focus","ngOnChanges","changes","classesContainer","setOpen","read","ElementRef","StringUtils","escapeHtml","replace","RegExp","ListboxLabelComponent","ListboxItemComponent","itemChange","DesyContentChild","options","propertyKey","privateKeyName","privateQueryListKeyName","set","queryList","QueryList","subscribe","previousValue","first","onSetCallbackName","onDeleteCallbackName","notifyOnChanges","ListboxComponent","itemsChange","activeItemChange","isListVisible","listboxButtonElement","listboxButton","listboxContent","onListShow","bind","onHidden","onListClose","itemComponentList","itemComponentSubscriptions","forEach","unsubscribe","itemList","subscription","checkActiveItems","items","ngDoCheck","getActiveItemsData","map","index","active","filter","activeItems","hasActiveItemChange","lastActiveItems","isMultiselectable","newItem","this_1","findIndex","activeItems_1","activeItems_1_1","doesChangeButtonText","activeItemOption","listboxOptions","find","buttonContentHtml","innerHTML","html","listboxList","onListFocus","activeItemsData","activeElem","getElementById","getItemId","currentFocusIndex","selectItem","console","warn","moveFocus","position","onSpace","getIdPrefix","idPrefix","id","itemId","hasLabel","labelComponent","getLabelContent","text","ViewChildren","ContentChildren","PillComponent","getType","TYPE_A","TYPE_SPAN","TYPE_BUTTON","ContentComponent","DescriptionComponent","IconComponent","TitleComponent","HintComponent","changeDetectorRef","detectChanges","ChangeDetectorRef","LabelComponent","ErrorMessageComponent","LegendComponent","FieldsetComponent","legendComponent","contentComponent","FormFieldComponent","onChange","onTouch","onblur","onInput","registerOnChange","registerOnTouched","setDisabledState","writeValue","getHintId","hasHint","getErrorId","hasErrorsMessage","hasLabelComponent","labelText","labelRef","labelData","hasHintComponent","hintText","hintRef","hintData","hasErrorMessageComponent","errorMessageText","errorMessageRef","errorMessageData","hintComponent","errorMessageComponent","HostListener","TextareaComponent","cfg","inputTransform","cfgr","formGroupClasses","getRows","rows","DEFAULT_ROWS","ensureText","registerInputTransform","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","textareaElement","CharacterCountComponent","ngAfterViewInit","textarea","maxlength","calculateLenght","displayCountMessage","threshold","substring","remaining","words","match","maxwords","lastIndexOf","countbbdd","specialChars","InputComponent","attributes","setAttributes","input","attr","keys","setAttribute","errorId","SelectItemComponent","OptionComponent","OptionGroupComponent","SelectComponent","contentInit","ngAfterContentInit","getItems","itemSelected_1","selected","itemComponents","toArray","isItemSelected","isOptionGroup","FileUploadComponent","InputGroupItemComponent","DesyOnInputChange","callbackName","MakeHtmlListPipe","transform","valueForEmpty","filteredList","join","Pipe","InputGroupInputComponent","isSelect","valueChange","InputGroupSelectComponent","selectItemComponentList","InputGroupDividerComponent","divider","dividerContent","InputGroupComponent","controlContainer","ngAfterViewChecked","getItemName","onExternalChange","onInternalChange","itemValue","itemName","overrideFieldsetParams","fieldset","caller","innerHtml","describedBy","itemsComponents","getItemLabelRef","getItemLabelData","hasFieldset","hasFieldsetComponent","hasLegendComponent","legendRef","fieldsetData","legendData","legendText","fieldsetComponent","namePrefix","getItemSelectOptions","selectItems","getItemDividerTemplate","getItemDividerHtml","isSelectItem","hasSelectItems","hasItemLabel","ControlContainer","Optional","RadioItemComponent","radios","checkedChange","Error","markForUpdateCheckboxIds","ngOnDestroy","checked","lastChecked","isInit","setChecked","updateValueFromRadioItems","undefined","lastValue","radioId","getItemHintId","hintComponentList","hasChanged","isInputChecked","inputElement","updateRadioId","labelComponentList","for","hasDividers","hasError","getNameRadio","getDescribedBy","animations","opacity","transition","animate","query","animateChild","optional","RadiosComponent","Host","conditionalContentList","nextValue","updateChekboxIds","updateItems_1","updateRadioItemsChecked","checkboxItems","getRadioItems","onIdPrefixChange","propagateNewIdPrefixValue","onNameChange","overrideHintParams","overrideErrorMessageParams","itemsUpdated","checkedItem","hint","errorMessage","onDeleteHint","onDeleteErrorMessage","radioComponentItems","radioComponentItems2","CheckboxItemComponent","checkboxes","indeterminateChange","updateValueFromCheckboxItems","indeterminateChecked","lastIndeterminate","setIndeterminateChecked","checkboxId","isIndeterminate","readOnly","indeterminate","setIndeterminateStatus","getValue","updateCheckboxId","getNameCheckbox","CheckboxesComponent","updateCheckboxItemsChecked","getCheckboxItems","itemChecked","isArray","checkboxComponentItems","checkboxComponentItems2","DateInputItemComponent","DateInputDayComponent","DateInputMonthComponent","DateInputYearComponent","DateInputDividerComponent","DateInputComponent","initDefaultItems","newVal","assign","getItemLabel","toUpperCase","dateInputItemComponents","defaultItems","SearchBarComponent","hasButton","button","hasButtonClass","TreeSubComponent","ITreeItem","SearchUtils","containsAnyWordFrom","fullWord","includes","simplifiedTarget","getSimplifiedString","split","word","str","res","toLocaleUpperCase","trim","TreeCheckboxComponent","changeDetector","indeterminateCheckedChange","_hasInit","onDescribedByChange","onIdChange","overrideLabelParams","_lastIndeterminate","matchesText","checkboxText","contentWrapper","textContent","getItemDescribedBy","ariaDescribedBy","itemDescribedBy","TreeItemComponent","checkedChangeForTree","expandedChange","treeItemKey","generateStaticItemKey","allParentsExpanded","inheritedMatchesSearch","quitFocus","isFocus","isHover","_matchesValidText","propName","sub","refreshAllParentsExpandedRecursive","expanded","inheritedExpandedFirstLevel","expandSub","checkbox","handleItemFocus","setCheckedAutomaticallyDependingOnChildren","areAllChildrenChecked","hasChildrenCheckedOrIndeterminate","handleCheckboxChange","handleIndeterminateCheckedChange","condition","handleItemHover","handleArrowUp","nextElement","currentItem","handleHome","handleEnd","handleArrowDown","handleArrowRight","handleArrowLeft","subLevel","ignoreInTree","emitEvent","inheritedDecoupleChildFromParent","setSubLevel","setOrderRecursively","order","orderInTree","newOrder","setDefaultId","defaultId","setDefaultIdRecursive","getId","isHidden","areAllChildrenHidden","child","matches","itemText","hiddenWrapper","getKey","getParentKey","parentKey","parentElement","tagName","isActive","_treeItemKeySuffix","TreeComponent","expandedFirstLevel","decoupleChildFromParent","disableDefaultSearch","searchMatchValuesChange","rootItems","_itemListCheckedSubscriptions","_itemListQuitFocusSubscriptions","_alreadyConfiguringItems","clearSubscriptions","_itemListSubscription","_b","_allItemListSubscription","configureAllItems","updateValueFromItems","originItem","getAllItemsInOrder","handleItemQuitFocus","focusableItems","currentSubLevel_1","currentItemIndex","slice","reverse","onSearch","searchMatchValues","allItems","isValueChange","parentName","inheritedDescribedBy","getDescribedByForItems","valueList","checkedSubscription","quitFocusSubscription","setErrorInItems","buildTree","onSearchMatchValuesChange","overrideSearchBarParams","searchbar","defaultOnChange","itemMap","inheritedHasError","subscriptionList","splice","list","sort","a","descendants","searchBarComponent","ConditionDirective","templateRef","conditionalHtml","_c","Directive","TemplateRef","TreeItemsGeneratorComponent","viewContainerRef","createEmbeddedView","changeDetection","ChangeDetectionStrategy","OnPush","ViewContainerRef","ModalButtonPrimaryComponent","ModalButtonSecondaryComponent","ModalButtonLoaderPrimaryComponent","ModalButtonLoaderSecondaryComponent","ModalComponent","closeModal","clickButton","hasIconContent","descriptionIsHtml","descriptionIsEmpty","closeDialog","iconComponent","icon","checkDescriptionContent","childs","childNodes","hasHtml","hasContent","nodeType","Node","TEXT_NODE","ELEMENT_NODE","CDATA_SECTION_NODE","clickButtonEmit","handleIconContentEmpty","isEmpty","getTitleClasses","titleComponent","title","getDescriptionClasses","descriptionComponent","description","getPrimaryItems","primaryButtonComponents","itemsPrimary","getSecondaryItems","secondaryButtonComponents","itemsSecondary","getPrimaryLoaderItems","primaryButtonLoaderComponents","itemsLoaderPrimary","getSecondaryLoaderItems","secondaryButtonLoaderComponents","itemsLoaderSecondary","numDialogsOpened","DialogComponent","cdRef","focusTrapFactory","factoryResolver","activeChange","lastActiveState","focusTrapWrapper","handleActiveState","callerType","factory","resolveComponentFactory","component","container","createComponent","onCallerCreationCallback","children","childElem","dismiss","onKeyUp","stopPropagation","focusTrap","focusElem_1","classList","add","DIALOG_OPEN_CLASS","remove","removeAttribute","focusInitialElement","destroy","focusOnClose","handleClickOutside","dismissOnBackdrop","ConfigurableFocusTrapFactory","ComponentFactoryResolver","DialogService","defaultInjector","appRef","openDialog","dialogOptions","dialog","createDialog","Type","initModal","ComponentRef","onCloseDialog","rootViewContainer","attachView","hostView","componentElement","rootNodes","appendChild","modalRef","modalOptions","isDismissible","subscription_1","Injectable","providedIn","Injector","ApplicationRef","BreadcrumbsItemComponent","BreadcrumbsComponent","location","getLength","itemsLength","hasBackButton","goBack","back","getItemList","Location","HeaderOffcanvasCloseButtonComponent","HeaderOffcanvasButtonComponent","openOffcanvas","handleClick","HeaderOffcanvasComponent","dialogService","hostClass","close","open","offcanvasContent","elementToFocus","setHostClass","bindButton","ariaModal","ariaLabelledBy","closeButton","HeaderNavigationItemComponent","HeaderNavigationComponent","prefix","suffix","NavItemComponent","NavComponent","hasNav","itemsActiveChange","movePrevious","currentIndex","nextIndex","isFocusableItem","itemElem","moveNext","simulateClick","click","HeaderSubnavComponent","hasSubnavItems","nav","overrideNavParams","ariaLabel","HeaderDropdownComponent","SkipLinkComponent","HeaderCustomNavigationComponent","HeaderComponent","overrideSkipLinkParams","skiplinkComponent","overrideNavigationParams","navigationComponent","subnavComponent","customNavigationComponent","dropdownComponent","offcanvasComponent","FooterNavigationItemComponent","FooterNavigationComponent","FooterMetaItemComponent","FooterMetaComponent","FooterComponent","getNavigationItems","navItems","navigation","getNavigationItemItems","getMetaItems","meta","getMetaContent","metaComponent","ErrorSummaryItemComponent","ErrorSummaryComponent","getErrorItemList","errorItemList","errorComponentList","errorList","lastErrorItemCount","MenuHorizontalItemComponent","MenuHorizontalComponent","MenuVerticalItemSubItemComponent","MenuVerticalItemSubComponent","MenuVerticalItemComponent","subComponent","MenuVerticalComponent","getItemHtml","getSubItemId","itemIndex","subItemIndex","subItemId","getItemSub","subItem","getSubItems","subItems","MenubaritemDirective","elementRef","contentChanged","contentHasBeenChecked","ngAfterContentChecked","popupMenu","lastPopupMenu","popupMenuItems","lastPopupMenuItems","link","lastLink","itemContentWrapper","lastItemContentWrapper","ContentChild","MenubarSubsubitemComponent","MenubarSubitemComponent","MenubarItemComponent","MenubarLabelComponent","MenubarComponent","activeSubItemChange","viewInit","currentFocusItemIndex","roleData","ariaLabelData","ariaDescribedbyData","ariaLabelledbyData","ariaHiddenData","ariaHidden","ariaDisabledData","ariaDisabled","ariaControlsData","ariaControls","ariaCurrentData","ariaCurrent","ariaLiveData","ariaLive","ariaExpandedData","ariaExpanded","ariaErrormessageData","ariaErrorMessage","ariaHaspopupData","ariaHasPopup","ariaModalData","checkChanges","menuItems","menuData","itemData","currentFocusSubItemIndex","currentFocusSubSubItemIndex","menuItem","checkRequired","lastCurrentFocusItemIndex","isItemFocusable","handleMenuFocusIn","isFocused","handleMenuFocusOut","menubar","closeMenu","handleMenuItemClick","hasPopupMenu","openMenu","activateMenuItem","handleMenuItemKeydown","focusFirstSubItem","focusNextAvailableItem","focusLastSubItem","focusFirstItem","focusLastItem","isPrintableChar","focusItemByFirstChar","handleMenuItemMouseOver","focusItem","handlePopupMenuItemClick","subSubItemIndex","activatePopupMenuItem","handlePopupMenuItemKeydown","currentSubIndex","currentSubSubIndex","mustCloseAfterSelectPopupItem","focusNextAvailableSubItem","focusSubItemByFirstChar","handlePopupMenuItemMouseOver","focusSubItem","getItemSubitems","subSubItems","getSubItemSubitems","wasOpened","getMenuDataIndex","menuDataIndex","hover","hasFocus","activeElement","fromItemIndex","nextItem","char","itemContents","foundIndex","substr","toLowerCase","elem","fromItemSubIndex","fromItemSubSubIndex","allSubItemsChecked","nextSubIndex","nextSubSubIndex","nextIndexes","getNextSubItemIndexes","subIndex","subSubIndex","isSubItemFocusable","firstSubSubItem","lastItemIndex","lastItem","lastSubSubItem","foundSubIndex","foundSubSubIndex","checkNextSubItem","nextSubItemItems","getLabelRef","getPopupStyle","rect","getBoundingClientRect","top","height","left","zIndex","parentId","getSubSubItemAriaChecked","subsubitem","ariaChecked","NotificationItemComponent","NotificationComponent","isOpenChange","isDismissing","displayDefaultIcon","itemCompontents","handleIconEmpty","empty","TableCellComponent","TableHeaderComponent","cells","TableCaptionComponent","TableRowComponent","OrderBy","TableComponent","getCaptionClass","captionComponent","captionClasses","getHeaderCells","headerCells","headerComponent","head","rowComponentList","getRowCells","row","TableAdvancedSelectComponent","TableAdvancedHeaderCellComponent","selectComponent","TableAdvancedHeaderComponent","TableAdvancedRowCellComponent","TableAdvancedRowComponent","cellsList","CellDirective","RowDirective","getCell","column","contentCells","cell","columnIndex","TableAdvancedComponent","el","rowsChange","rowsChecked","recalculateTable","orderByType","elemntsFocus","querySelector","recalculateVisibleElements","recalculateParams","buildRecalculateParams","observers","markForCheck","visibleRows","rowData","filterRows","sortRows","desyRow","params","filters","headerCell","headerCellIndex","hasFilter","activeFilter","filterText","valueFilter","hasSelect","activeSelect","valueSelect","orderByColumnIndex","orderBy","none","hasFilters","getVisibleRows","getIdHeader","getIdRowCheckbox","getIdHeaderFilter","getIdHeaderSelect","getStringOrderBy","asc","getSelectForItem","getContentComponent","notifyCheckedChange","uncheckAll","mustEmit","rowChecks","handleInputSearch","filteredRows","handleSortByColumn","cellIndex","getNextDirection","sortedRows","columnIndex_1","isAsc_1","compareCellContent","isAsc","aComparable","cleanCurrency","bComparable","isNaN","localeCompare","sensitivity","ignorePunctuation","numeric","txt","test","selectFilter","AlertComponent","hasViewinit","createdCallerFromType","_active","focusFirst","focusElem","alertWrapper","AccordionHeaderComponent","AccordionItemShowButtonComponent","AccordionItemHideButtonComponent","AccordionItemComponent","openChange","showHeaderButton","hideHeaderButton","AccordionComponent","showAll","changeAll","isChange","toggleItem","allowToggle","newOpenValue","allowMultiple","it","wasOpen","itemSelectors","focusNextItem","focusedItem","selectors","focusPreviousItem","headingComponent","heading","getItemHeader","getItemContent","AccordionHistoryItemComponent","showButton","hideButton","AccordionHistoryComponent","SpinnerComponent","DetailsComponent","TermComponent","DefinitionComponent","DescriptionItemComponent","term","definition","DescriptionListComponent","CollapsibleComponent","toggleOpen","show","ItemContentRightComponent","ItemContentBottomComponent","ItemItemComponent","ItemComponent","progressInterval","setInterval","checkClasses","clearInterval","getTitle","getIcon","contentBottomComponent","contentRightComponent","MediaObjectFigureComponent","MediaObjectComponent","center","idData","tabindexData","tabindex","mediaObjectFigureComponent","StatusComponent","StatusItemComponent","statusComponent","PanelComponent","TabItemComponent","panelComponent","TabsComponent","currentTab","selectTab","getItemPanel","tab","panel","currentPanel","tabSrOnly","tabSelectorContentWrapper","focusFirstTab","tabSelectors","focusLastTab","enabledTabs","focusNextTab","focusedTab","nextTab","focusPreviousTab","previousTab","getPanelContent","AlertService","openAlert","alertOptions","alert","createAlert","initNotification","closeAlert","onCloseAlert","place","notificationRef","TooltipContentComponent","PaginationItemPerPageComponent","PaginationListboxLabelComponent","PaginationComponent","currentPage","currentPageChange","defaultText","previousIcon","nextIcon","itemsPerPage","listboxItems","itemActive_1","nPages","Math","ceil","totalItems","previousText","nextText","buildPages","getSuffix","page","getLastItemNumber","pageIndex","min","routerLink","getButtonId","changePage","current","previous","getActiveItemText","getListboxLabel","listboxLabel","getItemsPerPage","changeItemsPerPage","newValue","InnerHtmlPipe","sanitizer","sanitize","SecurityContext","HTML","DomSanitizer","ExternalHrefPipe","AttributeChangeDirective","desyAttributeChange","desyAttributeChangeMutation","MutationObserver","mutations","mutation","attributesToCheck","attributeName","observe","childList","characterData","subtree","disconnect","InnerContentDirective","deleteContentIfEmpty","isHtml","innerText","ClickOutsideDirective","hostElementRef","clickOutside","desyClickOutsideElem","ContentChangeDirective","observeProperties","desyContentChange","desyContentChangeMutation","CustomInnerContentDirective","resolver","injector","clear","desyCustomInnerContent","tmpWrapper","createElement","nodeList_1","node","componentRef","textNode","createTextNode","SharedModule","NgModule","declarations","imports","CommonModule","exports","RouterModule","TemplateDrivenWrapperComponent","NgForm","DividerComponent","DesyCommonsModule","NgxTippyModule","DesyFormsModule","FormsModule","ReactiveFormsModule","TooltipComponent","hasIconComponentContent","tooltipContent","complex","getIdButton","getIdTooltip","handleEmptyContent","handleEmptyIconContent","getMainContent","getIconContent","tooltipContentComponent","DesyViewsModule","ToggleOffStateComponent","ToggleOnStateComponent","ToggleComponent","pressedChange","pressed","contentTemplateOnState","contentTemplateOffState","DesyButtonsModule","DesyModalsModule","A11yModule","MenuNavigationSubitemComponent","MenuNavigationItemComponent","MenuNavigationComponent","menunavigation","DesyNavModule","FocusClickedCellDirective","offsetParent","elemntsFocus_1","elemntsFocus_1_1","activeTabindex","manageArrows","code","tr","parentNode","nextElementSibling","previousElementSibling","inactiveTabindex","mynode","otherNode","isEqualNode","DesyTablesModule","DesyPaginationModule","DesyAngularModule"],"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/desy-angular/src/lib/shared/components/accessibility/accessibility.component.ts","../../../projects/desy-angular/src/lib/shared/components/content-base/content-base.component.ts","../../../projects/desy-angular/src/lib/shared/components/text-or-html-required/text-or-html-required.component.ts","../../../projects/desy-angular/src/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.ts","../../../projects/desy-angular/src/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/button/button.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/button-loader/button-loader.component.ts","../../../projects/desy-angular/src/lib/shared/utils/focus-utils.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/dropdown/dropdown.component.ts","../../../projects/desy-angular/src/lib/shared/utils/string-utils.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.ts","../../../projects/desy-angular/src/lib/shared/decorators/desy-content-child.decorator.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/pill/pill.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/content/content.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/description/description.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/icon/icon.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/title/title.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/hint/hint.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/label/label.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/error-message/error-message.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/fieldset/legend/legend.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/fieldset/fieldset.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/form-field/form-field.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/textarea/textarea.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/character-count/character-count.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input/input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/select-item/select-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/option/option.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/option-group/option-group.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/select.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/file-upload/file-upload.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.ts","../../../projects/desy-angular/src/lib/shared/decorators/desy-on-input-change.decorator.ts","../../../projects/desy-angular/src/lib/shared/pipes/make-html-list.pipe.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/radios/radio-item/radio-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/radios/radios.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/checkboxes/checkboxes.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/search-bar/search-bar.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree-sub/tree-sub.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/interfaces/itree-item.ts","../../../projects/desy-angular/src/lib/shared/utils/search-utils.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree-item/tree-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree.component.ts","../../../projects/desy-angular/src/lib/desy-forms/directives/condition.directive.ts","../../../projects/desy-angular/src/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/dialog/dialog.component.ts","../../../projects/desy-angular/src/lib/desy-modals/services/dialog.service.ts","../../../projects/desy-angular/src/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-navigation/header-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/nav/nav-item/nav-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/nav/nav.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-subnav/header-subnav.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/skip-link/skip-link.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-meta/footer-meta.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/error-summary/error-summary.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/directives/menubaritem.directive.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/menubar.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/notification/notification-item/notification-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/notification/notification.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-header.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-caption.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-row.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/table.component.ts","../../../projects/desy-angular/src/lib/desy-tables/interfaces/head-cell-data.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/cell.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/row.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/table-advanced.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/alert/alert.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion-header/accordion-header.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion-history/accordion-history.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/spinner/spinner.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/details/details.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/term/term.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/definition/definition.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/description-item/description-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/description-list.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/collapsible/collapsible.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-content-right/item-content-right.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-item/item-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/media-object/media-object.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/status/status.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/status-item/status-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/panel/panel.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/tab-item/tab-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/tabs.component.ts","../../../projects/desy-angular/src/lib/desy-views/services/alert.service.ts","../../../projects/desy-angular/src/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.ts","../../../projects/desy-angular/src/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.ts","../../../projects/desy-angular/src/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.ts","../../../projects/desy-angular/src/lib/desy-pagination/components/pagination/pagination.component.ts","../../../projects/desy-angular/src/lib/shared/pipes/inner-html.pipe.ts","../../../projects/desy-angular/src/lib/shared/pipes/external-href.pipe.ts","../../../projects/desy-angular/src/lib/shared/directives/attribute-change.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/inner-content.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/click-outside.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/content-change.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/custom-inner-content.directive.ts","../../../projects/desy-angular/src/lib/shared/shared.module.ts","../../../projects/desy-angular/src/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/divider/divider.component.ts","../../../projects/desy-angular/src/lib/desy-commons/desy-commons.module.ts","../../../projects/desy-angular/src/lib/desy-forms/desy-forms.module.ts","../../../projects/desy-angular/src/lib/desy-views/components/tooltip/tooltip.component.ts","../../../projects/desy-angular/src/lib/desy-views/desy-views.module.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/toggle/toggle.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/desy-buttons.module.ts","../../../projects/desy-angular/src/lib/desy-modals/desy-modals.module.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-navigation/menu-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/desy-nav.module.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/focus-clicked-cell.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/desy-tables.module.ts","../../../projects/desy-angular/src/lib/desy-pagination/desy-pagination.module.ts","../../../projects/desy-angular/src/lib/desy-angular.module.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { Component, Input } from '@angular/core';\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\n\n/**\n * componente para heredar los atributos de accesibilidad\n */\n@Component({\n selector: 'desy-accessibility',\n template: '<div></div>'\n})\nexport class AccessibilityComponent implements AccesibilityData {\n @Input() role: string;\n @Input() ariaLabel: string;\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() ariaHidden: string;\n @Input() ariaDisabled: string;\n @Input() ariaControls: string;\n @Input() ariaCurrent: string;\n @Input() ariaLive: string;\n @Input() ariaExpanded: string;\n @Input() ariaErrorMessage: string;\n @Input() ariaHasPopup: string;\n @Input() ariaModal: string;\n @Input() tabindex: string;\n\n /*\n Copiar para facilitar el uso por defecto\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\"\n */\n}\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\nimport {AccessibilityComponent} from '../accessibility/accessibility.component';\n/**\n * Componente base para proyectar contenido\n */\n@Component({\n selector: 'desy-content-base',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ContentBaseComponent extends AccessibilityComponent {\n\n @ViewChild('contentTemplate', { static: true }) private content: TemplateRef<any>;\n\n public getContent(): TemplateRef<any> {\n return this.content;\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'desy-text-or-html-required',\n template: '<div></div>'\n})\nexport class TextOrHtmlRequiredComponent {\n\n /***\n * componente base para el comportamiento de texto o html required - YA NO ES REQUIRIDO\n * \n **/\n\n @Input() text: string;\n @Input() html: string;\n\n}\n\n","import { Component, Input } from '@angular/core';\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\nimport { TextOrHtmlRequiredComponent } from '../text-or-html-required/text-or-html-required.component';\n\n@Component({\n selector: 'desy-accessibility-and-text-or-html-required',\n template: '<div></div>'\n})\nexport class AccessibilityAndTextOrHtmlRequiredComponent extends TextOrHtmlRequiredComponent implements AccesibilityData {\n\n /**\n * componente para heredar los atributos de accesibilidad y\n * el texto o html required - YA NO ES REQUIERIDO\n * \n * \n */\n\n // Atributos de accesibilidad\n @Input() role: string;\n @Input() ariaLabel: string;\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() ariaHidden: string;\n @Input() ariaDisabled: string;\n @Input() ariaControls: string;\n @Input() ariaCurrent: string;\n @Input() ariaLive: string;\n @Input() ariaExpanded: string;\n @Input() ariaErrorMessage: string;\n @Input() ariaHasPopup: string;\n @Input() tabindex: string;\n\n}\n","import { Component, Input } from '@angular/core';\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\n\n@Component({\n selector: 'desy-accessibility-and-content-required',\n template: '<div></div>'\n})\nexport class AccessibilityAndContentRequiredComponent implements AccesibilityData {\n\n /**\n * componente para heredar los atributos de accesibilidad y\n * el content required\n *\n * si en el componente que extiende de este, se implementa el onInit o Onchanges,\n * habra que incluir la llamada al a funcion contentRequiredFunction\n *\n */\n @Input() html: string;\n @Input() text: string;\n\n // Atributos de accesibilidad\n @Input() role: string;\n @Input() ariaLabel: string;\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() ariaHidden: string;\n @Input() ariaDisabled: string;\n @Input() ariaControls: string;\n @Input() ariaCurrent: string;\n @Input() ariaLive: string;\n @Input() ariaExpanded: string;\n @Input() ariaErrorMessage: string;\n @Input() ariaHasPopup: string;\n @Input() tabindex: string;\n\n}\n","import {Component, EventEmitter, HostBinding, Input, Output} from '@angular/core';\nimport { AccessibilityComponent, ContentBaseComponent} from '../../../shared/components';\n\n@Component({\n selector: 'desy-button',\n templateUrl: './button.component.html'\n})\nexport class ButtonComponent extends ContentBaseComponent {\n\n public static readonly ELEMENT_A: string = 'a';\n public static readonly ELEMENT_BUTTON: string = 'button';\n public static readonly ELEMENT_INPUT: string = 'input';\n\n\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\n\n @Input() id: string;\n @Input() classes: string;\n @Input() html: string;\n @Input() text: string;\n\n @Input() element: string; // 'a', 'button' o 'input'\n @Input() name: string;\n @Input() type: string;\n @Input() value: any;\n @Input() disabled: boolean;\n @Input() href: string;\n @Input() target: string;\n @Input() preventDoubleClick: boolean;\n\n @Input() routerLink: string|any[];\n @Input() routerLinkActiveClasses: string|string[];\n\n @Output() clickEvent = new EventEmitter();\n\n avoidingDoubleClick = false;\n\n onClick(event: any): void {\n if (this.preventDoubleClick) {\n if (!this.avoidingDoubleClick){\n this.avoidingDoubleClick = true;\n this.clickEvent.emit(event);\n setTimeout(() => {\n this.avoidingDoubleClick = false;\n }, 1000);\n } else {\n event.preventDefault(); // evitamos propagar el evento por ejemplo un submit en un formulario\n }\n } else {\n this.clickEvent.emit(event);\n }\n }\n\n getElement(): string {\n let element: string;\n if (this.element) {\n element = this.element.toLocaleLowerCase();\n } else {\n if (this.href) {\n element = ButtonComponent.ELEMENT_A;\n } else {\n element = ButtonComponent.ELEMENT_BUTTON;\n }\n }\n return element;\n }\n\n getClassNames(): string {\n let classNames = 'c-button';\n if (this.classes) {\n classNames += ' ' + this.classes;\n }\n if (this.disabled) {\n classNames += ' c-button--disabled';\n }\n return classNames;\n }\n\n isDisabled(): boolean {\n return this.disabled ? true : null;\n }\n\n get staticElementTypeA(): string {\n return ButtonComponent.ELEMENT_A;\n }\n\n get staticElementTypeButton(): string {\n return ButtonComponent.ELEMENT_BUTTON;\n }\n\n get staticElementTypeInput(): string {\n return ButtonComponent.ELEMENT_INPUT;\n }\n}\n","import {Component, HostBinding, Input} from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'desy-button-loader',\n templateUrl: './button-loader.component.html'\n})\nexport class ButtonLoaderComponent extends ButtonComponent {\n\n public static readonly STATE_LOADING: string = 'is-loading';\n public static readonly STATE_SUCCESS: string = 'is-success';\n\n private static readonly DEFAULT_LOADER_TEXT: string = 'Acción en curso';\n private static readonly DEFAULT_SUCCESS_TEXT: string = 'Acción realizada con éxito';\n\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\n\n @Input() loaderText: string;\n @Input() loaderClasses: string;\n @Input() state: string;\n @Input() successText: string;\n\n getClassNames(): string {\n let classNames = 'c-button-loader relative';\n if (this.classes) {\n classNames += ' ' + this.classes;\n }\n if (this.disabled) {\n classNames += ' c-button-loader--disabled';\n }\n return classNames;\n }\n\n getSpinnerText(): string {\n let spinnerText: string = null;\n\n if (this.state === ButtonLoaderComponent.STATE_LOADING) {\n spinnerText = this.loaderText ? this.loaderText : ButtonLoaderComponent.DEFAULT_LOADER_TEXT;\n }\n\n return spinnerText;\n }\n\n\n getSuccessText(): string {\n let successText: string = null;\n\n if (this.state === ButtonLoaderComponent.STATE_SUCCESS) {\n successText = this.successText ? this.successText : ButtonLoaderComponent.DEFAULT_SUCCESS_TEXT;\n }\n\n return successText;\n }\n}\n","export class FocusUtils {\n\n public static getFirstFocusableElement(parent?: HTMLElement): HTMLElement {\n const selectionableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n let focusableList;\n if (parent) {\n focusableList = parent.querySelectorAll(selectionableElements);\n } else {\n focusableList = document.querySelectorAll(selectionableElements);\n }\n\n if (!focusableList || focusableList.length === 0) {\n return null;\n }\n\n let firstFocusable = null;\n let i = 0;\n while (i < focusableList.length) {\n try {\n const element = focusableList.item(i) as HTMLInputElement;\n if (FocusUtils.isFocusable(element)) {\n firstFocusable = element;\n break;\n }\n } catch (e) {\n\n }\n i++;\n }\n\n return firstFocusable;\n }\n\n public static isFocusable(element: any): boolean {\n if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)) {\n return true;\n }\n\n if (element.disabled) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && element.rel !== 'ignore';\n case 'INPUT':\n return element.type !== 'hidden' && element.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n }\n\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ElementRef,\n OnInit,\n OnChanges,\n SimpleChanges,\n HostBinding,\n} from '@angular/core';\nimport { AccessibilityAndContentRequiredComponent } from '../../../shared/components';\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\n\n@Component({\n selector: 'desy-dropdown',\n templateUrl: './dropdown.component.html'\n})\nexport class DropdownComponent extends AccessibilityAndContentRequiredComponent implements OnInit, OnChanges {\n \n static readonly KEY_CODE_ESC = 'Escape';\n\n @ViewChild('dropdownContent', { read: ElementRef, static: true }) dropdownContent: ElementRef;\n\n @Input() id: string;\n @Input() disabled: boolean;\n @Input() hiddenText: string;\n @Input() @HostBinding('class') classesContainer: any;\n @Input() classesTooltip: string;\n @Input() caller: TemplateRef<any>;\n @Input() classes: string;\n\n @Output() clickEvent = new EventEmitter();\n\n isOpen = false;\n clickOutsideEnabled = false;\n\n tippyProperties: any;\n\n ngOnInit(): any {\n let contentTooltip: HTMLElement;\n if (this.dropdownContent && this.dropdownContent.nativeElement) {\n contentTooltip = this.dropdownContent.nativeElement as HTMLElement;\n contentTooltip.style.display = 'block';\n this.tippyProperties = {\n placement: 'bottom-start',\n inlinePositioning: true,\n content: contentTooltip,\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\n trigger: 'click',\n hideOnClick: true,\n interactive: true,\n arrow: false,\n offset: [0, -10],\n theme: '',\n plugins: [\n {\n name: 'hideOnPopperBlur',\n defaultValue: true,\n fn(instance) {\n return {\n onCreate() {\n instance.popper.addEventListener('focusout', (event) => {\n if (\n instance.props.hideOnPopperBlur &&\n event.relatedTarget &&\n !instance.popper.contains(event.relatedTarget)\n ) {\n instance.hide();\n }\n });\n },\n };\n }\n }, {\n name: 'hideOnEsc',\n defaultValue: true,\n fn({hide}): any {\n\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === DropdownComponent.KEY_CODE_ESC) {\n hide();\n }\n }\n\n return {\n onShow(): void {\n document.addEventListener('keydown', onKeyDown);\n },\n onHide(): void {\n document.removeEventListener('keydown', onKeyDown);\n },\n };\n },\n }\n ],\n role: false,\n aria: {\n content: 'auto',\n },\n onShown(instance): void {\n const firstFocusable = FocusUtils.getFirstFocusableElement(contentTooltip);\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n };\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classesContainer = this.classesContainer ? this.classesContainer : 'relative';\n }\n\n onClick(event: any): void {\n if (!this.isDisabled()){\n this.clickEvent.emit(event);\n }\n }\n\n setOpen(isOpen: boolean): void {\n this.isOpen = isOpen;\n }\n\n isDisabled(): boolean {\n return this.disabled ? true : null;\n }\n}\n","/**\n * Facilita funciones de utilidad para trabajar con strings\n */\nexport class StringUtils {\n\n /**\n * Escapa los caracteres propios de HTML para mostrarlos como contenido\n * @param value texto en formato html\n */\n public static escapeHtml(value: string): string {\n return value ? value\n .replace(new RegExp(`&`, 'g'), '&')\n .replace(new RegExp(`<`, 'g'), '<')\n .replace(new RegExp(`>`, 'g'), '>')\n .replace(new RegExp(`\"`, 'g'), '"')\n .replace(new RegExp(`'`, 'g'), ''') : '';\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-listbox-label',\n templateUrl: './listbox-label.component.html'\n})\nexport class ListboxLabelComponent extends ContentBaseComponent {\n\n @Input() classes: string;\n\n}\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from '@angular/core';\nimport {ListboxItemData} from '../../../interfaces/listbox-item-data';\nimport {AccessibilityComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-listbox-item',\n templateUrl: './listbox-item.component.html'\n})\nexport class ListboxItemComponent extends AccessibilityComponent implements ListboxItemData, OnChanges {\n\n @ViewChild('childComponentTemplate') content;\n\n @Input() id?: string;\n @Input() active?: boolean;\n @Input() classes?: string;\n @Input() title?: string;\n\n @Output() itemChange = new EventEmitter();\n\n ngOnChanges(changes: SimpleChanges): void {\n this.itemChange.emit(changes);\n }\n\n}\n","import {QueryList} from '@angular/core';\n\n/**\n * Decorador para convertir una queryList de componentes obtenidos con ContentChildren a un único componente, de forma que sea similar a un\n * ContentChild pero admitiendo únicamente los compontentes insertados en el primer nivel.\n * Debe utilizarse siempre junto a un ContentChildren\n * Si en el constructor de la clase en la que se utiliza se inyecta el Change detector con nombre 'changeDetectorRef', se indicará que hay\n * cambios cuando se detecten.\n * @param options opciones adicionales:\n * - onSetCallbackName: nombre del método al que llamar tras asociarse el valor. Esto puede utilizarse, por ejemplo, para sobreescribir\n * parámetros definidos externamente en el componente.\n * - onDeleteCallbackName: nombre del método al que llamar tras desasociarse el valor.\n */\nexport function DesyContentChild(options?: { onSetCallbackName?: string, onDeleteCallbackName?: string }): PropertyDecorator {\n return (target: any, propertyKey: string) => {\n const privateKeyName = `_${propertyKey}`;\n const privateQueryListKeyName = `_${propertyKey}Querylist`;\n\n Object.defineProperty(target, propertyKey, {\n set(value): void {\n const queryList = value instanceof QueryList ? value as QueryList<any> : null;\n if (queryList && !this[privateQueryListKeyName]) {\n this[privateQueryListKeyName] = queryList;\n queryList.changes.subscribe(() => {\n const previousValue = this[privateKeyName];\n this[privateKeyName] = queryList && queryList.length > 0 ? queryList.first : null;\n\n if (options && options.onSetCallbackName && this[options.onSetCallbackName] && this[privateKeyName] ) {\n this[options.onSetCallbackName](this[privateKeyName]);\n }\n\n if (options && options.onDeleteCallbackName && this[options.onDeleteCallbackName] && previousValue && !this[privateKeyName] ) {\n this[options.onDeleteCallbackName]();\n }\n });\n queryList.notifyOnChanges();\n }\n },\n get(): any {\n return this[privateKeyName];\n }\n });\n };\n}\n","import {\n Component,\n ContentChildren, DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport {AccessibilityAndTextOrHtmlRequiredComponent} from '../../../shared/components';\nimport {ListboxLabelData} from '../../interfaces/listbox-label-data';\nimport {ListboxItemData} from '../../interfaces/listbox-item-data';\nimport {StringUtils} from '../../../shared/utils/string-utils';\nimport {ListboxLabelComponent} from './listbox-label/listbox-label.component';\nimport {ListboxItemComponent} from './listbox-item/listbox-item.component';\nimport {Subscription} from 'rxjs';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-listbox',\n templateUrl: './listbox.component.html'\n})\nexport class ListboxComponent extends AccessibilityAndTextOrHtmlRequiredComponent implements OnInit, OnChanges, DoCheck {\n\n static readonly KEY_CODE_ESC = 'Escape';\n\n @ViewChild('button', { read: ElementRef, static: true }) listboxButton: ElementRef;\n @ViewChild('list', { read: ElementRef }) listboxList: ElementRef;\n @ViewChild('tooltip', { read: ElementRef, static: true }) listboxContent: ElementRef;\n @ViewChildren('option', { read: ElementRef }) listboxOptions: QueryList<ElementRef>;\n\n @DesyContentChild()\n @ContentChildren(ListboxLabelComponent) labelComponent: ListboxLabelComponent;\n @ContentChildren(ListboxItemComponent) itemComponentList: QueryList<ListboxItemComponent>;\n\n @Input() id: string; // required\n @Input() isMultiselectable: boolean;\n @Input() doesChangeButtonText: boolean;\n @Input() label: ListboxLabelData;\n @Input() classes: string;\n @Input() classesContainer: string;\n @Input() classesTooltip: string;\n @Input() idPrefix: string;\n @Input() disabled: boolean;\n @Input() items: ListboxItemData[];\n @Output() itemsChange = new EventEmitter();\n @Output() activeItemChange = new EventEmitter();\n\n tippyProperties: any; // Propiedades de tippy\n currentFocusIndex: number; // Índice del elemento actual con focus\n buttonContentHtml: string; // Puede ser el pasado por parámetro o el item seleccionado en caso de currentFocusIndex=true\n isListVisible = false; // Indica si la lista se está mostrando\n\n // conditionalId y conditionalItem representan en desy-html el item activo. Aquí es mejor obtenerlo cuando se necesita\n lastActiveItems: { item: ListboxItemData, index: number }[];\n itemComponentSubscriptions: Subscription[];\n\n itemList: ListboxItemData[];\n\n\n ngOnInit(): void {\n const listboxButtonElement = this.listboxButton.nativeElement;\n if (this.listboxContent && this.listboxContent.nativeElement) {\n const contentTooltip = this.listboxContent.nativeElement as HTMLElement;\n this.tippyProperties = { \n placement: 'bottom-start',\n inlinePositioning: true, \n content: contentTooltip,\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\n trigger: 'click',\n hideOnClick: true,\n interactive: true,\n arrow: false,\n offset: [0, -10],\n theme: '',\n plugins: [\n {\n name: 'hideOnPopperBlur',\n defaultValue: true,\n fn(instance) {\n return {\n onCreate() {\n instance.popper.addEventListener('focusout', (event) => {\n if (\n instance.props.hideOnPopperBlur &&\n event.relatedTarget &&\n !instance.popper.contains(event.relatedTarget)\n ) {\n instance.hide();\n }\n });\n },\n };\n }\n }, {\n name: 'hideOnEsc',\n defaultValue: true,\n fn({hide}): any {\n\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === ListboxComponent.KEY_CODE_ESC) {\n hide();\n listboxButtonElement.focus();\n }\n }\n\n return {\n onShow(): void {\n document.addEventListener('keydown', onKeyDown);\n },\n onHide(): void {\n document.removeEventListener('keydown', onKeyDown);\n },\n };\n },\n }\n ],\n role: false,\n aria: {\n content: 'auto',\n },\n onShow: this.onListShow.bind(this),\n onHidden: this.onListClose.bind(this)\n };\n }\n }\n\n ngOnChanges(): void {\n setTimeout(() => {\n\n if (this.itemComponentList && this.itemComponentList.length > 0) {\n if (this.itemComponentSubscriptions) {\n this.itemComponentSubscriptions.forEach(s => s.unsubscribe());\n }\n this.itemComponentSubscriptions = [];\n this.itemList = [];\n this.itemComponentList.forEach(item => {\n const subscription = item.itemChange.subscribe(() => this.checkActiveItems());\n this.itemComponentSubscriptions.push(subscription);\n this.itemList.push(item);\n });\n } else {\n this.itemList = this.items;\n }\n\n this.checkActiveItems();\n });\n }\n\n ngDoCheck(): void {\n if (!this.items || !this.itemList) {\n return;\n }\n\n this.checkActiveItems();\n }\n\n private getActiveItemsData(): { item: ListboxItemData, index: number }[] {\n return this.itemList\n .map((item, index) => item.active ? {item, index} : null)\n .filter(item => item !== null);\n }\n\n private checkActiveItems(): void {\n let activeItems: { item: ListboxItemData, index: number }[] = this.itemList\n .map((item, index) => item.active ? {item, index} : null)\n .filter(item => item !== null);\n\n let hasActiveItemChange = false;\n if (this.lastActiveItems && activeItems.length === this.lastActiveItems.length) {\n for (let i = 0; i < activeItems.length; i++) {\n if (activeItems[i].index !== this.lastActiveItems[i].index) {\n hasActiveItemChange = true;\n break;\n }\n }\n } else {\n hasActiveItemChange = true;\n }\n\n // Si hay cambios externos y es selección única, anulamos la selección anterior\n if (this.lastActiveItems && !this.isMultiselectable && hasActiveItemChange) {\n if (activeItems.length !== this.lastActiveItems.length) {\n for (const newItem of activeItems) {\n if (this.lastActiveItems.findIndex(i => i.index === newItem.index) >= 0) {\n newItem.item.active = false;\n }\n\n activeItems = activeItems.filter(item => item.item.active);\n }\n }\n }\n\n this.lastActiveItems = activeItems;\n\n // Se cambia el contenido del botón\n if (this.doesChangeButtonText && !this.isMultiselectable && activeItems.length > 0) {\n const activeItemOption = this.listboxOptions.find((item, index) => index === activeItems[0].index);\n if (activeItemOption) {\n this.buttonContentHtml = activeItemOption.nativeElement.innerHTML;\n }\n } else {\n this.buttonContentHtml = this.html ? this.html : null;\n }\n\n // Si hay cambios, se emiten\n if (hasActiveItemChange) {\n this.itemsChange.emit(this.itemList);\n this.activeItemChange.emit(activeItems.length > 0 ? activeItems[0].item : null);\n }\n }\n\n onListShow(): void {\n this.isListVisible = true;\n if (this.listboxList) {\n setTimeout(() => this.listboxList.nativeElement.focus());\n }\n }\n\n onListClose(): void {\n this.isListVisible = false;\n }\n\n onListFocus(): void {\n const activeItemsData = this.getActiveItemsData();\n if (activeItemsData.length > 0) {\n const activeElem = document.getElementById(this.getItemId(activeItemsData[0].item, activeItemsData[0].index));\n if (activeElem) {\n activeElem.focus();\n this.currentFocusIndex = activeItemsData[0].index;\n }\n } else if (this.itemList && this.itemList.length > 0) {\n this.currentFocusIndex = 0;\n if (!this.isMultiselectable) {\n this.selectItem(0);\n }\n } else {\n console.warn('No element to focus');\n }\n }\n\n moveFocus(position: number, event: KeyboardEvent): void {\n event.preventDefault();\n if (position >= 0 && position < this.itemList.length) {\n if (this.isMultiselectable) {\n this.currentFocusIndex = position;\n } else {\n this.selectItem(position);\n }\n }\n }\n\n onSpace(event: KeyboardEvent): void {\n event.preventDefault();\n if (this.isMultiselectable) {\n this.selectItem(this.currentFocusIndex);\n }\n }\n\n selectItem(index: number): void {\n if (!this.isMultiselectable) {\n this.itemList.forEach(item => item.active = false);\n this.itemList[index].active = true;\n } else {\n this.itemList[index].active = !this.itemList[index].active;\n }\n this.currentFocusIndex = index;\n\n this.checkActiveItems();\n }\n\n /*\n * Métodos para facilitar contenido al template\n */\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : this.id + '-listbox-item';\n }\n\n getItemId(item: ListboxItemData, index: number): string {\n let itemId: string;\n if (item.id) {\n itemId = item.id;\n } else {\n itemId = this.getIdPrefix();\n if (index > 0) {\n itemId += `-${index}`;\n }\n }\n return itemId;\n }\n\n hasLabel(): boolean {\n return !!(this.label || this.labelComponent);\n }\n\n getLabelContent(label: ListboxLabelData): string {\n return label.html ? label.html : `<p>${ StringUtils.escapeHtml(label.text) }</p>`;\n }\n}\n","import {Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { AccessibilityAndContentRequiredComponent } from '../../../shared/components';\n\n@Component({\n selector: 'desy-pill',\n templateUrl: './pill.component.html'\n})\nexport class PillComponent extends AccessibilityAndContentRequiredComponent {\n\n public static readonly TYPE_A: string = 'a';\n public static readonly TYPE_BUTTON: string = 'button';\n public static readonly TYPE_SPAN: string = 'span';\n\n @Input() type: string; // 'a', 'button' o 'span'\n @Input() href: string;\n @Input() target: string;\n @Input() routerLink: string|any[];\n @Input() routerLinkActiveClasses: string|string[];\n @Input() classes: string;\n @Input() id: string;\n\n @Output() clickEvent = new EventEmitter();\n\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\n\n onClick(event: any): void {\n this.clickEvent.emit(event);\n }\n\n getType(): string {\n let type: string;\n if (this.type){\n type = this.type.toLocaleLowerCase();\n } else {\n if (this.href) {\n type = PillComponent.TYPE_A;\n } else {\n type = PillComponent.TYPE_SPAN;\n }\n }\n return type;\n }\n\n getClassNames(): string {\n let classNames = 'c-pill';\n if (this.classes) {\n classNames += ' ' + this.classes;\n }\n return classNames;\n }\n\n get staticElementTypeA(): string {\n return PillComponent.TYPE_A;\n }\n\n get staticElementTypeButton(): string {\n return PillComponent.TYPE_BUTTON;\n }\n\n get staticElementTypeSpan(): string {\n return PillComponent.TYPE_SPAN;\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../shared/components';\nimport {ContentData} from '../../interfaces';\n\n@Component({\n selector: 'desy-content',\n templateUrl: './content.component.html'\n})\nexport class ContentComponent extends ContentBaseComponent implements ContentData {\n @Input() classes: string;\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../shared/components';\nimport {DescriptionData} from '../../interfaces';\n\n@Component({\n selector: 'desy-description',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class DescriptionComponent extends ContentBaseComponent implements DescriptionData {\n @Input() classes: string;\n @Input() visuallyHiddenTitle?: string;\n}\n","import {Component, Input} from '@angular/core';\nimport {IconData} from '../../interfaces';\nimport {ContentBaseComponent} from '../../../shared/components';\n\n@Component({\n selector: 'desy-icon',\n templateUrl: './icon.component.html'\n})\nexport class IconComponent extends ContentBaseComponent implements IconData {\n\n @Input() type: string;\n @Input() containerClasses?: string;\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../shared/components';\nimport {TitleData} from '../../interfaces';\n\n@Component({\n selector: 'desy-title',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class TitleComponent extends ContentBaseComponent implements TitleData {\n @Input() classes: string;\n}\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\n\n@Component({\n selector: 'desy-hint',\n templateUrl: './hint.component.html',\n})\nexport class HintComponent extends AccessibilityComponent {\n\n @Input() id: string;\n @Input() classes: string;\n @Input() html: string;\n @Input() text: string;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n public detectChanges(): void {\n this.changeDetectorRef.detectChanges();\n }\n}\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\n\n\n@Component({\n selector: 'desy-label',\n templateUrl: './label.component.html'\n})\nexport class LabelComponent extends AccessibilityComponent {\n\n @Input() id: string;\n @Input() classes: string;\n @Input() html: string;\n @Input() text: string;\n @Input() isPageHeading: boolean;\n @Input() headingLevel: number;\n @Input() for: string;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n public detectChanges(): void {\n this.changeDetectorRef.detectChanges();\n }\n}\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\n\n@Component({\n selector: 'desy-error-message',\n templateUrl: './error-message.component.html'\n})\nexport class ErrorMessageComponent extends AccessibilityComponent {\n\n @Input() id: string;\n @Input() classes: string;\n @Input() html: string;\n @Input() text: string;\n @Input() visuallyHiddenText: string;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n public detectChanges(): void {\n this.changeDetectorRef.detectChanges();\n }\n}\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { AccessibilityAndContentRequiredComponent } from '../../../../shared/components';\n\n@Component({\n selector: 'desy-legend',\n templateUrl: './legend.component.html'\n})\nexport class LegendComponent extends AccessibilityAndContentRequiredComponent {\n\n @Input() classes: string;\n @Input() isPageHeading: boolean;\n @Input() headingLevel: number;\n \n}\n","import {ChangeDetectorRef, Component, ContentChildren, Input, TemplateRef} from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { LegendComponent } from './legend/legend.component';\nimport { LegendData } from '../../interfaces';\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-fieldset',\n templateUrl: './fieldset.component.html'\n})\nexport class FieldsetComponent extends AccessibilityComponent {\n\n @Input() describedBy: string;\n @Input() errorId: string;\n\n /**\n * legenda, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir legendComponent\n * 2) incluir template\n * 3) incluir objeto legend (interfaz expuesta)\n * 4) incluir legendText - incluir un label con solo un texto\n */\n @Input() legendRef: TemplateRef<LegendComponent>;\n @Input() legendData: LegendData;\n @Input() legendText: string;\n\n @Input() classes: string;\n @Input() caller: TemplateRef<any>;\n\n @Input() id: string;\n @Input() headingLevel: number;\n\n\n @DesyContentChild()\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n public detectChanges(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n}\n","import {\n Component,\n ContentChildren,\n HostListener,\n Input,\n TemplateRef\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { LabelComponent } from '../label/label.component';\nimport { HintComponent } from '../hint/hint.component';\nimport { ErrorMessageComponent } from '../error-message/error-message.component';\nimport { LabelData, HintData, ErrorMessageData } from '../../interfaces';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n\n@Component({\n selector: 'desy-form-field',\n template: ''\n})\nexport class FormFieldComponent<T> extends AccessibilityComponent implements ControlValueAccessor {\n\n @Input() id: string;\n @Input() disabled: boolean;\n value: T;\n\n /*\n * label, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir componente\n * 2) incluir template\n * 3) incluir objeto label (interfaz expuesta)\n * 4) incluir legendText - incluir un label con solo un texto\n */\n @DesyContentChild({ onSetCallbackName: 'overrideLabelParams', onDeleteCallbackName: 'onDeleteLabel'})\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\n @Input() labelRef: TemplateRef<LabelComponent>;\n @Input() labelData: LabelData;\n @Input() labelText: string;\n\n /*\n * hint, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir componente\n * 2) incluir template\n * 3) incluir objeto label (interfaz expuesta)\n * 4) incluir hintText - incluir un hint con solo un texto\n */\n @DesyContentChild({ onSetCallbackName: 'overrideHintParams', onDeleteCallbackName: 'onDeleteHint'})\n @ContentChildren(HintComponent) hintComponent: HintComponent;\n @Input() hintRef: TemplateRef<HintComponent>;\n @Input() hintData: HintData;\n @Input() hintText: string;\n\n /*\n * errorMessage, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir componente\n * 2) incluir template\n * 3) incluir objeto label (interfaz expuesta)\n * 4) incluir errorText - incluir un errorText con solo un texto\n */\n @DesyContentChild({ onSetCallbackName: 'overrideErrorMessageParams', onDeleteCallbackName: 'onDeleteErrorMessage'})\n @ContentChildren(ErrorMessageComponent) errorMessageComponent: ErrorMessageComponent;\n @Input() errorMessageRef: TemplateRef<ErrorMessageComponent>;\n @Input() errorMessageData: ErrorMessageData;\n @Input() errorMessageText: string;\n\n\n @HostListener('focusout')\n onblur(): void {\n // DESY-77 SI TOCAN EL COMPONENTE Y SALEN SIN MODIFICAR EL VALOR, QUE SE ACTUALICE TOUCHED\n this.onTouch();\n }\n\n\n /*\n * Implementación de los métodos del ControlValueAccessor\n */\n\n onChange = (_: any) => {};\n onTouch = () => { };\n\n onInput(value: T): void{\n this.value = value;\n this.onTouch();\n this.onChange(this.value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n writeValue(value: T): void {\n if (value){\n this.value = value;\n }\n this.onChange(value);\n }\n\n\n /*\n * Funciones para recuperar valores comunes\n */\n\n getHintId(): string {\n return this.hasHint() ? this.id + '-hint' : null;\n }\n\n getErrorId(): string {\n return this.hasErrorsMessage() ? this.id + '-error' : null;\n }\n\n hasLabel(): boolean {\n return !!(this.hasLabelComponent() || this.labelText || this.labelRef ||\n (this.labelData && (this.labelData.text || this.labelData.html)));\n }\n\n hasHint(): boolean {\n return !!(this.hasHintComponent() || this.hintText || this.hintRef || (this.hintData && (this.hintData.text || this.hintData.html)));\n }\n\n hasErrorsMessage(): boolean {\n return !!(this.hasErrorMessageComponent() || this.errorMessageText || this.errorMessageRef ||\n (this.errorMessageData && (this.errorMessageData.text || this.errorMessageData.html)));\n }\n\n hasLabelComponent(): boolean {\n return !!this.labelComponent;\n }\n\n hasHintComponent(): boolean {\n return !!this.hintComponent;\n }\n\n hasErrorMessageComponent(): boolean {\n return !!this.errorMessageComponent;\n }\n}\n","import {\n Component,\n ElementRef,\n forwardRef,\n Input,\n OnChanges,\n ViewChild,\n HostBinding\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormFieldComponent } from '../form-field/form-field.component';\n\n@Component({\n selector: 'desy-textarea',\n templateUrl: './textarea.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }\n ]\n})\nexport class TextareaComponent extends FormFieldComponent<string> implements OnChanges {\n\n protected static readonly DEFAULT_ROWS = 5;\n\n @ViewChild('textarea') textareaElement: ElementRef;\n\n @Input() name: string;\n @Input() rows: number;\n @Input() placeholder: string;\n @Input() describedBy: string;\n\n // form group class - asignar clases a la etiqueta desy-input\n @HostBinding('class.c-form-group') cfg = true;\n @HostBinding('class.c-form-group--error') cfgr: boolean;\n @Input() @HostBinding('class') formGroupClasses: any;\n @Input() classes: string;\n @Input() autocomplete: string;\n @Input() maxlength: number;\n\n constructor() {\n super();\n }\n\n inputTransform = (value: string): string => value;\n\n ngOnChanges(): void {\n this.writeValue(this.value);\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\n }\n\n\n getRows(): number {\n return this.rows ? this.rows : TextareaComponent.DEFAULT_ROWS;\n }\n\n onInput(value: any): void{\n super.onInput(this.inputTransform(this.ensureText(value)));\n }\n\n writeValue(value: any): void {\n this.value = this.inputTransform(this.ensureText(value));\n this.onChange(this.value);\n }\n\n registerInputTransform(fn: (value: string) => string): void {\n this.inputTransform = fn;\n }\n\n private ensureText(value: any): string {\n return value ? value || '' : '';\n }\n}\n","import {\n AfterViewInit,\n Component,\n forwardRef,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { TextareaComponent } from '../textarea/textarea.component';\n\n@Component({\n selector: 'desy-character-count',\n templateUrl: './character-count.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CharacterCountComponent),\n multi: true\n }\n ]\n})\nexport class CharacterCountComponent extends FormFieldComponent<string> implements AfterViewInit, OnChanges {\n\n @ViewChild(TextareaComponent) textarea;\n\n @Input() name: string;\n @Input() type: string;\n @Input() rows: number;\n @Input() placeholder: string;\n @Input() maxlength: number;\n @Input() countbbdd: boolean;\n @Input() maxwords: number;\n @Input() threshold: number;\n @Input() formGroupClasses: string;\n @Input() countMessageClasses: string;\n @Input() classes: string;\n\n textareaElement: HTMLTextAreaElement;\n displayCountMessage: boolean;\n remaining: number;\n\n ngAfterViewInit(): void {\n this.textareaElement = (this.textarea.textareaElement.nativeElement as HTMLTextAreaElement);\n this.textarea.registerInputTransform(this.inputTransform.bind(this));\n this.registerOnChange(this.onChange);\n this.registerOnTouched(this.onTouch);\n this.textarea.setDisabledState(this.disabled);\n setTimeout(() => this.textarea.writeValue(this.value), 50);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.textarea) {\n setTimeout(() => this.textarea.ngOnChanges(changes), 50);\n }\n }\n\n inputTransform(value: string): string {\n if (value) {\n if (this.maxlength) {\n let length = this.calculateLenght(value);\n this.displayCountMessage = !this.threshold || length > (this.maxlength * this.threshold / 100);\n while (length > this.maxlength) {\n value = value.substring(0, value.length - 1);\n length = this.calculateLenght(value);\n }\n this.remaining = this.maxlength - length;\n } else {\n const words = value.match(/[\\wáéíóúÁÉÍÓÚüÜñÑ]+/g) || [];\n this.displayCountMessage = !this.threshold || (words.length > this.maxwords * this.threshold / 100);\n while ( words.length > this.maxwords) {\n value = value.substring(0, value.lastIndexOf(words.pop()));\n }\n this.remaining = this.maxwords - words.length;\n }\n } else {\n value = '';\n this.displayCountMessage = !this.threshold;\n this.remaining = this.maxlength ? this.maxlength : this.maxwords;\n }\n\n this.textareaElement.value = value;\n return value;\n }\n\n calculateLenght(value: string): number {\n let length = value.length;\n if (this.countbbdd && value) {\n const specialChars = value.match(/[^A-z0-9_\\s.,:;]/g);\n length += specialChars ? specialChars.length : 0;\n }\n return length;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n if (this.textarea) {\n this.textarea.registerOnChange(fn);\n this.onChange = (_: any) => {};\n }\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n if (this.textarea) {\n this.textarea.registerOnTouched(fn);\n this.onTouch = () => { };\n }\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (this.textarea) {\n this.textarea.setDisabledState(isDisabled);\n }\n }\n\n writeValue(value: string): void {\n this.value = value;\n if (this.textarea) {\n this.textarea.writeValue(value);\n }\n }\n\n}\n","import { Component, forwardRef, HostBinding, Input, OnChanges, SimpleChanges, DoCheck } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormFieldComponent } from '../form-field/form-field.component';\n\n@Component({\n selector: 'desy-input',\n templateUrl: './input.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ]\n})\nexport class InputComponent extends FormFieldComponent<any> implements OnChanges, DoCheck {\n\n @Input() name: string;\n @Input() type: string;\n @Input() describedBy: string;\n @Input() pattern: string;\n @Input() inputmode: string;\n @Input() placeholder: string;\n\n // form group class - asignar clases a la etiqueta desy-input\n @HostBinding('class.c-form-group') cfg = true;\n @HostBinding('class.c-form-group--error') cfgr: boolean;\n @Input() @HostBinding('class') formGroupClasses: any;\n\n @Input() classes: string;\n @Input() autocomplete: string;\n @Input() maxlength: number;\n @Input() errorId: string;\n @Input() attributes: any;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\n }\n\n ngDoCheck(): void {\n if(this.attributes){\n this.setAttributes();\n }\n }\n\n setAttributes(){\n const input = document.getElementById(this.id ? this.id : 'input');\n const attr = this.attributes;\n Object.keys(attr).forEach(key => {\n input?.setAttribute(key, attr[key]);\n });\n }\n\n getErrorId(): string {\n return this.errorId ? this.errorId : super.getErrorId();\n }\n\n writeValue(value: any): void {\n if (value) {\n this.value = value || '';\n } else {\n this.value = '';\n }\n this.onChange(this.value);\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-select-item',\n templateUrl: './select-item.component.html'\n})\nexport class SelectItemComponent extends ContentBaseComponent {\n\n @Input() disabled: boolean;\n}\n","import {Component, forwardRef, Input} from '@angular/core';\nimport {SelectItemData} from '../../../interfaces';\nimport {SelectItemComponent} from '../select-item/select-item.component';\n\n@Component({\n selector: 'desy-option',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>',\n providers: [{provide: SelectItemComponent, useExisting: forwardRef(() => OptionComponent)}],\n})\nexport class OptionComponent extends SelectItemComponent implements SelectItemData {\n\n @Input() value: string;\n @Input() selected: boolean;\n @Input() hidden: boolean;\n\n}\n","import {Component, ContentChildren, forwardRef, Input, QueryList} from '@angular/core';\nimport {SelectItemComponent} from '../select-item/select-item.component';\nimport {OptionComponent} from '../option/option.component';\n\n@Component({\n selector: 'desy-option-group',\n templateUrl: './option-group.component.html',\n providers: [{provide: SelectItemComponent, useExisting: forwardRef(() => OptionGroupComponent)}],\n})\nexport class OptionGroupComponent extends SelectItemComponent {\n\n @Input() label: string;\n\n @ContentChildren(OptionComponent) items: QueryList<OptionComponent>;\n}\n","import {Component, forwardRef, Input, OnInit, OnChanges, SimpleChanges, ContentChildren, QueryList, AfterContentInit, HostBinding} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { SelectItemData } from '../../interfaces';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport {OptionGroupComponent} from './option-group/option-group.component';\nimport {SelectItemComponent} from './select-item/select-item.component';\n\n@Component({\n selector: 'desy-select',\n templateUrl: './select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ]\n})\nexport class SelectComponent extends FormFieldComponent<any> implements AfterContentInit, OnChanges {\n\n @Input() name: string;\n @Input() items: SelectItemData[];\n @Input() describedBy?: string;\n\n\n // form group class - asignar clases a la etiqueta desy-select\n @HostBinding('class.c-form-group') cfg = true;\n @HostBinding('class.c-form-group--error') cfgr: boolean;\n @Input() @HostBinding('class') formGroupClasses: any;\n\n @Input() classes: string;\n\n @ContentChildren(SelectItemComponent) itemComponents: QueryList<SelectItemComponent>;\n contentInit = false;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\n }\n\n ngAfterContentInit(): void {\n this.contentInit = true;\n if (!this.value) {\n const items = this.getItems();\n const itemSelected = items?.find(item => item.selected);\n if (itemSelected) {\n setTimeout(() => this.writeValue(itemSelected.value));\n }\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.onChange(value);\n }\n\n getItems(): SelectItemData[] {\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\n return items;\n }\n\n isItemSelected(item: SelectItemData): boolean {\n return this.value ? this.value === item.value : item.selected;\n }\n\n isOptionGroup(item: SelectItemData): boolean {\n return item instanceof OptionGroupComponent;\n }\n\n}\n","import { Component, forwardRef, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormFieldComponent } from '../form-field/form-field.component';\n\n@Component({\n selector: 'desy-file-upload',\n templateUrl: './file-upload.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FileUploadComponent),\n }\n ]\n})\nexport class FileUploadComponent extends FormFieldComponent<File> implements ControlValueAccessor, OnChanges {\n\n @Input() name: string;\n @Input() describedBy: string;\n @Input() classes: string;\n @Input() accept: string;\n\n @HostBinding('class.c-form-group') cfg = true;\n @HostBinding('class.c-form-group--error') cfgr: boolean;\n @Input() @HostBinding('class') formGroupClasses: any;\n\n constructor() {\n super();\n }\n/***\n * nos devuelve un array de file : File[]\n * pero solo nos guardamos el primero\n * solo dejamos seleccionar uno\n */\n onInput(value: any): void{\n if (value && value.length > 0 && value[0]){\n this.value = value[0];\n }else {\n this.value = null;\n }\n this.onTouch();\n this.onChange(this.value);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ItemInputGroupData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-input-group-item',\n template: ''\n})\nexport class InputGroupItemComponent implements ItemInputGroupData {\n @Input() classes?: string;\n\n}\n","/**\n * Decorador para controlar los cambios de un input\n * @param callbackName nombre de la función a la que se llamará tras aplicar el cambio\n */\nexport function DesyOnInputChange(callbackName: string): PropertyDecorator {\n return (target: any, propertyKey: string) => {\n const privateKeyName = `_${propertyKey}`;\n\n Object.defineProperty(target, propertyKey, {\n set(value): void {\n this[privateKeyName] = value;\n this[callbackName]();\n },\n get(): any {\n return this[privateKeyName];\n }\n });\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'makeHtmlList'\n})\nexport class MakeHtmlListPipe implements PipeTransform {\n\n transform(classes: string[], valueForEmpty?: string): string|null {\n let filteredList = classes.filter(c => c).join(' ');\n if (filteredList.length === 0 && valueForEmpty) {\n filteredList = valueForEmpty;\n }\n return filteredList;\n }\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\nimport {LabelComponent} from '../../label/label.component';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-input-group-input',\n templateUrl: './input-group-input.component.html',\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupInputComponent)}],\n})\nexport class InputGroupInputComponent extends InputGroupItemComponent {\n\n isSelect = false;\n\n @Input() id?: string;\n @Input() name: string;\n @Input() value?: any;\n @Output() valueChange = new EventEmitter<any>();\n @Input() formGroupClasses?: string;\n\n @Input() type?: string;\n @Input() inputmode?: string;\n @Input() autocomplete?: string;\n @Input() placeholder?: string;\n @Input() pattern?: string;\n @Input() maxlength?: number;\n @Input() disabled?: boolean;\n\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\n\n @DesyContentChild()\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\n\n}\n","import {\n Component,\n ContentChildren,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\nimport {OptionComponent} from '../../select/option/option.component';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {LabelComponent} from '../../label/label.component';\n\n@Component({\n selector: 'desy-input-group-select',\n templateUrl: './input-group-select.component.html',\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupSelectComponent)}],\n})\nexport class InputGroupSelectComponent extends InputGroupItemComponent {\n\n isSelect = true;\n\n @Input() id?: string;\n @Input() name: string;\n @Input() value?: any;\n @Output() valueChange = new EventEmitter<any>();\n @Input() formGroupClasses?: string;\n @Input() disabled?: boolean;\n\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\n @ContentChildren(OptionComponent) selectItemComponentList: QueryList<OptionComponent>;\n\n @DesyContentChild()\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\n\n}\n","import {Component, forwardRef, TemplateRef, ViewChild} from '@angular/core';\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\nimport {ItemDividerInputGroupData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-input-group-divider',\n templateUrl: './input-group-divider.component.html',\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupDividerComponent)}],\n})\nexport class InputGroupDividerComponent extends InputGroupItemComponent implements ItemDividerInputGroupData {\n\n isSelect = false;\n divider = this;\n\n @ViewChild('dividerContent', { static: true }) dividerContent: TemplateRef<any>;\n\n}\n","import {\n AfterContentInit, AfterViewChecked,\n Component,\n ContentChildren, EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n Optional, Output,\n QueryList,\n TemplateRef, ViewChild,\n OnChanges\n} from '@angular/core';\nimport {FieldsetData, LegendData, ItemInputGroupData, LabelData, SelectItemData} from '../../interfaces';\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { LegendComponent } from '../fieldset/legend/legend.component';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport {InputGroupItemComponent} from './input-group-item/input-group-item.component';\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\nimport {InputGroupInputComponent} from './input-group-input/input-group-input.component';\nimport {InputGroupSelectComponent} from './input-group-select/input-group-select.component';\nimport {InputGroupDividerComponent} from './input-group-divider/input-group-divider.component';\nimport {StringUtils} from '../../../shared/utils/string-utils';\n\n@Component({\n selector: 'desy-input-group',\n templateUrl: './input-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputGroupComponent),\n multi: true\n }\n ]\n})\nexport class InputGroupComponent extends FormFieldComponent<any> implements AfterContentInit, AfterViewChecked, OnChanges {\n\n @Input() ngModelGroup: string;\n\n @DesyOnInputChange('onExternalChange')\n @Input() items: ItemInputGroupData[];\n @Output() itemsChange: EventEmitter<ItemInputGroupData[]> = new EventEmitter<ItemInputGroupData[]>();\n\n @DesyOnInputChange('onExternalChange')\n @Input() namePrefix: string;\n @Input() classes: string;\n\n // form group class - asignar clases a la etiqueta desy-input-group\n @HostBinding('class.c-form-group') cfg = true;\n @HostBinding('class.c-form-group--error') cfgr: boolean;\n @Input() @HostBinding('class') formGroupClasses: any;\n\n @Input() errorMessage: string;\n @Input() id: string;\n\n /**\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir objeto FieldsetData (interfaz expuesta)\n * 2) incluir template legend\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\n */\n @Input() fieldsetData: FieldsetData;\n @Input() legendRef: TemplateRef<LegendComponent>;\n @Input() legendData: LegendData;\n @Input() legendText: string;\n\n @ContentChildren(InputGroupItemComponent) itemsComponents: QueryList<InputGroupItemComponent>;\n\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\n\n @DesyContentChild()\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\n\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\n\n private contentInit = false;\n\n constructor(@Optional() public controlContainer: ControlContainer) {\n super();\n }\n\n ngOnChanges(): void {\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\n }\n\n ngAfterContentInit(): void {\n this.contentInit = true;\n }\n\n ngAfterViewChecked(): void {\n const items = this.getItems();\n }\n\n writeValue(value: any): void {\n if (value) {\n this.value = value;\n const items = this.getItems();\n items.forEach(item => {\n const v = this.value[this.getItemName(item)];\n item.value = v ? v : null;\n });\n\n if (this.items) {\n this.itemsChange.emit(this.items);\n }\n }\n this.onChange(value);\n }\n\n onExternalChange(): void {\n if (!this.contentInit) {\n return;\n }\n\n if (!this.value) {\n this.value = {};\n }\n\n const items = this.getItems();\n items.forEach(item => this.value[this.getItemName(item)] = item.value);\n this.onChange(this.value);\n }\n\n onInternalChange(item: ItemInputGroupData, itemValue: any): void {\n const itemName = this.getItemName(item);\n if (!this.value) {\n this.value = {};\n }\n\n if (this.value[itemName] !== itemValue) {\n this.value[itemName] = itemValue;\n this.onChange(this.value);\n\n if (item instanceof InputGroupInputComponent || item instanceof InputGroupSelectComponent) {\n item.valueChange.emit(itemValue);\n }\n\n if (this.items) {\n item.value = itemValue;\n this.itemsChange.emit(this.items);\n }\n }\n }\n\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\n fieldset.caller = this.innerHtml;\n fieldset.errorId = this.getErrorId();\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\n fieldset.role = 'group';\n fieldset.detectChanges();\n }\n\n /*\n * Métodos para proporcionar datos\n */\n getItems(): ItemInputGroupData[] {\n return this.itemsComponents && this.itemsComponents.length ? this.itemsComponents.toArray() : this.items;\n }\n\n getItemLabelRef(item: ItemInputGroupData): TemplateRef<any> {\n return item instanceof InputGroupInputComponent || item instanceof InputGroupSelectComponent ? item.labelRef : null;\n }\n\n getItemLabelData(item: ItemInputGroupData): LabelData {\n return item.labelData ? item.labelData : { text: item.labelText };\n }\n\n hasFieldset(): boolean {\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\n }\n\n hasFieldsetComponent(): boolean {\n return !!this.fieldsetComponent;\n }\n\n hasLegendComponent(): boolean {\n return !!this.legendComponent;\n }\n\n getItemName(item: ItemInputGroupData): string {\n return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;\n }\n\n getItemSelectOptions(item: ItemInputGroupData): SelectItemData[] {\n return item instanceof InputGroupSelectComponent ?\n item.selectItemComponentList.toArray() : item.selectItems;\n }\n\n getItemDividerTemplate(item: ItemInputGroupData): TemplateRef<any> {\n return item.divider instanceof InputGroupDividerComponent ? item.divider.dividerContent : null;\n }\n\n getItemDividerHtml(item: ItemInputGroupData): string {\n return item.divider.html ? item.divider.html : `<p>${ StringUtils.escapeHtml(item.divider.text) }</p>`;\n }\n\n isSelectItem(item: ItemInputGroupData): boolean {\n let hasSelectItems;\n if (item instanceof InputGroupSelectComponent) {\n hasSelectItems = item.selectItemComponentList && item.selectItemComponentList.length > 0;\n } else {\n hasSelectItems = item.selectItems;\n }\n return item.isSelect && hasSelectItems;\n }\n\n hasItemLabel(item: ItemInputGroupData): boolean {\n return !!((item.labelData && (item.labelData.text || item.labelData.html)) || item.labelText);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Host,\n Input,\n OnChanges, OnDestroy, OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {ItemRadioData} from '../../../interfaces';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {LabelComponent} from '../../label/label.component';\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\nimport {RadiosComponent} from '../radios.component';\nimport {animate, animateChild, query, state, style, transition, trigger} from '@angular/animations';\nimport {HintComponent} from '../../hint/hint.component';\n\n\n@Component({\n selector: 'desy-radio-item',\n templateUrl: './radio-item.component.html',\n animations: [\n trigger('displayConditional', [\n state('void', style({\n opacity: '0.0',\n transform: 'scale(0.95)'\n })),\n state('*', style({\n opacity: '1.0',\n transform: 'scale(1.0)'\n })),\n transition(':enter', [\n animate('100ms ease-out')\n ]),\n transition('* => *', [\n query('@*', animateChild(), {optional: true})\n ])\n ])\n ]\n})\nexport class RadioItemComponent extends ContentBaseComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit, ItemRadioData {\n\n @ViewChild('input') inputElement: ElementRef;\n\n @Input() id: string;\n @Input() name: string;\n @Input() value: any;\n @Input() conditional: boolean;\n @Input() disabled: boolean;\n @Input() divider: string;\n @Input() classes: string;\n\n @ContentChildren(LabelComponent) labelComponentList: QueryList<LabelComponent>;\n @ContentChildren(HintComponent) hintComponentList: QueryList<HintComponent>;\n @ContentChildren(ContentComponent) conditionalContentList: QueryList<ContentComponent>;\n\n @Input() checked: boolean;\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\n\n index = 0;\n lastChecked;\n lastValue;\n radioId;\n\n constructor(@Host() private radios: RadiosComponent, private changeDetectorRef: ChangeDetectorRef) {\n super();\n if (!this.radios) {\n throw Error('Radios items must be inside of RadiosComponent');\n }\n }\n\n ngOnInit(): void {\n this.radios.markForUpdateCheckboxIds();\n }\n\n ngOnDestroy(): void {\n this.radios.markForUpdateCheckboxIds();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.checked !== this.lastChecked && this.isInit()) {\n this.setChecked(this.checked);\n this.radios.updateValueFromRadioItems();\n } else if (this.lastValue !== undefined && this.lastValue !== this.value) {\n this.radios.updateValueFromRadioItems();\n }\n this.lastValue = this.value;\n\n if (this.id !== this.radioId) {\n this.radios.markForUpdateCheckboxIds();\n }\n }\n\n ngAfterViewInit(): void {\n this.setChecked(this.checked);\n this.radios.updateValueFromRadioItems();\n }\n\n setChecked(checked: boolean): void {\n this.checked = checked;\n this.lastChecked = checked;\n this.checkedChange.emit(checked);\n this.changeDetectorRef.detectChanges();\n }\n\n /*\n * Funciones para aportar información desde el componente checkboxes que lo contiene\n */\n\n getItemHintId(): string {\n return this.hintComponentList && this.hintComponentList.length > 0 && this.radioId ? this.radioId + '-item-hint' : null;\n }\n\n hasChanged(): void {\n this.setChecked(this.isInputChecked());\n this.radios.updateValueFromRadioItems();\n }\n\n isInit(): boolean {\n return !!this.inputElement;\n }\n\n isInputChecked(): boolean {\n return this.inputElement ? this.inputElement.nativeElement.checked : null;\n }\n\n updateRadioId(index?: number): void {\n if (this.id) {\n this.radioId = this.id;\n } else {\n const idPrefix = this.radios.idPrefix ? this.radios.idPrefix : this.radios.name;\n if (index === 0) {\n this.radioId = idPrefix;\n } else {\n this.radioId = `${idPrefix}-${index}`;\n }\n }\n\n if (this.labelComponentList && this.labelComponentList.length > 0) {\n this.labelComponentList.first.for = this.radioId;\n }\n\n if (this.hintComponentList && this.hintComponentList.length > 0) {\n this.hintComponentList.first.id = this.getItemHintId();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n /*\n * Funciones para aportar información desde el componente checkboxes que lo contiene\n */\n\n hasDividers(): boolean {\n return this.radios.hasDividers;\n }\n\n hasError(): boolean {\n return this.radios.hasErrorsMessage();\n }\n\n getNameRadio(): string {\n return this.radios.name;\n }\n\n getDescribedBy(): string {\n return !this.radios.hasFieldset() ? this.radios.describedBy : null;\n }\n\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n DoCheck,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n QueryList,\n TemplateRef, ViewChild,\n ViewChildren\n} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {FieldsetData, ItemRadioData, LegendData} from '../../interfaces';\nimport {LegendComponent} from '../fieldset/legend/legend.component';\nimport {FormFieldComponent} from '../form-field/form-field.component';\nimport {RadioItemComponent} from './radio-item/radio-item.component';\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\nimport {HintComponent} from '../hint/hint.component';\nimport {ErrorMessageComponent} from '../error-message/error-message.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\n\n@Component({\n selector: 'desy-radios',\n templateUrl: './radios.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadiosComponent),\n multi: true\n }\n ]\n})\nexport class RadiosComponent extends FormFieldComponent<any> implements DoCheck, AfterContentInit {\n \n /**\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir componente FieldsetComponent\n * 2) incluir objeto FieldsetData (interfaz expuesta)\n * 3) incluir componente LegendComponent\n * 4) incluir template legend\n * 5) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\n * 6) incluir legendText - incluir un fieldset con un texto en la legenda\n */\n @Input() fieldsetData: FieldsetData;\n @Input() legendRef: TemplateRef<LegendComponent>;\n @Input() legendData: LegendData;\n @Input() legendText: string;\n \n @DesyOnInputChange('onIdPrefixChange')\n @Input() idPrefix: string;\n \n @DesyOnInputChange('onNameChange')\n @Input() name: string;\n \n @Input() items: ItemRadioData[];\n @Output() itemsChange = new EventEmitter<ItemRadioData[]>();\n \n @Input() formGroupClasses: string;\n @Input() hasDividers: boolean;\n @Input() hasError: boolean;\n @Input() classes: string;\n @Input() describedBy: string;\n \n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\n \n @DesyContentChild()\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\n \n @ContentChildren(RadioItemComponent) radioComponentItems: QueryList<RadioItemComponent>;\n \n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\n @ViewChildren(RadioItemComponent) radioComponentItems2: QueryList<RadioItemComponent>;\n \n private nextValue = null;\n private updateChekboxIds = false;\n private contentInit = false;\n \n ngDoCheck(): void {\n if (this.nextValue !== null && (this.nextValue !== '' || (this.value && this.value !== ''))) {\n this.value = this.nextValue;\n this.nextValue = null;\n const updateItems = this.updateRadioItemsChecked();\n setTimeout(() => {\n this.onChange(this.value);\n if (updateItems && this.items && this.items.length > 0) {\n this.itemsChange.emit(this.items);\n }\n });\n }\n\n if (this.updateChekboxIds) {\n const checkboxItems = this.getRadioItems();\n if (checkboxItems.length > 0) {\n checkboxItems.forEach((item, index) => item.updateRadioId(index));\n }\n this.updateChekboxIds = false;\n }\n }\n\n ngAfterContentInit(): void {\n\n this.contentInit = true;\n }\n\n /**\n * Se sobrescribe el writeValue de FormField para gestionar en un único punto el valor de value\n * @param value nuevo valor a establecer\n */\n writeValue(value: any[]): void {\n if (value) {\n this.nextValue = value;\n }\n }\n\n onIdPrefixChange(): void {\n if (this.contentInit) {\n this.markForUpdateCheckboxIds();\n }\n this.propagateNewIdPrefixValue();\n }\n\n\n onNameChange(): void {\n\n if (this.contentInit) {\n this.markForUpdateCheckboxIds();\n }\n\n this.propagateNewIdPrefixValue();\n }\n\n /**\n * Actualiza los componentes externos que tienen valores dependientes de idPrefix\n * @private\n */\n private propagateNewIdPrefixValue(): void {\n if (this.hintComponent) {\n this.overrideHintParams(this.hintComponent);\n }\n\n if (this.errorMessageComponent) {\n this.overrideErrorMessageParams(this.errorMessageComponent);\n }\n\n // Al hacer el override de hint o error ya se aplica sobre el fieldset, por lo que sólo es necesario aplicarlo directamente\n // sobre el fieldset cuando ninguno de estos existe\n if (!this.hintComponent && !this.errorMessageComponent && this.fieldsetComponent) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n markForUpdateCheckboxIds(): void {\n this.updateChekboxIds = true;\n }\n\n /**\n * Actualiza el estado de los items según el valor asignado al componente\n */\n private updateRadioItemsChecked(): boolean {\n let itemsUpdated = false;\n const checkboxItems = this.getRadioItems();\n if (checkboxItems.length > 0) {\n checkboxItems.forEach(item => {\n if (item.value === this.value && !item.lastChecked) {\n item.setChecked(true);\n itemsUpdated = true;\n } else if (item.value !== this.value && item.lastChecked) {\n item.setChecked(false);\n itemsUpdated = true;\n }\n });\n }\n return itemsUpdated;\n }\n\n /**\n * Actualiza el valor cuando se produce un cambio en los items, tanto interno como externo\n */\n updateValueFromRadioItems(): void {\n\n /*\n * Se realiza dentro de un timeout porque, aunque los componentes items se hayan inicializado, en este componente puede ser que todavía\n * no se detecten, y por tanto el getCheckboxItems no devuelva la lista correcta.\n */\n setTimeout( () => {\n const items = this.getRadioItems();\n if (items && items.length > 0 && items.findIndex(item => !item.isInit() && !item.divider) < 0) {\n const checkedItem = items.find(item => item.isInputChecked() && !item.divider);\n this.nextValue = checkedItem ? checkedItem.value : null;\n }\n });\n\n if (this.items && this.items.length > 0) {\n this.itemsChange.emit(this.items);\n }\n }\n\n /*\n * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage\n */\n\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\n fieldset.caller = this.innerHtml;\n fieldset.errorId = this.getErrorId();\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\n fieldset.detectChanges();\n }\n\n overrideHintParams(hint: HintComponent): void {\n hint.id = this.getHintId();\n hint.detectChanges();\n\n if (this.hasFieldsetComponent()) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n overrideErrorMessageParams(errorMessage: ErrorMessageComponent): void {\n errorMessage.id = this.getErrorId();\n errorMessage.detectChanges();\n\n if (this.hasFieldsetComponent()) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n onDeleteHint(): void {\n if (this.hasFieldsetComponent()) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n onDeleteErrorMessage(): void {\n if (this.hasFieldsetComponent()) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n\n /*\n * Funciones para recuperar valores comunes\n */\n\n hasFieldset(): boolean {\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData ||\n (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\n }\n\n hasFieldsetComponent(): boolean {\n return !!this.fieldsetComponent;\n }\n\n hasLegendComponent(): boolean {\n return !!this.legendComponent;\n }\n\n getErrorId(): string {\n return this.hasErrorsMessage() ? this.getIdPrefix() + '-error' : null;\n }\n\n getHintId(): string {\n return this.hasHint() ? this.getIdPrefix() + '-hint' : null;\n }\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : this.name;\n }\n\n getRadioItems(): RadioItemComponent[] {\n let checkboxItems = [];\n if (this.radioComponentItems && this.radioComponentItems.length > 0) {\n checkboxItems = this.radioComponentItems.toArray();\n } else if (this.radioComponentItems2 && this.radioComponentItems2.length > 0) {\n checkboxItems = this.radioComponentItems2.toArray();\n }\n return checkboxItems;\n }\n}\n","import {\n AfterViewInit, ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Host,\n HostBinding,\n Input, OnChanges, OnDestroy, OnInit,\n Output, QueryList, SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {ItemCheckboxData} from '../../../interfaces';\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\nimport {animate, animateChild, query, state, style, transition, trigger} from '@angular/animations';\nimport {LabelComponent} from '../../label/label.component';\nimport {HintComponent} from '../../hint/hint.component';\nimport {CheckboxesComponent} from '../checkboxes.component';\nimport {AccessibilityComponent} from '../../../../shared/components';\nimport {DesyOnInputChange} from \"../../../../shared/decorators/desy-on-input-change.decorator\";\n\n@Component({\n selector: 'desy-checkbox-item',\n templateUrl: './checkbox-item.component.html',\n animations: [\n trigger('displayConditional', [\n state('void', style({\n opacity: '0.0',\n transform: 'scale(0.95)'\n })),\n state('*', style({\n opacity: '1.0',\n transform: 'scale(1.0)'\n })),\n transition(':enter', [\n animate('100ms ease-out')\n ]),\n transition('* => *', [\n query('@*', animateChild(), {optional: true})\n ])\n ])\n ]\n})\nexport class CheckboxItemComponent extends AccessibilityComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit, ItemCheckboxData {\n\n @ViewChild('input') inputElement: ElementRef;\n\n @Input() id: string;\n @Input() value: any;\n @Input() name: string;\n @Input() conditional: boolean;\n @Input() disabled: boolean;\n @Input() isIndeterminate: boolean;\n\n @DesyOnInputChange('setIndeterminateStatus')\n @Input() indeterminateChecked: boolean;\n @Input() @HostBinding('class') classes: any;\n\n @ContentChildren(LabelComponent) labelComponentList: QueryList<LabelComponent>;\n @ContentChildren(HintComponent) hintComponentList: QueryList<HintComponent>;\n @ContentChildren(ContentComponent) conditionalContentList: QueryList<ContentComponent>;\n\n @Input() checked: boolean;\n\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() indeterminateChange: EventEmitter<any> = new EventEmitter<any>();\n\n lastChecked;\n lastIndeterminate;\n lastValue;\n checkboxId;\n\n constructor(@Host() private checkboxes: CheckboxesComponent, private changeDetectorRef: ChangeDetectorRef) {\n super();\n if (!this.checkboxes) {\n throw Error('Checkbox items must be inside of CheckboxesComponent');\n }\n }\n\n ngOnInit(): void {\n this.checkboxes.markForUpdateCheckboxIds();\n }\n\n ngOnDestroy(): void {\n this.checkboxes.markForUpdateCheckboxIds();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classes = this.checkboxes.hasDividers ? this.classes += ' border-t border-b border-neutral-base -mb-px' : this.classes;\n if (this.checked !== this.lastChecked && this.isInit()) {\n this.setChecked(this.checked);\n this.checkboxes.updateValueFromCheckboxItems();\n } else if (this.lastValue !== undefined && this.lastValue !== this.value) {\n this.checkboxes.updateValueFromCheckboxItems();\n }\n\n if(this.indeterminateChecked !== this.lastIndeterminate && this.isInit()){\n this.setIndeterminateChecked(this.indeterminateChecked);\n this.checkboxes.updateValueFromCheckboxItems();\n }\n\n\n this.lastValue = this.value;\n\n if (this.id !== this.checkboxId) {\n this.checkboxes.markForUpdateCheckboxIds();\n }\n }\n\n ngAfterViewInit(): void {\n this.setChecked(this.checked);\n this.setIndeterminateChecked(this.indeterminateChecked);\n this.checkboxes.updateValueFromCheckboxItems();\n }\n\n getItemHintId(): string {\n return this.hintComponentList && this.hintComponentList.length > 0 && this.checkboxId ? this.checkboxId + '-item-hint' : null;\n }\n\n hasChanged(): void {\n // Se establece el cambio a visualizar en el input\n const input = this.inputElement.nativeElement;\n if (this.isIndeterminate) {\n if (input.readOnly) {\n input.checked = false;\n input.readOnly = false;\n } else if (!input.checked) {\n input.readOnly = true;\n input.indeterminate = true;\n }\n }\n this.setChecked(input.checked);\n this.setIndeterminateChecked(input.indeterminate);\n this.checkboxes.updateValueFromCheckboxItems();\n }\n\n setChecked(checked: boolean): void {\n this.checked = checked;\n this.lastChecked = checked;\n this.checkedChange.emit(checked);\n this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado\n }\n\n setIndeterminateChecked(indeterminateChecked: boolean): void {\n this.indeterminateChecked = indeterminateChecked;\n this.lastIndeterminate = indeterminateChecked;\n this.indeterminateChange.emit(indeterminateChecked);\n this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado\n }\n\n setIndeterminateStatus(): void {\n const input = this.inputElement?.nativeElement;\n if (input) {\n if (this.indeterminateChecked) {\n input.readOnly = true;\n input.indeterminate = true;\n } else if (input.readOnly) {\n input.readOnly = false;\n input.indeterminate = false;\n }\n }\n }\n\n isInit(): boolean {\n return !!this.inputElement;\n }\n\n getValue(): any {\n const input = this.inputElement.nativeElement;\n return input.checked || input.indeterminate ? this.value : null;\n }\n\n updateCheckboxId(index?: number): void {\n if (this.id) {\n this.checkboxId = this.id;\n } else {\n const idPrefix = this.checkboxes.idPrefix ? this.checkboxes.idPrefix : this.checkboxes.name;\n if (index === 0) {\n this.checkboxId = idPrefix;\n } else {\n this.checkboxId = `${idPrefix}-${index}`;\n }\n }\n\n if (this.labelComponentList && this.labelComponentList.length > 0) {\n this.labelComponentList.first.for = this.checkboxId;\n }\n\n if (this.hintComponentList && this.hintComponentList.length > 0) {\n this.hintComponentList.first.id = this.getItemHintId();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n /*\n * Funciones para aportar información desde el componente checkboxes que lo contiene\n */\n\n hasDividers(): boolean {\n return this.checkboxes.hasDividers; \n }\n\n hasError(): boolean {\n return this.checkboxes.hasErrorsMessage();\n }\n\n getNameCheckbox(): string {\n return this.checkboxes.name;\n }\n\n getDescribedBy(): string {\n return !this.checkboxes.hasFieldset() ? this.checkboxes.describedBy : null;\n }\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren, DoCheck, EventEmitter,\n forwardRef,\n Input, Output,\n QueryList,\n SimpleChanges,\n TemplateRef, ViewChild, ViewChildren\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { FieldsetData, LegendData, ItemCheckboxData } from '../../interfaces';\nimport { LegendComponent } from '../fieldset/legend/legend.component';\nimport {CheckboxItemComponent} from './checkbox-item/checkbox-item.component';\nimport {HintComponent} from '../hint/hint.component';\nimport {ErrorMessageComponent} from '../error-message/error-message.component';\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\n\n\n@Component({\n selector: 'desy-checkboxes',\n templateUrl: './checkboxes.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxesComponent),\n multi: true\n }\n ]\n})\nexport class CheckboxesComponent extends FormFieldComponent<any[]> implements AfterContentInit, DoCheck {\n \n /**\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir componente FieldsetComponent\n * 2) incluir objeto FieldsetData (interfaz expuesta)\n * 3) incluir componente LegendComponent\n * 4) incluir template legend\n * 5) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\n * 6) incluir legendText - incluir un fieldset con un texto en la legenda\n */\n @Input() fieldsetData: FieldsetData;\n @Input() legendRef: TemplateRef<LegendComponent>;\n @Input() legendData: LegendData;\n @Input() legendText: string;\n\n @DesyOnInputChange('onIdPrefixChange')\n @Input() idPrefix: string;\n \n @DesyOnInputChange('onNameChange')\n @Input() name: string;\n \n @Input() items: ItemCheckboxData[];\n @Output() itemsChange = new EventEmitter<ItemCheckboxData[]>();\n \n @Input() formGroupClasses: string;\n @Input() hasDividers: boolean;\n @Input() hasError: boolean;\n @Input() classes: string;\n @Input() describedBy: string;\n \n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\n \n @DesyContentChild()\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\n \n @ContentChildren(CheckboxItemComponent) checkboxComponentItems: QueryList<CheckboxItemComponent>;\n \n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\n @ViewChildren(CheckboxItemComponent) checkboxComponentItems2: QueryList<CheckboxItemComponent>;\n \n private nextValue = null;\n private updateChekboxIds = false;\n private contentInit = false;\n \n ngDoCheck(): void {\n if (this.nextValue !== null && (this.nextValue.length > 0 || (this.value && this.value.length > 0))) {\n this.value = this.nextValue;\n this.nextValue = null;\n this.updateCheckboxItemsChecked();\n setTimeout(() => {\n this.onChange(this.value);\n if (this.items && this.items.length > 0) {\n this.itemsChange.emit(this.items);\n }\n });\n }\n\n if (this.updateChekboxIds) {\n const checkboxItems = this.getCheckboxItems();\n if (checkboxItems.length > 0) {\n checkboxItems.forEach((item, index) => item.updateCheckboxId(index));\n }\n this.updateChekboxIds = false;\n }\n }\n\n ngAfterContentInit(): void {\n\n this.contentInit = true;\n }\n\n /**\n * Se sobrescribe el writeValue de FormField para gestionar en un único punto el valor de value\n * @param value nuevo valor a establecer\n */\n writeValue(value: any[]): void {\n if (value) {\n this.nextValue = value;\n }\n }\n\n onIdPrefixChange(): void {\n if (this.contentInit) {\n this.markForUpdateCheckboxIds();\n }\n this.propagateNewIdPrefixValue();\n }\n\n\n onNameChange(): void {\n\n if (this.contentInit) {\n this.markForUpdateCheckboxIds();\n }\n\n this.propagateNewIdPrefixValue();\n }\n\n /**\n * Actualiza los componentes externos que tienen valores dependientes de idPrefix\n * @private\n */\n private propagateNewIdPrefixValue(): void {\n if (this.hintComponent) {\n this.overrideHintParams(this.hintComponent);\n }\n\n if (this.errorMessageComponent) {\n this.overrideErrorMessageParams(this.errorMessageComponent);\n }\n\n // Al hacer el override de hint o error ya se aplica sobre el fieldset, por lo que sólo es necesario aplicarlo directamente\n // sobre el fieldset cuando ninguno de estos existe\n if (!this.hintComponent && !this.errorMessageComponent && this.fieldsetComponent) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n markForUpdateCheckboxIds(): void {\n this.updateChekboxIds = true;\n }\n\n\n /**\n * Actualiza el estado de los items según el valor asignado al componente\n */\n private updateCheckboxItemsChecked(): void {\n const checkboxItems = this.getCheckboxItems();\n if (checkboxItems.length > 0) {\n checkboxItems.forEach(item => {\n const itemChecked = Array.isArray(this.value) ? this.value.findIndex(v => v === item.value) > -1 : this.value === item.value;\n if (itemChecked !== item.lastChecked) {\n item.setChecked(itemChecked);\n }\n });\n }\n }\n\n /**\n * Actualiza el valor cuando se produce un cambio en los items, tanto interno como externo\n */\n updateValueFromCheckboxItems(): void {\n\n /*\n * Se realiza dentro de un timeout porque, aunque los componentes items se hayan inicializado, en este componente puede ser que todavía\n * no se detecten, y por tanto el getCheckboxItems no devuelva la lista correcta.\n */\n setTimeout( () => {\n const items = this.getCheckboxItems();\n if (items && items.length > 0 && items.findIndex(item => !item.isInit()) < 0) {\n this.nextValue = items.filter(item => item.checked).map(item => item.getValue());\n }\n });\n\n if (this.items && this.items.length > 0) {\n this.itemsChange.emit(this.items);\n }\n }\n\n /*\n * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage\n */\n\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\n fieldset.caller = this.innerHtml;\n fieldset.errorId = this.getErrorId();\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\n fieldset.detectChanges();\n }\n\n overrideHintParams(hint: HintComponent): void {\n hint.id = this.getHintId();\n hint.detectChanges();\n\n if (this.hasFieldsetComponent()) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n overrideErrorMessageParams(errorMessage: ErrorMessageComponent): void {\n errorMessage.id = this.getErrorId();\n errorMessage.detectChanges();\n\n if (this.hasFieldsetComponent()) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n onDeleteHint(): void {\n if (this.hasFieldsetComponent()) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n onDeleteErrorMessage(): void {\n if (this.hasFieldsetComponent()) {\n this.overrideFieldsetParams(this.fieldsetComponent);\n }\n }\n\n\n /*\n * Funciones para recuperar valores comunes\n */\n\n\n hasFieldset(): boolean {\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData ||\n (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\n }\n\n hasFieldsetComponent(): boolean {\n return !!this.fieldsetComponent;\n }\n\n hasLegendComponent(): boolean {\n return !!this.legendComponent;\n }\n\n getErrorId(): string {\n return this.hasErrorsMessage() ? this.getIdPrefix() + '-error' : undefined;\n }\n\n getHintId(): string {\n return this.hasHint() ? this.getIdPrefix() + '-hint' : undefined;\n }\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : this.name;\n }\n\n getCheckboxItems(): CheckboxItemComponent[] {\n let checkboxItems = [];\n if (this.checkboxComponentItems && this.checkboxComponentItems.length > 0) {\n checkboxItems = this.checkboxComponentItems.toArray();\n } else if (this.checkboxComponentItems2 && this.checkboxComponentItems2.length > 0) {\n checkboxItems = this.checkboxComponentItems2.toArray();\n }\n return checkboxItems;\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {ItemDateInputData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-date-input-item',\n template: ''\n})\nexport class DateInputItemComponent implements ItemDateInputData {\n @Input() classes?: string;\n\n}\n","import {Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\nimport { ItemDateInputData } from '../../../interfaces';\nimport { LabelData } from '../../../interfaces';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {LabelComponent} from '../../label/label.component';\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\n\n@Component({\n selector: 'desy-input-day',\n templateUrl: './date-input-day.component.html',\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputDayComponent)}],\n})\nexport class DateInputDayComponent extends DateInputItemComponent implements ItemDateInputData {\n @Input() id: string;\n @Input() name: string;\n @Input() labelText: string;\n @Input() labelData: LabelData;\n @Input() disabled: boolean;\n @Input() hasErrors: boolean;\n @Input() value: any;\n @Input() autocomplete: string;\n @Input() pattern: string;\n @Input() classes: string;\n @Input() maxlength: number;\n\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\n\n @DesyContentChild()\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\n\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\n\n}\n","import {Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\nimport { ItemDateInputData } from '../../../interfaces';\nimport { LabelData } from '../../../interfaces';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {LabelComponent} from '../../label/label.component';\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\n\n@Component({\n selector: 'desy-input-month',\n templateUrl: './date-input-month.component.html',\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputMonthComponent)}],\n})\nexport class DateInputMonthComponent extends DateInputItemComponent implements ItemDateInputData {\n @Input() id: string;\n @Input() name: string;\n @Input() labelText: string;\n @Input() labelData: LabelData;\n @Input() disabled: boolean;\n @Input() hasErrors: boolean;\n @Input() value: any;\n @Input() autocomplete: string;\n @Input() pattern: string;\n @Input() classes: string;\n @Input() maxlength: number;\n\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\n\n @DesyContentChild()\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\n\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\n\n}\n","import {Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\nimport { ItemDateInputData } from '../../../interfaces';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {LabelComponent} from '../../label/label.component';\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\n\n@Component({\n selector: 'desy-input-year',\n templateUrl: './date-input-year.component.html',\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputYearComponent)}],\n})\nexport class DateInputYearComponent extends DateInputItemComponent implements ItemDateInputData {\n @Input() id: string;\n @Input() name: string;\n @Input() disabled: boolean;\n @Input() hasErrors: boolean;\n @Input() value: any;\n @Input() autocomplete: string;\n @Input() pattern: string;\n @Input() classes: string;\n @Input() maxlength: number;\n\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\n\n @DesyContentChild()\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\n\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\n\n}\n","import {Component, forwardRef, TemplateRef, ViewChild} from '@angular/core';\nimport { ItemDividerDateInputData } from '../../../interfaces/item-divider-date-input-data';\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\n\n@Component({\n selector: 'desy-date-input-divider',\n templateUrl: './date-input-divider.component.html',\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputDividerComponent)}],\n})\nexport class DateInputDividerComponent extends DateInputItemComponent implements ItemDividerDateInputData {\n\n divider = this;\n\n @ViewChild('dividerContent', { static: true }) dividerContent: TemplateRef<any>;\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren, EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n Optional, Output,\n QueryList,\n TemplateRef,\n ViewChild,\n HostBinding,\n SimpleChanges\n} from '@angular/core';\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { FieldsetData, LegendData, ItemDateInputData, LabelData } from '../../interfaces';\nimport { LegendComponent } from '../fieldset/legend/legend.component';\nimport { FieldsetComponent } from '../fieldset/fieldset.component';\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\nimport { DateInputDayComponent } from './date-input-day/date-input-day.component';\nimport { DateInputMonthComponent } from './date-input-month/date-input-month.component';\nimport { DateInputYearComponent } from './date-input-year/date-input-year.component';\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\nimport { DateInputDividerComponent } from './date-input-divider/date-input-divider.component';\nimport { StringUtils } from '../../../shared/utils/string-utils';\nimport { DateInputItemComponent } from './date-input-item/date-input-item.component';\n\n@Component({\n selector: 'desy-date-input',\n templateUrl: './date-input.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateInputComponent),\n multi: true\n }\n ]\n})\nexport class DateInputComponent extends FormFieldComponent<any> implements AfterContentInit, OnChanges {\n\n private static defaultItems = [\n {\n name: 'day',\n classes: 'w-14',\n maxlength: 2\n },\n {\n name: 'month',\n classes: 'w-14',\n maxlength: 2\n },\n {\n name: 'year',\n classes: 'w-20',\n maxlength: 4\n }\n ];\n\n @Input() ngModelGroup: string;\n\n @DesyOnInputChange('onExternalChange')\n @Input() items: ItemDateInputData[];\n @Output() itemsChange: EventEmitter<ItemDateInputData[]> = new EventEmitter<ItemDateInputData[]>();\n\n @DesyOnInputChange('onExternalChange')\n @Input() namePrefix: string;\n @Input() classes: string;\n @Input() errorMessage: string;\n @Input() id: string;\n // form group class - asignar clases a la etiqueta desy-input\n @HostBinding('class.c-form-group') cfg = true;\n @HostBinding('class.c-form-group--error') cfgr: boolean;\n @Input() @HostBinding('class') formGroupClasses: any;\n\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\n\n @DesyContentChild()\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\n\n @ContentChildren(DateInputItemComponent) dateInputItemComponents: QueryList<DateInputItemComponent>;\n\n /**\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir objeto FieldsetData (interfaz expuesta)\n * 2) incluir template legend\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\n */\n @Input() fieldsetData: FieldsetData;\n @Input() legendRef: TemplateRef<LegendComponent>;\n @Input() legendData: LegendData;\n @Input() legendText: string;\n\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\n\n private contentInit = false;\n\n constructor(@Optional() public controlContainer: ControlContainer) {\n super();\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');\n }\n\n ngAfterContentInit(): void {\n this.contentInit = true;\n }\n\n initDefaultItems(): void {\n if (!this.items) {\n this.items = [\n {\n name: 'día',\n classes: 'w-14',\n maxlength: 2\n },\n {\n name: 'mes',\n classes: 'w-14',\n maxlength: 2\n },\n {\n name: 'año',\n classes: 'w-20',\n maxlength: 4\n }\n ];\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n if (this.value) {\n const items = this.getItems();\n items.forEach(item => item.value = this.value[this.getItemName(item)]);\n\n if (this.items) {\n this.itemsChange.emit(this.items);\n }\n }\n this.onChange(value);\n }\n\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\n fieldset.caller = this.innerHtml;\n fieldset.errorId = this.getErrorId();\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\n fieldset.role = 'group';\n fieldset.detectChanges();\n }\n\n onExternalChange(): void {\n if (!this.contentInit) {\n return;\n }\n\n if (!this.value) {\n this.value = {};\n }\n\n const items = this.getItems();\n items.forEach(item => this.value[this.getItemName(item)] = item.value);\n const newVal = {};\n Object.assign(newVal, this.value);\n this.onChange(newVal);\n }\n\n onInternalChange(item: ItemDateInputData, itemValue: number): void {\n const itemName = this.getItemName(item);\n if (!this.value) {\n this.value = {};\n }\n\n if (this.value[itemName] !== itemValue) {\n this.value[itemName] = itemValue ? +itemValue : undefined;\n const newVal = {};\n Object.assign(newVal, this.value);\n this.onChange(newVal);\n if (item instanceof DateInputDayComponent || item instanceof DateInputMonthComponent || item instanceof DateInputYearComponent) {\n item.valueChange.emit(itemValue);\n }\n\n if (this.items) {\n item.value = itemValue;\n this.itemsChange.emit(this.items);\n }\n }\n }\n\n hasFieldset(): boolean {\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\n }\n\n hasFieldsetComponent(): boolean {\n return !!this.fieldsetComponent;\n }\n\n hasLegendComponent(): boolean {\n return !!this.legendComponent;\n }\n\n hasErrorMessageComponent(): boolean {\n return !!this.errorMessageComponent;\n }\n\n getItemName(item: ItemDateInputData): string {\n return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;\n }\n\n getItemLabel(item: ItemDateInputData): LabelData {\n let labelData: LabelData;\n if (item.labelData && (item.labelData.text || item.labelData.html)) {\n labelData = item.labelData;\n } else {\n labelData = {\n text: item.labelText ? item.labelText : (item.name ? item.name.toUpperCase() : null)\n };\n }\n return labelData;\n }\n\n getItemLabelRef(item: ItemDateInputData): TemplateRef<any> {\n return item instanceof DateInputDayComponent || item instanceof DateInputMonthComponent || item instanceof DateInputYearComponent ?\n item.labelRef : null;\n }\n\n getItems(): ItemDateInputData[] {\n let items;\n if (this.dateInputItemComponents && this.dateInputItemComponents.length > 0) {\n items = this.dateInputItemComponents.toArray();\n } else if (this.items) {\n items = this.items;\n } else if (this.contentInit) {\n items = DateInputComponent.defaultItems;\n } else {\n items = [];\n }\n\n\n return items;\n }\n\n getItemDividerTemplate(item: ItemDateInputData): TemplateRef<any> {\n return item.divider instanceof DateInputDividerComponent ? item.divider.dividerContent : null;\n }\n getItemDividerHtml(item: ItemDateInputData): string {\n return item.divider.html ? item.divider.html : `<p>${ StringUtils.escapeHtml(item.divider.text) }</p>`;\n }\n\n}\n","import {\n Component,\n ContentChildren,\n DoCheck,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n Output, QueryList, SimpleChanges\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { ButtonComponent } from '../../../desy-buttons/components/button/button.component';\n\n@Component({\n selector: 'desy-search-bar',\n templateUrl: './search-bar.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SearchBarComponent),\n multi: true\n }\n ]\n})\nexport class SearchBarComponent extends FormFieldComponent<string> implements DoCheck { \n \n @ContentChildren(ButtonComponent) button: QueryList<ButtonComponent>;\n\n @Input() describedBy: string;\n @HostBinding('class') hasButtonClass: string;\n @Input() classes: any;\n @Input() buttonClasses: string;\n @Input() placeholder: string;\n @Output() clickEvent = new EventEmitter();\n \n value = '';\n \n onClick(event: any): void {\n if (!this.disabled) {\n this.clickEvent.emit(event);\n }\n }\n\n hasButton(): boolean {\n return this.button && this.button.length > 0;\n }\n\n ngDoCheck(): void {\n this.hasButtonClass = this.hasButton() ? 'relative flex flex-wrap items-end' : 'relative';\n } \n}\n","import {\n Component,\n Input,\n} from '@angular/core';\nimport {ITreeItem} from \"../interfaces/itree-item\";\nimport {ContentBaseComponent} from \"../../../../shared/components\";\n\n@Component({\n selector: 'desy-tree-sub',\n templateUrl: './tree-sub.component.html'\n})\nexport class TreeSubComponent extends ContentBaseComponent {\n\n @Input() classes: string;\n\n itemList: ITreeItem[];\n\n}\n","export class ITreeItem {\n id: string;\n subLevel: number;\n defaultId: string;\n}\n","export class SearchUtils {\n\n /**\n * Comprueba si una cadena de texto (target) contiene cualquier palabra de otro texto (text)\n * @param target - Texto en el que buscar\n * @param text - Texto a buscar\n * @param fullWord - Indica si las palabras del texto a buscar deben aparecer enteras\n */\n public static containsAnyWordFrom(target: string, text: string, fullWord?: boolean): boolean {\n let words: string[] = [];\n let includes = false;\n const simplifiedTarget = this.getSimplifiedString(target);\n\n if (text && text.split(' ').length > 1) {\n words = text.split(' ');\n }\n words.push(text);\n\n words.forEach(word => {\n if (simplifiedTarget && word) {\n if ((fullWord && simplifiedTarget === this.getSimplifiedString(word))\n || (!fullWord && simplifiedTarget.includes(this.getSimplifiedString(word)))) {\n includes = true;\n }\n }\n });\n\n return includes;\n }\n\n /**\n * Convierte a mayúsculas, elimina espacios y reemplaza/elimina caracteres especiales para realizar comparaciones más tolerantes\n * @param str - cadena de entrada\n */\n private static getSimplifiedString(str: string): string {\n let res = str;\n if (str) {\n res = str.toLocaleUpperCase().trim();\n // acentos\n res = res.replace(/Á/g, 'A');\n res = res.replace(/É/g, 'E');\n res = res.replace(/Í/g, 'I');\n res = res.replace(/Ó/g, 'O');\n res = res.replace(/Ú/g, 'U');\n res = res.replace(/À/g, 'A');\n res = res.replace(/È/g, 'E');\n res = res.replace(/Ì/g, 'I');\n res = res.replace(/Ò/g, 'O');\n res = res.replace(/Ù/g, 'U');\n res = res.replace(/Ä/g, 'A');\n res = res.replace(/Ë/g, 'E');\n res = res.replace(/Ï/g, 'I');\n res = res.replace(/Ö/g, 'O');\n res = res.replace(/Ü/g, 'U');\n\n res = res.replace('Á', 'A');\n res = res.replace('É', 'E');\n res = res.replace('Í', 'I');\n res = res.replace('Ó', 'O');\n res = res.replace('Ú', 'U');\n res = res.replace('À', 'A');\n res = res.replace('È', 'E');\n res = res.replace('Ì', 'I');\n res = res.replace('Ò', 'O');\n res = res.replace('Ù', 'U');\n res = res.replace('Ä', 'A');\n res = res.replace('Ë', 'E');\n res = res.replace('Ï', 'I');\n res = res.replace('Ö', 'O');\n res = res.replace('Ü', 'U');\n\n // signos puntuacion\n res = res.replace(',', '');\n res = res.replace('.', '');\n res = res.replace('\\'', '');\n res = res.replace('\"', '');\n res = res.replace(/\\,/g, '');\n res = res.replace(/\\./g, '');\n res = res.replace(/\\'/g, '');\n res = res.replace(/\\\"/g, '');\n }\n\n return res;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {LabelComponent} from \"../../label/label.component\";\nimport {HintComponent} from \"../../hint/hint.component\";\nimport {DesyOnInputChange} from \"../../../../shared/decorators/desy-on-input-change.decorator\";\nimport {SearchUtils} from \"../../../../shared/utils/search-utils\";\nimport {AccessibilityComponent} from \"../../../../shared/components\";\n\n@Component({\n selector: 'desy-tree-checkbox',\n templateUrl: './tree-checkbox.component.html'\n})\nexport class TreeCheckboxComponent extends AccessibilityComponent implements OnInit {\n\n @ViewChild('input', { static: true }) inputElement: ElementRef;\n @ViewChild('contentWrapper', { static: true }) contentWrapper: ElementRef;\n\n @DesyOnInputChange('onIdChange')\n @Input() id: string;\n @Input() name: string;\n @Input() type: 'radio'|'checkbox'|null|undefined;\n @Input() classes: string;\n\n @Input() value: any;\n\n @Input() checked: boolean;\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() isIndeterminate: boolean;\n\n @DesyOnInputChange('setIndeterminateStatus')\n @Input() indeterminateChecked: boolean;\n @Output() indeterminateCheckedChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() disabled: boolean;\n @Input() hasDividers: boolean;\n\n @DesyOnInputChange('onDescribedByChange')\n @Input() describedBy: string;\n @Input() hasError = false;\n\n @DesyOnInputChange('overrideLabelParams')\n @Input() labelComponent: LabelComponent;\n\n @DesyOnInputChange('overrideHintParams')\n @Input() hintComponent: HintComponent;\n\n itemDescribedBy: string;\n\n private _lastIndeterminate;\n private _hasInit = false;\n\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n this._hasInit = true;\n this.onDescribedByChange();\n }\n\n detectChanges(): void {\n this.changeDetector.detectChanges();\n }\n\n hasChanged(): void {\n if (this._hasInit) {\n\n const input = this.inputElement.nativeElement;\n\n // Se establece el cambio a visualizar en el input\n if (this.isIndeterminate) {\n if (input.readOnly) {\n input.checked = false;\n input.readOnly = false;\n } else if (!input.checked) {\n input.readOnly = true;\n input.indeterminate = true;\n }\n }\n\n this.setIndeterminateChecked(input.indeterminate);\n this.checkedChange.emit(input.checked);\n }\n }\n\n onIdChange(): void {\n this.overrideLabelParams();\n this.overrideHintParams();\n }\n\n setIndeterminateStatus(): void {\n const input = this.inputElement?.nativeElement;\n if (input) {\n if (this.indeterminateChecked) {\n input.readOnly = true;\n input.indeterminate = true;\n } else if (input.readOnly) {\n input.readOnly = false;\n input.indeterminate = false;\n }\n }\n }\n\n setIndeterminateChecked(indeterminateChecked: boolean): void {\n this.indeterminateChecked = indeterminateChecked;\n this._lastIndeterminate = indeterminateChecked;\n this.indeterminateCheckedChange.emit(indeterminateChecked);\n this.changeDetector.detectChanges(); // Avisa al elemento input para que actualice su estado\n }\n\n focus(): void {\n this.inputElement.nativeElement.focus();\n }\n\n matchesText(value: string): boolean {\n const checkboxText = this.contentWrapper.nativeElement.textContent;\n return SearchUtils.containsAnyWordFrom(checkboxText, value);\n }\n\n preventDefault(event: KeyboardEvent): void {\n event.preventDefault();\n }\n\n getHintId(): string {\n return this.hintComponent ? this.hintComponent.id : '';\n }\n\n overrideLabelParams(): void {\n if (this.labelComponent) {\n this.labelComponent.for = this.id + '-input';\n if (!this.labelComponent.classes) {\n this.labelComponent.classes = 'block relative -top-xs -left-8 pl-8 py-xs';\n }\n this.labelComponent.detectChanges();\n }\n }\n\n overrideHintParams(): void {\n if (this.hintComponent) {\n if (!this.hintComponent.id) {\n this.hintComponent.id = this.id + '-item-hint';\n }\n this.hintComponent.detectChanges();\n }\n this.onDescribedByChange();\n }\n\n getItemDescribedBy(): string {\n return (this.describedBy ? this.describedBy : '') + ' ' + this.getHintId();\n }\n\n onDescribedByChange(): void {\n if (this.ariaDescribedBy) {\n this.itemDescribedBy = this.ariaDescribedBy;\n } else {\n this.itemDescribedBy = this.getItemDescribedBy();\n }\n }\n\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChildren, ElementRef,\n EventEmitter,\n forwardRef, HostBinding,\n Input,\n OnChanges,\n Output, SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {DesyContentChild} from \"../../../../shared/decorators/desy-content-child.decorator\";\nimport {TreeSubComponent} from \"../tree-sub/tree-sub.component\";\nimport {ITreeItem} from \"../interfaces/itree-item\";\nimport {HintComponent} from \"../../hint/hint.component\";\nimport {LabelComponent} from \"../../label/label.component\";\nimport {QuitTreeItemFocusOptions} from \"../interfaces/quit-tree-item-focus-options\";\nimport {TreeCheckboxComponent} from \"../tree-checkbox/tree-checkbox.component\";\nimport {AccessibilityComponent} from \"../../../../shared/components\";\nimport {DesyOnInputChange} from \"../../../../shared/decorators/desy-on-input-change.decorator\";\nimport {SearchUtils} from \"../../../../shared/utils/search-utils\";\n\n@Component({\n selector: 'desy-tree-item',\n templateUrl: './tree-item.component.html',\n providers: [\n {\n provide: ITreeItem,\n useExisting: forwardRef(() => TreeItemComponent)\n }\n ]\n})\nexport class TreeItemComponent extends AccessibilityComponent implements OnChanges, ITreeItem {\n\n private static _treeItemKeySuffix = 0; // Sufijo estático para generar siempre claves distintas\n @ViewChild('hiddenWrapper') hiddenWrapper: ElementRef;\n\n @DesyOnInputChange('setDefaultIdRecursive')\n @Input() id: string;\n @Input() name: string;\n @Input() value: string;\n @Input() classes: string;\n @Input() active: boolean;\n @Input() disabled: boolean;\n @Input() title: string;\n @Input() hasDividers: boolean;\n @Input() isIndeterminate: boolean;\n\n @Input() checked: boolean;\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\n checkedChangeForTree: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() expanded: boolean;\n @Output() expandedChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() indeterminateChecked: boolean;\n @Output() indeterminateCheckedChange: EventEmitter<any> = new EventEmitter<any>();\n\n @DesyContentChild({ onSetCallbackName: 'overrideSubValues'})\n @ContentChildren(TreeSubComponent) sub: TreeSubComponent;\n\n @DesyContentChild()\n @ContentChildren(HintComponent) hint: HintComponent;\n\n @DesyContentChild()\n @ContentChildren(LabelComponent) label: LabelComponent;\n\n @ViewChild(TreeCheckboxComponent) checkbox: TreeCheckboxComponent;\n\n /*\n * Identificador del wrapper del componente. Se utiliza para recorrer el árbol en sentido inverso y que cada item\n * sepa cuál es su item/árbol padre.\n * Esto es necesario ya que, a la hora de construir un árbol dinámico con templates,\n * el decorador @ContentChildren no funciona correctamente y no los detecta.\n * Dejo el enlace de un problema similar: https://github.com/angular/angular/issues/21751\n */\n @HostBinding('attr.desy-tree-item-key')\n readonly treeItemKey: string = TreeItemComponent.generateStaticItemKey();\n\n type: 'radio'|'checkbox'|null|undefined;\n subLevel: number; // Nivel dentro del arbol. 0 son los items a nivel de raiz.\n\n // Propiedades definidas por el componente árbol que el item puede utilizar, sobrescribir o ampliar\n parentName: string;\n defaultId;\n inheritedExpandedFirstLevel: boolean;\n inheritedDecoupleChildFromParent: boolean;\n inheritedDescribedBy: string;\n inheritedHasError: boolean;\n allParentsExpanded = true; // True si el elemento es visible según los elementos expandidos\n inheritedMatchesSearch = true; // True si el elemento es visible según los criterios de búsqueda\n orderInTree: number;\n\n // Evento para emitir al componente arbol cuando se pretende abandonar el foco del item\n quitFocus: EventEmitter<QuitTreeItemFocusOptions> = new EventEmitter<QuitTreeItemFocusOptions>();\n\n isFocus = false;\n isHover = false;\n private _matchesValidText = false; // True si el contenido del item encaja con los criterios de búsqueda y se está filtrando\n\n constructor(private changeDetector: ChangeDetectorRef, private element: ElementRef) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.sub && this.sub.itemList) {\n this.sub.itemList.forEach(item => (item as TreeItemComponent).refreshAllParentsExpandedRecursive(this.allParentsExpanded && this.expanded));\n }\n\n for (const propName in changes) {\n if (changes.hasOwnProperty(propName)) {\n switch (propName) {\n case 'checked': {\n // Reasignamos el valor de checked cuando detectamos el cambio en la entrada\n setTimeout(() => {\n this.setChecked(this.checked, false, false);\n if (this.inheritedExpandedFirstLevel && this.checked && !this.expanded) {\n this.expandSub(true);\n }\n });\n break;\n }\n }\n }\n }\n }\n\n /*\n * Métodos expuestos que permiten configurar al ítem de forma externa\n */\n\n focus(): void {\n this.checkbox?.focus();\n this.handleItemFocus(true);\n }\n\n setCheckedAutomaticallyDependingOnChildren(): void {\n if (this.sub) {\n this.sub.itemList.forEach(item => (item as TreeItemComponent).setCheckedAutomaticallyDependingOnChildren());\n if (this.areAllChildrenChecked()) {\n if (this.indeterminateChecked) {\n this.setIndeterminateChecked(false);\n }\n\n if (!this.checked) {\n this.setChecked(true, true);\n }\n } else if (this.hasChildrenCheckedOrIndeterminate()) {\n if (!this.indeterminateChecked) {\n this.setIndeterminateChecked(true);\n }\n\n if (this.checked) {\n this.setChecked(false, true);\n }\n } else {\n if (this.indeterminateChecked) {\n this.setIndeterminateChecked(false);\n }\n\n if (this.checked) {\n this.setChecked(false, true);\n }\n }\n }\n }\n\n refreshAllParentsExpandedRecursive(value): void {\n this.allParentsExpanded = value;\n if (this.sub) {\n this.sub.itemList.forEach(item => (item as TreeItemComponent).refreshAllParentsExpandedRecursive(value && this.expanded));\n }\n }\n\n detectChanges(): void {\n this.changeDetector.detectChanges();\n }\n\n expandSub(value: boolean): void {\n this.expanded = value;\n if (this.sub) {\n this.sub.itemList.forEach(item => (item as TreeItemComponent).refreshAllParentsExpandedRecursive(this.allParentsExpanded && value));\n }\n this.expandedChange.emit(value);\n }\n\n /*\n * Gestion de eventos\n */\n\n handleCheckboxChange(checked: boolean): void {\n this.setChecked(checked, false);\n if (this.inheritedExpandedFirstLevel && checked && !this.expanded) {\n this.expandSub(true);\n }\n }\n\n handleIndeterminateCheckedChange(indeterminate: boolean): void {\n this.indeterminateCheckedChange.emit(indeterminate);\n }\n\n handleItemFocus(value, condition=true): void {\n if (condition) {\n this.isFocus = value;\n }\n }\n\n handleItemHover(value, condition=true): void {\n if (condition) {\n this.isHover = value;\n }\n }\n\n handleArrowUp(event: KeyboardEvent, condition=true): void {\n if (condition) {\n event.preventDefault();\n this.quitFocus.emit({\n nextElement: 'previous',\n currentItem: this\n });\n }\n }\n\n handleHome(event: KeyboardEvent, condition=true): void {\n if (condition) {\n event.preventDefault();\n this.quitFocus.emit({\n nextElement: 'first',\n currentItem: this\n });\n }\n }\n\n handleEnd(event: KeyboardEvent, condition=true): void {\n if (condition) {\n event.preventDefault();\n this.quitFocus.emit({\n nextElement: 'last',\n currentItem: this\n });\n }\n }\n\n handleArrowDown(event: KeyboardEvent, condition=true): void {\n if (condition) {\n event.preventDefault();\n this.quitFocus.emit({\n nextElement: 'next',\n currentItem: this\n });\n }\n }\n\n handleArrowRight(event: KeyboardEvent, condition=true): void {\n if (condition && this.sub && this.sub.itemList?.length > 0) {\n event.preventDefault();\n if (this.expanded) {\n this.quitFocus.emit({\n nextElement: 'firstChild',\n currentItem: this\n });\n } else {\n this.expandSub(true);\n }\n }\n }\n\n handleArrowLeft(event: KeyboardEvent, condition=true): void {\n if (condition) {\n event.preventDefault();\n if (this.expanded) {\n this.expandSub(false);\n } else if (this.subLevel > 0) {\n this.quitFocus.emit({\n nextElement: 'parent',\n currentItem: this\n });\n }\n }\n }\n\n\n /*\n * Setters and getters\n */\n\n setChecked(checked: boolean, ignoreInTree: boolean, emitEvent = true): void {\n if (!this.disabled) {\n this.checked = checked;\n }\n\n if (!this.inheritedDecoupleChildFromParent && this.sub && this.sub.itemList && !this.indeterminateChecked) {\n this.sub.itemList.forEach(item => {\n (item as TreeItemComponent).setIndeterminateChecked(false);\n (item as TreeItemComponent).setChecked(checked, true)\n });\n }\n\n if (emitEvent) {\n this.checkedChange.emit(checked);\n }\n\n if (!ignoreInTree) {\n this.checkedChangeForTree.emit(checked);\n }\n }\n\n setIndeterminateChecked(indeterminate: boolean): void {\n if (!this.disabled) {\n this.indeterminateChecked = indeterminate;\n this.indeterminateCheckedChange.emit(indeterminate);\n }\n }\n\n setSubLevel(subLevel: number): void {\n this.subLevel = subLevel;\n if (this.sub && this.sub.itemList) {\n this.sub.itemList.forEach(item => (item as TreeItemComponent).setSubLevel(subLevel + 1));\n }\n }\n\n setOrderRecursively(order: number): number {\n this.orderInTree = order;\n let newOrder = order + 1;\n if (this.sub && this.sub.itemList) {\n this.sub.itemList.forEach(item => {\n newOrder = (item as TreeItemComponent).setOrderRecursively(newOrder);\n });\n }\n return newOrder;\n }\n\n setDefaultId(defaultId: string): void {\n this.defaultId = defaultId;\n this.setDefaultIdRecursive();\n }\n\n setDefaultIdRecursive(): void {\n if (this.sub && this.sub.itemList) {\n this.sub.itemList.forEach((item, index) => {\n (item as TreeItemComponent).setDefaultId(`sub-${this.getId()}-${index}`);\n });\n }\n }\n\n getId(): string {\n return this.id ? this.id : this.defaultId;\n }\n\n isHidden(): boolean {\n return !this.inheritedMatchesSearch && (!this.sub || this.areAllChildrenHidden());\n }\n\n areAllChildrenHidden(): boolean {\n const children = this.sub.itemList;\n return children.findIndex(child => !(child as TreeItemComponent).isHidden()) < 0;\n }\n\n areAllChildrenChecked(): boolean {\n const children = this.sub.itemList;\n return children.findIndex(child => !(child as TreeItemComponent).checked) < 0;\n }\n\n hasChildrenCheckedOrIndeterminate(): boolean {\n const children = this.sub.itemList;\n return children.findIndex(child => (child as TreeItemComponent).checked || (child as TreeItemComponent).indeterminateChecked) >= 0;\n }\n\n matchesText(value: string): boolean {\n let matches: boolean;\n if (this.allParentsExpanded && !this.isHidden()) {\n matches = this.checkbox?.matchesText(value);\n } else {\n const itemText = this.hiddenWrapper.nativeElement.textContent;\n matches = SearchUtils.containsAnyWordFrom(itemText, value);\n }\n this._matchesValidText = value ? matches : false;\n return matches;\n }\n\n getKey(): string {\n return this.treeItemKey;\n }\n\n getParentKey(): string {\n let parentKey: string;\n let parentElement = this.element.nativeElement.parentElement;\n while (parentElement && parentElement.tagName !== 'BODY' && parentElement.tagName !== 'DESY-TREE-ITEM' && parentElement.tagName !== 'DESY-TREE') {\n parentElement = parentElement.parentElement;\n }\n\n if (parentElement.tagName === 'BODY') {\n throw new Error('Parent for tree-item not found');\n }\n\n if (parentElement.tagName === 'DESY-TREE') {\n parentKey = 'root';\n }\n\n if (parentElement.tagName === 'DESY-TREE-ITEM') {\n parentKey = parentElement.getAttribute('desy-tree-item-key');\n }\n\n return parentKey;\n }\n\n isActive(): boolean {\n return this.active || this._matchesValidText;\n }\n\n /*\n * Métodos privados\n */\n\n /**\n * Genera una clave única para el componente\n * @private\n */\n private static generateStaticItemKey(): string {\n const key = 'tree-item-key-' + TreeItemComponent._treeItemKeySuffix;\n TreeItemComponent._treeItemKeySuffix++;\n return key;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChildren, EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n Output, QueryList,\n SimpleChanges, TemplateRef, ViewChild\n} from '@angular/core';\nimport {DesyContentChild} from \"../../../shared/decorators/desy-content-child.decorator\";\nimport {TreeItemComponent} from \"./tree-item/tree-item.component\";\nimport {DesyOnInputChange} from \"../../../shared/decorators/desy-on-input-change.decorator\";\nimport {NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormFieldComponent} from \"../form-field/form-field.component\";\nimport {Subscription} from \"rxjs\";\nimport {FieldsetComponent} from \"../fieldset/fieldset.component\";\nimport {QuitTreeItemFocusOptions} from \"./interfaces/quit-tree-item-focus-options\";\nimport {SearchBarComponent} from \"../search-bar/search-bar.component\";\n\n@Component({\n selector: 'desy-tree',\n templateUrl: './tree.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TreeComponent),\n multi: true\n }\n ]\n})\nexport class TreeComponent extends FormFieldComponent<any[]> implements OnChanges, OnDestroy {\n\n @Input() idPrefix: string;\n @Input() classes: string;\n @Input() name: string;\n @Input() type: 'radio'|'checkbox'|null|undefined;\n @Input() describedBy: string;\n\n @Input() formGroupClasses: any;\n\n @Input() expandedFirstLevel = true;\n @Input() decoupleChildFromParent = false;\n\n @Input() disableDefaultSearch = false;\n\n @DesyOnInputChange('onSearchMatchValuesChange')\n @Input() searchMatchValues: string[];\n @Output() searchMatchValuesChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n @DesyOnInputChange('configureAllItems')\n @ContentChildren(TreeItemComponent, { descendants: true }) allItems: QueryList<TreeItemComponent>;\n\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\n\n @DesyContentChild({ onSetCallbackName: 'overrideSearchBarParams'})\n @ContentChildren(SearchBarComponent) searchBarComponent: SearchBarComponent;\n\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\n\n private rootItems: TreeItemComponent[] = [];\n private _itemListSubscription: Subscription;\n private _allItemListSubscription: Subscription;\n private _itemListCheckedSubscriptions: Subscription[] = [];\n private _itemListQuitFocusSubscriptions: Subscription[] = [];\n private _alreadyConfiguringItems = false;\n\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\n }\n\n ngOnDestroy(): void {\n this.clearSubscriptions(this._itemListCheckedSubscriptions);\n this.clearSubscriptions(this._itemListQuitFocusSubscriptions);\n this._itemListSubscription?.unsubscribe();\n this._allItemListSubscription?.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.configureAllItems();\n }\n\n /**\n * Se sobrescribe el valor para actualizar los items\n * @Override\n */\n writeValue(value: any): void {\n this.value = value;\n this.configureAllItems(true);\n this.onChange(this.value);\n }\n\n /*\n * Eventos\n */\n\n /**\n * Actualiza el valor del componente al checkquearse un ítem\n * @param originItem ítem modificado\n */\n updateValueFromItems(originItem?: TreeItemComponent): void {\n\n // Si es radio, se desactivan el resto de items cuando se activa otro item\n if (this.type !== 'checkbox') {\n const items = this.getAllItemsInOrder();\n items.forEach(item => {\n if (item !== originItem && item.checked) {\n item.setChecked(false, true);\n }\n });\n } else if (!this.decoupleChildFromParent) {\n this.rootItems.forEach(item => item.setCheckedAutomaticallyDependingOnChildren());\n }\n\n this.value = [];\n const items = this.getAllItemsInOrder();\n items.forEach(item => {\n if (item.checked) {\n this.value.push(item.value);\n }\n });\n this.onChange(this.value);\n }\n\n /**\n * Gestiona cuando el foco abandona un ítem desde un evento de teclado controlado\n * @param options\n */\n handleItemQuitFocus(options: QuitTreeItemFocusOptions): void {\n if (options && options.nextElement) {\n const items = this.getAllItemsInOrder();\n const focusableItems = items.filter(item => !item.isHidden() && !item.disabled && item.allParentsExpanded);\n switch (options.nextElement) {\n case \"first\":\n focusableItems[0].focus();\n break;\n case \"last\":\n focusableItems[focusableItems.length - 1].focus();\n break;\n case \"parent\":\n const currentSubLevel = options.currentItem.subLevel;\n if (currentSubLevel > 0) {\n const currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);\n const parent = focusableItems.slice(0, currentItemIndex).reverse().find(item => item.subLevel < currentSubLevel);\n if (parent) {\n parent.focus();\n }\n }\n break;\n case \"firstChild\":\n case \"next\":\n if (options.currentItem) {\n let currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);\n if (currentItemIndex < focusableItems.length - 1) {\n focusableItems[currentItemIndex + 1].focus();\n }\n }\n break;\n case \"previous\":\n if (options.currentItem) {\n const currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);\n if (currentItemIndex > 0) {\n focusableItems[currentItemIndex - 1].focus();\n }\n }\n break;\n }\n }\n }\n\n /**\n * Realiza la búsqueda interna de los items en el componente\n * @param value texto de búsqueda\n */\n onSearch(value: string): void {\n if (!this.disableDefaultSearch) {\n if (value && value.length > 0) {\n this.searchMatchValues = this.allItems.filter(item => item.matchesText(value)).map(item => item.value);\n } else {\n this.searchMatchValues = null;\n }\n this.searchMatchValuesChange.emit(this.searchMatchValues);\n }\n }\n\n /*\n * Eventos al cambiar propiedades\n */\n\n /**\n * Configura los items del árbol\n */\n configureAllItems(isValueChange = false): void {\n\n if (!this._alreadyConfiguringItems) {\n this._alreadyConfiguringItems = true;\n\n // Lo realizamos desde un setTimeout para que todos los inputs, values y demás vivan en paz y armonía\n setTimeout(() => {\n if (this.allItems?.length > 0) {\n this.clearSubscriptions(this._itemListCheckedSubscriptions);\n this.clearSubscriptions(this._itemListQuitFocusSubscriptions);\n this.allItems.forEach(item => {\n item.parentName = this.name;\n item.type = this.type;\n item.inheritedDescribedBy = this.getDescribedByForItems();\n item.inheritedExpandedFirstLevel = this.expandedFirstLevel;\n item.inheritedDecoupleChildFromParent = this.decoupleChildFromParent;\n if ((this.value && this.value.length > 0) || isValueChange) {\n const valueList = this.value ? this.value : [];\n item.setChecked(!!valueList.find(v => v === item.value), true);\n }\n item.detectChanges();\n\n const checkedSubscription = item.checkedChangeForTree.subscribe(() => this.updateValueFromItems(item));\n this._itemListCheckedSubscriptions.push(checkedSubscription);\n\n const quitFocusSubscription = item.quitFocus.subscribe(options => this.handleItemQuitFocus(options));\n this._itemListQuitFocusSubscriptions.push(quitFocusSubscription);\n });\n\n this.setErrorInItems(this.hasErrorMessageComponent());\n\n this.buildTree();\n if (!this.value) {\n this.updateValueFromItems();\n }\n\n if (this.searchMatchValues) {\n this.onSearchMatchValuesChange();\n }\n }\n\n if (this.allItems && !this._allItemListSubscription) {\n this._allItemListSubscription = this.allItems.changes.subscribe(() => this.configureAllItems());\n }\n\n this.changeDetector.detectChanges();\n this._alreadyConfiguringItems = false;\n });\n }\n }\n\n /**\n * Modifica los items visibles según el filtro de búsqueda\n */\n onSearchMatchValuesChange(): void {\n if (this.allItems) {\n this.allItems.forEach(item => {\n item.inheritedMatchesSearch = true;\n });\n\n if (this.searchMatchValues !== null && this.searchMatchValues !== undefined) {\n this.allItems.forEach(item => {\n if (this.searchMatchValues.findIndex(value => item.value === value) < 0) {\n item.inheritedMatchesSearch = false;\n }\n })\n }\n }\n }\n\n /*\n * Getters and setters\n */\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : this.name;\n }\n\n getDescribedBy(): string {\n let describedBy = '';\n if (this.describedBy) {\n describedBy = this.describedBy;\n }\n\n if (this.hasHintComponent() && this.hintComponent.id) {\n describedBy = describedBy + ' ' + this.hintComponent.id;\n }\n\n if (this.hasErrorMessageComponent() && this.errorMessageComponent.id) {\n describedBy = describedBy + ' ' + this.errorMessageComponent.id;\n }\n\n return describedBy;\n }\n\n /**\n * Devuelve el valor de describedBy que se transmitirá a los items\n */\n getDescribedByForItems(): string {\n let describedBy;\n if (this.hasFieldsetComponent()) {\n describedBy = this.fieldsetComponent.describedBy;\n } else {\n describedBy = this.getDescribedBy();\n }\n\n return describedBy;\n }\n\n hasFieldsetComponent(): boolean {\n return !!this.fieldsetComponent;\n }\n\n /**\n * Overrides super.getHintId();\n */\n getHintId(): string {\n return this.idPrefix ? this.idPrefix + '-hint' : this.hintComponent?.id;\n }\n\n /**\n * Overrides super.getHintId();\n */\n getErrorId(): string {\n return this.idPrefix ? this.idPrefix + '-error' : this.errorMessageComponent?.id;\n }\n\n /*\n * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage\n */\n\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\n fieldset.caller = this.innerHtml;\n fieldset.errorId = this.getErrorId();\n fieldset.describedBy = this.getDescribedBy();\n fieldset.detectChanges();\n }\n\n overrideSearchBarParams(searchbar: SearchBarComponent): void {\n const defaultOnChange = searchbar.onChange;\n const newOnChange = value => {\n this.onSearch(value);\n defaultOnChange(value);\n }\n searchbar.registerOnChange(newOnChange);\n }\n\n /**\n * Se llama desde FormField\n */\n overrideHintParams(hint): void {\n hint.id = this.getHintId();\n hint.detectChanges();\n }\n\n /**\n * Se llama desde FormField\n */\n overrideErrorMessageParams(errorMessage): void {\n errorMessage.id = this.getErrorId();\n this.setErrorInItems(this.hasErrorMessageComponent());\n errorMessage.detectChanges();\n }\n\n /**\n * Se llama desde FormField\n */\n onDeleteErrorMessage(errorMessage): void {\n this.setErrorInItems(this.hasErrorMessageComponent());\n }\n\n /*\n * Métodos privados\n */\n\n /**\n * Configura la estructura del árbol\n * @private\n */\n private buildTree(): void {\n\n // Se crea un mapa para tener accesibles los items por key y se borran los listados existentes\n const itemMap = {}\n this.rootItems = [];\n this.allItems.forEach(item => {\n const key = item.getKey();\n itemMap[key] = item;\n if (item.sub) {\n item.sub.itemList = [];\n }\n });\n\n // Se añaden los items a los listados correspondientes\n this.allItems.forEach(item => {\n const parentKey = item.getParentKey();\n if (parentKey === 'root') {\n this.rootItems.push(item);\n } else if (parentKey) {\n const sub = itemMap[parentKey].sub;\n if (sub) {\n sub.itemList.push(item);\n }\n }\n });\n\n // Se configuran los items desde root\n let order = 0;\n this.rootItems.forEach((item, index) => {\n item.setSubLevel(0);\n item.setDefaultId(`${this.idPrefix}-${index}`);\n item.refreshAllParentsExpandedRecursive(true);\n if (!this.decoupleChildFromParent) {\n item.setCheckedAutomaticallyDependingOnChildren();\n }\n order = item.setOrderRecursively(order);\n });\n }\n\n /**\n * Si tiene un mensaje de error, se indica a los items\n * @param hasError\n * @private\n */\n private setErrorInItems(hasError: boolean): void {\n if (this.allItems?.length > 0) {\n this.allItems.forEach(item => {\n item.inheritedHasError = hasError;\n item.detectChanges();\n });\n }\n }\n\n /**\n * Limpia un listado de subscripciones\n * @param subscriptionList\n * @private\n */\n private clearSubscriptions(subscriptionList: Subscription[]): void {\n if (subscriptionList.length > 0) {\n subscriptionList.forEach(s => s.unsubscribe());\n subscriptionList.splice(0, subscriptionList.length)\n }\n }\n\n /**\n * Devuelve los items del árbol ordenados\n * @private\n */\n private getAllItemsInOrder(): TreeItemComponent[] {\n let list = [];\n if (this.allItems) {\n list = this.allItems.toArray().sort((a, b) => a.orderInTree > b.orderInTree ? 1 : -1)\n }\n return list\n }\n}\n","import { Directive, Input, OnChanges, TemplateRef } from '@angular/core';\nimport { ItemCheckboxData, ItemRadioWithTemplateData } from '../interfaces';\n\n@Directive({\n selector: '[desyCondition]'\n})\nexport class ConditionDirective implements OnChanges {\n\n /**\n * Condition, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir objeto ItemCheckboxData o ItemRadioWithTemplateData (interfaces expuesta)\n * 2) incluir value y el listado de ItemCheckboxData[] o ItemRadioWithTemplateData[]\n */\n @Input() item: ItemCheckboxData|ItemRadioWithTemplateData;\n\n @Input() value: any;\n @Input() items: ItemCheckboxData[]|ItemRadioWithTemplateData[];\n\n constructor(public templateRef: TemplateRef<any>) {}\n\n ngOnChanges(): void {\n if (this.item) {\n this.item.conditionalHtml = this.templateRef;\n } else if (this.value && this.items) {\n for (const item of this.items) {\n if (item.value === this.value) {\n item.conditionalHtml = this.templateRef;\n }\n }\n }\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport {TreeItemComponent} from \"../tree-item/tree-item.component\";\n\n@Component({\n selector: 'desy-tree-items-generator',\n templateUrl: './tree-items-generator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeItemsGeneratorComponent implements OnInit {\n\n @ViewChild('content', { static: true }) content: TemplateRef<any>;\n\n @Input() items: any[];\n @Input() itemTemplate: TemplateRef<TreeItemComponent>;\n\n constructor(private viewContainerRef: ViewContainerRef) { }\n\n ngOnInit(): void {\n this.viewContainerRef.createEmbeddedView(this.content);\n }\n\n}\n","import { ButtonComponent } from './../../../../desy-buttons/components/button/button.component';\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {ModalButtonData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-modal-button-primary',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ModalButtonPrimaryComponent extends ButtonComponent implements ModalButtonData {\n @Input() classes: string;\n\n @Output() clickEvent = new EventEmitter();\n}\n","import { ButtonComponent } from './../../../../desy-buttons/components/button/button.component';\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {ModalButtonData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-modal-button-secondary',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ModalButtonSecondaryComponent extends ButtonComponent implements ModalButtonData {\n @Input() classes: string;\n\n @Output() clickEvent = new EventEmitter();\n}\n","import { ButtonLoaderComponent } from './../../../../desy-buttons/components/button-loader/button-loader.component';\nimport { ButtonComponent } from './../../../../desy-buttons/components/button/button.component';\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {ModalButtonData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-modal-button-loader-primary',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ModalButtonLoaderPrimaryComponent extends ButtonLoaderComponent implements ModalButtonData {\n @Input() classes: string;\n @Input() state: string;\n @Output() clickEvent = new EventEmitter();\n}\n","import { ButtonLoaderComponent } from './../../../../desy-buttons/components/button-loader/button-loader.component';\nimport { ButtonComponent } from './../../../../desy-buttons/components/button/button.component';\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {ModalButtonData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-modal-button-loader-secondary',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ModalButtonLoaderSecondaryComponent extends ButtonLoaderComponent implements ModalButtonData {\n @Input() classes: string;\n\n @Output() clickEvent = new EventEmitter();\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChildren, ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef\n} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\nimport { ModalButtonData, ModalData, ModalIconData } from '../../interfaces';\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\nimport {ModalButtonPrimaryComponent} from './modal-button-primary/modal-button-primary.component';\nimport {ModalButtonSecondaryComponent} from './modal-button-secondary/modal-button-secondary.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\nimport { ModalButtonLoaderPrimaryComponent } from './modal-button-loader-primary/modal-button-loader-primary.component';\nimport { ModalButtonLoaderSecondaryComponent } from './modal-button-loader-secondary/modal-button-loader-secondary.component';\n\n@Component({\n selector: 'desy-modal',\n templateUrl: './modal.component.html'\n})\nexport class ModalComponent extends AccessibilityComponent {\n\n @Input() title: ModalData;\n @Input() description: ModalData;\n @Input() itemsPrimary: ModalButtonData[];\n @Input() itemsSecondary: ModalButtonData[];\n @Input() itemsLoaderPrimary: ModalButtonData[];\n @Input() itemsLoaderSecondary: ModalButtonData[];\n @Input() icon: ModalIconData;\n @Input() headingLevel: number;\n\n @Input() isDismissible: boolean;\n @Input() id: string;\n @Input() classes: string;\n @Input() caller: TemplateRef<any>;\n\n @Output() closeModal: EventEmitter<void> = new EventEmitter();\n @Output() clickButton: EventEmitter<any> = new EventEmitter();\n\n @DesyContentChild()\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\n\n @DesyContentChild()\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n\n @ContentChildren(ModalButtonPrimaryComponent) primaryButtonComponents: QueryList<ModalButtonPrimaryComponent>;\n @ContentChildren(ModalButtonSecondaryComponent) secondaryButtonComponents: QueryList<ModalButtonSecondaryComponent>;\n\n @ContentChildren(ModalButtonLoaderPrimaryComponent) primaryButtonLoaderComponents: QueryList<ModalButtonLoaderPrimaryComponent>;\n @ContentChildren(ModalButtonLoaderSecondaryComponent) secondaryButtonLoaderComponents: QueryList<ModalButtonLoaderSecondaryComponent>;\n\n @DesyContentChild()\n @ContentChildren(IconComponent) iconComponent: IconComponent;\n\n hasIconContent = true;\n descriptionIsHtml = true;\n descriptionIsEmpty = false;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n closeDialog(): void {\n this.closeModal.emit();\n }\n\n getType(): string {\n let type: string;\n if (this.iconComponent) {\n type = this.iconComponent.type ? this.iconComponent.type.toLocaleLowerCase() : null;\n } else if (this.icon.type) {\n type = this.icon.type ? this.icon.type.toLocaleLowerCase() : null;\n }\n\n return type;\n }\n\n checkDescriptionContent(element: ElementRef): void {\n const childs: NodeListOf<ChildNode> = element.nativeElement.childNodes;\n let hasHtml = false;\n let hasContent = false;\n for (let i = 0; i < childs.length && !hasHtml; i++) {\n const item = childs.item(i);\n if (item.nodeType === Node.TEXT_NODE && item.textContent.length > 0) {\n hasContent = true;\n } else if (item.nodeType === Node.ELEMENT_NODE || item.nodeType === Node.CDATA_SECTION_NODE) {\n hasHtml = true;\n hasContent = true;\n }\n }\n\n const descriptionWasEmpty = this.descriptionIsEmpty;\n this.descriptionIsEmpty = !hasContent;\n this.descriptionIsHtml = hasHtml;\n this.changeDetectorRef.detectChanges();\n }\n\n clickButtonEmit(item: ModalButtonData, event): void{\n this.clickButton.emit(event);\n\n if (item instanceof ModalButtonPrimaryComponent || item instanceof ModalButtonSecondaryComponent || item instanceof ModalButtonLoaderPrimaryComponent || item instanceof ModalButtonLoaderSecondaryComponent) {\n item.clickEvent.emit(event);\n }\n }\n\n handleIconContentEmpty(isEmpty: boolean): void {\n this.hasIconContent = !isEmpty;\n this.changeDetectorRef.detectChanges();\n }\n\n getTitleClasses(): string {\n let classes = 'c-h2 px-base text-center focus:outline-none focus:underline';\n if (this.titleComponent && this.titleComponent.classes) {\n classes = this.titleComponent.classes;\n } else if (this.title && this.title.classes) {\n classes = this.title.classes;\n }\n return classes;\n }\n\n getDescriptionClasses(): string {\n let classes = 'c-paragraph-base my-base text-center';\n if (this.descriptionComponent && this.descriptionComponent.classes) {\n classes = this.descriptionComponent.classes;\n } else if (this.description && this.description.classes) {\n classes = this.description.classes;\n }\n return classes;\n }\n\n getPrimaryItems(): ModalButtonData[]|ModalButtonPrimaryComponent[] {\n return this.primaryButtonComponents && this.primaryButtonComponents.length > 0 ? this.primaryButtonComponents.toArray()\n : this.itemsPrimary;\n }\n\n getSecondaryItems(): ModalButtonData[]|ModalButtonPrimaryComponent[] {\n return this.secondaryButtonComponents && this.secondaryButtonComponents.length > 0 ? this.secondaryButtonComponents.toArray()\n : this.itemsSecondary;\n }\n\n getPrimaryLoaderItems(): ModalButtonData[]|ModalButtonLoaderPrimaryComponent[] {\n return this.primaryButtonLoaderComponents && this.primaryButtonLoaderComponents.length > 0 ? this.primaryButtonLoaderComponents.toArray() : this.itemsLoaderPrimary;\n }\n\n getSecondaryLoaderItems(): ModalButtonData[]|ModalButtonLoaderSecondaryComponent[] {\n return this.secondaryButtonLoaderComponents && this.secondaryButtonLoaderComponents.length > 0 ? this.secondaryButtonLoaderComponents.toArray() : this.itemsLoaderSecondary;\n }\n}\n","import {\n Component,\n HostListener,\n OnChanges,\n OnDestroy,\n Input,\n ViewChild,\n ViewContainerRef,\n TemplateRef,\n AfterViewInit,\n ChangeDetectorRef,\n Output,\n HostBinding,\n EventEmitter, ComponentRef, ElementRef, Type, ComponentFactoryResolver\n} from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\n\nlet numDialogsOpened = 0;\ntype DialogCreationCallback = ((dialog: DialogComponent, caller: ComponentRef<any>) => void);\n\n@Component({\n selector: 'desy-dialog',\n templateUrl: './dialog.component.html'\n})\nexport class DialogComponent extends AccessibilityComponent implements OnChanges, OnDestroy, AfterViewInit {\n\n static readonly DIALOG_OPEN_CLASS = 'has-dialog';\n static readonly KEY_CODE_ESC = 'Escape';\n\n @ViewChild('container', {read: ViewContainerRef}) container: ViewContainerRef;\n @ViewChild('focusTrapWrapper') focusTrapWrapper: ElementRef;\n\n @Input() active: boolean;\n @Output() activeChange = new EventEmitter<boolean>();\n\n @Input() id: any;\n @Input() caller: TemplateRef<any>;\n @Input() focusOnClose: string|HTMLElement;\n @Input() dismissOnBackdrop: boolean;\n @Input() classes: string;\n \n public callerType: Type<any>;\n public onCallerCreationCallback: DialogCreationCallback;\n\n lastActiveState = false;\n focusTrap: ConfigurableFocusTrap;\n clickOutsideEnabled = false;\n childElem: ElementRef;\n\n constructor(private cdRef: ChangeDetectorRef,\n private focusTrapFactory: ConfigurableFocusTrapFactory,\n private factoryResolver: ComponentFactoryResolver) {\n super();\n }\n\n ngOnChanges(): void {\n if (this.focusTrapWrapper) {\n this.handleActiveState();\n }\n }\n\n ngAfterViewInit(): void {\n \n if (this.callerType) {\n const factory = this.factoryResolver.resolveComponentFactory(this.callerType);\n const component = this.container.createComponent(factory);\n if (this.onCallerCreationCallback) {\n this.onCallerCreationCallback(this, component);\n }\n }\n\n if (this.focusTrapWrapper.nativeElement.children && this.focusTrapWrapper.nativeElement.children.length === 1) {\n this.childElem = this.focusTrapWrapper.nativeElement.children[0];\n }\n\n this.handleActiveState();\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.active = false;\n this.handleActiveState();\n }\n\n\n public dismiss(): void {\n this.activeChange.emit(false);\n }\n\n\n @HostListener('document:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === DialogComponent.KEY_CODE_ESC) {\n event.stopPropagation();\n this.dismiss();\n }\n }\n\n handleActiveState(): void {\n if (!this.focusTrap) {\n this.focusTrap = this.focusTrapFactory.create(this.focusTrapWrapper.nativeElement);\n }\n\n if (this.active !== this.lastActiveState) {\n this.lastActiveState = this.active;\n\n // Habilitar/deshabilitar scroll\n if (this.active && numDialogsOpened === 0) {\n document.body.classList.add(DialogComponent.DIALOG_OPEN_CLASS);\n } else if (!this.active && numDialogsOpened === 1) {\n document.body.classList.remove(DialogComponent.DIALOG_OPEN_CLASS);\n if (document.body.classList.length === 0) {\n document.body.removeAttribute('class');\n }\n }\n\n if (this.active) {\n setTimeout(() => this.focusTrap.focusInitialElement());\n numDialogsOpened++;\n } else {\n let focusElem: HTMLElement;\n this.focusTrap.destroy();\n if (this.focusOnClose) {\n if (typeof this.focusOnClose === 'string') {\n focusElem = document.getElementById(this.focusOnClose);\n } else {\n focusElem = this.focusOnClose;\n }\n } else {\n focusElem = FocusUtils.getFirstFocusableElement();\n }\n if (focusElem) {\n setTimeout(() => focusElem.focus());\n }\n numDialogsOpened--;\n }\n\n setTimeout(() => this.clickOutsideEnabled = this.active);\n }\n }\n\n handleClickOutside(): void {\n if (this.dismissOnBackdrop) {\n this.dismiss();\n }\n }\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef, EmbeddedViewRef,\n Injectable,\n Injector,\n TemplateRef,\n Type\n} from '@angular/core';\nimport { DialogOptions, ModalOptions, OpenDialogResult } from '../interfaces';\nimport { DialogComponent } from '../components/dialog/dialog.component';\nimport { ModalComponent } from '../components/modal/modal.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService {\n\n constructor(private factoryResolver: ComponentFactoryResolver,\n private defaultInjector: Injector,\n private appRef: ApplicationRef) { }\n\n openDialog(caller: Type<any>|ModalOptions|TemplateRef<any>,\n dialogOptions: DialogOptions): Promise<OpenDialogResult> {\n return new Promise<OpenDialogResult>((resolve, reject) => {\n\n if (!caller) {\n reject('caller is required');\n }\n\n if (!dialogOptions) {\n reject('dialogOptions is required');\n }\n\n const dialog = this.createDialog(dialogOptions);\n const result: OpenDialogResult = {\n dialog\n };\n\n if (caller instanceof Type) {\n dialog.instance.callerType = caller;\n dialog.instance.onCallerCreationCallback = (d, c) => {\n result.component = c;\n resolve(result);\n };\n } else if (caller instanceof TemplateRef) {\n dialog.instance.caller = caller;\n resolve(result);\n } else {\n dialog.instance.callerType = ModalComponent;\n dialog.instance.onCallerCreationCallback = (d, c) => {\n this.initModal(d, c, caller);\n result.component = c;\n resolve(result);\n };\n }\n });\n }\n\n closeDialog(dialog: ComponentRef<DialogComponent>|DialogComponent): void {\n if (dialog) {\n if (dialog instanceof ComponentRef) {\n dialog.instance.dismiss();\n } else {\n dialog.dismiss();\n }\n }\n }\n\n onCloseDialog(dialog: ComponentRef<DialogComponent>|DialogComponent): Promise<void> {\n return new Promise<void>((resolve => {\n let d;\n if (dialog instanceof ComponentRef) {\n d = dialog.instance;\n } else {\n d = dialog;\n }\n\n const subscription = d.activeChange.subscribe(() => {\n resolve();\n subscription.unsubscribe();\n });\n }));\n }\n\n private createDialog(dialogOptions: DialogOptions): ComponentRef<DialogComponent> {\n const factory = this.factoryResolver.resolveComponentFactory(DialogComponent);\n let dialog;\n if (dialogOptions.rootViewContainer) {\n dialog = dialogOptions.rootViewContainer.createComponent<DialogComponent>(factory);\n } else {\n dialog = factory.create(this.defaultInjector);\n this.appRef.attachView(dialog.hostView);\n const componentElement = (dialog.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(componentElement);\n }\n\n dialog.instance.active = true;\n if (dialogOptions) {\n Object.assign(dialog.instance, dialogOptions);\n }\n\n this.onCloseDialog(dialog).then(() => dialog.destroy());\n\n return dialog;\n }\n\n private initModal(dialog: DialogComponent, modalRef: ComponentRef<ModalComponent>, modalOptions: ModalOptions): void {\n modalRef.instance.title = modalOptions.title;\n modalRef.instance.description = modalOptions.description;\n modalRef.instance.itemsPrimary = modalOptions.itemsPrimary;\n modalRef.instance.itemsSecondary = modalOptions.itemsSecondary;\n modalRef.instance.icon = modalOptions.icon;\n\n modalRef.instance.isDismissible = modalOptions.isDismissible;\n modalRef.instance.id = modalOptions.id;\n modalRef.instance.classes = modalOptions.classes;\n modalRef.instance.caller = modalOptions.caller;\n\n if (modalOptions.isDismissible) {\n const subscription = modalRef.instance.closeModal.subscribe(() => {\n this.closeDialog(dialog);\n subscription.unsubscribe();\n });\n }\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport { BreadcrumbsData } from '../../../interfaces';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-breadcrumbs-item',\n templateUrl: './breadcrumbs-item.component.html'\n})\nexport class BreadcrumbsItemComponent extends ContentBaseComponent implements BreadcrumbsData {\n\n @Input() id?: string;\n @Input() routerLink?: string;\n\n}\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\nimport { Location } from '@angular/common';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { BreadcrumbsData } from '../../interfaces';\nimport { BreadcrumbsItemComponent } from './breadcrumbs-item/breadcrumbs-item.component';\n\n@Component({\n selector: 'desy-breadcrumbs',\n templateUrl: './breadcrumbs.component.html'\n})\nexport class BreadcrumbsComponent extends AccessibilityComponent {\n\n @Input() items: Array<BreadcrumbsData>;\n @Input() classes: string;\n @Input() id: string;\n\n @Input() collapseOnMobile: boolean;\n @Input() hasBackButton: boolean;\n @ContentChildren(BreadcrumbsItemComponent) itemComponentList: QueryList<BreadcrumbsItemComponent>;\n\n constructor(private location: Location){\n super();\n }\n\n getLength(): number {\n let itemsLength: number = this.items ? this.items.length : this.itemComponentList.length;\n\n if (this.hasBackButton) {\n itemsLength += 1;\n }\n return itemsLength;\n }\n\n goBack(): void {\n this.location.back();\n }\n\n getItemList(): BreadcrumbsData[] {\n const itemList = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\n\n return itemList;\n }\n\n}\n","import { Component } from '@angular/core';\nimport {ContentBaseComponent} from '../../../../../shared/components';\n\n@Component({\n selector: 'desy-header-offcanvas-close-button',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class HeaderOffcanvasCloseButtonComponent extends ContentBaseComponent {\n\n}\n","import { Component } from '@angular/core';\nimport {ContentBaseComponent} from '../../../../../shared/components';\n\n@Component({\n selector: 'desy-header-offcanvas-button',\n templateUrl: './header-offcanvas-button.component.html'\n})\nexport class HeaderOffcanvasButtonComponent extends ContentBaseComponent {\n\n openOffcanvas = async () => {};\n\n async handleClick(event: Event): Promise<void> {\n event.stopPropagation();\n await this.openOffcanvas();\n }\n\n\n}\n","import {\n Component,\n ComponentRef,\n ContentChildren,\n HostBinding,\n Input,\n OnDestroy,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\nimport {HeaderOffcanvasCloseButtonComponent} from './header-offcanvas-close-button/header-offcanvas-close-button.component';\nimport {DialogComponent} from '../../../../desy-modals/components/dialog/dialog.component';\nimport {DialogService} from '../../../../desy-modals/services/dialog.service';\nimport {DialogOptions} from '../../../../desy-modals/interfaces';\nimport {HeaderOffcanvasButtonComponent} from './header-offcanvas-button/header-offcanvas-button.component';\nimport {DesyOnInputChange} from '../../../../shared/decorators/desy-on-input-change.decorator';\n\n@Component({\n selector: 'desy-header-offcanvas',\n templateUrl: './header-offcanvas.component.html'\n})\nexport class HeaderOffcanvasComponent implements OnDestroy {\n\n private static dialogOptions: DialogOptions = {\n id: 'header-offcanvas-dialog',\n focusOnClose: 'header-offcanvas-button',\n ariaModal: 'true',\n ariaLabelledBy: 'header-offcanvas-button-text',\n role: 'dialog'\n };\n\n @DesyOnInputChange('setHostClass')\n @Input() classes: string;\n\n @HostBinding('class') hostClass = '-mr-2 flex lg:hidden';\n\n @ViewChild('offcanvasContent') offcanvasContent: TemplateRef<any>;\n\n @DesyContentChild({onSetCallbackName: 'bindButton'})\n @ContentChildren(HeaderOffcanvasButtonComponent) button: HeaderOffcanvasButtonComponent;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) content: ContentComponent;\n\n @DesyContentChild()\n @ContentChildren(HeaderOffcanvasCloseButtonComponent) closeButton: HeaderOffcanvasCloseButtonComponent;\n\n private dialog: ComponentRef<DialogComponent>;\n\n constructor(private dialogService: DialogService) {\n }\n\n ngOnDestroy(): void {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n async open(): Promise<void> {\n if (!this.isOpen()) {\n this.dialog = (await this.dialogService.openDialog(this.offcanvasContent, HeaderOffcanvasComponent.dialogOptions)).dialog;\n this.dialogService.onCloseDialog(this.dialog).then(() => this.dialog = null);\n }\n }\n\n close(): void {\n if (this.isOpen()) {\n this.dialogService.closeDialog(this.dialog);\n this.dialog = null;\n const elementToFocus = document.getElementById('header-offcanvas-button');\n elementToFocus?.focus()\n }\n }\n\n isOpen(): boolean {\n return !!this.dialog;\n }\n\n /**\n * Estable las clases del elemento html del componente\n */\n setHostClass(): void {\n this.hostClass = this.classes ? this.classes : '-mr-2 flex lg:hidden';\n }\n\n /**\n * Enlaza el botón del componente hijo con la acción de abrir de este componente\n * @param button componente botón pasado como contenido\n */\n bindButton(button: HeaderOffcanvasButtonComponent): void {\n button.openOffcanvas = this.open.bind(this);\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {HeaderNavigationItemData} from '../../../../interfaces/header-navigation-item-data';\nimport {ContentBaseComponent} from '../../../../../shared/components';\n\n@Component({\n selector: 'desy-header-navigation-item',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class HeaderNavigationItemComponent extends ContentBaseComponent implements HeaderNavigationItemData {\n @Input() href: string;\n @Input() routerLink: string;\n @Input() fragment: string;\n @Input() id: string;\n @Input() active: boolean;\n @Input() disabled: boolean;\n}\n","import {AfterContentInit, Component, ContentChildren, Input, QueryList} from '@angular/core';\nimport { HeaderNavigationItemData } from '../../../interfaces/header-navigation-item-data';\nimport { AccessibilityComponent } from '../../../../shared/components';\nimport {HeaderNavigationItemComponent} from './header-navigation-item/header-navigation-item.component';\n\n@Component({\n selector: 'desy-header-navigation',\n templateUrl: './header-navigation.component.html'\n})\nexport class HeaderNavigationComponent extends AccessibilityComponent implements AfterContentInit {\n\n @Input() idPrefix: string;\n @Input() classes: string;\n @Input() items: HeaderNavigationItemData[];\n\n @ContentChildren(HeaderNavigationItemComponent) itemComponents: QueryList<HeaderNavigationItemComponent>;\n\n ngAfterContentInit(): void {\n const items = this.getItems();\n }\n\n getItemId(item: HeaderNavigationItemData, index: number): string {\n const prefix = this.idPrefix ? this.idPrefix : 'header-nav-item';\n const suffix = index > 0 ? '-' + index : '';\n return item.id ? item.id : prefix + suffix;\n }\n\n getItems(): HeaderNavigationItemData[] {\n return this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NavItemData, NavItemEventData} from '../../../interfaces';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-nav-item',\n templateUrl: './nav-item.component.html'\n})\nexport class NavItemComponent extends ContentBaseComponent implements NavItemData {\n\n @Input() id?: string;\n @Input() active?: boolean;\n @Input() classes?: string;\n @Input() title?: string;\n @Input() href?: string;\n @Input() routerLink?: string|any[];\n @Input() fragment?: string;\n @Input() target?: string;\n @Input() disabled?: boolean;\n @Input() divider?: boolean;\n\n @Output() clickEvent = new EventEmitter<NavItemEventData>();\n @Output() activeChange = new EventEmitter<boolean>();\n}\n","import {\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList\n} from '@angular/core';\nimport {\n AccessibilityComponent\n} from '../../../shared/components';\nimport {NavItemData, NavItemEventData} from '../../interfaces';\nimport {NavItemComponent} from './nav-item/nav-item.component';\n\n\n@Component({\n selector: 'desy-nav',\n templateUrl: './nav.component.html'\n})\nexport class NavComponent extends AccessibilityComponent {\n\n @Input() hasNav = true;\n @Input() idPrefix: string;\n @Input() items: NavItemData[];\n @Input() classes: string;\n\n @Output() clickEvent = new EventEmitter<NavItemEventData>();\n @ContentChildren(NavItemComponent) itemComponentList: QueryList<NavItemComponent>;\n\n onClick(event: any, item: NavItemData): void {\n const itemsActiveChange = [];\n if (!item.active) {\n itemsActiveChange.push(item);\n }\n\n const itemList = this.getItemList();\n itemList.forEach(i => {\n if (i.active && i !== item) {\n itemsActiveChange.push(i);\n }\n i.active = false;\n });\n item.active = true;\n\n // Se emite el evento sólo para los items cuyo valor de active ha sido modificado\n itemsActiveChange.forEach(i => {\n if (i instanceof NavItemComponent) {\n i.activeChange.emit(i.active);\n }\n });\n\n this.clickEvent.emit({ item, event });\n if (item instanceof NavItemComponent) {\n item.clickEvent.emit({ item, event });\n }\n }\n\n getItemList(): NavItemData[] {\n const itemList = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\n \n return itemList;\n }\n\n getItemId(item: NavItemData, index: number): string {\n let id;\n if (item.id) {\n id = item.id;\n } else if (index === 0) {\n id = this.getIdPrefix();\n } else {\n id = this.getIdPrefix() + '-' + index;\n }\n return id;\n }\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : 'nav-item';\n }\n\n movePrevious(event: KeyboardEvent, currentIndex: number): void {\n event.preventDefault();\n const items = this.getItemList();\n let nextIndex = currentIndex - 1;\n while (nextIndex >= 0 && !this.isFocusableItem(items[nextIndex])) {\n nextIndex--;\n }\n\n if (nextIndex < items.length) {\n const itemElem = document.getElementById(this.getItemId(items[nextIndex], nextIndex));\n if (itemElem) {\n itemElem.focus();\n }\n }\n }\n\n moveNext(event: KeyboardEvent, currentIndex: number): void {\n event.preventDefault();\n const items = this.getItemList();\n let nextIndex = currentIndex + 1;\n while (nextIndex < items.length && !this.isFocusableItem(items[nextIndex])) {\n nextIndex++;\n }\n\n if (nextIndex < items.length) {\n const itemElem = document.getElementById(this.getItemId(items[nextIndex], nextIndex));\n if (itemElem) {\n itemElem.focus();\n }\n }\n }\n\n simulateClick(event: KeyboardEvent, item: NavItemData, index: number): void {\n event.preventDefault();\n const element = document.getElementById(this.getItemId(item, index));\n element?.click();\n }\n\n\n private isFocusableItem(item: NavItemData): boolean {\n return !item.active && !item.disabled;\n }\n\n}\n","import {Component, ContentChildren, Input} from '@angular/core';\nimport {NavComponent} from '../../nav/nav.component';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {AccessibilityComponent} from \"../../../../shared/components\";\n\n@Component({\n selector: 'desy-header-subnav',\n templateUrl: './header-subnav.component.html'\n})\nexport class HeaderSubnavComponent extends AccessibilityComponent {\n\n @Input() hiddenText: string;\n @Input() classesContainer: string;\n @Input() classesTooltip: string;\n @Input() classes: string;\n\n @DesyContentChild({onSetCallbackName: 'overrideNavParams'})\n @ContentChildren(NavComponent) nav: NavComponent;\n\n hasSubnavItems(): boolean {\n return this.nav && this.nav.getItemList().length > 0;\n }\n\n overrideNavParams(nav: NavComponent): void {\n nav.hasNav = true;\n nav.idPrefix = 'header-subnav-nav-item';\n nav.ariaLabel = 'Aplicaciones';\n nav.classes = 'w-max max-w-64';\n // nav.id = 'id-subnav-nav'; // No existe como param de navComponent\n }\n\n\n}\n","import {Component, ContentChildren, Input} from '@angular/core';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {NavComponent} from '../../nav/nav.component';\nimport {AccessibilityComponent} from \"../../../../shared/components\";\nimport {ContentComponent} from \"../../../../desy-commons/components/content/content.component\";\n\n@Component({\n selector: 'desy-header-dropdown',\n templateUrl: './header-dropdown.component.html',\n})\nexport class HeaderDropdownComponent extends AccessibilityComponent {\n\n @Input() hiddenText: string;\n @Input() classesContainer: string;\n @Input() classesTooltip: string;\n @Input() classes: string;\n\n @DesyContentChild({onSetCallbackName: 'overrideNavParams'})\n @ContentChildren(NavComponent) nav: NavComponent;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n\n overrideNavParams(nav: NavComponent): void {\n nav.hasNav = true;\n nav.idPrefix = 'header-dropdown-nav-item';\n nav.ariaLabel = 'Menú de usuario';\n nav.classes = 'w-max max-w-64';\n // nav.id = 'id-dropdown-nav'; // No existe como param de navComponent\n }\n\n}\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\n\n@Component({\n selector: 'desy-skip-link',\n templateUrl: './skip-link.component.html'\n})\nexport class SkipLinkComponent extends AccessibilityComponent {\n\n @Input() html: string;\n @Input() text: string;\n @Input() fragment: string;\n @Input() classes: string;\n @Input() id: string;\n\n hasContent = true;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n getClassNames(): string {\n let classNames = 'c-skip-link sr-only active:not-sr-only focus:not-sr-only focus:outline-none focus:shadow-outline-focus block p-base bg-warning-base text-center text-black underline';\n if (this.classes) {\n classNames += ' ' + this.classes;\n }\n return classNames;\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ContentBaseComponent } from '../../../../shared/components';\n\n@Component({\n selector: 'desy-header-custom-navigation',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class HeaderCustomNavigationComponent extends ContentBaseComponent{\n\n\n}\n","import {Component, ContentChildren, Input} from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { HeaderSubnavData } from '../../interfaces';\nimport { HeaderNavigationData } from '../../interfaces';\nimport { HeaderDropdownData } from '../../interfaces';\nimport { HeaderOffcanvasData } from '../../interfaces';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\nimport {HeaderOffcanvasComponent} from './header-offcanvas/header-offcanvas.component';\nimport {HeaderNavigationComponent} from './header-navigation/header-navigation.component';\nimport {HeaderSubnavComponent} from './header-subnav/header-subnav.component';\nimport {HeaderDropdownComponent} from './header-dropdown/header-dropdown.component';\nimport {SkipLinkComponent} from '../skip-link/skip-link.component';\nimport { HeaderCustomNavigationComponent } from './header-custom-navigation/header-custom-navigation.component';\n\n@Component({\n selector: 'desy-header',\n templateUrl: './header.component.html'\n})\nexport class HeaderComponent extends AccessibilityComponent {\n\n @Input() classes: string;\n @Input() containerClasses: string;\n @Input() homepageUrl: string;\n @Input() homepageRouterLink: string;\n @Input() homepageFragment: string;\n @Input() expandedLogo: boolean;\n @Input() noLogo: boolean;\n @Input() customLogoHtml: string;\n @Input() customNavigationHtml: string;\n\n @Input() subnavData: HeaderSubnavData;\n @Input() navigationData: HeaderNavigationData;\n @Input() dropdownData: HeaderDropdownData;\n @Input() offcanvasData: HeaderOffcanvasData;\n\n @DesyContentChild({ onSetCallbackName: 'overrideSkipLinkParams'})\n @ContentChildren(SkipLinkComponent) skiplinkComponent: SkipLinkComponent;\n\n @DesyContentChild()\n @ContentChildren(HeaderSubnavComponent) subnavComponent: HeaderSubnavComponent;\n\n @DesyContentChild()\n @ContentChildren(HeaderCustomNavigationComponent) customNavigationComponent: HeaderCustomNavigationComponent;\n\n @DesyContentChild({ onSetCallbackName: 'overrideNavigationParams'})\n @ContentChildren(HeaderNavigationComponent) navigationComponent: HeaderNavigationComponent;\n\n @DesyContentChild()\n @ContentChildren(HeaderDropdownComponent) dropdownComponent: HeaderDropdownComponent;\n\n @DesyContentChild()\n @ContentChildren(HeaderOffcanvasComponent) offcanvasComponent: HeaderOffcanvasComponent;\n\n\n overrideSkipLinkParams(skiplinkComponent: SkipLinkComponent): void {\n skiplinkComponent.id = skiplinkComponent.id || 'skip-link';\n skiplinkComponent.text = 'Saltar al contenido principal';\n }\n\n overrideNavigationParams(navigationComponent: HeaderNavigationComponent): void {\n navigationComponent.idPrefix = 'header-nav-item';\n navigationComponent.ariaLabel = 'Menú principal';\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {NavigationItemData} from '../../../../interfaces';\nimport {ContentBaseComponent} from '../../../../../shared/components';\n\n@Component({\n selector: 'desy-footer-navigation-item',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class FooterNavigationItemComponent extends ContentBaseComponent implements NavigationItemData {\n @Input() href?: string;\n @Input() routerLink?: string;\n @Input() fragment?: string;\n}\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\nimport {NavigationData} from '../../../interfaces';\nimport {FooterNavigationItemComponent} from './footer-navigation-item/footer-navigation-item.component';\n\n@Component({\n selector: 'desy-footer-navigation',\n templateUrl: './footer-navigation.component.html'\n})\nexport class FooterNavigationComponent implements NavigationData {\n @Input() title: string;\n @Input() columns: number;\n\n @ContentChildren(FooterNavigationItemComponent) itemComponents: QueryList<FooterNavigationItemComponent>;\n}\n","import {Component, Input} from '@angular/core';\nimport {MetaItemData} from '../../../../interfaces';\nimport {ContentBaseComponent} from '../../../../../shared/components';\n\n@Component({\n selector: 'desy-footer-meta-item',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class FooterMetaItemComponent extends ContentBaseComponent implements MetaItemData {\n @Input() href?: string;\n @Input() routerLink?: string;\n @Input() fragment?: string;\n}\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\nimport {MetaData} from '../../../interfaces';\nimport {FooterMetaItemComponent} from './footer-meta-item/footer-meta-item.component';\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-footer-meta',\n template: ''\n})\nexport class FooterMetaComponent extends ContentBaseComponent implements MetaData {\n\n @Input() visuallyHiddenTitle: string;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n @ContentChildren(FooterMetaItemComponent) itemComponents: QueryList<FooterMetaItemComponent>;\n}\n","import { DescriptionComponent } from './../../../desy-commons/components/description/description.component';\nimport { DescriptionData } from '../../../desy-commons/interfaces/';\nimport {Component, ContentChildren, Input, QueryList} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\nimport {MetaData, MetaItemData, NavigationData, NavigationItemData} from '../../interfaces';\nimport {IconData} from '../../../desy-commons/interfaces';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\nimport {FooterNavigationComponent} from './footer-navigation/footer-navigation.component';\nimport {FooterMetaComponent} from './footer-meta/footer-meta.component';\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\n\n\n@Component({\n selector: 'desy-footer',\n templateUrl: './footer.component.html'\n})\nexport class FooterComponent extends AccessibilityComponent {\n\n @Input() meta: MetaData;\n @Input() navigation: NavigationData[];\n @Input() icon: IconData;\n @Input() containerClasses: string;\n @Input() classes: string;\n @Input() description: DescriptionData;\n @Input() noLogo: boolean;\n\n @DesyContentChild()\n @ContentChildren(IconComponent) iconComponent: IconComponent;\n\n @DesyContentChild()\n @ContentChildren(FooterMetaComponent) metaComponent: FooterMetaComponent;\n\n @DesyContentChild()\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent\n\n @ContentChildren(FooterNavigationComponent) navigationComponent: QueryList<FooterNavigationComponent>;\n\n\n getNavigationItems(): NavigationData[] {\n const navItems = this.navigationComponent && this.navigationComponent.length > 0 ? this.navigationComponent.toArray() : this.navigation;\n return navItems && navItems.length > 0 ? navItems : null;\n }\n\n getNavigationItemItems(navigation: NavigationData): NavigationItemData[] {\n return navigation instanceof FooterNavigationComponent ? navigation.itemComponents.toArray() : navigation.items;\n }\n\n getMetaItems(meta: MetaData): MetaItemData[] {\n return meta instanceof FooterMetaComponent ? meta.itemComponents.toArray() : meta.items;\n }\n\n getMetaContent(meta: MetaData): ContentComponent {\n return meta instanceof FooterMetaComponent ? meta.contentComponent : null;\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {ErrorSummaryData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-error-summary-item',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ErrorSummaryItemComponent extends ContentBaseComponent implements ErrorSummaryData {\n\n @Input() fragment: string;\n @Input() id: string;\n}\n","import {\n Component,\n Input,\n ContentChildren,\n QueryList\n} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\nimport {ErrorSummaryData} from '../../interfaces';\nimport {ErrorSummaryItemComponent} from './error-summary-item/error-summary-item.component';\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-error-summary',\n templateUrl: './error-summary.component.html'\n})\nexport class ErrorSummaryComponent extends AccessibilityComponent {\n\n @Input() titleText: string;\n @Input() titleHtml: string;\n @Input() descriptionText: string;\n @Input() descriptionHtml: string;\n @Input() classes: string;\n @Input() id: string;\n @Input() errorList: Array<ErrorSummaryData>;\n\n @DesyContentChild()\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\n\n @DesyContentChild()\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\n\n @ContentChildren(ErrorSummaryItemComponent) errorComponentList: QueryList<ErrorSummaryItemComponent>;\n\n lastErrorItemCount: number;\n\n getErrorItemList(): ErrorSummaryData[] {\n let errorItemList: ErrorSummaryData[];\n if (this.errorComponentList && this.errorComponentList.length > 0) {\n errorItemList = this.errorComponentList.toArray();\n } else {\n errorItemList = this.errorList ? this.errorList : null;\n }\n\n const lastLength = this.lastErrorItemCount;\n this.lastErrorItemCount = errorItemList ? errorItemList.length : null;\n\n return errorItemList;\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {MenuHorizontalItemData, MenuHorizontalItemEventData} from '../../../interfaces';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-menu-horizontal-item',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class MenuHorizontalItemComponent extends ContentBaseComponent implements MenuHorizontalItemData {\n\n @Input() href?: string;\n @Input() routerLink?: string|any[];\n @Input() fragment?: string;\n @Input() target?: string;\n @Input() id?: string;\n @Input() active?: boolean;\n @Input() disabled?: boolean;\n @Input() classes?: string;\n\n @Output() clickEvent = new EventEmitter<MenuHorizontalItemEventData>();\n @Output() activeChange = new EventEmitter<boolean>();\n\n}\n","import {Component, ContentChildren, EventEmitter, Input, OnChanges, Output, QueryList, SimpleChanges} from '@angular/core';\nimport { MenuHorizontalItemData, MenuHorizontalItemEventData } from '../../interfaces';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport {MenuHorizontalItemComponent} from './menu-horizontal-item/menu-horizontal-item.component';\n\n@Component({\n selector: 'desy-menu-horizontal',\n templateUrl: './menu-horizontal.component.html'\n})\nexport class MenuHorizontalComponent extends AccessibilityComponent {\n\n @Input() id: string;\n @Input() idPrefix: string;\n @Input() classes: string;\n @Input() items: MenuHorizontalItemData[];\n\n @ContentChildren(MenuHorizontalItemComponent) itemComponents: QueryList<MenuHorizontalItemComponent>;\n\n @Output() clickEvent = new EventEmitter<MenuHorizontalItemEventData>();\n\n onClick(event: any, item: MenuHorizontalItemData): void {\n const itemsActiveChange = [];\n if (!item.active) {\n itemsActiveChange.push(item);\n }\n\n const itemList = this.getItemList();\n itemList.forEach(i => {\n if (i.active && i !== item) {\n itemsActiveChange.push(i);\n }\n i.active = false;\n });\n item.active = true;\n\n // Se emite el evento sólo para los items cuyo valor de active ha sido modificado\n itemsActiveChange.forEach(i => {\n if (i instanceof MenuHorizontalItemComponent) {\n i.activeChange.emit(i.active);\n }\n });\n\n this.clickEvent.emit({ item, event });\n if (item instanceof MenuHorizontalItemComponent) {\n item.clickEvent.emit({ item, event });\n }\n }\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : 'menu-item';\n }\n\n getItemList(): MenuHorizontalItemData[] {\n const itemList = this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items; \n return itemList;\n }\n\n\n getItemId(item: MenuHorizontalItemData, index: number): string {\n let id;\n if (item.id) {\n id = item.id;\n } else if (index === 0) {\n id = this.getIdPrefix();\n } else {\n id = this.getIdPrefix() + '-' + index;\n }\n return id;\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {MenuVerticalSubItemsData} from '../../../interfaces';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-menu-vertical-item-sub-item',\n templateUrl: './menu-vertical-item-sub-item.component.html'\n})\nexport class MenuVerticalItemSubItemComponent extends ContentBaseComponent implements MenuVerticalSubItemsData {\n\n @Input() id?: string;\n @Input() classes?: string;\n @Input() href?: string;\n @Input() routerLink?: string;\n @Input() routerLinkActiveClasses?: string;\n @Input() fragment?: string;\n @Input() target?: string;\n @Input() disabled?: boolean;\n @Input() active?: boolean;\n @Input() divider?: boolean;\n @Input() title?: string;\n}\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\nimport {MenuVerticalSubData} from '../../../interfaces';\nimport {MenuVerticalItemSubItemComponent} from '../menu-vertical-item-sub-item/menu-vertical-item-sub-item.component';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-menu-vertical-item-sub',\n templateUrl: './menu-vertical-item-sub.component.html'\n})\nexport class MenuVerticalItemSubComponent extends ContentBaseComponent implements MenuVerticalSubData {\n @Input() classes?: string;\n\n @ContentChildren(MenuVerticalItemSubItemComponent) itemComponents: QueryList<MenuVerticalItemSubItemComponent>;\n}\n","import {Component, ContentChildren, Input} from '@angular/core';\nimport {MenuVerticalItemsData} from '../../../interfaces';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {MenuVerticalItemSubComponent} from '../menu-vertical-item-sub/menu-vertical-item-sub.component';\n\n@Component({\n selector: 'desy-menu-vertical-item',\n templateUrl: './menu-vertical-item.component.html'\n})\nexport class MenuVerticalItemComponent extends ContentBaseComponent implements MenuVerticalItemsData {\n\n @Input() id?: string;\n @Input() classes?: string;\n @Input() href?: string;\n @Input() routerLink?: string;\n @Input() routerLinkActiveClasses?: string;\n @Input() fragment?: string;\n @Input() target?: string;\n @Input() disabled?: boolean;\n @Input() active?: boolean;\n @Input() divider?: boolean;\n @Input() title?: string;\n @Input() expanded?: boolean; // no se utiliza\n\n @DesyContentChild()\n @ContentChildren(MenuVerticalItemSubComponent) subComponent: MenuVerticalItemSubComponent;\n\n}\n","import {Component, Input, ContentChildren, QueryList} from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport {MenuVerticalItemsData, MenuVerticalSubData, MenuVerticalSubItemsData} from '../../interfaces';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { StringUtils } from '../../../shared/utils/string-utils';\nimport {MenuVerticalItemComponent} from './menu-vertical-item/menu-vertical-item.component';\nimport {MenuVerticalItemSubComponent} from './menu-vertical-item-sub/menu-vertical-item-sub.component';\n\n@Component({\n selector: 'desy-menu-vertical',\n templateUrl: './menu-vertical.component.html',\n animations: [\n trigger('displayMenuVertical', [\n state('void', style({\n opacity: '0.0',\n transform: 'scale(0.95)'\n })),\n state('*', style({\n opacity: '1.0',\n transform: 'scale(1.0)'\n })),\n transition(':enter', [\n animate('100ms ease-out')\n ])\n ])\n ]\n})\nexport class MenuVerticalComponent extends AccessibilityComponent {\n\n @Input() id: string;\n @Input() idPrefix: string;\n @Input() items: MenuVerticalItemsData[];\n @Input() hasUnderline: boolean;\n @Input() classes: string;\n\n @ContentChildren(MenuVerticalItemComponent) itemComponents: QueryList<MenuVerticalItemComponent>;\n\n getItemHtml(item: MenuVerticalItemsData): string {\n let itemHtml: string;\n if (item.active) {\n itemHtml = item.html ? `<strong>${ item.html }</strong>` : `<strong>${ StringUtils.escapeHtml(item.text) }</strong>`;\n } else {\n itemHtml = item.html;\n }\n\n return itemHtml;\n }\n\n getId(item: MenuVerticalItemsData, i: number): string {\n if (item.id) {\n return item.id;\n } else {\n const idPrefix = this.idPrefix ? this.idPrefix : 'nav-item';\n if (i === 0) {\n return idPrefix + '-0';\n } else {\n return idPrefix + '-' + i;\n }\n }\n }\n\n getSubItemId(item: MenuVerticalItemsData, itemIndex: number, subItemIndex: number): string{\n let subItemId: string;\n const sub = this.getItemSub(item);\n const subItems = this.getSubItems(sub);\n const subItem = subItems[subItemIndex];\n if (subItem) {\n if (subItem.id) {\n subItemId = subItem.id;\n } else {\n const itemId = this.getId(item, itemIndex);\n subItemId = subItemIndex === 0 ? `sub-${itemId}` : `sub-${itemId}-${subItemIndex}`;\n }\n }\n\n return subItemId;\n }\n\n getItems(): MenuVerticalItemsData[] {\n const itemList = this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\n return itemList;\n }\n\n getItemSub(item: MenuVerticalItemsData): MenuVerticalSubData {\n return item instanceof MenuVerticalItemComponent ? item.subComponent : item.sub;\n }\n\n getSubItems(sub: MenuVerticalSubData): MenuVerticalSubItemsData[] {\n const subItems = sub instanceof MenuVerticalItemSubComponent ? sub.itemComponents.toArray() : sub.items;\n return subItems && subItems.length > 0 ? subItems : null;\n }\n}\n","import {\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Output,\n QueryList,\n AfterContentChecked\n} from '@angular/core';\n\n@Directive({\n selector: '[desyMenubaritem]'\n})\nexport class MenubaritemDirective implements AfterContentChecked {\n @ContentChild('link', { read: ElementRef }) link: ElementRef;\n @ContentChild('itemContentWrapper', { read: ElementRef }) itemContentWrapper: ElementRef;\n @ContentChild('popupMenu', { read: ElementRef }) popupMenu: ElementRef;\n @ContentChildren('popupMenuItem', { read: ElementRef, descendants: true}) popupMenuItems: QueryList<ElementRef>;\n\n @Output() contentChanged: EventEmitter<any> = new EventEmitter();\n\n private lastPopupMenu: ElementRef;\n private lastPopupMenuItems: QueryList<ElementRef>;\n private lastItemContentWrapper: ElementRef;\n private lastLink: ElementRef;\n\n contentHasBeenChecked = false;\n\n constructor(public elementRef: ElementRef) { }\n\n ngAfterContentChecked(): void {\n if (this.popupMenu !== this.lastPopupMenu || this.popupMenuItems !== this.lastPopupMenuItems\n || this.link !== this.lastLink || this.itemContentWrapper !== this.lastItemContentWrapper) {\n setTimeout(() => this.contentChanged.emit());\n this.lastPopupMenu = this.popupMenu;\n this.lastPopupMenuItems = this.popupMenuItems;\n this.lastLink = this.link;\n this.lastItemContentWrapper = this.itemContentWrapper;\n }\n\n if (!this.contentHasBeenChecked) {\n setTimeout(() => this.contentHasBeenChecked = true);\n }\n }\n\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {MenubarItemSubItemSubItem} from '../../../../interfaces/menubar-item-sub-item-sub-item';\nimport {ContentBaseComponent} from '../../../../../shared/components';\n\n@Component({\n selector: 'desy-menubar-subsubitem',\n templateUrl: './menubar-subsubitem.component.html'\n})\nexport class MenubarSubsubitemComponent extends ContentBaseComponent implements MenubarItemSubItemSubItem {\n\n @Input() html?: string;\n @Input() text?: string;\n @Input() checked?: boolean;\n\n @Output() selected = new EventEmitter<any>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n}\n","import {\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport {MenubarItemSubItem} from '../../../../interfaces/menubar-item-sub-item';\nimport {MenubarItemSubItemSubItem} from '../../../../interfaces/menubar-item-sub-item-sub-item';\nimport {MenubarSubsubitemComponent} from '../menubar-subsubitem/menubar-subsubitem.component';\nimport {ContentBaseComponent} from '../../../../../shared/components';\n\n@Component({\n selector: 'desy-menubar-subitem',\n templateUrl: './menubar-subitem.component.html'\n})\nexport class MenubarSubitemComponent extends ContentBaseComponent implements MenubarItemSubItem {\n\n @Input() text?: string;\n @Input() html?: string;\n @Input() checked?: boolean;\n @Input() items?: MenubarItemSubItemSubItem[];\n\n @Output() selected = new EventEmitter<any>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n @ContentChildren(MenubarSubsubitemComponent) subItems: QueryList<MenubarSubsubitemComponent>;\n\n public getSubItems(): MenubarSubsubitemComponent[] {\n return this.subItems.toArray();\n }\n\n}\n","import {\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport {MenubarItem} from '../../../../interfaces/menubar-item';\nimport {MenubarItemSub} from '../../../../interfaces/menubar-item-sub';\nimport {ContentBaseComponent} from '../../../../../shared/components';\nimport {MenubarSubitemComponent} from '../menubar-subitem/menubar-subitem.component';\n\n@Component({\n selector: 'desy-menubar-item',\n templateUrl: './menubar-item.component.html'\n})\nexport class MenubarItemComponent extends ContentBaseComponent implements MenubarItem {\n\n @Input() href?: string;\n @Input() target?: string;\n @Input() routerLink?: string|any[];\n @Input() routerLinkActiveClasses?: string;\n @Input() fragment?: string;\n @Input() text?: string;\n @Input() html?: string;\n @Input() id?: string;\n @Input() sub?: MenubarItemSub;\n @Input() classes?: string;\n\n @Input() title?: string;\n @Input() disabled?: boolean;\n @Input() active?: boolean;\n\n @Output() selected = new EventEmitter<any>();\n\n @ContentChildren(MenubarSubitemComponent) subItems: QueryList<MenubarSubitemComponent>;\n\n public getSubItems(): MenubarSubitemComponent[] {\n return this.subItems.toArray();\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../../shared/components';\n\n@Component({\n selector: 'desy-menubar-label',\n templateUrl: './menubar-label.component.html'\n})\nexport class MenubarLabelComponent extends ContentBaseComponent {\n\n @Input() classes: string;\n\n}\n","import {\n AfterViewInit, ChangeDetectorRef,\n Component, ContentChildren,\n ElementRef, EventEmitter,\n HostBinding,\n Input,\n OnChanges, Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\nimport {MenubarItem} from '../../interfaces/menubar-item';\nimport {MenubaritemDirective} from './directives/menubaritem.directive';\nimport {MenubarItemSubItem} from '../../interfaces/menubar-item-sub-item';\nimport {MenubarItemSubItemSubItem} from '../../interfaces/menubar-item-sub-item-sub-item';\nimport {LabelComponent} from '../../../desy-forms/components/label/label.component';\nimport {LabelData} from '../../../desy-forms/interfaces';\nimport {StringUtils} from '../../../shared/utils/string-utils';\nimport {MenubarItemComponent} from './components/menubar-item/menubar-item.component';\nimport {MenubarSubitemComponent} from './components/menubar-subitem/menubar-subitem.component';\nimport {MenubarSubsubitemComponent} from './components/menubar-subsubitem/menubar-subsubitem.component';\nimport {MenubarLabelComponent} from './components/menubar-label/menubar-label.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-menubar',\n templateUrl: './menubar.component.html'\n})\nexport class MenubarComponent extends AccessibilityComponent implements OnChanges, AfterViewInit {\n\n @Input() idPrefix: string;\n @Input() items: MenubarItem[];\n @Output() itemsChange = new EventEmitter<MenubarItem[]>();\n @Output() activeItemChange = new EventEmitter<MenubarItem>();\n @Output() activeSubItemChange = new EventEmitter<MenubarItemSubItem|MenubarItemSubItemSubItem>();\n\n /**\n * label, diferentes formas de implementar, enumeradas por prioridad\n * 1) incluir componente menubar-label anidado\n * 2) incluir template\n * 3) incluir objeto label (interfaz expuesta)\n * 4) incluir legendText - incluir un label con solo un texto\n */\n @Input() labelRef: TemplateRef<LabelComponent>;\n @Input() labelData: LabelData;\n @Input() labelText: string;\n\n @Input() @HostBinding('class') classes: any;\n @HostBinding('class.c-menubar') cfg = true\n @Input() @HostBinding('attr.id') id: any;\n\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.aria-modal') ariaModalData: any\n\n @ViewChild('menubar', { read: ElementRef }) menubar: ElementRef;\n @ViewChildren(MenubaritemDirective) menuItems: QueryList<MenubaritemDirective>;\n @DesyContentChild() @ContentChildren(MenubarLabelComponent) labelComponent: MenubarLabelComponent;\n @ContentChildren(MenubarItemComponent) itemComponentList: QueryList<MenubarItemComponent>;\n\n menuData: any[];\n viewInit = false;\n isFocused: boolean;\n currentFocusItemIndex = 0;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n ngOnChanges(changes?: SimpleChanges): void {\n this.roleData = this.role ? this.role : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.ariaModalData = this.ariaModal ? this.ariaModal : null;\n if (this.viewInit) {\n this.checkChanges();\n }\n }\n\n ngAfterViewInit(): void {\n this.viewInit = true;\n this.checkChanges();\n }\n\n checkChanges(): void {\n if (!this.menuItems) {\n return;\n }\n \n this.menuData = [];\n this.getItems().forEach((_, index) => {\n const itemData = {\n open: false,\n currentFocusSubItemIndex: 0,\n currentFocusSubSubItemIndex: 0,\n menuItem: this.menuItems.toArray()[index]\n };\n this.menuData.push(itemData);\n });\n\n if (this.viewInit) {\n this.checkRequired();\n }\n\n\n const lastCurrentFocusItemIndex = this.currentFocusItemIndex;\n const items = this.getItems();\n if (items) {\n while (!this.isItemFocusable(this.currentFocusItemIndex % items.length)) {\n this.currentFocusItemIndex = (this.currentFocusItemIndex + items.length + 1) % items.length;\n if (this.currentFocusItemIndex === lastCurrentFocusItemIndex) {\n break;\n }\n }\n }\n }\n\n\n /*\n * Eventos\n */\n\n handleMenuFocusIn(): void {\n this.isFocused = true;\n this.changeDetectorRef.detectChanges();\n }\n\n handleMenuFocusOut(event): void {\n if (!this.menubar.nativeElement.contains(event.relatedTarget)) {\n this.closeMenu();\n }\n this.isFocused = false;\n this.changeDetectorRef.detectChanges();\n }\n\n handleMenuItemClick(event, itemIndex: number): void {\n if (this.hasPopupMenu(itemIndex)) {\n event.preventDefault();\n const isOpen = this.menuData[itemIndex].open;\n this.closeMenu();\n if (!isOpen) {\n this.openMenu(itemIndex);\n }\n } else {\n this.activateMenuItem(itemIndex);\n }\n }\n\n handleMenuItemKeydown(event: KeyboardEvent, itemIndex: number): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n if (this.hasPopupMenu(itemIndex)) {\n this.openMenu(itemIndex);\n setTimeout(() => this.focusFirstSubItem(itemIndex));\n event.stopPropagation();\n event.preventDefault();\n }\n break;\n\n case 'Escape':\n if (this.hasPopupMenu(itemIndex)) {\n this.closeMenu(itemIndex);\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n this.focusNextAvailableItem(itemIndex, -1);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n this.focusNextAvailableItem(itemIndex, +1);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n if (this.hasPopupMenu(itemIndex)) {\n this.openMenu(itemIndex);\n setTimeout(() => this.focusLastSubItem(itemIndex));\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Home':\n case 'PageUp':\n if (this.hasPopupMenu(itemIndex)) {\n this.closeMenu();\n }\n this.focusFirstItem();\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'End':\n case 'PageDown':\n if (this.hasPopupMenu(itemIndex)) {\n this.closeMenu();\n }\n this.focusLastItem();\n event.stopPropagation();\n event.preventDefault();\n break;\n\n default:\n if (this.isPrintableChar(event.key)) {\n this.focusItemByFirstChar(event.key);\n event.stopPropagation();\n event.preventDefault();\n }\n break;\n }\n }\n\n handleMenuItemMouseOver(itemIndex: number): void {\n this.focusItem(itemIndex, true);\n }\n\n handlePopupMenuItemClick(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\n this.focusItem(itemIndex);\n this.closeMenu(itemIndex);\n }\n\n handlePopupMenuItemKeydown(event: KeyboardEvent, itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n const currentSubIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\n const currentSubSubIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\n const items = this.getItems();\n switch (event.key) {\n case ' ':\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\n if (this.mustCloseAfterSelectPopupItem(itemIndex, subItemIndex, subSubItemIndex)) {\n this.closeMenu(itemIndex);\n this.focusItem(itemIndex);\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Enter':\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\n this.closeMenu(itemIndex);\n this.focusItem(itemIndex);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Escape':\n this.closeMenu(itemIndex);\n this.focusItem(itemIndex);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, -1);\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength - 1) % listLength);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, +1);\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength + 1) % listLength);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n this.closeMenu(itemIndex);\n this.focusItem((itemIndex + items.length - 1) % items.length);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n this.closeMenu(itemIndex);\n this.focusItem((itemIndex + items.length + 1) % items.length);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Home':\n case 'PageUp':\n this.focusFirstSubItem(itemIndex);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'End':\n case 'PageDown':\n this.focusLastSubItem(itemIndex);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Tab':\n this.closeMenu(itemIndex);\n this.focusItem(itemIndex);\n break;\n\n default:\n if (this.isPrintableChar(event.key)) {\n this.focusSubItemByFirstChar(itemIndex, event.key);\n event.stopPropagation();\n event.preventDefault();\n }\n break;\n }\n }\n\n handlePopupMenuItemMouseOver(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n this.focusSubItem(itemIndex, subItemIndex, subSubItemIndex);\n }\n\n /*\n * Comunes\n */\n\n checkRequired(): void {\n\n\n const items = this.getItems();\n\n // No se ha puesto label required porque en algunos ejemplos de desy-html no aparece\n }\n\n\n activateMenuItem(itemIndex: number): void {\n const items = this.getItems();\n this.activeItemChange.emit(items[itemIndex] as MenubarItem);\n if (items[itemIndex] instanceof MenubarItemComponent) {\n (items[itemIndex] as MenubarItemComponent).selected.emit();\n }\n }\n\n activatePopupMenuItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\n let subSubItems = [];\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\n subSubItems = this.getSubItemSubitems(item);\n item = subSubItems[subSubItemIndex];\n }\n\n let checkedChange = false;\n if (item.role === 'menuitemcheckbox') {\n item.checked = !item.checked;\n checkedChange = true;\n } else if (item.role === 'menuitemradio') {\n checkedChange = !item.checked;\n subSubItems.forEach(i => i.checked = false);\n item.checked = true;\n }\n\n this.itemsChange.emit(items);\n this.activeSubItemChange.emit(item as MenubarItem);\n if (item instanceof MenubarSubitemComponent || item instanceof MenubarSubsubitemComponent) {\n item.selected.emit();\n\n if (checkedChange) {\n item.checkedChange.emit(item.checked);\n }\n }\n }\n\n mustCloseAfterSelectPopupItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\n const subSubItems = this.getSubItemSubitems(item);\n item = subSubItems[subSubItemIndex];\n }\n\n return item.role !== 'menuitemcheckbox' && item.role !== 'menuitemradio';\n }\n\n openMenu(itemIndex: number): void {\n const wasOpened = this.menuData[itemIndex].open;\n this.menuData[itemIndex].open = true;\n if (wasOpened) {\n this.activateMenuItem(itemIndex);\n }\n }\n\n closeMenu(itemIndex?: number): void {\n if (itemIndex !== null && itemIndex !== undefined) {\n this.menuData[itemIndex].open = false;\n } else {\n this.menuData.forEach(item => item.open = false);\n }\n }\n\n hasPopupMenu(itemIndex: number): boolean {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n return items[itemIndex].sub && subItems && subItems.length > 0;\n }\n\n private isPrintableChar(str: string): boolean {\n return str.length === 1 && !!str.match(/\\S/);\n }\n\n private getMenuDataIndex(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): number {\n let menuDataIndex = 0;\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n for (let i = 0; i < subItemIndex; i++) {\n const subItem = subItems[i];\n const subSubItems = this.getSubItemSubitems(subItem);\n menuDataIndex += subSubItems && subSubItems.length > 0 ? subSubItems.length : 1;\n }\n\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\n menuDataIndex += subSubItemIndex;\n }\n\n return menuDataIndex;\n }\n\n /*\n * Comunes - focus\n */\n\n focusItem(itemIndex: number, hover?: boolean): void {\n const hasFocus = this.menubar.nativeElement.contains(document.activeElement);\n const isOpen = this.menuData[this.currentFocusItemIndex].open;\n\n if (!hover || hasFocus) {\n this.menuData[itemIndex].menuItem.link.nativeElement.focus();\n }\n\n this.closeMenu();\n if (isOpen && this.hasPopupMenu(itemIndex)) {\n this.openMenu(itemIndex);\n }\n\n this.currentFocusItemIndex = itemIndex;\n }\n\n focusNextAvailableItem(fromItemIndex: number, step: number): void {\n let nextItem = fromItemIndex;\n const items = this.getItems();\n do {\n nextItem = (nextItem + items.length + step) % items.length;\n } while (!this.isItemFocusable(nextItem) && nextItem !== fromItemIndex);\n\n if (nextItem !== fromItemIndex) {\n this.focusItem(nextItem);\n }\n }\n\n focusFirstItem(): void {\n if (this.isItemFocusable(0)) {\n this.focusItem(0);\n } else {\n this.focusNextAvailableItem(0, +1);\n }\n }\n\n focusLastItem(): void {\n const items = this.getItems();\n if (this.isItemFocusable(items.length - 1)) {\n this.focusItem(items.length - 1);\n } else {\n this.focusNextAvailableItem(items.length - 1, -1);\n }\n }\n\n isItemFocusable(itemIndex: number): boolean {\n return !this.getItems()[itemIndex].disabled;\n }\n\n focusItemByFirstChar(char: string): void {\n const itemContents: string[] = this.menuItems.map(menuItem => menuItem.itemContentWrapper.nativeElement.textContent);\n let index = this.currentFocusItemIndex;\n let foundIndex = -1;\n do {\n index = (index + itemContents.length + 1) % itemContents.length;\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\n && this.isItemFocusable(index)) {\n foundIndex = index;\n }\n } while (foundIndex === -1 && index !== this.currentFocusItemIndex);\n\n if (foundIndex >= 0) {\n this.focusItem(foundIndex);\n }\n }\n\n focusSubItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n if (this.menuData[itemIndex].menuItem.popupMenuItems.length > 0) {\n const menuDataIndex = this.getMenuDataIndex(itemIndex, subItemIndex, subSubItemIndex);\n\n this.menuData[itemIndex].currentFocusSubItemIndex = subItemIndex;\n this.menuData[itemIndex].currentFocusSubSubItemIndex = subSubItemIndex;\n const elem = this.menuData[itemIndex].menuItem.popupMenuItems.toArray()[menuDataIndex].nativeElement;\n if (elem) {\n elem.focus();\n } else {\n console.error('No subitem to focus');\n }\n } else {\n console.error('No subitems');\n }\n }\n\n focusNextAvailableSubItem(itemIndex: number, fromItemSubIndex: number, fromItemSubSubIndex: number, step: number): void {\n let nextSubIndex = fromItemSubIndex;\n let nextSubSubIndex = fromItemSubSubIndex;\n let allSubItemsChecked;\n const items = this.getItems();\n do {\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step);\n nextSubIndex = nextIndexes.subIndex;\n nextSubSubIndex = nextIndexes.subSubIndex;\n allSubItemsChecked = (fromItemSubIndex === nextSubIndex && fromItemSubSubIndex === nextSubSubIndex);\n } while (!this.isSubItemFocusable(itemIndex, nextSubIndex, nextSubSubIndex) && !allSubItemsChecked);\n\n if (!allSubItemsChecked) {\n this.focusSubItem(itemIndex, nextSubIndex, nextSubSubIndex);\n }\n }\n\n focusFirstSubItem(itemIndex: number): void {\n let firstSubSubItem = null;\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n const subSubItems = this.getSubItemSubitems(subItems[0]);\n if (subSubItems && subSubItems.length > 0) {\n firstSubSubItem = 0;\n }\n\n if (this.isSubItemFocusable(itemIndex, 0, firstSubSubItem)) {\n this.focusSubItem(itemIndex, 0, firstSubSubItem);\n } else {\n this.focusNextAvailableSubItem(itemIndex, 0, firstSubSubItem, +1);\n }\n }\n\n focusLastSubItem(itemIndex: number): void {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n const lastItemIndex = subItems.length - 1;\n const lastItem = subItems[lastItemIndex];\n const subSubItems = this.getSubItemSubitems(lastItem);\n let lastSubSubItem = null;\n if (subSubItems && subSubItems.length > 0) {\n lastSubSubItem = subSubItems.length - 1;\n }\n\n if (this.isSubItemFocusable(itemIndex, lastItemIndex, lastSubSubItem)) {\n this.focusSubItem(itemIndex, lastItemIndex, lastSubSubItem);\n } else {\n this.focusNextAvailableSubItem(itemIndex, lastItemIndex, lastSubSubItem, -1);\n }\n }\n\n isSubItemFocusable(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\n const subSubItems = this.getSubItemSubitems(item);\n item = subSubItems[subSubItemIndex];\n }\n\n let isFocusable = false;\n if (item.role !== 'separator' && item.role !== 'none') {\n isFocusable = true;\n }\n\n return isFocusable;\n }\n\n focusSubItemByFirstChar(itemIndex: number, char: string): void {\n const itemContents: string[] = this.menuItems.toArray()[itemIndex].popupMenuItems.map(menuItem => menuItem.nativeElement.textContent);\n let subItemIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\n let subSubItemIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\n let foundSubIndex = -1;\n let foundSubSubIndex = null;\n let allSubItemsChecked = false;\n const items = this.getItems();\n do {\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, subItemIndex, subSubItemIndex, +1);\n subItemIndex = nextIndexes.subIndex;\n subSubItemIndex = nextIndexes.subSubIndex;\n const index = this.getMenuDataIndex(itemIndex, subItemIndex, subSubItemIndex);\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\n && this.isSubItemFocusable(itemIndex, subItemIndex, subSubItemIndex)) {\n foundSubIndex = subItemIndex;\n foundSubSubIndex = subSubItemIndex;\n }\n allSubItemsChecked = (this.menuData[itemIndex].currentFocusSubItemIndex === subItemIndex\n && this.menuData[itemIndex].currentFocusSubSubItemIndex === subSubItemIndex);\n } while (foundSubIndex === -1 && !allSubItemsChecked);\n\n if (foundSubIndex >= 0) {\n this.focusSubItem(itemIndex, foundSubIndex, foundSubSubIndex);\n }\n }\n\n /*\n * Metodos para facilitar contenido\n */\n\n getItems(): MenubarItem[]|MenubarItemComponent[] {\n let items;\n if (this.itemComponentList && this.itemComponentList.length > 0) {\n items = this.itemComponentList.toArray();\n } else {\n items = this.items;\n }\n return items;\n }\n\n getItemSubitems(item: MenubarItem|MenubarItemComponent): MenubarItemSubItem[]|MenubarSubitemComponent[] {\n let subItems = [];\n if (item instanceof MenubarItemComponent){\n subItems = item.getSubItems();\n }\n\n if (!subItems || subItems.length === 0) {\n subItems = item.sub ? item.sub.items : [];\n }\n\n return subItems;\n }\n\n getSubItemSubitems(item: MenubarItemSubItem|MenubarSubitemComponent): MenubarItemSubItemSubItem[]|MenubarSubsubitemComponent[] {\n let subItems = [];\n\n if (item.role === 'group') {\n if (item instanceof MenubarSubitemComponent) {\n subItems = item.getSubItems();\n }\n\n if (!subItems || subItems.length === 0) {\n subItems = item.items ? item.items : [];\n }\n }\n\n return subItems;\n }\n\n getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step): { subIndex: number, subSubIndex?: number} {\n const subItems = this.getItemSubitems(items[itemIndex]);\n const subSubItems = this.getSubItemSubitems(subItems[nextSubIndex]);\n\n let checkNextSubItem = true;\n if (subSubItems && subSubItems.length > 0) {\n if (nextSubSubIndex + step >= 0 && nextSubSubIndex + step < subSubItems.length) {\n nextSubSubIndex += step;\n checkNextSubItem = false;\n }\n }\n\n if (checkNextSubItem) {\n nextSubIndex = (nextSubIndex + step + subItems.length) % subItems.length;\n const nextSubItemItems = this.getSubItemSubitems(subItems[nextSubIndex]);\n if (nextSubItemItems && nextSubItemItems.length > 0) {\n nextSubSubIndex = ((step > 0 ? -1 : 0) + step + nextSubItemItems.length) % nextSubItemItems.length;\n } else {\n nextSubSubIndex = null;\n }\n }\n\n return {subIndex: nextSubIndex, subSubIndex: nextSubSubIndex};\n }\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : this.id + 'menubar-item';\n }\n\n getLabelRef(): TemplateRef<any> {\n return this.labelComponent ? this.labelComponent.getContent() : this.labelRef;\n }\n\n getLabelContent(): string {\n let content: string;\n if (this.labelData) {\n content = this.labelData.html ? this.labelData.html : `<p>${ StringUtils.escapeHtml(this.labelData.text) }</p>`;\n } else if (this.labelText) {\n content = `<p>${ StringUtils.escapeHtml(this.labelText) }</p>`;\n }\n return content;\n }\n\n getItemId(item, index: number): string {\n let id: string;\n if (item) {\n if (item.id) {\n id = item.id;\n } else {\n id = index === 0 ? this.getIdPrefix() : `${this.getIdPrefix()}-${index}`;\n }\n }\n return id;\n }\n\n getPopupStyle(itemIndex: number): object {\n let style = {};\n if (this.menuData && itemIndex < this.menuData.length) {\n const menuItem = this.menuData[itemIndex].menuItem;\n const rect = menuItem.link.nativeElement.getBoundingClientRect();\n if (this.menuData[itemIndex].open) {\n style = {\n position: 'absolute',\n top: (rect.height - 1) + 'px',\n left: '0px',\n zIndex: 100,\n display: 'block'\n };\n } else {\n style = {\n zIndex: 0,\n display: 'none'\n };\n }\n }\n\n return style;\n }\n\n getSubItemId(item, index: number, parentId: string): string {\n let id: string;\n if (item) {\n if (item.id) {\n id = item.id;\n } else {\n id = index === 0 ? `sub-${parentId}` : `sub-${parentId}-${index}`;\n }\n }\n return id;\n }\n\n getSubSubItemAriaChecked(subsubitem): string {\n let ariaChecked = null;\n if (subsubitem.role === 'menuitemcheckbox' || subsubitem.role === 'menuitemradio') {\n ariaChecked = !!subsubitem.checked;\n }\n return ariaChecked;\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {NotificationItemsData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-notification-item',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class NotificationItemComponent extends ContentBaseComponent implements NotificationItemsData {\n @Input() href: string;\n @Input() target?: string;\n @Input() routerLink?: string;\n @Input() fragment?: string;\n @Input() id: string;\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges\n} from '@angular/core';\n\nimport { AccessibilityComponent } from '../../../shared/components';\nimport {NotificationItemsData} from '../../interfaces';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\nimport {NotificationItemComponent} from './notification-item/notification-item.component';\nimport {ContentData, DescriptionData, IconData, TitleData} from '../../../desy-commons/interfaces';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-notification',\n templateUrl: './notification.component.html',\n animations: [\n trigger('displayNotification', [\n state('void', style({\n opacity: '0.0',\n transform: 'scaleY(0.95)'\n })),\n state('*', style({\n opacity: '1.0',\n transform: 'scaleY(1.0)'\n })),\n transition(':enter', [\n animate('100ms ease-out')\n ]),\n transition(':leave', [\n animate('75ms ease-in')\n ])\n ])\n ]\n})\nexport class NotificationComponent extends AccessibilityComponent {\n\n @Input() id: string;\n @Input() classes: string;\n @Input() isOpen = true;\n @Output() isOpenChange = new EventEmitter<boolean>();\n\n @Input() title: TitleData;\n @Input() description: DescriptionData;\n @Input() content: ContentData;\n @Input() items: NotificationItemsData[];\n\n @Input() icon: IconData;\n @Input() type: string;\n @Input() isDismissible: boolean;\n @Input() headingLevel: number;\n\n @DesyContentChild()\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\n\n @DesyContentChild()\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n\n @DesyContentChild()\n @ContentChildren(IconComponent) iconComponent: IconComponent;\n\n @ContentChildren(NotificationItemComponent) itemCompontents: QueryList<NotificationItemComponent>;\n\n isDismissing = false;\n displayDefaultIcon = false;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n dismiss(): void {\n // Se emite 75ms más tarde para poder visualizar la animación en cualquier caso\n this.isDismissing = true;\n setTimeout(() => {\n this.isDismissing = false;\n this.isOpenChange.emit(false);\n }, 75);\n }\n\n getType(): string {\n let type: string;\n if (this.type){\n type = this.type.toLocaleLowerCase();\n }\n return type;\n }\n\n getItems(): NotificationItemsData[] {\n return this.itemCompontents && this.itemCompontents.length > 0 ? this.itemCompontents.toArray() : this.items;\n }\n\n handleIconEmpty(empty: boolean): void {\n this.displayDefaultIcon = empty;\n\n // Como que el contenido vacío se comprueba a posteriori, es necesario forzar la detección de cambios para mostrar el icono por defecto\n this.changeDetectorRef.detectChanges();\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {CellData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-table-cell',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class TableCellComponent extends ContentBaseComponent implements CellData {\n @Input() classes?: string;\n @Input() id?: string;\n @Input() colspan?: number;\n @Input() rowspan?: number;\n}\n","import {Component, ContentChildren, QueryList} from '@angular/core';\nimport {TableCellComponent} from './table-cell.component';\n\n@Component({\n selector: 'desy-table-header',\n template: ''\n})\nexport class TableHeaderComponent {\n @ContentChildren(TableCellComponent) cells: QueryList<TableCellComponent>;\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-table-caption',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class TableCaptionComponent extends ContentBaseComponent {\n @Input() classes: string;\n}\n","import {Component, ContentChildren, QueryList} from '@angular/core';\nimport {TableCellComponent} from './table-cell.component';\n\n@Component({\n selector: 'desy-table-row',\n template: ''\n})\nexport class TableRowComponent {\n @ContentChildren(TableCellComponent) cells: QueryList<TableCellComponent>;\n}\n","import {Component, Input, ContentChildren, QueryList} from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport {CellData, WrapperData} from '../../interfaces';\nimport {TableHeaderComponent} from './components/table-header.component';\nimport {TableCellComponent} from './components/table-cell.component';\nimport {TableCaptionComponent} from './components/table-caption.component';\nimport {TableRowComponent} from './components/table-row.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n\n@Component({\n selector: 'desy-table',\n templateUrl: './table.component.html'\n})\nexport class TableComponent extends AccessibilityComponent {\n\n @Input() rows: Array<CellData[]>;\n @Input() head: CellData[];\n @Input() caption: string;\n @Input() captionClasses: string;\n @Input() firstCellIsHeader: boolean;\n @Input() classes: string;\n @Input() id: string;\n @Input() wrapper: WrapperData;\n\n @DesyContentChild()\n @ContentChildren(TableCaptionComponent) captionComponent: TableCaptionComponent;\n\n @DesyContentChild()\n @ContentChildren(TableHeaderComponent) headerComponent: TableHeaderComponent;\n\n @ContentChildren(TableRowComponent) rowComponentList: QueryList<TableRowComponent>;\n\n getCaptionClass(): string {\n return this.captionComponent ? this.captionComponent.classes : this.captionClasses;\n }\n\n getHeaderCells(): TableCellComponent[]|CellData[] {\n let headerCells = [];\n if (this.headerComponent && this.headerComponent.cells) {\n headerCells = this.headerComponent.cells.toArray();\n } else if (this.head) {\n headerCells = this.head;\n }\n return headerCells;\n }\n\n getRows(): TableRowComponent[]|CellData[][] {\n const rowList = this.rowComponentList && this.rowComponentList.length > 0 ? this.rowComponentList.toArray() : this.rows;\n return rowList;\n }\n\n getRowCells(row: TableRowComponent|CellData[]): TableCellComponent[]|CellData[] {\n return row instanceof TableRowComponent ? row.cells.toArray() : row;\n }\n\n}\n\n","import { CellData } from './cell-data';\n\nexport interface HeadCellData extends CellData {\n orderBy?: OrderBy; // Possible values `none`, `asc`, `desc`.\n hasFilter?: boolean;\n filterClasses?: string;\n hasSelect?: boolean;\n}\n\nexport interface HeadCellModelData extends HeadCellData {\n valueFilter?: string;\n activeFilter?: boolean;\n valueSelect?: string;\n activeSelect?: boolean;\n}\n\nexport enum OrderBy {\n none = 'none',\n asc = 'asc',\n desc = 'desc'\n}\n","import { OptionComponent } from './../../../../desy-forms/components/select/option/option.component';\nimport { SelectComponent } from './../../../../desy-forms/components/select/select.component';\nimport { Component, ContentChildren, EventEmitter, Input, Output, QueryList, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: 'desy-table-advanced-select',\n template: ''\n})\nexport class TableAdvancedSelectComponent extends SelectComponent{\n isSelect = true;\n\n @Input() value: any;\n @Output() valueChange = new EventEmitter<any>();\n\n @ContentChildren(OptionComponent) selectItemComponentList: QueryList<OptionComponent>;\n}","import { ContentComponent } from './../../../../desy-commons/components/content/content.component';\nimport { TableAdvancedSelectComponent } from './table-advanced-select.component';\nimport { DesyContentChild } from '../../../../shared/decorators/desy-content-child.decorator';\nimport {Component, ContentChildren, Input} from '@angular/core';\nimport {HeadCellModelData, OrderBy} from '../../../interfaces';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-table-advanced-header-cell',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class TableAdvancedHeaderCellComponent extends ContentBaseComponent implements HeadCellModelData {\n @Input() classes: string;\n @Input() id: string;\n @Input() colspan: number;\n @Input() rowspan: number;\n @Input() orderBy: OrderBy; // Possible values `none`, `asc`, `desc`.\n @Input() hasFilter: boolean;\n @Input() filterClasses: string;\n @Input() hasSelect?: boolean;\n valueFilter?: string;\n activeFilter?: boolean;\n valueSelect?: string;\n activeSelect?: boolean;\n\n @DesyContentChild()\n @ContentChildren(TableAdvancedSelectComponent) selectComponent?: TableAdvancedSelectComponent;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent?: ContentComponent;\n}\n","import {Component, ContentChildren, QueryList} from '@angular/core';\nimport {TableAdvancedHeaderCellComponent} from './table-advanced-header-cell.component';\n\n@Component({\n selector: 'desy-table-advanced-header',\n template: ''\n})\nexport class TableAdvancedHeaderComponent {\n @ContentChildren(TableAdvancedHeaderCellComponent) cells: QueryList<TableAdvancedHeaderCellComponent>;\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {CellData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-table-advanced-row-cell',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class TableAdvancedRowCellComponent extends ContentBaseComponent implements CellData {\n @Input() classes?: string;\n @Input() id?: string;\n @Input() colspan?: number;\n @Input() rowspan?: number;\n}\n","import {Component, ContentChildren, EventEmitter, Input, Output, QueryList} from '@angular/core';\nimport {TableAdvancedRowCellComponent} from './table-advanced-row-cell.component';\n\n@Component({\n selector: 'desy-table-advanced-row',\n template: ''\n})\nexport class TableAdvancedRowComponent {\n\n @ContentChildren(TableAdvancedRowCellComponent) cellsList: QueryList<TableAdvancedRowCellComponent>;\n\n @Input() id: string;\n @Input() checked: boolean;\n @Output() checkedChange: EventEmitter<boolean> = new EventEmitter();\n}\n","import {Directive, ElementRef, Input} from '@angular/core';\nimport {RowData} from '../interfaces';\nimport {TableAdvancedRowComponent} from '../components/table-advanced/components/table-advanced-row.component';\n\n/**\n * Permite gestionar celdas de una fila de la tabla\n */\n@Directive({\n selector: '[desyCell]'\n})\nexport class CellDirective {\n\n @Input() row: RowData|TableAdvancedRowComponent;\n @Input() rowIndex: number;\n @Input() columnIndex: number;\n\n constructor(private element: ElementRef) { }\n\n public getContent(): string {\n return this.element.nativeElement.textContent;\n }\n}\n","import {ContentChildren, Directive, Input, QueryList} from '@angular/core';\nimport {CellDirective} from './cell.directive';\nimport {RowData} from '../interfaces';\nimport {TableAdvancedRowComponent} from '../components/table-advanced/components/table-advanced-row.component';\n\n/**\n * Permite gestionar filas de la tabla\n */\n@Directive({\n selector: '[desyRow]'\n})\nexport class RowDirective {\n\n @ContentChildren(CellDirective) contentCells: QueryList<CellDirective>;\n @Input() desyRow: RowData|TableAdvancedRowComponent;\n\n\n /**\n * Devuelve la celda ubicada en la columna indicada\n * @param column índice de la columna\n */\n public getCell(column: number): CellDirective {\n return this.contentCells.find(cell => cell.columnIndex === column);\n }\n}\n","import { ContentComponent } from './../../../desy-commons/components/content/content.component';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\nimport {SearchUtils} from '../../../shared/utils/search-utils';\nimport {HeadCellModelData, OrderBy, RowData, WrapperData} from '../../interfaces';\nimport {TableCaptionComponent} from '../table/components/table-caption.component';\nimport {TableAdvancedHeaderCellComponent} from './components/table-advanced-header-cell.component';\nimport {TableAdvancedHeaderComponent} from './components/table-advanced-header.component';\nimport {TableAdvancedRowComponent} from './components/table-advanced-row.component';\nimport {CellDirective} from '../../directives/cell.directive';\nimport {RowDirective} from '../../directives/row.directive';\nimport {RecalculateTableParams} from '../../interfaces/recalculate-table-params';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\nimport { TableAdvancedSelectComponent } from './components/table-advanced-select.component';\nimport { SelectItemData } from '../../../desy-forms/interfaces/select-item-data';\n\n@Component({\n selector: 'desy-table-advanced',\n templateUrl: './table-advanced.component.html'\n})\nexport class TableAdvancedComponent extends AccessibilityComponent implements AfterViewInit {\n\n @Input() rows: RowData[]; // original data\n @Input() head: HeadCellModelData[];\n\n @Input() caption: string;\n @Input() captionClasses: string;\n @Input() firstCellIsHeader: boolean;\n @Input() hasCheckboxes: boolean;\n @Input() idPrefix: string;\n @Input() classes: string;\n @Input() checkboxClasses: string;\n @Input() id: string;\n @Input() wrapper: WrapperData;\n\n\n @DesyContentChild()\n @ContentChildren(TableCaptionComponent) captionComponent: TableCaptionComponent;\n\n @DesyContentChild()\n @ContentChildren(TableAdvancedHeaderComponent) headerComponent: TableAdvancedHeaderComponent;\n\n @ContentChildren(TableAdvancedRowComponent) rowComponentList: QueryList<TableAdvancedRowComponent>;\n @ViewChildren(RowDirective) rowData: QueryList<RowDirective>;\n\n @Output() rowsChange = new EventEmitter();\n @Output() rowsChecked = new EventEmitter();\n @Output() recalculateTable = new EventEmitter<RecalculateTableParams>();\n\n visibleRows: RowData[]|TableAdvancedRowComponent[];\n orderByType = OrderBy;\n isReset: boolean;\n\n constructor(private el: ElementRef, private changeDetector: ChangeDetectorRef) {\n super();\n }\n\n ngAfterViewInit(): void {\n const elemntsFocus = this.el.nativeElement.querySelector('[tabindex]');\n if (elemntsFocus) {\n elemntsFocus.setAttribute('tabindex', '0');\n }\n this.recalculateVisibleElements();\n }\n\n /**\n * Refresca las filas visibles tras realizarse una búsqueda o una ordenación\n */\n recalculateVisibleElements(): void {\n const recalculateParams = this.buildRecalculateParams();\n\n // Si se captura el evento recalculateTable se deja al usuario la responsabilidad de filtrar y ordenar los elementos.\n if (this.recalculateTable.observers.length > 0) {\n this.recalculateTable.emit(recalculateParams);\n this.changeDetector.markForCheck();\n } else {\n\n // Se deben mostrar todas las filas temporalmente para poder aplicar el filtro y la ordenación sobre el contenido insertado\n this.visibleRows = this.getRows();\n this.changeDetector.detectChanges();\n\n // Se aplica el filtro y la ordenación\n let rowData = this.filterRows(recalculateParams, this.rowData.toArray());\n rowData = this.sortRows(recalculateParams, rowData);\n this.visibleRows = rowData.map(r => r.desyRow) as RowData[]|TableAdvancedRowComponent[];\n this.changeDetector.detectChanges();\n }\n\n }\n\n /**\n * Construye los parámetros necesarios para recalcular la tabla, indicando los filtros y la ordenación\n */\n private buildRecalculateParams(): RecalculateTableParams {\n const params = {\n filters: [],\n sort: null\n };\n\n const head = this.getHeaderCells() as (HeadCellModelData|TableAdvancedHeaderCellComponent)[];\n if (head) {\n head.forEach((headerCell, headerCellIndex) => {\n if (headerCell.hasFilter && headerCell.activeFilter) {\n params.filters.push({ columnIndex: headerCellIndex, filterText: headerCell.valueFilter });\n }\n if(headerCell.hasSelect && headerCell.activeSelect){\n params.filters.push({ columnIndex: headerCellIndex, filterText: headerCell.valueSelect });\n }\n });\n\n const orderByColumnIndex = head.findIndex(cell => cell.orderBy && cell.orderBy !== OrderBy.none);\n params.sort = (orderByColumnIndex >= 0) ? { columnIndex: orderByColumnIndex, order: head[orderByColumnIndex].orderBy } : null;\n }\n\n return params;\n }\n\n /**\n * funciones de recoger ids, y caracteristicas\n */\n\n hasFilters(): boolean {\n const head = this.getHeaderCells();\n return head ? head.findIndex(cell => (cell.hasFilter) || (cell.hasSelect)) >= 0 : false;\n }\n\n getHeaderCells(): HeadCellModelData[]|TableAdvancedHeaderCellComponent[] {\n return this.headerComponent && this.headerComponent.cells.length > 0 ? this.headerComponent.cells.toArray() : this.head;\n }\n\n getRows(): RowData[]|TableAdvancedRowComponent[] {\n let rows = [];\n if (this.rowComponentList.length > 0) {\n rows = this.rowComponentList.toArray();\n } else if (this.rows) {\n rows = this.rows;\n }\n return rows;\n }\n\n /**\n * Si se sobreescribe el comportamiento por defecto de filtrado y ordenación, se utilizarán las indicadas desde fuera del\n * componente (ya sea por parámetro o por contenido).\n * Si no se sobreescribe, devuelve las filas calculadas.\n */\n getVisibleRows(): RowData[]|TableAdvancedRowComponent[] {\n return this.recalculateTable.observers.length > 0 ? this.getRows() : this.visibleRows;\n }\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : 'id-table-row';\n }\n\n getIdHeader(index: number): string {\n return this.getIdPrefix() + '-header-' + index;\n }\n\n getIdRowCheckbox(index: number): string {\n return this.getIdPrefix() + '-checkbox-' + index;\n }\n\n getIdHeaderFilter(index: number): string {\n return this.getIdPrefix() + '-header-filter-' + index;\n }\n\n getIdHeaderSelect(index: number): string {\n return this.getIdPrefix() + '-header-select-' + index;\n }\n\n getCaptionClass(): string {\n return this.captionComponent ? this.captionComponent.classes : this.captionClasses;\n }\n\n getStringOrderBy(orderBy: OrderBy): string {\n if (orderBy === OrderBy.asc){\n return 'ascending';\n } else if (orderBy === OrderBy.desc){\n return 'descending';\n } else if (orderBy === OrderBy.none){\n return 'none';\n }\n }\n\n getSelectForItem(item: TableAdvancedHeaderCellComponent): TableAdvancedSelectComponent{\n return item.selectComponent ? item.selectComponent : null;\n }\n\n getItemSelectOptions(item: TableAdvancedSelectComponent): SelectItemData[] {\n return item.selectItemComponentList && item.selectItemComponentList.length > 0 ?\n item.selectItemComponentList.toArray() : item.items;\n }\n\n getContentComponent(item: TableAdvancedHeaderCellComponent): ContentComponent{\n return item.contentComponent ? item.contentComponent : null;\n }\n\n\n /**\n * checks\n */\n handleCheckboxChange(row: RowData|TableAdvancedRowComponent): void {\n if (row instanceof TableAdvancedRowComponent) {\n row.checkedChange.emit(row.checked);\n }\n this.notifyCheckedChange();\n }\n\n /**\n * Permite desmarcar todas las filas\n */\n private uncheckAll(): void{\n this.getRows().forEach(r => {\n const mustEmit = r.checked && r instanceof TableAdvancedRowComponent;\n r.checked = false;\n if (mustEmit) {\n (r as TableAdvancedRowComponent).checkedChange.emit(r.checked);\n }\n });\n this.notifyCheckedChange();\n }\n\n /**\n * Notifica cambios en las filas\n */\n private notifyCheckedChange(): void {\n if (this.rowComponentList.length === 0) {\n this.rowsChange.emit(this.rows);\n }\n\n const rowChecks: any = {};\n this.getRows().forEach(r => rowChecks[r.id] = !!r.checked); // Se aplican también a las no visibles\n this.rowsChecked.emit(rowChecks);\n }\n\n\n /**\n * busqueda\n */\n handleInputSearch(item: HeadCellModelData): void {\n if (item.hasFilter) { // si tiene buscador\n item.activeFilter = !!item.valueFilter;\n this.uncheckAll();\n }\n if(item.hasSelect){ //Si tiene seleccionable\n item.activeSelect = !!item.valueSelect;\n this.uncheckAll();\n }\n\n this.recalculateVisibleElements();\n }\n\n /**\n * Se filtran las filas según lo especificado en la barra de búsqueda de cada columna.\n * Si no hay búsqueda sse devuelven todas las filas.\n * @param recalculateParams parametros para recalcular los elementos visibles\n * @param rows lista con todas las filas\n * @return lista de filas filtrada\n */\n private filterRows(recalculateParams: RecalculateTableParams, rows: RowDirective[]): RowDirective[] {\n let filteredRows = rows;\n recalculateParams.filters.forEach(filter => {\n filteredRows = filteredRows.filter(row =>\n SearchUtils.containsAnyWordFrom(row.getCell(filter.columnIndex).getContent(), filter.filterText));\n });\n return filteredRows;\n }\n\n /**\n * ordenacion\n */\n\n /**\n * Permite indicar que se debe ordenar la tabla\n * @param index indice de la columna\n */\n handleSortByColumn(index: number): void {\n const head = this.getHeaderCells();\n if (head) {\n head.forEach((cell, cellIndex) => {\n if (cell.orderBy) {\n cell.orderBy = cellIndex === index ? this.getNextDirection(cell) : OrderBy.none;\n }\n });\n }\n\n this.recalculateVisibleElements();\n }\n\n\n /**\n * Ordena las filas indicadas según la columna especificada en la cabecera\n * @param recalculateParams parametros para recalcular los elementos visibles\n * @param rows filas de la tabla a ordenar\n * @return mismas filas pero ordenadas por la columna indicada\n */\n private sortRows(recalculateParams: RecalculateTableParams, rows: RowDirective[]): RowDirective[] {\n let sortedRows = rows;\n if (recalculateParams.sort) {\n const columnIndex = recalculateParams.sort.columnIndex;\n const isAsc = recalculateParams.sort.order === OrderBy.asc;\n sortedRows = rows.sort((a, b) =>\n this.compareCellContent(a.getCell(columnIndex), b.getCell(columnIndex), isAsc));\n }\n\n return sortedRows;\n }\n\n /**\n * Compara el contenido de dos celdas. Este se invierte si el orden especificado es descendente.\n */\n compareCellContent(a: CellDirective, b: CellDirective, isAsc: boolean): number{\n let result;\n const aComparable = this.cleanCurrency(a.getContent());\n const bComparable = this.cleanCurrency(b.getContent());\n\n if (isNaN(+aComparable) && isNaN(+bComparable) ) { // son textos\n result = aComparable.localeCompare(bComparable, 'es', { sensitivity: 'base', ignorePunctuation: true });\n }else{ // son numeros\n result = aComparable.localeCompare(bComparable, undefined, { numeric: true });\n }\n\n return result * (isAsc ? 1 : -1);\n }\n\n /**\n * se calcula la ordenación nueva\n */\n private getNextDirection(item: HeadCellModelData): OrderBy {\n if (item.orderBy === OrderBy.none || item.orderBy === OrderBy.desc) {\n return OrderBy.asc;\n } else {\n return OrderBy.desc;\n }\n }\n\n /**\n * si es una cantidad de dinero se quita € para poder comparar los numeros\n */\n private cleanCurrency(txt: string): string {\n if (/[\\d.,]+[\\€]/g.test(txt)) {\n txt = txt.replace(/€/g, '');\n }\n return txt;\n }\n\n selectFilter(item: TableAdvancedSelectComponent, itemValue: any): void {\n item.valueChange.emit(itemValue);\n\n const head = this.getHeaderCells();\n const rows = this.getRows();\n if (head && rows) {\n head.forEach((cell: TableAdvancedHeaderCellComponent, cellIndex) => {\n });\n rows.forEach(row => {\n });\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component, ComponentFactoryResolver, ComponentRef,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef, Type,\n ViewChild, ViewContainerRef\n} from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\n\ntype AlertCreationCallback = ((dialog: AlertComponent, caller: ComponentRef<any>) => void);\n\n@Component({\n selector: 'desy-alert',\n templateUrl: './alert.component.html'\n})\nexport class AlertComponent extends AccessibilityComponent implements OnDestroy, AfterViewInit {\n\n @ViewChild('alertWrapper') alertWrapper: ElementRef;\n @ViewChild('container', {read: ViewContainerRef}) container: ViewContainerRef;\n\n @Input() id: string;\n @Input() classes: string;\n @Input() caller: TemplateRef<any>;\n @Input() focusFirst: boolean;\n\n @Input() set active(value: boolean) {\n setTimeout(() => {\n this._active = value;\n this.cdRef.detectChanges();\n this.handleActiveState();\n });\n }\n get active(): boolean {\n return this._active;\n }\n @Output() activeChange = new EventEmitter<boolean>();\n\n private _active: boolean;\n public callerContext: any;\n public callerType: Type<any>;\n public onCallerCreationCallback: AlertCreationCallback;\n\n private lastActiveState: boolean = undefined;\n private hasViewinit = false;\n private createdCallerFromType = false;\n\n constructor(private cdRef: ChangeDetectorRef, private factoryResolver: ComponentFactoryResolver) {\n super();\n }\n\n ngOnDestroy(): void {\n this.active = false;\n }\n\n ngAfterViewInit(): void {\n\n this.hasViewinit = true;\n this.handleActiveState();\n }\n\n dismiss(): void {\n this.activeChange.emit(false);\n }\n\n handleActiveState(): void {\n if (this._active && this.callerType && !this.createdCallerFromType) {\n const factory = this.factoryResolver.resolveComponentFactory(this.callerType);\n const component = this.container.createComponent(factory);\n if (this.onCallerCreationCallback) {\n this.onCallerCreationCallback(this, component);\n }\n this.createdCallerFromType = true;\n }\n\n if (this._active !== this.lastActiveState && this.hasViewinit) {\n this.lastActiveState = this._active;\n\n if (this._active && this.focusFirst) {\n this.cdRef.detectChanges();\n const focusElem = FocusUtils.getFirstFocusableElement(this.alertWrapper.nativeElement as HTMLElement);\n if (focusElem) {\n focusElem.focus();\n }\n }\n }\n }\n}\n","import {Component, ContentChildren, Input} from '@angular/core';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {AccordionHeaderData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-accordion-header',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class AccordionHeaderComponent extends ContentBaseComponent implements AccordionHeaderData {\n\n @Input() classes?: string;\n\n}\n","import { Component, Input } from '@angular/core';\nimport { ContentBaseComponent } from '../../../../shared/components';\n\n@Component({\n selector: 'desy-accordion-item-show-button',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class AccordionItemShowButtonComponent extends ContentBaseComponent {\n\n @Input() classes: string;\n}\n","import { Component, Input } from '@angular/core';\nimport { ContentBaseComponent } from '../../../../shared/components';\n\n@Component({\n selector: 'desy-accordion-item-hide-button',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class AccordionItemHideButtonComponent extends ContentBaseComponent {\n\n @Input() classes: string;\n}\n","import {Component, ContentChildren, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {AccordionItemData} from '../../../interfaces';\nimport {AccordionHeaderComponent} from '../accordion-header/accordion-header.component';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\nimport {AccessibilityComponent} from '../../../../shared/components';\nimport {AccordionItemShowButtonComponent} from '../../accordion-history/accordion-item-show-button/accordion-item-show-button.component';\nimport {AccordionItemHideButtonComponent} from '../../accordion-history/accordion-item-hide-button/accordion-item-hide-button.component';\n\n@Component({\n selector: 'desy-accordion-item',\n template: '',\n})\nexport class AccordionItemComponent extends AccessibilityComponent implements AccordionItemData {\n\n @Input() id: string;\n @Input() open: boolean;\n @Input() classes: string;\n\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @DesyContentChild()\n @ContentChildren(AccordionHeaderComponent) headerComponent: AccordionHeaderComponent;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n\n @DesyContentChild()\n @ContentChildren(AccordionItemShowButtonComponent) showHeaderButton: AccordionItemShowButtonComponent;\n \n @DesyContentChild()\n @ContentChildren(AccordionItemHideButtonComponent) hideHeaderButton: AccordionItemHideButtonComponent;\n\n}\n","import {Component, ContentChildren, ElementRef, HostBinding, Input, OnChanges, QueryList, SimpleChanges, ViewChildren} from '@angular/core';\nimport {AccordionHeaderData} from '../../interfaces';\nimport {AccessibilityComponent} from '../../../shared/components';\nimport {AccordionItemData} from '../../interfaces';\nimport {AccordionHeaderComponent} from './accordion-header/accordion-header.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\nimport {AccordionItemComponent} from './accordion-item/accordion-item.component';\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\n\n\n@Component({\n selector: 'desy-accordion',\n templateUrl: './accordion.component.html'\n})\nexport class AccordionComponent extends AccessibilityComponent implements OnChanges {\n \n @ViewChildren('itemSelector') itemSelectors: QueryList<ElementRef>;\n\n @Input() idPrefix: string;\n @Input() allowToggle: boolean;\n @Input() allowMultiple: boolean;\n @Input() heading: AccordionHeaderData;\n @Input() headingLevel;\n @Input() showControl: boolean;\n @Input() items: AccordionItemData[];\n \n @Input() @HostBinding('class') classes: any;\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.aria-modal') ariaModalData: any\n \n @DesyContentChild()\n @ContentChildren(AccordionHeaderComponent) headingComponent: AccordionHeaderComponent;\n @ContentChildren(AccordionItemComponent) itemComponentList: QueryList<AccordionItemComponent>;\n\n showAll = true;\n currentItem: number;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.roleData = this.role ? this.role : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.ariaModalData = this.ariaModal ? this.ariaModal : null;\n }\n\n getItemId(item, index: number): string {\n let id;\n if (item.id) {\n id = item.id;\n } else {\n if (index === 0) {\n id = this.idPrefix ? this.idPrefix : undefined;\n } else {\n id = this.idPrefix ? this.idPrefix + '-' + index : index;\n }\n }\n return id;\n }\n\n changeAll(): void {\n const items = this.getItems();\n items.forEach(item => {\n const isChange = item.open !== this.showAll;\n item.open = this.showAll;\n if (isChange && item instanceof AccordionItemComponent) {\n item.openChange.emit(item.open);\n }\n });\n this.showAll = !this.showAll;\n }\n\n toggleItem(item: AccordionItemData): void {\n if (!item.open || this.allowToggle) {\n const newOpenValue = !item.open;\n if (!this.allowMultiple) {\n const items = this.getItems();\n items.forEach(it => {\n const wasOpen = it.open;\n it.open = false;\n if (wasOpen && it !== item && it instanceof AccordionItemComponent) {\n it.openChange.emit(it.open);\n }\n });\n }\n item.open = newOpenValue;\n if (item instanceof AccordionItemComponent) {\n item.openChange.emit(item.open);\n }\n }\n }\n\n focusFirstItem(event): void {\n event.preventDefault();\n this.itemSelectors.toArray()[0].nativeElement.focus();\n }\n\n focusLastItem(event): void {\n event.preventDefault();\n this.itemSelectors.toArray()[this.itemSelectors.length - 1].nativeElement.focus();\n }\n\n focusNextItem(event, focusedItem: number): void {\n event.preventDefault();\n const selectors = this.itemSelectors.toArray();\n if (selectors[(focusedItem + 1) % selectors.length] != null) {\n selectors[(focusedItem + 1) % selectors.length].nativeElement.focus();\n }\n }\n\n focusPreviousItem(event, focusedItem: number): void {\n event.preventDefault();\n const selectors = this.itemSelectors.toArray();\n if (selectors[(focusedItem + selectors.length - 1) % selectors.length] != null) {\n selectors[(focusedItem + selectors.length - 1) % selectors.length].nativeElement.focus();\n }\n }\n\n selectItem( i: number ): void {\n this.currentItem = i;\n }\n\n getTitleClasses(): string {\n let classes = 'c-h2 mb-base';\n if (this.headingComponent && this.headingComponent.classes) {\n classes = this.headingComponent.classes;\n } else if (this.heading && this.heading.classes) {\n classes = this.heading.classes;\n }\n return classes;\n }\n\n getItems(): AccordionItemData[] {\n const items = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\n return items;\n }\n\n getItemHeader(item: AccordionItemData): AccordionHeaderComponent {\n return item instanceof AccordionItemComponent ? item.headerComponent : null;\n } \n\n getItemContent(item: AccordionItemData): ContentComponent {\n return item instanceof AccordionItemComponent ? item.contentComponent : null;\n }\n\n}\n","import { Component, ContentChildren, Input } from '@angular/core';\nimport { DesyContentChild } from '../../../../shared/decorators/desy-content-child.decorator';\nimport { AccordionItemComponent } from '../../accordion/accordion-item/accordion-item.component';\nimport { AccordionItemHideButtonComponent } from '../accordion-item-hide-button/accordion-item-hide-button.component';\nimport { AccordionItemShowButtonComponent } from '../accordion-item-show-button/accordion-item-show-button.component';\n\n@Component({\n selector: 'desy-accordion-history-item',\n template: '',\n})\nexport class AccordionHistoryItemComponent extends AccordionItemComponent {\n\n @Input() status: 'current' | 'pending' | 'muted' | 'currentmuted' | any;\n @Input() disabled = false;\n\n @DesyContentChild()\n @ContentChildren(AccordionItemShowButtonComponent) showButton: AccordionItemShowButtonComponent;\n \n @DesyContentChild()\n @ContentChildren(AccordionItemHideButtonComponent) hideButton: AccordionItemHideButtonComponent;\n}\n","import { Component, ContentChildren, QueryList } from '@angular/core';\nimport { AccordionComponent } from '../accordion/accordion.component';\nimport { AccordionHistoryItemComponent } from './accordion-history-item/accordion-history-item.component';\n\n@Component({\n selector: 'desy-accordion-history',\n templateUrl: './accordion-history.component.html'\n})\nexport class AccordionHistoryComponent extends AccordionComponent {\n\n // Sobreescribe el tipo del listado de items\n @ContentChildren(AccordionHistoryItemComponent) itemComponentList: QueryList<AccordionHistoryItemComponent>;\n}\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\n\n@Component({\n selector: 'desy-spinner',\n templateUrl: './spinner.component.html'\n})\nexport class SpinnerComponent extends AccessibilityComponent implements OnChanges{\n\n @Input() text: string;\n\n @Input() @HostBinding('class') classes: any;\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.aria-modal') ariaModalData: any\n\n @Input() id: string;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classes = this.classes ? this.classes += ' c-spinner' : 'c-spinner'\n this.roleData = this.role ? this.role : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.ariaModalData = this.ariaModal ? this.ariaModal : null;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\n\n@Component({\n selector: 'desy-details',\n templateUrl: './details.component.html'\n})\nexport class DetailsComponent extends AccessibilityComponent {\n\n @Input() summaryText: string;\n @Input() summaryHtml: string;\n @Input() summaryClasses: string;\n @Input() containerClasses: string;\n @Input() id: string;\n @Input() open: boolean;\n @Input() classes: string;\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {TermDefinitionData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-term',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class TermComponent extends ContentBaseComponent implements TermDefinitionData {\n\n @Input() classes: string;\n @Input() id: string;\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {TermDefinitionData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-definition',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class DefinitionComponent extends ContentBaseComponent implements TermDefinitionData {\n\n @Input() classes: string;\n @Input() id: string;\n}\n","import {Component, ContentChildren, Input} from '@angular/core';\nimport {DescriptionItemData} from '../../../interfaces';\nimport {TermComponent} from '../term/term.component';\nimport {DefinitionComponent} from '../definition/definition.component';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-description-item',\n template: ''\n})\nexport class DescriptionItemComponent implements DescriptionItemData {\n\n @DesyContentChild()\n @ContentChildren(TermComponent) term: TermComponent;\n\n @DesyContentChild()\n @ContentChildren(DefinitionComponent) definition: DefinitionComponent;\n\n @Input() classes: string;\n @Input() id: string;\n\n}\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { DescriptionItemData } from '../../interfaces';\nimport {DescriptionItemComponent} from './description-item/description-item.component';\n\n@Component({\n selector: 'desy-description-list',\n templateUrl: './description-list.component.html'\n})\nexport class DescriptionListComponent extends AccessibilityComponent {\n\n @Input() items: Array<DescriptionItemData>;\n @ContentChildren(DescriptionItemComponent) itemComponents: QueryList<DescriptionItemComponent>;\n @Input() classes: string;\n @Input() id: string;\n\n\n getItems(): DescriptionItemData[]|DescriptionItemComponent[] {\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\n return items;\n }\n\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\nimport { AccessibilityAndContentRequiredComponent } from '../../../shared/components';\n\n@Component({\n selector: 'desy-collapsible',\n templateUrl: './collapsible.component.html',\n animations: [\n trigger('displayCollapsible', [\n state('void', style({\n opacity: '0.0',\n transform: 'scaleY(0.95)'\n })),\n state('*', style({\n opacity: '1.0',\n transform: 'scaleY(1.0)'\n })),\n transition(':enter', [\n animate('100ms ease-out')\n ]),\n transition(':leave', [\n animate('75ms ease-in')\n ])\n ])\n ]\n})\nexport class CollapsibleComponent extends AccessibilityAndContentRequiredComponent implements OnInit, OnChanges {\n\n @Input() headerText: string;\n @Input() headerHtml: string;\n @Input() id: string;\n @Input() open: boolean;\n @Input() classes: string;\n show: string;\n\n isOpen(): void {\n this.open = !this.open;\n this.toggleOpen();\n }\n\n toggleOpen(): void {\n if (this.open){\n this.show = 'Ocultar';\n } else {\n this.show = 'Mostrar';\n }\n }\n\n ngOnInit(): void {\n this.toggleOpen();\n }\n\n ngOnChanges(): void {\n this.toggleOpen();\n }\n\n}\n","import { Component } from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-item-content-right',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ItemContentRightComponent extends ContentBaseComponent {\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {ContentData} from '../../../../desy-commons/interfaces';\n\n@Component({\n selector: 'desy-item-content-bottom',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ItemContentBottomComponent extends ContentBaseComponent implements ContentData {\n @Input() classes: string;\n\n}\n","import { Component } from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-item-item',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class ItemItemComponent extends ContentBaseComponent {\n\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChildren,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\nimport {ContentData, DescriptionData, IconData, TitleData} from '../../../desy-commons/interfaces';\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\nimport {ItemContentRightComponent} from './item-content-right/item-content-right.component';\nimport {ItemContentBottomComponent} from './item-content-bottom/item-content-bottom.component';\nimport {ItemItemComponent} from './item-item/item-item.component';\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-item',\n templateUrl: './item.component.html'\n})\nexport class ItemComponent extends AccessibilityComponent implements OnChanges, OnInit {\n\n @Input() title: TitleData;\n @Input() description: DescriptionData;\n @Input() headingLevel: number;\n @Input() items: string[];\n @Input() content: ContentData;\n @Input() icon: IconData;\n @Input() isDraggable: boolean;\n @Input() isLocked: boolean;\n @Input() caller: TemplateRef<any>;\n\n @Input() @HostBinding('class') classes: any;\n @Input() @HostBinding('attr.id') id: any;\n\n @DesyContentChild()\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\n\n @DesyContentChild()\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\n\n @DesyContentChild()\n @ContentChildren(IconComponent) iconComponent: IconComponent;\n\n @DesyContentChild()\n @ContentChildren(ItemContentBottomComponent) contentBottomComponent: ItemContentBottomComponent;\n\n @DesyContentChild()\n @ContentChildren(ItemContentRightComponent) contentRightComponent: ItemContentRightComponent;\n\n @ContentChildren(ItemItemComponent) itemComponents: QueryList<ItemItemComponent>;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n ngOnInit(): void {\n const progressInterval = setInterval(() => {\n this.checkClasses();\n clearInterval(progressInterval); \n }, 500);\n }\n\n getItems(): string[]|ItemItemComponent[] {\n return this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\n }\n\n handleIconContentEmpty(isEmpty: boolean): void {\n this.changeDetectorRef.detectChanges();\n }\n\n getTitle(): TitleData {\n return this.titleComponent ? this.titleComponent : (this.title ? this.title : null);\n }\n\n getIcon(): IconData {\n return this.iconComponent ? this.iconComponent : (this.icon ? this.icon : null)\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.checkClasses();\n }\n\n checkClasses (): void {\n if(this.getTitle()){\n this.classes = this.classes ? this.classes += ' flex flex-wrap p-base bg-white border border-neutral-base rounded' : 'flex flex-wrap p-base bg-white border border-neutral-base rounded';\n this.id = this.id ? this.id : null;\n }\n }\n\n}\n","import { Component } from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-media-object-figure',\n templateUrl: './media-object-figure.component.html'\n})\nexport class MediaObjectFigureComponent extends ContentBaseComponent {\n\n}\n","import { AccessibilityComponent } from '../../../shared/components';\nimport { Component, Input, TemplateRef, ContentChildren, ElementRef, ViewChild, HostBinding, OnChanges, SimpleChanges } from '@angular/core';\nimport { ContentComponent } from '../../../desy-commons/components/content/content.component';\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\nimport { MediaObjectFigureComponent } from './media-object-figure/media-object-figure.component';\n\n@Component({\n selector: 'desy-media-object',\n templateUrl: './media-object.component.html'\n})\nexport class MediaObjectComponent extends AccessibilityComponent implements OnChanges { \n\n @Input() figureHtml: string;\n @Input() center: boolean;\n @Input() reverse: boolean;\n @Input() figureClasses: string;\n @Input() contenClasses: string;\n \n @Input() caller: TemplateRef<any>;\n @Input() id: string;\n \n @Input() @HostBinding('class') classes: any;\n @HostBinding('class.items-center') cfgr: boolean;\n\n //Accessibility\n @HostBinding('attr.id') idData: any;\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.tabindex') tabindexData: any;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n \n @DesyContentChild()\n @ContentChildren(MediaObjectFigureComponent) mediaObjectFigureComponent: MediaObjectFigureComponent;\n\n @ViewChild('mediaFigureContent', { read: ElementRef, static: true }) mediaFigureContent: ElementRef;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classes = 'flex' + (this.classes ? ' ' + this.classes : '') + (this.center==true ? ' ' : '');\n this.cfgr = this.center;\n this.idData = this.id ? this.id : null;\n this.roleData = this.role ? this.role : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.tabindexData = this.tabindex ? this.tabindex : null;\n }\n\n}\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { StatusIconData } from '../../interfaces/status-icon-data';\n\n@Component({\n selector: 'desy-status',\n templateUrl: './status.component.html'\n})\nexport class StatusComponent extends AccessibilityComponent implements OnChanges{\n\n @Input() text: string;\n @Input() id: string;\n @Input() icon: StatusIconData;\n\n @Input() @HostBinding('class') classes: any;\n\n //Accessibility\n @HostBinding('attr.id') idData: any;\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.tabindex') tabindexData: any;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classes = this.classes ? this.classes : null;\n this.idData = this.id ? this.id : null;\n this.roleData = this.role ? this.role : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.tabindexData = this.tabindex ? this.tabindex : null;\n }\n\n getType(): string {\n let type: string;\n if (this.icon && this.icon.type){\n type = this.icon.type.toLocaleLowerCase();\n } else {\n type = 'success';\n } \n return type;\n }\n}\n","import { Component, ContentChildren, HostBinding, Input, OnChanges, QueryList, SimpleChanges, TemplateRef } from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { DescriptionItemData, StatusItemTitleData, StatusData } from '../../interfaces';\nimport { ErrorMessageData, HintData } from '../../../desy-forms/interfaces';\nimport { DescriptionItemComponent } from '../description-list/description-item/description-item.component';\nimport { TitleComponent } from '../../../desy-commons/components/title/title.component';\nimport { HintComponent } from '../../../desy-forms/components/hint/hint.component';\nimport { ErrorMessageComponent } from '../../../desy-forms/components/error-message/error-message.component';\nimport { StatusComponent } from '../status/status.component';\nimport { ContentComponent } from '../../../desy-commons/components/content/content.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-status-item',\n templateUrl: './status-item.component.html'\n})\nexport class StatusItemComponent extends AccessibilityComponent implements OnChanges{ \n\n @Input() id: string; \n\n @Input() errorId: string;\n @Input() describedBy: string;\n\n @Input() title: StatusItemTitleData;\n @Input() hint: HintData;\n @Input() errorMessage: ErrorMessageData;\n @Input() items: DescriptionItemData[];\n @Input() status: StatusData;\n\n @Input() @HostBinding('class') classes: any;\n\n //Accessibility\n @HostBinding('attr.id') idData: any;\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.tabindex') tabindexData: any;\n\n @DesyContentChild()\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\n\n @DesyContentChild()\n @ContentChildren(HintComponent) hintComponent: HintComponent;\n\n @DesyContentChild()\n @ContentChildren(ErrorMessageComponent) errorMessageComponent: ErrorMessageComponent;\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n\n @ContentChildren(DescriptionItemComponent) itemComponents: QueryList<DescriptionItemComponent>;\n\n @DesyContentChild()\n @ContentChildren(StatusComponent) statusComponent: StatusComponent;\n @Input() caller: TemplateRef<any>;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classes = this.classes ? this.classes : null;\n this.idData = this.id ? this.id : null;\n this.roleData = this.role ? this.role : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.tabindexData = this.tabindex ? this.tabindex : null;\n }\n\n getItems(): DescriptionItemData[]|DescriptionItemComponent[] {\n return (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\nimport {TabsPanelData} from '../../../interfaces';\n\n@Component({\n selector: 'desy-panel',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class PanelComponent extends ContentBaseComponent implements TabsPanelData {\n\n @Input() classes: string;\n @Input() id: string;\n\n}","import {Component, ContentChildren, Input } from '@angular/core';\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\nimport { PanelComponent } from '../panel/panel.component';\nimport { TabsItemsData, TabsPanelData } from '../../../interfaces';\nimport { AccessibilityComponent } from '../../../../shared/components';\n\n@Component({\n selector: 'desy-tab-item',\n template: ''\n})\nexport class TabItemComponent extends AccessibilityComponent implements TabsItemsData {\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n\n @DesyContentChild()\n @ContentChildren(PanelComponent) panelComponent: PanelComponent;\n\n @Input() classes: string;\n @Input() disabled: boolean;\n @Input() id: string;\n panel?: TabsPanelData;\n\n}\n","import {\n AfterViewInit, ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { StringUtils } from '../../../shared/utils/string-utils';\nimport {TabsItemsData} from '../../interfaces';\nimport { TabItemComponent } from './tab-item/tab-item.component';\n\n@Component({\n selector: 'desy-tabs',\n templateUrl: './tabs.component.html'\n})\nexport class TabsComponent extends AccessibilityComponent implements AfterViewInit, OnChanges {\n\n @ContentChildren(TabItemComponent) itemComponents: QueryList<TabItemComponent>;\n @ViewChildren('tabSelector') tabSelectors: QueryList<ElementRef>;\n @ViewChildren('tabSelectorContentWrapper') tabSelectorContentWrapper: QueryList<ElementRef>;\n @ViewChild('tabSrOnly') tabSrOnly: ElementRef;\n\n\n @Input() id: string;\n @Input() idPrefix: string;\n @Input() headingLevel: number;\n \n @Input() title: string;\n @Input() tablistAriaLabel: string;\n @Input() items: TabsItemsData[];\n \n @Input() @HostBinding('class') classes: any;\n\n //Accessibility\n @HostBinding('attr.id') idData: any;\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.tabindex') tabindexData: any;\n\n currentTab = 0;\n currentPanel;\n\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classes = this.classes ? 'c-tabs ' + this.classes : 'c-tabs';\n this.idData = this.id ? this.id : null;\n this.roleData = this.role ? this.role : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.tabindexData = this.tabindex ? this.tabindex : null;\n }\n \n ngAfterViewInit(): void {\n if(this.items){\n const item = this.getItems();\n this.selectTab(item.findIndex(value => !value.disabled));\n }\n this.changeDetector.detectChanges();\n }\n\n getItems(): TabsItemsData[]|TabItemComponent[] {\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\n return items;\n }\n\n getItemPanel(tab: number): TabItemComponent {\n let panel;\n const items = this.getItems();\n const item = items[tab];\n if (item instanceof TabItemComponent){\n panel = item.panelComponent;\n }\n return panel;\n }\n\n\n getIdPrefix(): string {\n if (this.idPrefix) {\n return this.idPrefix;\n }\n }\n\n getItemId(index: number): string {\n let id;\n const item = this.getItems();\n if (item[index].id) {\n id = item[index].id;\n } else {\n id = this.getIdPrefix() + '-' + index;\n }\n return id;\n }\n\n isDisabled(item: TabsItemsData): boolean {\n return item.disabled ? true : null;\n }\n\n\n selectTab( i: number ): void {\n this.currentTab = i;\n const currentItem = this.getItems()[i];\n this.currentPanel = currentItem instanceof TabItemComponent ? currentItem.panelComponent : currentItem.panel;\n this.tabSrOnly.nativeElement.innerHTML = this.tabSelectorContentWrapper.toArray()[this.currentTab].nativeElement.innerHTML;\n }\n\n focusFirstTab(event?): void {\n if (event) {\n event.preventDefault();\n }\n\n const enabledTabs = this.tabSelectors.filter((item, index) => !item[index].disabled);\n enabledTabs[0].nativeElement.focus();\n }\n\n focusLastTab(event?): void {\n if (event) {\n event.preventDefault();\n }\n\n const enabledTabs = this.tabSelectors.filter((item, index) => !item[index].disabled);\n enabledTabs[enabledTabs.length - 1].nativeElement.focus();\n }\n\n focusNextTab(focusedTab: number): void {\n const item = this.getItems();\n let nextTab = (focusedTab + 1) % item.length;\n while (nextTab !== focusedTab) {\n if (!item[nextTab].disabled) {\n this.tabSelectors.find((i, index) => index === nextTab).nativeElement.focus();\n break;\n }\n nextTab = (nextTab + 1) % item.length;\n }\n }\n\n focusPreviousTab(focusedTab: number): void {\n const item = this.getItems();\n let previousTab = (focusedTab - 1 + item.length) % item.length;\n while (previousTab !== focusedTab) {\n if (!item[previousTab].disabled) {\n this.tabSelectors.find((i, index) => index === previousTab).nativeElement.focus();\n break;\n }\n previousTab = (previousTab - 1 + item.length) % item.length;\n }\n }\n\n getPanelContent(tab: number): string {\n const item = this.getItems();\n return item[tab].panel && item[tab].panel.text ? `<p>${ StringUtils.escapeHtml(item[tab].panel.text) }</p>` : null;\n }\n}\n","import {\n ComponentFactoryResolver, ComponentRef,\n Injectable,\n TemplateRef, Type\n} from '@angular/core';\nimport { AlertOptions } from '../interfaces/alert-options';\nimport { OpenAlertResult } from '../interfaces/open-alert-result';\nimport { AlertComponent } from '../components/alert/alert.component';\nimport { NotificationComponent } from '../../desy-nav/components/notification/notification.component';\nimport { NotificationOptions } from '../../desy-nav/interfaces/notification-options';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AlertService {\n\n constructor(private factoryResolver: ComponentFactoryResolver) { }\n\n public openAlert(caller: TemplateRef<any>|NotificationOptions, alertOptions: AlertOptions): Promise<OpenAlertResult> {\n return new Promise<OpenAlertResult>((resolve, reject) => {\n\n if (!caller) {\n reject('caller is required');\n }\n\n if (!alertOptions) {\n reject('alertOptions is required');\n }\n\n const alert = this.createAlert(alertOptions);\n const result: OpenAlertResult = {\n alert\n };\n\n\n if (caller instanceof TemplateRef) {\n alert.instance.caller = caller;\n resolve(result);\n } else {\n alert.instance.callerType = NotificationComponent;\n alert.instance.onCallerCreationCallback = (d, c) => {\n this.initNotification(d, c, caller);\n result.component = c;\n resolve(result);\n };\n }\n });\n }\n\n public closeAlert(alert: ComponentRef<AlertComponent>|AlertComponent): void {\n if (alert) {\n if (alert instanceof ComponentRef) {\n alert.instance.dismiss();\n } else {\n alert.dismiss();\n }\n }\n }\n\n public onCloseAlert(alert: ComponentRef<AlertComponent>|AlertComponent): Promise<void> {\n return new Promise<void>((resolve => {\n let a;\n if (alert instanceof ComponentRef) {\n a = alert.instance;\n } else {\n a = alert;\n }\n\n const subscription = a.activeChange.subscribe(() => {\n resolve();\n subscription.unsubscribe();\n });\n }));\n }\n\n\n private createAlert(alertOptions: AlertOptions): ComponentRef<AlertComponent> {\n const factory = this.factoryResolver.resolveComponentFactory(AlertComponent);\n const alert = alertOptions.place.createComponent<AlertComponent>(factory);\n\n alert.instance.active = true;\n if (alertOptions) {\n Object.assign(alert.instance, alertOptions);\n }\n\n this.onCloseAlert(alert).then(() => alert.destroy());\n\n return alert;\n }\n\n private initNotification(alert: AlertComponent, notificationRef: ComponentRef<NotificationComponent>,\n options: NotificationOptions): void {\n Object.assign(notificationRef.instance, options);\n if (options.isDismissible) {\n const subscription = notificationRef.instance.isOpenChange.subscribe(() => {\n this.closeAlert(alert);\n subscription.unsubscribe();\n });\n }\n }\n}\n","import {Component} from '@angular/core';\nimport {ContentBaseComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-tooltip-content',\n templateUrl: './tooltip-content.component.html'\n})\nexport class TooltipContentComponent extends ContentBaseComponent {\n}\n","import { ContentBaseComponent } from './../../../shared/components/content-base/content-base.component';\nimport { Component, Input } from '@angular/core';\nimport { ListboxItemData } from '../../../desy-buttons/interfaces/listbox-item-data';\n\n\n@Component({\n selector: 'desy-pagination-item-perpage',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class PaginationItemPerPageComponent extends ContentBaseComponent implements ListboxItemData {\n @Input() classes?: string;\n @Input() value: number;\n active: boolean;\n}\n","import { ContentBaseComponent } from './../../../shared/components/content-base/content-base.component';\nimport { Component, Input } from '@angular/core';\n\n\n@Component({\n selector: 'desy-pagination-listbox-label',\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\n})\nexport class PaginationListboxLabelComponent extends ContentBaseComponent {\n @Input() classes?: string;\n\n}\n","\nimport { Component, ContentChildren, EventEmitter, Input, OnChanges, Output, SimpleChanges, QueryList, AfterViewInit, HostBinding } from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\nimport { PaginationItemData } from '../../interfaces';\nimport { PaginationItemPerPageComponent } from '../pagination-item-perpage/pagination-item-perpage.component';\nimport { PaginationListboxLabelComponent } from '../pagination-listbox-label/pagination-listbox-label.component';\n\n\n@Component({\n selector: 'desy-pagination',\n templateUrl: './pagination.component.html'\n})\nexport class PaginationComponent extends AccessibilityComponent implements OnChanges, AfterViewInit { \n \n @Input() hasSelect: boolean;\n @Input() idPrefix: string;\n @Input() totalItems: number;\n @Input() itemsPerPage: number;\n @Input() hasPrevious: boolean;\n @Input() hasNext: boolean;\n @Input() previousText: string;\n @Input() nextText: string;\n @Input() hasSelectItemsPerPage: string;\n @Input() classes: string;\n\n @Input() @HostBinding('class') classesContainer: any;\n @Input() @HostBinding('attr.id') id: any;\n\n @DesyContentChild()\n @ContentChildren(PaginationListboxLabelComponent) listboxLabel: PaginationListboxLabelComponent;\n\n @ContentChildren(PaginationItemPerPageComponent) listboxItems: QueryList<PaginationItemPerPageComponent>;\n\n @Input() currentPage = 1; // == currentPageindex + 1\n @Output() currentPageChange = new EventEmitter<number>();\n\n nPages: number;\n items: PaginationItemData[];\n\n defaultText: boolean = false;\n\n readonly previousIcon = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"self-center h-2.5 w-2.5 mr-2\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M54.87 71.77a2.5 2.5 0 010-3.54L106 17.07A10 10 0 1091.89 2.93L35.43 59.39a15 15 0 000 21.22l56.46 56.46A10 10 0 10106 122.93z\" fill=\"currentColor\" /></svg>';\n readonly nextIcon = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"self-center h-2.5 w-2.5 ml-2\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M34 137.07a10 10 0 010-14.14l51.13-51.16a2.5 2.5 0 000-3.54L34 17.07A10 10 0 0148.11 2.93l56.46 56.46a15 15 0 010 21.22l-56.46 56.46a10 10 0 01-14.11 0z\" fill=\"currentColor\" /></svg>';\n readonly prefix = '<span class=\"sr-only\">Página </span>';\n\n ngOnChanges(changes: SimpleChanges): void {\n this.checkChanges();\n this.classesContainer = this.classesContainer ? this.classesContainer += ' lg:flex lg:flex-wrap lg:items-center lg:gap-base' : 'lg:flex lg:flex-wrap lg:items-center lg:gap-base'\n this.id = this.id ? this.id : null\n }\n\n ngAfterViewInit(): void {\n if(this.itemsPerPage && this.listboxItems && this.listboxItems.length > 0){\n let itemActive = false;\n this.listboxItems.forEach((item) => {\n if(this.itemsPerPage == item.value){\n item.active = true; \n itemActive = true\n }\n });\n if(!itemActive){\n this.listboxItems.first.active = true;\n }\n }\n }\n\n checkChanges(){\n this.nPages = Math.ceil(this.totalItems / this.itemsPerPage);\n\n if (!this.currentPage || this.currentPage < 1 || this.currentPage > this.nPages) {\n this.currentPage = 1;\n setTimeout( () => this.currentPageChange.emit(this.currentPage));\n }\n\n if (!this.previousText) {\n this.previousText = 'Anterior';\n }\n if (!this.nextText) {\n this.nextText = 'Siguiente';\n }\n this.buildPages();\n }\n\n getSuffix(page: number): string {\n return page >= 0 && page * this.itemsPerPage < this.totalItems ?\n `<span class=\"sr-only\">: Página ${page + 1} con los resultados del ${page * this.itemsPerPage + 1} al ${this.getLastItemNumber(page)}</span>`\n : '';\n }\n\n getLastItemNumber(pageIndex: number): number {\n return Math.min((pageIndex + 1) * this.itemsPerPage, this.totalItems);\n }\n\n buildPages(): void {\n this.items = [];\n for (let i = 0; i < this.nPages; i++) {\n const item: PaginationItemData = {\n text: i + 1,\n active: ( (i + 1) === this.currentPage),\n routerLink: []\n };\n this.items.push(item);\n }\n }\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : 'pagination-item';\n }\n\n getButtonId( index: number): string {\n return this.getIdPrefix() + (index === 0) ? '' : '-' + index;\n }\n\n changePage(current: number): void{\n this.currentPage = current;\n this.currentPageChange.emit(this.currentPage);\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i];\n item.active = ((i + 1) === this.currentPage);\n }\n }\n\n previous(): void {\n if (this.currentPage > 1) {\n this.changePage(this.currentPage - 1);\n }\n }\n\n next(): void {\n if (this.currentPage < this.nPages) {\n this.changePage(this.currentPage + 1);\n }\n }\n\n getActiveItemText(): any {\n const activeItems = this.items.filter(item => item.active);\n return activeItems && activeItems.length > 0 ? activeItems[0].text : '';\n }\n\n getListboxLabel(): PaginationListboxLabelComponent {\n return this.listboxLabel ? this.listboxLabel : null;\n }\n\n getItemsPerPage(): PaginationItemPerPageComponent[] {\n return this.listboxItems && this.listboxItems.length > 0 ? this.listboxItems.toArray() : null;\n }\n\n changeItemsPerPage(event: any) {\n if(event && event.value){\n let newValue = event.value;\n this.itemsPerPage = newValue;\n this.buildPages();\n }\n }\n\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'innerHtml'\n})\nexport class InnerHtmlPipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n transform(value: string): SafeHtml {\n return this.sanitizer.sanitize(SecurityContext.HTML, value);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'externalHref'\n})\nexport class ExternalHrefPipe implements PipeTransform {\n\n /**\n * Asegura que un enlace externo sea correcto\n * @param href enlace\n */\n transform(href: string): string {\n let externalHref: string;\n if (href) {\n if (href.match('http(s)?://')) {\n externalHref = href;\n } else {\n externalHref = 'http://' + href;\n }\n } else {\n externalHref = '#';\n }\n return externalHref;\n }\n\n}\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\n\n@Directive({\n selector: '[desyAttributeChange]'\n})\nexport class AttributeChangeDirective implements OnDestroy {\n\n private changes: MutationObserver;\n\n @Input() attributesToCheck: string|string[];\n\n @Output()\n public desyAttributeChange = new EventEmitter();\n\n @Output()\n public desyAttributeChangeMutation = new EventEmitter();\n\n constructor(private elementRef: ElementRef) {\n const element = this.elementRef.nativeElement;\n\n this.changes = new MutationObserver((mutations: MutationRecord[]) => {\n mutations.forEach((mutation: MutationRecord) => {\n if (this.attributesToCheck) {\n const attrs = typeof (this.attributesToCheck) === 'string' ? [this.attributesToCheck] : this.attributesToCheck;\n if (attrs.findIndex(v => v === mutation.attributeName) >= 0) {\n this.desyAttributeChange.emit(this.elementRef.nativeElement.innerHTML);\n this.desyAttributeChangeMutation.emit(mutation);\n }\n }\n });\n }\n );\n\n this.changes.observe(element, {\n attributes: true,\n childList: false,\n characterData: false,\n subtree: false\n });\n }\n\n ngOnDestroy(): void {\n this.changes.disconnect();\n }\n}\n","import {Directive, ElementRef, Input, OnChanges, SimpleChanges} from '@angular/core';\n@Directive({\n selector: '[desyInnerContent]'\n})\nexport class InnerContentDirective implements OnChanges {\n\n @Input('desyInnerContent') content: string;\n @Input() isHtml: boolean;\n @Input() deleteContentIfEmpty = true;\n\n constructor(private el: ElementRef) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.content) {\n if (this.isHtml) {\n this.el.nativeElement.innerHTML = this.content;\n } else {\n this.el.nativeElement.innerText = this.content;\n }\n } else if (this.deleteContentIfEmpty) {\n this.el.nativeElement.innerText = null;\n }\n }\n\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n selector: '[desyClickOutside]'\n})\nexport class ClickOutsideDirective {\n\n @Input('desyClickOutside') active = true;\n @Output() clickOutside = new EventEmitter<void>();\n @Input() desyClickOutsideElem: Element;\n\n constructor(private hostElementRef: ElementRef) { }\n\n @HostListener('document:click', ['$event.target'])\n public onClick(target): void {\n let clickedInside;\n if (this.desyClickOutsideElem) {\n clickedInside = this.desyClickOutsideElem.contains(target);\n } else {\n clickedInside = (this.hostElementRef.nativeElement as Element).contains(target);\n }\n if (!clickedInside && this.active) {\n this.clickOutside.emit();\n }\n }\n\n}\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\n\n/**\n * Permite comprobar cuándo se produce un cambio en el contenido de un elemento.\n * La propia directiva emite el html interno del elemento en formato string, mientras que desyContentChangeMutation emite los cambios.\n */\n@Directive({\n selector: '[desyContentChange]'\n})\nexport class ContentChangeDirective implements OnDestroy {\n\n private changes: MutationObserver;\n\n @Input() observeProperties: { attributes: boolean, childList: boolean, characterData: boolean, subtree: boolean } = {\n attributes: false,\n childList: true,\n characterData: true,\n subtree: true\n };\n\n @Output()\n public desyContentChange = new EventEmitter<ElementRef>();\n\n @Output()\n public desyContentChangeMutation = new EventEmitter();\n\n constructor(private elementRef: ElementRef) {\n const element = this.elementRef.nativeElement;\n\n this.changes = new MutationObserver((mutations: MutationRecord[]) => {\n mutations.forEach((mutation: MutationRecord) => {\n this.desyContentChange.emit(this.elementRef);\n this.desyContentChangeMutation.emit(mutation);\n });\n }\n );\n\n this.changes.observe(element, this.observeProperties);\n }\n\n ngOnDestroy(): void {\n this.changes.disconnect();\n }\n}\n","import {\n ComponentFactory,\n ComponentFactoryResolver,\n Directive,\n Injector,\n Input, OnChanges,\n SimpleChanges, TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport {ContentBaseComponent} from '../components';\n\n/**\n * Permite introducir contenido de forma dinámica en una posición determinada desde:\n * - component: Componente existente de tipo ContentBase\n * - html: texto html en formato string\n * - text: texto plano en formato string\n */\n@Directive({\n selector: '[desyCustomInnerContent]'\n})\nexport class CustomInnerContentDirective implements OnChanges {\n\n @Input() desyCustomInnerContent: { component?: any|ContentBaseComponent, template?: TemplateRef<any>, html?: string, text?: string };\n\n private factory: ComponentFactory<ContentBaseComponent>;\n\n constructor(private viewContainerRef: ViewContainerRef, private resolver: ComponentFactoryResolver, private injector: Injector) {\n this.factory = this.resolver.resolveComponentFactory(ContentBaseComponent);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.viewContainerRef.clear();\n if (this.desyCustomInnerContent.component && this.desyCustomInnerContent.component instanceof ContentBaseComponent) {\n\n // Se crea la vista embebida basándose en el contenido del ContentBase indicado.\n this.viewContainerRef.createEmbeddedView(this.desyCustomInnerContent.component.getContent());\n } else if (this.desyCustomInnerContent.template) {\n\n // Se crea la vista embebida utilizando directamente el template.\n this.viewContainerRef.createEmbeddedView(this.desyCustomInnerContent.template);\n } else if (this.desyCustomInnerContent.html) {\n\n // Se carga el contenido en un div temporal.\n const tmpWrapper = document.createElement('div');\n tmpWrapper.innerHTML = this.desyCustomInnerContent.html;\n\n // Los nodos hijos del div se proyectan dentro de un componente ContentBase.\n const nodeList = [];\n tmpWrapper.childNodes.forEach(node => nodeList.push(node));\n const componentRef = this.factory.create(this.injector, [ nodeList ]);\n\n // Finalmente se crea la vista embebida basándose en el contenido del ContentBase creado.\n // Se podría hacer con un this.viewContainerRef.createComponent(), pero así se evita el tag envolvente del componente en el DOM\n this.viewContainerRef.createEmbeddedView(componentRef.instance.getContent());\n } else if (this.desyCustomInnerContent.text) {\n\n // Se carga el contenido en un nodo de texto\n const textNode = document.createTextNode(this.desyCustomInnerContent.text);\n\n // El nodo de texto se proyecta dentro de un componente ContentBase\n const componentRef = this.factory.create(this.injector, [[ textNode ]]);\n\n // Finalmente se crea la vista embebida basándose en el contenido del ContentBase creado.\n // Se podría hacer con un this.viewContainerRef.createComponent(), pero así se evita el tag envolvente del componente en el DOM\n this.viewContainerRef.createEmbeddedView(componentRef.instance.getContent());\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\n// components\nimport {\n AccessibilityComponent,\n ContentBaseComponent,\n TextOrHtmlRequiredComponent,\n AccessibilityAndTextOrHtmlRequiredComponent,\n AccessibilityAndContentRequiredComponent\n} from './components';\n\n// pipes\nimport { InnerHtmlPipe } from './pipes/inner-html.pipe';\nimport { MakeHtmlListPipe } from './pipes/make-html-list.pipe';\nimport { ExternalHrefPipe } from './pipes/external-href.pipe';\n\n// directives\nimport { AttributeChangeDirective } from './directives/attribute-change.directive';\nimport { InnerContentDirective } from './directives/inner-content.directive';\nimport { ClickOutsideDirective } from './directives/click-outside.directive';\nimport { ContentChangeDirective } from './directives/content-change.directive';\nimport { CustomInnerContentDirective } from './directives/custom-inner-content.directive';\n\n\n@NgModule({\n declarations: [\n // components\n AccessibilityComponent,\n ContentBaseComponent,\n TextOrHtmlRequiredComponent,\n AccessibilityAndTextOrHtmlRequiredComponent,\n AccessibilityAndContentRequiredComponent,\n\n // pipes\n InnerHtmlPipe,\n MakeHtmlListPipe,\n ExternalHrefPipe,\n\n // directives\n AttributeChangeDirective,\n InnerContentDirective,\n ClickOutsideDirective,\n ContentChangeDirective,\n CustomInnerContentDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n RouterModule,\n\n // components\n AccessibilityComponent,\n ContentBaseComponent,\n TextOrHtmlRequiredComponent,\n AccessibilityAndTextOrHtmlRequiredComponent,\n AccessibilityAndContentRequiredComponent,\n\n // pipes\n InnerHtmlPipe,\n MakeHtmlListPipe,\n ExternalHrefPipe,\n\n // directives\n AttributeChangeDirective,\n InnerContentDirective,\n ClickOutsideDirective,\n ContentChangeDirective,\n CustomInnerContentDirective,\n ]\n})\nexport class SharedModule { }\n","import { Component } from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\n@Component({\n selector: 'desy-template-driven-wrapper',\n templateUrl: './template-driven-wrapper.component.html',\n providers: [ { provide: ControlContainer, useExisting: NgForm, } ]\n})\nexport class TemplateDrivenWrapperComponent {\n}\n","import { Component, Input } from '@angular/core';\nimport { ContentBaseComponent } from '../../../shared/components';\nimport { DividerData } from '../../interfaces';\n\n@Component({\n selector: 'desy-divider',\n templateUrl: './divider.component.html'\n})\nexport class DividerComponent extends ContentBaseComponent implements DividerData {\n @Input() text?: string;\n @Input() html?: string;\n\n}\n","// componentes\nimport { NgModule } from '@angular/core';\nimport { IconComponent } from './components/icon/icon.component';\nimport { ContentComponent } from './components/content/content.component';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from '../shared/shared.module';\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\nimport { TitleComponent } from './components/title/title.component';\nimport { DescriptionComponent } from './components/description/description.component';\nimport { DividerComponent } from './components/divider/divider.component';\n\n@NgModule({\n declarations: [\n IconComponent,\n ContentComponent,\n DescriptionComponent,\n TitleComponent,\n DividerComponent\n ],\n imports: [\n CommonModule,\n SharedModule,\n NgxTippyModule\n ],\n exports: [\n IconComponent,\n ContentComponent,\n DescriptionComponent,\n TitleComponent,\n DividerComponent\n ]\n})\n\nexport class DesyCommonsModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SharedModule } from '../shared/shared.module';\n// componentes\nimport { TemplateDrivenWrapperComponent } from './components/template-driven-wrapper/template-driven-wrapper.component';\nimport { FormFieldComponent } from './components/form-field/form-field.component';\nimport { HintComponent } from './components/hint/hint.component';\nimport { LabelComponent } from './components/label/label.component';\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\nimport { FieldsetComponent } from './components/fieldset/fieldset.component';\nimport { LegendComponent } from './components/fieldset/legend/legend.component';\nimport { TextareaComponent } from './components/textarea/textarea.component';\nimport { CharacterCountComponent } from './components/character-count/character-count.component';\nimport { InputComponent } from './components/input/input.component';\nimport { SelectComponent } from './components/select/select.component';\nimport { FileUploadComponent } from './components/file-upload/file-upload.component';\nimport { InputGroupComponent } from './components/input-group/input-group.component';\nimport { RadiosComponent } from './components/radios/radios.component';\nimport { RadioItemComponent } from './components/radios/radio-item/radio-item.component';\nimport { CheckboxesComponent } from './components/checkboxes/checkboxes.component';\nimport { CheckboxItemComponent } from './components/checkboxes/checkbox-item/checkbox-item.component';\nimport { DateInputComponent } from './components/date-input/date-input.component';\nimport { SearchBarComponent} from './components/search-bar/search-bar.component';\nimport { OptionComponent } from './components/select/option/option.component';\nimport { DateInputDayComponent } from './components/date-input/date-input-day/date-input-day.component';\nimport { DateInputMonthComponent } from './components/date-input/date-input-month/date-input-month.component';\nimport { DateInputYearComponent } from './components/date-input/date-input-year/date-input-year.component';\n\n// directivas\nimport { ConditionDirective } from './directives/condition.directive';\n\nimport { DesyCommonsModule } from '../desy-commons/desy-commons.module';\nimport { InputGroupItemComponent } from './components/input-group/input-group-item/input-group-item.component';\nimport { DateInputItemComponent } from './components/date-input/date-input-item/date-input-item.component';\nimport { InputGroupDividerComponent } from './components/input-group/input-group-divider/input-group-divider.component';\nimport { DateInputDividerComponent } from './components/date-input/date-input-divider/date-input-divider.component';\nimport { InputGroupInputComponent } from './components/input-group/input-group-input/input-group-input.component';\nimport { InputGroupSelectComponent } from './components/input-group/input-group-select/input-group-select.component';\nimport { OptionGroupComponent } from './components/select/option-group/option-group.component';\nimport { SelectItemComponent } from './components/select/select-item/select-item.component';\nimport { TreeComponent } from './components/tree/tree.component';\nimport { TreeCheckboxComponent } from './components/tree/tree-checkbox/tree-checkbox.component';\nimport { TreeSubComponent } from './components/tree/tree-sub/tree-sub.component';\nimport { TreeItemComponent } from './components/tree/tree-item/tree-item.component';\nimport { TreeItemsGeneratorComponent } from './components/tree/tree-items-generator/tree-items-generator.component';\n\n\n\n@NgModule({\n declarations: [\n TemplateDrivenWrapperComponent,\n FormFieldComponent,\n HintComponent,\n LabelComponent,\n ErrorMessageComponent,\n FieldsetComponent,\n LegendComponent,\n TextareaComponent,\n CharacterCountComponent,\n InputComponent,\n SelectComponent,\n FileUploadComponent,\n InputGroupComponent,\n InputGroupItemComponent,\n DateInputItemComponent,\n InputGroupDividerComponent,\n DateInputDividerComponent,\n InputGroupInputComponent,\n InputGroupSelectComponent,\n RadiosComponent,\n RadioItemComponent,\n CheckboxesComponent,\n CheckboxItemComponent,\n DateInputComponent,\n SearchBarComponent,\n OptionComponent,\n OptionGroupComponent,\n SelectItemComponent,\n DateInputDayComponent,\n DateInputMonthComponent,\n DateInputYearComponent,\n TreeComponent,\n TreeSubComponent,\n TreeItemComponent,\n TreeCheckboxComponent,\n TreeItemsGeneratorComponent,\n\n ConditionDirective,\n\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SharedModule,\n DesyCommonsModule,\n ],\n exports: [\n HintComponent,\n LabelComponent,\n ErrorMessageComponent,\n FieldsetComponent,\n LegendComponent,\n TextareaComponent,\n CharacterCountComponent,\n InputComponent,\n SelectComponent,\n FileUploadComponent,\n InputGroupComponent,\n InputGroupDividerComponent,\n DateInputDividerComponent,\n InputGroupInputComponent,\n InputGroupSelectComponent,\n RadiosComponent,\n RadioItemComponent,\n CheckboxesComponent,\n CheckboxItemComponent,\n DateInputComponent,\n SearchBarComponent,\n OptionComponent,\n OptionGroupComponent,\n DateInputDayComponent,\n DateInputMonthComponent,\n DateInputYearComponent,\n TreeComponent,\n TreeSubComponent,\n TreeItemComponent,\n TreeItemsGeneratorComponent,\n\n ConditionDirective\n ]\n})\nexport class DesyFormsModule { }\n","import {\n AfterContentInit, ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {AccessibilityComponent} from '../../../shared/components';\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\nimport {IconData} from '../../../desy-commons/interfaces';\nimport {TooltipContentComponent} from './tooltip-content/tooltip-content.component';\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\n\n@Component({\n selector: 'desy-tooltip',\n templateUrl: './tooltip.component.html'\n})\nexport class TooltipComponent extends AccessibilityComponent implements AfterContentInit, OnChanges {\n\n static readonly KEY_CODE_ESC = 'Escape';\n\n @DesyContentChild()\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\n\n @DesyContentChild()\n @ContentChildren(IconComponent) iconComponent: IconComponent;\n\n @DesyContentChild()\n @ContentChildren(TooltipContentComponent) tooltipContentComponent: TooltipContentComponent;\n\n @ViewChild('tooltipContent', { read: ElementRef, static: true }) tooltipContent: ElementRef;\n\n @Input() id: string;\n @Input() text: string;\n @Input() html: string;\n @Input() complex: boolean;\n @Input() classesTooltip: string;\n @Input() icon: IconData;\n @Input() caller: TemplateRef<any>;\n @Input() @HostBinding('class') classes: any;\n // @HostBinding('data-module') dataModule = \"c-tabs\";\n\n //Accessibility\n @HostBinding('attr.id') idData: any;\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.tabindex') tabindexData: any;\n\n tippyProperties: any;\n hasContent = true;\n hasIconComponentContent = true;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.classes = this.classes ? this.classes : null;\n this.idData = this.id ? this.id : null;\n this.roleData = this.role ? this.role : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.tabindexData = this.tabindex ? this.tabindex : null;\n }\n\n ngAfterContentInit(): void {\n const contentTooltip = this.tooltipContent.nativeElement as HTMLElement;\n this.tippyProperties = {\n placement: 'top',\n inlinePositioning: true,\n content: contentTooltip,\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\n trigger: 'mouseenter focus',\n hideOnClick: false,\n theme: '',\n plugins: [{\n name: 'hideOnEsc',\n defaultValue: true,\n fn({hide}): any {\n\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === TooltipComponent.KEY_CODE_ESC) {\n hide();\n }\n }\n\n return {\n onShow(): void {\n document.addEventListener('keydown', onKeyDown);\n },\n onHide(): void {\n document.removeEventListener('keydown', onKeyDown);\n },\n };\n },\n }],\n role: 'tooltip',\n aria: {\n content: this.complex ? 'describedby' : 'labelledby',\n },\n };\n }\n\n getIdButton(): string {\n return this.id + '-button';\n }\n\n getIdTooltip(): string {\n return this.id + '-tooltip';\n }\n\n handleEmptyContent(isEmpty: boolean): void {\n this.hasContent = !isEmpty;\n this.changeDetectorRef.detectChanges();\n }\n\n handleEmptyIconContent(isEmpty: boolean): void {\n this.hasIconComponentContent = !isEmpty;\n this.changeDetectorRef.detectChanges();\n }\n\n\n getMainContent(): string {\n let content;\n if (this.html) {\n content = this.html;\n } else if (this.text) {\n content = `<p>${this.text}</p>`;\n }\n return content;\n }\n\n getIconContent(icon: IconData): string {\n let iconContent;\n if (icon.html) {\n iconContent = this.icon.html;\n } else if (icon.type === 'info') {\n iconContent = '<svg 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ón\"><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>';\n } else if (icon.type === 'alert') {\n iconContent = '<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\" 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>';\n } else {\n iconContent = '<svg 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>';\n }\n return iconContent;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from '../shared/shared.module';\n\nimport { AlertComponent } from './components/alert/alert.component';\nimport { AccordionComponent } from './components/accordion/accordion.component';\nimport { AccordionHeaderComponent } from './components/accordion/accordion-header/accordion-header.component';\nimport { AccordionHistoryComponent } from './components/accordion-history/accordion-history.component';\nimport { AccordionHistoryItemComponent } from './components/accordion-history/accordion-history-item/accordion-history-item.component';\nimport { AccordionItemComponent } from './components/accordion/accordion-item/accordion-item.component';\nimport { SpinnerComponent } from './components/spinner/spinner.component';\nimport { DetailsComponent } from './components/details/details.component';\nimport { CollapsibleComponent } from './components/collapsible/collapsible.component';\nimport { DescriptionListComponent } from './components/description-list/description-list.component';\nimport { ItemComponent } from './components/item/item.component';\nimport { MediaObjectComponent } from './components/media-object/media-object.component';\nimport { StatusComponent } from './components/status/status.component';\nimport { StatusItemComponent } from './components/status-item/status-item.component';\nimport { DesyFormsModule } from '../desy-forms/desy-forms.module';\nimport { TabsComponent } from './components/tabs/tabs.component';\nimport { TooltipComponent } from './components/tooltip/tooltip.component';\nimport { DesyCommonsModule } from '../desy-commons/desy-commons.module';\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\nimport { TooltipContentComponent } from './components/tooltip/tooltip-content/tooltip-content.component';\nimport { DescriptionItemComponent } from './components/description-list/description-item/description-item.component';\nimport { TermComponent } from './components/description-list/term/term.component';\nimport { DefinitionComponent } from './components/description-list/definition/definition.component';\nimport { ItemContentBottomComponent } from './components/item/item-content-bottom/item-content-bottom.component';\nimport { ItemContentRightComponent } from './components/item/item-content-right/item-content-right.component';\nimport { ItemItemComponent } from './components/item/item-item/item-item.component';\nimport { PanelComponent } from './components/tabs/panel/panel.component';\nimport { TabItemComponent } from './components/tabs/tab-item/tab-item.component';\nimport { MediaObjectFigureComponent } from './components/media-object/media-object-figure/media-object-figure.component';\nimport { AccordionItemShowButtonComponent } from './components/accordion-history/accordion-item-show-button/accordion-item-show-button.component';\nimport { AccordionItemHideButtonComponent } from './components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component';\n\n@NgModule({\n declarations: [\n AlertComponent,\n AccordionComponent,\n AccordionHeaderComponent,\n AccordionHistoryComponent,\n AccordionHistoryItemComponent,\n AccordionItemShowButtonComponent,\n AccordionItemHideButtonComponent,\n AccordionItemComponent,\n SpinnerComponent,\n DetailsComponent,\n CollapsibleComponent,\n DescriptionListComponent,\n DescriptionItemComponent,\n TermComponent,\n DefinitionComponent,\n ItemComponent,\n ItemContentBottomComponent,\n ItemContentRightComponent,\n ItemItemComponent,\n MediaObjectComponent,\n StatusComponent,\n StatusItemComponent,\n TabsComponent,\n TooltipComponent,\n TooltipContentComponent,\n PanelComponent,\n TabItemComponent,\n MediaObjectFigureComponent,\n ],\n imports: [\n CommonModule,\n SharedModule,\n DesyFormsModule,\n DesyCommonsModule,\n NgxTippyModule\n ],\n exports: [\n AlertComponent,\n AccordionComponent,\n AccordionHeaderComponent,\n AccordionHistoryComponent,\n AccordionHistoryItemComponent,\n AccordionItemShowButtonComponent,\n AccordionItemHideButtonComponent,\n AccordionItemComponent,\n SpinnerComponent,\n DetailsComponent,\n CollapsibleComponent,\n DescriptionListComponent,\n DescriptionItemComponent,\n TermComponent,\n DefinitionComponent,\n ItemComponent,\n ItemContentBottomComponent,\n ItemContentRightComponent,\n ItemItemComponent,\n MediaObjectComponent,\n StatusComponent,\n StatusItemComponent,\n TabsComponent,\n TooltipComponent,\n TooltipContentComponent,\n PanelComponent,\n TabItemComponent,\n MediaObjectFigureComponent,\n ]\n})\nexport class DesyViewsModule { }\n","import { Component, Input, ViewChild } from '@angular/core';\nimport {AccessibilityComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-toggle-off-state',\n templateUrl: './toggle-off-state.component.html'\n})\nexport class ToggleOffStateComponent extends AccessibilityComponent {\n \n @ViewChild('contentTemplateOffState', { static: true }) content;\n\n @Input() classes: string;\n\n}","import { Component, Input, ViewChild } from '@angular/core';\nimport {AccessibilityComponent} from '../../../../shared/components';\n\n@Component({\n selector: 'desy-toggle-on-state',\n templateUrl: './toggle-on-state.component.html'\n})\nexport class ToggleOnStateComponent extends AccessibilityComponent {\n\n @ViewChild('contentTemplateOnState', { static: true }) content;\n\n @Input() classes: string;\n\n}\n","import { Component, ContentChildren, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\nimport { ToggleOffStateComponent } from './toggle-off-state/toggle-off-state.component';\nimport { ToggleOnStateComponent } from './toggle-on-state/toggle-on-state.component';\n\n@Component({\n selector: 'desy-toggle',\n templateUrl: './toggle.component.html'\n})\nexport class ToggleComponent extends AccessibilityComponent {\n \n @Input() id: string;\n @Input() isSwitch: boolean;\n @Input() pressed: boolean;\n @Input() classes: string;\n @Input() isExpandible: boolean;\n\n @Input() @HostBinding('class.relative') cfg = true;\n \n @Output() clickEvent = new EventEmitter();\n @Output() pressedChange: EventEmitter<any> = new EventEmitter<any>();\n \n @DesyContentChild()\n @ContentChildren(ToggleOnStateComponent) contentTemplateOnState: ToggleOnStateComponent;\n \n @DesyContentChild()\n @ContentChildren(ToggleOffStateComponent) contentTemplateOffState: ToggleOffStateComponent;\n\n onClick(event: any): void {\n this.pressed = !this.pressed;\n this.pressedChange.emit(this.pressed);\n this.clickEvent.emit(event);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DesyViewsModule } from '../desy-views/desy-views.module';\nimport { SharedModule } from '../shared/shared.module';\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\n\n// componentes\nimport { ButtonComponent } from './components/button/button.component';\nimport { ButtonLoaderComponent } from './components/button-loader/button-loader.component';\nimport { PillComponent } from './components/pill/pill.component';\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\nimport { ListboxComponent } from './components/listbox/listbox.component';\nimport { ListboxItemComponent } from './components/listbox/listbox-item/listbox-item.component';\nimport { ListboxLabelComponent } from './components/listbox/listbox-label/listbox-label.component';\nimport { ToggleComponent } from './components/toggle/toggle.component';\nimport { ToggleOnStateComponent } from './components/toggle/toggle-on-state/toggle-on-state.component';\nimport { ToggleOffStateComponent } from './components/toggle/toggle-off-state/toggle-off-state.component';\n\n\n@NgModule({\n declarations: [\n ButtonComponent,\n ButtonLoaderComponent,\n DropdownComponent,\n ListboxComponent,\n PillComponent,\n\n ListboxItemComponent,\n ListboxLabelComponent,\n ToggleComponent,\n ToggleOnStateComponent,\n ToggleOffStateComponent\n ],\n imports: [\n CommonModule,\n SharedModule,\n DesyViewsModule,\n NgxTippyModule\n ],\n exports: [\n ButtonComponent,\n ButtonLoaderComponent,\n DropdownComponent,\n ListboxComponent,\n PillComponent,\n\n ListboxItemComponent,\n ListboxLabelComponent,\n ToggleComponent,\n ToggleOnStateComponent,\n ToggleOffStateComponent\n ]\n})\nexport class DesyButtonsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from '../shared/shared.module';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\n\n// components\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ModalButtonPrimaryComponent } from './components/modal/modal-button-primary/modal-button-primary.component';\nimport { ModalButtonSecondaryComponent } from './components/modal/modal-button-secondary/modal-button-secondary.component';\nimport { DialogComponent } from './components/dialog/dialog.component';\nimport { ModalButtonLoaderPrimaryComponent } from './components/modal/modal-button-loader-primary/modal-button-loader-primary.component';\nimport { ModalButtonLoaderSecondaryComponent } from './components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component';\n\n@NgModule({\n declarations: [\n ModalComponent,\n ModalButtonPrimaryComponent,\n ModalButtonSecondaryComponent,\n ModalButtonLoaderPrimaryComponent,\n ModalButtonLoaderSecondaryComponent,\n DialogComponent\n ],\n imports: [\n CommonModule,\n A11yModule,\n SharedModule,\n DesyButtonsModule\n ],\n exports: [\n ModalComponent,\n ModalButtonPrimaryComponent,\n ModalButtonSecondaryComponent,\n ModalButtonLoaderPrimaryComponent,\n ModalButtonLoaderSecondaryComponent,\n DialogComponent\n ],\n})\nexport class DesyModalsModule { }\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DividerData } from '../../../../../desy-commons/interfaces';\nimport { ContentBaseComponent } from '../../../../../shared/components';\nimport { MenuNavigationItemSubItem } from '../../../../interfaces';\n\n@Component({\n selector: 'desy-menu-navigation-subitem',\n templateUrl: './menu-navigation-subitem.component.html'\n})\nexport class MenuNavigationSubitemComponent extends ContentBaseComponent implements MenuNavigationItemSubItem {\n \n @Input() href?: string;\n @Input() target?: string;\n @Input() text: string;\n @Input() html: string;\n @Input() id?: string;\n @Input() expanded?: boolean;\n @Input() divider?: DividerData;\n @Input() disabled?: boolean;\n @Input() sub?: MenuNavigationItemSubItem[];\n @Input() classes?: string;\n @Input() active?: boolean;\n\n @Output() selected = new EventEmitter<any>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n}\n","import { Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { HintData } from '../../../../../desy-forms/interfaces/hint-data';\nimport { DividerData } from '../../../../../desy-commons/interfaces';\nimport { ContentBaseComponent } from '../../../../../shared/components/content-base/content-base.component';\nimport { MenuNavigationItem, MenuNavigationItemSubItem } from '../../../../interfaces';\nimport { MenuNavigationSubitemComponent } from '../menu-navigation-subitem/menu-navigation-subitem.component';\n\n@Component({\n selector: 'desy-menu-navigation-item',\n templateUrl: './menu-navigation-item.component.html'\n})\nexport class MenuNavigationItemComponent extends ContentBaseComponent implements MenuNavigationItem {\n \n @Input() href?: string;\n @Input() target?: string;\n @Input() text: string;\n @Input() html: string;\n @Input() id?: string;\n @Input() expanded?: boolean;\n @Input() divider?: DividerData;\n @Input() disabled?: boolean;\n @Input() sub?: MenuNavigationItemSubItem;\n @Input() classes?: string;\n\n @Input() title?: string;\n @Input() active?: boolean;\n\n @Output() selected = new EventEmitter<any>();\n\n @ContentChildren(MenuNavigationSubitemComponent) subItems: QueryList<MenuNavigationSubitemComponent>;\n\n public getSubItems(): MenuNavigationSubitemComponent[] {\n return this.subItems.toArray();\n }\n\n}\n","import { AfterViewInit, \n ChangeDetectorRef, \n Component, \n ContentChildren, \n ElementRef, \n EventEmitter, \n HostBinding, \n Input, \n OnChanges, \n Output, \n QueryList, \n SimpleChanges,\n ViewChild, \n ViewChildren } from '@angular/core';\nimport { AccessibilityComponent } from '../../../shared/components';\nimport { MenuNavigationItemSubItem, MenuNavigationItemSubItemSubItem } from '../../interfaces';\nimport { MenuNavigationItem } from '../../interfaces/menu-navigation';\nimport { MenubaritemDirective } from '../menubar/directives/menubaritem.directive';\nimport { MenuNavigationItemComponent } from './components/menu-navigation-item/menu-navigation-item.component';\nimport { MenuNavigationSubitemComponent } from './components/menu-navigation-subitem/menu-navigation-subitem.component';\n\n@Component({\n selector: 'desy-menu-navigation',\n templateUrl: './menu-navigation.component.html'\n})\nexport class MenuNavigationComponent extends AccessibilityComponent implements OnChanges, AfterViewInit{\n\n @Input() idPrefix: string;\n @Input() items: MenuNavigationItem[];\n @Output() itemsChange = new EventEmitter<MenuNavigationItem[]>();\n @Output() activeItemChange = new EventEmitter<MenuNavigationItem>();\n @Output() activeSubItemChange = new EventEmitter<MenuNavigationItemSubItem | MenuNavigationItemSubItemSubItem>();\n\n @ViewChild('menunavigation', { read: ElementRef }) menunavigation: ElementRef;\n @ViewChildren(MenubaritemDirective) menuItems: QueryList<MenubaritemDirective>;\n @ContentChildren(MenuNavigationItemComponent) itemComponentList: QueryList<MenuNavigationItemComponent>;\n\n @Input() @HostBinding('class') classes: any;\n @HostBinding('class.c-menu-navigation') cfg = true\n @Input() @HostBinding('attr.id') id: any;\n\n @HostBinding('attr.role') roleData: any;\n @HostBinding('attr.aria-label') ariaLabelData: any;\n @HostBinding('attr.aria-describedby') ariaDescribedbyData: any;\n @HostBinding('attr.aria-labelledby') ariaLabelledbyData: any;\n @HostBinding('attr.aria-hidden') ariaHiddenData: any;\n @HostBinding('attr.aria-disabled') ariaDisabledData: any;\n @HostBinding('attr.aria-controls') ariaControlsData: any;\n @HostBinding('attr.aria-current') ariaCurrentData: any;\n @HostBinding('attr.aria-live') ariaLiveData: any;\n @HostBinding('attr.aria-expanded') ariaExpandedData: any;\n @HostBinding('attr.aria-errormessage') ariaErrormessageData: any;\n @HostBinding('attr.aria-haspopup') ariaHaspopupData: any;\n @HostBinding('attr.aria-modal') ariaModalData: any;\n\n menuData: any[];\n viewInit = false;\n isFocused: boolean;\n currentFocusItemIndex = 0;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n ngOnChanges(changes?: SimpleChanges): void {\n this.roleData = this.role ? this.role : null;\n this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;\n this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;\n this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;\n this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;\n this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;\n this.ariaControlsData = this.ariaControls ? this.ariaControls : null;\n this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;\n this.ariaLiveData = this.ariaLive ? this.ariaLive : null;\n this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;\n this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;\n this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;\n this.ariaModalData = this.ariaModal ? this.ariaModal : null;\n if (this.viewInit) {\n this.checkChanges();\n }\n }\n\n ngAfterViewInit(): void {\n this.viewInit = true;\n this.checkChanges();\n }\n\n checkChanges(): void {\n if (!this.menuItems) {\n return;\n }\n \n this.menuData = [];\n this.getItems().forEach((_, index) => {\n const itemData = {\n open: false,\n currentFocusSubItemIndex: 0,\n currentFocusSubSubItemIndex: 0,\n menuItem: this.menuItems.toArray()[index]\n };\n this.menuData.push(itemData);\n });\n\n if (this.viewInit) {\n this.checkRequired();\n }\n\n\n const lastCurrentFocusItemIndex = this.currentFocusItemIndex;\n const items = this.getItems();\n if (items) {\n while (!this.isItemFocusable(this.currentFocusItemIndex % items.length)) {\n this.currentFocusItemIndex = (this.currentFocusItemIndex + items.length + 1) % items.length;\n if (this.currentFocusItemIndex === lastCurrentFocusItemIndex) {\n break;\n }\n }\n }\n }\n\n\n /*\n * Eventos\n */\n\n handleMenuFocusIn(): void {\n this.isFocused = true;\n this.changeDetectorRef.detectChanges();\n }\n\n handleMenuFocusOut(event): void {\n if (!this.menunavigation.nativeElement.contains(event.relatedTarget)) {\n this.closeMenu();\n }\n this.isFocused = false;\n this.changeDetectorRef.detectChanges();\n }\n\n handleMenuItemClick(event, itemIndex: number): void {\n if (this.hasPopupMenu(itemIndex)) {\n event.preventDefault();\n const isOpen = this.menuData[itemIndex].open;\n this.closeMenu();\n if (!isOpen) {\n this.openMenu(itemIndex);\n }\n } else {\n this.activateMenuItem(itemIndex);\n }\n }\n\n handleMenuItemKeydown(event: KeyboardEvent, itemIndex: number): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n if (this.hasPopupMenu(itemIndex)) {\n this.openMenu(itemIndex);\n setTimeout(() => this.focusFirstSubItem(itemIndex));\n event.stopPropagation();\n event.preventDefault();\n }\n break;\n\n case 'Escape':\n if (this.hasPopupMenu(itemIndex)) {\n this.closeMenu(itemIndex);\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n this.focusNextAvailableItem(itemIndex, -1);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n this.focusNextAvailableItem(itemIndex, +1);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n if (this.hasPopupMenu(itemIndex)) {\n this.openMenu(itemIndex);\n setTimeout(() => this.focusLastSubItem(itemIndex));\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Home':\n case 'PageUp':\n if (this.hasPopupMenu(itemIndex)) {\n this.closeMenu();\n }\n this.focusFirstItem();\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'End':\n case 'PageDown':\n if (this.hasPopupMenu(itemIndex)) {\n this.closeMenu();\n }\n this.focusLastItem();\n event.stopPropagation();\n event.preventDefault();\n break;\n\n default:\n if (this.isPrintableChar(event.key)) {\n this.focusItemByFirstChar(event.key);\n event.stopPropagation();\n event.preventDefault();\n }\n break;\n }\n }\n\n handleMenuItemMouseOver(itemIndex: number): void {\n this.focusItem(itemIndex, true);\n }\n\n handlePopupMenuItemClick(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\n this.focusItem(itemIndex);\n this.closeMenu(itemIndex);\n }\n\n handlePopupMenuItemKeydown(event: KeyboardEvent, itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n const currentSubIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\n const currentSubSubIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\n const items = this.getItems();\n switch (event.key) {\n case ' ':\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\n if (this.mustCloseAfterSelectPopupItem(itemIndex, subItemIndex, subSubItemIndex)) {\n this.closeMenu(itemIndex);\n this.focusItem(itemIndex);\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Enter':\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\n this.closeMenu(itemIndex);\n this.focusItem(itemIndex);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Escape':\n this.closeMenu(itemIndex);\n this.focusItem(itemIndex);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, -1);\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength - 1) % listLength);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, +1);\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength + 1) % listLength);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n this.closeMenu(itemIndex);\n this.focusItem((itemIndex + items.length - 1) % items.length);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n this.closeMenu(itemIndex);\n this.focusItem((itemIndex + items.length + 1) % items.length);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Home':\n case 'PageUp':\n this.focusFirstSubItem(itemIndex);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'End':\n case 'PageDown':\n this.focusLastSubItem(itemIndex);\n event.stopPropagation();\n event.preventDefault();\n break;\n\n case 'Tab':\n this.closeMenu(itemIndex);\n this.focusItem(itemIndex);\n break;\n\n default:\n if (this.isPrintableChar(event.key)) {\n this.focusSubItemByFirstChar(itemIndex, event.key);\n event.stopPropagation();\n event.preventDefault();\n }\n break;\n }\n }\n\n handlePopupMenuItemMouseOver(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n this.focusSubItem(itemIndex, subItemIndex, subSubItemIndex);\n }\n\n /*\n * Comunes\n */\n\n checkRequired(): void {\n const items = this.getItems();\n }\n\n\n activateMenuItem(itemIndex: number): void {\n const items = this.getItems();\n this.activeItemChange.emit(items[itemIndex] as MenuNavigationItem);\n if (items[itemIndex] instanceof MenuNavigationItemComponent) {\n (items[itemIndex] as MenuNavigationItemComponent).selected.emit();\n }\n }\n\n activatePopupMenuItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n let item: MenuNavigationItemSubItem|MenuNavigationItemSubItemSubItem = subItems[subItemIndex]; \n\n this.itemsChange.emit(items);\n this.activeSubItemChange.emit(item as MenuNavigationItem);\n if (item instanceof MenuNavigationSubitemComponent) {\n item.selected.emit();\n }\n }\n\n mustCloseAfterSelectPopupItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n let item: MenuNavigationItemSubItem|MenuNavigationItemSubItemSubItem = subItems[subItemIndex];\n\n return item.role !== 'menuitemcheckbox' && item.role !== 'menuitemradio';\n }\n\n openMenu(itemIndex: number): void {\n const wasOpened = this.menuData[itemIndex].open;\n this.menuData[itemIndex].open = true;\n if (wasOpened) {\n this.activateMenuItem(itemIndex);\n }\n }\n\n closeMenu(itemIndex?: number): void {\n if (itemIndex !== null && itemIndex !== undefined) {\n this.menuData[itemIndex].open = false;\n } else {\n this.menuData.forEach(item => item.open = false);\n }\n }\n\n hasPopupMenu(itemIndex: number): boolean {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n return items[itemIndex].sub && subItems && subItems.length > 0;\n }\n\n private isPrintableChar(str: string): boolean {\n return str.length === 1 && !!str.match(/\\S/);\n }\n\n \n\n /*\n * Comunes - focus\n */\n\n focusItem(itemIndex: number, hover?: boolean): void {\n const hasFocus = this.menunavigation.nativeElement.contains(document.activeElement);\n const isOpen = this.menuData[this.currentFocusItemIndex].open;\n\n if (!hover || hasFocus) {\n this.menuData[itemIndex].menuItem.link.nativeElement.focus();\n }\n\n this.closeMenu();\n if (isOpen && this.hasPopupMenu(itemIndex)) {\n this.openMenu(itemIndex);\n }\n\n this.currentFocusItemIndex = itemIndex;\n }\n\n focusNextAvailableItem(fromItemIndex: number, step: number): void {\n let nextItem = fromItemIndex;\n const items = this.getItems();\n do {\n nextItem = (nextItem + items.length + step) % items.length;\n } while (!this.isItemFocusable(nextItem) && nextItem !== fromItemIndex);\n\n if (nextItem !== fromItemIndex) {\n this.focusItem(nextItem);\n }\n }\n\n focusFirstItem(): void {\n if (this.isItemFocusable(0)) {\n this.focusItem(0);\n } else {\n this.focusNextAvailableItem(0, +1);\n }\n }\n\n focusLastItem(): void {\n const items = this.getItems();\n if (this.isItemFocusable(items.length - 1)) {\n this.focusItem(items.length - 1);\n } else {\n this.focusNextAvailableItem(items.length - 1, -1);\n }\n }\n\n isItemFocusable(itemIndex: number): boolean {\n return !this.getItems()[itemIndex].disabled;\n }\n\n focusItemByFirstChar(char: string): void {\n const itemContents: string[] = this.menuItems.map(menuItem => menuItem.itemContentWrapper.nativeElement.textContent);\n let index = this.currentFocusItemIndex;\n let foundIndex = -1;\n do {\n index = (index + itemContents.length + 1) % itemContents.length;\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\n && this.isItemFocusable(index)) {\n foundIndex = index;\n }\n } while (foundIndex === -1 && index !== this.currentFocusItemIndex);\n\n if (foundIndex >= 0) {\n this.focusItem(foundIndex);\n }\n }\n\n focusSubItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\n if (this.menuData[itemIndex].menuItem.popupMenuItems.length > 0) {\n const menuDataIndex = subItemIndex;\n this.menuData[itemIndex].currentFocusSubItemIndex = subItemIndex;\n this.menuData[itemIndex].currentFocusSubSubItemIndex = subSubItemIndex;\n const elem = this.menuData[itemIndex].menuItem.popupMenuItems.toArray()[menuDataIndex].nativeElement;\n if (elem) {\n elem.focus();\n } else {\n console.error('No subitem to focus');\n }\n } else {\n console.error('No subitems');\n }\n }\n\n focusNextAvailableSubItem(itemIndex: number, fromItemSubIndex: number, fromItemSubSubIndex: number, step: number): void {\n let nextSubIndex = fromItemSubIndex;\n let nextSubSubIndex = fromItemSubSubIndex;\n let allSubItemsChecked;\n const items = this.getItems();\n do {\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step);\n nextSubIndex = nextIndexes.subIndex;\n nextSubSubIndex = nextIndexes.subSubIndex;\n allSubItemsChecked = (fromItemSubIndex === nextSubIndex && fromItemSubSubIndex === nextSubSubIndex);\n } while (!this.isSubItemFocusable(itemIndex, nextSubIndex, nextSubSubIndex) && !allSubItemsChecked);\n\n if (!allSubItemsChecked) {\n this.focusSubItem(itemIndex, nextSubIndex, nextSubSubIndex);\n }\n }\n\n focusFirstSubItem(itemIndex: number): void {\n let firstSubSubItem = null;\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n if (subItems && subItems.length > 0) {\n firstSubSubItem = 0;\n }\n\n if (this.isSubItemFocusable(itemIndex, 0, firstSubSubItem)) {\n this.focusSubItem(itemIndex, 0, firstSubSubItem);\n } else {\n this.focusNextAvailableSubItem(itemIndex, 0, firstSubSubItem, +1);\n }\n }\n\n focusLastSubItem(itemIndex: number): void {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n const lastItemIndex = subItems.length - 1;\n const lastItem = subItems[lastItemIndex];\n let lastSubSubItem = null;\n\n if (this.isSubItemFocusable(itemIndex, lastItemIndex, lastSubSubItem)) {\n this.focusSubItem(itemIndex, lastItemIndex, lastSubSubItem);\n } else {\n this.focusNextAvailableSubItem(itemIndex, lastItemIndex, lastSubSubItem, -1);\n }\n }\n\n isSubItemFocusable(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\n const items = this.getItems();\n const subItems = this.getItemSubitems(items[itemIndex]);\n let item: MenuNavigationItemSubItem|MenuNavigationItemSubItemSubItem = subItems[subItemIndex];\n\n let isFocusable = false;\n if (item.role !== 'separator' && item.role !== 'none') {\n isFocusable = true;\n }\n return isFocusable;\n }\n\n focusSubItemByFirstChar(itemIndex: number, char: string): void {\n const itemContents: string[] = this.menuItems.toArray()[itemIndex].popupMenuItems.map(menuItem => menuItem.nativeElement.textContent);\n let subItemIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\n let subSubItemIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\n let foundSubIndex = -1;\n let foundSubSubIndex = null;\n let allSubItemsChecked = false;\n const items = this.getItems();\n do {\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, subItemIndex, subSubItemIndex, +1);\n subItemIndex = nextIndexes.subIndex;\n subSubItemIndex = nextIndexes.subSubIndex;\n const index = subItemIndex;\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\n && this.isSubItemFocusable(itemIndex, subItemIndex, subSubItemIndex)) {\n foundSubIndex = subItemIndex;\n foundSubSubIndex = subSubItemIndex;\n }\n allSubItemsChecked = (this.menuData[itemIndex].currentFocusSubItemIndex === subItemIndex\n && this.menuData[itemIndex].currentFocusSubSubItemIndex === subSubItemIndex);\n } while (foundSubIndex === -1 && !allSubItemsChecked);\n\n if (foundSubIndex >= 0) {\n this.focusSubItem(itemIndex, foundSubIndex, foundSubSubIndex);\n }\n }\n\n /*\n * Metodos para facilitar contenido\n */\n\n getItems(): MenuNavigationItem[]|MenuNavigationItemComponent[] {\n let items;\n if (this.itemComponentList && this.itemComponentList.length > 0) {\n items = this.itemComponentList.toArray();\n } else {\n items = this.items;\n }\n return items;\n }\n\n getItemSubitems(item: MenuNavigationItem|MenuNavigationItemComponent): MenuNavigationItemSubItem[]|MenuNavigationSubitemComponent[] {\n let subItems = [];\n if (item instanceof MenuNavigationItemComponent){\n subItems = item.getSubItems();\n }\n\n if (!subItems || subItems.length === 0) {\n subItems = item.sub ? item.sub.items : [];\n }\n return subItems;\n }\n\n getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step): { subIndex: number, subSubIndex?: number} {\n const subItems = this.getItemSubitems(items[itemIndex]);\n\n let checkNextSubItem = true;\n if (checkNextSubItem) {\n nextSubIndex = (nextSubIndex + step + subItems.length) % subItems.length;\n } \n return {subIndex: nextSubIndex, subSubIndex: nextSubSubIndex};\n }\n\n getIdPrefix(): string {\n return this.idPrefix ? this.idPrefix : this.id + 'menunavigation-item';\n }\n\n getItemId(item, index: number): string {\n let id: string;\n if (item) {\n if (item.id) {\n id = item.id;\n } else {\n id = index === 0 ? this.getIdPrefix() : `${this.getIdPrefix()}-${index}`;\n }\n }\n return id;\n }\n\n getPopupStyle(itemIndex: number): object {\n let style = {};\n if (this.menuData && itemIndex < this.menuData.length) {\n const menuItem = this.menuData[itemIndex].menuItem;\n const rect = menuItem.link.nativeElement.getBoundingClientRect();\n if (this.menuData[itemIndex].open) {\n style = {\n position: 'absolute',\n top: '0px',\n left: '0px',\n zIndex: 100,\n display: 'block'\n };\n } else {\n style = {\n zIndex: 0,\n display: 'none'\n };\n }\n }\n\n return style;\n }\n\n getSubItemId(item, index: number, parentId: string): string {\n let id: string;\n if (item) {\n if (item.id) {\n id = item.id;\n } else {\n id = index === 0 ? `sub-${parentId}` : `sub-${parentId}-${index}`;\n }\n }\n return id;\n }\n \n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from '../shared/shared.module';\nimport { DesyCommonsModule } from '../desy-commons/desy-commons.module';\n\nimport { BreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';\nimport { BreadcrumbsItemComponent } from './components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component';\nimport { ErrorSummaryComponent } from './components/error-summary/error-summary.component';\nimport { ErrorSummaryItemComponent } from './components/error-summary/error-summary-item/error-summary-item.component';\nimport { MenuHorizontalComponent } from './components/menu-horizontal/menu-horizontal.component';\nimport { MenuHorizontalItemComponent } from './components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component';\nimport { MenuVerticalComponent } from './components/menu-vertical/menu-vertical.component';\nimport { NavComponent } from './components/nav/nav.component';\nimport { SkipLinkComponent } from './components/skip-link/skip-link.component';\nimport { HeaderComponent } from './components/header/header.component';\nimport { HeaderSubnavComponent } from './components/header/header-subnav/header-subnav.component';\nimport { HeaderNavigationComponent } from './components/header/header-navigation/header-navigation.component';\nimport { HeaderDropdownComponent } from './components/header/header-dropdown/header-dropdown.component';\nimport { HeaderOffcanvasButtonComponent } from './components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component';\nimport { HeaderOffcanvasComponent } from './components/header/header-offcanvas/header-offcanvas.component';\nimport { NotificationComponent } from './components/notification/notification.component';\nimport { NotificationItemComponent } from './components/notification/notification-item/notification-item.component';\nimport { FooterComponent } from './components/footer/footer.component';\nimport { MenubarComponent } from './components/menubar/menubar.component';\nimport { MenubaritemDirective } from './components/menubar/directives/menubaritem.directive';\nimport { MenubarItemComponent } from './components/menubar/components/menubar-item/menubar-item.component';\nimport { MenubarSubitemComponent } from './components/menubar/components/menubar-subitem/menubar-subitem.component';\nimport { MenubarSubsubitemComponent } from './components/menubar/components/menubar-subsubitem/menubar-subsubitem.component';\nimport { MenubarLabelComponent } from './components/menubar/components/menubar-label/menubar-label.component';\nimport { NavItemComponent } from './components/nav/nav-item/nav-item.component';\nimport { MenuVerticalItemComponent } from './components/menu-vertical/menu-vertical-item/menu-vertical-item.component';\nimport { MenuVerticalItemSubComponent } from './components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component';\nimport { MenuVerticalItemSubItemComponent } from './components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component';\nimport { HeaderOffcanvasCloseButtonComponent } from './components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component';\nimport { HeaderNavigationItemComponent } from './components/header/header-navigation/header-navigation-item/header-navigation-item.component';\nimport { FooterMetaComponent } from './components/footer/footer-meta/footer-meta.component';\nimport { FooterMetaItemComponent } from './components/footer/footer-meta/footer-meta-item/footer-meta-item.component';\nimport { FooterNavigationComponent } from './components/footer/footer-navigation/footer-navigation.component';\nimport { FooterNavigationItemComponent } from './components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component';\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\nimport { MenuNavigationComponent } from './components/menu-navigation/menu-navigation.component';\nimport { MenuNavigationItemComponent } from './components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component';\nimport { MenuNavigationSubitemComponent } from './components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component';\nimport { HeaderCustomNavigationComponent } from './components/header/header-custom-navigation/header-custom-navigation.component';\n\n\n@NgModule({\n declarations: [\n BreadcrumbsComponent,\n BreadcrumbsItemComponent,\n ErrorSummaryComponent,\n ErrorSummaryItemComponent,\n FooterComponent,\n FooterMetaComponent,\n FooterMetaItemComponent,\n FooterNavigationComponent,\n FooterNavigationItemComponent,\n HeaderComponent,\n HeaderSubnavComponent,\n HeaderNavigationComponent,\n HeaderNavigationItemComponent,\n HeaderDropdownComponent,\n HeaderOffcanvasButtonComponent,\n HeaderOffcanvasComponent,\n HeaderOffcanvasCloseButtonComponent,\n MenuHorizontalComponent,\n MenuHorizontalItemComponent,\n MenuVerticalComponent,\n MenuVerticalItemComponent,\n MenuVerticalItemSubComponent,\n MenuVerticalItemSubItemComponent,\n MenubarComponent,\n MenubarLabelComponent,\n MenubarItemComponent,\n MenubarSubitemComponent,\n MenubarSubsubitemComponent,\n NavComponent,\n NotificationComponent,\n NotificationItemComponent,\n SkipLinkComponent,\n NavItemComponent,\n MenuNavigationComponent,\n\n MenubaritemDirective,\n\n MenuNavigationItemComponent,\n MenuNavigationSubitemComponent,\n HeaderCustomNavigationComponent,\n ],\n imports: [\n CommonModule,\n SharedModule,\n DesyCommonsModule,\n DesyButtonsModule\n ],\n exports: [\n BreadcrumbsComponent,\n BreadcrumbsItemComponent,\n ErrorSummaryComponent,\n ErrorSummaryItemComponent,\n FooterComponent,\n FooterMetaComponent,\n FooterMetaItemComponent,\n FooterNavigationComponent,\n FooterNavigationItemComponent,\n HeaderComponent,\n HeaderSubnavComponent,\n HeaderNavigationComponent,\n HeaderNavigationItemComponent,\n HeaderDropdownComponent,\n HeaderOffcanvasComponent,\n HeaderOffcanvasButtonComponent,\n HeaderOffcanvasCloseButtonComponent,\n MenuHorizontalComponent,\n MenuHorizontalItemComponent,\n MenuVerticalComponent,\n MenuVerticalItemComponent,\n MenuVerticalItemSubComponent,\n MenuVerticalItemSubItemComponent,\n MenubarComponent,\n MenubarLabelComponent,\n MenubarItemComponent,\n MenubarSubitemComponent,\n MenubarSubsubitemComponent,\n NavComponent,\n NotificationComponent,\n NotificationItemComponent,\n NavItemComponent,\n SkipLinkComponent,\n MenuNavigationComponent,\n MenuNavigationSubitemComponent,\n MenuNavigationItemComponent,\n MenuNavigationSubitemComponent,\n HeaderCustomNavigationComponent\n ]\n})\nexport class DesyNavModule { }\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[desyFocusClickedCell]'\n})\nexport class FocusClickedCellDirective {\n\n constructor(private el: ElementRef) {}\n\n @HostListener('click')\n onClick(): void {\n const hostElem = this.el.nativeElement; // la tabla - offsetParent\n const elemntsFocus = hostElem.offsetParent.querySelectorAll('[tabindex]'); // buscamos todos que pueden tener tabindex\n for (const iterator of elemntsFocus) {\n iterator.setAttribute('tabindex', '-1'); // se les quita\n }\n this.activeTabindex();\n }\n\n @HostListener('keydown', ['$event'])\n manageArrows(event): void {\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp' || event.code === 'ArrowRight' || event.code === 'ArrowLeft'){\n let next = null;\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp'){\n let tr = null;\n if (event.code === 'ArrowDown') {\n tr = this.el.nativeElement.parentNode.nextElementSibling;\n } else if (event.code === 'ArrowUp') {\n tr = this.el.nativeElement.parentNode.previousElementSibling;\n }\n\n next = tr ? tr.children[this.findIndex()] : null;\n event.preventDefault();\n }\n\n if (event.code === 'ArrowRight' || event.code === 'ArrowLeft') {\n next = this.el.nativeElement;\n do {\n if (event.code === 'ArrowRight') {\n next = next.nextElementSibling;\n } else if (event.code === 'ArrowLeft') {\n next = next.previousElementSibling;\n }\n } while (next && !next.getAttribute('tabindex'));\n }\n\n if (next && next.getAttribute('tabindex')){\n this.inactiveTabindex();\n next.setAttribute('tabindex', '0');\n next.focus();\n }\n }\n }\n\n private activeTabindex(): void {\n this.el.nativeElement.setAttribute('tabindex', '0');\n }\n\n private inactiveTabindex(): void {\n this.el.nativeElement.setAttribute('tabindex', '-1');\n }\n\n private findIndex(): number {\n const mynode = this.el.nativeElement;\n const parentNode = this.el.nativeElement.parentNode;\n let index = -1;\n for (let i = 0; i < parentNode.children.length; i++) {\n const otherNode = parentNode.children[i];\n if (mynode.isEqualNode(otherNode)){\n index = i;\n break;\n }\n }\n return index;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { SharedModule } from '../shared/shared.module';\nimport { DesyFormsModule } from '../desy-forms/desy-forms.module';\n\nimport { TableComponent } from './components/table/table.component';\nimport { TableAdvancedComponent } from './components/table-advanced/table-advanced.component';\nimport { FocusClickedCellDirective } from './directives/focus-clicked-cell.directive';\nimport { TableCellComponent } from './components/table/components/table-cell.component';\nimport { TableHeaderComponent } from './components/table/components/table-header.component';\nimport { TableRowComponent } from './components/table/components/table-row.component';\nimport { TableCaptionComponent } from './components/table/components/table-caption.component';\nimport { TableAdvancedHeaderComponent } from './components/table-advanced/components/table-advanced-header.component';\nimport { TableAdvancedHeaderCellComponent } from './components/table-advanced/components/table-advanced-header-cell.component';\nimport { TableAdvancedRowComponent } from './components/table-advanced/components/table-advanced-row.component';\nimport { CellDirective } from './directives/cell.directive';\nimport { RowDirective } from './directives/row.directive';\nimport {TableAdvancedRowCellComponent} from './components/table-advanced/components/table-advanced-row-cell.component';\nimport { TableAdvancedSelectComponent } from './components/table-advanced/components/table-advanced-select.component';\n\n\n@NgModule({\n declarations: [\n TableComponent,\n TableCaptionComponent,\n TableCellComponent,\n TableHeaderComponent,\n TableRowComponent,\n TableAdvancedComponent,\n TableAdvancedHeaderComponent,\n TableAdvancedHeaderCellComponent,\n TableAdvancedRowComponent,\n TableAdvancedRowCellComponent,\n TableAdvancedSelectComponent,\n\n FocusClickedCellDirective,\n CellDirective,\n RowDirective,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n A11yModule,\n SharedModule,\n DesyFormsModule\n ],\n exports: [\n TableComponent,\n TableCaptionComponent,\n TableCellComponent,\n TableHeaderComponent,\n TableRowComponent,\n TableAdvancedComponent,\n TableAdvancedHeaderComponent,\n TableAdvancedHeaderCellComponent,\n TableAdvancedRowComponent,\n TableAdvancedRowCellComponent,\n TableAdvancedSelectComponent\n ]\n})\nexport class DesyTablesModule { }\n","import { PaginationItemPerPageComponent } from './components/pagination-item-perpage/pagination-item-perpage.component';\nimport { PaginationListboxLabelComponent } from './components/pagination-listbox-label/pagination-listbox-label.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { DesyNavModule } from '../desy-nav/desy-nav.module';\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\n\nimport { PaginationComponent } from './components/pagination/pagination.component';\n\n\n@NgModule({\n declarations: [\n PaginationComponent, \n PaginationListboxLabelComponent,\n PaginationItemPerPageComponent\n ],\n imports: [\n CommonModule,\n SharedModule,\n DesyNavModule,\n DesyButtonsModule\n ],\n exports: [\n PaginationComponent, \n PaginationListboxLabelComponent,\n PaginationItemPerPageComponent\n ]\n})\nexport class DesyPaginationModule { }\n","import { NgModule } from '@angular/core';\n\nimport { DesyButtonsModule } from './desy-buttons/desy-buttons.module';\nimport { DesyFormsModule } from './desy-forms/desy-forms.module';\nimport { DesyModalsModule } from './desy-modals/desy-modals.module';\nimport { DesyNavModule } from './desy-nav/desy-nav.module';\nimport { DesyTablesModule } from './desy-tables/desy-tables.module';\nimport { DesyViewsModule } from './desy-views/desy-views.module';\nimport { DesyPaginationModule } from './desy-pagination/desy-pagination.module';\nimport { DesyCommonsModule } from './desy-commons/desy-commons.module';\n\n@NgModule({\n imports: [\n DesyButtonsModule,\n DesyCommonsModule,\n DesyFormsModule,\n DesyModalsModule,\n DesyNavModule,\n DesyTablesModule,\n DesyViewsModule,\n DesyPaginationModule,\n DesyCommonsModule,\n ],\n exports: [\n DesyButtonsModule,\n DesyCommonsModule,\n DesyFormsModule,\n DesyModalsModule,\n DesyNavModule,\n DesyTablesModule,\n DesyViewsModule,\n DesyPaginationModule,\n DesyCommonsModule,\n ]\n})\nexport class DesyAngularModule { }\n"],"mappings":"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"}
|