@skyux/popovers 5.9.3 → 5.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/bundles/skyux-popovers-testing.umd.js +12 -6
  2. package/bundles/skyux-popovers.umd.js +1531 -1536
  3. package/documentation.json +317 -284
  4. package/esm2015/lib/modules/dropdown/dropdown-item.component.js.map +1 -1
  5. package/esm2015/lib/modules/dropdown/dropdown-menu.component.js +1 -4
  6. package/esm2015/lib/modules/dropdown/dropdown-menu.component.js.map +1 -1
  7. package/esm2015/lib/modules/dropdown/dropdown.component.js +10 -7
  8. package/esm2015/lib/modules/dropdown/dropdown.component.js.map +1 -1
  9. package/esm2015/lib/modules/popover/popover-content.component.js +18 -34
  10. package/esm2015/lib/modules/popover/popover-content.component.js.map +1 -1
  11. package/esm2015/lib/modules/popover/popover.component.js +11 -2
  12. package/esm2015/lib/modules/popover/popover.component.js.map +1 -1
  13. package/esm2015/lib/modules/popover/popover.directive.js +0 -1
  14. package/esm2015/lib/modules/popover/popover.directive.js.map +1 -1
  15. package/esm2015/testing/dropdown/dropdown-fixture.js +7 -1
  16. package/esm2015/testing/dropdown/dropdown-fixture.js.map +1 -1
  17. package/esm2015/testing/dropdown/popovers-fixture-dropdown.js.map +1 -1
  18. package/esm2015/testing/popover/popover-fixture.js +8 -8
  19. package/esm2015/testing/popover/popover-fixture.js.map +1 -1
  20. package/fesm2015/skyux-popovers-testing.js +15 -9
  21. package/fesm2015/skyux-popovers-testing.js.map +1 -1
  22. package/fesm2015/skyux-popovers.js +40 -49
  23. package/fesm2015/skyux-popovers.js.map +1 -1
  24. package/lib/modules/dropdown/dropdown-item.component.d.ts +1 -1
  25. package/lib/modules/dropdown/dropdown-menu.component.d.ts +3 -3
  26. package/lib/modules/dropdown/dropdown.component.d.ts +12 -12
  27. package/lib/modules/popover/popover-content.component.d.ts +13 -12
  28. package/lib/modules/popover/popover.component.d.ts +6 -4
  29. package/lib/modules/popover/popover.directive.d.ts +3 -5
  30. package/package.json +6 -6
  31. package/testing/dropdown/dropdown-fixture.d.ts +7 -7
  32. package/testing/dropdown/popovers-fixture-dropdown.d.ts +2 -2
  33. package/testing/popover/popover-fixture.d.ts +6 -6
@@ -12,8 +12,8 @@ import * as i5 from '@skyux/i18n';
12
12
  import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
13
13
  import { Subject, fromEvent } from 'rxjs';
14
14
  import { takeUntil } from 'rxjs/operators';
15
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
15
16
  import { trigger, state, style, transition, animate } from '@angular/animations';
16
- import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
17
17
 
18
18
  /**
19
19
  * Specifies the type of message to send.
@@ -200,6 +200,7 @@ function parseAffixHorizontalAlignment$1(alignment) {
200
200
  }
201
201
  }
202
202
 
203
+ var _SkyDropdownComponent_positionTimeout;
203
204
  /**
204
205
  * Creates a dropdown menu that displays menu items that users may select.
205
206
  */
@@ -218,6 +219,7 @@ class SkyDropdownComponent {
218
219
  this.isVisible = false;
219
220
  this.ngUnsubscribe = new Subject();
220
221
  this._isOpen = false;
222
+ _SkyDropdownComponent_positionTimeout.set(this, void 0);
221
223
  }
