@sebgroup/green-angular 1.8.4 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { ON_SCROLL_TOKEN } from '../shared/on-scroll.directive';
4
+ import { CONTEXT_MENU_LEFT, CONTEXT_MENU_TOP } from './context-menu.constants';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
7
  import * as i2 from "rxjs";
@@ -16,15 +17,14 @@ export class NggContextMenuComponent {
16
17
  this.closeOnScroll = false;
17
18
  this.contextMenuItemClicked = new EventEmitter();
18
19
  this.isActive = false;
19
- this.top = '0px';
20
- this.left = '0px';
20
+ this.top = CONTEXT_MENU_TOP;
21
+ this.left = CONTEXT_MENU_LEFT;
21
22
  }
22
23
  onDocumentClick(target) {
23
24
  if (!this.isActive) {
24
25
  return;
25
26
  }
26
- const contextMenuElement = this.elementRef.nativeElement;
27
- if (!contextMenuElement.contains(target)) {
27
+ if (!this.elementRef.nativeElement.contains(target)) {
28
28
  this.close();
29
29
  }
30
30
  }
@@ -48,8 +48,7 @@ export class NggContextMenuComponent {
48
48
  this.close();
49
49
  return;
50
50
  }
51
- const anchor = this.anchor?.nativeElement;
52
- const buttonRect = anchor.getBoundingClientRect();
51
+ const buttonRect = this.anchor?.nativeElement.getBoundingClientRect();
53
52
  const gapBetweenButtonAndPopover = 3;
54
53
  const left = this.calculateLeft(this.direction, buttonRect);
55
54
  const top = buttonRect.bottom + gapBetweenButtonAndPopover;
@@ -59,6 +58,8 @@ export class NggContextMenuComponent {
59
58
  }
60
59
  close() {
61
60
  this.isActive = false;
61
+ this.top = CONTEXT_MENU_TOP;
62
+ this.left = CONTEXT_MENU_LEFT;
62
63
  this.changeDetectorRef.markForCheck();
63
64
  }
64
65
  onItemClick(item) {
@@ -124,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
124
125
  type: HostListener,
125
126
  args: ['document:click', ['$event.target']]
126
127
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTs7OztBQU0vRCxNQUFNLE9BQU8sdUJBQXVCO0lBdUJsQyxZQUNVLGlCQUFvQyxFQUNwQyxVQUFzQixFQUd2QixnQkFBK0I7UUFKOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBR3ZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZTtRQXpCL0IsY0FBUyxHQUFrQixLQUFLLENBQUE7UUFDaEMsY0FBUyxHQUFxQixFQUFFLENBQUE7UUFDaEMscUJBQWdCLEdBQWdDLElBQUksQ0FBQTtRQUNwRCx1QkFBa0IsR0FBZ0MsSUFBSSxDQUFBO1FBQ3RELGtCQUFhLEdBQUcsS0FBSyxDQUFBO1FBRXBCLDJCQUFzQixHQUM5QixJQUFJLFlBQVksRUFBa0IsQ0FBQTtRQU1wQyxhQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLFFBQUcsR0FBRyxLQUFLLENBQUE7UUFDWCxTQUFJLEdBQUcsS0FBSyxDQUFBO0lBV1Qs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QUFZLElBQUksVUFBVSxDQUFDLElBQUk7b0JBQ3BDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFlBQVk7b0JBQ2pDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFBO1lBQ3JCLEtBQUssS0FBSyxDQUFDO1lBQ1g7Z0JBQ0UsT0FBTyxVQUFVLENBQUMsS0FBSyxHQUFHLFlBQVksSUFBSSxNQUFNLENBQUMsVUFBVTtvQkFDekQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJO29CQUNqQixDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUE7U0FDdEM7SUFDSCxDQUFDOztvSEF0SFUsdUJBQXVCLDZFQTJCeEIsZUFBZTt3R0EzQmQsdUJBQXVCLDZqQkN4QnBDLG9uQ0E0Q0E7MkZEcEJhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSxrQkFBa0I7OzBCQTZCekIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxlQUFlOzRDQXhCaEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRzBCLE9BQU87c0JBQXZDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUVDLE1BQU07c0JBQXJDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQWtCOUIsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb24gfSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCdcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBPTl9TQ1JPTExfVE9LRU4gfSBmcm9tICcuLi9zaGFyZWQvb24tc2Nyb2xsLmRpcmVjdGl2ZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdnLWNvbnRleHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZXh0LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dDb250ZXh0TWVudUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0XG57XG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJyA9ICdsdHInXG4gIEBJbnB1dCgpIG1lbnVJdGVtczogRHJvcGRvd25PcHRpb25bXSA9IFtdXG4gIEBJbnB1dCgpIG1lbnVJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgbWVudUFuY2hvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIGNsb3NlT25TY3JvbGwgPSBmYWxzZVxuXG4gIEBPdXRwdXQoKSBjb250ZXh0TWVudUl0ZW1DbGlja2VkOiBFdmVudEVtaXR0ZXI8RHJvcGRvd25PcHRpb24+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPERyb3Bkb3duT3B0aW9uPigpXG5cbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnVQb3BvdmVyJykgcG9wb3ZlcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZFxuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRleHRNZW51QW5jaG9yJykgYW5jaG9yOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG5cbiAgaXNBY3RpdmUgPSBmYWxzZVxuICB0b3AgPSAnMHB4J1xuICBsZWZ0ID0gJzBweCdcblxuICByZXNpemVPYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyXG4gIG1lbnVDbG9zZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoT05fU0NST0xMX1RPS0VOKVxuICAgIHB1YmxpYyBjbG9zZUNvbnRleHRNZW51OiBTdWJqZWN0PHZvaWQ+XG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbkRvY3VtZW50Q2xpY2sodGFyZ2V0OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHRNZW51RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG5cbiAgICBpZiAoIWNvbnRleHRNZW51RWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlKClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKClcbiAgICB9KVxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZU9uU2Nyb2xsKSB7XG4gICAgICB0aGlzLm1lbnVDbG9zZVN1YnNjcmlwdGlvbiA9IHRoaXMuY2xvc2VDb250ZXh0TWVudT8uc3Vic2NyaWJlKCgpID0+XG4gICAgICAgIHRoaXMuY2xvc2UoKVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUoZG9jdW1lbnQuYm9keSlcbiAgICB0aGlzLm1lbnVDbG9zZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKVxuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5jbG9zZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuICAgIGNvbnN0IGJ1dHRvblJlY3QgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcblxuICAgIGNvbnN0IGdhcEJldHdlZW5CdXR0b25BbmRQb3BvdmVyID0gM1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmNhbGN1bGF0ZUxlZnQodGhpcy5kaXJlY3Rpb24sIGJ1dHRvblJlY3QpXG4gICAgY29uc3QgdG9wID0gYnV0dG9uUmVjdC5ib3R0b20gKyBnYXBCZXR3ZWVuQnV0dG9uQW5kUG9wb3ZlcjtcblxuICAgIHRoaXMubGVmdCA9IGAke2xlZnR9cHhgXG4gICAgdGhpcy50b3AgPSBgJHt0b3B9cHhgXG4gICAgdGhpcy5pc0FjdGl2ZSA9IHRydWVcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcbiAgfVxuXG4gIG9uSXRlbUNsaWNrKGl0ZW06IERyb3Bkb3duT3B0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0TWVudUl0ZW1DbGlja2VkLmVtaXQoaXRlbSlcbiAgICB0aGlzLmNsb3NlKClcbiAgfVxuXG4gIG9uTWVudUl0ZW1LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBtZW51SXRlbTogRHJvcGRvd25PcHRpb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnICc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgdGhpcy5vbkl0ZW1DbGljayhtZW51SXRlbSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgY2FsY3VsYXRlTGVmdChkaXJlY3Rpb246IHN0cmluZywgYnV0dG9uUmVjdDogRE9NUmVjdCk6IG51bWJlciB7XG4gICAgY29uc3QgcG9wb3ZlciA9IHRoaXMucG9wb3Zlcj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuICAgIGNvbnN0IHBvcG92ZXJXaWR0aCA9IHBvcG92ZXI/Lm9mZnNldFdpZHRoIHx8IDBcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICdydGwnOlxuICAgICAgICByZXR1cm4gcG9wb3ZlcldpZHRoIDw9IGJ1dHRvblJlY3QubGVmdFxuICAgICAgICAgID8gYnV0dG9uUmVjdC5yaWdodCAtIHBvcG92ZXJXaWR0aFxuICAgICAgICAgIDogYnV0dG9uUmVjdC5sZWZ0XG4gICAgICBjYXNlICdsdHInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGJ1dHRvblJlY3QucmlnaHQgKyBwb3BvdmVyV2lkdGggPD0gd2luZG93LmlubmVyV2lkdGhcbiAgICAgICAgICA/IGJ1dHRvblJlY3QubGVmdFxuICAgICAgICAgIDogYnV0dG9uUmVjdC5yaWdodCAtIHBvcG92ZXJXaWR0aFxuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICAjY29udGV4dE1lbnVBbmNob3JcbiAgY2xhc3M9XCJnaG9zdCBzbWFsbCBweC0zXCJcbiAgW2NsYXNzLmFjdGl2ZV09XCJpc0FjdGl2ZVwiXG4gIChjbGljayk9XCJvcGVuKClcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVudUFuY2hvclRlbXBsYXRlID8/IGRlZmF1bHRCdXR0b25UZW1wbGF0ZVwiXG4gID5cbiAgPC9uZy1jb250YWluZXI+XG48L2J1dHRvbj5cblxuPGRpdiBjbGFzcz1cImNvbnRleHQtbWVudS1vdmVybGF5XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBvcG92ZXIgcG9wb3Zlci1jb250ZXh0LW1lbnVcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3RpdmVcIlxuICAgIFtzdHlsZS50b3BdPVwidG9wXCJcbiAgICBbc3R5bGUubGVmdF09XCJsZWZ0XCJcbiAgICAjY29udGV4dE1lbnVQb3BvdmVyXG4gID5cbiAgICA8dWwgcm9sZT1cImxpc3Rib3hcIj5cbiAgICAgIDxsaVxuICAgICAgICAqbmdGb3I9XCJsZXQgbWVudUl0ZW0gb2YgbWVudUl0ZW1zXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKG1lbnVJdGVtKVwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uTWVudUl0ZW1LZXlEb3duKCRldmVudCwgbWVudUl0ZW0pXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVJdGVtVGVtcGxhdGUgPz8gZGVmYXVsdE1lbnVJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbWVudUl0ZW0gfVwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdE1lbnVJdGVtVGVtcGxhdGUgbGV0LW1lbnVJdGVtPlxuICA8c3Bhbj57eyBtZW51SXRlbS5sYWJlbCB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEJ1dHRvblRlbXBsYXRlPlxuICA8aSBjbGFzcz1cInNnLWljb24gc2ctaWNvbi1lbGxpcHNpc1wiPk9wZW4gY29udGV4dCBtZW51PC9pPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7OztBQU05RSxNQUFNLE9BQU8sdUJBQXVCO0lBdUJsQyxZQUNVLGlCQUFvQyxFQUNwQyxVQUFtQyxFQUdwQyxnQkFBK0I7UUFKOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUdwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWU7UUF6Qi9CLGNBQVMsR0FBa0IsS0FBSyxDQUFBO1FBQ2hDLGNBQVMsR0FBcUIsRUFBRSxDQUFBO1FBQ2hDLHFCQUFnQixHQUFnQyxJQUFJLENBQUE7UUFDcEQsdUJBQWtCLEdBQWdDLElBQUksQ0FBQTtRQUN0RCxrQkFBYSxHQUFHLEtBQUssQ0FBQTtRQUVwQiwyQkFBc0IsR0FDOUIsSUFBSSxZQUFZLEVBQWtCLENBQUE7UUFNcEMsYUFBUSxHQUFHLEtBQUssQ0FB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QUUsV0FBVyxJQUFJLENBQUMsQ0FBQTtRQUU5QyxRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxZQUFZLElBQUksVUFBVSxDQUFDLElBQUk7b0JBQ3BDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFlBQVk7b0JBQ2pDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFBO1lBQ3JCLEtBQUssS0FBSyxDQUFDO1lBQ1g7Z0JBQ0UsT0FBTyxVQUFVLENBQUMsS0FBSyxHQUFHLFlBQVksSUFBSSxNQUFNLENBQUMsVUFBVTtvQkFDekQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJO29CQUNqQixDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUE7U0FDdEM7SUFDSCxDQUFDOztvSEF0SFUsdUJBQXVCLDZFQTJCeEIsZUFBZTt3R0EzQmQsdUJBQXVCLDZqQkN6QnBDLG9uQ0E0Q0E7MkZEbkJhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSxrQkFBa0I7OzBCQTZCekIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxlQUFlOzRDQXhCaEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRzBCLE9BQU87c0JBQXZDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUVDLE1BQU07c0JBQXJDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQWtCOUIsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb24gfSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCdcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBPTl9TQ1JPTExfVE9LRU4gfSBmcm9tICcuLi9zaGFyZWQvb24tc2Nyb2xsLmRpcmVjdGl2ZSdcbmltcG9ydCB7IENPTlRFWFRfTUVOVV9MRUZULCBDT05URVhUX01FTlVfVE9QIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUuY29uc3RhbnRzJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctY29udGV4dC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0NvbnRleHRNZW51Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXRcbntcbiAgQElucHV0KCkgZGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cidcbiAgQElucHV0KCkgbWVudUl0ZW1zOiBEcm9wZG93bk9wdGlvbltdID0gW11cbiAgQElucHV0KCkgbWVudUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBtZW51QW5jaG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgY2xvc2VPblNjcm9sbCA9IGZhbHNlXG5cbiAgQE91dHB1dCgpIGNvbnRleHRNZW51SXRlbUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxEcm9wZG93bk9wdGlvbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJvcGRvd25PcHRpb24+KClcblxuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudVBvcG92ZXInKSBwb3BvdmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cblxuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudUFuY2hvcicpIGFuY2hvciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG5cbiAgaXNBY3RpdmUgPSBmYWxzZVxuICB0b3AgPSBDT05URVhUX01FTlVfVE9QXG4gIGxlZnQgPSBDT05URVhUX01FTlVfTEVGVFxuXG4gIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXJcbiAgbWVudUNsb3NlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoT05fU0NST0xMX1RPS0VOKVxuICAgIHB1YmxpYyBjbG9zZUNvbnRleHRNZW51OiBTdWJqZWN0PHZvaWQ+XG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbkRvY3VtZW50Q2xpY2sodGFyZ2V0OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlKClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKClcbiAgICB9KVxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZU9uU2Nyb2xsKSB7XG4gICAgICB0aGlzLm1lbnVDbG9zZVN1YnNjcmlwdGlvbiA9IHRoaXMuY2xvc2VDb250ZXh0TWVudT8uc3Vic2NyaWJlKCgpID0+XG4gICAgICAgIHRoaXMuY2xvc2UoKVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUoZG9jdW1lbnQuYm9keSlcbiAgICB0aGlzLm1lbnVDbG9zZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKVxuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5jbG9zZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBidXR0b25SZWN0ID0gdGhpcy5hbmNob3I/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcblxuICAgIGNvbnN0IGdhcEJldHdlZW5CdXR0b25BbmRQb3BvdmVyID0gM1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmNhbGN1bGF0ZUxlZnQodGhpcy5kaXJlY3Rpb24sIGJ1dHRvblJlY3QpXG4gICAgY29uc3QgdG9wID0gYnV0dG9uUmVjdC5ib3R0b20gKyBnYXBCZXR3ZWVuQnV0dG9uQW5kUG9wb3ZlcjtcblxuICAgIHRoaXMubGVmdCA9IGAke2xlZnR9cHhgXG4gICAgdGhpcy50b3AgPSBgJHt0b3B9cHhgXG4gICAgdGhpcy5pc0FjdGl2ZSA9IHRydWVcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZVxuICAgIHRoaXMudG9wID0gQ09OVEVYVF9NRU5VX1RPUFxuICAgIHRoaXMubGVmdCA9IENPTlRFWFRfTUVOVV9MRUZUXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgb25JdGVtQ2xpY2soaXRlbTogRHJvcGRvd25PcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRNZW51SXRlbUNsaWNrZWQuZW1pdChpdGVtKVxuICAgIHRoaXMuY2xvc2UoKVxuICB9XG5cbiAgb25NZW51SXRlbUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIG1lbnVJdGVtOiBEcm9wZG93bk9wdGlvbik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKG1lbnVJdGVtKVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBjYWxjdWxhdGVMZWZ0KGRpcmVjdGlvbjogc3RyaW5nLCBidXR0b25SZWN0OiBET01SZWN0KTogbnVtYmVyIHtcbiAgICBjb25zdCBwb3BvdmVyID0gdGhpcy5wb3BvdmVyPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG4gICAgY29uc3QgcG9wb3ZlcldpZHRoID0gcG9wb3Zlcj8ub2Zmc2V0V2lkdGggfHwgMFxuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3J0bCc6XG4gICAgICAgIHJldHVybiBwb3BvdmVyV2lkdGggPD0gYnV0dG9uUmVjdC5sZWZ0XG4gICAgICAgICAgPyBidXR0b25SZWN0LnJpZ2h0IC0gcG9wb3ZlcldpZHRoXG4gICAgICAgICAgOiBidXR0b25SZWN0LmxlZnRcbiAgICAgIGNhc2UgJ2x0cic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYnV0dG9uUmVjdC5yaWdodCArIHBvcG92ZXJXaWR0aCA8PSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgICAgICAgID8gYnV0dG9uUmVjdC5sZWZ0XG4gICAgICAgICAgOiBidXR0b25SZWN0LnJpZ2h0IC0gcG9wb3ZlcldpZHRoXG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uXG4gICNjb250ZXh0TWVudUFuY2hvclxuICBjbGFzcz1cImdob3N0IHNtYWxsIHB4LTNcIlxuICBbY2xhc3MuYWN0aXZlXT1cImlzQWN0aXZlXCJcbiAgKGNsaWNrKT1cIm9wZW4oKVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZW51QW5jaG9yVGVtcGxhdGUgPz8gZGVmYXVsdEJ1dHRvblRlbXBsYXRlXCJcbiAgPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYnV0dG9uPlxuXG48ZGl2IGNsYXNzPVwiY29udGV4dC1tZW51LW92ZXJsYXlcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicG9wb3ZlciBwb3BvdmVyLWNvbnRleHQtbWVudVwiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJpc0FjdGl2ZVwiXG4gICAgW3N0eWxlLnRvcF09XCJ0b3BcIlxuICAgIFtzdHlsZS5sZWZ0XT1cImxlZnRcIlxuICAgICNjb250ZXh0TWVudVBvcG92ZXJcbiAgPlxuICAgIDx1bCByb2xlPVwibGlzdGJveFwiPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCBtZW51SXRlbSBvZiBtZW51SXRlbXNcIlxuICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2sobWVudUl0ZW0pXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgKGtleWRvd24pPVwib25NZW51SXRlbUtleURvd24oJGV2ZW50LCBtZW51SXRlbSlcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVudUl0ZW1UZW1wbGF0ZSA/PyBkZWZhdWx0TWVudUl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBtZW51SXRlbSB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TWVudUl0ZW1UZW1wbGF0ZSBsZXQtbWVudUl0ZW0+XG4gIDxzcGFuPnt7IG1lbnVJdGVtLmxhYmVsIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0QnV0dG9uVGVtcGxhdGU+XG4gIDxpIGNsYXNzPVwic2ctaWNvbiBzZy1pY29uLWVsbGlwc2lzXCI+T3BlbiBjb250ZXh0IG1lbnU8L2k+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,3 @@
1
+ export const CONTEXT_MENU_TOP = '0px';
2
+ export const CONTEXT_MENU_LEFT = '0px';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQ09OVEVYVF9NRU5VX1RPUCA9ICcwcHgnO1xuXG5leHBvcnQgY29uc3QgQ09OVEVYVF9NRU5VX0xFRlQgPSAnMHB4JzsiXX0=
@@ -1,3 +1,5 @@
1
1
  export * from './modal.component';
2
2
  export * from './modal.module';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9tb2RhbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGFsLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwubW9kdWxlJ1xuIl19
3
+ export * from './modal-header.directive';
4
+ export * from './modal-footer.directive';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9tb2RhbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL21vZGFsLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwtaGVhZGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZGFsLWZvb3Rlci5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,16 @@
1
+ import { Directive, ViewContainerRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NggModalFooterDirective {
4
+ constructor(viewContainerRef) {
5
+ this.viewContainerRef = viewContainerRef;
6
+ }
7
+ }
8
+ NggModalFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalFooterDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ NggModalFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: NggModalFooterDirective, selector: "[nggModalFooter]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalFooterDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[nggModalFooter]'
14
+ }]
15
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZm9vdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsLWZvb3Rlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLNUQsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUFtQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7O29IQUQ5Qyx1QkFBdUI7d0dBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUhuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2dNb2RhbEZvb3Rlcl0nXG59KVxuZXhwb3J0IGNsYXNzIE5nZ01vZGFsRm9vdGVyRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Directive, ViewContainerRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NggModalHeaderDirective {
4
+ constructor(viewContainerRef) {
5
+ this.viewContainerRef = viewContainerRef;
6
+ }
7
+ }
8
+ NggModalHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalHeaderDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ NggModalHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: NggModalHeaderDirective, selector: "[nggModalHeader]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalHeaderDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[nggModalHeader]'
14
+ }]
15
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaGVhZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsLWhlYWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLNUQsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUFtQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7O29IQUQ5Qyx1QkFBdUI7d0dBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUhuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2dNb2RhbEhlYWRlcl0nXG59KVxuZXhwb3J0IGNsYXNzIE5nZ01vZGFsSGVhZGVyRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG59XG4iXX0=
@@ -1,6 +1,8 @@
1
- import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
2
2
  import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
