@fundamental-ngx/core 0.34.3-rc.4 → 0.34.3-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/date-picker/package.json +1 -1
  16. package/datetime/package.json +1 -1
  17. package/datetime-picker/package.json +1 -1
  18. package/dialog/package.json +1 -1
  19. package/dynamic-page/package.json +1 -1
  20. package/dynamic-side-content/package.json +1 -1
  21. package/esm2020/popover/popover-container/popover-container.directive.mjs +36 -0
  22. package/esm2020/popover/popover-service/popover.service.mjs +12 -3
  23. package/esm2020/popover/popover.module.mjs +10 -5
  24. package/esm2020/popover/public_api.mjs +2 -1
  25. package/facets/package.json +1 -1
  26. package/feed-input/package.json +1 -1
  27. package/feed-list-item/package.json +1 -1
  28. package/fesm2015/fundamental-ngx-core-popover.mjs +51 -8
  29. package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
  30. package/fesm2020/fundamental-ngx-core-popover.mjs +50 -8
  31. package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
  32. package/file-uploader/package.json +1 -1
  33. package/fixed-card-layout/package.json +1 -1
  34. package/flexible-column-layout/package.json +1 -1
  35. package/form/package.json +1 -1
  36. package/formatted-text/package.json +1 -1
  37. package/grid-list/package.json +1 -1
  38. package/icon/package.json +1 -1
  39. package/illustrated-message/package.json +1 -1
  40. package/infinite-scroll/package.json +1 -1
  41. package/info-label/package.json +1 -1
  42. package/inline-help/package.json +1 -1
  43. package/input-group/package.json +1 -1
  44. package/layout-grid/package.json +1 -1
  45. package/layout-panel/package.json +1 -1
  46. package/link/package.json +1 -1
  47. package/list/package.json +1 -1
  48. package/menu/package.json +1 -1
  49. package/message-box/package.json +1 -1
  50. package/message-strip/package.json +1 -1
  51. package/message-toast/package.json +1 -1
  52. package/micro-process-flow/package.json +1 -1
  53. package/mobile-mode/package.json +1 -1
  54. package/multi-input/package.json +1 -1
  55. package/nested-list/package.json +1 -1
  56. package/notification/package.json +1 -1
  57. package/object-identifier/package.json +1 -1
  58. package/object-marker/package.json +1 -1
  59. package/object-number/package.json +1 -1
  60. package/object-status/package.json +1 -1
  61. package/package.json +2 -2
  62. package/pagination/package.json +1 -1
  63. package/panel/package.json +1 -1
  64. package/popover/esm2020/popover-container/popover-container.directive.mjs +36 -0
  65. package/popover/esm2020/popover-service/popover.service.mjs +12 -3
  66. package/popover/esm2020/popover.module.mjs +10 -5
  67. package/popover/esm2020/public_api.mjs +2 -1
  68. package/popover/fesm2015/fundamental-ngx-core-popover.mjs +51 -8
  69. package/popover/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
  70. package/popover/fesm2020/fundamental-ngx-core-popover.mjs +50 -8
  71. package/popover/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
  72. package/popover/package.json +1 -1
  73. package/popover/popover-container/popover-container.directive.d.ts +17 -0
  74. package/popover/popover-service/popover.service.d.ts +4 -2
  75. package/popover/popover.module.d.ts +5 -4
  76. package/popover/public_api.d.ts +1 -0
  77. package/product-switch/package.json +1 -1
  78. package/progress-indicator/package.json +1 -1
  79. package/quick-view/package.json +1 -1
  80. package/radio/package.json +1 -1
  81. package/rating-indicator/package.json +1 -1
  82. package/resizable-card-layout/package.json +1 -1
  83. package/schematics/ng-add/index.js +1 -1
  84. package/scroll-spy/package.json +1 -1
  85. package/scrollbar/package.json +1 -1
  86. package/segmented-button/package.json +1 -1
  87. package/select/package.json +1 -1
  88. package/shared/package.json +1 -1
  89. package/shellbar/package.json +1 -1
  90. package/side-navigation/package.json +1 -1
  91. package/slider/package.json +1 -1
  92. package/split-button/package.json +1 -1
  93. package/splitter/package.json +1 -1
  94. package/status-indicator/package.json +1 -1
  95. package/step-input/package.json +1 -1
  96. package/switch/package.json +1 -1
  97. package/table/package.json +1 -1
  98. package/tabs/package.json +1 -1
  99. package/text/package.json +1 -1
  100. package/tile/package.json +1 -1
  101. package/time/package.json +1 -1
  102. package/time-picker/package.json +1 -1
  103. package/timeline/package.json +1 -1
  104. package/title/package.json +1 -1
  105. package/token/package.json +1 -1
  106. package/toolbar/package.json +1 -1
  107. package/tree/package.json +1 -1
  108. package/upload-collection/package.json +1 -1
  109. package/utils/package.json +1 -1
  110. package/vertical-navigation/package.json +1 -1
  111. package/wizard/package.json +1 -1
@@ -6,7 +6,7 @@ import { ESCAPE, SPACE, ENTER, DOWN_ARROW } from '@angular/cdk/keycodes';
6
6
  import { Subject, merge, Subscription } from 'rxjs';
7
7
  import { PopoverPosition, PopoverFlippedXDirection, ARROW_SIZE, GetDefaultPosition } from '@fundamental-ngx/core/shared';
8
8
  import * as i2 from '@fundamental-ngx/core/utils';
9
- import { KeyUtil, DynamicComponentService } from '@fundamental-ngx/core/utils';
9
+ import { KeyUtil, resizeObservable, DynamicComponentService } from '@fundamental-ngx/core/utils';
10
10
  import * as i2$1 from '@angular/cdk/a11y';
11
11
  import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
12
12
  import { NotificationGroupComponent } from '@fundamental-ngx/core/notification';
@@ -318,15 +318,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
318
318
  }]
319
319
  } });
320
320
 
321
+ class PopoverContainerDirective {
322
+ constructor(_elmRef) {
323
+ this._elmRef = _elmRef;
324
+ /** Subject which emits when popover position refresh is required. */
325
+ this.refreshPosition$ = new Subject();
326
+ /** @hidden */
327
+ this._destroy$ = new Subject();
328
+ }
329
+ /** @hidden */
330
+ ngOnInit() {
331
+ resizeObservable(this._elmRef.nativeElement)
332
+ .pipe(takeUntil(this._destroy$))
333
+ .subscribe(() => {
334
+ this.refreshPosition$.next();
335
+ });
336
+ }
337
+ /** @hidden */
338
+ ngOnDestroy() {
339
+ this._destroy$.next();
340
+ this._destroy$.complete();
341
+ }
342
+ }
343
+ PopoverContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
344
+ PopoverContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: PopoverContainerDirective, selector: "[fdPopoverContainer]", ngImport: i0 });
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverContainerDirective, decorators: [{
346
+ type: Directive,
347
+ args: [{
348
+ selector: '[fdPopoverContainer]'
349
+ }]
350
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
351
+
321
352
  const MAX_BODY_SIZE = 99999999;
322
353
  class PopoverService extends BasePopoverClass {
323
- constructor(_overlay, _renderer, _viewportRuler, _injector, _rtlService) {
354
+ constructor(_overlay, _renderer, _viewportRuler, _injector, _rtlService, _popoverContainer) {
324
355
  super();
325
356
  this._overlay = _overlay;
326
357
  this._renderer = _renderer;
327
358
  this._viewportRuler = _viewportRuler;
328
359
  this._injector = _injector;
329
360
  this._rtlService = _rtlService;
361
+ this._popoverContainer = _popoverContainer;
330
362
  /** @hidden */
331
363
  this._onLoad = new Subject();
332
364
  /** @hidden */
@@ -348,6 +380,7 @@ class PopoverService extends BasePopoverClass {
348
380
  * PopoverComponent and PopoverComponent instance
349
381
  */
350
382
  initialise(triggerElement, config, templateData) {
383
+ var _a;
351
384
  this._templateData = templateData;
352
385
  this._triggerElement = triggerElement;
353
386
  if (config) {
@@ -357,6 +390,10 @@ class PopoverService extends BasePopoverClass {
357
390
  if (this.isOpen) {
358
391
  this.open();
359
392
  }
393
+ // If wrapper container height changes outside, refresh popover position.
394
+ (_a = this._popoverContainer) === null || _a === void 0 ? void 0 : _a.refreshPosition$.pipe(takeUntil(this._refresh$)).subscribe(() => {
395
+ this.refreshPosition();
396
+ });
360
397
  }
361
398
  /** Closes the popover. */
362
399
  close() {
@@ -640,13 +677,15 @@ class PopoverService extends BasePopoverClass {
640
677
  }
641
678
  }
642
679
  }
643
- PopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverService, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: i1.ViewportRuler }, { token: i0.Injector }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
680
+ PopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverService, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: i1.ViewportRuler }, { token: i0.Injector }, { token: i2.RtlService, optional: true }, { token: PopoverContainerDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
644
681
  PopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverService });
645
682
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverService, decorators: [{
646
683
  type: Injectable
647
684
  }], ctorParameters: function () {
648
685
  return [{ type: i1.Overlay }, { type: i0.Renderer2 }, { type: i1.ViewportRuler }, { type: i0.Injector }, { type: i2.RtlService, decorators: [{
649
686
  type: Optional
687
+ }] }, { type: PopoverContainerDirective, decorators: [{
688
+ type: Optional
650
689
  }] }];
651
690
  } });
652
691
 
@@ -1035,12 +1074,14 @@ PopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
1035
1074
  PopoverBodyHeaderDirective,
1036
1075
  PopoverBodyFooterDirective,
1037
1076
  PopoverComponent,
1038
- PopoverTriggerDirective], imports: [CommonModule, OverlayModule, A11yModule], exports: [PopoverControlComponent,
1077
+ PopoverTriggerDirective,
1078
+ PopoverContainerDirective], imports: [CommonModule, OverlayModule, A11yModule], exports: [PopoverControlComponent,
1039
1079
  PopoverBodyComponent,
1040
1080
  PopoverBodyHeaderDirective,
1041
1081
  PopoverBodyFooterDirective,
1042
1082
  PopoverComponent,
1043
- PopoverTriggerDirective] });
1083
+ PopoverTriggerDirective,
1084
+ PopoverContainerDirective] });
1044
1085
  PopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverModule, imports: [[CommonModule, OverlayModule, A11yModule]] });
1045
1086
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverModule, decorators: [{
1046
1087
  type: NgModule,
@@ -1051,7 +1092,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
1051
1092
  PopoverBodyHeaderDirective,
1052
1093
  PopoverBodyFooterDirective,
1053
1094
  PopoverComponent,
1054
- PopoverTriggerDirective
1095
+ PopoverTriggerDirective,
1096
+ PopoverContainerDirective
1055
1097
  ],
1056
1098
  imports: [CommonModule, OverlayModule, A11yModule],
1057
1099
  exports: [
@@ -1060,7 +1102,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
1060
1102
  PopoverBodyHeaderDirective,
1061
1103
  PopoverBodyFooterDirective,
1062
1104
  PopoverComponent,
1063
- PopoverTriggerDirective
1105
+ PopoverTriggerDirective,
1106
+ PopoverContainerDirective
1064
1107
  ],
1065
1108
  entryComponents: [PopoverBodyComponent]
1066
1109
  }]