222
224
  /**
223
225
  * Specifies a background color for the dropdown button. Available values are `default` and
@@ -305,7 +307,7 @@ class SkyDropdownComponent {
305
307
  if (value) {
306
308
  this._menuContainerElementRef = value;
307
309
  this.destroyAffixer();
308
- this.createAffixer();
310
+ this.createAffixer(value);
309
311
  this.changeDetector.markForCheck();
310
312
  }
311
313
  }
@@ -328,10 +330,9 @@ class SkyDropdownComponent {
328
330
  ngOnDestroy() {
329
331
  this.destroyAffixer();
330
332
  this.destroyOverlay();
331
- clearTimeout(this._positionTimeout);
333
+ clearTimeout(__classPrivateFieldGet(this, _SkyDropdownComponent_positionTimeout, "f"));
332
334
  this.ngUnsubscribe.next();
333
335
  this.ngUnsubscribe.complete();
334
- this.ngUnsubscribe = undefined;
335
336
  }
336
337
  addEventListeners() {
337
338
  const buttonElement = this.triggerButton.nativeElement;
@@ -444,8 +445,8 @@ class SkyDropdownComponent {
444
445
  this.overlay = undefined;
445
446
  }
446
447
  }
447
- createAffixer() {
448
- const affixer = this.affixService.createAffixer(this.menuContainerElementRef);
448
+ createAffixer(menuContainerElementRef) {
449
+ const affixer = this.affixService.createAffixer(menuContainerElementRef);
449
450
  affixer.placementChange
450
451
  .pipe(takeUntil(this.ngUnsubscribe))
451
452
  .subscribe((change) => {
@@ -488,7 +489,7 @@ class SkyDropdownComponent {
488
489
  this.changeDetector.markForCheck();
489
490
  // Explicitly declare the `setTimeout` from the `window` object in order to use the DOM typings
490
491
  // during a unit test (instead of confusing this with Node's `setTimeout`).
491
- this._positionTimeout = window.setTimeout(() => {
492
+ __classPrivateFieldSet(this, _SkyDropdownComponent_positionTimeout, window.setTimeout(() => {
492
493
  this.affixer.affixTo(this.triggerButton.nativeElement, {
493
494
  autoFitContext: SkyAffixAutoFitContext.Viewport,
494
495
  enableAutoFit: true,
@@ -498,9 +499,10 @@ class SkyDropdownComponent {
498
499
  });
499
500
  this.isVisible = true;
500
501
  this.changeDetector.markForCheck();
501
- });
502
+ }), "f");
502
503
  }
503
504
  }
505
+ _SkyDropdownComponent_positionTimeout = new WeakMap();
504
506
  SkyDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyAffixService }, { token: i1.SkyOverlayService }, { token: i2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
505
507
  SkyDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyDropdownComponent, selector: "sky-dropdown", inputs: { buttonStyle: "buttonStyle", buttonType: "buttonType", disabled: "disabled", dismissOnBlur: "dismissOnBlur", label: "label", horizontalAlignment: "horizontalAlignment", messageStream: "messageStream", title: "title", trigger: "trigger" }, viewQueries: [{ propertyName: "menuContainerElementRef", first: true, predicate: ["menuContainerElementRef"], descendants: true, read: ElementRef }, { propertyName: "menuContainerTemplateRef", first: true, predicate: ["menuContainerTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButton", first: true, predicate: ["triggerButton"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"], components: [{ type: i3.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "skyLibResources": i5.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
506
508
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDropdownComponent, decorators: [{
@@ -673,7 +675,6 @@ class SkyDropdownMenuComponent {
673
675
  ngOnDestroy() {
674
676
  this.ngUnsubscribe.next();
675
677
  this.ngUnsubscribe.complete();
676
- this.ngUnsubscribe = undefined;
677
678
  }
678
679
  focusFirstItem() {
679
680
  if (!this.hasFocusableItems) {
@@ -745,9 +746,7 @@ class SkyDropdownMenuComponent {
745
746
  });
746
747
  }
747
748
  getItemByIndex(index) {
748
- return this.menuItems.find((item, i) => {
749
- return i === index;
750
- });
749
+ return this.menuItems.find((_, i) => i === index);
751
750
  }
752
751
  selectItemByEventTarget(target) {
753
752
  const selectedItem = this.menuItems.find((item, i) => {
@@ -1046,7 +1045,7 @@ class SkyPopoverContentComponent {
1046
1045
  this.dismissOnBlur = true;
1047
1046
  this.enableAnimations = true;
1048
1047
  this.isOpen = false;
1049
- this.popoverType = 'info';
1048
+ this.placement = null;
1050
1049
  this.ngUnsubscribe = new Subject();
1051
1050
  this._closed = new Subject();
1052
1051
  this._isMouseEnter = new Subject();
@@ -1065,9 +1064,7 @@ class SkyPopoverContentComponent {
1065
1064
  return this._isMouseEnter.asObservable();
1066
1065
  }
1067
1066
  ngOnInit() {
1068
- var _a;
1069
- /*istanbul ignore next*/
1070
- this.contentTarget.createEmbeddedView((_a = this.context) === null || _a === void 0 ? void 0 : _a.contentTemplateRef);
1067
+ this.contentTarget.createEmbeddedView(this.context.contentTemplateRef);
1071
1068
  this.addEventListeners();