3
3
  import { disableBodyScroll, enableBodyScroll, } from "body-scroll-lock";
4
+ import { NggModalHeaderDirective } from './modal-header.directive';
5
+ import { NggModalFooterDirective } from './modal-footer.directive';
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "@angular/cdk/a11y";
6
8
  import * as i2 from "@angular/common";
@@ -37,7 +39,12 @@ export class NggModalComponent {
37
39
  if (this.trapFocus) {
38
40
  this.enableFocusTrap();
39
41
  }
40
- disableBodyScroll(this.ref.nativeElement);
42
+ disableBodyScroll(this.ref.nativeElement, {
43
+ allowTouchMove: (el) => {
44
+ // Allow touchmove for elements inside modal, its required for scroll to work on iOS devices
45
+ return this.ref.nativeElement.contains(el);
46
+ }
47
+ });
41
48
  }
42
49
  else {
43
50
  this.disableFocusTrap();
@@ -90,10 +97,10 @@ export class NggModalComponent {
90
97
  }
91
98
  }
92
99
  NggModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalComponent, deps: [{ token: i0.ElementRef }, { token: i1.ConfigurableFocusTrapFactory }], target: i0.ɵɵFactoryTarget.Component });
93
- NggModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggModalComponent, selector: "ngg-modal", inputs: { modalType: "modalType", header: "header", confirmLabel: "confirmLabel", dismissLabel: "dismissLabel", size: "size", trapFocus: "trapFocus", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange", closed: "closed", confirm: "confirm", dismiss: "dismiss" }, host: { properties: { "class.open": "this.open" } }, viewQueries: [{ propertyName: "backdropRef", first: true, predicate: ["backdrop"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"isOpen\" [ngSwitch]=\"modalType\">\n <aside data-testid=\"modal\" *ngSwitchCase=\"'slideout'\" role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </aside>\n <main data-testid=\"modal\" *ngSwitchCase=\"'takeover'\" role=\"dialog\" aria-modal=\"true\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </main>\n <section data-testid=\"modal\" *ngSwitchDefault role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </section>\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div #backdrop data-testid=\"modal-backdrop\" class=\"backdrop\" (click)=\"this.handleBackdropClick($event)\" [attr.aria-hidden]=\"true\"></div>\n</ng-container>", styles: [":host.open{height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:var(--sg-z-index-modal-backdrop)}:host.open>section[role=dialog]{left:50%;top:50%;transform:translate(-50%,-50%)}.body::-webkit-scrollbar{background-color:#f8f8f8;height:10px;width:10px}.body::-webkit-scrollbar-thumb{background-color:#cecece}.body::-webkit-scrollbar-track{background-color:#f8f8f8;box-shadow:inset 0 0 10px #00000040}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "component", type: i0.forwardRef(function () { return NggModalHeaderComponent; }), selector: "[ngg-modal-header]", inputs: ["header"], outputs: ["closed"] }, { kind: "component", type: i0.forwardRef(function () { return NggModalBodyComponent; }), selector: "[ngg-modal-body]" }, { kind: "component", type: i0.forwardRef(function () { return NggModalFooterComponent; }), selector: "[ngg-modal-footer]", inputs: ["dismissLabel", "confirmLabel"], outputs: ["dismiss", "confirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
100
+ NggModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggModalComponent, selector: "ngg-modal", inputs: { modalType: "modalType", header: "header", confirmLabel: "confirmLabel", dismissLabel: "dismissLabel", size: "size", hideHeader: "hideHeader", hideFooter: "hideFooter", trapFocus: "trapFocus", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange", closed: "closed", confirm: "confirm", dismiss: "dismiss" }, host: { properties: { "class.open": "this.open" } }, queries: [{ propertyName: "modalHeaderContent", first: true, predicate: NggModalHeaderDirective, descendants: true }, { propertyName: "modalFooterContent", first: true, predicate: NggModalFooterDirective, descendants: true }], viewQueries: [{ propertyName: "backdropRef", first: true, predicate: ["backdrop"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"isOpen\" [ngSwitch]=\"modalType\">\n <aside data-testid=\"modal\" *ngSwitchCase=\"'slideout'\" role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </aside>\n <main data-testid=\"modal\" *ngSwitchCase=\"'takeover'\" role=\"dialog\" aria-modal=\"true\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </main>\n <section data-testid=\"modal\" *ngSwitchDefault role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </section>\n <ng-template #contentTemplate>\n <ng-container *ngIf=\"!hideHeader\">\n <header *ngIf=\"!modalHeaderContent; else headerContentTemplate\" ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n </ng-container>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"bodyContentTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"!hideFooter && (dismissLabel || confirmLabel)\">\n <footer *ngIf=\"!modalFooterContent; else footerContentTemplate\" ngg-modal-footer data-testid=\"modal-footer\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </ng-container>\n </ng-template>\n <ng-template #headerContentTemplate>\n <header data-testid=\"modal-header\">\n <ng-content select=\"[nggModalHeader]\"></ng-content>\n </header>\n </ng-template>\n <ng-template #bodyContentTemplate>\n <ng-content></ng-content>\n </ng-template>\n <ng-template #footerContentTemplate>\n <footer data-testid=\"modal-footer\">\n <ng-content select=\"[nggModalFooter]\"></ng-content>\n </footer>\n </ng-template>\n <div #backdrop data-testid=\"modal-backdrop\" class=\"backdrop\" (click)=\"this.handleBackdropClick($event)\" [attr.aria-hidden]=\"true\"></div>\n</ng-container>\n", styles: [":host.open{height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:var(--sg-z-index-modal-backdrop)}:host.open>section[role=dialog]{left:50%;top:50%;transform:translate(-50%,-50%)}.body::-webkit-scrollbar{background-color:#f8f8f8;height:10px;width:10px}.body::-webkit-scrollbar-thumb{background-color:#cecece}.body::-webkit-scrollbar-track{background-color:#f8f8f8;box-shadow:inset 0 0 10px #00000040}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "component", type: i0.forwardRef(function () { return NggModalHeaderComponent; }), selector: "[ngg-modal-header]", inputs: ["header"], outputs: ["closed"] }, { kind: "component", type: i0.forwardRef(function () { return NggModalBodyComponent; }), selector: "[ngg-modal-body]" }, { kind: "component", type: i0.forwardRef(function () { return NggModalFooterComponent; }), selector: "[ngg-modal-footer]", inputs: ["dismissLabel", "confirmLabel"], outputs: ["dismiss", "confirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
94
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalComponent, decorators: [{
95
102
  type: Component,
96
- args: [{ selector: 'ngg-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"isOpen\" [ngSwitch]=\"modalType\">\n <aside data-testid=\"modal\" *ngSwitchCase=\"'slideout'\" role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </aside>\n <main data-testid=\"modal\" *ngSwitchCase=\"'takeover'\" role=\"dialog\" aria-modal=\"true\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </main>\n <section data-testid=\"modal\" *ngSwitchDefault role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </section>\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div #backdrop data-testid=\"modal-backdrop\" class=\"backdrop\" (click)=\"this.handleBackdropClick($event)\" [attr.aria-hidden]=\"true\"></div>\n</ng-container>", styles: [":host.open{height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:var(--sg-z-index-modal-backdrop)}:host.open>section[role=dialog]{left:50%;top:50%;transform:translate(-50%,-50%)}.body::-webkit-scrollbar{background-color:#f8f8f8;height:10px;width:10px}.body::-webkit-scrollbar-thumb{background-color:#cecece}.body::-webkit-scrollbar-track{background-color:#f8f8f8;box-shadow:inset 0 0 10px #00000040}\n"] }]
103
+ args: [{ selector: 'ngg-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"isOpen\" [ngSwitch]=\"modalType\">\n <aside data-testid=\"modal\" *ngSwitchCase=\"'slideout'\" role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </aside>\n <main data-testid=\"modal\" *ngSwitchCase=\"'takeover'\" role=\"dialog\" aria-modal=\"true\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </main>\n <section data-testid=\"modal\" *ngSwitchDefault role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </section>\n <ng-template #contentTemplate>\n <ng-container *ngIf=\"!hideHeader\">\n <header *ngIf=\"!modalHeaderContent; else headerContentTemplate\" ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n </ng-container>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"bodyContentTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"!hideFooter && (dismissLabel || confirmLabel)\">\n <footer *ngIf=\"!modalFooterContent; else footerContentTemplate\" ngg-modal-footer data-testid=\"modal-footer\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </ng-container>\n </ng-template>\n <ng-template #headerContentTemplate>\n <header data-testid=\"modal-header\">\n <ng-content select=\"[nggModalHeader]\"></ng-content>\n </header>\n </ng-template>\n <ng-template #bodyContentTemplate>\n <ng-content></ng-content>\n </ng-template>\n <ng-template #footerContentTemplate>\n <footer data-testid=\"modal-footer\">\n <ng-content select=\"[nggModalFooter]\"></ng-content>\n </footer>\n </ng-template>\n <div #backdrop data-testid=\"modal-backdrop\" class=\"backdrop\" (click)=\"this.handleBackdropClick($event)\" [attr.aria-hidden]=\"true\"></div>\n</ng-container>\n", styles: [":host.open{height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:var(--sg-z-index-modal-backdrop)}:host.open>section[role=dialog]{left:50%;top:50%;transform:translate(-50%,-50%)}.body::-webkit-scrollbar{background-color:#f8f8f8;height:10px;width:10px}.body::-webkit-scrollbar-thumb{background-color:#cecece}.body::-webkit-scrollbar-track{background-color:#f8f8f8;box-shadow:inset 0 0 10px #00000040}\n"] }]
97
104
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfigurableFocusTrapFactory }]; }, propDecorators: { modalType: [{
98
105
  type: Input
99
106
  }], header: [{
@@ -104,6 +111,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
104
111
  type: Input
105
112
  }], size: [{
106
113
  type: Input
114
+ }], hideHeader: [{
115
+ type: Input
116
+ }], hideFooter: [{
117
+ type: Input
107
118
  }], trapFocus: [{
108
119
  type: Input
109
120
  }], isOpen: [{
@@ -122,6 +133,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
122
133
  }], backdropRef: [{
123
134
  type: ViewChild,
124
135
  args: ['backdrop']
136
+ }], modalHeaderContent: [{
137
+ type: ContentChild,
138
+ args: [NggModalHeaderDirective]
139
+ }], modalFooterContent: [{
140
+ type: ContentChild,
141
+ args: [NggModalFooterDirective]
125
142
  }] } });
126
143
  export class NggModalHeaderComponent {
127
144
  constructor() {
@@ -193,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
193
210
  }], confirm: [{
194
211
  type: Output
195
212
  }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkosT0FBTyxFQUF5Qiw0QkFBNEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFRMUIsTUFBTSxPQUFPLGlCQUFpQjtJQW1EMUIsWUFBb0IsR0FBNEIsRUFBVSw0QkFBMEQ7UUFBaEcsUUFBRyxHQUFILEdBQUcsQ0FBeUI7UUFBVSxpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQThCO1FBWG5HLGlCQUFZLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEUsV0FBTSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ2xFLFlBQU8sR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUNuRSxZQUFPLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFTaEYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBL0NELElBQW9CLFNBQVM7UUFDekIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLFNBQVMsQ0FBQyxLQUEwQjtR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QztRQUN2RCxZQUFPLEdBQTZCLElBQUksWUFBWSxFQUFFLENBQUM7S0FTcEU7SUFQRyxhQUFhLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFpQjtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOztvSEFaUSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix1TEFMdEI7OztLQUdUOzJGQUVRLHVCQUF1QjtrQkFUbkMsU0FBUzsrQkFFSSxvQkFBb0IsWUFFcEI7OztLQUdUOzhCQUdRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbFR5cGUsIFNpemUgfSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCc7XG5pbXBvcnQgeyBDb25maWd1cmFibGVGb2N1c1RyYXAsIENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICAgIGRpc2FibGVCb2R5U2Nyb2xsLFxuICAgIGVuYWJsZUJvZHlTY3JvbGwsXG59IGZyb20gXCJib2R5LXNjcm9sbC1sb2NrXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmdnLW1vZGFsJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmdnTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcHVibGljIG1vZGFsVHlwZT86IE1vZGFsVHlwZVxuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWFkZXI/OiBzdHJpbmdcbiAgICBASW5wdXQoKSBwdWJsaWMgY29uZmlybUxhYmVsPzogc3RyaW5nXG4gICAgQElucHV0KCkgcHVibGljIGRpc21pc3NMYWJlbD86IHN0cmluZ1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaXplPzogU2l6ZVxuICAgIEBJbnB1dCgpIHB1YmxpYyBnZXQgdHJhcEZvY3VzKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJhcEZvY3VzO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHRyYXBGb2N1cyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl90cmFwRm9jdXMgPSB2YWx1ZTtcbiAgICAgICAgXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlRm9jdXNUcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVGb2N1c1RyYXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJhcEZvY3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVGb2N1c1RyYXAoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGlzYWJsZUJvZHlTY3JvbGwodGhpcy5yZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVGb2N1c1RyYXAoKTtcbiAgICAgICAgICAgIGVuYWJsZUJvZHlTY3JvbGwodGhpcy5yZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGlzT3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2VkOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBjb25maXJtOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBkaXNtaXNzOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9wZW4nKSBnZXQgb3BlbigpIHsgcmV0dXJuIHRoaXMuaXNPcGVuOyB9XG4gICAgQFZpZXdDaGlsZCgnYmFja2Ryb3AnKSBwcml2YXRlIGJhY2tkcm9wUmVmPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBwcml2YXRlIF9pc09wZW4/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX3RyYXBGb2N1cz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBjb25maWd1cmFibGVGb2N1c1RyYXA6IENvbmZpZ3VyYWJsZUZvY3VzVHJhcDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBjb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5OiBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5KSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhYmxlRm9jdXNUcmFwID0gdGhpcy5jb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiB0aGlzLnRyYXBGb2N1cykgXG4gICAgICAgICAgIHRoaXMuZW5hYmxlRm9jdXNUcmFwKCk7IFxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVGb2N1c1RyYXAoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2VDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVCYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQgPT0gdGhpcy5iYWNrZHJvcFJlZj8ubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZURpc21pc3MoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kaXNtaXNzLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVDb25maXJtKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuY29uZmlybS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlTW9kYWwoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlRm9jdXNUcmFwKCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWd1cmFibGVGb2N1c1RyYXApIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhYmxlRm9jdXNUcmFwLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmFibGVGb2N1c1RyYXAuZm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgZGlzYWJsZUZvY3VzVHJhcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhYmxlRm9jdXNUcmFwKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYWJsZUZvY3VzVHJhcC5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maWd1cmFibGVGb2N1c1RyYXA/LmRlc3Ryb3koKTtcbiAgICAgICAgZW5hYmxlQm9keVNjcm9sbCh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbbmdnLW1vZGFsLWhlYWRlcl0nLFxuICAgIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8aDMgZGF0YS10ZXN0aWQ9XCJtb2RhbC1oZWFkZXItdGV4dFwiPnt7aGVhZGVyfX08L2gzPlxuICAgIDxidXR0b24gZGF0YS10ZXN0aWQ9XCJtb2RhbC1jbG9zZS1idXR0b25cIiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cInRoaXMuaGFuZGxlQ2xvc2UoJGV2ZW50KVwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgIDxpPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIE5nZ01vZGFsSGVhZGVyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBoZWFkZXI/OiBzdHJpbmc7XG4gICAgQE91dHB1dCgpIGNsb3NlZDogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgaGFuZGxlQ2xvc2UoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG59XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbbmdnLW1vZGFsLWJvZHldJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgTmdnTW9kYWxCb2R5Q29tcG9uZW50IHtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tuZ2ctbW9kYWwtZm9vdGVyXScsXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b24gZGF0YS10ZXN0aWQ9XCJtb2RhbC1kaXNtaXNzLWJ1dHRvblwiICpuZ0lmPVwiZGlzbWlzc0xhYmVsXCIgY2xhc3M9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwidGhpcy5oYW5kbGVEaXNtaXNzKCRldmVudClcIj57e2Rpc21pc3NMYWJlbH19PC9idXR0b24+XG4gICAgPGJ1dHRvbiBkYXRhLXRlc3RpZD1cIm1vZGFsLWNvbmZpcm0tYnV0dG9uXCIgKm5nSWY9XCJjb25maXJtTGFiZWxcIiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwidGhpcy5oYW5kbGVDb25maXJtKCRldmVudClcIj57e2NvbmZpcm1MYWJlbH19PC9idXR0b24+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dNb2RhbEZvb3RlckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZGlzbWlzc0xhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbmZpcm1MYWJlbD86IHN0cmluZztcbiAgICBAT3V0cHV0KCkgZGlzbWlzczogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBjb25maXJtOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBoYW5kbGVEaXNtaXNzKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGlzbWlzcy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBoYW5kbGVDb25maXJtKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuY29uZmlybS5lbWl0KGV2ZW50KTtcbiAgICB9XG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3BlblwiIFtuZ1N3aXRjaF09XCJtb2RhbFR5cGVcIj5cbiAgICA8YXNpZGUgZGF0YS10ZXN0aWQ9XCJtb2RhbFwiICpuZ1N3aXRjaENhc2U9XCInc2xpZGVvdXQnXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbW9kYWw9XCJ0cnVlXCIgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbSdcIiBbY2xhc3MubWVkaXVtXT1cInNpemUgPT09ICdtZCdcIiBbY2xhc3MubGFyZ2VdPVwic2l6ZSA9PT0gJ2xnJ1wiPlxuICAgICAgICA8aGVhZGVyIG5nZy1tb2RhbC1oZWFkZXIgZGF0YS10ZXN0aWQ9XCJtb2RhbC1oZWFkZXJcIiBbaGVhZGVyXT1cImhlYWRlclwiIChjbG9zZWQpPVwidGhpcy5oYW5kbGVDbG9zZUNsaWNrKCRldmVudClcIj48L2hlYWRlcj5cbiAgICAgICAgPGRpdiBuZ2ctbW9kYWwtYm9keSBkYXRhLXRlc3RpZD1cIm1vZGFsLWJvZHlcIiBjbGFzcz1cImJvZHlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VHBsXCI+PC9uZy1jb250YWluZXI+IFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZvb3RlciBuZ2ctbW9kYWwtZm9vdGVyIGRhdGEtdGVzdGlkPVwibW9kYWwtZm9vdGVyXCIgKm5nSWY9XCJkaXNtaXNzTGFiZWwgfHwgY29uZmlybUxhYmVsXCIgW2Rpc21pc3NMYWJlbF09XCJkaXNtaXNzTGFiZWxcIiBbY29uZmlybUxhYmVsXT1cImNvbmZpcm1MYWJlbFwiIChkaXNtaXNzKT1cInRoaXMuaGFuZGxlRGlzbWlzcygkZXZlbnQpXCIgKGNvbmZpcm0pPVwidGhpcy5oYW5kbGVDb25maXJtKCRldmVudClcIj48L2Zvb3Rlcj5cbiAgICA8L2FzaWRlPlxuICAgIDxtYWluIGRhdGEtdGVzdGlkPVwibW9kYWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ3Rha2VvdmVyJ1wiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLW1vZGFsPVwidHJ1ZVwiPlxuICAgICAgICA8aGVhZGVyIG5nZy1tb2RhbC1oZWFkZXIgZGF0YS10ZXN0aWQ9XCJtb2RhbC1oZWFkZXJcIiBbaGVhZGVyXT1cImhlYWRlclwiIChjbG9zZWQpPVwidGhpcy5oYW5kbGVDbG9zZUNsaWNrKCRldmVudClcIj48L2hlYWRlcj5cbiAgICAgICAgPGRpdiBuZ2ctbW9kYWwtYm9keSBkYXRhLXRlc3RpZD1cIm1vZGFsLWJvZHlcIiBjbGFzcz1cImJvZHlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VHBsXCI+PC9uZy1jb250YWluZXI+IFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZvb3RlciBuZ2ctbW9kYWwtZm9vdGVyIGRhdGEtdGVzdGlkPVwibW9kYWwtZm9vdGVyXCIgKm5nSWY9XCJkaXNtaXNzTGFiZWwgfHwgY29uZmlybUxhYmVsXCIgW2Rpc21pc3NMYWJlbF09XCJkaXNtaXNzTGFiZWxcIiBbY29uZmlybUxhYmVsXT1cImNvbmZpcm1MYWJlbFwiIChkaXNtaXNzKT1cInRoaXMuaGFuZGxlRGlzbWlzcygkZXZlbnQpXCIgKGNvbmZpcm0pPVwidGhpcy5oYW5kbGVDb25maXJtKCRldmVudClcIj48L2Zvb3Rlcj5cbiAgICA8L21haW4+XG4gICAgPHNlY3Rpb24gZGF0YS10ZXN0aWQ9XCJtb2RhbFwiICpuZ1N3aXRjaERlZmF1bHQgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbW9kYWw9XCJ0cnVlXCIgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbSdcIiBbY2xhc3MubWVkaXVtXT1cInNpemUgPT09ICdtZCdcIiBbY2xhc3MubGFyZ2VdPVwic2l6ZSA9PT0gJ2xnJ1wiPlxuICAgICAgICA8aGVhZGVyIG5nZy1tb2RhbC1oZWFkZXIgZGF0YS10ZXN0aWQ9XCJtb2RhbC1oZWFkZXJcIiBbaGVhZGVyXT1cImhlYWRlclwiIChjbG9zZWQpPVwidGhpcy5oYW5kbGVDbG9zZUNsaWNrKCRldmVudClcIj48L2hlYWRlcj5cbiAgICAgICAgPGRpdiBuZ2ctbW9kYWwtYm9keSBkYXRhLXRlc3RpZD1cIm1vZGFsLWJvZHlcIiBjbGFzcz1cImJvZHlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VHBsXCI+PC9uZy1jb250YWluZXI+IFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZvb3RlciBuZ2ctbW9kYWwtZm9vdGVyIGRhdGEtdGVzdGlkPVwibW9kYWwtZm9vdGVyXCIgKm5nSWY9XCJkaXNtaXNzTGFiZWwgfHwgY29uZmlybUxhYmVsXCIgW2Rpc21pc3NMYWJlbF09XCJkaXNtaXNzTGFiZWxcIiBbY29uZmlybUxhYmVsXT1cImNvbmZpcm1MYWJlbFwiIChkaXNtaXNzKT1cInRoaXMuaGFuZGxlRGlzbWlzcygkZXZlbnQpXCIgKGNvbmZpcm0pPVwidGhpcy5oYW5kbGVDb25maXJtKCRldmVudClcIj48L2Zvb3Rlcj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPG5nLXRlbXBsYXRlICNjb250ZW50VHBsPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiAjYmFja2Ryb3AgZGF0YS10ZXN0aWQ9XCJtb2RhbC1iYWNrZHJvcFwiIGNsYXNzPVwiYmFja2Ryb3BcIiAoY2xpY2spPVwidGhpcy5oYW5kbGVCYWNrZHJvcENsaWNrKCRldmVudClcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+PC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJLLE9BQU8sRUFBeUIsNEJBQTRCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNuQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBUW5FLE1BQU0sT0FBTyxpQkFBaUI7SUE0RDFCLFlBQW9CLEdBQTRCLEVBQVUsNEJBQTBEO1FBQWhHLFFBQUcsR0FBSCxHQUFHLENBQXlCO1FBQVUsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE4QjtRQWJuRyxpQkFBWSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xFLFdBQU0sR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUNsRSxZQUFPLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFDbkUsWUFBTyxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBV2hGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENB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QWlCO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7O29IQU5RLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHVIQVJ0Qjs7Ozs7O0tBTVQ7MkZBRVEsdUJBQXVCO2tCQVpuQyxTQUFTOytCQUVJLG9CQUFvQixZQUVwQjs7Ozs7O0tBTVQ7OEJBR1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTs7QUFjWCxNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO3NHQUFyQixxQkFBcUIsd0RBRnBCLDJCQUEyQjsyRkFFNUIscUJBQXFCO2tCQU5qQyxTQUFTOytCQUVJLGtCQUFrQixZQUVsQiwyQkFBMkI7O0FBY3pDLE1BQU0sT0FBTyx1QkFBdUI7SUFUcEM7UUFZYyxZQUFPLEdBQTZCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsWUFBTyxHQUE2QixJQUFJLFlBQVksRUFBRSxDQUFDO0tBU3BFO0lBUEcsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7b0hBWlEsdUJBQXVCO3dHQUF2Qix1QkFBdUIsdUxBTHRCOzs7S0FHVDsyRkFFUSx1QkFBdUI7a0JBVG5DLFNBQVM7K0JBRUksb0JBQW9CLFlBRXBCOzs7S0FHVDs4QkFHUSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbFR5cGUsIFNpemUgfSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCc7XG5pbXBvcnQgeyBDb25maWd1cmFibGVGb2N1c1RyYXAsIENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICAgIGRpc2FibGVCb2R5U2Nyb2xsLFxuICAgIGVuYWJsZUJvZHlTY3JvbGwsXG59IGZyb20gXCJib2R5LXNjcm9sbC1sb2NrXCI7XG5pbXBvcnQgeyBOZ2dNb2RhbEhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwtaGVhZGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ2dNb2RhbEZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwtZm9vdGVyLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmdnLW1vZGFsJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmdnTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcHVibGljIG1vZGFsVHlwZT86IE1vZGFsVHlwZVxuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWFkZXI/OiBzdHJpbmdcbiAgICBASW5wdXQoKSBwdWJsaWMgY29uZmlybUxhYmVsPzogc3RyaW5nXG4gICAgQElucHV0KCkgcHVibGljIGRpc21pc3NMYWJlbD86IHN0cmluZ1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaXplPzogU2l6ZVxuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWRlSGVhZGVyPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaGlkZUZvb3Rlcj86IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGdldCB0cmFwRm9jdXMoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFwRm9jdXM7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdHJhcEZvY3VzKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3RyYXBGb2N1cyA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlRm9jdXNUcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVGb2N1c1RyYXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJhcEZvY3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVGb2N1c1RyYXAoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGlzYWJsZUJvZHlTY3JvbGwodGhpcy5yZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgICAgIGFsbG93VG91Y2hNb3ZlOiAoZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgdG91Y2htb3ZlIGZvciBlbGVtZW50cyBpbnNpZGUgbW9kYWwsIGl0cyByZXF1aXJlZCBmb3Igc2Nyb2xsIHRvIHdvcmsgb24gaU9TIGRldmljZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlRm9jdXNUcmFwKCk7XG4gICAgICAgICAgICBlbmFibGVCb2R5U2Nyb2xsKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBpc09wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIGNsb3NlZDogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgY29uZmlybTogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgZGlzbWlzczogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vcGVuJykgZ2V0IG9wZW4oKSB7IHJldHVybiB0aGlzLmlzT3BlbjsgfVxuICAgIEBWaWV3Q2hpbGQoJ2JhY2tkcm9wJykgcHJpdmF0ZSBiYWNrZHJvcFJlZj86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgQENvbnRlbnRDaGlsZChOZ2dNb2RhbEhlYWRlckRpcmVjdGl2ZSkgcHVibGljIG1vZGFsSGVhZGVyQ29udGVudD86IE5nZ01vZGFsSGVhZGVyRGlyZWN0aXZlO1xuICAgIEBDb250ZW50Q2hpbGQoTmdnTW9kYWxGb290ZXJEaXJlY3RpdmUpIHB1YmxpYyBtb2RhbEZvb3RlckNvbnRlbnQ/OiBOZ2dNb2RhbEZvb3RlckRpcmVjdGl2ZTtcbiAgICBwcml2YXRlIF9pc09wZW4/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX3RyYXBGb2N1cz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBjb25maWd1cmFibGVGb2N1c1RyYXA6IENvbmZpZ3VyYWJsZUZvY3VzVHJhcDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBjb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5OiBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5KSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhYmxlRm9jdXNUcmFwID0gdGhpcy5jb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiB0aGlzLnRyYXBGb2N1cylcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlRm9jdXNUcmFwKCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZvY3VzVHJhcCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVDbG9zZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUJhY2tkcm9wQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PSB0aGlzLmJhY2tkcm9wUmVmPy5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgdGhpcy5jbG9zZU1vZGFsKGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRGlzbWlzcyhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmRpc21pc3MuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUNvbmZpcm0oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jb25maXJtLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VNb2RhbChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodGhpcy5pc09wZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVGb2N1c1RyYXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYWJsZUZvY3VzVHJhcCkge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmFibGVGb2N1c1RyYXAuZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYWJsZUZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc2FibGVGb2N1c1RyYXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYWJsZUZvY3VzVHJhcCkge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmFibGVGb2N1c1RyYXAuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhYmxlRm9jdXNUcmFwPy5kZXN0cm95KCk7XG4gICAgICAgIGVuYWJsZUJvZHlTY3JvbGwodGhpcy5yZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW25nZy1tb2RhbC1oZWFkZXJdJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGgzIGRhdGEtdGVzdGlkPVwibW9kYWwtaGVhZGVyLXRleHRcIj57e2hlYWRlcn19PC9oMz5cbiAgICA8YnV0dG9uIGRhdGEtdGVzdGlkPVwibW9kYWwtY2xvc2UtYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIChjbGljayk9XCJ0aGlzLmhhbmRsZUNsb3NlKCRldmVudClcIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgICA8aT48L2k+XG4gICAgPC9idXR0b24+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dNb2RhbEhlYWRlckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgaGVhZGVyPzogc3RyaW5nO1xuICAgIEBPdXRwdXQoKSBjbG9zZWQ6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICAgIGhhbmRsZUNsb3NlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW25nZy1tb2RhbC1ib2R5XScsXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIE5nZ01vZGFsQm9keUNvbXBvbmVudCB7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbbmdnLW1vZGFsLWZvb3Rlcl0nLFxuICAgIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8YnV0dG9uIGRhdGEtdGVzdGlkPVwibW9kYWwtZGlzbWlzcy1idXR0b25cIiAqbmdJZj1cImRpc21pc3NMYWJlbFwiIGNsYXNzPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cInRoaXMuaGFuZGxlRGlzbWlzcygkZXZlbnQpXCI+e3tkaXNtaXNzTGFiZWx9fTwvYnV0dG9uPlxuICAgIDxidXR0b24gZGF0YS10ZXN0aWQ9XCJtb2RhbC1jb25maXJtLWJ1dHRvblwiICpuZ0lmPVwiY29uZmlybUxhYmVsXCIgY2xhc3M9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInRoaXMuaGFuZGxlQ29uZmlybSgkZXZlbnQpXCI+e3tjb25maXJtTGFiZWx9fTwvYnV0dG9uPlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdnTW9kYWxGb290ZXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGRpc21pc3NMYWJlbD86IHN0cmluZztcbiAgICBASW5wdXQoKSBjb25maXJtTGFiZWw/OiBzdHJpbmc7XG4gICAgQE91dHB1dCgpIGRpc21pc3M6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgY29uZmlybTogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgaGFuZGxlRGlzbWlzcyhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmRpc21pc3MuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ29uZmlybShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmNvbmZpcm0uZW1pdChldmVudCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3BlblwiIFtuZ1N3aXRjaF09XCJtb2RhbFR5cGVcIj5cbiAgICA8YXNpZGUgZGF0YS10ZXN0aWQ9XCJtb2RhbFwiICpuZ1N3aXRjaENhc2U9XCInc2xpZGVvdXQnXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbW9kYWw9XCJ0cnVlXCIgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbSdcIiBbY2xhc3MubWVkaXVtXT1cInNpemUgPT09ICdtZCdcIiBbY2xhc3MubGFyZ2VdPVwic2l6ZSA9PT0gJ2xnJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9hc2lkZT5cbiAgICA8bWFpbiBkYXRhLXRlc3RpZD1cIm1vZGFsXCIgKm5nU3dpdGNoQ2FzZT1cIid0YWtlb3ZlcidcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbWFpbj5cbiAgICA8c2VjdGlvbiBkYXRhLXRlc3RpZD1cIm1vZGFsXCIgKm5nU3dpdGNoRGVmYXVsdCByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIiBbY2xhc3Muc21hbGxdPVwic2l6ZSA9PT0gJ3NtJ1wiIFtjbGFzcy5tZWRpdW1dPVwic2l6ZSA9PT0gJ21kJ1wiIFtjbGFzcy5sYXJnZV09XCJzaXplID09PSAnbGcnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUhlYWRlclwiPlxuICAgICAgICAgICAgPGhlYWRlciAqbmdJZj1cIiFtb2RhbEhlYWRlckNvbnRlbnQ7IGVsc2UgaGVhZGVyQ29udGVudFRlbXBsYXRlXCIgbmdnLW1vZGFsLWhlYWRlciBkYXRhLXRlc3RpZD1cIm1vZGFsLWhlYWRlclwiIFtoZWFkZXJdPVwiaGVhZGVyXCIgKGNsb3NlZCk9XCJ0aGlzLmhhbmRsZUNsb3NlQ2xpY2soJGV2ZW50KVwiPjwvaGVhZGVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBuZ2ctbW9kYWwtYm9keSBkYXRhLXRlc3RpZD1cIm1vZGFsLWJvZHlcIiBjbGFzcz1cImJvZHlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5Q29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGVGb290ZXIgJiYgKGRpc21pc3NMYWJlbCB8fCBjb25maXJtTGFiZWwpXCI+XG4gICAgICAgICAgICA8Zm9vdGVyICpuZ0lmPVwiIW1vZGFsRm9vdGVyQ29udGVudDsgZWxzZSBmb290ZXJDb250ZW50VGVtcGxhdGVcIiBuZ2ctbW9kYWwtZm9vdGVyIGRhdGEtdGVzdGlkPVwibW9kYWwtZm9vdGVyXCIgW2Rpc21pc3NMYWJlbF09XCJkaXNtaXNzTGFiZWxcIiBbY29uZmlybUxhYmVsXT1cImNvbmZpcm1MYWJlbFwiIChkaXNtaXNzKT1cInRoaXMuaGFuZGxlRGlzbWlzcygkZXZlbnQpXCIgKGNvbmZpcm0pPVwidGhpcy5oYW5kbGVDb25maXJtKCRldmVudClcIj48L2Zvb3Rlcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlckNvbnRlbnRUZW1wbGF0ZT5cbiAgICAgICAgPGhlYWRlciBkYXRhLXRlc3RpZD1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25nZ01vZGFsSGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2JvZHlDb250ZW50VGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyQ29udGVudFRlbXBsYXRlPlxuICAgICAgICA8Zm9vdGVyIGRhdGEtdGVzdGlkPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmdnTW9kYWxGb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgI2JhY2tkcm9wIGRhdGEtdGVzdGlkPVwibW9kYWwtYmFja2Ryb3BcIiBjbGFzcz1cImJhY2tkcm9wXCIgKGNsaWNrKT1cInRoaXMuaGFuZGxlQmFja2Ryb3BDbGljaygkZXZlbnQpXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -2,15 +2,21 @@ import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { A11yModule } from '@angular/cdk/a11y';
4
4
  import { NggModalBodyComponent, NggModalComponent, NggModalFooterComponent, NggModalHeaderComponent } from './modal.component';
5
+ import { NggModalHeaderDirective } from './modal-header.directive';
6
+ import { NggModalFooterDirective } from './modal-footer.directive';
5
7
  import * as i0 from "@angular/core";
6
8
  const DECLARATIONS = [
7
9
  NggModalComponent,
8
10
  NggModalHeaderComponent,
9
11
  NggModalBodyComponent,
10
- NggModalFooterComponent
12
+ NggModalFooterComponent,
13
+ NggModalHeaderDirective,
14
+ NggModalFooterDirective
11
15
  ];
12
16
  const EXPORTS = [
13
17
  NggModalComponent,
18
+ NggModalHeaderDirective,
19
+ NggModalFooterDirective
14
20
  ];
15
21
  export class NggModalModule {
16
22
  }
@@ -18,7 +24,11 @@ NggModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version:
18
24
  NggModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NggModalModule, declarations: [NggModalComponent,
19
25
  NggModalHeaderComponent,
20
26
  NggModalBodyComponent,
21
- NggModalFooterComponent], imports: [A11yModule, CommonModule], exports: [NggModalComponent] });
27
+ NggModalFooterComponent,
28
+ NggModalHeaderDirective,
29
+ NggModalFooterDirective], imports: [A11yModule, CommonModule], exports: [NggModalComponent,
30
+ NggModalHeaderDirective,
31
+ NggModalFooterDirective] });
22
32
  NggModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalModule, imports: [A11yModule, CommonModule] });