@@ -1070,5 +1113,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
1070
1113
  * Generated bundle index. Do not edit.
1071
1114
  */
1072
1115
 
1073
- export { BasePopoverClass, POPOVER_COMPONENT, PopoverBodyComponent, PopoverBodyFooterDirective, PopoverBodyHeaderDirective, PopoverComponent, PopoverControlComponent, PopoverMobileComponent, PopoverMobileModule, PopoverModule, PopoverService, PopoverTriggerDirective, SELECT_CLASS_NAMES };
1116
+ export { BasePopoverClass, POPOVER_COMPONENT, PopoverBodyComponent, PopoverBodyFooterDirective, PopoverBodyHeaderDirective, PopoverComponent, PopoverContainerDirective, PopoverControlComponent, PopoverMobileComponent, PopoverMobileModule, PopoverModule, PopoverService, PopoverTriggerDirective, SELECT_CLASS_NAMES };
1074
1117
  //# sourceMappingURL=fundamental-ngx-core-popover.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-popover.mjs","sources":["../../../../libs/core/src/lib/popover/popover-control/popover-control.component.ts","../../../../libs/core/src/lib/popover/popover-control/popover-control.component.html","../../../../libs/core/src/lib/popover/popover-body/popover-body.component.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body.component.html","../../../../libs/core/src/lib/popover/popover-body/popover-body-directives/popover-body-header.directive.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body-directives/popover-body-footer.directive.ts","../../../../libs/core/src/lib/popover/base/base-popover.class.ts","../../../../libs/core/src/lib/popover/popover-service/popover.service.ts","../../../../libs/core/src/lib/popover/popover.interface.ts","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.component.ts","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.component.html","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.module.ts","../../../../libs/core/src/lib/popover/popover.component.ts","../../../../libs/core/src/lib/popover/popover.component.html","../../../../libs/core/src/lib/popover/popover-trigger.directive.ts","../../../../libs/core/src/lib/popover/popover.module.ts","../../../../libs/core/src/lib/popover/fundamental-ngx-core-popover.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component used to enforce a certain layout for the popover.\n * ```html\n * <fd-popover>\n * <fd-popover-control>Control Element</fd-popover-control>\n * <fd-popover-body>Popover Body</fd-popover-body>\n * </fd-popover>\n * ```\n */\n@Component({\n selector: 'fd-popover-control',\n templateUrl: './popover-control.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PopoverControlComponent {\n /** @hidden */\n constructor(public elRef: ElementRef) {}\n\n /** @hidden */\n makeTabbable(): void {\n const elemChild = this.elRef.nativeElement.children[0];\n if (elemChild && elemChild.getAttribute('tabindex') !== '-1') {\n elemChild.tabIndex = '0';\n }\n }\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostListener,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { ESCAPE } from '@angular/cdk/keycodes';\n\nimport { Subject } from 'rxjs';\n\nimport { ARROW_SIZE, ArrowPosition } from '@fundamental-ngx/core/shared';\nimport { PopoverFlippedXDirection } from '@fundamental-ngx/core/shared';\nimport { ContentDensityService, KeyUtil } from '@fundamental-ngx/core/utils';\nimport { PopoverPosition } from '@fundamental-ngx/core/shared';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NotificationGroupComponent } from '@fundamental-ngx/core/notification';\n\n/**\n * A component used to enforce a certain layout for the popover.\n * ```html\n * <fd-popover>\n * <fd-popover-control>Control Element</fd-popover-control>\n * <fd-popover-body>Popover Body</fd-popover-body>\n * </fd-popover>\n * ```\n */\n@Component({\n selector: 'fd-popover-body',\n templateUrl: './popover-body.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./popover-body.component.scss']\n})\nexport class PopoverBodyComponent {\n /** @hidden */\n @ViewChild(CdkTrapFocus)\n _cdkTrapFocus: CdkTrapFocus;\n\n /** @hidden */\n @ContentChild(NotificationGroupComponent)\n notificationGroup: NotificationGroupComponent;\n\n /** Whether the popover should have an arrow. */\n _noArrow = true;\n\n /** Whether the popover container needs an extra class for styling. */\n _additionalBodyClass: string;\n\n /** Whether the popover should be focusTrapped. */\n _focusTrapped = false;\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 _focusAutoCapture = false;\n\n /** @hidden Property bind to popover's body */\n _popoverBodyWidth: number;\n\n /** @hidden Property bind to popover's body */\n _popoverBodyMinWidth: number;\n\n /** @hidden Property bind to popover's body */\n _maxWidth: number;\n\n /** @hidden Property bind to popover's body */\n _closeOnEscapeKey = false;\n\n /** Classes added to arrow element */\n _arrowClasses: string[] = [];\n\n /** Additional style to put margin into body component, to give a place for arrow */\n _marginStyle: string = null;\n\n /** @hidden text rendered inside popover's body */\n text: string = null;\n\n /** @hidden template rendered inside popover's body */\n _templateToDisplay: TemplateRef<any>;\n\n /** Close event from popover body */\n onClose = new Subject<void>();\n\n /** @hidden */\n get _isCompact(): boolean {\n return this._contentDensityService?.contentDensity.value === 'compact';\n }\n\n /** Handler escape keydown */\n @HostListener('keyup', ['$event'])\n bodyKeyupHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, ESCAPE) && this._closeOnEscapeKey) {\n // In case if popover belongs to the element inside dialog\n event.stopPropagation();\n this.onClose.next();\n }\n }\n\n constructor(\n readonly _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _renderer2: Renderer2,\n @Optional() private _contentDensityService: ContentDensityService\n ) {}\n\n /** @hidden */\n _setArrowStyles(position: ConnectionPositionPair, rtl: 'rtl' | 'ltr'): void {\n this._arrowClasses = [];\n\n const arrowDirection = PopoverPosition.getArrowPosition(position, rtl === 'rtl');\n this._arrowClasses.push(`fd-popover__arrow--${arrowDirection}`);\n\n if (arrowDirection === 'top' || arrowDirection === 'bottom') {\n let _position: string = position.overlayX;\n if (rtl === 'rtl') {\n _position = PopoverFlippedXDirection[_position];\n }\n this._arrowClasses.push(`fd-popover__arrow-x--${_position}`);\n } else if (arrowDirection === 'start' || arrowDirection === 'end') {\n this._arrowClasses.push(`fd-popover__arrow-y--${position.overlayY}`);\n }\n\n this._removeOldMarginsStyle();\n this._addMarginStyle(arrowDirection);\n\n this.detectChanges();\n }\n\n /** @hidden */\n detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** @hidden */\n _focusFirstTabbableElement(): void {\n if (this._focusAutoCapture) {\n this._cdkTrapFocus.focusTrap.focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _addMarginStyle(arrowDirection: ArrowPosition): void {\n this._renderer2.setStyle(\n this._elementRef.nativeElement,\n PopoverPosition.getMarginDirection(arrowDirection),\n ARROW_SIZE\n );\n }\n\n /** @hidden */\n private _removeOldMarginsStyle(): void {\n const margins = ['margin-top', 'margin-right', 'margin-bottom', 'margin-left'];\n margins.forEach((margin) => this._renderer2.removeStyle(this._elementRef.nativeElement, margin));\n }\n}\n","<div\n class=\"fd-popover__popper\"\n [class.fd-popover__popper--no-arrow]=\"_noArrow\"\n [class.fd-popover__popper--compact]=\"_isCompact\"\n [class]=\"_additionalBodyClass\"\n [cdkTrapFocus]=\"_focusTrapped\"\n [style]=\"_marginStyle\"\n [style.max-width.px]=\"_maxWidth\"\n [style.min-width.px]=\"_popoverBodyMinWidth\"\n [style.width.px]=\"_popoverBodyWidth\"\n>\n <ng-content select=\"[fd-popover-body-header]\"></ng-content>\n\n <ng-content select=\"[fd-popover-body-subheader]\"></ng-content>\n\n <ng-content></ng-content>\n\n {{ text }}\n\n <ng-container *ngTemplateOutlet=\"_templateToDisplay\"></ng-container>\n\n <ng-content select=\"[fd-popover-body-footer]\"></ng-content>\n\n <span class=\"fd-popover__arrow\" [class]=\"_arrowClasses\" *ngIf=\"!_noArrow\"></span>\n</div>\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBodyHeader], [fd-popover-body-header]'\n})\nexport class PopoverBodyHeaderDirective {\n /** @hidden */\n @HostBinding('class.fd-popover__body-header')\n fdPopoverBodyHeaderClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBodyFooter], [fd-popover-body-footer]'\n})\nexport class PopoverBodyFooterDirective {\n /** @hidden */\n @HostBinding('class.fd-popover__body-footer')\n fdPopoverBodyFooterClass = true;\n}\n","import { Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\nimport { Placement, PopoverFillMode } from '@fundamental-ngx/core/shared';\n\n@Directive()\nexport class BasePopoverClass {\n @Input()\n /** Whether to close the popover on router navigation start. */\n closeOnNavigation = true;\n\n /** Whether the popover is disabled. */\n @Input()\n @HostBinding('class.fd-popover-custom--disabled')\n disabled = false;\n\n /** Maximum width of popover body in px, prevents from overextending body by `fillControlMode` */\n @Input()\n maxWidth: number = null;\n\n /** Whether the popover should have an arrow. */\n @Input()\n noArrow = true;\n\n /** Whether the popover container needs an extra class for styling. */\n @Input()\n additionalBodyClass: string = null;\n\n /** Whether the popover container needs an extra class for styling. */\n @Input()\n additionalTriggerClass: string = null;\n\n /** Whether the popover should close when the escape key is pressed. */\n @Input()\n closeOnEscapeKey = true;\n\n /**\n * The placement of the popover.\n * It can be one of:\n * top, top-start, top-end, bottom, bottom-start, bottom-end,\n * right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = null;\n\n /** The trigger events that will open/close the popover.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp). */\n @Input()\n triggers: string[] = ['click'];\n\n /** Whether the popover is open. Can be used through two-way binding. */\n @Input()\n isOpen = false;\n\n /** Whether the popover should close when a click is made outside its boundaries. */\n @Input()\n closeOnOutsideClick = true;\n\n /** Whether the popover should be focusTrapped. */\n @Input()\n focusTrapped = false;\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 = false;\n\n /**\n * Scroll strategy, there are 4 accepted\n * - CloseScrollStrategy\n * - NoopScrollStrategy\n * - BlockScrollStrategy\n * - RepositionScrollStrategy ( default )\n */\n @Input()\n scrollStrategy: ScrollStrategy = null;\n\n /**\n * List of positions options for overlay defined by angular CDK.\n * Positions will be taken in order, same like on array. If first position provided doesn't fit to window,\n * another will be used\n * More information can be found in https://material.angular.io/cdk/overlay/api\n */\n @Input()\n cdkPositions: ConnectedPosition[] = null;\n\n /**\n * Preset options for the popover body width.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * Leave blank for no effect.\n */\n @Input()\n fillControlMode: PopoverFillMode = null;\n\n /** The element to which the overlay is attached. By default it is body */\n @Input()\n appendTo: ElementRef = null;\n\n /** Whether position shouldn't change, when popover approach the corner of page */\n @Input()\n fixedPosition = false;\n\n /** @deprecated */\n @Input()\n options;\n\n /** @deprecated */\n @Input()\n addContainerClass;\n\n /** @deprecated */\n @Input()\n additionalClasses;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n}\n","import { ElementRef, Injectable, Injector, Optional, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ViewportRuler,\n ConnectedOverlayPositionChange\n} from '@angular/cdk/overlay';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, startWith, takeUntil } from 'rxjs/operators';\n\nimport { RtlService } from '@fundamental-ngx/core/utils';\nimport { GetDefaultPosition, PopoverPosition } from '@fundamental-ngx/core/shared';\n\nimport { BasePopoverClass } from '../base/base-popover.class';\nimport { PopoverBodyComponent } from '../popover-body/popover-body.component';\n\nconst MAX_BODY_SIZE = 99999999;\n\nexport interface PopoverTemplate {\n container: ViewContainerRef;\n popoverBody: PopoverBodyComponent;\n template: TemplateRef<any>;\n}\n\n@Injectable()\nexport class PopoverService extends BasePopoverClass {\n /** String content displayed inside popover body */\n stringContent: string;\n\n /** Template content displayed inside popover body */\n templateContent: TemplateRef<any>;\n\n /** @hidden */\n _onLoad = new Subject<ElementRef>();\n\n /** @hidden */\n private _eventRef: (() => void)[] = [];\n\n /** @hidden */\n private _overlayRef: OverlayRef;\n\n /** @hidden */\n private _refresh$: Observable<boolean | void>;\n\n /** @hidden */\n private readonly _placementRefresh$ = new Subject<void>();\n\n /** @hidden */\n private _popoverBody: PopoverBodyComponent;\n\n /** @hidden */\n private _triggerElement: ElementRef;\n\n /** @hidden */\n private _lastActiveElement: HTMLElement;\n\n /** @hidden */\n private _templateData: PopoverTemplate;\n\n /** @hidden */\n private _prevTrigger: string;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n constructor(\n private _overlay: Overlay,\n private _renderer: Renderer2,\n private _viewportRuler: ViewportRuler,\n private _injector: Injector,\n @Optional() private _rtlService: RtlService\n ) {\n super();\n\n /** Merge observables - close or destroy */\n this._refresh$ = merge(this.isOpenChange, this._onDestroy$);\n }\n\n /**\n * Method initialising the popover service - should be called, after view is initialised, params:\n * - triggerElement - element, which is equivalent for cdkOverlayOrigin, or fd-popover-control,\n * by default to this element the popover body will lbe appended and events on this element will trigger\n * popover's toggle\n * - config - configuration object - in this case the intention is to use inheritance of BasePopoverClass in component\n * - templateData - in case of having already PopoverBodyComponent, there is way to pass container, template containing\n * PopoverComponent and PopoverComponent instance\n */\n initialise(triggerElement: ElementRef, config?: BasePopoverClass, templateData?: PopoverTemplate): void {\n this._templateData = templateData;\n this._triggerElement = triggerElement;\n\n if (config) {\n this.refreshConfiguration(config);\n }\n\n this._refreshTriggerListeners();\n\n if (this.isOpen) {\n this.open();\n }\n }\n\n /** Closes the popover. */\n close(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n\n const prevState = this.isOpen;\n this.isOpen = false;\n if (prevState !== this.isOpen) {\n this.isOpenChange.emit(this.isOpen);\n }\n\n this._focusLastActiveElementBeforeOpen();\n }\n }\n\n /** Opens the popover. */\n open(): void {\n if ((!this._overlayRef || !this._overlayRef.hasAttached()) && !this.disabled && this._triggerElement) {\n const position = this._getPositionStrategy();\n this._overlayRef = this._overlay.create(this._getOverlayConfig(position));\n\n if (this._templateData) {\n this._attachTemplate();\n } else {\n this._attachBodyComponent();\n }\n\n this._listenForPositionChange(position.positionChanges);\n\n if (this.fillControlMode) {\n this._listenOnResize();\n }\n\n const prevState = this.isOpen;\n this.isOpen = true;\n if (prevState !== this.isOpen) {\n this.isOpenChange.emit(this.isOpen);\n }\n\n this._detectChanges();\n\n this._listenOnClose();\n this._listenOnOutClicks();\n this._focusFirstTabbableElement();\n this._onLoad.next(this._getPopoverBody()._elementRef);\n }\n }\n\n /** method updating template or text inside rendered PopoverBody */\n updateContent(stringContent: string, templateContent: TemplateRef<any>): void {\n this.stringContent = stringContent;\n this.templateContent = templateContent;\n if (this._getPopoverBody()) {\n this._passVariablesToBody();\n }\n }\n\n /** Toggles the popover open state */\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Method called to change position of popover,\n * recommended to be used only when popover is opened, otherwise change position or cdkPlacement\n */\n applyNewPosition(positions: ConnectedPosition[]): void {\n const refPosition = this._getPositionStrategy(positions);\n this._listenForPositionChange(refPosition.positionChanges);\n this._overlayRef.updatePositionStrategy(refPosition);\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n if (this._overlayRef) {\n this._overlayRef.updatePosition();\n }\n }\n\n /** Equivalent for ngOnDestroy method, whether component is destroyed, this method should be called */\n onDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._removeTriggerListeners();\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n }\n\n /**\n * Method that sets configuration/options, it detects if there is something changed and overwrites them\n */\n refreshConfiguration(config: BasePopoverClass): void {\n const onlyChanged = Object.keys(new BasePopoverClass()).filter((key) => this[key] !== config[key]);\n\n if (onlyChanged.includes('isOpen')) {\n if (config.isOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n\n /**\n * This overriding is dangerous thing and leads to unexpected behavior\n * We have to avoid this.\n */\n onlyChanged.forEach((key) => (this[key] = config[key]));\n\n if (onlyChanged.includes('triggers')) {\n this._refreshTriggerListeners();\n }\n }\n\n /**\n * This method is intended to be called in order\n * to postpone the main functionality but be able\n * to enable it back in the future by initialise()\n */\n deactivate(): void {\n this._removeTriggerListeners();\n }\n\n /** Refresh listeners on trigger element events */\n _refreshTriggerListeners(): void {\n if (!this._triggerElement) {\n return;\n }\n\n this._removeTriggerListeners();\n\n if (this.triggers?.length) {\n this.triggers.forEach((trigger) => {\n this._eventRef.push(\n this._renderer.listen(this._triggerElement.nativeElement, trigger, () => {\n this._isToggle(trigger);\n })\n );\n });\n }\n }\n\n /** @hidden */\n private _isToggle(trigger: string): void {\n // prevent unexpected toggling when it triggers the same event\n if (this._prevTrigger !== trigger || this.triggers?.length <= 1) {\n this.toggle();\n }\n\n this._prevTrigger = trigger;\n }\n\n /** @hidden */\n private _getOverlayConfig(position: FlexibleConnectedPositionStrategy): OverlayConfig {\n const direction = this._getDirection();\n\n return new OverlayConfig({\n direction,\n disposeOnNavigation: this.closeOnNavigation,\n positionStrategy: position,\n scrollStrategy: this.scrollStrategy || this._overlay.scrollStrategies.reposition()\n });\n }\n\n /** @hidden */\n private _listenOnResize(): void {\n this._viewportRuler\n .change(15)\n .pipe(takeUntil(this._refresh$), startWith(1))\n .subscribe(() => this._applyWidthOverlay());\n }\n\n /** @hidden */\n private _getDirection(): 'rtl' | 'ltr' {\n if (!this._rtlService) {\n return 'ltr';\n }\n\n return this._rtlService.rtl.getValue() ? 'rtl' : 'ltr';\n }\n\n /** @hidden */\n private _getPositionStrategy(forcedPositions?: ConnectedPosition[]): FlexibleConnectedPositionStrategy {\n let resultPosition = forcedPositions ? forcedPositions : this._getPositions();\n\n if (!this.fixedPosition) {\n resultPosition = resultPosition.concat(GetDefaultPosition(resultPosition));\n }\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this.appendTo || this._triggerElement)\n .withPositions(resultPosition)\n .withPush(false);\n }\n\n /** remove listeners from trigger element events */\n private _removeTriggerListeners(): void {\n this._eventRef.forEach((event) => event());\n this._eventRef = [];\n }\n\n /** Attach template containing popover body to overlay */\n private _attachTemplate(): void {\n this._passVariablesToBody();\n this._overlayRef.attach(new TemplatePortal(this._templateData.template, this._templateData.container));\n }\n\n /** Create PopoverBodyComponent and attach it into overlay */\n private _attachBodyComponent(): void {\n const overlay = this._overlayRef.attach(new ComponentPortal(PopoverBodyComponent, null, this._injector));\n this._popoverBody = overlay.instance;\n this._passVariablesToBody();\n }\n\n /** @hidden */\n private _listenForPositionChange(positionChange: Observable<ConnectedOverlayPositionChange>): void {\n this._placementRefresh$.next();\n positionChange\n .pipe(\n takeUntil(this._placementRefresh$),\n takeUntil(this._onDestroy$),\n filter(() => !this.noArrow && !!this._getPopoverBody()),\n distinctUntilChanged((previous, current) => previous.connectionPair === current.connectionPair)\n )\n .subscribe((event) => this._getPopoverBody()._setArrowStyles(event.connectionPair, this._getDirection()));\n }\n\n /** Subscribe to close events from CDK Overlay, to throw proper events, change values */\n private _listenOnClose(): void {\n const closeEvents$ = merge(this._overlayRef.detachments(), this._getPopoverBody().onClose);\n\n closeEvents$.pipe(takeUntil(this._refresh$)).subscribe(() => this.close());\n }\n\n /** Listener for click events */\n private _listenOnOutClicks(): void {\n const closeEvents$ = merge(this._overlayRef.backdropClick(), this._overlayRef._outsidePointerEvents);\n\n closeEvents$\n .pipe(\n filter((event) => this._shouldClose(event)),\n takeUntil(this._refresh$)\n )\n .subscribe(() => this.close());\n }\n\n /** @hidden */\n private _shouldClose(event: MouseEvent): boolean {\n return this.isOpen && this.closeOnOutsideClick && !this._triggerContainsTarget(event);\n }\n\n /** @hidden */\n private _getEventTarget(event: Event): EventTarget {\n return event.composedPath ? event.composedPath()[0] : event.target;\n }\n\n /** @hidden */\n private _triggerContainsTarget(event: Event): boolean {\n const triggerElement = this._triggerElement.nativeElement;\n return triggerElement.contains(this._getEventTarget(event));\n }\n\n /** @hidden */\n private _getPositions(): ConnectedPosition[] {\n if (this.cdkPositions) {\n return this.cdkPositions;\n }\n\n if (this.placement) {\n return [PopoverPosition.getCdkPlacement(this.placement, this._getDirection())];\n }\n\n return [];\n }\n\n /** @hidden */\n private _applyWidthOverlay(): void {\n const maxWidthLimit = this.maxWidth ? this.maxWidth : MAX_BODY_SIZE;\n const width = Math.min(this._getTriggerWidth(), maxWidthLimit);\n if (this.fillControlMode === 'at-least') {\n this._getPopoverBody()._popoverBodyMinWidth = width;\n } else if (this.fillControlMode === 'equal') {\n this._getPopoverBody()._popoverBodyWidth = width;\n }\n this._detectChanges();\n }\n\n /** @hidden */\n private _passVariablesToBody(): void {\n this._getPopoverBody().text = this.stringContent;\n this._getPopoverBody()._additionalBodyClass = this.additionalBodyClass;\n this._getPopoverBody()._focusTrapped = this.focusTrapped;\n this._getPopoverBody()._maxWidth = this.maxWidth;\n this._getPopoverBody()._noArrow = this.noArrow;\n this._getPopoverBody()._focusAutoCapture = this.focusAutoCapture;\n this._getPopoverBody()._templateToDisplay = this.templateContent;\n this._getPopoverBody()._closeOnEscapeKey = this.closeOnEscapeKey;\n this._detectChanges();\n }\n\n /** @hidden */\n private _getTriggerWidth(): number {\n return this._triggerElement.nativeElement.offsetWidth;\n }\n\n /** @hidden */\n private _getPopoverBody(): PopoverBodyComponent {\n return this._templateData?.popoverBody || this._popoverBody;\n }\n\n /** @hidden */\n private _detectChanges(): void {\n if (this._getPopoverBody()) {\n this._getPopoverBody().detectChanges();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(): void {\n if (this.focusAutoCapture) {\n this._lastActiveElement = <HTMLElement>document.activeElement;\n this._getPopoverBody()?._focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _focusLastActiveElementBeforeOpen(): void {\n if (this.focusAutoCapture && this._lastActiveElement) {\n this._lastActiveElement.focus();\n }\n }\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const POPOVER_COMPONENT = new InjectionToken<PopoverInterface>('PopoverInterface');\n\n/**\n * Popover Interface to have typing and avoid circular dependency between\n * PopoverComponent <==> PopoverMobileComponent\n */\nexport interface PopoverInterface extends MobileMode {\n dialogConfig: DialogConfig;\n isOpenChange: EventEmitter<boolean>;\n\n close(): void;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n MobileModeBase,\n MOBILE_MODE_CONFIG,\n MobileModeControl,\n MobileModeConfigToken\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { PopoverInterface, POPOVER_COMPONENT } from '../popover.interface';\nimport { PopoverChildContent } from '../popover-child-content.interface';\n\nlet mobilePopoverUniqueId = 0;\n\n@Component({\n selector: 'fd-popover-mobile',\n templateUrl: './popover-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class PopoverMobileComponent extends MobileModeBase<PopoverInterface> implements OnInit, OnDestroy {\n /** @hidden\n * from mobile class can not prefix _,\n * to avoid build issues\n */\n childContent: PopoverChildContent = undefined;\n\n /** Current popover title */\n title: string;\n\n /** Dialog body content */\n viewBody: TemplateRef<any>;\n /** Dialog footer content */\n viewFooter: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('dialogTemplate')\n _dialogTemplate: TemplateRef<any>;\n\n /** @hidden */\n readonly id = 'fd-popover-mobile-' + mobilePopoverUniqueId++;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n get titleId(): string {\n return this.id + '-title';\n }\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n private _changeDetectorref: ChangeDetectorRef,\n @Inject(POPOVER_COMPONENT) _popoverComponent: PopoverInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, _popoverComponent, MobileModeControl.POPOVER, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnPopoverOpenChange();\n\n this.title = this.mobileConfig.title || '';\n this.viewBody = this.childContent.popoverBodyContentTemplate;\n this.viewFooter = this.childContent.popoverFooterContentTemplate;\n\n this._changeDetectorref.markForCheck();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.dialogRef?.close();\n super.onDestroy();\n this._subscriptions.unsubscribe();\n }\n\n /** Closes the Dialog and Popover component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** @hidden Opens/closes the Dialog based on Popover isOpenChange events */\n private _listenOnPopoverOpenChange(): void {\n this._subscriptions.add(\n this._component.isOpenChange.pipe(takeUntil(this._onDestroy$)).subscribe((isOpen) => {\n if (isOpen) {\n this._openDialog();\n } else {\n this.dialogRef.hide(true);\n }\n })\n );\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n this.dialogRef = this._dialogService.open(this._dialogTemplate, {\n ...this.dialogConfig,\n mobile: true,\n focusTrapped: true,\n verticalPadding: true,\n escKeyCloseable: false,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement,\n responsivePadding: true,\n ariaLabelledBy: this.titleId\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title [id]=\"titleId\">{{ title }}</h1>\n <button fd-dialog-close-button *ngIf=\"this.mobileConfig.hasCloseButton\" (click)=\"close()\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"viewBody\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngTemplateOutlet=\"viewFooter\"></ng-container>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { DynamicComponentService } from '@fundamental-ngx/core/utils';\nimport { PopoverMobileComponent } from './popover-mobile.component';\n\n@NgModule({\n declarations: [PopoverMobileComponent],\n imports: [CommonModule, DialogModule, ButtonModule],\n exports: [PopoverMobileComponent],\n providers: [DynamicComponentService],\n entryComponents: [PopoverMobileComponent]\n})\nexport class PopoverMobileModule {}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChild,\n ElementRef,\n HostListener,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { DOWN_ARROW, ENTER, SPACE } from '@angular/cdk/keycodes';\n\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/core/utils';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { BasePopoverClass } from './base/base-popover.class';\nimport { PopoverBodyComponent } from './popover-body/popover-body.component';\nimport { PopoverService } from './popover-service/popover.service';\nimport { PopoverControlComponent } from './popover-control/popover-control.component';\nimport { POPOVER_COMPONENT } from './popover.interface';\nimport { PopoverMobileComponent } from './popover-mobile/popover-mobile.component';\nimport { PopoverMobileModule } from './popover-mobile/popover-mobile.module';\nimport { PopoverChildContent } from './popover-child-content.interface';\n\nexport const SELECT_CLASS_NAMES = {\n selectControl: 'fd-select__control'\n};\n\nlet cdkPopoverUniqueId = 0;\n\n/**\n * The popover is a wrapping component that accepts a *control* as well as a *body*.\n * The control is what will trigger the opening of the actual popover, which is called the body.\n * By default, popovers are triggered by click. This can be customized through the *triggers* input.\n */\n@Component({\n selector: 'fd-popover',\n templateUrl: './popover.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [PopoverService],\n host: {\n class: 'fd-popover-custom',\n '[class.fd-popover-custom--mobile]': 'mobile',\n '[attr.id]': 'id'\n }\n})\nexport class PopoverComponent\n extends BasePopoverClass\n implements AfterViewInit, AfterContentInit, OnDestroy, OnChanges\n{\n /** Tooltip for popover */\n @Input()\n title: string;\n\n /** Reference to popover trigger element */\n @Input()\n trigger: ElementRef;\n\n /** Whether position shouldn't change, when popover approach the corner of page */\n @Input()\n fixedPosition = false;\n\n /** Id of the popover. If none is provided, one will be generated. */\n @Input()\n id: string = 'fd-popover-' + cdkPopoverUniqueId++;\n\n /** Whether the popover component should be displayed in mobile mode. */\n @Input()\n mobile = false;\n\n @Input()\n mobileConfig: MobileModeConfig = { hasCloseButton: true };\n\n /** @hidden */\n @ViewChild('templateRef', { read: TemplateRef })\n templateRef: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('container', { read: ViewContainerRef })\n container: ViewContainerRef;\n\n /** @hidden */\n @ViewChild(CdkOverlayOrigin)\n triggerOrigin: CdkOverlayOrigin;\n\n /** @hidden */\n @ContentChild(PopoverBodyComponent)\n popoverBody: PopoverBodyComponent;\n\n /** @hidden */\n @ContentChild(PopoverControlComponent)\n popoverControl: PopoverControlComponent;\n\n /** @hidden - template for Dialog body content */\n @ContentChild('popoverBodyContent')\n popoverBodyContentTemplate: TemplateRef<any>;\n\n /** @hidden - template for Dialog footer content */\n @ContentChild('popoverFooterContent')\n popoverFooterContentTemplate: TemplateRef<any>;\n\n /** @deprecated\n * Left for backward compatibility\n */\n directiveRef: any;\n\n /** @hidden */\n private _clickEventListener: () => void;\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<PopoverMobileComponent>;\n\n /** @hidden */\n constructor(\n private readonly _popoverService: PopoverService,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _rendered: Renderer2,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() private readonly _dynamicComponentService: DynamicComponentService\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (!this.mobile) {\n if (!this.popoverBody) {\n this._popoverService.templateContent = this.templateRef;\n }\n this._popoverService.initialise(\n this.trigger || this.triggerOrigin.elementRef,\n this,\n this.popoverBody\n ? {\n template: this.templateRef,\n container: this.container,\n popoverBody: this.popoverBody\n }\n : null\n );\n }\n\n this._setupView();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this.popoverBody && this.popoverBody.notificationGroup) {\n super.focusTrapped = true;\n super.focusAutoCapture = true;\n }\n if (this.popoverControl && this.triggers.includes('click')) {\n this.popoverControl.makeTabbable();\n }\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this._popoverService.refreshConfiguration(this);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n this._popoverService.onDestroy();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const activeElement = document.activeElement;\n if (\n // popoverControl will be undefined when popover is used from \"fdPopoverTrigger\"\n this.popoverControl?.elRef.nativeElement.children[0] === activeElement &&\n activeElement.tagName !== 'INPUT' &&\n activeElement.tagName !== 'TEXTAREA' &&\n !activeElement.classList.contains(SELECT_CLASS_NAMES.selectControl)\n ) {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n // prevent page scrolling on Space keydown\n event.preventDefault();\n this._popoverService.toggle();\n }\n }\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /** Opens the popover. */\n open(): void {\n this.isOpen = true;\n this._popoverService.open();\n this.isOpenChange.emit(this.isOpen);\n this._cdr.markForCheck();\n }\n\n /** Closes the popover. */\n close(): void {\n this.isOpen = false;\n this._popoverService.close();\n this.isOpenChange.emit(this.isOpen);\n this._cdr.markForCheck();\n }\n\n /**\n * Method called to change position of popover,\n * recommended to be used only when popover is opened, otherwise change position or cdkPlacement\n */\n applyNewPosition(positions: ConnectedPosition[]): void {\n this._popoverService.applyNewPosition(positions);\n }\n\n /** @deprecated\n * Left for backward compatibility\n */\n updatePopover(): void {\n this.refreshPosition();\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** Handler for alt + arrow down keydown */\n triggerKeyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && event.altKey && !this.disabled) {\n this.open();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** @hidden Select and instantiate popover view mode */\n private _setupView(): void {\n if (this.mobile) {\n this._setupMobileMode();\n }\n\n this._cdr.detectChanges();\n }\n\n /** @hidden Open Popover in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: POPOVER_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._mobileModeComponentRef = await this._dynamicComponentService.createDynamicModule(\n {\n popoverBodyContentTemplate: this.popoverBodyContentTemplate,\n popoverFooterContentTemplate: this.popoverFooterContentTemplate\n } as PopoverChildContent,\n PopoverMobileModule,\n PopoverMobileComponent,\n this._viewContainerRef,\n injector\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /** @hidden - Listen on popover trigger ref clicks */\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","<div\n *ngIf=\"!trigger\"\n cdkOverlayOrigin\n class=\"fd-popover__control\"\n [class]=\"additionalTriggerClass\"\n (keydown)=\"triggerKeyDownHandler($event)\"\n>\n <ng-content select=\"fd-popover-control\"></ng-content>\n</div>\n\n<ng-template #templateRef>\n <ng-content select=\"fd-popover-body\"></ng-content>\n\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container #container></ng-container>\n","import { Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { PopoverComponent } from './popover.component';\n\n@Directive({\n selector: '[fdPopoverTrigger], [fd-popover-trigger]'\n})\nexport class PopoverTriggerDirective implements OnDestroy {\n /** Set reference to Popover Component */\n @Input('fdPopoverTrigger')\n set popover(popover: PopoverComponent) {\n if (popover) {\n popover.trigger = this._elementRef;\n this._listenOnExpanded(popover);\n }\n this._setAriaAttributes(popover);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: boolean;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: string;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: boolean;\n\n /** @hidden */\n private _isExpandedSubscription: Subscription;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeExpandedListener();\n }\n\n /** @hidden */\n private _listenOnExpanded(popover: PopoverComponent): void {\n this._unsubscribeExpandedListener();\n if (popover) {\n this._isExpandedSubscription = popover.isOpenChange\n .pipe(startWith(popover.isOpen))\n .subscribe((isOpen) => (this.ariaExpanded = isOpen));\n }\n }\n\n /** @hidden */\n private _setAriaAttributes(popover: PopoverComponent): void {\n this.ariaHasPopup = !!popover;\n this.ariaControls = popover ? popover.id : null;\n }\n\n /** @hidden */\n private _unsubscribeExpandedListener(): void {\n if (this._isExpandedSubscription) {\n this._isExpandedSubscription.unsubscribe();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PopoverControlComponent } from './popover-control/popover-control.component';\nimport { PopoverBodyComponent } from './popover-body/popover-body.component';\nimport { PopoverBodyHeaderDirective } from './popover-body/popover-body-directives/popover-body-header.directive';\nimport { PopoverBodyFooterDirective } from './popover-body/popover-body-directives/popover-body-footer.directive';\n\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PopoverComponent } from './popover.component';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PopoverTriggerDirective } from './popover-trigger.directive';\n\n@NgModule({\n declarations: [\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyHeaderDirective,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverTriggerDirective\n ],\n imports: [CommonModule, OverlayModule, A11yModule],\n exports: [\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyHeaderDirective,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverTriggerDirective\n ],\n entryComponents: [PopoverBodyComponent]\n})\nexport class PopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-popover.mjs","sources":["../../../../libs/core/src/lib/popover/popover-control/popover-control.component.ts","../../../../libs/core/src/lib/popover/popover-control/popover-control.component.html","../../../../libs/core/src/lib/popover/popover-body/popover-body.component.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body.component.html","../../../../libs/core/src/lib/popover/popover-body/popover-body-directives/popover-body-header.directive.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body-directives/popover-body-footer.directive.ts","../../../../libs/core/src/lib/popover/base/base-popover.class.ts","../../../../libs/core/src/lib/popover/popover-container/popover-container.directive.ts","../../../../libs/core/src/lib/popover/popover-service/popover.service.ts","../../../../libs/core/src/lib/popover/popover.interface.ts","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.component.ts","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.component.html","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.module.ts","../../../../libs/core/src/lib/popover/popover.component.ts","../../../../libs/core/src/lib/popover/popover.component.html","../../../../libs/core/src/lib/popover/popover-trigger.directive.ts","../../../../libs/core/src/lib/popover/popover.module.ts","../../../../libs/core/src/lib/popover/fundamental-ngx-core-popover.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component used to enforce a certain layout for the popover.\n * ```html\n * <fd-popover>\n * <fd-popover-control>Control Element</fd-popover-control>\n * <fd-popover-body>Popover Body</fd-popover-body>\n * </fd-popover>\n * ```\n */\n@Component({\n selector: 'fd-popover-control',\n templateUrl: './popover-control.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PopoverControlComponent {\n /** @hidden */\n constructor(public elRef: ElementRef) {}\n\n /** @hidden */\n makeTabbable(): void {\n const elemChild = this.elRef.nativeElement.children[0];\n if (elemChild && elemChild.getAttribute('tabindex') !== '-1') {\n elemChild.tabIndex = '0';\n }\n }\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostListener,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { ESCAPE } from '@angular/cdk/keycodes';\n\nimport { Subject } from 'rxjs';\n\nimport { ARROW_SIZE, ArrowPosition } from '@fundamental-ngx/core/shared';\nimport { PopoverFlippedXDirection } from '@fundamental-ngx/core/shared';\nimport { ContentDensityService, KeyUtil } from '@fundamental-ngx/core/utils';\nimport { PopoverPosition } from '@fundamental-ngx/core/shared';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NotificationGroupComponent } from '@fundamental-ngx/core/notification';\n\n/**\n * A component used to enforce a certain layout for the popover.\n * ```html\n * <fd-popover>\n * <fd-popover-control>Control Element</fd-popover-control>\n * <fd-popover-body>Popover Body</fd-popover-body>\n * </fd-popover>\n * ```\n */\n@Component({\n selector: 'fd-popover-body',\n templateUrl: './popover-body.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./popover-body.component.scss']\n})\nexport class PopoverBodyComponent {\n /** @hidden */\n @ViewChild(CdkTrapFocus)\n _cdkTrapFocus: CdkTrapFocus;\n\n /** @hidden */\n @ContentChild(NotificationGroupComponent)\n notificationGroup: NotificationGroupComponent;\n\n /** Whether the popover should have an arrow. */\n _noArrow = true;\n\n /** Whether the popover container needs an extra class for styling. */\n _additionalBodyClass: string;\n\n /** Whether the popover should be focusTrapped. */\n _focusTrapped = false;\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 _focusAutoCapture = false;\n\n /** @hidden Property bind to popover's body */\n _popoverBodyWidth: number;\n\n /** @hidden Property bind to popover's body */\n _popoverBodyMinWidth: number;\n\n /** @hidden Property bind to popover's body */\n _maxWidth: number;\n\n /** @hidden Property bind to popover's body */\n _closeOnEscapeKey = false;\n\n /** Classes added to arrow element */\n _arrowClasses: string[] = [];\n\n /** Additional style to put margin into body component, to give a place for arrow */\n _marginStyle: string = null;\n\n /** @hidden text rendered inside popover's body */\n text: string = null;\n\n /** @hidden template rendered inside popover's body */\n _templateToDisplay: TemplateRef<any>;\n\n /** Close event from popover body */\n onClose = new Subject<void>();\n\n /** @hidden */\n get _isCompact(): boolean {\n return this._contentDensityService?.contentDensity.value === 'compact';\n }\n\n /** Handler escape keydown */\n @HostListener('keyup', ['$event'])\n bodyKeyupHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, ESCAPE) && this._closeOnEscapeKey) {\n // In case if popover belongs to the element inside dialog\n event.stopPropagation();\n this.onClose.next();\n }\n }\n\n constructor(\n readonly _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _renderer2: Renderer2,\n @Optional() private _contentDensityService: ContentDensityService\n ) {}\n\n /** @hidden */\n _setArrowStyles(position: ConnectionPositionPair, rtl: 'rtl' | 'ltr'): void {\n this._arrowClasses = [];\n\n const arrowDirection = PopoverPosition.getArrowPosition(position, rtl === 'rtl');\n this._arrowClasses.push(`fd-popover__arrow--${arrowDirection}`);\n\n if (arrowDirection === 'top' || arrowDirection === 'bottom') {\n let _position: string = position.overlayX;\n if (rtl === 'rtl') {\n _position = PopoverFlippedXDirection[_position];\n }\n this._arrowClasses.push(`fd-popover__arrow-x--${_position}`);\n } else if (arrowDirection === 'start' || arrowDirection === 'end') {\n this._arrowClasses.push(`fd-popover__arrow-y--${position.overlayY}`);\n }\n\n this._removeOldMarginsStyle();\n this._addMarginStyle(arrowDirection);\n\n this.detectChanges();\n }\n\n /** @hidden */\n detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** @hidden */\n _focusFirstTabbableElement(): void {\n if (this._focusAutoCapture) {\n this._cdkTrapFocus.focusTrap.focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _addMarginStyle(arrowDirection: ArrowPosition): void {\n this._renderer2.setStyle(\n this._elementRef.nativeElement,\n PopoverPosition.getMarginDirection(arrowDirection),\n ARROW_SIZE\n );\n }\n\n /** @hidden */\n private _removeOldMarginsStyle(): void {\n const margins = ['margin-top', 'margin-right', 'margin-bottom', 'margin-left'];\n margins.forEach((margin) => this._renderer2.removeStyle(this._elementRef.nativeElement, margin));\n }\n}\n","<div\n class=\"fd-popover__popper\"\n [class.fd-popover__popper--no-arrow]=\"_noArrow\"\n [class.fd-popover__popper--compact]=\"_isCompact\"\n [class]=\"_additionalBodyClass\"\n [cdkTrapFocus]=\"_focusTrapped\"\n [style]=\"_marginStyle\"\n [style.max-width.px]=\"_maxWidth\"\n [style.min-width.px]=\"_popoverBodyMinWidth\"\n [style.width.px]=\"_popoverBodyWidth\"\n>\n <ng-content select=\"[fd-popover-body-header]\"></ng-content>\n\n <ng-content select=\"[fd-popover-body-subheader]\"></ng-content>\n\n <ng-content></ng-content>\n\n {{ text }}\n\n <ng-container *ngTemplateOutlet=\"_templateToDisplay\"></ng-container>\n\n <ng-content select=\"[fd-popover-body-footer]\"></ng-content>\n\n <span class=\"fd-popover__arrow\" [class]=\"_arrowClasses\" *ngIf=\"!_noArrow\"></span>\n</div>\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBodyHeader], [fd-popover-body-header]'\n})\nexport class PopoverBodyHeaderDirective {\n /** @hidden */\n @HostBinding('class.fd-popover__body-header')\n fdPopoverBodyHeaderClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBodyFooter], [fd-popover-body-footer]'\n})\nexport class PopoverBodyFooterDirective {\n /** @hidden */\n @HostBinding('class.fd-popover__body-footer')\n fdPopoverBodyFooterClass = true;\n}\n","import { Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\nimport { Placement, PopoverFillMode } from '@fundamental-ngx/core/shared';\n\n@Directive()\nexport class BasePopoverClass {\n @Input()\n /** Whether to close the popover on router navigation start. */\n closeOnNavigation = true;\n\n /** Whether the popover is disabled. */\n @Input()\n @HostBinding('class.fd-popover-custom--disabled')\n disabled = false;\n\n /** Maximum width of popover body in px, prevents from overextending body by `fillControlMode` */\n @Input()\n maxWidth: number = null;\n\n /** Whether the popover should have an arrow. */\n @Input()\n noArrow = true;\n\n /** Whether the popover container needs an extra class for styling. */\n @Input()\n additionalBodyClass: string = null;\n\n /** Whether the popover container needs an extra class for styling. */\n @Input()\n additionalTriggerClass: string = null;\n\n /** Whether the popover should close when the escape key is pressed. */\n @Input()\n closeOnEscapeKey = true;\n\n /**\n * The placement of the popover.\n * It can be one of:\n * top, top-start, top-end, bottom, bottom-start, bottom-end,\n * right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = null;\n\n /** The trigger events that will open/close the popover.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp). */\n @Input()\n triggers: string[] = ['click'];\n\n /** Whether the popover is open. Can be used through two-way binding. */\n @Input()\n isOpen = false;\n\n /** Whether the popover should close when a click is made outside its boundaries. */\n @Input()\n closeOnOutsideClick = true;\n\n /** Whether the popover should be focusTrapped. */\n @Input()\n focusTrapped = false;\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 = false;\n\n /**\n * Scroll strategy, there are 4 accepted\n * - CloseScrollStrategy\n * - NoopScrollStrategy\n * - BlockScrollStrategy\n * - RepositionScrollStrategy ( default )\n */\n @Input()\n scrollStrategy: ScrollStrategy = null;\n\n /**\n * List of positions options for overlay defined by angular CDK.\n * Positions will be taken in order, same like on array. If first position provided doesn't fit to window,\n * another will be used\n * More information can be found in https://material.angular.io/cdk/overlay/api\n */\n @Input()\n cdkPositions: ConnectedPosition[] = null;\n\n /**\n * Preset options for the popover body width.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * Leave blank for no effect.\n */\n @Input()\n fillControlMode: PopoverFillMode = null;\n\n /** The element to which the overlay is attached. By default it is body */\n @Input()\n appendTo: ElementRef = null;\n\n /** Whether position shouldn't change, when popover approach the corner of page */\n @Input()\n fixedPosition = false;\n\n /** @deprecated */\n @Input()\n options;\n\n /** @deprecated */\n @Input()\n addContainerClass;\n\n /** @deprecated */\n @Input()\n additionalClasses;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n}\n","import { Directive, ElementRef, OnInit, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/core/utils';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[fdPopoverContainer]'\n})\nexport class PopoverContainerDirective implements OnInit, OnDestroy {\n /** Subject which emits when popover position refresh is required. */\n refreshPosition$ = new Subject<void>();\n\n /** @hidden */\n private _destroy$ = new Subject<void>();\n\n constructor(private _elmRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnInit(): void {\n resizeObservable(this._elmRef.nativeElement)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this.refreshPosition$.next();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","import { ElementRef, Injectable, Injector, Optional, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ViewportRuler,\n ConnectedOverlayPositionChange\n} from '@angular/cdk/overlay';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, startWith, takeUntil } from 'rxjs/operators';\n\nimport { RtlService } from '@fundamental-ngx/core/utils';\nimport { GetDefaultPosition, PopoverPosition } from '@fundamental-ngx/core/shared';\n\nimport { BasePopoverClass } from '../base/base-popover.class';\nimport { PopoverBodyComponent } from '../popover-body/popover-body.component';\nimport { PopoverContainerDirective } from '../popover-container/popover-container.directive';\n\nconst MAX_BODY_SIZE = 99999999;\n\nexport interface PopoverTemplate {\n container: ViewContainerRef;\n popoverBody: PopoverBodyComponent;\n template: TemplateRef<any>;\n}\n\n@Injectable()\nexport class PopoverService extends BasePopoverClass {\n /** String content displayed inside popover body */\n stringContent: string;\n\n /** Template content displayed inside popover body */\n templateContent: TemplateRef<any>;\n\n /** @hidden */\n _onLoad = new Subject<ElementRef>();\n\n /** @hidden */\n private _eventRef: (() => void)[] = [];\n\n /** @hidden */\n private _overlayRef: OverlayRef;\n\n /** @hidden */\n private _refresh$: Observable<boolean | void>;\n\n /** @hidden */\n private readonly _placementRefresh$ = new Subject<void>();\n\n /** @hidden */\n private _popoverBody: PopoverBodyComponent;\n\n /** @hidden */\n private _triggerElement: ElementRef;\n\n /** @hidden */\n private _lastActiveElement: HTMLElement;\n\n /** @hidden */\n private _templateData: PopoverTemplate;\n\n /** @hidden */\n private _prevTrigger: string;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n constructor(\n private _overlay: Overlay,\n private _renderer: Renderer2,\n private _viewportRuler: ViewportRuler,\n private _injector: Injector,\n @Optional() private _rtlService: RtlService,\n @Optional() private readonly _popoverContainer: PopoverContainerDirective\n ) {\n super();\n\n /** Merge observables - close or destroy */\n this._refresh$ = merge(this.isOpenChange, this._onDestroy$);\n }\n\n /**\n * Method initialising the popover service - should be called, after view is initialised, params:\n * - triggerElement - element, which is equivalent for cdkOverlayOrigin, or fd-popover-control,\n * by default to this element the popover body will lbe appended and events on this element will trigger\n * popover's toggle\n * - config - configuration object - in this case the intention is to use inheritance of BasePopoverClass in component\n * - templateData - in case of having already PopoverBodyComponent, there is way to pass container, template containing\n * PopoverComponent and PopoverComponent instance\n */\n initialise(triggerElement: ElementRef, config?: BasePopoverClass, templateData?: PopoverTemplate): void {\n this._templateData = templateData;\n this._triggerElement = triggerElement;\n\n if (config) {\n this.refreshConfiguration(config);\n }\n\n this._refreshTriggerListeners();\n\n if (this.isOpen) {\n this.open();\n }\n\n // If wrapper container height changes outside, refresh popover position.\n this._popoverContainer?.refreshPosition$.pipe(takeUntil(this._refresh$)).subscribe(() => {\n this.refreshPosition();\n });\n }\n\n /** Closes the popover. */\n close(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n\n const prevState = this.isOpen;\n this.isOpen = false;\n if (prevState !== this.isOpen) {\n this.isOpenChange.emit(this.isOpen);\n }\n\n this._focusLastActiveElementBeforeOpen();\n }\n }\n\n /** Opens the popover. */\n open(): void {\n if ((!this._overlayRef || !this._overlayRef.hasAttached()) && !this.disabled && this._triggerElement) {\n const position = this._getPositionStrategy();\n this._overlayRef = this._overlay.create(this._getOverlayConfig(position));\n\n if (this._templateData) {\n this._attachTemplate();\n } else {\n this._attachBodyComponent();\n }\n\n this._listenForPositionChange(position.positionChanges);\n\n if (this.fillControlMode) {\n this._listenOnResize();\n }\n\n const prevState = this.isOpen;\n this.isOpen = true;\n if (prevState !== this.isOpen) {\n this.isOpenChange.emit(this.isOpen);\n }\n\n this._detectChanges();\n\n this._listenOnClose();\n this._listenOnOutClicks();\n this._focusFirstTabbableElement();\n this._onLoad.next(this._getPopoverBody()._elementRef);\n }\n }\n\n /** method updating template or text inside rendered PopoverBody */\n updateContent(stringContent: string, templateContent: TemplateRef<any>): void {\n this.stringContent = stringContent;\n this.templateContent = templateContent;\n if (this._getPopoverBody()) {\n this._passVariablesToBody();\n }\n }\n\n /** Toggles the popover open state */\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Method called to change position of popover,\n * recommended to be used only when popover is opened, otherwise change position or cdkPlacement\n */\n applyNewPosition(positions: ConnectedPosition[]): void {\n const refPosition = this._getPositionStrategy(positions);\n this._listenForPositionChange(refPosition.positionChanges);\n this._overlayRef.updatePositionStrategy(refPosition);\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n if (this._overlayRef) {\n this._overlayRef.updatePosition();\n }\n }\n\n /** Equivalent for ngOnDestroy method, whether component is destroyed, this method should be called */\n onDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._removeTriggerListeners();\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n }\n\n /**\n * Method that sets configuration/options, it detects if there is something changed and overwrites them\n */\n refreshConfiguration(config: BasePopoverClass): void {\n const onlyChanged = Object.keys(new BasePopoverClass()).filter((key) => this[key] !== config[key]);\n\n if (onlyChanged.includes('isOpen')) {\n if (config.isOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n\n /**\n * This overriding is dangerous thing and leads to unexpected behavior\n * We have to avoid this.\n */\n onlyChanged.forEach((key) => (this[key] = config[key]));\n\n if (onlyChanged.includes('triggers')) {\n this._refreshTriggerListeners();\n }\n }\n\n /**\n * This method is intended to be called in order\n * to postpone the main functionality but be able\n * to enable it back in the future by initialise()\n */\n deactivate(): void {\n this._removeTriggerListeners();\n }\n\n /** Refresh listeners on trigger element events */\n _refreshTriggerListeners(): void {\n if (!this._triggerElement) {\n return;\n }\n\n this._removeTriggerListeners();\n\n if (this.triggers?.length) {\n this.triggers.forEach((trigger) => {\n this._eventRef.push(\n this._renderer.listen(this._triggerElement.nativeElement, trigger, () => {\n this._isToggle(trigger);\n })\n );\n });\n }\n }\n\n /** @hidden */\n private _isToggle(trigger: string): void {\n // prevent unexpected toggling when it triggers the same event\n if (this._prevTrigger !== trigger || this.triggers?.length <= 1) {\n this.toggle();\n }\n\n this._prevTrigger = trigger;\n }\n\n /** @hidden */\n private _getOverlayConfig(position: FlexibleConnectedPositionStrategy): OverlayConfig {\n const direction = this._getDirection();\n\n return new OverlayConfig({\n direction,\n disposeOnNavigation: this.closeOnNavigation,\n positionStrategy: position,\n scrollStrategy: this.scrollStrategy || this._overlay.scrollStrategies.reposition()\n });\n }\n\n /** @hidden */\n private _listenOnResize(): void {\n this._viewportRuler\n .change(15)\n .pipe(takeUntil(this._refresh$), startWith(1))\n .subscribe(() => this._applyWidthOverlay());\n }\n\n /** @hidden */\n private _getDirection(): 'rtl' | 'ltr' {\n if (!this._rtlService) {\n return 'ltr';\n }\n\n return this._rtlService.rtl.getValue() ? 'rtl' : 'ltr';\n }\n\n /** @hidden */\n private _getPositionStrategy(forcedPositions?: ConnectedPosition[]): FlexibleConnectedPositionStrategy {\n let resultPosition = forcedPositions ? forcedPositions : this._getPositions();\n\n if (!this.fixedPosition) {\n resultPosition = resultPosition.concat(GetDefaultPosition(resultPosition));\n }\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this.appendTo || this._triggerElement)\n .withPositions(resultPosition)\n .withPush(false);\n }\n\n /** remove listeners from trigger element events */\n private _removeTriggerListeners(): void {\n this._eventRef.forEach((event) => event());\n this._eventRef = [];\n }\n\n /** Attach template containing popover body to overlay */\n private _attachTemplate(): void {\n this._passVariablesToBody();\n this._overlayRef.attach(new TemplatePortal(this._templateData.template, this._templateData.container));\n }\n\n /** Create PopoverBodyComponent and attach it into overlay */\n private _attachBodyComponent(): void {\n const overlay = this._overlayRef.attach(new ComponentPortal(PopoverBodyComponent, null, this._injector));\n this._popoverBody = overlay.instance;\n this._passVariablesToBody();\n }\n\n /** @hidden */\n private _listenForPositionChange(positionChange: Observable<ConnectedOverlayPositionChange>): void {\n this._placementRefresh$.next();\n positionChange\n .pipe(\n takeUntil(this._placementRefresh$),\n takeUntil(this._onDestroy$),\n filter(() => !this.noArrow && !!this._getPopoverBody()),\n distinctUntilChanged((previous, current) => previous.connectionPair === current.connectionPair)\n )\n .subscribe((event) => this._getPopoverBody()._setArrowStyles(event.connectionPair, this._getDirection()));\n }\n\n /** Subscribe to close events from CDK Overlay, to throw proper events, change values */\n private _listenOnClose(): void {\n const closeEvents$ = merge(this._overlayRef.detachments(), this._getPopoverBody().onClose);\n\n closeEvents$.pipe(takeUntil(this._refresh$)).subscribe(() => this.close());\n }\n\n /** Listener for click events */\n private _listenOnOutClicks(): void {\n const closeEvents$ = merge(this._overlayRef.backdropClick(), this._overlayRef._outsidePointerEvents);\n\n closeEvents$\n .pipe(\n filter((event) => this._shouldClose(event)),\n takeUntil(this._refresh$)\n )\n .subscribe(() => this.close());\n }\n\n /** @hidden */\n private _shouldClose(event: MouseEvent): boolean {\n return this.isOpen && this.closeOnOutsideClick && !this._triggerContainsTarget(event);\n }\n\n /** @hidden */\n private _getEventTarget(event: Event): EventTarget {\n return event.composedPath ? event.composedPath()[0] : event.target;\n }\n\n /** @hidden */\n private _triggerContainsTarget(event: Event): boolean {\n const triggerElement = this._triggerElement.nativeElement;\n return triggerElement.contains(this._getEventTarget(event));\n }\n\n /** @hidden */\n private _getPositions(): ConnectedPosition[] {\n if (this.cdkPositions) {\n return this.cdkPositions;\n }\n\n if (this.placement) {\n return [PopoverPosition.getCdkPlacement(this.placement, this._getDirection())];\n }\n\n return [];\n }\n\n /** @hidden */\n private _applyWidthOverlay(): void {\n const maxWidthLimit = this.maxWidth ? this.maxWidth : MAX_BODY_SIZE;\n const width = Math.min(this._getTriggerWidth(), maxWidthLimit);\n if (this.fillControlMode === 'at-least') {\n this._getPopoverBody()._popoverBodyMinWidth = width;\n } else if (this.fillControlMode === 'equal') {\n this._getPopoverBody()._popoverBodyWidth = width;\n }\n this._detectChanges();\n }\n\n /** @hidden */\n private _passVariablesToBody(): void {\n this._getPopoverBody().text = this.stringContent;\n this._getPopoverBody()._additionalBodyClass = this.additionalBodyClass;\n this._getPopoverBody()._focusTrapped = this.focusTrapped;\n this._getPopoverBody()._maxWidth = this.maxWidth;\n this._getPopoverBody()._noArrow = this.noArrow;\n this._getPopoverBody()._focusAutoCapture = this.focusAutoCapture;\n this._getPopoverBody()._templateToDisplay = this.templateContent;\n this._getPopoverBody()._closeOnEscapeKey = this.closeOnEscapeKey;\n this._detectChanges();\n }\n\n /** @hidden */\n private _getTriggerWidth(): number {\n return this._triggerElement.nativeElement.offsetWidth;\n }\n\n /** @hidden */\n private _getPopoverBody(): PopoverBodyComponent {\n return this._templateData?.popoverBody || this._popoverBody;\n }\n\n /** @hidden */\n private _detectChanges(): void {\n if (this._getPopoverBody()) {\n this._getPopoverBody().detectChanges();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(): void {\n if (this.focusAutoCapture) {\n this._lastActiveElement = <HTMLElement>document.activeElement;\n this._getPopoverBody()?._focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _focusLastActiveElementBeforeOpen(): void {\n if (this.focusAutoCapture && this._lastActiveElement) {\n this._lastActiveElement.focus();\n }\n }\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const POPOVER_COMPONENT = new InjectionToken<PopoverInterface>('PopoverInterface');\n\n/**\n * Popover Interface to have typing and avoid circular dependency between\n * PopoverComponent <==> PopoverMobileComponent\n */\nexport interface PopoverInterface extends MobileMode {\n dialogConfig: DialogConfig;\n isOpenChange: EventEmitter<boolean>;\n\n close(): void;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n MobileModeBase,\n MOBILE_MODE_CONFIG,\n MobileModeControl,\n MobileModeConfigToken\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { PopoverInterface, POPOVER_COMPONENT } from '../popover.interface';\nimport { PopoverChildContent } from '../popover-child-content.interface';\n\nlet mobilePopoverUniqueId = 0;\n\n@Component({\n selector: 'fd-popover-mobile',\n templateUrl: './popover-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class PopoverMobileComponent extends MobileModeBase<PopoverInterface> implements OnInit, OnDestroy {\n /** @hidden\n * from mobile class can not prefix _,\n * to avoid build issues\n */\n childContent: PopoverChildContent = undefined;\n\n /** Current popover title */\n title: string;\n\n /** Dialog body content */\n viewBody: TemplateRef<any>;\n /** Dialog footer content */\n viewFooter: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('dialogTemplate')\n _dialogTemplate: TemplateRef<any>;\n\n /** @hidden */\n readonly id = 'fd-popover-mobile-' + mobilePopoverUniqueId++;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n get titleId(): string {\n return this.id + '-title';\n }\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n private _changeDetectorref: ChangeDetectorRef,\n @Inject(POPOVER_COMPONENT) _popoverComponent: PopoverInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, _popoverComponent, MobileModeControl.POPOVER, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnPopoverOpenChange();\n\n this.title = this.mobileConfig.title || '';\n this.viewBody = this.childContent.popoverBodyContentTemplate;\n this.viewFooter = this.childContent.popoverFooterContentTemplate;\n\n this._changeDetectorref.markForCheck();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.dialogRef?.close();\n super.onDestroy();\n this._subscriptions.unsubscribe();\n }\n\n /** Closes the Dialog and Popover component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** @hidden Opens/closes the Dialog based on Popover isOpenChange events */\n private _listenOnPopoverOpenChange(): void {\n this._subscriptions.add(\n this._component.isOpenChange.pipe(takeUntil(this._onDestroy$)).subscribe((isOpen) => {\n if (isOpen) {\n this._openDialog();\n } else {\n this.dialogRef.hide(true);\n }\n })\n );\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n this.dialogRef = this._dialogService.open(this._dialogTemplate, {\n ...this.dialogConfig,\n mobile: true,\n focusTrapped: true,\n verticalPadding: true,\n escKeyCloseable: false,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement,\n responsivePadding: true,\n ariaLabelledBy: this.titleId\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title [id]=\"titleId\">{{ title }}</h1>\n <button fd-dialog-close-button *ngIf=\"this.mobileConfig.hasCloseButton\" (click)=\"close()\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"viewBody\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngTemplateOutlet=\"viewFooter\"></ng-container>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { DynamicComponentService } from '@fundamental-ngx/core/utils';\nimport { PopoverMobileComponent } from './popover-mobile.component';\n\n@NgModule({\n declarations: [PopoverMobileComponent],\n imports: [CommonModule, DialogModule, ButtonModule],\n exports: [PopoverMobileComponent],\n providers: [DynamicComponentService],\n entryComponents: [PopoverMobileComponent]\n})\nexport class PopoverMobileModule {}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChild,\n ElementRef,\n HostListener,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { DOWN_ARROW, ENTER, SPACE } from '@angular/cdk/keycodes';\n\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/core/utils';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { BasePopoverClass } from './base/base-popover.class';\nimport { PopoverBodyComponent } from './popover-body/popover-body.component';\nimport { PopoverService } from './popover-service/popover.service';\nimport { PopoverControlComponent } from './popover-control/popover-control.component';\nimport { POPOVER_COMPONENT } from './popover.interface';\nimport { PopoverMobileComponent } from './popover-mobile/popover-mobile.component';\nimport { PopoverMobileModule } from './popover-mobile/popover-mobile.module';\nimport { PopoverChildContent } from './popover-child-content.interface';\n\nexport const SELECT_CLASS_NAMES = {\n selectControl: 'fd-select__control'\n};\n\nlet cdkPopoverUniqueId = 0;\n\n/**\n * The popover is a wrapping component that accepts a *control* as well as a *body*.\n * The control is what will trigger the opening of the actual popover, which is called the body.\n * By default, popovers are triggered by click. This can be customized through the *triggers* input.\n */\n@Component({\n selector: 'fd-popover',\n templateUrl: './popover.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [PopoverService],\n host: {\n class: 'fd-popover-custom',\n '[class.fd-popover-custom--mobile]': 'mobile',\n '[attr.id]': 'id'\n }\n})\nexport class PopoverComponent\n extends BasePopoverClass\n implements AfterViewInit, AfterContentInit, OnDestroy, OnChanges\n{\n /** Tooltip for popover */\n @Input()\n title: string;\n\n /** Reference to popover trigger element */\n @Input()\n trigger: ElementRef;\n\n /** Whether position shouldn't change, when popover approach the corner of page */\n @Input()\n fixedPosition = false;\n\n /** Id of the popover. If none is provided, one will be generated. */\n @Input()\n id: string = 'fd-popover-' + cdkPopoverUniqueId++;\n\n /** Whether the popover component should be displayed in mobile mode. */\n @Input()\n mobile = false;\n\n @Input()\n mobileConfig: MobileModeConfig = { hasCloseButton: true };\n\n /** @hidden */\n @ViewChild('templateRef', { read: TemplateRef })\n templateRef: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('container', { read: ViewContainerRef })\n container: ViewContainerRef;\n\n /** @hidden */\n @ViewChild(CdkOverlayOrigin)\n triggerOrigin: CdkOverlayOrigin;\n\n /** @hidden */\n @ContentChild(PopoverBodyComponent)\n popoverBody: PopoverBodyComponent;\n\n /** @hidden */\n @ContentChild(PopoverControlComponent)\n popoverControl: PopoverControlComponent;\n\n /** @hidden - template for Dialog body content */\n @ContentChild('popoverBodyContent')\n popoverBodyContentTemplate: TemplateRef<any>;\n\n /** @hidden - template for Dialog footer content */\n @ContentChild('popoverFooterContent')\n popoverFooterContentTemplate: TemplateRef<any>;\n\n /** @deprecated\n * Left for backward compatibility\n */\n directiveRef: any;\n\n /** @hidden */\n private _clickEventListener: () => void;\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<PopoverMobileComponent>;\n\n /** @hidden */\n constructor(\n private readonly _popoverService: PopoverService,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _rendered: Renderer2,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() private readonly _dynamicComponentService: DynamicComponentService\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (!this.mobile) {\n if (!this.popoverBody) {\n this._popoverService.templateContent = this.templateRef;\n }\n this._popoverService.initialise(\n this.trigger || this.triggerOrigin.elementRef,\n this,\n this.popoverBody\n ? {\n template: this.templateRef,\n container: this.container,\n popoverBody: this.popoverBody\n }\n : null\n );\n }\n\n this._setupView();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this.popoverBody && this.popoverBody.notificationGroup) {\n super.focusTrapped = true;\n super.focusAutoCapture = true;\n }\n if (this.popoverControl && this.triggers.includes('click')) {\n this.popoverControl.makeTabbable();\n }\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this._popoverService.refreshConfiguration(this);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n this._popoverService.onDestroy();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const activeElement = document.activeElement;\n if (\n // popoverControl will be undefined when popover is used from \"fdPopoverTrigger\"\n this.popoverControl?.elRef.nativeElement.children[0] === activeElement &&\n activeElement.tagName !== 'INPUT' &&\n activeElement.tagName !== 'TEXTAREA' &&\n !activeElement.classList.contains(SELECT_CLASS_NAMES.selectControl)\n ) {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n // prevent page scrolling on Space keydown\n event.preventDefault();\n this._popoverService.toggle();\n }\n }\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /** Opens the popover. */\n open(): void {\n this.isOpen = true;\n this._popoverService.open();\n this.isOpenChange.emit(this.isOpen);\n this._cdr.markForCheck();\n }\n\n /** Closes the popover. */\n close(): void {\n this.isOpen = false;\n this._popoverService.close();\n this.isOpenChange.emit(this.isOpen);\n this._cdr.markForCheck();\n }\n\n /**\n * Method called to change position of popover,\n * recommended to be used only when popover is opened, otherwise change position or cdkPlacement\n */\n applyNewPosition(positions: ConnectedPosition[]): void {\n this._popoverService.applyNewPosition(positions);\n }\n\n /** @deprecated\n * Left for backward compatibility\n */\n updatePopover(): void {\n this.refreshPosition();\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** Handler for alt + arrow down keydown */\n triggerKeyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && event.altKey && !this.disabled) {\n this.open();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** @hidden Select and instantiate popover view mode */\n private _setupView(): void {\n if (this.mobile) {\n this._setupMobileMode();\n }\n\n this._cdr.detectChanges();\n }\n\n /** @hidden Open Popover in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: POPOVER_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._mobileModeComponentRef = await this._dynamicComponentService.createDynamicModule(\n {\n popoverBodyContentTemplate: this.popoverBodyContentTemplate,\n popoverFooterContentTemplate: this.popoverFooterContentTemplate\n } as PopoverChildContent,\n PopoverMobileModule,\n PopoverMobileComponent,\n this._viewContainerRef,\n injector\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /** @hidden - Listen on popover trigger ref clicks */\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","<div\n *ngIf=\"!trigger\"\n cdkOverlayOrigin\n class=\"fd-popover__control\"\n [class]=\"additionalTriggerClass\"\n (keydown)=\"triggerKeyDownHandler($event)\"\n>\n <ng-content select=\"fd-popover-control\"></ng-content>\n</div>\n\n<ng-template #templateRef>\n <ng-content select=\"fd-popover-body\"></ng-content>\n\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container #container></ng-container>\n","import { Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { PopoverComponent } from './popover.component';\n\n@Directive({\n selector: '[fdPopoverTrigger], [fd-popover-trigger]'\n})\nexport class PopoverTriggerDirective implements OnDestroy {\n /** Set reference to Popover Component */\n @Input('fdPopoverTrigger')\n set popover(popover: PopoverComponent) {\n if (popover) {\n popover.trigger = this._elementRef;\n this._listenOnExpanded(popover);\n }\n this._setAriaAttributes(popover);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: boolean;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: string;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: boolean;\n\n /** @hidden */\n private _isExpandedSubscription: Subscription;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeExpandedListener();\n }\n\n /** @hidden */\n private _listenOnExpanded(popover: PopoverComponent): void {\n this._unsubscribeExpandedListener();\n if (popover) {\n this._isExpandedSubscription = popover.isOpenChange\n .pipe(startWith(popover.isOpen))\n .subscribe((isOpen) => (this.ariaExpanded = isOpen));\n }\n }\n\n /** @hidden */\n private _setAriaAttributes(popover: PopoverComponent): void {\n this.ariaHasPopup = !!popover;\n this.ariaControls = popover ? popover.id : null;\n }\n\n /** @hidden */\n private _unsubscribeExpandedListener(): void {\n if (this._isExpandedSubscription) {\n this._isExpandedSubscription.unsubscribe();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PopoverControlComponent } from './popover-control/popover-control.component';\nimport { PopoverBodyComponent } from './popover-body/popover-body.component';\nimport { PopoverBodyHeaderDirective } from './popover-body/popover-body-directives/popover-body-header.directive';\nimport { PopoverBodyFooterDirective } from './popover-body/popover-body-directives/popover-body-footer.directive';\n\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PopoverComponent } from './popover.component';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PopoverTriggerDirective } from './popover-trigger.directive';\nimport { PopoverContainerDirective } from './popover-container/popover-container.directive';\n\n@NgModule({\n declarations: [\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyHeaderDirective,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContainerDirective\n ],\n imports: [CommonModule, OverlayModule, A11yModule],\n exports: [\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyHeaderDirective,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContainerDirective\n ],\n entryComponents: [PopoverBodyComponent]\n})\nexport class PopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { ESCAPE, SPACE, ENTER, DOWN_ARROW } from '@angular/cdk/keycodes';
