@fundamental-ngx/core 0.49.1 → 0.49.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/avatar-group-legacy/avatar-group-legacy.component.d.ts +6 -6
- package/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.d.ts +2 -2
- package/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.d.ts +2 -2
- package/bar/bar.component.d.ts +6 -6
- package/bar/button-bar/button-bar.component.d.ts +4 -4
- package/calendar/calendar-header/calendar-header.component.d.ts +2 -2
- package/card/card-content.component.d.ts +2 -2
- package/card/card-counter.directive.d.ts +2 -2
- package/card/card-header.component.d.ts +6 -6
- package/card/card-loader.component.d.ts +2 -2
- package/card/card-second-subtitle.directive.d.ts +2 -2
- package/card/card-subtitle.directive.d.ts +2 -2
- package/card/card-title.directive.d.ts +2 -2
- package/card/card.component.d.ts +3 -3
- package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -2
- package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -2
- package/card/kpi/card-kpi-analytics.directive.d.ts +2 -2
- package/card/kpi/card-kpi-header.component.d.ts +2 -2
- package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -2
- package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -2
- package/card/kpi/card-kpi-value.directive.d.ts +4 -4
- package/checkbox/checkbox/checkbox.component.d.ts +3 -5
- package/content-density/providers/url-content-density-storage.d.ts +4 -4
- package/content-density/services/content-density-observer.service.d.ts +15 -15
- package/datetime/datetime-adapter.d.ts +9 -2
- package/datetime/fd-date.d.ts +10 -14
- package/datetime/fd-datetime-adapter.d.ts +2 -2
- package/dialog/base/dialog-base.class.d.ts +2 -2
- package/dialog/base/dialog-header-base.class.d.ts +4 -4
- package/dialog/base/dialog-ref-base.class.d.ts +6 -4
- package/dynamic-side-content/dynamic-side-content.component.d.ts +4 -4
- package/esm2022/avatar-group-legacy/avatar-group-legacy.component.mjs +15 -15
- package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.mjs +12 -12
- package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.mjs +9 -9
- package/esm2022/bar/bar.component.mjs +13 -13
- package/esm2022/bar/button-bar/button-bar.component.mjs +3 -3
- package/esm2022/calendar/calendar-header/calendar-header.component.mjs +1 -1
- package/esm2022/card/card-content.component.mjs +5 -5
- package/esm2022/card/card-counter.directive.mjs +6 -6
- package/esm2022/card/card-header.component.mjs +5 -5
- package/esm2022/card/card-loader.component.mjs +5 -5
- package/esm2022/card/card-second-subtitle.directive.mjs +5 -5
- package/esm2022/card/card-subtitle.directive.mjs +5 -5
- package/esm2022/card/card-title.directive.mjs +5 -5
- package/esm2022/card/card.component.mjs +5 -5
- package/esm2022/card/kpi/card-kpi-analytics-content.directive.mjs +5 -5
- package/esm2022/card/kpi/card-kpi-analytics-label.directive.mjs +5 -5
- package/esm2022/card/kpi/card-kpi-analytics.directive.mjs +5 -5
- package/esm2022/card/kpi/card-kpi-header.component.mjs +5 -5
- package/esm2022/card/kpi/card-kpi-scale-icon.directive.mjs +5 -5
- package/esm2022/card/kpi/card-kpi-scale-text.directive.mjs +5 -5
- package/esm2022/card/kpi/card-kpi-value.directive.mjs +5 -5
- package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/combobox/combobox.component.mjs +2 -2
- package/esm2022/content-density/providers/url-content-density-storage.mjs +11 -11
- package/esm2022/content-density/services/content-density-observer.service.mjs +7 -16
- package/esm2022/datetime/datetime-adapter.mjs +4 -2
- package/esm2022/datetime/fd-date.mjs +34 -27
- package/esm2022/datetime/fd-datetime-adapter.mjs +1 -1
- package/esm2022/dialog/base/dialog-base.class.mjs +1 -1
- package/esm2022/dialog/base/dialog-header-base.class.mjs +1 -1
- package/esm2022/dialog/base/dialog-ref-base.class.mjs +4 -8
- package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +9 -9
- package/esm2022/feed-input/directives/feed-input-avatar.directive.mjs +5 -5
- package/esm2022/feed-list-item/components/list/feed-list.component.mjs +15 -15
- package/esm2022/file-uploader/directives/file-uploader-select.directive.mjs +1 -1
- package/esm2022/file-uploader/file-uploader.component.mjs +5 -5
- package/esm2022/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.mjs +3 -3
- package/esm2022/form/form-group/form-group.component.mjs +8 -8
- package/esm2022/form/form-message/form-message.component.mjs +9 -9
- package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -3
- package/esm2022/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
- package/esm2022/illustrated-message/illustrated-message.component.mjs +10 -10
- package/esm2022/input-group/input-group-directives.mjs +22 -22
- package/esm2022/layout-grid/directives/layout-grid-col.directive.mjs +9 -9
- package/esm2022/layout-grid/layout-grid.component.mjs +9 -9
- package/esm2022/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +9 -9
- package/esm2022/list/list-item/list-item.component.mjs +20 -17
- package/esm2022/list/list-message.directive.mjs +9 -9
- package/esm2022/menu/directives/segmented-button/segmented-button-header.directive.mjs +1 -2
- package/esm2022/menu/directives/toggle-button.directive.mjs +1 -2
- package/esm2022/message-box/message-box.component.mjs +17 -17
- package/esm2022/message-page/message-page.component.mjs +5 -5
- package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +5 -5
- package/esm2022/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.mjs +1 -1
- package/esm2022/message-strip/alert/message-strip-alert.service.mjs +2 -3
- package/esm2022/message-strip/message-strip.component.mjs +16 -16
- package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +43 -45
- package/esm2022/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.mjs +1 -1
- package/esm2022/micro-process-flow/micro-process-flow-focusable-item.directive.mjs +13 -13
- package/esm2022/multi-combobox/multi-combobox.component.mjs +2 -5
- package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
- package/esm2022/multi-input/multi-input.component.mjs +2 -2
- package/esm2022/nested-list/nested-content/nested-list-content.directive.mjs +6 -6
- package/esm2022/nested-list/nested-item/nested-item.directive.mjs +3 -3
- package/esm2022/nested-list/nested-list/nested-list.directive.mjs +3 -3
- package/esm2022/notification/directives/notification-indicator.directive.mjs +9 -9
- package/esm2022/notification/notification/notification.component.mjs +9 -9
- package/esm2022/notification/notification-group/notification-group.component.mjs +5 -5
- package/esm2022/notification/notification-service/notification.service.mjs +5 -2
- package/esm2022/notification/notification-utils/notification-ref.mjs +2 -5
- package/esm2022/object-number/object-number.component.mjs +9 -9
- package/esm2022/object-status/object-status.component.mjs +13 -12
- package/esm2022/overflow-layout/directives/overflow-expand.directive.mjs +5 -5
- package/esm2022/overflow-layout/directives/overflow-item-ref.directive.mjs +1 -1
- package/esm2022/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +5 -5
- package/esm2022/overflow-layout/directives/overflow-layout-item-container.directive.mjs +8 -8
- package/esm2022/overflow-layout/interfaces/overflow-focusable-item.interface.mjs +1 -1
- package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -18
- package/esm2022/radio/radio-button/radio-button.component.mjs +8 -9
- package/esm2022/rating-indicator/components/rating-indicator.component.mjs +28 -28
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +23 -23
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +7 -8
- package/esm2022/select/select.component.mjs +18 -18
- package/esm2022/shared/interfaces/search-component.interface.mjs +1 -1
- package/esm2022/shellbar/shellbar.component.mjs +7 -7
- package/esm2022/side-navigation/side-navigation.component.mjs +7 -7
- package/esm2022/skeleton/components/skeleton.component.mjs +3 -3
- package/esm2022/status-indicator/status-indicator.component.mjs +15 -15
- package/esm2022/table/directives/table-responsive-wrapper.directive.mjs +3 -3
- package/esm2022/tabs/tab-item/tab-item.directive.mjs +9 -9
- package/esm2022/tabs/tab-link/tab-link.directive.mjs +8 -8
- package/esm2022/tabs/tab-nav/tab-nav.component.mjs +15 -15
- package/esm2022/tabs/tab-panel/tab-panel.component.mjs +3 -3
- package/esm2022/tabs/tab-utils/tab-directives.mjs +8 -8
- package/esm2022/tile/directives/tile.directives.mjs +25 -25
- package/esm2022/tile/tile.component.mjs +9 -11
- package/esm2022/time/time-column/time-column.component.mjs +23 -23
- package/esm2022/timeline/services/position-strategies/base-strategy.mjs +1 -1
- package/esm2022/timeline/timeline.component.mjs +5 -5
- package/esm2022/title/title.component.mjs +4 -4
- package/esm2022/token/tokenizer.component.mjs +71 -71
- package/esm2022/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/tree/components/tree-item/tree-item.component.mjs +4 -6
- package/esm2022/tree/tree.component.mjs +1 -4
- package/esm2022/upload-collection/upload-collection-item.directive.mjs +3 -3
- package/esm2022/vertical-navigation/vertical-navigation.component.mjs +6 -6
- package/esm2022/wizard/wizard-step/wizard-step.component.mjs +3 -3
- package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -2
- package/feed-list-item/components/list/feed-list.component.d.ts +6 -6
- package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +33 -33
- package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +61 -61
- package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-content-density.mjs +17 -26
- package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime.mjs +36 -27
- package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -7
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +8 -8
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +15 -15
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +3 -4
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +9 -9
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +21 -21
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs +16 -16
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +8 -8
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +27 -24
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +0 -2
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +16 -16
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-page.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +20 -21
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +55 -57
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +1 -4
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +9 -9
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +25 -25
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +8 -8
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +12 -11
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +32 -32
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +7 -8
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +27 -27
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +28 -29
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +17 -17
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +38 -38
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tile.mjs +32 -34
- package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +23 -23
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-timeline.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-title.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +70 -70
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +3 -8
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +5 -5
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/file-uploader/directives/file-uploader-select.directive.d.ts +1 -1
- package/file-uploader/file-uploader.component.d.ts +4 -4
- package/form/form-group/form-group.component.d.ts +4 -4
- package/form/form-message/form-message.component.d.ts +2 -2
- package/grid-list/components/grid-list/grid-list.component.d.ts +3 -2
- package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +8 -8
- package/illustrated-message/illustrated-message.component.d.ts +7 -7
- package/input-group/input-group-directives.d.ts +12 -12
- package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -2
- package/layout-grid/layout-grid.component.d.ts +2 -2
- package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +2 -2
- package/list/list-item/list-item.component.d.ts +13 -13
- package/list/list-message.directive.d.ts +4 -4
- package/message-box/message-box.component.d.ts +5 -5
- package/message-page/message-page.component.d.ts +2 -2
- package/message-strip/alert/message-strip-alert/message-strip-alert.component.d.ts +4 -4
- package/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.d.ts +4 -4
- package/message-strip/alert/message-strip-alert.service.d.ts +3 -2
- package/message-strip/message-strip.component.d.ts +6 -6
- package/micro-process-flow/components/micro-process-flow/micro-process-flow.component.d.ts +15 -17
- package/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.d.ts +2 -2
- package/micro-process-flow/micro-process-flow-focusable-item.directive.d.ts +6 -6
- package/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
- package/nested-list/nested-content/nested-list-content.directive.d.ts +2 -2
- package/nested-list/nested-item/nested-item.directive.d.ts +2 -2
- package/nested-list/nested-list/nested-list.directive.d.ts +2 -2
- package/notification/directives/notification-indicator.directive.d.ts +4 -4
- package/notification/notification/notification.component.d.ts +2 -2
- package/notification/notification-group/notification-group.component.d.ts +2 -2
- package/notification/notification-utils/notification-ref.d.ts +5 -3
- package/object-number/object-number.component.d.ts +4 -4
- package/object-status/object-status.component.d.ts +5 -4
- package/overflow-layout/directives/overflow-expand.directive.d.ts +2 -2
- package/overflow-layout/directives/overflow-item-ref.directive.d.ts +2 -2
- package/overflow-layout/directives/overflow-layout-focusable-item.directive.d.ts +2 -2
- package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +2 -2
- package/overflow-layout/interfaces/overflow-focusable-item.interface.d.ts +1 -1
- package/overflow-layout/overflow-layout.component.d.ts +4 -4
- package/package.json +3 -3
- package/radio/radio-button/radio-button.component.d.ts +7 -7
- package/rating-indicator/components/rating-indicator.component.d.ts +12 -12
- package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +8 -8
- package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -2
- package/select/select.component.d.ts +19 -19
- package/shared/interfaces/search-component.interface.d.ts +1 -1
- package/shellbar/shellbar.component.d.ts +12 -12
- package/side-navigation/side-navigation.component.d.ts +2 -2
- package/skeleton/components/skeleton.component.d.ts +2 -2
- package/status-indicator/status-indicator.component.d.ts +7 -7
- package/tabs/tab-item/tab-item.directive.d.ts +2 -2
- package/tabs/tab-link/tab-link.directive.d.ts +2 -2
- package/tabs/tab-nav/tab-nav.component.d.ts +8 -8
- package/tabs/tab-panel/tab-panel.component.d.ts +2 -2
- package/tabs/tab-utils/tab-directives.d.ts +5 -5
- package/tile/directives/tile.directives.d.ts +12 -12
- package/tile/tile.component.d.ts +4 -6
- package/time/time-column/time-column.component.d.ts +6 -6
- package/timeline/services/position-strategies/base-strategy.d.ts +2 -2
- package/timeline/timeline.component.d.ts +2 -2
- package/title/title.component.d.ts +2 -2
- package/token/tokenizer.component.d.ts +16 -16
- package/toolbar/toolbar.component.d.ts +2 -2
- package/tree/components/tree-item/tree-item.component.d.ts +10 -9
- package/upload-collection/upload-collection-item.directive.d.ts +2 -2
- package/vertical-navigation/vertical-navigation.component.d.ts +2 -2
- package/wizard/wizard-step/wizard-step.component.d.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-menu.mjs","sources":["../../../../libs/core/menu/menu.tokens.ts","../../../../libs/core/menu/directives/glyph-menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-item-input.directive.ts","../../../../libs/core/menu/directives/menu-title.directive.ts","../../../../libs/core/menu/menu-interactive.component.ts","../../../../libs/core/menu/services/menu.service.ts","../../../../libs/core/menu/menu-item/menu-item.component.ts","../../../../libs/core/menu/menu-item/menu-item.component.html","../../../../libs/core/menu/directives/menu-shortcut.directive.ts","../../../../libs/core/menu/directives/menu-trigger.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-header.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-option.directive.ts","../../../../libs/core/menu/directives/toggle-button.directive.ts","../../../../libs/core/menu/menu-separator.directive.ts","../../../../libs/core/menu/default-menu-item.class.ts","../../../../libs/core/menu/menu.interface.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.html","../../../../libs/core/menu/menu.component.ts","../../../../libs/core/menu/menu.component.html","../../../../libs/core/menu/menu.module.ts","../../../../libs/core/menu/menu-keyboard.service.ts","../../../../libs/core/menu/fundamental-ngx-core-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const TOGGLE_MENU_ITEM = new InjectionToken('TOGGLE_MENU_ITEM');\nexport const FD_MENU_COMPONENT = new InjectionToken('FD_MENU_COMPONENT');\nexport const FD_MENU_ITEM_COMPONENT = new InjectionToken('FD_MENU_ITEM_COMPONENT');\n","import { CdkPortalOutlet, ComponentPortal, DomPortal, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, Directive, EmbeddedViewRef, Input, OnDestroy, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { Observable, Subject, combineLatest, first, map, tap } from 'rxjs';\nimport { MenuComponent } from '../menu.component';\nimport { FD_MENU_COMPONENT, TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: '[fdMenuAddonGlyph], [fd-menu-addon-glyph]',\n standalone: true\n})\nexport class GlyphMenuAddonDirective implements OnDestroy {\n /**\n * The icon name to display. See the icon page for the list of icons\n * here: https://sap.github.io/fundamental-ngx/icon\n **/\n @Input() set glyph(glyph: string | undefined) {\n this._glyphName$.next(glyph);\n }\n\n /**\n * Toggle buttons always need a space, so we check if it is in a toggle button\n * */\n isInToggleButton = !!inject(TOGGLE_MENU_ITEM, { optional: true });\n\n /** @hidden */\n private _menuComponent = inject<MenuComponent>(FD_MENU_COMPONENT, { optional: true });\n\n /** @hidden */\n private _addonGlyphPortalOutlet$ = new Subject<CdkPortalOutlet>();\n\n /** @hidden */\n private _glyphName$ = new Subject<string | undefined>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n combineLatest([this._addonGlyphPortalOutlet$, this._glyphName$])\n .pipe(\n tap(([, glyphName]) => {\n glyphName || this.isInToggleButton ? this._addGlyphAddonToMenu() : this._removeGlyphAddonFromMenu();\n }),\n tap(([outlet, glyphName]) => {\n if (!glyphName) {\n outlet.detach();\n return;\n }\n const componentRef = outlet.attachComponentPortal(new ComponentPortal(IconComponent));\n componentRef.instance.glyph = glyphName;\n componentRef.instance.elementRef.nativeElement.setAttribute('role', 'presentation');\n if (this.isInToggleButton) {\n componentRef.instance.elementRef.nativeElement.classList.add('fd-menu__checkmark');\n }\n componentRef.changeDetectorRef.detectChanges();\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n setGlyphPortalOutlet(outlet: CdkPortalOutlet): void {\n this._addonGlyphPortalOutlet$.next(outlet);\n }\n\n /** @hidden */\n renderElement<ComponentType>(element: ComponentPortal<ComponentType>): Observable<ComponentRef<ComponentType>>;\n /** @hidden */\n renderElement<TemplateContext>(\n element: TemplatePortal<TemplateContext>\n ): Observable<EmbeddedViewRef<TemplateContext>>;\n /** @hidden */\n renderElement(element: DomPortal): Observable<any>;\n /** @hidden */\n renderElement(element: Portal<any>): Observable<any> {\n return this._addonGlyphPortalOutlet$.pipe(\n first(),\n tap((outlet) => outlet.detach()),\n map((outlet) => outlet.attach(element))\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._removeGlyphAddonFromMenu();\n }\n\n /** @hidden */\n private _addGlyphAddonToMenu(): void {\n this._menuComponent?.registerAddon(this);\n }\n\n /** @hidden */\n private _removeGlyphAddonFromMenu(): void {\n this._menuComponent?.unregisterAddon(this);\n }\n}\n","import { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { Component, ElementRef, HostBinding, Input, ViewChild, inject } from '@angular/core';\nimport { GlyphMenuAddonDirective } from './glyph-menu-addon.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fd-menu-addon',\n template: ` <ng-template cdkPortalOutlet></ng-template> `,\n standalone: true,\n hostDirectives: [{ directive: GlyphMenuAddonDirective, inputs: ['glyph'] }],\n imports: [PortalModule]\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class MenuAddonDirective {\n /** Whether addon is used before or after text */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('position') set setAddonPosition(position: 'before' | 'after') {\n this.fdAddonBeforeClass = position === 'before';\n this.fdAddonAfterClass = position === 'after';\n }\n\n /** Whether is used as submenu indicator */\n @Input()\n @HostBinding('class.fd-menu__addon-after--submenu')\n submenuIndicator = false;\n\n /** Sets Aria hidden attribute */\n @Input()\n @HostBinding('attr.aria-hidden')\n ariaHidden = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-after')\n fdAddonAfterClass = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-before')\n fdAddonBeforeClass = false;\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n set addonPortalOutlet(portalOutlet: CdkPortalOutlet) {\n this._addonGlyph.setGlyphPortalOutlet(portalOutlet);\n }\n\n /** @hidden */\n readonly _addonGlyph = inject(GlyphMenuAddonDirective);\n\n /** @hidden */\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[fd-form-control][fd-menu-item-input]',\n host: {\n class: 'fd-menu__input'\n },\n standalone: true\n})\nexport class MenuItemInputDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /**\n * This is needed to prevent the click event from bubbling up to the menu item\n * and potentially closing the menu or triggering other actions.\n */\n @HostListener('keydown', ['$event'])\n @HostListener('click', ['$event'])\n onInteraction($event: KeyboardEvent | MouseEvent): void {\n if ($event.target === this.elementRef.nativeElement) {\n $event.stopPropagation();\n }\n }\n}\n","import { Directive, ElementRef, HostBinding } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-title]',\n standalone: true\n})\nexport class MenuTitleDirective {\n /** @hidden */\n @HostBinding('class.fd-menu__title')\n fdMenuTitleClass = true;\n\n /** Returns element title text */\n @HostBinding('attr.title')\n get title(): string {\n return this._elementRef.nativeElement.textContent;\n }\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { Component, ContentChild, ElementRef, HostBinding, HostListener, ViewChild, inject } from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-menu-interactive]',\n template: `\n <ng-template cdkPortalOutlet></ng-template>\n <ng-content></ng-content>\n `,\n host: {\n role: 'menuitem'\n },\n imports: [PortalModule],\n standalone: true\n})\nexport class MenuInteractiveComponent implements HasElementRef {\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n addonPortalOutlet: CdkPortalOutlet;\n\n /** @hidden */\n @ContentChild(MenuAddonDirective)\n private set _addon(addon: MenuAddonDirective) {\n if (\n addon?.elementRef.nativeElement === this.elementRef.nativeElement.querySelector('fd-menu-addon:first-child')\n ) {\n this._startAddonInstance = addon;\n }\n }\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n tabindex = 0;\n\n /** @hidden */\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n @HostBinding('class.has-child')\n ariaHaspopup = false;\n\n /** @hidden */\n @HostBinding('class.fd-menu__link')\n readonly fdMenuLinkClass: boolean = true;\n\n /** @hidden */\n @ContentChild(MenuItemInputDirective)\n private _input: MenuItemInputDirective;\n\n /** @hidden */\n _fromSplitButton = false;\n\n /** @hidden */\n readonly elementRef: ElementRef = inject(ElementRef);\n\n /** @hidden */\n private _startAddonInstance: MenuAddonDirective;\n\n /** @hidden */\n get startAddon(): MenuAddonDirective {\n if (!this._startAddonInstance) {\n this.addonPortalOutlet.detach();\n this._startAddonInstance = this.addonPortalOutlet.attachComponentPortal(\n new ComponentPortal(MenuAddonDirective)\n ).instance;\n this._startAddonInstance.setAddonPosition = 'before';\n }\n return this._startAddonInstance;\n }\n\n /** @hidden */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _handleKeydown($event: KeyboardEvent): void {\n if (this._input && $event.target === this.elementRef.nativeElement) {\n this._input.elementRef.nativeElement.focus();\n }\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n this.selected = isSelected && (this.ariaHaspopup || this._fromSplitButton);\n if (this.ariaHaspopup || this._fromSplitButton) {\n this.ariaExpanded = isSelected;\n }\n }\n\n /** @hidden */\n setDisabled(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.tabindex = isDisabled ? -1 : 0;\n }\n\n /** @hidden */\n setSubmenu(hasSubmenu: boolean, itemId?: string): void {\n this.ariaHaspopup = hasSubmenu;\n this.ariaControls = hasSubmenu ? itemId || this.ariaControls : null;\n }\n}\n\nexport { MenuInteractiveComponent as MenuInteractiveDirective };\n","import { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ElementRef, Injectable, OnDestroy, Optional, Renderer2 } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MenuComponent } from '../menu.component';\n\ninterface MenuNode {\n item: MenuItemComponent | null;\n parent: MenuNode | null;\n children: MenuNode[];\n}\n\n/** `null` key is used for the root node */\ntype MenuMap = Map<MenuItemComponent | null, MenuNode>;\n\n@Injectable()\nexport class MenuService implements OnDestroy {\n /** Map of menu items to menu nodes */\n menuMap: MenuMap;\n\n /** Currently focused node */\n focusedNode: MenuNode | undefined;\n\n /** Collection of active menu nodes */\n activeNodePath: MenuNode[] = [];\n\n /** Collection of active menu nodes */\n private _isMobileMode = new Subject<boolean>();\n\n /** @hidden */\n private _menuComponent: MenuComponent;\n\n /** @hidden */\n private _destroyKeyboardHandlerListener: () => void;\n\n /** @hidden */\n get _isRtl(): boolean {\n return this._rtlService?.rtl.value;\n }\n\n /** @hidden */\n constructor(\n private _renderer: Renderer2,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** Reference to menu component */\n get menuComponent(): MenuComponent {\n return this._menuComponent;\n }\n\n /** Returns menu mode observable */\n get isMobileMode(): Observable<boolean> {\n return this._isMobileMode.pipe(distinctUntilChanged());\n }\n\n /** Sets menu mode */\n setMenuMode(value: boolean): void {\n this._isMobileMode.next(value);\n }\n\n /** Sets given menu item as focused */\n setFocused(menuItem: MenuItemComponent | null): void {\n this.focusedNode = this.menuMap.get(menuItem);\n this.focusedNode?.item?.focus();\n }\n\n /**\n * Sets state of a given menu item\n * @param isActive - Whether should be set as active or inactive\n * @param menuItem `MenuItemComponent` that should be set as active or inactive\n */\n setActive(isActive: boolean, menuItem: MenuItemComponent | null): void {\n if (!menuItem || (isActive && menuItem.disabled)) {\n return;\n }\n\n if (isActive) {\n this._addToActivePath(menuItem);\n } else {\n this._removeFromActivePath(menuItem);\n }\n\n this._emitActivePath();\n }\n\n /**\n * Close active sibling submenu if any\n * @param menuItem to look for active siblings\n */\n setInactiveSiblingMenuItem(menuItem: MenuItemComponent): void {\n this._removeActiveSibling(menuItem);\n this._emitActivePath();\n }\n\n /** Initializes menu service based on given Menu Component */\n setMenuComponent(menu: MenuComponent): void {\n this._menuComponent = menu;\n this.menuMap = this._buildMenuMap(this._menuComponent);\n }\n\n /** Clears Active Node Path and resets Focused Node */\n resetMenuState(): void {\n this._clearActivePath();\n this.focusedNode = undefined;\n this._emitActivePath();\n }\n\n /** - Updates the structure of the menu\n * - Validates Active Node Path\n * - Validates Focused Node */\n rebuildMenu(): void {\n this.menuMap = this._buildMenuMap(this._menuComponent);\n\n const deadNode = this.activeNodePath.find((node) => !this.menuMap.has(node.item));\n if (deadNode?.item) {\n this.setActive(false, deadNode.item);\n }\n\n const invalidFocusedElement = this.focusedNode && !this.menuMap.get(this.focusedNode.item);\n if (invalidFocusedElement) {\n this.focusedNode =\n this.activeNodePath[this.activeNodePath.length - 1] || this.menuMap.get(null)!.children[0];\n }\n }\n\n /** Adds Menu keyboard support */\n addKeyboardSupport(elementRef: ElementRef): void {\n this.removeKeyboardSupport();\n this._setKeyboardSupport(elementRef);\n }\n\n /** Removes Menu keyboard support */\n removeKeyboardSupport(): void {\n if (this._destroyKeyboardHandlerListener) {\n this._destroyKeyboardHandlerListener();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.removeKeyboardSupport();\n }\n\n /** @hidden Returns siblings of given node */\n private _nodeSiblings(node: MenuNode): MenuNode[] | undefined {\n return node.parent ? node.parent.children : this.menuMap.get(null)?.children;\n }\n\n /** @hidden Adds given element to the Active Node Path and setts as active*/\n private _addToActivePath(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n\n this._removeActiveSibling(menuItem);\n\n if (menuNode) {\n this.activeNodePath.push(menuNode);\n menuNode.item?.setSelected(true);\n }\n }\n\n /** @hidden Removes given element and all its successors from the Active Node Path and setts as inactive*/\n private _removeFromActivePath(menuItem: MenuItemComponent | null): void {\n const menuNode = this.menuMap.get(menuItem);\n if (menuNode) {\n const pathIndex = this.activeNodePath.findIndex((i) => i.item === menuNode.item);\n\n if (pathIndex !== -1) {\n this.activeNodePath\n .splice(pathIndex)\n .forEach((removedActiveNode) => removedActiveNode.item?.setSelected(false));\n }\n }\n }\n\n /** @hidden Removes all elements from the Active Node Path and sets them as closed */\n private _clearActivePath(): void {\n if (this.activeNodePath.length) {\n this._removeFromActivePath(this.activeNodePath[0].item);\n }\n }\n\n /** @hidden\n * - Builds Menu Nodes based on Menu Items\n * - Creates Map of the Menu Nodes */\n private _buildMenuMap(menu: MenuComponent): MenuMap {\n function buildNode(menuItem: MenuItemComponent): MenuNode {\n return {\n item: menuItem,\n parent: null,\n children: menuItem.submenu\n ? menuItem.submenu.menuItems.map((subMenuItem) => buildNode(subMenuItem))\n : []\n };\n }\n\n function setParents(node: MenuNode, parent: MenuNode | null): void {\n node.parent = parent;\n node.children.forEach((childNode) => setParents(childNode, node));\n }\n\n function toMap(node: MenuNode, map = new Map() as MenuMap): MenuMap {\n map.set(node.item, node);\n node.children.forEach((childNode) => toMap(childNode, map));\n return map;\n }\n\n const rootItems = menu._menuItems.filter((rootItem) => !rootItem.parentSubmenu);\n\n /** root item */\n const menuTree: MenuNode = {\n item: null,\n parent: null,\n children: rootItems.map((item) => buildNode(item))\n };\n\n setParents(menuTree, null);\n\n return toMap(menuTree);\n }\n\n /** @hidden Removes active sibling of a given menu item from the Active Path */\n private _removeActiveSibling(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n const children = menuNode?.parent?.children.map((i) => i.item);\n const activeSibling = this.activeNodePath.find((i) => children?.includes(i.item));\n\n if (activeSibling) {\n const activeParentIndex = this.activeNodePath.indexOf(menuNode?.parent as MenuNode);\n this._removeFromActivePath(activeParentIndex !== -1 ? activeSibling.item : this.activeNodePath[0].item);\n }\n }\n\n /** @hidden Adds keyboard support */\n private _setKeyboardSupport(elementRef: ElementRef): void {\n this._destroyKeyboardHandlerListener = this._renderer.listen(\n elementRef.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => this._handleKey(event)\n );\n }\n\n /** @hidden */\n private _handleKey(event: KeyboardEvent): void {\n const focusRight = (node): void => {\n setTimeout(() => this.setFocused(node.children[0].item));\n };\n let matched = true;\n\n if (!this.focusedNode) {\n return;\n }\n\n if (\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode?.children.length) {\n this.setActive(true, this.focusedNode.item);\n focusRight(this.focusedNode);\n }\n } else if (\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode.parent?.item) {\n this.setActive(false, this.focusedNode.parent.item);\n this.setFocused(this.focusedNode.parent.item);\n }\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'down');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'up');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n const focusedNode = this.focusedNode;\n this.setActive(true, focusedNode?.item);\n focusedNode.item?.click();\n if (focusedNode.children.length) {\n focusRight(focusedNode);\n }\n } else if (KeyUtil.isKeyCode(event, ESCAPE) && this.menuComponent.closeOnEscapeKey) {\n this.menuComponent.close();\n } else {\n matched = false;\n }\n\n if (matched) {\n event.preventDefault();\n }\n }\n\n /** @hidden Emits an array of active menu items */\n private _emitActivePath(): void {\n this.menuComponent.activePath.emit(this.activeNodePath.map((node) => node.item) as MenuItemComponent[]);\n }\n\n /** @hidden Depending on direction returns closest enabled sibling of given node */\n private _closestEnabled(node: MenuNode, direction: 'up' | 'down'): MenuNode | null {\n const siblings =\n direction === 'up' ? [...(this._nodeSiblings(node) ?? [])].reverse() : this._nodeSiblings(node);\n\n if (siblings) {\n const startIndex = siblings.indexOf(node) + 1;\n\n for (let i = startIndex; i < siblings.length; i++) {\n if (siblings[i].item && !siblings[i].item!.disabled) {\n return siblings[i];\n }\n }\n }\n\n return null;\n }\n}\n","import {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { defer, fromEvent, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DefaultMenuItem } from '../default-menu-item.class';\nimport { MenuTitleDirective } from '../directives/menu-title.directive';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../menu.tokens';\nimport { MenuService } from '../services/menu.service';\n\nlet menuUniqueId = 0;\n\nexport interface BaseSubmenu {\n templateRef: TemplateRef<any>;\n menuItems: MenuItemComponent[];\n menuService: MenuService;\n ariaLabel: Nullable<string>;\n ariaLabelledby: Nullable<string>;\n _menuItemsChange$: Observable<void>;\n\n _registerItem(item: MenuItemComponent): void;\n\n _unregisterItem(item: MenuItemComponent): void;\n}\n\nexport const SUBMENU = new InjectionToken<BaseSubmenu>('Submenu component dependency');\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[fd-menu-item]',\n exportAs: 'fd-menu-item',\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.role]': '\"menuitem\"',\n '[class.fd-menu__item]': 'true',\n '[class.fd-menu--full-width]': 'menuService?.menuComponent?.mobile || false'\n },\n standalone: true,\n imports: [NgTemplateOutlet],\n providers: [\n {\n provide: FD_MENU_ITEM_COMPONENT,\n useExisting: forwardRef(() => MenuItemComponent)\n }\n ]\n})\nexport class MenuItemComponent implements DefaultMenuItem, OnInit, OnChanges, AfterContentInit, OnDestroy {\n /** Set the Menu Item as disabled/enabled */\n @Input()\n disabled = false;\n\n /** Menu Item id attribute value */\n @Input()\n itemId = `fd-menu-item-${menuUniqueId++}`;\n\n /** Reference to sub-menu component */\n @Input()\n submenu: BaseSubmenu | undefined;\n\n /** Reference to the parent submenu if nested menus created dynamically */\n @Input()\n parentSubmenu: BaseSubmenu | undefined;\n\n /** Whether the menu item has a separator */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.has-separator')\n hasSeparator = false;\n\n /** Emitted when the menu item is selected. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden Reference to the Menu Item title */\n @ContentChild(MenuTitleDirective)\n menuItemTitle: MenuTitleDirective;\n\n /** @hidden Reference to the Menu Item interactive element */\n @ContentChild(MenuInteractiveComponent)\n menuInteractive: MenuInteractiveComponent;\n\n /** @hidden Whether sub-menu is currently visible*/\n submenuVisible = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _hoverSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Optional() public menuService: MenuService | null,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(SUBMENU) private _submenu: BaseSubmenu | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this.parentSubmenu) {\n this._submenu = this.parentSubmenu;\n this._submenu._registerItem(this);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setMenuService();\n this._initialiseItemState();\n this._listenOnMenuLinkClick();\n this._listenOnOuterFocus();\n this._listenOnMenuMode();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && !changes['disabled'].firstChange) {\n this.menuInteractive.setDisabled(this.disabled);\n }\n if (changes['submenu'] && !changes['submenu'].firstChange) {\n this.menuInteractive.setSubmenu(!!this.submenu, this.submenu ? this.itemId : undefined);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this.parentSubmenu) {\n this._submenu?._unregisterItem(this);\n }\n\n this._subscriptions.unsubscribe();\n this._hoverSubscriptions.unsubscribe();\n }\n\n /** Whether menu item has popup (desktop mode) */\n get hasPopup(): boolean {\n return !!this.submenu && (!this.menuService?.menuComponent || !this.menuService?.menuComponent.mobile);\n }\n\n /** Focuses Menu Item interactive element */\n focus(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.focus();\n }\n }\n\n /** Clicks Menu Item interactive element */\n click(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.click();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** @hidden Sets menu item as selected/unselected based on isSelected flag */\n setSelected(isSelected: boolean, fromSplit?: boolean): void {\n this.menuInteractive.setSelected(isSelected);\n this.submenuVisible = isSelected && !!this.submenu;\n if (!fromSplit) {\n this.onSelect.emit();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden Creates click listener on menu item interactive element */\n private _listenOnMenuLinkClick(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'click').subscribe(\n () => this.menuService?.setActive(true, this)\n )\n );\n }\n\n /** @hidden Creates hover listeners for activating/deactivating menu item */\n private _listenOnMenuLinkHover(): Subscription {\n const hoverSubscriptions: Subscription = new Subscription();\n\n const mouseEnter$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseenter'\n );\n const mouseLeave$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseleave'\n );\n\n const timerFactory$ = defer(() =>\n timer(this.menuService ? this.menuService.menuComponent.openOnHoverTime : 0).pipe(takeUntil(mouseLeave$))\n );\n\n // Set active on hover\n hoverSubscriptions.add(\n mouseEnter$\n .pipe(\n filter(() => !!this.menuService),\n switchMap(() => timerFactory$)\n )\n .subscribe(() => {\n if (this.submenu) {\n // Open submenu\n this.menuService!.setActive(true, this);\n }\n if (!this.submenu) {\n // Close sibling submenu if opened\n this.menuService!.setInactiveSiblingMenuItem(this);\n }\n })\n );\n\n return hoverSubscriptions;\n }\n\n /** @hidden Initializes menu link state based on item initial state */\n private _initialiseItemState(): void {\n this.menuInteractive.setSubmenu(!!this.submenu, this.itemId);\n this.menuInteractive.setDisabled(this.disabled);\n }\n\n /** @hidden Checks for Menu Service dependency and passes it if further */\n private _setMenuService(): void {\n this.menuService = this.menuService || this._submenu?.menuService || null;\n if (this.submenu && this.menuService) {\n this.submenu.menuService = this.menuService;\n }\n }\n\n /** @hidden Listen on menu mode and set proper mode listeners */\n private _listenOnMenuMode(): void {\n this.menuService?.isMobileMode.subscribe((isMobile) => {\n this._hoverSubscriptions.unsubscribe();\n if (!isMobile) {\n this._hoverSubscriptions = this._listenOnMenuLinkHover();\n }\n });\n }\n\n /** @hidden Updates focused menu item on outer focus */\n private _listenOnOuterFocus(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'focus').subscribe(() => {\n if (this.menuService && this.menuService.focusedNode !== this.menuService.menuMap.get(this)) {\n this.menuService.setFocused(this);\n }\n })\n );\n }\n}\n\n@Component({\n selector: 'fd-submenu',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SUBMENU, useExisting: SubmenuComponent }],\n exportAs: 'fdSubmenu',\n standalone: true\n})\nexport class SubmenuComponent implements BaseSubmenu, AfterContentInit {\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** @hidden Reference to template with Submenu items */\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\n\n /** @hidden Reference to Submenu MenuItems */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _projectedItems: QueryList<MenuItemComponent>;\n\n /** @hidden */\n _registeredItems: MenuItemComponent[] = [];\n\n /** @hidden Reference to MenuService used by MenuItems */\n menuService: MenuService;\n\n /** @hidden */\n _menuItemsChange$ = new Subject<void>();\n\n /** @hidden */\n get menuItems(): MenuItemComponent[] {\n return this._projectedItems.length ? this._projectedItems.toArray() : this._registeredItems;\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._projectedItems.changes.subscribe(() => this._menuItemsChange$.next());\n }\n\n /** @hidden method for manually registering item when it's not visible for @ContentChildren */\n _registerItem(item: MenuItemComponent): void {\n this._registeredItems.push(item);\n this._menuItemsChange$.next();\n }\n\n /** @hidden method for manually unregistering item when it's not visible for @ContentChildren */\n _unregisterItem(item: MenuItemComponent): void {\n this._registeredItems = this._registeredItems.filter((i) => i !== item);\n this._menuItemsChange$.next();\n }\n}\n","<ng-content></ng-content>\n@if (hasPopup && submenu) {\n <ul\n class=\"fd-menu__sublist\"\n role=\"menu\"\n [attr.id]=\"itemId\"\n [attr.aria-hidden]=\"!submenuVisible\"\n [attr.aria-label]=\"submenu.ariaLabel\"\n [attr.aria-labelledby]=\"submenu.ariaLabelledby\"\n >\n <ng-template [ngTemplateOutlet]=\"submenu.templateRef\"></ng-template>\n </ul>\n}\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-shortcut]',\n standalone: true\n})\nexport class MenuShortcutDirective implements AfterViewInit, OnDestroy {\n /** Hide shortcuts in mobile mode */\n @Input()\n hideOnMobile = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__shortcut')\n readonly fdMenuShortcutClass: boolean = true;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _menuItem: MenuItemComponent,\n private _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._hideOnMobile();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _hideOnMobile(): void {\n this._subscriptions.add(\n this._menuItem.menuService?.isMobileMode.pipe(filter(() => this.hideOnMobile)).subscribe((isMobile) => {\n if (isMobile) {\n this._elementRef.nativeElement.style.display = 'none';\n } else {\n this._elementRef.nativeElement.style.display = null;\n }\n })\n );\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\n\nimport { MenuComponent } from '../menu.component';\n\n@Directive({\n selector: '[fdMenuTrigger]',\n standalone: true\n})\nexport class MenuTriggerDirective implements OnDestroy {\n /** Set reference to Menu Component */\n @Input('fdMenuTrigger')\n set menu(menu: MenuComponent | undefined) {\n this._unsubscribeFromMenu();\n\n if (menu) {\n menu.trigger = this._elementRef;\n this._subscribeToMenu(menu);\n }\n\n this._setAriaAttributes(menu);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n private _menuSubscription: Subscription = new Subscription();\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeFromMenu();\n }\n\n /** @hidden */\n private _subscribeToMenu(menu: MenuComponent): void {\n this._menuSubscription.add(\n menu.isOpenChange.subscribe(() => {\n this._setAriaAttributes(menu);\n })\n );\n }\n\n /** @hidden */\n private _unsubscribeFromMenu(): void {\n this._menuSubscription.unsubscribe();\n this._menuSubscription = new Subscription();\n }\n\n /** @hidden */\n private _setAriaAttributes(menu?: MenuComponent): void {\n this.ariaHasPopup = !!menu;\n this.ariaExpanded = menu?.isOpen;\n this.ariaControls = menu?.isOpen ? menu.id : null;\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, map, merge, of, switchMap, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\nimport { SegmentedButtonOptionDirective } from './segmented-button-option.directive';\n\nconst strictEquals = (a: unknown, b: unknown): boolean => a === b;\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonHeader]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: SegmentedButtonHeaderDirective, multi: true }\n ]\n})\nexport class SegmentedButtonHeaderDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input()\n valueComparator: (a: T, b: T) => boolean = strictEquals;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n private _cvaControl: CvaControl<T> = inject(CvaControl)!;\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _options$ = new BehaviorSubject<SegmentedButtonOptionDirective<T>[]>([]);\n\n /** @hidden */\n constructor() {\n this.menuItem.hasSeparator = true;\n }\n\n /** @hidden */\n setOptions(options: SegmentedButtonOptionDirective<T>[]): void {\n this._options$.next(options);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n combineLatest([this._options$, this._cvaControl.cvaDirective?.ngControl?.valueChanges || of(undefined)])\n .pipe(\n tap(([options, value]) => {\n options.forEach((option, index) => {\n option.menuItem.hasSeparator = index === options.length - 1;\n option.selected = this.valueComparator(option.value, value);\n });\n }),\n switchMap(([options]) =>\n merge(...options.map((option) => option.clicked.pipe(map(() => option.value))))\n ),\n tap((val) => this._cvaControl.cvaDirective?.setValue(val)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { DomPortal } from '@angular/cdk/portal';\nimport { AfterViewInit, Directive, ElementRef, HostListener, inject, Input, NgZone, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, delayWhen, Observable, Subject, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonOption]',\n standalone: true\n})\nexport class SegmentedButtonOptionDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input() value: T;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n readonly clicked: Observable<void>;\n\n /** @hidden */\n readonly renderer2 = inject(Renderer2);\n\n /** @hidden */\n private _clicked = new Subject<void>();\n\n /** @hidden */\n private _dotElement: HTMLSpanElement;\n\n /** @hidden */\n private _viewInit$ = new Subject<void>();\n\n /** @hidden */\n private _selected$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n constructor() {\n this.clicked = this._clicked.asObservable();\n const ngZone = inject(NgZone);\n combineLatest([this._viewInit$.pipe(delayWhen(() => ngZone.onStable.asObservable())), this._selected$])\n .pipe(\n tap(() => {\n if (!this._dotElement) {\n this._createDot();\n }\n }),\n tap(([, selected]) => {\n selected ? this._showDot() : this._hideDot();\n }),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _onClick($event: MouseEvent | KeyboardEvent): void {\n $event.preventDefault();\n this._clicked.next();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewInit$.next();\n }\n\n /** @hidden */\n private _createDot(): void {\n this._dotElement = this.renderer2.createElement('span');\n this.renderer2.appendChild(this.elementRef.nativeElement, this._dotElement);\n this.renderer2.addClass(this._dotElement, 'fd-menu__active-dot');\n this.renderer2.setAttribute(this._dotElement, 'role', 'presentation');\n this._hideDot();\n const addonDirective = this.menuItem.menuInteractive.startAddon;\n const addonGlyph = addonDirective._addonGlyph;\n addonGlyph.renderElement(new DomPortal(this._dotElement)).subscribe();\n }\n\n /** @hidden */\n private _showDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'false');\n this.renderer2.setStyle(this._dotElement, 'display', 'inline-block');\n }\n\n /** @hidden */\n private _hideDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'true');\n this.renderer2.setStyle(this._dotElement, 'display', 'none');\n }\n\n /** @hidden */\n set selected(isSelected: boolean) {\n this._selected$.next(isSelected);\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, HostListener, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { tap } from 'rxjs';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: 'button[fd-menu-interactive][toggle]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: ToggleButtonDirective, multi: true },\n { provide: TOGGLE_MENU_ITEM, useExisting: ToggleButtonDirective }\n ]\n})\nexport class ToggleButtonDirective implements AfterViewInit {\n /** @hidden */\n private _cvaControl = inject<CvaControl<boolean>>(CvaControl);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _interactiveItemComponent = inject(MenuInteractiveComponent, { host: true });\n\n /**\n * Listen on interaction events that should cause the value update\n * */\n @HostListener('click', ['$event'])\n onClick(): void {\n this._cvaControl.cvaDirective?.setValue(!this._cvaControl.cvaDirective!.value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n this._cvaControl.cvaDirective?.ngControl?.valueChanges\n ?.pipe(\n tap((value: boolean) => {\n this._interactiveItemComponent.startAddon._addonGlyph.glyph = value ? 'accept' : undefined;\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n/**\n * @deprecated\n * Use `hasSeparator` input on a `fd-menu-item` instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-menu-separator',\n host: {\n '[style.display]': '\"none\"'\n },\n standalone: true\n})\nexport class MenuSeparatorDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n constructor() {\n console.error(\n '<fd-menu-separator> has been removed. Use `hasSeparator` input on a `fd-menu-item` instead.',\n this.elementRef.nativeElement\n );\n }\n}\n\n// Exporting as a old class name for the backward compatibility.\nexport { MenuSeparatorDirective as MenuSeparatorComponent };\n","export abstract class DefaultMenuItem {\n abstract focus(): void;\n abstract click(): void;\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\n\nexport const MENU_COMPONENT = new InjectionToken<string[]>('MenuInterface');\n\n/**\n * Menu Interface to have typing and avoid circular dependency between\n * MenuComponent <==> MenuMobileComponent\n */\nexport interface MenuInterface extends MobileMode {\n activePath: EventEmitter<MenuItemComponent[]>;\n dialogConfig: DialogConfig;\n isOpenChange: EventEmitter<boolean>;\n\n close(): void;\n}\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n NgZone,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n computed,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DialogBodyComponent, DialogModule } from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleModule } from '@fundamental-ngx/core/title';\nimport { startWith, take } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MENU_COMPONENT, MenuInterface } from '../menu.interface';\nimport { MenuService } from '../services/menu.service';\n\n@Component({\n selector: 'fd-menu-mobile',\n templateUrl: './menu-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DialogModule,\n TemplateDirective,\n BarModule,\n ButtonComponent,\n ContentDensityDirective,\n TitleModule,\n CdkScrollable,\n ScrollbarDirective,\n NgTemplateOutlet,\n InitialFocusDirective\n ]\n})\nexport class MenuMobileComponent extends MobileModeBase<MenuInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** Current menu title */\n title$ = signal('');\n\n /** Whether current menu level is submenu */\n isSubmenu$ = signal(false);\n\n /** @hidden External content */\n childContent: TemplateRef<any> | null = null;\n\n /** @hidden Currently rendered menu view */\n view$ = signal<TemplateRef<any> | null>(null);\n\n /** @hidden Navigation icon name based on RTL */\n navigationIcon$ = computed(() =>\n this._rtlService?.rtlSignal() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n @ViewChild(DialogBodyComponent)\n set _watch(_dialogBody: DialogBodyComponent) {\n if (_dialogBody) {\n this._menuService.addKeyboardSupport(_dialogBody.elementRef);\n }\n }\n\n /** @hidden */\n constructor(\n private _menuService: MenuService,\n private _ngZone: NgZone,\n @Optional() private _rtlService: RtlService,\n @Inject(MENU_COMPONENT) menuComponent: MenuInterface\n ) {\n super(menuComponent, MobileModeControl.MENU);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnActivePathChange();\n this._listenOnMenuOpenChange();\n }\n\n /** Closes the Dialog and Menu component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** Navigate back to parent level of submenu */\n backToParentLevel(): void {\n const menuItem = this._menuService.activeNodePath[this._menuService.activeNodePath.length - 1].item;\n this._menuService.setActive(false, menuItem);\n this._executeOnStable(() => {\n menuItem?.focus();\n });\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n escKeyCloseable: false,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement\n });\n }\n\n /** @hidden Listens on Active Path changes and updates mobile view */\n private _listenOnActivePathChange(): void {\n const initialItemPath: MenuItemComponent[] = this._menuService.activeNodePath\n .map((node) => node.item)\n .filter((v): v is MenuItemComponent => !!v);\n this._component.activePath\n .pipe(startWith(initialItemPath), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => this._setMenuView(items));\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n\n /** @hidden Sets menu view, title and isSubmenu flag */\n private _setMenuView(items: MenuItemComponent[]): void {\n const lastItem: MenuItemComponent = items[items.length - 1];\n this.isSubmenu$.set(!!items.length);\n this.title$.set(this._getDialogTitle(lastItem));\n this.view$.set(this._getMenuView(lastItem));\n this._executeOnStable(() => {\n this._menuService.focusedNode?.item?.focus();\n });\n }\n\n /** @hidden Opens/closes the Dialog based on Menu isOpenChange events */\n private _listenOnMenuOpenChange(): void {\n this._component.isOpenChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => (isOpen ? this._openDialog() : this.dialogRef.close()));\n }\n\n /** @hidden Returns dialog title */\n private _getDialogTitle(menuItem: MenuItemComponent): string {\n if (this.isSubmenu$()) {\n return menuItem.menuItemTitle ? menuItem.menuItemTitle.title : '';\n }\n\n return this.mobileConfig.title || '';\n }\n\n /** @hidden Returns dialog content view */\n private _getMenuView(menuItem: MenuItemComponent): TemplateRef<any> | null {\n if (this.isSubmenu$()) {\n return menuItem.submenu ? menuItem.submenu.templateRef : this.view$();\n }\n return this.childContent;\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (isSubmenu$()) {\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n id=\"menu-mobile-navigate-back\"\n fdCozy\n [attr.aria-label]=\"'Go to previous menu level: ' + title$()\"\n [glyph]=\"navigationIcon$()\"\n (click)=\"backToParentLevel()\"\n ></button>\n </fd-bar-element>\n }\n <fd-bar-element>\n <h1 fd-title>{{ title$() }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n @if (this.mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"close()\"></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"(isSubmenu$() ? subMenuTemplate : view$()) || null\"> </ng-template>\n </fd-dialog-body>\n @if (mobileConfig.approveButtonText || mobileConfig.cancelButtonText) {\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n }\n </fd-dialog>\n</ng-template>\n<ng-template #subMenuTemplate>\n <nav class=\"fd-menu fd-menu--mobile\">\n <ul class=\"fd-menu__sublist\">\n <ng-template [ngTemplateOutlet]=\"view$()\"></ng-template>\n </ul>\n </nav>\n</ng-template>\n","import {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { combineLatest, map, startWith, Subscription, tap } from 'rxjs';\n\nimport { DynamicComponentService, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { BasePopoverClass, PopoverService } from '@fundamental-ngx/core/popover';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuMobileComponent } from './menu-mobile/menu-mobile.component';\nimport { MENU_COMPONENT, MenuInterface } from './menu.interface';\nimport { FD_MENU_COMPONENT, FD_MENU_ITEM_COMPONENT } from './menu.tokens';\nimport { MenuService } from './services/menu.service';\n\nlet menuUniqueId = 0;\n\n/**\n * The component that represents a menu.\n */\n@Component({\n selector: 'fd-menu',\n templateUrl: './menu.component.html',\n styleUrl: 'menu.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MenuService,\n PopoverService,\n DynamicComponentService,\n {\n provide: FD_MENU_COMPONENT,\n useExisting: forwardRef(() => MenuComponent)\n },\n contentDensityObserverProviders()\n ],\n standalone: true\n})\nexport class MenuComponent\n extends BasePopoverClass\n implements MenuInterface, AfterContentInit, AfterViewInit, OnDestroy, OnInit\n{\n /** Set menu in mobile mode */\n @Input({ transform: booleanAttribute })\n set mobile(value: boolean) {\n this._mobile = value;\n this._menuService.setMenuMode(this.mobile);\n }\n\n get mobile(): boolean {\n return this._mobile;\n }\n\n /** Whether the popover is disabled. */\n @Input()\n disabled = false;\n\n /** Whether the popover should be focusTrapped. */\n @Input()\n focusTrapped = true;\n\n /**\n * Whether the popover should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n @Input()\n focusAutoCapture = true;\n\n /** Open submenu on hover after given milliseconds */\n @Input()\n openOnHoverTime = 0;\n\n /** Display menu without integrated popover */\n @Input()\n mobileConfig: MobileModeConfig = { cancelButtonText: 'Cancel' };\n\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** Id of the control. */\n @Input()\n id = `fd-menu-${menuUniqueId++}`;\n\n /** Emits array of active menu items */\n @Output()\n readonly activePath = new EventEmitter<MenuItemComponent[]>();\n\n /** @hidden Reference to the menu root template */\n @ViewChild('menuRootTemplate')\n _menuRootTemplate: TemplateRef<any>;\n\n /** @hidden Reference to all menu Items */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _menuItems: QueryList<MenuItemComponent>;\n\n /** @hidden Menu item segmented item headers */\n @ContentChildren(SegmentedButtonHeaderDirective)\n _segmentedButtonHeaderItems: QueryList<SegmentedButtonHeaderDirective<unknown>>;\n\n /** @hidden Menu item segmented item options */\n @ContentChildren(SegmentedButtonOptionDirective)\n _segmentedButtonOptions: QueryList<SegmentedButtonOptionDirective<unknown>>;\n\n /** @hidden Whether use a menu in mobile mode */\n private _mobile = false;\n\n /** @hidden Reference to external menu trigger */\n private _externalTrigger: ElementRef;\n\n /** @hidden */\n private _addons: Set<unknown> = new Set();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<MenuMobileComponent>;\n\n /** @hidden */\n private _clickEventListener: null | (() => void);\n\n /** @hidden */\n get hasAddons(): boolean {\n return this._addons.size > 0;\n }\n\n /** @hidden */\n private get _popoverConfig(): BasePopoverClass {\n return {\n ...this,\n additionalBodyClass: (this.additionalBodyClass ?? '') + ' fd-popover--menu'\n };\n }\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n @Optional() public readonly dialogConfig: DialogConfig,\n private readonly _rendered: Renderer2,\n private readonly _menuService: MenuService,\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private readonly _popoverService: PopoverService,\n private readonly _injector: Injector,\n private readonly _viewContainerRef: ViewContainerRef,\n @Optional() private readonly _dynamicComponentService: DynamicComponentService,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {\n super();\n }\n\n /** @hidden */\n ngOnInit(): void {\n /** keep isOpen up to date */\n this.isOpenChange.subscribe((isOpen) => {\n this.isOpen = isOpen;\n\n // when popover got closed by its own mechanism (e.x. click outside)\n // we need to clean up a menu as well\n if (!isOpen) {\n this._cleanUpMenuAfterClose();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Register addon */\n registerAddon(addon: unknown): void {\n this._addons.add(addon);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Unregister addon */\n unregisterAddon(addon: unknown): void {\n this._addons.delete(addon);\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._menuService.setMenuComponent(this);\n this._listenOnMenuItemsChange();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._menuService.isMobileMode.subscribe((isMobile) => {\n this._setupView();\n\n // Since it is mobile, it's needed to disable popoverService\n if (isMobile) {\n this._popoverService.deactivate();\n }\n });\n\n this._menuService.setMenuMode(this.mobile);\n\n combineLatest([\n this._menuItems.changes.pipe(\n startWith(this._menuItems),\n map((items) => items.toArray())\n ),\n this._segmentedButtonHeaderItems.changes.pipe(\n startWith(this._segmentedButtonHeaderItems),\n map((items) => items.toArray())\n ),\n this._segmentedButtonOptions.changes.pipe(\n startWith(this._segmentedButtonOptions),\n map((items) => items.toArray())\n )\n ])\n .pipe(\n map(([menuItems, segmentedButtonHeaderItems, segmentedButtonOptions]) =>\n menuItems.map((item, index) => ({\n menuItem: item,\n segmentedButtonHeaderItem: segmentedButtonHeaderItems.find(\n (headerItem) => headerItem.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n segmentedButtonOption: segmentedButtonOptions.find(\n (option) => option.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n index\n }))\n ),\n map((items) => {\n let headers = items.filter((item) => !!item.segmentedButtonHeaderItem);\n const options = items.filter((item) => !!item.segmentedButtonOption);\n headers = headers.map((header, headerIndex) => ({\n ...header,\n options: options.reduce((acc, option) => {\n const lastOption = acc[acc.length - 1];\n const optionIndex = option.index;\n if (!lastOption || optionIndex === lastOption.index + 1) {\n if (headerIndex === headers.length - 1 && optionIndex > header.index) {\n acc.push(option);\n } else if (optionIndex > header.index && optionIndex < headers[headerIndex + 1].index) {\n acc.push(option);\n }\n }\n return acc;\n }, [])\n }));\n return headers;\n }),\n tap((headers) =>\n headers.forEach(({ segmentedButtonHeaderItem, options }) => {\n segmentedButtonHeaderItem.setOptions(options.map((option) => option.segmentedButtonOption));\n })\n )\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n set trigger(trigger: ElementRef) {\n this._externalTrigger = trigger;\n this._popoverService.initialise(this._externalTrigger);\n this._destroyEventListeners();\n this._listenOnTriggerRefClicks();\n }\n\n get trigger(): ElementRef {\n return this._externalTrigger;\n }\n\n /** Opens the menu */\n open(): void {\n if (this.mobile) {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n } else {\n this._popoverService.open();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n /** Closes the menu */\n close(): void {\n if (this.mobile) {\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n } else {\n this._popoverService.close();\n }\n\n this._cleanUpMenuAfterClose();\n this._focusTrigger();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n this.isOpen ? this.close() : this.open();\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** @hidden */\n detectChanges(): void {\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n private _cleanUpMenuAfterClose(): void {\n this._menuService.resetMenuState();\n }\n\n /** @hidden Select and instantiate menu view mode */\n private _setupView(): void {\n if (this.mobile) {\n this._setupMobileMode();\n } else {\n this._setupPopoverService();\n }\n\n this.detectChanges();\n }\n\n /** @hidden */\n private _setupPopoverService(): void {\n this._subscriptions.add(\n this._popoverService._onLoad.subscribe((elementRef) => this._menuService.addKeyboardSupport(elementRef))\n );\n\n this._popoverService.templateContent = this._menuRootTemplate;\n this._popoverService.initialise(this._externalTrigger, this._popoverConfig);\n }\n\n /** @hidden Open Menu in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MENU_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n this._menuRootTemplate,\n MenuMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /** @hidden Listen on menu items change and rebuild menu */\n private _listenOnMenuItemsChange(): void {\n this._subscriptions.add(this._menuItems.changes.subscribe(() => this._menuService.rebuildMenu()));\n\n // Whether menu have submenu or not.\n let isSubmenu = false;\n this._menuItems.forEach((menuItem) => {\n if (menuItem.submenu?.menuItems) {\n isSubmenu = true;\n this._subscriptions.add(\n menuItem.submenu._menuItemsChange$.subscribe(() => this._menuService.rebuildMenu())\n );\n }\n });\n if (!this.disableScrollbar && isSubmenu) {\n this.disableScrollbar = isSubmenu;\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _listenOnTriggerRefClicks(): void {\n this._destroyEventListeners();\n\n if (this.trigger && this.mobile) {\n this._clickEventListener = this._rendered.listen(this.trigger.nativeElement, 'click', () => this.toggle());\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _destroyEventListeners(): void {\n if (this._clickEventListener) {\n this._clickEventListener();\n this._clickEventListener = null;\n }\n }\n\n /** @hidden */\n private _destroyMobileComponent(): void {\n if (this._mobileModeComponentRef) {\n this._mobileModeComponentRef.destroy();\n }\n }\n\n /** @hidden */\n private _focusTrigger(): void {\n if (this.focusTrapped && this.trigger) {\n this.trigger.nativeElement.focus();\n }\n }\n}\n","<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <div class=\"fd-popover__wrapper--visible\">\n <nav\n class=\"fd-menu\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"menu\"\n [class.fd-menu--mobile]=\"mobile\"\n [class.fd-menu--icons]=\"hasAddons\"\n >\n <ul\n role=\"none\"\n class=\"fd-menu__list fd-menu__list--no-shadow\"\n [class.fd-menu--full-width]=\"mobile || false\"\n >\n <ng-content></ng-content>\n </ul>\n </nav>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { DynamicComponentService, InitialFocusModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { GlyphMenuAddonDirective } from './directives/glyph-menu-addon.directive';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\nimport { MenuShortcutDirective } from './directives/menu-shortcut.directive';\nimport { MenuTitleDirective } from './directives/menu-title.directive';\nimport { MenuTriggerDirective } from './directives/menu-trigger.directive';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { ToggleButtonDirective } from './directives/toggle-button.directive';\nimport { MenuInteractiveComponent } from './menu-interactive.component';\nimport { MenuItemComponent, SubmenuComponent } from './menu-item/menu-item.component';\nimport { MenuSeparatorDirective } from './menu-separator.directive';\nimport { MenuComponent } from './menu.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PopoverModule,\n InitialFocusModule,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n PortalModule,\n MenuComponent,\n MenuItemComponent,\n MenuAddonDirective,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n SubmenuComponent,\n MenuTriggerDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n exports: [\n MenuComponent,\n MenuItemComponent,\n SubmenuComponent,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n MenuAddonDirective,\n MenuTriggerDirective,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n providers: [DynamicComponentService]\n})\nexport class MenuModule {}\n","import { DOWN_ARROW, ENTER, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ListItemComponent } from '@fundamental-ngx/core/list';\nimport { Subject } from 'rxjs';\nimport { DefaultMenuItem } from './default-menu-item.class';\n\n@Injectable()\nexport class MenuKeyboardService {\n /** Event emitted when an item link is clicked.*/\n @Output()\n public readonly itemClicked: Subject<number> = new Subject<number>();\n\n /** Whether user wants to remove keyboard handling */\n disableKeydownHandling = false;\n\n /** Function that is supposed to be called, when focus escape before list */\n focusEscapeBeforeList: () => void;\n\n /** Function that is supposed to be called, when focus escape after list */\n focusEscapeAfterList: () => void;\n\n /** Function that should be called every time, keydown event is used on some menu item,\n * it provides whole functionality for handling\n * ArrowDown - focus, ArrowUp - focus, Space bar - simulate click, Enter key - simulate click.\n * @param event KeyboardEvent\n * @param index index of items starts from 0\n * @param menuItems array of menu item directives\n * */\n keyDownHandler(event: KeyboardEvent, index: number, menuItems: DefaultMenuItem[] | ListItemComponent[]): void {\n if (this.disableKeydownHandling) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n if (menuItems.length > index + 1) {\n menuItems[index + 1].focus();\n } else {\n if (this.focusEscapeAfterList) {\n this.focusEscapeAfterList();\n } else {\n menuItems[0].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n if (index > 0) {\n menuItems[index - 1].focus();\n } else {\n if (this.focusEscapeBeforeList) {\n this.focusEscapeBeforeList();\n } else {\n menuItems[menuItems.length - 1].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n if (menuItems[index]) {\n menuItems[index].click();\n event.preventDefault();\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GlyphMenuAddonDirective","i1","menuUniqueId","i1.MenuItemComponent","switchMap","i2","startWith","i2.MenuService","i3","i4","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-menu.mjs","sources":["../../../../libs/core/menu/menu.tokens.ts","../../../../libs/core/menu/directives/glyph-menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-item-input.directive.ts","../../../../libs/core/menu/directives/menu-title.directive.ts","../../../../libs/core/menu/menu-interactive.component.ts","../../../../libs/core/menu/services/menu.service.ts","../../../../libs/core/menu/menu-item/menu-item.component.ts","../../../../libs/core/menu/menu-item/menu-item.component.html","../../../../libs/core/menu/directives/menu-shortcut.directive.ts","../../../../libs/core/menu/directives/menu-trigger.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-header.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-option.directive.ts","../../../../libs/core/menu/directives/toggle-button.directive.ts","../../../../libs/core/menu/menu-separator.directive.ts","../../../../libs/core/menu/default-menu-item.class.ts","../../../../libs/core/menu/menu.interface.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.html","../../../../libs/core/menu/menu.component.ts","../../../../libs/core/menu/menu.component.html","../../../../libs/core/menu/menu.module.ts","../../../../libs/core/menu/menu-keyboard.service.ts","../../../../libs/core/menu/fundamental-ngx-core-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const TOGGLE_MENU_ITEM = new InjectionToken('TOGGLE_MENU_ITEM');\nexport const FD_MENU_COMPONENT = new InjectionToken('FD_MENU_COMPONENT');\nexport const FD_MENU_ITEM_COMPONENT = new InjectionToken('FD_MENU_ITEM_COMPONENT');\n","import { CdkPortalOutlet, ComponentPortal, DomPortal, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, Directive, EmbeddedViewRef, Input, OnDestroy, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { Observable, Subject, combineLatest, first, map, tap } from 'rxjs';\nimport { MenuComponent } from '../menu.component';\nimport { FD_MENU_COMPONENT, TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: '[fdMenuAddonGlyph], [fd-menu-addon-glyph]',\n standalone: true\n})\nexport class GlyphMenuAddonDirective implements OnDestroy {\n /**\n * The icon name to display. See the icon page for the list of icons\n * here: https://sap.github.io/fundamental-ngx/icon\n **/\n @Input() set glyph(glyph: string | undefined) {\n this._glyphName$.next(glyph);\n }\n\n /**\n * Toggle buttons always need a space, so we check if it is in a toggle button\n * */\n isInToggleButton = !!inject(TOGGLE_MENU_ITEM, { optional: true });\n\n /** @hidden */\n private _menuComponent = inject<MenuComponent>(FD_MENU_COMPONENT, { optional: true });\n\n /** @hidden */\n private _addonGlyphPortalOutlet$ = new Subject<CdkPortalOutlet>();\n\n /** @hidden */\n private _glyphName$ = new Subject<string | undefined>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n combineLatest([this._addonGlyphPortalOutlet$, this._glyphName$])\n .pipe(\n tap(([, glyphName]) => {\n glyphName || this.isInToggleButton ? this._addGlyphAddonToMenu() : this._removeGlyphAddonFromMenu();\n }),\n tap(([outlet, glyphName]) => {\n if (!glyphName) {\n outlet.detach();\n return;\n }\n const componentRef = outlet.attachComponentPortal(new ComponentPortal(IconComponent));\n componentRef.instance.glyph = glyphName;\n componentRef.instance.elementRef.nativeElement.setAttribute('role', 'presentation');\n if (this.isInToggleButton) {\n componentRef.instance.elementRef.nativeElement.classList.add('fd-menu__checkmark');\n }\n componentRef.changeDetectorRef.detectChanges();\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n setGlyphPortalOutlet(outlet: CdkPortalOutlet): void {\n this._addonGlyphPortalOutlet$.next(outlet);\n }\n\n /** @hidden */\n renderElement<ComponentType>(element: ComponentPortal<ComponentType>): Observable<ComponentRef<ComponentType>>;\n /** @hidden */\n renderElement<TemplateContext>(\n element: TemplatePortal<TemplateContext>\n ): Observable<EmbeddedViewRef<TemplateContext>>;\n /** @hidden */\n renderElement(element: DomPortal): Observable<any>;\n /** @hidden */\n renderElement(element: Portal<any>): Observable<any> {\n return this._addonGlyphPortalOutlet$.pipe(\n first(),\n tap((outlet) => outlet.detach()),\n map((outlet) => outlet.attach(element))\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._removeGlyphAddonFromMenu();\n }\n\n /** @hidden */\n private _addGlyphAddonToMenu(): void {\n this._menuComponent?.registerAddon(this);\n }\n\n /** @hidden */\n private _removeGlyphAddonFromMenu(): void {\n this._menuComponent?.unregisterAddon(this);\n }\n}\n","import { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { Component, ElementRef, HostBinding, Input, ViewChild, inject } from '@angular/core';\nimport { GlyphMenuAddonDirective } from './glyph-menu-addon.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fd-menu-addon',\n template: ` <ng-template cdkPortalOutlet></ng-template> `,\n standalone: true,\n hostDirectives: [{ directive: GlyphMenuAddonDirective, inputs: ['glyph'] }],\n imports: [PortalModule]\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class MenuAddonDirective {\n /** Whether addon is used before or after text */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('position') set setAddonPosition(position: 'before' | 'after') {\n this.fdAddonBeforeClass = position === 'before';\n this.fdAddonAfterClass = position === 'after';\n }\n\n /** Whether is used as submenu indicator */\n @Input()\n @HostBinding('class.fd-menu__addon-after--submenu')\n submenuIndicator = false;\n\n /** Sets Aria hidden attribute */\n @Input()\n @HostBinding('attr.aria-hidden')\n ariaHidden = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-after')\n fdAddonAfterClass = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-before')\n fdAddonBeforeClass = false;\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n set addonPortalOutlet(portalOutlet: CdkPortalOutlet) {\n this._addonGlyph.setGlyphPortalOutlet(portalOutlet);\n }\n\n /** @hidden */\n readonly _addonGlyph = inject(GlyphMenuAddonDirective);\n\n /** @hidden */\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[fd-form-control][fd-menu-item-input]',\n host: {\n class: 'fd-menu__input'\n },\n standalone: true\n})\nexport class MenuItemInputDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /**\n * This is needed to prevent the click event from bubbling up to the menu item\n * and potentially closing the menu or triggering other actions.\n */\n @HostListener('keydown', ['$event'])\n @HostListener('click', ['$event'])\n onInteraction($event: KeyboardEvent | MouseEvent): void {\n if ($event.target === this.elementRef.nativeElement) {\n $event.stopPropagation();\n }\n }\n}\n","import { Directive, ElementRef, HostBinding } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-title]',\n standalone: true\n})\nexport class MenuTitleDirective {\n /** @hidden */\n @HostBinding('class.fd-menu__title')\n fdMenuTitleClass = true;\n\n /** Returns element title text */\n @HostBinding('attr.title')\n get title(): string {\n return this._elementRef.nativeElement.textContent;\n }\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { Component, ContentChild, ElementRef, HostBinding, HostListener, ViewChild, inject } from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-menu-interactive]',\n template: `\n <ng-template cdkPortalOutlet></ng-template>\n <ng-content></ng-content>\n `,\n host: {\n role: 'menuitem'\n },\n imports: [PortalModule],\n standalone: true\n})\nexport class MenuInteractiveComponent implements HasElementRef {\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n addonPortalOutlet: CdkPortalOutlet;\n\n /** @hidden */\n @ContentChild(MenuAddonDirective)\n private set _addon(addon: MenuAddonDirective) {\n if (\n addon?.elementRef.nativeElement === this.elementRef.nativeElement.querySelector('fd-menu-addon:first-child')\n ) {\n this._startAddonInstance = addon;\n }\n }\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n tabindex = 0;\n\n /** @hidden */\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n @HostBinding('class.has-child')\n ariaHaspopup = false;\n\n /** @hidden */\n @HostBinding('class.fd-menu__link')\n readonly fdMenuLinkClass: boolean = true;\n\n /** @hidden */\n @ContentChild(MenuItemInputDirective)\n private _input: MenuItemInputDirective;\n\n /** @hidden */\n _fromSplitButton = false;\n\n /** @hidden */\n readonly elementRef: ElementRef = inject(ElementRef);\n\n /** @hidden */\n private _startAddonInstance: MenuAddonDirective;\n\n /** @hidden */\n get startAddon(): MenuAddonDirective {\n if (!this._startAddonInstance) {\n this.addonPortalOutlet.detach();\n this._startAddonInstance = this.addonPortalOutlet.attachComponentPortal(\n new ComponentPortal(MenuAddonDirective)\n ).instance;\n this._startAddonInstance.setAddonPosition = 'before';\n }\n return this._startAddonInstance;\n }\n\n /** @hidden */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _handleKeydown($event: KeyboardEvent): void {\n if (this._input && $event.target === this.elementRef.nativeElement) {\n this._input.elementRef.nativeElement.focus();\n }\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n this.selected = isSelected && (this.ariaHaspopup || this._fromSplitButton);\n if (this.ariaHaspopup || this._fromSplitButton) {\n this.ariaExpanded = isSelected;\n }\n }\n\n /** @hidden */\n setDisabled(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.tabindex = isDisabled ? -1 : 0;\n }\n\n /** @hidden */\n setSubmenu(hasSubmenu: boolean, itemId?: string): void {\n this.ariaHaspopup = hasSubmenu;\n this.ariaControls = hasSubmenu ? itemId || this.ariaControls : null;\n }\n}\n\nexport { MenuInteractiveComponent as MenuInteractiveDirective };\n","import { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ElementRef, Injectable, OnDestroy, Optional, Renderer2 } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MenuComponent } from '../menu.component';\n\ninterface MenuNode {\n item: MenuItemComponent | null;\n parent: MenuNode | null;\n children: MenuNode[];\n}\n\n/** `null` key is used for the root node */\ntype MenuMap = Map<MenuItemComponent | null, MenuNode>;\n\n@Injectable()\nexport class MenuService implements OnDestroy {\n /** Map of menu items to menu nodes */\n menuMap: MenuMap;\n\n /** Currently focused node */\n focusedNode: MenuNode | undefined;\n\n /** Collection of active menu nodes */\n activeNodePath: MenuNode[] = [];\n\n /** Collection of active menu nodes */\n private _isMobileMode = new Subject<boolean>();\n\n /** @hidden */\n private _menuComponent: MenuComponent;\n\n /** @hidden */\n private _destroyKeyboardHandlerListener: () => void;\n\n /** @hidden */\n get _isRtl(): boolean {\n return this._rtlService?.rtl.value;\n }\n\n /** @hidden */\n constructor(\n private _renderer: Renderer2,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** Reference to menu component */\n get menuComponent(): MenuComponent {\n return this._menuComponent;\n }\n\n /** Returns menu mode observable */\n get isMobileMode(): Observable<boolean> {\n return this._isMobileMode.pipe(distinctUntilChanged());\n }\n\n /** Sets menu mode */\n setMenuMode(value: boolean): void {\n this._isMobileMode.next(value);\n }\n\n /** Sets given menu item as focused */\n setFocused(menuItem: MenuItemComponent | null): void {\n this.focusedNode = this.menuMap.get(menuItem);\n this.focusedNode?.item?.focus();\n }\n\n /**\n * Sets state of a given menu item\n * @param isActive - Whether should be set as active or inactive\n * @param menuItem `MenuItemComponent` that should be set as active or inactive\n */\n setActive(isActive: boolean, menuItem: MenuItemComponent | null): void {\n if (!menuItem || (isActive && menuItem.disabled)) {\n return;\n }\n\n if (isActive) {\n this._addToActivePath(menuItem);\n } else {\n this._removeFromActivePath(menuItem);\n }\n\n this._emitActivePath();\n }\n\n /**\n * Close active sibling submenu if any\n * @param menuItem to look for active siblings\n */\n setInactiveSiblingMenuItem(menuItem: MenuItemComponent): void {\n this._removeActiveSibling(menuItem);\n this._emitActivePath();\n }\n\n /** Initializes menu service based on given Menu Component */\n setMenuComponent(menu: MenuComponent): void {\n this._menuComponent = menu;\n this.menuMap = this._buildMenuMap(this._menuComponent);\n }\n\n /** Clears Active Node Path and resets Focused Node */\n resetMenuState(): void {\n this._clearActivePath();\n this.focusedNode = undefined;\n this._emitActivePath();\n }\n\n /** - Updates the structure of the menu\n * - Validates Active Node Path\n * - Validates Focused Node */\n rebuildMenu(): void {\n this.menuMap = this._buildMenuMap(this._menuComponent);\n\n const deadNode = this.activeNodePath.find((node) => !this.menuMap.has(node.item));\n if (deadNode?.item) {\n this.setActive(false, deadNode.item);\n }\n\n const invalidFocusedElement = this.focusedNode && !this.menuMap.get(this.focusedNode.item);\n if (invalidFocusedElement) {\n this.focusedNode =\n this.activeNodePath[this.activeNodePath.length - 1] || this.menuMap.get(null)!.children[0];\n }\n }\n\n /** Adds Menu keyboard support */\n addKeyboardSupport(elementRef: ElementRef): void {\n this.removeKeyboardSupport();\n this._setKeyboardSupport(elementRef);\n }\n\n /** Removes Menu keyboard support */\n removeKeyboardSupport(): void {\n if (this._destroyKeyboardHandlerListener) {\n this._destroyKeyboardHandlerListener();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.removeKeyboardSupport();\n }\n\n /** @hidden Returns siblings of given node */\n private _nodeSiblings(node: MenuNode): MenuNode[] | undefined {\n return node.parent ? node.parent.children : this.menuMap.get(null)?.children;\n }\n\n /** @hidden Adds given element to the Active Node Path and setts as active*/\n private _addToActivePath(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n\n this._removeActiveSibling(menuItem);\n\n if (menuNode) {\n this.activeNodePath.push(menuNode);\n menuNode.item?.setSelected(true);\n }\n }\n\n /** @hidden Removes given element and all its successors from the Active Node Path and setts as inactive*/\n private _removeFromActivePath(menuItem: MenuItemComponent | null): void {\n const menuNode = this.menuMap.get(menuItem);\n if (menuNode) {\n const pathIndex = this.activeNodePath.findIndex((i) => i.item === menuNode.item);\n\n if (pathIndex !== -1) {\n this.activeNodePath\n .splice(pathIndex)\n .forEach((removedActiveNode) => removedActiveNode.item?.setSelected(false));\n }\n }\n }\n\n /** @hidden Removes all elements from the Active Node Path and sets them as closed */\n private _clearActivePath(): void {\n if (this.activeNodePath.length) {\n this._removeFromActivePath(this.activeNodePath[0].item);\n }\n }\n\n /** @hidden\n * - Builds Menu Nodes based on Menu Items\n * - Creates Map of the Menu Nodes */\n private _buildMenuMap(menu: MenuComponent): MenuMap {\n function buildNode(menuItem: MenuItemComponent): MenuNode {\n return {\n item: menuItem,\n parent: null,\n children: menuItem.submenu\n ? menuItem.submenu.menuItems.map((subMenuItem) => buildNode(subMenuItem))\n : []\n };\n }\n\n function setParents(node: MenuNode, parent: MenuNode | null): void {\n node.parent = parent;\n node.children.forEach((childNode) => setParents(childNode, node));\n }\n\n function toMap(node: MenuNode, map = new Map() as MenuMap): MenuMap {\n map.set(node.item, node);\n node.children.forEach((childNode) => toMap(childNode, map));\n return map;\n }\n\n const rootItems = menu._menuItems.filter((rootItem) => !rootItem.parentSubmenu);\n\n /** root item */\n const menuTree: MenuNode = {\n item: null,\n parent: null,\n children: rootItems.map((item) => buildNode(item))\n };\n\n setParents(menuTree, null);\n\n return toMap(menuTree);\n }\n\n /** @hidden Removes active sibling of a given menu item from the Active Path */\n private _removeActiveSibling(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n const children = menuNode?.parent?.children.map((i) => i.item);\n const activeSibling = this.activeNodePath.find((i) => children?.includes(i.item));\n\n if (activeSibling) {\n const activeParentIndex = this.activeNodePath.indexOf(menuNode?.parent as MenuNode);\n this._removeFromActivePath(activeParentIndex !== -1 ? activeSibling.item : this.activeNodePath[0].item);\n }\n }\n\n /** @hidden Adds keyboard support */\n private _setKeyboardSupport(elementRef: ElementRef): void {\n this._destroyKeyboardHandlerListener = this._renderer.listen(\n elementRef.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => this._handleKey(event)\n );\n }\n\n /** @hidden */\n private _handleKey(event: KeyboardEvent): void {\n const focusRight = (node): void => {\n setTimeout(() => this.setFocused(node.children[0].item));\n };\n let matched = true;\n\n if (!this.focusedNode) {\n return;\n }\n\n if (\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode?.children.length) {\n this.setActive(true, this.focusedNode.item);\n focusRight(this.focusedNode);\n }\n } else if (\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode.parent?.item) {\n this.setActive(false, this.focusedNode.parent.item);\n this.setFocused(this.focusedNode.parent.item);\n }\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'down');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'up');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n const focusedNode = this.focusedNode;\n this.setActive(true, focusedNode?.item);\n focusedNode.item?.click();\n if (focusedNode.children.length) {\n focusRight(focusedNode);\n }\n } else if (KeyUtil.isKeyCode(event, ESCAPE) && this.menuComponent.closeOnEscapeKey) {\n this.menuComponent.close();\n } else {\n matched = false;\n }\n\n if (matched) {\n event.preventDefault();\n }\n }\n\n /** @hidden Emits an array of active menu items */\n private _emitActivePath(): void {\n this.menuComponent.activePath.emit(this.activeNodePath.map((node) => node.item) as MenuItemComponent[]);\n }\n\n /** @hidden Depending on direction returns closest enabled sibling of given node */\n private _closestEnabled(node: MenuNode, direction: 'up' | 'down'): MenuNode | null {\n const siblings =\n direction === 'up' ? [...(this._nodeSiblings(node) ?? [])].reverse() : this._nodeSiblings(node);\n\n if (siblings) {\n const startIndex = siblings.indexOf(node) + 1;\n\n for (let i = startIndex; i < siblings.length; i++) {\n if (siblings[i].item && !siblings[i].item!.disabled) {\n return siblings[i];\n }\n }\n }\n\n return null;\n }\n}\n","import {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { defer, fromEvent, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DefaultMenuItem } from '../default-menu-item.class';\nimport { MenuTitleDirective } from '../directives/menu-title.directive';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../menu.tokens';\nimport { MenuService } from '../services/menu.service';\n\nlet menuUniqueId = 0;\n\nexport interface BaseSubmenu {\n templateRef: TemplateRef<any>;\n menuItems: MenuItemComponent[];\n menuService: MenuService;\n ariaLabel: Nullable<string>;\n ariaLabelledby: Nullable<string>;\n _menuItemsChange$: Observable<void>;\n\n _registerItem(item: MenuItemComponent): void;\n\n _unregisterItem(item: MenuItemComponent): void;\n}\n\nexport const SUBMENU = new InjectionToken<BaseSubmenu>('Submenu component dependency');\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[fd-menu-item]',\n exportAs: 'fd-menu-item',\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.role]': '\"menuitem\"',\n '[class.fd-menu__item]': 'true',\n '[class.fd-menu--full-width]': 'menuService?.menuComponent?.mobile || false'\n },\n standalone: true,\n imports: [NgTemplateOutlet],\n providers: [\n {\n provide: FD_MENU_ITEM_COMPONENT,\n useExisting: forwardRef(() => MenuItemComponent)\n }\n ]\n})\nexport class MenuItemComponent implements DefaultMenuItem, OnInit, OnChanges, AfterContentInit, OnDestroy {\n /** Set the Menu Item as disabled/enabled */\n @Input()\n disabled = false;\n\n /** Menu Item id attribute value */\n @Input()\n itemId = `fd-menu-item-${menuUniqueId++}`;\n\n /** Reference to sub-menu component */\n @Input()\n submenu: BaseSubmenu | undefined;\n\n /** Reference to the parent submenu if nested menus created dynamically */\n @Input()\n parentSubmenu: BaseSubmenu | undefined;\n\n /** Whether the menu item has a separator */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.has-separator')\n hasSeparator = false;\n\n /** Emitted when the menu item is selected. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden Reference to the Menu Item title */\n @ContentChild(MenuTitleDirective)\n menuItemTitle: MenuTitleDirective;\n\n /** @hidden Reference to the Menu Item interactive element */\n @ContentChild(MenuInteractiveComponent)\n menuInteractive: MenuInteractiveComponent;\n\n /** @hidden Whether sub-menu is currently visible*/\n submenuVisible = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _hoverSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Optional() public menuService: MenuService | null,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(SUBMENU) private _submenu: BaseSubmenu | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this.parentSubmenu) {\n this._submenu = this.parentSubmenu;\n this._submenu._registerItem(this);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setMenuService();\n this._initialiseItemState();\n this._listenOnMenuLinkClick();\n this._listenOnOuterFocus();\n this._listenOnMenuMode();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && !changes['disabled'].firstChange) {\n this.menuInteractive.setDisabled(this.disabled);\n }\n if (changes['submenu'] && !changes['submenu'].firstChange) {\n this.menuInteractive.setSubmenu(!!this.submenu, this.submenu ? this.itemId : undefined);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this.parentSubmenu) {\n this._submenu?._unregisterItem(this);\n }\n\n this._subscriptions.unsubscribe();\n this._hoverSubscriptions.unsubscribe();\n }\n\n /** Whether menu item has popup (desktop mode) */\n get hasPopup(): boolean {\n return !!this.submenu && (!this.menuService?.menuComponent || !this.menuService?.menuComponent.mobile);\n }\n\n /** Focuses Menu Item interactive element */\n focus(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.focus();\n }\n }\n\n /** Clicks Menu Item interactive element */\n click(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.click();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** @hidden Sets menu item as selected/unselected based on isSelected flag */\n setSelected(isSelected: boolean, fromSplit?: boolean): void {\n this.menuInteractive.setSelected(isSelected);\n this.submenuVisible = isSelected && !!this.submenu;\n if (!fromSplit) {\n this.onSelect.emit();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden Creates click listener on menu item interactive element */\n private _listenOnMenuLinkClick(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'click').subscribe(\n () => this.menuService?.setActive(true, this)\n )\n );\n }\n\n /** @hidden Creates hover listeners for activating/deactivating menu item */\n private _listenOnMenuLinkHover(): Subscription {\n const hoverSubscriptions: Subscription = new Subscription();\n\n const mouseEnter$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseenter'\n );\n const mouseLeave$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseleave'\n );\n\n const timerFactory$ = defer(() =>\n timer(this.menuService ? this.menuService.menuComponent.openOnHoverTime : 0).pipe(takeUntil(mouseLeave$))\n );\n\n // Set active on hover\n hoverSubscriptions.add(\n mouseEnter$\n .pipe(\n filter(() => !!this.menuService),\n switchMap(() => timerFactory$)\n )\n .subscribe(() => {\n if (this.submenu) {\n // Open submenu\n this.menuService!.setActive(true, this);\n }\n if (!this.submenu) {\n // Close sibling submenu if opened\n this.menuService!.setInactiveSiblingMenuItem(this);\n }\n })\n );\n\n return hoverSubscriptions;\n }\n\n /** @hidden Initializes menu link state based on item initial state */\n private _initialiseItemState(): void {\n this.menuInteractive.setSubmenu(!!this.submenu, this.itemId);\n this.menuInteractive.setDisabled(this.disabled);\n }\n\n /** @hidden Checks for Menu Service dependency and passes it if further */\n private _setMenuService(): void {\n this.menuService = this.menuService || this._submenu?.menuService || null;\n if (this.submenu && this.menuService) {\n this.submenu.menuService = this.menuService;\n }\n }\n\n /** @hidden Listen on menu mode and set proper mode listeners */\n private _listenOnMenuMode(): void {\n this.menuService?.isMobileMode.subscribe((isMobile) => {\n this._hoverSubscriptions.unsubscribe();\n if (!isMobile) {\n this._hoverSubscriptions = this._listenOnMenuLinkHover();\n }\n });\n }\n\n /** @hidden Updates focused menu item on outer focus */\n private _listenOnOuterFocus(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'focus').subscribe(() => {\n if (this.menuService && this.menuService.focusedNode !== this.menuService.menuMap.get(this)) {\n this.menuService.setFocused(this);\n }\n })\n );\n }\n}\n\n@Component({\n selector: 'fd-submenu',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SUBMENU, useExisting: SubmenuComponent }],\n exportAs: 'fdSubmenu',\n standalone: true\n})\nexport class SubmenuComponent implements BaseSubmenu, AfterContentInit {\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** @hidden Reference to template with Submenu items */\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\n\n /** @hidden Reference to Submenu MenuItems */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _projectedItems: QueryList<MenuItemComponent>;\n\n /** @hidden */\n _registeredItems: MenuItemComponent[] = [];\n\n /** @hidden Reference to MenuService used by MenuItems */\n menuService: MenuService;\n\n /** @hidden */\n _menuItemsChange$ = new Subject<void>();\n\n /** @hidden */\n get menuItems(): MenuItemComponent[] {\n return this._projectedItems.length ? this._projectedItems.toArray() : this._registeredItems;\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._projectedItems.changes.subscribe(() => this._menuItemsChange$.next());\n }\n\n /** @hidden method for manually registering item when it's not visible for @ContentChildren */\n _registerItem(item: MenuItemComponent): void {\n this._registeredItems.push(item);\n this._menuItemsChange$.next();\n }\n\n /** @hidden method for manually unregistering item when it's not visible for @ContentChildren */\n _unregisterItem(item: MenuItemComponent): void {\n this._registeredItems = this._registeredItems.filter((i) => i !== item);\n this._menuItemsChange$.next();\n }\n}\n","<ng-content></ng-content>\n@if (hasPopup && submenu) {\n <ul\n class=\"fd-menu__sublist\"\n role=\"menu\"\n [attr.id]=\"itemId\"\n [attr.aria-hidden]=\"!submenuVisible\"\n [attr.aria-label]=\"submenu.ariaLabel\"\n [attr.aria-labelledby]=\"submenu.ariaLabelledby\"\n >\n <ng-template [ngTemplateOutlet]=\"submenu.templateRef\"></ng-template>\n </ul>\n}\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-shortcut]',\n standalone: true\n})\nexport class MenuShortcutDirective implements AfterViewInit, OnDestroy {\n /** Hide shortcuts in mobile mode */\n @Input()\n hideOnMobile = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__shortcut')\n readonly fdMenuShortcutClass: boolean = true;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _menuItem: MenuItemComponent,\n private _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._hideOnMobile();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _hideOnMobile(): void {\n this._subscriptions.add(\n this._menuItem.menuService?.isMobileMode.pipe(filter(() => this.hideOnMobile)).subscribe((isMobile) => {\n if (isMobile) {\n this._elementRef.nativeElement.style.display = 'none';\n } else {\n this._elementRef.nativeElement.style.display = null;\n }\n })\n );\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\n\nimport { MenuComponent } from '../menu.component';\n\n@Directive({\n selector: '[fdMenuTrigger]',\n standalone: true\n})\nexport class MenuTriggerDirective implements OnDestroy {\n /** Set reference to Menu Component */\n @Input('fdMenuTrigger')\n set menu(menu: MenuComponent | undefined) {\n this._unsubscribeFromMenu();\n\n if (menu) {\n menu.trigger = this._elementRef;\n this._subscribeToMenu(menu);\n }\n\n this._setAriaAttributes(menu);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n private _menuSubscription: Subscription = new Subscription();\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeFromMenu();\n }\n\n /** @hidden */\n private _subscribeToMenu(menu: MenuComponent): void {\n this._menuSubscription.add(\n menu.isOpenChange.subscribe(() => {\n this._setAriaAttributes(menu);\n })\n );\n }\n\n /** @hidden */\n private _unsubscribeFromMenu(): void {\n this._menuSubscription.unsubscribe();\n this._menuSubscription = new Subscription();\n }\n\n /** @hidden */\n private _setAriaAttributes(menu?: MenuComponent): void {\n this.ariaHasPopup = !!menu;\n this.ariaExpanded = menu?.isOpen;\n this.ariaControls = menu?.isOpen ? menu.id : null;\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, map, merge, of, switchMap, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\nimport { SegmentedButtonOptionDirective } from './segmented-button-option.directive';\n\nconst strictEquals = (a: unknown, b: unknown): boolean => a === b;\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonHeader]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: SegmentedButtonHeaderDirective, multi: true }\n ]\n})\nexport class SegmentedButtonHeaderDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input()\n valueComparator: (a: T, b: T) => boolean = strictEquals;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n private _cvaControl: CvaControl<T> = inject(CvaControl)!;\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _options$ = new BehaviorSubject<SegmentedButtonOptionDirective<T>[]>([]);\n\n /** @hidden */\n constructor() {\n this.menuItem.hasSeparator = true;\n }\n\n /** @hidden */\n setOptions(options: SegmentedButtonOptionDirective<T>[]): void {\n this._options$.next(options);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n combineLatest([this._options$, this._cvaControl.cvaDirective?.ngControl?.valueChanges || of(undefined)])\n .pipe(\n tap(([options, value]) => {\n options.forEach((option, index) => {\n option.menuItem.hasSeparator = index === options.length - 1;\n option.selected = this.valueComparator(option.value, value);\n });\n }),\n switchMap(([options]) =>\n merge(...options.map((option) => option.clicked.pipe(map(() => option.value))))\n ),\n tap((val) => this._cvaControl.cvaDirective?.setValue(val)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { DomPortal } from '@angular/cdk/portal';\nimport { AfterViewInit, Directive, ElementRef, HostListener, inject, Input, NgZone, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, delayWhen, Observable, Subject, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonOption]',\n standalone: true\n})\nexport class SegmentedButtonOptionDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input() value: T;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n readonly clicked: Observable<void>;\n\n /** @hidden */\n readonly renderer2 = inject(Renderer2);\n\n /** @hidden */\n private _clicked = new Subject<void>();\n\n /** @hidden */\n private _dotElement: HTMLSpanElement;\n\n /** @hidden */\n private _viewInit$ = new Subject<void>();\n\n /** @hidden */\n private _selected$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n constructor() {\n this.clicked = this._clicked.asObservable();\n const ngZone = inject(NgZone);\n combineLatest([this._viewInit$.pipe(delayWhen(() => ngZone.onStable.asObservable())), this._selected$])\n .pipe(\n tap(() => {\n if (!this._dotElement) {\n this._createDot();\n }\n }),\n tap(([, selected]) => {\n selected ? this._showDot() : this._hideDot();\n }),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _onClick($event: MouseEvent | KeyboardEvent): void {\n $event.preventDefault();\n this._clicked.next();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewInit$.next();\n }\n\n /** @hidden */\n private _createDot(): void {\n this._dotElement = this.renderer2.createElement('span');\n this.renderer2.appendChild(this.elementRef.nativeElement, this._dotElement);\n this.renderer2.addClass(this._dotElement, 'fd-menu__active-dot');\n this.renderer2.setAttribute(this._dotElement, 'role', 'presentation');\n this._hideDot();\n const addonDirective = this.menuItem.menuInteractive.startAddon;\n const addonGlyph = addonDirective._addonGlyph;\n addonGlyph.renderElement(new DomPortal(this._dotElement)).subscribe();\n }\n\n /** @hidden */\n private _showDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'false');\n this.renderer2.setStyle(this._dotElement, 'display', 'inline-block');\n }\n\n /** @hidden */\n private _hideDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'true');\n this.renderer2.setStyle(this._dotElement, 'display', 'none');\n }\n\n /** @hidden */\n set selected(isSelected: boolean) {\n this._selected$.next(isSelected);\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, HostListener, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { tap } from 'rxjs';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: 'button[fd-menu-interactive][toggle]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: ToggleButtonDirective, multi: true },\n { provide: TOGGLE_MENU_ITEM, useExisting: ToggleButtonDirective }\n ]\n})\nexport class ToggleButtonDirective implements AfterViewInit {\n /** @hidden */\n private _cvaControl = inject<CvaControl<boolean>>(CvaControl);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _interactiveItemComponent = inject(MenuInteractiveComponent, { host: true });\n\n /**\n * Listen on interaction events that should cause the value update\n * */\n @HostListener('click', ['$event'])\n onClick(): void {\n this._cvaControl.cvaDirective?.setValue(!this._cvaControl.cvaDirective!.value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n this._cvaControl.cvaDirective?.ngControl?.valueChanges\n ?.pipe(\n tap((value: boolean) => {\n this._interactiveItemComponent.startAddon._addonGlyph.glyph = value ? 'accept' : undefined;\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n/**\n * @deprecated\n * Use `hasSeparator` input on a `fd-menu-item` instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-menu-separator',\n host: {\n '[style.display]': '\"none\"'\n },\n standalone: true\n})\nexport class MenuSeparatorDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n constructor() {\n console.error(\n '<fd-menu-separator> has been removed. Use `hasSeparator` input on a `fd-menu-item` instead.',\n this.elementRef.nativeElement\n );\n }\n}\n\n// Exporting as a old class name for the backward compatibility.\nexport { MenuSeparatorDirective as MenuSeparatorComponent };\n","export abstract class DefaultMenuItem {\n abstract focus(): void;\n abstract click(): void;\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\n\nexport const MENU_COMPONENT = new InjectionToken<string[]>('MenuInterface');\n\n/**\n * Menu Interface to have typing and avoid circular dependency between\n * MenuComponent <==> MenuMobileComponent\n */\nexport interface MenuInterface extends MobileMode {\n activePath: EventEmitter<MenuItemComponent[]>;\n dialogConfig: DialogConfig;\n isOpenChange: EventEmitter<boolean>;\n\n close(): void;\n}\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n NgZone,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n computed,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DialogBodyComponent, DialogModule } from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleModule } from '@fundamental-ngx/core/title';\nimport { startWith, take } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MENU_COMPONENT, MenuInterface } from '../menu.interface';\nimport { MenuService } from '../services/menu.service';\n\n@Component({\n selector: 'fd-menu-mobile',\n templateUrl: './menu-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DialogModule,\n TemplateDirective,\n BarModule,\n ButtonComponent,\n ContentDensityDirective,\n TitleModule,\n CdkScrollable,\n ScrollbarDirective,\n NgTemplateOutlet,\n InitialFocusDirective\n ]\n})\nexport class MenuMobileComponent extends MobileModeBase<MenuInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** Current menu title */\n title$ = signal('');\n\n /** Whether current menu level is submenu */\n isSubmenu$ = signal(false);\n\n /** @hidden External content */\n childContent: TemplateRef<any> | null = null;\n\n /** @hidden Currently rendered menu view */\n view$ = signal<TemplateRef<any> | null>(null);\n\n /** @hidden Navigation icon name based on RTL */\n navigationIcon$ = computed(() =>\n this._rtlService?.rtlSignal() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n @ViewChild(DialogBodyComponent)\n set _watch(_dialogBody: DialogBodyComponent) {\n if (_dialogBody) {\n this._menuService.addKeyboardSupport(_dialogBody.elementRef);\n }\n }\n\n /** @hidden */\n constructor(\n private _menuService: MenuService,\n private _ngZone: NgZone,\n @Optional() private _rtlService: RtlService,\n @Inject(MENU_COMPONENT) menuComponent: MenuInterface\n ) {\n super(menuComponent, MobileModeControl.MENU);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnActivePathChange();\n this._listenOnMenuOpenChange();\n }\n\n /** Closes the Dialog and Menu component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** Navigate back to parent level of submenu */\n backToParentLevel(): void {\n const menuItem = this._menuService.activeNodePath[this._menuService.activeNodePath.length - 1].item;\n this._menuService.setActive(false, menuItem);\n this._executeOnStable(() => {\n menuItem?.focus();\n });\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n escKeyCloseable: false,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement\n });\n }\n\n /** @hidden Listens on Active Path changes and updates mobile view */\n private _listenOnActivePathChange(): void {\n const initialItemPath: MenuItemComponent[] = this._menuService.activeNodePath\n .map((node) => node.item)\n .filter((v): v is MenuItemComponent => !!v);\n this._component.activePath\n .pipe(startWith(initialItemPath), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => this._setMenuView(items));\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n\n /** @hidden Sets menu view, title and isSubmenu flag */\n private _setMenuView(items: MenuItemComponent[]): void {\n const lastItem: MenuItemComponent = items[items.length - 1];\n this.isSubmenu$.set(!!items.length);\n this.title$.set(this._getDialogTitle(lastItem));\n this.view$.set(this._getMenuView(lastItem));\n this._executeOnStable(() => {\n this._menuService.focusedNode?.item?.focus();\n });\n }\n\n /** @hidden Opens/closes the Dialog based on Menu isOpenChange events */\n private _listenOnMenuOpenChange(): void {\n this._component.isOpenChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => (isOpen ? this._openDialog() : this.dialogRef.close()));\n }\n\n /** @hidden Returns dialog title */\n private _getDialogTitle(menuItem: MenuItemComponent): string {\n if (this.isSubmenu$()) {\n return menuItem.menuItemTitle ? menuItem.menuItemTitle.title : '';\n }\n\n return this.mobileConfig.title || '';\n }\n\n /** @hidden Returns dialog content view */\n private _getMenuView(menuItem: MenuItemComponent): TemplateRef<any> | null {\n if (this.isSubmenu$()) {\n return menuItem.submenu ? menuItem.submenu.templateRef : this.view$();\n }\n return this.childContent;\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (isSubmenu$()) {\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n id=\"menu-mobile-navigate-back\"\n fdCozy\n [attr.aria-label]=\"'Go to previous menu level: ' + title$()\"\n [glyph]=\"navigationIcon$()\"\n (click)=\"backToParentLevel()\"\n ></button>\n </fd-bar-element>\n }\n <fd-bar-element>\n <h1 fd-title>{{ title$() }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n @if (this.mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"close()\"></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"(isSubmenu$() ? subMenuTemplate : view$()) || null\"> </ng-template>\n </fd-dialog-body>\n @if (mobileConfig.approveButtonText || mobileConfig.cancelButtonText) {\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n }\n </fd-dialog>\n</ng-template>\n<ng-template #subMenuTemplate>\n <nav class=\"fd-menu fd-menu--mobile\">\n <ul class=\"fd-menu__sublist\">\n <ng-template [ngTemplateOutlet]=\"view$()\"></ng-template>\n </ul>\n </nav>\n</ng-template>\n","import {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { combineLatest, map, startWith, Subscription, tap } from 'rxjs';\n\nimport { DynamicComponentService, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { BasePopoverClass, PopoverService } from '@fundamental-ngx/core/popover';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuMobileComponent } from './menu-mobile/menu-mobile.component';\nimport { MENU_COMPONENT, MenuInterface } from './menu.interface';\nimport { FD_MENU_COMPONENT, FD_MENU_ITEM_COMPONENT } from './menu.tokens';\nimport { MenuService } from './services/menu.service';\n\nlet menuUniqueId = 0;\n\n/**\n * The component that represents a menu.\n */\n@Component({\n selector: 'fd-menu',\n templateUrl: './menu.component.html',\n styleUrl: 'menu.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MenuService,\n PopoverService,\n DynamicComponentService,\n {\n provide: FD_MENU_COMPONENT,\n useExisting: forwardRef(() => MenuComponent)\n },\n contentDensityObserverProviders()\n ],\n standalone: true\n})\nexport class MenuComponent\n extends BasePopoverClass\n implements MenuInterface, AfterContentInit, AfterViewInit, OnDestroy, OnInit\n{\n /** Set menu in mobile mode */\n @Input({ transform: booleanAttribute })\n set mobile(value: boolean) {\n this._mobile = value;\n this._menuService.setMenuMode(this.mobile);\n }\n\n get mobile(): boolean {\n return this._mobile;\n }\n\n /** Whether the popover is disabled. */\n @Input()\n disabled = false;\n\n /** Whether the popover should be focusTrapped. */\n @Input()\n focusTrapped = true;\n\n /**\n * Whether the popover should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n @Input()\n focusAutoCapture = true;\n\n /** Open submenu on hover after given milliseconds */\n @Input()\n openOnHoverTime = 0;\n\n /** Display menu without integrated popover */\n @Input()\n mobileConfig: MobileModeConfig = { cancelButtonText: 'Cancel' };\n\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** Id of the control. */\n @Input()\n id = `fd-menu-${menuUniqueId++}`;\n\n /** Emits array of active menu items */\n @Output()\n readonly activePath = new EventEmitter<MenuItemComponent[]>();\n\n /** @hidden Reference to the menu root template */\n @ViewChild('menuRootTemplate')\n _menuRootTemplate: TemplateRef<any>;\n\n /** @hidden Reference to all menu Items */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _menuItems: QueryList<MenuItemComponent>;\n\n /** @hidden Menu item segmented item headers */\n @ContentChildren(SegmentedButtonHeaderDirective)\n _segmentedButtonHeaderItems: QueryList<SegmentedButtonHeaderDirective<unknown>>;\n\n /** @hidden Menu item segmented item options */\n @ContentChildren(SegmentedButtonOptionDirective)\n _segmentedButtonOptions: QueryList<SegmentedButtonOptionDirective<unknown>>;\n\n /** @hidden Whether use a menu in mobile mode */\n private _mobile = false;\n\n /** @hidden Reference to external menu trigger */\n private _externalTrigger: ElementRef;\n\n /** @hidden */\n private _addons: Set<unknown> = new Set();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<MenuMobileComponent>;\n\n /** @hidden */\n private _clickEventListener: null | (() => void);\n\n /** @hidden */\n get hasAddons(): boolean {\n return this._addons.size > 0;\n }\n\n /** @hidden */\n private get _popoverConfig(): BasePopoverClass {\n return {\n ...this,\n additionalBodyClass: (this.additionalBodyClass ?? '') + ' fd-popover--menu'\n };\n }\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n @Optional() public readonly dialogConfig: DialogConfig,\n private readonly _rendered: Renderer2,\n private readonly _menuService: MenuService,\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private readonly _popoverService: PopoverService,\n private readonly _injector: Injector,\n private readonly _viewContainerRef: ViewContainerRef,\n @Optional() private readonly _dynamicComponentService: DynamicComponentService,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {\n super();\n }\n\n /** @hidden */\n ngOnInit(): void {\n /** keep isOpen up to date */\n this.isOpenChange.subscribe((isOpen) => {\n this.isOpen = isOpen;\n\n // when popover got closed by its own mechanism (e.x. click outside)\n // we need to clean up a menu as well\n if (!isOpen) {\n this._cleanUpMenuAfterClose();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Register addon */\n registerAddon(addon: unknown): void {\n this._addons.add(addon);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Unregister addon */\n unregisterAddon(addon: unknown): void {\n this._addons.delete(addon);\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._menuService.setMenuComponent(this);\n this._listenOnMenuItemsChange();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._menuService.isMobileMode.subscribe((isMobile) => {\n this._setupView();\n\n // Since it is mobile, it's needed to disable popoverService\n if (isMobile) {\n this._popoverService.deactivate();\n }\n });\n\n this._menuService.setMenuMode(this.mobile);\n\n combineLatest([\n this._menuItems.changes.pipe(\n startWith(this._menuItems),\n map((items) => items.toArray())\n ),\n this._segmentedButtonHeaderItems.changes.pipe(\n startWith(this._segmentedButtonHeaderItems),\n map((items) => items.toArray())\n ),\n this._segmentedButtonOptions.changes.pipe(\n startWith(this._segmentedButtonOptions),\n map((items) => items.toArray())\n )\n ])\n .pipe(\n map(([menuItems, segmentedButtonHeaderItems, segmentedButtonOptions]) =>\n menuItems.map((item, index) => ({\n menuItem: item,\n segmentedButtonHeaderItem: segmentedButtonHeaderItems.find(\n (headerItem) => headerItem.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n segmentedButtonOption: segmentedButtonOptions.find(\n (option) => option.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n index\n }))\n ),\n map((items) => {\n let headers = items.filter((item) => !!item.segmentedButtonHeaderItem);\n const options = items.filter((item) => !!item.segmentedButtonOption);\n headers = headers.map((header, headerIndex) => ({\n ...header,\n options: options.reduce((acc, option) => {\n const lastOption = acc[acc.length - 1];\n const optionIndex = option.index;\n if (!lastOption || optionIndex === lastOption.index + 1) {\n if (headerIndex === headers.length - 1 && optionIndex > header.index) {\n acc.push(option);\n } else if (optionIndex > header.index && optionIndex < headers[headerIndex + 1].index) {\n acc.push(option);\n }\n }\n return acc;\n }, [])\n }));\n return headers;\n }),\n tap((headers) =>\n headers.forEach(({ segmentedButtonHeaderItem, options }) => {\n segmentedButtonHeaderItem.setOptions(options.map((option) => option.segmentedButtonOption));\n })\n )\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n set trigger(trigger: ElementRef) {\n this._externalTrigger = trigger;\n this._popoverService.initialise(this._externalTrigger);\n this._destroyEventListeners();\n this._listenOnTriggerRefClicks();\n }\n\n get trigger(): ElementRef {\n return this._externalTrigger;\n }\n\n /** Opens the menu */\n open(): void {\n if (this.mobile) {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n } else {\n this._popoverService.open();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n /** Closes the menu */\n close(): void {\n if (this.mobile) {\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n } else {\n this._popoverService.close();\n }\n\n this._cleanUpMenuAfterClose();\n this._focusTrigger();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n this.isOpen ? this.close() : this.open();\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** @hidden */\n detectChanges(): void {\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n private _cleanUpMenuAfterClose(): void {\n this._menuService.resetMenuState();\n }\n\n /** @hidden Select and instantiate menu view mode */\n private _setupView(): void {\n if (this.mobile) {\n this._setupMobileMode();\n } else {\n this._setupPopoverService();\n }\n\n this.detectChanges();\n }\n\n /** @hidden */\n private _setupPopoverService(): void {\n this._subscriptions.add(\n this._popoverService._onLoad.subscribe((elementRef) => this._menuService.addKeyboardSupport(elementRef))\n );\n\n this._popoverService.templateContent = this._menuRootTemplate;\n this._popoverService.initialise(this._externalTrigger, this._popoverConfig);\n }\n\n /** @hidden Open Menu in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MENU_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n this._menuRootTemplate,\n MenuMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /** @hidden Listen on menu items change and rebuild menu */\n private _listenOnMenuItemsChange(): void {\n this._subscriptions.add(this._menuItems.changes.subscribe(() => this._menuService.rebuildMenu()));\n\n // Whether menu have submenu or not.\n let isSubmenu = false;\n this._menuItems.forEach((menuItem) => {\n if (menuItem.submenu?.menuItems) {\n isSubmenu = true;\n this._subscriptions.add(\n menuItem.submenu._menuItemsChange$.subscribe(() => this._menuService.rebuildMenu())\n );\n }\n });\n if (!this.disableScrollbar && isSubmenu) {\n this.disableScrollbar = isSubmenu;\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _listenOnTriggerRefClicks(): void {\n this._destroyEventListeners();\n\n if (this.trigger && this.mobile) {\n this._clickEventListener = this._rendered.listen(this.trigger.nativeElement, 'click', () => this.toggle());\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _destroyEventListeners(): void {\n if (this._clickEventListener) {\n this._clickEventListener();\n this._clickEventListener = null;\n }\n }\n\n /** @hidden */\n private _destroyMobileComponent(): void {\n if (this._mobileModeComponentRef) {\n this._mobileModeComponentRef.destroy();\n }\n }\n\n /** @hidden */\n private _focusTrigger(): void {\n if (this.focusTrapped && this.trigger) {\n this.trigger.nativeElement.focus();\n }\n }\n}\n","<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <div class=\"fd-popover__wrapper--visible\">\n <nav\n class=\"fd-menu\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"menu\"\n [class.fd-menu--mobile]=\"mobile\"\n [class.fd-menu--icons]=\"hasAddons\"\n >\n <ul\n role=\"none\"\n class=\"fd-menu__list fd-menu__list--no-shadow\"\n [class.fd-menu--full-width]=\"mobile || false\"\n >\n <ng-content></ng-content>\n </ul>\n </nav>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { DynamicComponentService, InitialFocusModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { GlyphMenuAddonDirective } from './directives/glyph-menu-addon.directive';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\nimport { MenuShortcutDirective } from './directives/menu-shortcut.directive';\nimport { MenuTitleDirective } from './directives/menu-title.directive';\nimport { MenuTriggerDirective } from './directives/menu-trigger.directive';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { ToggleButtonDirective } from './directives/toggle-button.directive';\nimport { MenuInteractiveComponent } from './menu-interactive.component';\nimport { MenuItemComponent, SubmenuComponent } from './menu-item/menu-item.component';\nimport { MenuSeparatorDirective } from './menu-separator.directive';\nimport { MenuComponent } from './menu.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PopoverModule,\n InitialFocusModule,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n PortalModule,\n MenuComponent,\n MenuItemComponent,\n MenuAddonDirective,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n SubmenuComponent,\n MenuTriggerDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n exports: [\n MenuComponent,\n MenuItemComponent,\n SubmenuComponent,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n MenuAddonDirective,\n MenuTriggerDirective,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n providers: [DynamicComponentService]\n})\nexport class MenuModule {}\n","import { DOWN_ARROW, ENTER, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ListItemComponent } from '@fundamental-ngx/core/list';\nimport { Subject } from 'rxjs';\nimport { DefaultMenuItem } from './default-menu-item.class';\n\n@Injectable()\nexport class MenuKeyboardService {\n /** Event emitted when an item link is clicked.*/\n @Output()\n public readonly itemClicked: Subject<number> = new Subject<number>();\n\n /** Whether user wants to remove keyboard handling */\n disableKeydownHandling = false;\n\n /** Function that is supposed to be called, when focus escape before list */\n focusEscapeBeforeList: () => void;\n\n /** Function that is supposed to be called, when focus escape after list */\n focusEscapeAfterList: () => void;\n\n /** Function that should be called every time, keydown event is used on some menu item,\n * it provides whole functionality for handling\n * ArrowDown - focus, ArrowUp - focus, Space bar - simulate click, Enter key - simulate click.\n * @param event KeyboardEvent\n * @param index index of items starts from 0\n * @param menuItems array of menu item directives\n * */\n keyDownHandler(event: KeyboardEvent, index: number, menuItems: DefaultMenuItem[] | ListItemComponent[]): void {\n if (this.disableKeydownHandling) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n if (menuItems.length > index + 1) {\n menuItems[index + 1].focus();\n } else {\n if (this.focusEscapeAfterList) {\n this.focusEscapeAfterList();\n } else {\n menuItems[0].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n if (index > 0) {\n menuItems[index - 1].focus();\n } else {\n if (this.focusEscapeBeforeList) {\n this.focusEscapeBeforeList();\n } else {\n menuItems[menuItems.length - 1].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n if (menuItems[index]) {\n menuItems[index].click();\n event.preventDefault();\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GlyphMenuAddonDirective","i1","menuUniqueId","i1.MenuItemComponent","switchMap","i2","startWith","i2.MenuService","i3","i4","i5"],"mappings":"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"}
|