23
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalModule, decorators: [{
24
34
  type: NgModule,
@@ -28,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
28
38
  declarations: DECLARATIONS,
29
39
  }]
30
40
  }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvbW9kYWwvbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFL0gsTUFBTSxZQUFZLEdBQUc7SUFDakIsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIsdUJBQXVCO0NBQzFCLENBQUM7QUFFRixNQUFNLE9BQU8sR0FBRztJQUNaLGlCQUFpQjtDQUNwQixDQUFDO0FBT0YsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7NEdBQWQsY0FBYyxpQkFmdkIsaUJBQWlCO1FBQ2pCLHVCQUF1QjtRQUN2QixxQkFBcUI7UUFDckIsdUJBQXVCLGFBUVosVUFBVSxFQUFFLFlBQVksYUFKbkMsaUJBQWlCOzRHQVFSLGNBQWMsWUFKWixVQUFVLEVBQUUsWUFBWTsyRkFJMUIsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBRSxVQUFVLEVBQUUsWUFBWSxDQUFFO29CQUNyQyxPQUFPLEVBQUUsT0FBTztvQkFDaEIsWUFBWSxFQUFFLFlBQVk7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBOZ2dNb2RhbEJvZHlDb21wb25lbnQsIE5nZ01vZGFsQ29tcG9uZW50LCBOZ2dNb2RhbEZvb3RlckNvbXBvbmVudCwgTmdnTW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XG5cbmNvbnN0IERFQ0xBUkFUSU9OUyA9IFtcbiAgICBOZ2dNb2RhbENvbXBvbmVudCxcbiAgICBOZ2dNb2RhbEhlYWRlckNvbXBvbmVudCxcbiAgICBOZ2dNb2RhbEJvZHlDb21wb25lbnQsXG4gICAgTmdnTW9kYWxGb290ZXJDb21wb25lbnRcbl07XG5cbmNvbnN0IEVYUE9SVFMgPSBbXG4gICAgTmdnTW9kYWxDb21wb25lbnQsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFsgQTExeU1vZHVsZSwgQ29tbW9uTW9kdWxlIF0sXG4gICAgZXhwb3J0czogRVhQT1JUUyxcbiAgICBkZWNsYXJhdGlvbnM6IERFQ0xBUkFUSU9OUyxcbn0pXG5leHBvcnQgY2xhc3MgTmdnTW9kYWxNb2R1bGUgeyB9Il19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvbW9kYWwvbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFbkUsTUFBTSxZQUFZLEdBQUc7SUFDakIsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2Qix1QkFBdUI7Q0FDMUIsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHO0lBQ1osaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2Qix1QkFBdUI7Q0FDMUIsQ0FBQztBQU9GLE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBbkJ2QixpQkFBaUI7UUFDakIsdUJBQXVCO1FBQ3ZCLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLHVCQUF1QixhQVVaLFVBQVUsRUFBRSxZQUFZLGFBTm5DLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsdUJBQXVCOzRHQVFkLGNBQWMsWUFKWixVQUFVLEVBQUUsWUFBWTsyRkFJMUIsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBRSxVQUFVLEVBQUUsWUFBWSxDQUFFO29CQUNyQyxPQUFPLEVBQUUsT0FBTztvQkFDaEIsWUFBWSxFQUFFLFlBQVk7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBOZ2dNb2RhbEJvZHlDb21wb25lbnQsIE5nZ01vZGFsQ29tcG9uZW50LCBOZ2dNb2RhbEZvb3RlckNvbXBvbmVudCwgTmdnTW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ2dNb2RhbEhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwtaGVhZGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ2dNb2RhbEZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwtZm9vdGVyLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IERFQ0xBUkFUSU9OUyA9IFtcbiAgICBOZ2dNb2RhbENvbXBvbmVudCxcbiAgICBOZ2dNb2RhbEhlYWRlckNvbXBvbmVudCxcbiAgICBOZ2dNb2RhbEJvZHlDb21wb25lbnQsXG4gICAgTmdnTW9kYWxGb290ZXJDb21wb25lbnQsXG4gICAgTmdnTW9kYWxIZWFkZXJEaXJlY3RpdmUsXG4gICAgTmdnTW9kYWxGb290ZXJEaXJlY3RpdmVcbl07XG5cbmNvbnN0IEVYUE9SVFMgPSBbXG4gICAgTmdnTW9kYWxDb21wb25lbnQsXG4gICAgTmdnTW9kYWxIZWFkZXJEaXJlY3RpdmUsXG4gICAgTmdnTW9kYWxGb290ZXJEaXJlY3RpdmVcbl07XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogWyBBMTF5TW9kdWxlLCBDb21tb25Nb2R1bGUgXSxcbiAgICBleHBvcnRzOiBFWFBPUlRTLFxuICAgIGRlY2xhcmF0aW9uczogREVDTEFSQVRJT05TLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dNb2RhbE1vZHVsZSB7IH1cbiJdfQ==