6
6
  import { Subject, merge, Subscription } from 'rxjs';
7
7
  import { PopoverPosition, PopoverFlippedXDirection, ARROW_SIZE, GetDefaultPosition } from '@fundamental-ngx/core/shared';
8
8
  import * as i2 from '@fundamental-ngx/core/utils';
9
- import { KeyUtil, DynamicComponentService } from '@fundamental-ngx/core/utils';
9
+ import { KeyUtil, resizeObservable, DynamicComponentService } from '@fundamental-ngx/core/utils';
10
10
  import * as i2$1 from '@angular/cdk/a11y';
11
11
  import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
12
12
  import { NotificationGroupComponent } from '@fundamental-ngx/core/notification';
@@ -313,15 +313,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
313
313
  type: Output
314
314
  }] } });
315
315
 
316
+ class PopoverContainerDirective {
317
+ constructor(_elmRef) {
318
+ this._elmRef = _elmRef;
319
+ /** Subject which emits when popover position refresh is required. */
320
+ this.refreshPosition$ = new Subject();
321
+ /** @hidden */
322
+ this._destroy$ = new Subject();
323
+ }
324
+ /** @hidden */
325
+ ngOnInit() {
326
+ resizeObservable(this._elmRef.nativeElement)
327
+ .pipe(takeUntil(this._destroy$))
328
+ .subscribe(() => {
329
+ this.refreshPosition$.next();
330
+ });
331
+ }
332
+ /** @hidden */
333
+ ngOnDestroy() {
334
+ this._destroy$.next();
335
+ this._destroy$.complete();
336
+ }
337
+ }
338
+ PopoverContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
339
+ PopoverContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: PopoverContainerDirective, selector: "[fdPopoverContainer]", ngImport: i0 });
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverContainerDirective, decorators: [{
341
+ type: Directive,
342
+ args: [{
343
+ selector: '[fdPopoverContainer]'
344
+ }]
345
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
346
+
316
347
  const MAX_BODY_SIZE = 99999999;
317
348
  class PopoverService extends BasePopoverClass {
318
- constructor(_overlay, _renderer, _viewportRuler, _injector, _rtlService) {
349
+ constructor(_overlay, _renderer, _viewportRuler, _injector, _rtlService, _popoverContainer) {
319
350
  super();
320
351
  this._overlay = _overlay;
321
352
  this._renderer = _renderer;
322
353
  this._viewportRuler = _viewportRuler;
323
354
  this._injector = _injector;
324
355
  this._rtlService = _rtlService;
356
+ this._popoverContainer = _popoverContainer;
325
357
  /** @hidden */
326
358
  this._onLoad = new Subject();
327
359
  /** @hidden */
@@ -352,6 +384,10 @@ class PopoverService extends BasePopoverClass {
352
384
  if (this.isOpen) {
353
385
  this.open();
354
386
  }
387
+ // If wrapper container height changes outside, refresh popover position.
388
+ this._popoverContainer?.refreshPosition$.pipe(takeUntil(this._refresh$)).subscribe(() => {
389
+ this.refreshPosition();
390
+ });
355
391
  }
356
392
  /** Closes the popover. */
357
393
  close() {
@@ -631,12 +667,14 @@ class PopoverService extends BasePopoverClass {
631
667
  }
632
668
  }
633
669
  }
634
- PopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverService, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: i1.ViewportRuler }, { token: i0.Injector }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
670
+ PopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverService, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: i1.ViewportRuler }, { token: i0.Injector }, { token: i2.RtlService, optional: true }, { token: PopoverContainerDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
635
671
  PopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverService });
636
672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverService, decorators: [{
637
673
  type: Injectable
638
674
  }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Renderer2 }, { type: i1.ViewportRuler }, { type: i0.Injector }, { type: i2.RtlService, decorators: [{
639
675
  type: Optional
676
+ }] }, { type: PopoverContainerDirective, decorators: [{
677
+ type: Optional
640
678
  }] }]; } });
