@fundamental-ngx/platform 0.45.1 → 0.46.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +1 -1
- package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +1 -1
- package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +1 -1
- package/esm2022/approval-flow/approval-flow.component.mjs +2 -2
- package/esm2022/dynamic-page/dynamic-page.component.mjs +2 -2
- package/esm2022/feed-input/feed-input.component.mjs +2 -2
- package/esm2022/form/checkbox/checkbox.component.mjs +14 -9
- package/esm2022/form/checkbox/checkbox.module.mjs +4 -8
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +7 -7
- package/esm2022/form/checkbox-group/checkbox-group.module.mjs +5 -9
- package/esm2022/form/combobox/combobox/combobox.component.mjs +1 -1
- package/esm2022/form/date-picker/date-picker.component.mjs +23 -9
- package/esm2022/form/date-picker/date-picker.module.mjs +5 -11
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +22 -9
- package/esm2022/form/datetime-picker/datetime-picker.module.mjs +5 -11
- package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +2 -2
- package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +2 -2
- package/esm2022/form/form-group/form-group.component.mjs +2 -2
- package/esm2022/form/input-group/input-group.component.mjs +2 -2
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +2 -2
- package/esm2022/form/select/select/select.component.mjs +2 -2
- package/esm2022/form/step-input/number/number-step-input.component.mjs +2 -2
- package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +2 -2
- package/esm2022/link/link.component.mjs +2 -2
- package/esm2022/list/display-list-item/display-list-item.component.mjs +1 -1
- package/esm2022/list/list.component.mjs +2 -2
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +2 -2
- package/esm2022/list/object-list-item/object-list-item.component.mjs +2 -2
- package/esm2022/list/standard-list-item/standard-list-item.component.mjs +1 -1
- package/esm2022/menu/menu-item.component.mjs +2 -2
- package/esm2022/menu/menu.component.mjs +2 -2
- package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +15 -16
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +21 -9
- package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +6 -3
- package/esm2022/message-popover/message-popover.component.mjs +31 -11
- package/esm2022/message-popover/models/message-popover.interface.mjs +1 -1
- package/esm2022/message-popover/platform-message-popover.module.mjs +6 -65
- package/esm2022/message-popover/utils.mjs +18 -1
- package/esm2022/object-attribute/object-attribute.component.mjs +2 -2
- package/esm2022/page-footer/page-footer.component.mjs +2 -2
- package/esm2022/search-field/search-field.component.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +13 -8
- package/esm2022/slider/slider.module.mjs +5 -9
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +1 -1
- package/esm2022/split-menu-button/split-menu-button.component.mjs +2 -2
- package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +1 -1
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +1 -1
- package/esm2022/table/components/table-row/table-row.component.mjs +1 -1
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +1 -1
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +1 -1
- package/esm2022/table/table.component.mjs +2 -2
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +1 -1
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +1 -1
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +1 -1
- package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +1 -1
- package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +1 -1
- package/esm2022/variant-management/variant-management.component.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +5 -5
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +104 -78
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +92 -100
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-attribute.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-object-attribute.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-slider.mjs +15 -13
- package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +10 -10
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/form/checkbox/checkbox.component.d.ts +3 -1
- package/form/checkbox/checkbox.module.d.ts +5 -8
- package/form/checkbox-group/checkbox-group.component.d.ts +1 -1
- package/form/checkbox-group/checkbox-group.module.d.ts +4 -7
- package/form/date-picker/date-picker.component.d.ts +11 -2
- package/form/date-picker/date-picker.module.d.ts +1 -6
- package/form/datetime-picker/datetime-picker.component.d.ts +11 -2
- package/form/datetime-picker/datetime-picker.module.d.ts +1 -6
- package/fundamental-ngx-platform-v0.46.0-rc.1.tgz +0 -0
- package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +1 -3
- package/message-popover/components/message-view/message-view.component.d.ts +1 -1
- package/message-popover/directives/message-popover-form-item.directive.d.ts +6 -3
- package/message-popover/message-popover.component.d.ts +3 -4
- package/message-popover/models/message-popover.interface.d.ts +2 -0
- package/message-popover/platform-message-popover.module.d.ts +1 -16
- package/message-popover/utils.d.ts +7 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/slider/slider.component.d.ts +3 -1
- package/slider/slider.module.d.ts +3 -6
- package/fundamental-ngx-platform-v0.45.1.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-menu.mjs","sources":["../../../../libs/platform/src/lib/menu/menu-item.component.ts","../../../../libs/platform/src/lib/menu/menu-item.component.html","../../../../libs/platform/src/lib/menu/menu.component.ts","../../../../libs/platform/src/lib/menu/menu.component.html","../../../../libs/platform/src/lib/menu/menu-trigger.directive.ts","../../../../libs/platform/src/lib/menu/menu.module.ts","../../../../libs/platform/src/lib/menu/fundamental-ngx-platform-menu.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n OnDestroy,\n Input,\n Output,\n ViewEncapsulation,\n ContentChild,\n ChangeDetectorRef\n} from '@angular/core';\nimport { FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Subject } from 'rxjs';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { MenuInteractiveDirective } from '@fundamental-ngx/core/menu';\n\n@Component({\n selector: 'fdp-menu-item',\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'fd-menu__item',\n tabindex: '-1'\n }\n})\nexport class MenuItemComponent implements OnDestroy, FocusableOption {\n /** Set the Menu Item as disabled/enabled */\n @Input()\n disabled = false;\n\n /** Menu direction */\n @Input()\n cascadeDirection: 'right' | 'left' = 'right';\n\n /** Event emitted when item is selected. */\n @Output()\n itemSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** Track when menu item is hovered over */\n hovered: Subject<MenuItemComponent> = new Subject<MenuItemComponent>();\n\n /** Sets whether this item is a trigger for sub-menu. */\n @HostBinding('class.trigger')\n isTrigger = false;\n\n /** @hidden */\n _isSelected = false;\n /**\n * @hidden\n * set CSS class 'is-selected' if menu-item opens a sub-menu.\n */\n set isSelected(selected: boolean) {\n if (this._isSelected !== selected) {\n this._isSelected = selected;\n this._cdr.markForCheck();\n }\n }\n /** @hidden */\n get isSelected(): boolean {\n return this._isSelected;\n }\n\n /** @hidden */\n @ContentChild(MenuInteractiveDirective)\n _fdMenuInteractiveChild: MenuInteractiveDirective;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef, private _cdr: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this.hovered.complete();\n }\n\n /** Focus on option */\n focus(): void {\n const interactive = this._elementRef.nativeElement?.firstElementChild as HTMLElement;\n interactive?.focus();\n }\n\n /**\n * @hidden\n * Handle selection of item via keyboard 'Enter'\n */\n @HostListener('keydown', ['$event'])\n private _onItemKeydown(event: KeyboardEvent): void {\n if (event && KeyUtil.isKeyCode(event, [SPACE, ENTER]) && !this.disabled) {\n this.itemSelect.emit();\n } else if (this.disabled) {\n event.stopPropagation();\n }\n }\n\n /**\n * @hidden\n * Handle click of item via mouse click.\n */\n @HostListener('click', ['$event'])\n private _onItemClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.itemSelect.emit();\n } else {\n event.stopPropagation();\n }\n }\n\n /**\n * @hidden\n * Handle mouse enter event.\n */\n @HostListener('mouseenter')\n private _onMouseEnter(): void {\n this.hovered.next(this);\n }\n}\n","<ng-container *ngIf=\"!_fdMenuInteractiveChild; else projectedContent\">\n <div\n class=\"fd-menu__link\"\n [class.is-disabled]=\"disabled\"\n [attr.disabled]=\"disabled\"\n [class.is-selected]=\"isSelected\"\n tabindex=\"0\"\n role=\"menuitem\"\n >\n <span class=\"fd-menu__title\">\n <ng-container [ngTemplateOutlet]=\"projectedContent\"></ng-container>\n </span>\n <span *ngIf=\"isTrigger\" class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </div>\n</ng-container>\n\n<ng-template #projectedContent>\n <ng-content></ng-content>\n</ng-template>\n","/**\n * @license\n * Copyright (c) 2010-2020 SAP\n * Copyright (c) 2010-2020 Google LLC. http://angular.io/license\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and\n * associated documentation files (the \"Software\"), to deal in the Software without restriction,\n * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial\n * portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\n * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FocusKeyManager, FocusOrigin } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { merge, Observable, Subscription } from 'rxjs';\nimport { startWith, switchMap } from 'rxjs/operators';\n\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { MenuItemComponent } from './menu-item.component';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\n\nexport type MenuCloseMethod = void | 'mouse' | 'keyboard' | 'tab' | 'arrow';\n\n/**\n * Variables for generating menu IDs.\n * Needed for establishing 'aria-control' between trigger and menu.\n */\nconst MENU_ID_ROOT = 'fdp-menu-';\nlet menuIdCounter = 0;\n\n@Component({\n selector: 'fdp-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [contentDensityObserverProviders()]\n})\nexport class MenuComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n /** Menu ID */\n @Input()\n set id(id: string) {\n this._id = id;\n\n // Use 'id' property to create menu ID for aria-control purposes.\n this.menuId = MENU_ID_ROOT + id;\n }\n get id(): string {\n return this._id;\n }\n\n /**\n * Whether menu can be opened using arrow keys\n * @default true\n */\n @Input()\n openByArrowKeys = true;\n\n /**\n * Horizontal position of menu in relation to trigger element.\n */\n @Input()\n xPosition: 'before' | 'after' = 'after';\n\n /**\n * The templateRef needs to be available to the menu trigger for\n * opening in a CDK overlay.\n */\n @ViewChild('menuTemplate', { static: false })\n templateRef: TemplateRef<any>;\n\n /**\n * Child items of the menu.\n */\n @ContentChildren(MenuItemComponent)\n menuItems: QueryList<MenuItemComponent>;\n\n /**\n * Emitted event when menu closes\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n close: EventEmitter<MenuCloseMethod> = new EventEmitter();\n\n /** Menu direction */\n direction: 'ltr' | 'rtl' = 'ltr';\n\n /** @hidden */\n menuId: string;\n\n /** @hidden */\n private _id: string;\n\n /** @hidden */\n private _keyManager: FocusKeyManager<MenuItemComponent>;\n\n /** @hidden */\n private _tabSubscription = Subscription.EMPTY;\n\n /** @hidden */\n private _dirChangeSubscription = Subscription.EMPTY;\n\n /** @hidden */\n constructor(@Optional() private _rtl: RtlService, readonly contentDensityObserver: ContentDensityObserver) {\n if (this._rtl) {\n this._dirChangeSubscription = this._rtl.rtl.subscribe((value: boolean) => {\n this.direction = value ? 'rtl' : 'ltr';\n this._setMenuItemCascadeDirection();\n });\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (!this.menuId) {\n this.menuId = MENU_ID_ROOT + menuIdCounter++;\n }\n if (this.menuItems) {\n this._keyManager = new FocusKeyManager(this.menuItems);\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => {\n this.close.emit('keyboard');\n });\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setMenuItemCascadeDirection();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.close.complete();\n this._tabSubscription.unsubscribe();\n this._dirChangeSubscription.unsubscribe();\n this._keyManager?.destroy();\n }\n\n /**\n * Set focus on first item\n * @param origin FocusOrigin\n */\n focusOnFirstItem(origin: FocusOrigin = 'program'): void {\n this._keyManager.setFocusOrigin(origin).setFirstItemActive();\n }\n\n /**\n * Close menu\n * @param method menu close method\n */\n closeMenu(method: MenuCloseMethod): void {\n this.close.emit(method);\n }\n\n /**\n * @hidden\n * Menu keydown handler\n */\n _onKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n if (this._cascadesRight()) {\n this.close.emit('arrow');\n }\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n if (this._cascadesLeft()) {\n this.close.emit('arrow');\n }\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n this.close.emit('keyboard');\n } else if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n event.preventDefault();\n this.close.emit('keyboard');\n } else {\n this._keyManager.onKeydown(event);\n }\n }\n\n /**\n * @hidden\n * Menu click handler\n */\n _onClick(): void {\n this.close.emit('mouse');\n }\n\n /**\n * @hidden\n * Get stream of menu items hover change\n */\n _menuItemHoverChange(): Observable<MenuItemComponent> {\n const menuItems = this.menuItems.changes as Observable<QueryList<MenuItemComponent>>;\n return menuItems.pipe(\n startWith(this.menuItems),\n switchMap((items) => merge(...items.map((item: MenuItemComponent) => item.hovered)))\n ) as Observable<MenuItemComponent>;\n }\n\n /** @hidden */\n _setMenuItemCascadeDirection(): void {\n if (!this.menuItems) {\n return;\n }\n // set cascade direction\n this.menuItems.forEach((item) => {\n item.cascadeDirection = this._cascadesLeft() ? 'left' : 'right';\n });\n }\n\n /**\n * @hidden\n * Check if cascade menu should appear from right\n */\n _cascadesRight(): boolean {\n return (\n (this.xPosition === 'after' && this.direction === 'ltr') ||\n (this.xPosition === 'before' && this.direction === 'rtl')\n );\n }\n\n /**\n * @hidden\n * Check if cascade menu should appear from left\n */\n _cascadesLeft(): boolean {\n return (\n (this.xPosition === 'after' && this.direction === 'rtl') ||\n (this.xPosition === 'before' && this.direction === 'ltr')\n );\n }\n}\n","<ng-template #menuTemplate>\n <nav\n [attr.id]=\"menuId\"\n [attr.dir]=\"direction\"\n class=\"fd-menu\"\n [class.is-compact]=\"contentDensityObserver.isCompact$ | async\"\n tabindex=\"0\"\n role=\"menu\"\n (click)=\"_onClick()\"\n (keydown)=\"_onKeydown($event)\"\n >\n <div class=\"fd-menu__list\">\n <ng-content></ng-content>\n </div>\n </nav>\n</ng-template>\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewContainerRef\n} from '@angular/core';\nimport { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { MenuCloseMethod, MenuComponent } from './menu.component';\nimport { MenuItemComponent } from './menu-item.component';\n\n@Directive({\n selector: `[fdpMenuTriggerFor]`,\n host: {\n 'aria-haspopup': 'menu',\n '[attr.aria-expanded]': 'isMenuOpen || null',\n '[attr.aria-controls]': 'isMenuOpen ? menu.menuId : null'\n }\n})\nexport class MenuTriggerDirective implements OnDestroy, AfterContentInit {\n /** Set Menu Component for which this trigger will be associated. */\n @Input('fdpMenuTriggerFor')\n set menu(menu: MenuComponent) {\n if (this._menu === menu) {\n return;\n }\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n }\n get menu(): MenuComponent {\n return this._menu;\n }\n\n /** @hidden */\n private _menu: MenuComponent;\n /** @hidden */\n private _overlayRef: OverlayRef | null;\n /** @hidden */\n private _portal: TemplatePortal;\n /** @hidden */\n private _isMenuOpen = false;\n /** @hidden */\n private _outsideClickSubscription: Subscription = Subscription.EMPTY;\n /** @hidden */\n private _menuCloseSubscription: Subscription = Subscription.EMPTY;\n /** @hidden */\n private _parentMenuCloseSubscription: Subscription = Subscription.EMPTY;\n /** @hidden */\n private _menuItemHoverChangeSubscription: Subscription = Subscription.EMPTY;\n\n /** @hidden */\n constructor(\n private _element: ElementRef<HTMLElement>,\n private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef,\n @Optional() @Self() private _menuItem: MenuItemComponent,\n @Optional() private _parentMenu: MenuComponent\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this._isMenuItem()) {\n // mark menu item as trigger\n this._menuItem.isTrigger = true;\n\n // subscribe to changes of menu item hover state\n this._menuItemHoverChangeSubscription = this._parentMenu._menuItemHoverChange().subscribe((item) => {\n if (item === this._menuItem) {\n if (!this.isMenuOpen) {\n this._menuItem.isSelected = true;\n this.openMenu();\n }\n } else {\n this._menuItem.isSelected = false;\n this.closeMenu();\n }\n });\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._outsideClickSubscription.unsubscribe();\n this._menuCloseSubscription.unsubscribe();\n this._parentMenuCloseSubscription.unsubscribe();\n this._menuItemHoverChangeSubscription.unsubscribe();\n }\n\n /** Flag to determine if associated menu is open. */\n get isMenuOpen(): boolean {\n return this._isMenuOpen;\n }\n\n /**\n * @hidden\n * Handle click on trigger element.\n */\n @HostListener('click', ['$event'])\n _onTriggerClick(event: MouseEvent): void {\n // Need to interupt default menu behavior of closing the menu\n if (this._isMenuItem()) {\n event.preventDefault();\n event.stopPropagation();\n }\n // filter out clicks initiated by keyboard enter.\n // For IE 11, MouseEvent fires a MSPointerEvent object instead of MouseEvent.\n if (event.detail > 0 || (event instanceof PointerEvent && event.detail === 0)) {\n this.toggleMenu();\n }\n }\n\n /**\n * @hidden\n * Handled keypress which focus is on trigger element.\n */\n @HostListener('keydown', ['$event'])\n _onTriggerKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n if (KeyUtil.isKeyCode(event, [SPACE])) {\n event.preventDefault();\n }\n\n // Need to interupt default menu item behavior of closing the menu\n if (this._isMenuItem()) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (this._menuItem) {\n this._menuItem.isSelected = true;\n }\n this.openMenu();\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW])) {\n if (this._menu._cascadesRight() && this._menu.openByArrowKeys) {\n if (this._menuItem) {\n this._menuItem.isSelected = true;\n }\n this.openMenu();\n }\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW])) {\n if (this._menu._cascadesLeft() && this._menu.openByArrowKeys) {\n if (this._menuItem) {\n this._menuItem.isSelected = true;\n }\n this.openMenu();\n }\n }\n }\n\n /**\n * @hidden\n * Toggle display of associated menu.\n */\n toggleMenu(): void {\n /**\n * Need to add delay here to ensure that any \"closeMenu\" operation which\n * has been invoked within an \"outsideClickSubscription\" gets resolved\n * before \"openMenu\" is called. This can happen when there are multiple\n * triggers for the same menu.\n */\n setTimeout(() => {\n this._isMenuOpen ? this._destroyMenu() : this.openMenu();\n }, 0);\n }\n\n /**\n * @hidden\n * Open associated menu.\n */\n openMenu(): void {\n // create overlay\n const overlayConfig = this._getOverlayConfig();\n this._overlayRef = this._overlay.create(overlayConfig);\n\n // get portal and attach to overlay\n this._portal = new TemplatePortal(this._menu.templateRef, this._viewContainerRef);\n this._overlayRef.attach(this._portal);\n\n // add subscription to capture clicks outside menu\n if (this._outsideClickSubscription) {\n this._outsideClickSubscription.unsubscribe();\n }\n this._outsideClickSubscription = fromEvent<MouseEvent>(document, 'click')\n .pipe(\n filter((event) => {\n const target = event.target as HTMLElement;\n return (\n !this._element.nativeElement.contains(target) &&\n !!this._overlayRef &&\n !this._overlayRef.overlayElement.contains(target) &&\n this.isMenuOpen\n );\n }),\n take(1)\n )\n .subscribe(() => {\n this.closeMenu();\n });\n\n // add subscription to menu 'close' event\n if (this._menuCloseSubscription) {\n this._menuCloseSubscription.unsubscribe();\n }\n this._menuCloseSubscription = this._menu.close.subscribe((method: MenuCloseMethod) => {\n this._destroyMenu();\n // Need to close parent menu if closing of menu was done by terminating action\n if (this._parentMenu && (method === 'keyboard' || method === 'mouse')) {\n this._parentMenu.closeMenu(method);\n }\n });\n\n // add subscription to parent menu 'close' event\n if (this._parentMenu) {\n if (this._parentMenuCloseSubscription) {\n this._parentMenuCloseSubscription.unsubscribe();\n }\n this._parentMenuCloseSubscription = this._parentMenu.close.subscribe(() => {\n this.closeMenu();\n });\n }\n\n // set focus to menu\n this._menu.focusOnFirstItem();\n\n this._isMenuOpen = true;\n }\n\n /**\n * @hidden\n * Close associated menu.\n */\n closeMenu(): void {\n this._menu.closeMenu();\n }\n\n /**\n * @hidden\n * destroy associated menu.\n */\n private _destroyMenu(): void {\n if (this._menuItem) {\n this._menuItem.isSelected = false;\n }\n if (!this._overlayRef || !this._isMenuOpen) {\n return;\n }\n if (this._menuItem) {\n this._menuItem.focus();\n } else {\n this._element.nativeElement.focus();\n }\n this._overlayRef.detach();\n this._isMenuOpen = false;\n }\n\n /** @hidden */\n private _getOverlayConfig(): OverlayConfig {\n const positions = this._getPositions();\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withPositions(positions);\n\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n const overlayConfig = new OverlayConfig({\n positionStrategy,\n scrollStrategy,\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n return overlayConfig;\n }\n\n /** @hidden */\n private _getPositions(): ConnectedPosition[] {\n let positions: ConnectedPosition[] = [];\n const offsetYPosition = 0;\n const offsetXPosition = 0;\n const subMenuXPadding = 4; // horizontal padding of 0.25rem(4px) is needed for sub-menu\n const subMenuYPadding = 4; // vertical padding of 0.25rem(4px) is needed for sub-menu\n\n if (this._isMenuItem()) {\n if (this._menu._cascadesLeft()) {\n positions = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: subMenuXPadding,\n offsetY: subMenuYPadding\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: subMenuXPadding,\n offsetY: -subMenuYPadding\n }\n ];\n } else {\n positions = [\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: -subMenuXPadding,\n offsetY: subMenuYPadding\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: -subMenuXPadding,\n offsetY: -subMenuYPadding\n }\n ];\n }\n } else {\n if (this._menu._cascadesLeft()) {\n positions = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: offsetYPosition,\n offsetX: offsetXPosition\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -offsetYPosition,\n offsetX: offsetXPosition\n }\n ];\n } else {\n positions = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: offsetYPosition,\n offsetX: -offsetXPosition\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -offsetYPosition,\n offsetX: -offsetXPosition\n }\n ];\n }\n }\n\n return positions;\n }\n\n /** @hidden */\n private _isMenuItem(): boolean {\n return !!(this._parentMenu && this._menuItem);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\n\nimport { MenuComponent } from './menu.component';\nimport { MenuItemComponent } from './menu-item.component';\nimport { MenuTriggerDirective } from './menu-trigger.directive';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, BidiModule, ScrollingModule, PipeModule, ContentDensityModule],\n declarations: [MenuComponent, MenuItemComponent, MenuTriggerDirective],\n exports: [MenuComponent, MenuItemComponent, MenuTriggerDirective, ContentDensityModule]\n})\nexport class PlatformMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i2.MenuItemComponent","i3.MenuComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-menu.mjs","sources":["../../../../libs/platform/src/lib/menu/menu-item.component.ts","../../../../libs/platform/src/lib/menu/menu-item.component.html","../../../../libs/platform/src/lib/menu/menu.component.ts","../../../../libs/platform/src/lib/menu/menu.component.html","../../../../libs/platform/src/lib/menu/menu-trigger.directive.ts","../../../../libs/platform/src/lib/menu/menu.module.ts","../../../../libs/platform/src/lib/menu/fundamental-ngx-platform-menu.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n OnDestroy,\n Input,\n Output,\n ViewEncapsulation,\n ContentChild,\n ChangeDetectorRef\n} from '@angular/core';\nimport { FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Subject } from 'rxjs';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { MenuInteractiveDirective } from '@fundamental-ngx/core/menu';\n\n@Component({\n selector: 'fdp-menu-item',\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'fd-menu__item',\n tabindex: '-1'\n }\n})\nexport class MenuItemComponent implements OnDestroy, FocusableOption {\n /** Set the Menu Item as disabled/enabled */\n @Input()\n disabled = false;\n\n /** Menu direction */\n @Input()\n cascadeDirection: 'right' | 'left' = 'right';\n\n /** Event emitted when item is selected. */\n @Output()\n itemSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** Track when menu item is hovered over */\n hovered: Subject<MenuItemComponent> = new Subject<MenuItemComponent>();\n\n /** Sets whether this item is a trigger for sub-menu. */\n @HostBinding('class.trigger')\n isTrigger = false;\n\n /** @hidden */\n _isSelected = false;\n /**\n * @hidden\n * set CSS class 'is-selected' if menu-item opens a sub-menu.\n */\n set isSelected(selected: boolean) {\n if (this._isSelected !== selected) {\n this._isSelected = selected;\n this._cdr.markForCheck();\n }\n }\n /** @hidden */\n get isSelected(): boolean {\n return this._isSelected;\n }\n\n /** @hidden */\n @ContentChild(MenuInteractiveDirective)\n _fdMenuInteractiveChild: MenuInteractiveDirective;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef, private _cdr: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this.hovered.complete();\n }\n\n /** Focus on option */\n focus(): void {\n const interactive = this._elementRef.nativeElement?.firstElementChild as HTMLElement;\n interactive?.focus();\n }\n\n /**\n * @hidden\n * Handle selection of item via keyboard 'Enter'\n */\n @HostListener('keydown', ['$event'])\n private _onItemKeydown(event: KeyboardEvent): void {\n if (event && KeyUtil.isKeyCode(event, [SPACE, ENTER]) && !this.disabled) {\n this.itemSelect.emit();\n } else if (this.disabled) {\n event.stopPropagation();\n }\n }\n\n /**\n * @hidden\n * Handle click of item via mouse click.\n */\n @HostListener('click', ['$event'])\n private _onItemClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.itemSelect.emit();\n } else {\n event.stopPropagation();\n }\n }\n\n /**\n * @hidden\n * Handle mouse enter event.\n */\n @HostListener('mouseenter')\n private _onMouseEnter(): void {\n this.hovered.next(this);\n }\n}\n","<ng-container *ngIf=\"!_fdMenuInteractiveChild; else projectedContent\">\n <div\n class=\"fd-menu__link\"\n [class.is-disabled]=\"disabled\"\n [attr.disabled]=\"disabled\"\n [class.is-selected]=\"isSelected\"\n tabindex=\"0\"\n role=\"menuitem\"\n >\n <span class=\"fd-menu__title\">\n <ng-container [ngTemplateOutlet]=\"projectedContent\"></ng-container>\n </span>\n <span *ngIf=\"isTrigger\" class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </div>\n</ng-container>\n\n<ng-template #projectedContent>\n <ng-content></ng-content>\n</ng-template>\n","/**\n * @license\n * Copyright (c) 2010-2020 SAP\n * Copyright (c) 2010-2020 Google LLC. http://angular.io/license\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and\n * associated documentation files (the \"Software\"), to deal in the Software without restriction,\n * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial\n * portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\n * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FocusKeyManager, FocusOrigin } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { merge, Observable, Subscription } from 'rxjs';\nimport { startWith, switchMap } from 'rxjs/operators';\n\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { MenuItemComponent } from './menu-item.component';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\n\nexport type MenuCloseMethod = void | 'mouse' | 'keyboard' | 'tab' | 'arrow';\n\n/**\n * Variables for generating menu IDs.\n * Needed for establishing 'aria-control' between trigger and menu.\n */\nconst MENU_ID_ROOT = 'fdp-menu-';\nlet menuIdCounter = 0;\n\n@Component({\n selector: 'fdp-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [contentDensityObserverProviders()]\n})\nexport class MenuComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n /** Menu ID */\n @Input()\n set id(id: string) {\n this._id = id;\n\n // Use 'id' property to create menu ID for aria-control purposes.\n this.menuId = MENU_ID_ROOT + id;\n }\n get id(): string {\n return this._id;\n }\n\n /**\n * Whether menu can be opened using arrow keys\n * @default true\n */\n @Input()\n openByArrowKeys = true;\n\n /**\n * Horizontal position of menu in relation to trigger element.\n */\n @Input()\n xPosition: 'before' | 'after' = 'after';\n\n /**\n * The templateRef needs to be available to the menu trigger for\n * opening in a CDK overlay.\n */\n @ViewChild('menuTemplate', { static: false })\n templateRef: TemplateRef<any>;\n\n /**\n * Child items of the menu.\n */\n @ContentChildren(MenuItemComponent)\n menuItems: QueryList<MenuItemComponent>;\n\n /**\n * Emitted event when menu closes\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n close: EventEmitter<MenuCloseMethod> = new EventEmitter();\n\n /** Menu direction */\n direction: 'ltr' | 'rtl' = 'ltr';\n\n /** @hidden */\n menuId: string;\n\n /** @hidden */\n private _id: string;\n\n /** @hidden */\n private _keyManager: FocusKeyManager<MenuItemComponent>;\n\n /** @hidden */\n private _tabSubscription = Subscription.EMPTY;\n\n /** @hidden */\n private _dirChangeSubscription = Subscription.EMPTY;\n\n /** @hidden */\n constructor(@Optional() private _rtl: RtlService, readonly contentDensityObserver: ContentDensityObserver) {\n if (this._rtl) {\n this._dirChangeSubscription = this._rtl.rtl.subscribe((value: boolean) => {\n this.direction = value ? 'rtl' : 'ltr';\n this._setMenuItemCascadeDirection();\n });\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (!this.menuId) {\n this.menuId = MENU_ID_ROOT + menuIdCounter++;\n }\n if (this.menuItems) {\n this._keyManager = new FocusKeyManager(this.menuItems);\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => {\n this.close.emit('keyboard');\n });\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setMenuItemCascadeDirection();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.close.complete();\n this._tabSubscription.unsubscribe();\n this._dirChangeSubscription.unsubscribe();\n this._keyManager?.destroy();\n }\n\n /**\n * Set focus on first item\n * @param origin FocusOrigin\n */\n focusOnFirstItem(origin: FocusOrigin = 'program'): void {\n this._keyManager.setFocusOrigin(origin).setFirstItemActive();\n }\n\n /**\n * Close menu\n * @param method menu close method\n */\n closeMenu(method: MenuCloseMethod): void {\n this.close.emit(method);\n }\n\n /**\n * @hidden\n * Menu keydown handler\n */\n _onKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n if (this._cascadesRight()) {\n this.close.emit('arrow');\n }\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n if (this._cascadesLeft()) {\n this.close.emit('arrow');\n }\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n this.close.emit('keyboard');\n } else if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n event.preventDefault();\n this.close.emit('keyboard');\n } else {\n this._keyManager.onKeydown(event);\n }\n }\n\n /**\n * @hidden\n * Menu click handler\n */\n _onClick(): void {\n this.close.emit('mouse');\n }\n\n /**\n * @hidden\n * Get stream of menu items hover change\n */\n _menuItemHoverChange(): Observable<MenuItemComponent> {\n const menuItems = this.menuItems.changes as Observable<QueryList<MenuItemComponent>>;\n return menuItems.pipe(\n startWith(this.menuItems),\n switchMap((items) => merge(...items.map((item: MenuItemComponent) => item.hovered)))\n ) as Observable<MenuItemComponent>;\n }\n\n /** @hidden */\n _setMenuItemCascadeDirection(): void {\n if (!this.menuItems) {\n return;\n }\n // set cascade direction\n this.menuItems.forEach((item) => {\n item.cascadeDirection = this._cascadesLeft() ? 'left' : 'right';\n });\n }\n\n /**\n * @hidden\n * Check if cascade menu should appear from right\n */\n _cascadesRight(): boolean {\n return (\n (this.xPosition === 'after' && this.direction === 'ltr') ||\n (this.xPosition === 'before' && this.direction === 'rtl')\n );\n }\n\n /**\n * @hidden\n * Check if cascade menu should appear from left\n */\n _cascadesLeft(): boolean {\n return (\n (this.xPosition === 'after' && this.direction === 'rtl') ||\n (this.xPosition === 'before' && this.direction === 'ltr')\n );\n }\n}\n","<ng-template #menuTemplate>\n <nav\n [attr.id]=\"menuId\"\n [attr.dir]=\"direction\"\n class=\"fd-menu\"\n [class.is-compact]=\"contentDensityObserver.isCompact$ | async\"\n tabindex=\"0\"\n role=\"menu\"\n (click)=\"_onClick()\"\n (keydown)=\"_onKeydown($event)\"\n >\n <div class=\"fd-menu__list\">\n <ng-content></ng-content>\n </div>\n </nav>\n</ng-template>\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewContainerRef\n} from '@angular/core';\nimport { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { MenuCloseMethod, MenuComponent } from './menu.component';\nimport { MenuItemComponent } from './menu-item.component';\n\n@Directive({\n selector: `[fdpMenuTriggerFor]`,\n host: {\n 'aria-haspopup': 'menu',\n '[attr.aria-expanded]': 'isMenuOpen || null',\n '[attr.aria-controls]': 'isMenuOpen ? menu.menuId : null'\n }\n})\nexport class MenuTriggerDirective implements OnDestroy, AfterContentInit {\n /** Set Menu Component for which this trigger will be associated. */\n @Input('fdpMenuTriggerFor')\n set menu(menu: MenuComponent) {\n if (this._menu === menu) {\n return;\n }\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n }\n get menu(): MenuComponent {\n return this._menu;\n }\n\n /** @hidden */\n private _menu: MenuComponent;\n /** @hidden */\n private _overlayRef: OverlayRef | null;\n /** @hidden */\n private _portal: TemplatePortal;\n /** @hidden */\n private _isMenuOpen = false;\n /** @hidden */\n private _outsideClickSubscription: Subscription = Subscription.EMPTY;\n /** @hidden */\n private _menuCloseSubscription: Subscription = Subscription.EMPTY;\n /** @hidden */\n private _parentMenuCloseSubscription: Subscription = Subscription.EMPTY;\n /** @hidden */\n private _menuItemHoverChangeSubscription: Subscription = Subscription.EMPTY;\n\n /** @hidden */\n constructor(\n private _element: ElementRef<HTMLElement>,\n private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef,\n @Optional() @Self() private _menuItem: MenuItemComponent,\n @Optional() private _parentMenu: MenuComponent\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this._isMenuItem()) {\n // mark menu item as trigger\n this._menuItem.isTrigger = true;\n\n // subscribe to changes of menu item hover state\n this._menuItemHoverChangeSubscription = this._parentMenu._menuItemHoverChange().subscribe((item) => {\n if (item === this._menuItem) {\n if (!this.isMenuOpen) {\n this._menuItem.isSelected = true;\n this.openMenu();\n }\n } else {\n this._menuItem.isSelected = false;\n this.closeMenu();\n }\n });\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._outsideClickSubscription.unsubscribe();\n this._menuCloseSubscription.unsubscribe();\n this._parentMenuCloseSubscription.unsubscribe();\n this._menuItemHoverChangeSubscription.unsubscribe();\n }\n\n /** Flag to determine if associated menu is open. */\n get isMenuOpen(): boolean {\n return this._isMenuOpen;\n }\n\n /**\n * @hidden\n * Handle click on trigger element.\n */\n @HostListener('click', ['$event'])\n _onTriggerClick(event: MouseEvent): void {\n // Need to interupt default menu behavior of closing the menu\n if (this._isMenuItem()) {\n event.preventDefault();\n event.stopPropagation();\n }\n // filter out clicks initiated by keyboard enter.\n // For IE 11, MouseEvent fires a MSPointerEvent object instead of MouseEvent.\n if (event.detail > 0 || (event instanceof PointerEvent && event.detail === 0)) {\n this.toggleMenu();\n }\n }\n\n /**\n * @hidden\n * Handled keypress which focus is on trigger element.\n */\n @HostListener('keydown', ['$event'])\n _onTriggerKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n if (KeyUtil.isKeyCode(event, [SPACE])) {\n event.preventDefault();\n }\n\n // Need to interupt default menu item behavior of closing the menu\n if (this._isMenuItem()) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (this._menuItem) {\n this._menuItem.isSelected = true;\n }\n this.openMenu();\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW])) {\n if (this._menu._cascadesRight() && this._menu.openByArrowKeys) {\n if (this._menuItem) {\n this._menuItem.isSelected = true;\n }\n this.openMenu();\n }\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW])) {\n if (this._menu._cascadesLeft() && this._menu.openByArrowKeys) {\n if (this._menuItem) {\n this._menuItem.isSelected = true;\n }\n this.openMenu();\n }\n }\n }\n\n /**\n * @hidden\n * Toggle display of associated menu.\n */\n toggleMenu(): void {\n /**\n * Need to add delay here to ensure that any \"closeMenu\" operation which\n * has been invoked within an \"outsideClickSubscription\" gets resolved\n * before \"openMenu\" is called. This can happen when there are multiple\n * triggers for the same menu.\n */\n setTimeout(() => {\n this._isMenuOpen ? this._destroyMenu() : this.openMenu();\n }, 0);\n }\n\n /**\n * @hidden\n * Open associated menu.\n */\n openMenu(): void {\n // create overlay\n const overlayConfig = this._getOverlayConfig();\n this._overlayRef = this._overlay.create(overlayConfig);\n\n // get portal and attach to overlay\n this._portal = new TemplatePortal(this._menu.templateRef, this._viewContainerRef);\n this._overlayRef.attach(this._portal);\n\n // add subscription to capture clicks outside menu\n if (this._outsideClickSubscription) {\n this._outsideClickSubscription.unsubscribe();\n }\n this._outsideClickSubscription = fromEvent<MouseEvent>(document, 'click')\n .pipe(\n filter((event) => {\n const target = event.target as HTMLElement;\n return (\n !this._element.nativeElement.contains(target) &&\n !!this._overlayRef &&\n !this._overlayRef.overlayElement.contains(target) &&\n this.isMenuOpen\n );\n }),\n take(1)\n )\n .subscribe(() => {\n this.closeMenu();\n });\n\n // add subscription to menu 'close' event\n if (this._menuCloseSubscription) {\n this._menuCloseSubscription.unsubscribe();\n }\n this._menuCloseSubscription = this._menu.close.subscribe((method: MenuCloseMethod) => {\n this._destroyMenu();\n // Need to close parent menu if closing of menu was done by terminating action\n if (this._parentMenu && (method === 'keyboard' || method === 'mouse')) {\n this._parentMenu.closeMenu(method);\n }\n });\n\n // add subscription to parent menu 'close' event\n if (this._parentMenu) {\n if (this._parentMenuCloseSubscription) {\n this._parentMenuCloseSubscription.unsubscribe();\n }\n this._parentMenuCloseSubscription = this._parentMenu.close.subscribe(() => {\n this.closeMenu();\n });\n }\n\n // set focus to menu\n this._menu.focusOnFirstItem();\n\n this._isMenuOpen = true;\n }\n\n /**\n * @hidden\n * Close associated menu.\n */\n closeMenu(): void {\n this._menu.closeMenu();\n }\n\n /**\n * @hidden\n * destroy associated menu.\n */\n private _destroyMenu(): void {\n if (this._menuItem) {\n this._menuItem.isSelected = false;\n }\n if (!this._overlayRef || !this._isMenuOpen) {\n return;\n }\n if (this._menuItem) {\n this._menuItem.focus();\n } else {\n this._element.nativeElement.focus();\n }\n this._overlayRef.detach();\n this._isMenuOpen = false;\n }\n\n /** @hidden */\n private _getOverlayConfig(): OverlayConfig {\n const positions = this._getPositions();\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withPositions(positions);\n\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n const overlayConfig = new OverlayConfig({\n positionStrategy,\n scrollStrategy,\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n return overlayConfig;\n }\n\n /** @hidden */\n private _getPositions(): ConnectedPosition[] {\n let positions: ConnectedPosition[] = [];\n const offsetYPosition = 0;\n const offsetXPosition = 0;\n const subMenuXPadding = 4; // horizontal padding of 0.25rem(4px) is needed for sub-menu\n const subMenuYPadding = 4; // vertical padding of 0.25rem(4px) is needed for sub-menu\n\n if (this._isMenuItem()) {\n if (this._menu._cascadesLeft()) {\n positions = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: subMenuXPadding,\n offsetY: subMenuYPadding\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: subMenuXPadding,\n offsetY: -subMenuYPadding\n }\n ];\n } else {\n positions = [\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: -subMenuXPadding,\n offsetY: subMenuYPadding\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: -subMenuXPadding,\n offsetY: -subMenuYPadding\n }\n ];\n }\n } else {\n if (this._menu._cascadesLeft()) {\n positions = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: offsetYPosition,\n offsetX: offsetXPosition\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -offsetYPosition,\n offsetX: offsetXPosition\n }\n ];\n } else {\n positions = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: offsetYPosition,\n offsetX: -offsetXPosition\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -offsetYPosition,\n offsetX: -offsetXPosition\n }\n ];\n }\n }\n\n return positions;\n }\n\n /** @hidden */\n private _isMenuItem(): boolean {\n return !!(this._parentMenu && this._menuItem);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\n\nimport { MenuComponent } from './menu.component';\nimport { MenuItemComponent } from './menu-item.component';\nimport { MenuTriggerDirective } from './menu-trigger.directive';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, BidiModule, ScrollingModule, PipeModule, ContentDensityModule],\n declarations: [MenuComponent, MenuItemComponent, MenuTriggerDirective],\n exports: [MenuComponent, MenuItemComponent, MenuTriggerDirective, ContentDensityModule]\n})\nexport class PlatformMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i2.MenuItemComponent","i3.MenuComponent"],"mappings":"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"}
|