@@ -316,6 +316,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
316
316
  }]
317
317
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
318
318
 
319
+ const CONTEXT_MENU_TOP = '0px';
320
+ const CONTEXT_MENU_LEFT = '0px';
321
+
319
322
  class NggContextMenuComponent {
320
323
  constructor(changeDetectorRef, elementRef, closeContextMenu) {
321
324
  this.changeDetectorRef = changeDetectorRef;
@@ -328,15 +331,14 @@ class NggContextMenuComponent {
328
331
  this.closeOnScroll = false;
329
332
  this.contextMenuItemClicked = new EventEmitter();
330
333
  this.isActive = false;
331
- this.top = '0px';
332
- this.left = '0px';
334
+ this.top = CONTEXT_MENU_TOP;
335
+ this.left = CONTEXT_MENU_LEFT;
333
336
  }
334
337
  onDocumentClick(target) {
335
338
  if (!this.isActive) {
336
339
  return;
337
340
  }
338
- const contextMenuElement = this.elementRef.nativeElement;
339
- if (!contextMenuElement.contains(target)) {
341
+ if (!this.elementRef.nativeElement.contains(target)) {
340
342
  this.close();
341
343
  }
342
344
  }
@@ -363,8 +365,7 @@ class NggContextMenuComponent {
363
365
  this.close();
364
366
  return;
365
367
  }
366
- const anchor = (_a = this.anchor) === null || _a === void 0 ? void 0 : _a.nativeElement;
367
- const buttonRect = anchor.getBoundingClientRect();
368
+ const buttonRect = (_a = this.anchor) === null || _a === void 0 ? void 0 : _a.nativeElement.getBoundingClientRect();
368
369
  const gapBetweenButtonAndPopover = 3;
369
370
  const left = this.calculateLeft(this.direction, buttonRect);
370
371
  const top = buttonRect.bottom + gapBetweenButtonAndPopover;
@@ -374,6 +375,8 @@ class NggContextMenuComponent {
374
375
  }
375
376
  close() {
376
377
  this.isActive = false;
378
+ this.top = CONTEXT_MENU_TOP;
379
+ this.left = CONTEXT_MENU_LEFT;
377
380
  this.changeDetectorRef.markForCheck();
378
381
  }
379
382
  onItemClick(item) {
@@ -966,6 +969,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
966
969
  }]
967
970
  }] });