1072
1069
  /*istanbul ignore else*/
1073
1070
  if (this.themeSvc) {
@@ -1089,27 +1086,19 @@ class SkyPopoverContentComponent {
1089
1086
  /* istanbul ignore else */
1090
1087
  if (this.affixer) {
1091
1088
  this.affixer.destroy();
1089
+ this.affixer = undefined;
1092
1090
  }
1093
- this._closed =
1094
- this._isMouseEnter =
1095
- this._opened =
1096
- this.affixer =
1097
- this.ngUnsubscribe =
1098
- undefined;
1099
1091
  }
1100
1092
  onAnimationEvent(event) {
1101
- var _a, _b;
1102
1093
  if (event.fromState === 'void') {
1103
1094
  return;
1104
1095
  }
1105
1096
  if (event.phaseName === 'done') {
1106
1097
  if (event.toState === 'open') {
1107
- /*istanbul ignore next*/
1108
- (_a = this._opened) === null || _a === void 0 ? void 0 : _a.next();
1098
+ this._opened.next();
1109
1099
  }
1110
1100
  else {
1111
- /*istanbul ignore next*/
1112
- (_b = this._closed) === null || _b === void 0 ? void 0 : _b.next();
1101
+ this._closed.next();
1113
1102
  }
1114
1103
  }
1115
1104
  }
@@ -1120,9 +1109,7 @@ class SkyPopoverContentComponent {
1120
1109
  this.horizontalAlignment = config.horizontalAlignment;
1121
1110
  this.placement = config.placement;
1122
1111
  this.popoverTitle = config.popoverTitle;
1123
- if (config.popoverType) {
1124
- this.popoverType = config.popoverType;
1125
- }
1112
+ this.popoverType = config.popoverType;
1126
1113
  this.changeDetector.markForCheck();
1127
1114
  // Indicates if the popover should be displayed statically.
1128
1115
  // Please note: This feature is internal-only and used by the visual tests to capture multiple
@@ -1135,11 +1122,7 @@ class SkyPopoverContentComponent {
1135
1122
  }
1136
1123
  // Let the styles render before gauging the affix dimensions.
1137
1124
  setTimeout(() => {
1138
- var _a;
1139
- /*istanbul ignore next*/
1140
- if (!((_a = this.popoverRef) === null || _a === void 0 ? void 0 : _a.nativeElement) ||
1141
- !this.ngUnsubscribe ||
1142
- this.ngUnsubscribe.isStopped) {
1125
+ if (!this.popoverRef.nativeElement || this.ngUnsubscribe.isStopped) {
1143
1126
  return;
1144
1127
  }
1145
1128
  if (!this.affixer) {
@@ -1191,13 +1174,15 @@ class SkyPopoverContentComponent {
1191
1174
  this.affixer = affixer;
1192
1175
  }
1193
1176
  updateArrowOffset() {
1194
- const { top, left } = this.adapterService.getArrowCoordinates({
1195
- caller: this.caller,
1196
- popover: this.popoverRef,
1197
- popoverArrow: this.arrowRef,
1198
- }, this.placement, this.themeName);
1199
- this.arrowTop = top;
1200
- this.arrowLeft = left;
1177
+ if (this.placement) {
1178
+ const { top, left } = this.adapterService.getArrowCoordinates({
1179
+ caller: this.caller,
1180
+ popover: this.popoverRef,
1181
+ popoverArrow: this.arrowRef,
1182
+ }, this.placement, this.themeName);
1183
+ this.arrowTop = top;
1184
+ this.arrowLeft = left;
1185
+ }
1201
1186
  }
1202
1187
  isFocusLeavingElement(event) {
1203
1188
  const focusableItems = this.coreAdapterService.getFocusableChildren(this.elementRef.nativeElement);
@@ -1245,7 +1230,7 @@ class SkyPopoverContentComponent {
1245
1230
  });
1246
1231
  }
1247
1232
  }
1248
- SkyPopoverContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyPopoverContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyAffixService }, { token: i1.SkyCoreAdapterService }, { token: SkyPopoverAdapterService }, { token: SkyPopoverContext, optional: true }, { token: i2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1233
+ SkyPopoverContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyPopoverContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyAffixService }, { token: i1.SkyCoreAdapterService }, { token: SkyPopoverAdapterService }, { token: SkyPopoverContext }, { token: i2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1249
1234
  SkyPopoverContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyPopoverContentComponent, selector: "sky-popover-content", providers: [SkyPopoverAdapterService], viewQueries: [{ propertyName: "arrowRef", first: true, predicate: ["arrowRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "popoverRef", first: true, predicate: ["popoverRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "contentTarget", first: true, predicate: ["contentTarget"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-popover-container sky-popover-max-height\"\n [@.disabled]=\"!enableAnimations\"\n [@skyPopoverAnimation]=\"animationState\"\n [class.sky-popover-hidden]=\"!placement\"\n [ngClass]=\"[\n 'sky-popover-alignment-' + horizontalAlignment,\n 'sky-popover-placement-' + placement,\n 'sky-popover-' + popoverType\n ]\"\n (@skyPopoverAnimation.done)=\"onAnimationEvent($event)\"\n (@skyPopoverAnimation.start)=\"onAnimationEvent($event)\"\n #popoverRef\n>\n <div\n class=\"sky-popover\"\n tabindex=\"-1\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n >\n <header\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-header\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg sky-margin-stacked-lg': 'modern'\n }\"\n >\n <h1\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-title\"\n [skyThemeClass]=\"{\n 'sky-emphasized': 'default',\n 'sky-font-emphasized': 'modern'\n }\"\n >\n {{ popoverTitle }}\n </h1>\n </header>\n <div\n class=\"sky-popover-body\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg': 'modern'\n }\"\n >\n <ng-container #contentTarget></ng-container>\n </div>\n <span\n aria-hidden=\"true\"\n class=\"sky-popover-arrow\"\n [style.left.px]=\"arrowLeft\"\n [style.top.px]=\"arrowTop\"\n #arrowRef\n ></span>\n </div>\n</div>\n", styles: [".sky-popover-container{position:fixed;min-width:276px;max-width:276px}.sky-popover-container.sky-popover-hidden{visibility:hidden;opacity:0;pointer-events:none!important}.sky-popover-container.sky-popover-hidden *{pointer-events:none!important}.sky-popover-container.sky-popover-static .sky-popover-arrow{position:absolute}.sky-popover-container:focus{outline:none}@media (max-width: 276px){.sky-popover-container{max-width:100%;min-width:auto}}.sky-popover{background-color:#fff}.sky-popover-header{padding-bottom:0}.sky-popover-header+.sky-popover-body{padding-top:2px}.sky-popover-title{margin:0}.sky-popover-arrow{width:0;height:0;position:fixed;border:10px solid transparent}.sky-popover-placement-above{padding-bottom:10px}.sky-popover-placement-above .sky-popover{border-bottom:10px solid #00b4f1}.sky-popover-placement-above .sky-popover-arrow{border-bottom:0;border-top-color:#00b4f1;bottom:0;left:50%;margin-left:-10px}.sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044}.sky-popover-placement-below{padding-top:10px}.sky-popover-placement-below .sky-popover{border-top:10px solid #00b4f1}.sky-popover-placement-below .sky-popover-arrow{border-top:0;border-bottom-color:#00b4f1;top:0;left:50%;margin-left:-10px}.sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044}.sky-popover-placement-right{padding-left:10px}.sky-popover-placement-right .sky-popover{border-left:10px solid #00b4f1}.sky-popover-placement-right .sky-popover-arrow{border-left:0;border-right-color:#00b4f1;left:0;top:50%;margin-top:-10px}.sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-right-color:#ef4044}.sky-popover-placement-left{padding-right:10px}.sky-popover-placement-left .sky-popover{border-right:10px solid #00b4f1}.sky-popover-placement-left .sky-popover-arrow{border-right:0;border-left-color:#00b4f1;right:0;top:50%;margin-top:-10px}.sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-left-color:#ef4044}.sky-popover-placement-above.sky-popover-alignment-left .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-left .sky-popover-arrow{left:40px;right:auto}.sky-popover-placement-above.sky-popover-alignment-right .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-right .sky-popover-arrow{left:auto;right:40px}.sky-popover-max-height .sky-popover{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}:host-context(.sky-theme-modern) .sky-popover{border-radius:6px}:host-context(.sky-theme-modern) .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-above{padding-bottom:10px}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-below{padding-top:10px}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-right{padding-left:10px}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-left{padding-right:10px}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover{border-radius:6px}.sky-theme-modern .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}.sky-theme-modern .sky-popover-placement-above{padding-bottom:10px}.sky-theme-modern .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover-placement-below{padding-top:10px}.sky-theme-modern .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-right{padding-left:10px}.sky-theme-modern .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-left{padding-right:10px}.sky-theme-modern .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}\n"], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [skyPopoverAnimation] });
1250
1235
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyPopoverContentComponent, decorators: [{
1251
1236
  type: Component,
@@ -1256,9 +1241,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1256
1241
  animations: [skyPopoverAnimation],
1257
1242
  providers: [SkyPopoverAdapterService],
1258
1243
  }]
1259
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyAffixService }, { type: i1.SkyCoreAdapterService }, { type: SkyPopoverAdapterService }, { type: SkyPopoverContext, decorators: [{
1260
- type: Optional
1261
- }] }, { type: i2.SkyThemeService, decorators: [{
1244
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyAffixService }, { type: i1.SkyCoreAdapterService }, { type: SkyPopoverAdapterService }, { type: SkyPopoverContext }, { type: i2.SkyThemeService, decorators: [{
1262
1245
  type: Optional
1263
1246
  }] }]; }, propDecorators: { arrowRef: [{
1264
1247
  type: ViewChild,
@@ -1342,10 +1325,19 @@ class SkyPopoverComponent {
1342
1325
  get placement() {
1343
1326
  return this._placement || 'above';
1344
1327
  }
1328
+ /**
1329
+ * Specifies the type of popover.
1330
+ * @default "info"
1331
+ */
1332
+ set popoverType(value) {
1333
+ this._popoverType = value;
1334
+ }
1335
+ get popoverType() {
1336
+ return this._popoverType || 'info';
1337
+ }
1345
1338
  ngOnDestroy() {
1346
1339
  this.ngUnsubscribe.next();
1347
1340
  this.ngUnsubscribe.complete();
1348
- this.ngUnsubscribe = undefined;
1349
1341
  if (this.overlay) {
1350
1342
  this.overlayService.close(this.overlay);
1351
1343
  this.overlay = undefined;
@@ -1423,7 +1415,7 @@ class SkyPopoverComponent {
1423
1415
  });
1424
1416
  contentRef.closed.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
1425
1417
  /*istanbul ignore else*/
1426
- if (this.isActive) {
1418
+ if (this.isActive && this.overlay) {
1427
1419
  this.overlayService.close(this.overlay);
1428
1420
  this.overlay = undefined;
1429
1421
  this.isActive = false;
@@ -1625,7 +1617,6 @@ class SkyPopoverDirective {
1625
1617
  removeEventListeners() {
1626
1618
  this.ngUnsubscribe.next();
1627
1619
  this.ngUnsubscribe.complete();
1628
- this.ngUnsubscribe = undefined;
1629
1620
  }
1630
1621
  handleIncomingMessages(message) {
1631
1622
  /* tslint:disable-next-line:switch-default */