641
679
 
642
680
  const POPOVER_COMPONENT = new InjectionToken('PopoverInterface');
@@ -1026,12 +1064,14 @@ PopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
1026
1064
  PopoverBodyHeaderDirective,
1027
1065
  PopoverBodyFooterDirective,
1028
1066
  PopoverComponent,
1029
- PopoverTriggerDirective], imports: [CommonModule, OverlayModule, A11yModule], exports: [PopoverControlComponent,
1067
+ PopoverTriggerDirective,
1068
+ PopoverContainerDirective], imports: [CommonModule, OverlayModule, A11yModule], exports: [PopoverControlComponent,
1030
1069
  PopoverBodyComponent,
1031
1070
  PopoverBodyHeaderDirective,
1032
1071
  PopoverBodyFooterDirective,
1033
1072
  PopoverComponent,
1034
- PopoverTriggerDirective] });
1073
+ PopoverTriggerDirective,
1074
+ PopoverContainerDirective] });
1035
1075
  PopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverModule, imports: [[CommonModule, OverlayModule, A11yModule]] });
1036
1076
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PopoverModule, decorators: [{
1037
1077
  type: NgModule,
@@ -1042,7 +1082,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
1042
1082
  PopoverBodyHeaderDirective,
1043
1083
  PopoverBodyFooterDirective,
1044
1084
  PopoverComponent,
1045
- PopoverTriggerDirective
1085
+ PopoverTriggerDirective,
1086
+ PopoverContainerDirective
1046
1087
  ],
1047
1088
  imports: [CommonModule, OverlayModule, A11yModule],
1048
1089
  exports: [
@@ -1051,7 +1092,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
1051
1092
  PopoverBodyHeaderDirective,
1052
1093
  PopoverBodyFooterDirective,
1053
1094
  PopoverComponent,
1054
- PopoverTriggerDirective
1095
+ PopoverTriggerDirective,
1096
+ PopoverContainerDirective
1055
1097
  ],
1056
1098
  entryComponents: [PopoverBodyComponent]
1057
1099
  }]
@@ -1061,5 +1103,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
1061
1103
  * Generated bundle index. Do not edit.
1062
1104
  */
1063
1105
 
1064
- export { BasePopoverClass, POPOVER_COMPONENT, PopoverBodyComponent, PopoverBodyFooterDirective, PopoverBodyHeaderDirective, PopoverComponent, PopoverControlComponent, PopoverMobileComponent, PopoverMobileModule, PopoverModule, PopoverService, PopoverTriggerDirective, SELECT_CLASS_NAMES };
1106
+ export { BasePopoverClass, POPOVER_COMPONENT, PopoverBodyComponent, PopoverBodyFooterDirective, PopoverBodyHeaderDirective, PopoverComponent, PopoverContainerDirective, PopoverControlComponent, PopoverMobileComponent, PopoverMobileModule, PopoverModule, PopoverService, PopoverTriggerDirective, SELECT_CLASS_NAMES };
1065
1107
  //# sourceMappingURL=fundamental-ngx-core-popover.mjs.map