968
971
 
972
+ class NggModalHeaderDirective {
973
+ constructor(viewContainerRef) {
974
+ this.viewContainerRef = viewContainerRef;
975
+ }
976
+ }
977
+ NggModalHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalHeaderDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
978
+ NggModalHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: NggModalHeaderDirective, selector: "[nggModalHeader]", ngImport: i0 });
979
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalHeaderDirective, decorators: [{
980
+ type: Directive,
981
+ args: [{
982
+ selector: '[nggModalHeader]'
983
+ }]
984
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
985
+
986
+ class NggModalFooterDirective {
987
+ constructor(viewContainerRef) {
988
+ this.viewContainerRef = viewContainerRef;
989
+ }
990
+ }
991
+ NggModalFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalFooterDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
992
+ NggModalFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: NggModalFooterDirective, selector: "[nggModalFooter]", ngImport: i0 });
993
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalFooterDirective, decorators: [{
994
+ type: Directive,
995
+ args: [{
996
+ selector: '[nggModalFooter]'
997
+ }]
998
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
999
+
969
1000
  class NggModalComponent {
970
1001
  constructor(ref, configurableFocusTrapFactory) {
971
1002
  this.ref = ref;
@@ -999,7 +1030,12 @@ class NggModalComponent {
999
1030
  if (this.trapFocus) {
1000
1031
  this.enableFocusTrap();
1001
1032
  }
1002
- disableBodyScroll(this.ref.nativeElement);
1033
+ disableBodyScroll(this.ref.nativeElement, {
1034
+ allowTouchMove: (el) => {
1035
+ // Allow touchmove for elements inside modal, its required for scroll to work on iOS devices
1036
+ return this.ref.nativeElement.contains(el);
1037
+ }
1038
+ });
1003
1039
  }
1004
1040
  else {
1005
1041
  this.disableFocusTrap();
@@ -1054,10 +1090,10 @@ class NggModalComponent {
1054
1090
  }
1055
1091
  }
1056
1092
  NggModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.ConfigurableFocusTrapFactory }], target: i0.ɵɵFactoryTarget.Component });
1057
- NggModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggModalComponent, selector: "ngg-modal", inputs: { modalType: "modalType", header: "header", confirmLabel: "confirmLabel", dismissLabel: "dismissLabel", size: "size", trapFocus: "trapFocus", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange", closed: "closed", confirm: "confirm", dismiss: "dismiss" }, host: { properties: { "class.open": "this.open" } }, viewQueries: [{ propertyName: "backdropRef", first: true, predicate: ["backdrop"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"isOpen\" [ngSwitch]=\"modalType\">\n <aside data-testid=\"modal\" *ngSwitchCase=\"'slideout'\" role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </aside>\n <main data-testid=\"modal\" *ngSwitchCase=\"'takeover'\" role=\"dialog\" aria-modal=\"true\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </main>\n <section data-testid=\"modal\" *ngSwitchDefault role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </section>\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div #backdrop data-testid=\"modal-backdrop\" class=\"backdrop\" (click)=\"this.handleBackdropClick($event)\" [attr.aria-hidden]=\"true\"></div>\n</ng-container>", styles: [":host.open{height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:var(--sg-z-index-modal-backdrop)}:host.open>section[role=dialog]{left:50%;top:50%;transform:translate(-50%,-50%)}.body::-webkit-scrollbar{background-color:#f8f8f8;height:10px;width:10px}.body::-webkit-scrollbar-thumb{background-color:#cecece}.body::-webkit-scrollbar-track{background-color:#f8f8f8;box-shadow:inset 0 0 10px #00000040}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "component", type: i0.forwardRef(function () { return NggModalHeaderComponent; }), selector: "[ngg-modal-header]", inputs: ["header"], outputs: ["closed"] }, { kind: "component", type: i0.forwardRef(function () { return NggModalBodyComponent; }), selector: "[ngg-modal-body]" }, { kind: "component", type: i0.forwardRef(function () { return NggModalFooterComponent; }), selector: "[ngg-modal-footer]", inputs: ["dismissLabel", "confirmLabel"], outputs: ["dismiss", "confirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1093
+ NggModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggModalComponent, selector: "ngg-modal", inputs: { modalType: "modalType", header: "header", confirmLabel: "confirmLabel", dismissLabel: "dismissLabel", size: "size", hideHeader: "hideHeader", hideFooter: "hideFooter", trapFocus: "trapFocus", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange", closed: "closed", confirm: "confirm", dismiss: "dismiss" }, host: { properties: { "class.open": "this.open" } }, queries: [{ propertyName: "modalHeaderContent", first: true, predicate: NggModalHeaderDirective, descendants: true }, { propertyName: "modalFooterContent", first: true, predicate: NggModalFooterDirective, descendants: true }], viewQueries: [{ propertyName: "backdropRef", first: true, predicate: ["backdrop"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"isOpen\" [ngSwitch]=\"modalType\">\n <aside data-testid=\"modal\" *ngSwitchCase=\"'slideout'\" role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </aside>\n <main data-testid=\"modal\" *ngSwitchCase=\"'takeover'\" role=\"dialog\" aria-modal=\"true\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </main>\n <section data-testid=\"modal\" *ngSwitchDefault role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </section>\n <ng-template #contentTemplate>\n <ng-container *ngIf=\"!hideHeader\">\n <header *ngIf=\"!modalHeaderContent; else headerContentTemplate\" ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n </ng-container>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"bodyContentTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"!hideFooter && (dismissLabel || confirmLabel)\">\n <footer *ngIf=\"!modalFooterContent; else footerContentTemplate\" ngg-modal-footer data-testid=\"modal-footer\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </ng-container>\n </ng-template>\n <ng-template #headerContentTemplate>\n <header data-testid=\"modal-header\">\n <ng-content select=\"[nggModalHeader]\"></ng-content>\n </header>\n </ng-template>\n <ng-template #bodyContentTemplate>\n <ng-content></ng-content>\n </ng-template>\n <ng-template #footerContentTemplate>\n <footer data-testid=\"modal-footer\">\n <ng-content select=\"[nggModalFooter]\"></ng-content>\n </footer>\n </ng-template>\n <div #backdrop data-testid=\"modal-backdrop\" class=\"backdrop\" (click)=\"this.handleBackdropClick($event)\" [attr.aria-hidden]=\"true\"></div>\n</ng-container>\n", styles: [":host.open{height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:var(--sg-z-index-modal-backdrop)}:host.open>section[role=dialog]{left:50%;top:50%;transform:translate(-50%,-50%)}.body::-webkit-scrollbar{background-color:#f8f8f8;height:10px;width:10px}.body::-webkit-scrollbar-thumb{background-color:#cecece}.body::-webkit-scrollbar-track{background-color:#f8f8f8;box-shadow:inset 0 0 10px #00000040}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "component", type: i0.forwardRef(function () { return NggModalHeaderComponent; }), selector: "[ngg-modal-header]", inputs: ["header"], outputs: ["closed"] }, { kind: "component", type: i0.forwardRef(function () { return NggModalBodyComponent; }), selector: "[ngg-modal-body]" }, { kind: "component", type: i0.forwardRef(function () { return NggModalFooterComponent; }), selector: "[ngg-modal-footer]", inputs: ["dismissLabel", "confirmLabel"], outputs: ["dismiss", "confirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1058
1094
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalComponent, decorators: [{
1059
1095
  type: Component,
1060
- args: [{ selector: 'ngg-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"isOpen\" [ngSwitch]=\"modalType\">\n <aside data-testid=\"modal\" *ngSwitchCase=\"'slideout'\" role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </aside>\n <main data-testid=\"modal\" *ngSwitchCase=\"'takeover'\" role=\"dialog\" aria-modal=\"true\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </main>\n <section data-testid=\"modal\" *ngSwitchDefault role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <header ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container> \n </div>\n <footer ngg-modal-footer data-testid=\"modal-footer\" *ngIf=\"dismissLabel || confirmLabel\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </section>\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div #backdrop data-testid=\"modal-backdrop\" class=\"backdrop\" (click)=\"this.handleBackdropClick($event)\" [attr.aria-hidden]=\"true\"></div>\n</ng-container>", styles: [":host.open{height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:var(--sg-z-index-modal-backdrop)}:host.open>section[role=dialog]{left:50%;top:50%;transform:translate(-50%,-50%)}.body::-webkit-scrollbar{background-color:#f8f8f8;height:10px;width:10px}.body::-webkit-scrollbar-thumb{background-color:#cecece}.body::-webkit-scrollbar-track{background-color:#f8f8f8;box-shadow:inset 0 0 10px #00000040}\n"] }]
1096
+ args: [{ selector: 'ngg-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"isOpen\" [ngSwitch]=\"modalType\">\n <aside data-testid=\"modal\" *ngSwitchCase=\"'slideout'\" role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </aside>\n <main data-testid=\"modal\" *ngSwitchCase=\"'takeover'\" role=\"dialog\" aria-modal=\"true\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </main>\n <section data-testid=\"modal\" *ngSwitchDefault role=\"dialog\" aria-modal=\"true\" [class.small]=\"size === 'sm'\" [class.medium]=\"size === 'md'\" [class.large]=\"size === 'lg'\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </section>\n <ng-template #contentTemplate>\n <ng-container *ngIf=\"!hideHeader\">\n <header *ngIf=\"!modalHeaderContent; else headerContentTemplate\" ngg-modal-header data-testid=\"modal-header\" [header]=\"header\" (closed)=\"this.handleCloseClick($event)\"></header>\n </ng-container>\n <div ngg-modal-body data-testid=\"modal-body\" class=\"body\">\n <ng-container *ngTemplateOutlet=\"bodyContentTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"!hideFooter && (dismissLabel || confirmLabel)\">\n <footer *ngIf=\"!modalFooterContent; else footerContentTemplate\" ngg-modal-footer data-testid=\"modal-footer\" [dismissLabel]=\"dismissLabel\" [confirmLabel]=\"confirmLabel\" (dismiss)=\"this.handleDismiss($event)\" (confirm)=\"this.handleConfirm($event)\"></footer>\n </ng-container>\n </ng-template>\n <ng-template #headerContentTemplate>\n <header data-testid=\"modal-header\">\n <ng-content select=\"[nggModalHeader]\"></ng-content>\n </header>\n </ng-template>\n <ng-template #bodyContentTemplate>\n <ng-content></ng-content>\n </ng-template>\n <ng-template #footerContentTemplate>\n <footer data-testid=\"modal-footer\">\n <ng-content select=\"[nggModalFooter]\"></ng-content>\n </footer>\n </ng-template>\n <div #backdrop data-testid=\"modal-backdrop\" class=\"backdrop\" (click)=\"this.handleBackdropClick($event)\" [attr.aria-hidden]=\"true\"></div>\n</ng-container>\n", styles: [":host.open{height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:var(--sg-z-index-modal-backdrop)}:host.open>section[role=dialog]{left:50%;top:50%;transform:translate(-50%,-50%)}.body::-webkit-scrollbar{background-color:#f8f8f8;height:10px;width:10px}.body::-webkit-scrollbar-thumb{background-color:#cecece}.body::-webkit-scrollbar-track{background-color:#f8f8f8;box-shadow:inset 0 0 10px #00000040}\n"] }]
1061
1097
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.ConfigurableFocusTrapFactory }]; }, propDecorators: { modalType: [{
1062
1098
  type: Input
1063
1099
  }], header: [{
@@ -1068,6 +1104,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1068
1104
  type: Input
1069
1105
  }], size: [{
1070
1106
  type: Input
1107
+ }], hideHeader: [{
1108
+ type: Input
1109
+ }], hideFooter: [{
1110
+ type: Input
1071
1111
  }], trapFocus: [{
1072
1112
  type: Input
1073
1113
  }], isOpen: [{
@@ -1086,6 +1126,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1086
1126
  }], backdropRef: [{
1087
1127
  type: ViewChild,
1088
1128
  args: ['backdrop']
1129
+ }], modalHeaderContent: [{
1130
+ type: ContentChild,
1131
+ args: [NggModalHeaderDirective]
1132
+ }], modalFooterContent: [{
1133
+ type: ContentChild,
1134
+ args: [NggModalFooterDirective]
1089
1135
  }] } });
1090
1136
  class NggModalHeaderComponent {
1091
1137
  constructor() {
@@ -1162,10 +1208,14 @@ const DECLARATIONS = [
1162
1208
  NggModalComponent,
1163
1209
  NggModalHeaderComponent,
1164
1210
  NggModalBodyComponent,
1165
- NggModalFooterComponent
1211
+ NggModalFooterComponent,
1212
+ NggModalHeaderDirective,
1213
+ NggModalFooterDirective
1166
1214
  ];
1167
1215
  const EXPORTS = [
1168
1216
  NggModalComponent,
1217
+ NggModalHeaderDirective,
1218
+ NggModalFooterDirective
1169
1219
  ];
1170
1220
  class NggModalModule {
1171
1221
  }
@@ -1173,7 +1223,11 @@ NggModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version:
1173
1223
  NggModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NggModalModule, declarations: [NggModalComponent,
1174
1224
  NggModalHeaderComponent,
1175
1225
  NggModalBodyComponent,
1176
- NggModalFooterComponent], imports: [A11yModule, CommonModule], exports: [NggModalComponent] });
1226
+ NggModalFooterComponent,
1227
+ NggModalHeaderDirective,
1228
+ NggModalFooterDirective], imports: [A11yModule, CommonModule], exports: [NggModalComponent,
1229
+ NggModalHeaderDirective,
1230
+ NggModalFooterDirective] });
1177
1231
  NggModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalModule, imports: [A11yModule, CommonModule] });
1178
1232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModalModule, decorators: [{
1179
1233
  type: NgModule,
@@ -1652,5 +1706,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1652
1706
  * Generated bundle index. Do not edit.
1653
1707
  */
1654
1708
 
1655
- export { NggAccordionComponent, NggAccordionListItemComponent, NggAccordionModule, NggBadgeComponent, NggBadgeModule, NggButtonComponent, NggButtonModule, NggContextMenuComponent, NggContextMenuModule, NggDatepickerComponent, NggDatepickerModule, NggDropdownButtonDirective, NggDropdownComponent, NggDropdownModule, NggDropdownOptionDirective, NggInPageWizardModule, NggInPageWizardStepCardComponent, NggModalBodyComponent, NggModalComponent, NggModalFooterComponent, NggModalHeaderComponent, NggModalModule, NggModule, NggOnScrollDirective, NggPaginationComponent, NggPaginationModule, NggProgressCircleComponent, NggProgressCircleModule, NggSegmentedControlComponent, NggSegmentedControlModule, NggSharedModule, NggSliderComponent, NggSliderModule, ON_SCROLL_TOKEN, dateValidator };
1709
+ export { NggAccordionComponent, NggAccordionListItemComponent, NggAccordionModule, NggBadgeComponent, NggBadgeModule, NggButtonComponent, NggButtonModule, NggContextMenuComponent, NggContextMenuModule, NggDatepickerComponent, NggDatepickerModule, NggDropdownButtonDirective, NggDropdownComponent, NggDropdownModule, NggDropdownOptionDirective, NggInPageWizardModule, NggInPageWizardStepCardComponent, NggModalBodyComponent, NggModalComponent, NggModalFooterComponent, NggModalFooterDirective, NggModalHeaderComponent, NggModalHeaderDirective, NggModalModule, NggModule, NggOnScrollDirective, NggPaginationComponent, NggPaginationModule, NggProgressCircleComponent, NggProgressCircleModule, NggSegmentedControlComponent, NggSegmentedControlModule, NggSharedModule, NggSliderComponent, NggSliderModule, ON_SCROLL_TOKEN, dateValidator };
1656
1710
  //# sourceMappingURL=sebgroup-green-angular.mjs.map