@skyux/flyout 5.6.0 → 5.7.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.
- package/bundles/skyux-flyout.umd.js +14 -8
- package/documentation.json +21 -29
- package/esm2015/lib/modules/flyout/flyout.component.js +3 -1
- package/esm2015/lib/modules/flyout/flyout.component.js.map +1 -1
- package/esm2015/lib/modules/flyout/flyout.service.js +9 -7
- package/esm2015/lib/modules/flyout/flyout.service.js.map +1 -1
- package/esm2015/lib/modules/shared/sky-flyout-resources.module.js +1 -1
- package/esm2015/lib/modules/shared/sky-flyout-resources.module.js.map +1 -1
- package/fesm2015/skyux-flyout.js +13 -9
- package/fesm2015/skyux-flyout.js.map +1 -1
- package/lib/modules/flyout/flyout.service.d.ts +3 -3
- package/lib/modules/shared/sky-flyout-resources.module.d.ts +1 -1
- package/package.json +17 -17
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
/**
|
|
181
181
|
* NOTICE: DO NOT MODIFY THIS FILE!
|
|
182
182
|
* The contents of this file were automatically generated by
|
|
183
|
-
* the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-flyout' schematic.
|
|
183
|
+
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-flyout' schematic.
|
|
184
184
|
* To update this file, simply rerun the command.
|
|
185
185
|
*/
|
|
186
186
|
var RESOURCES = {
|
|
@@ -784,7 +784,9 @@
|
|
|
784
784
|
flyoutWidth: this.flyoutWidth,
|
|
785
785
|
})
|
|
786
786
|
.pipe(operators.take(1))
|
|
787
|
-
.subscribe(
|
|
787
|
+
.subscribe(
|
|
788
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
789
|
+
function () { }, function (err) {
|
|
788
790
|
console.warn('Could not save flyout data.');
|
|
789
791
|
console.warn(err);
|
|
790
792
|
});
|
|
@@ -1003,7 +1005,10 @@
|
|
|
1003
1005
|
* document's `body` element. The `SkyFlyoutInstance` class watches for and triggers flyout events.
|
|
1004
1006
|
*/
|
|
1005
1007
|
var SkyFlyoutService = /** @class */ (function () {
|
|
1006
|
-
function SkyFlyoutService(coreAdapter, windowRef, dynamicComponentService, router, _ngZone,
|
|
1008
|
+
function SkyFlyoutService(coreAdapter, windowRef, dynamicComponentService, router, _ngZone,
|
|
1009
|
+
// NOTE: This used to be used for an `applicationRef.tick` which has since been removed.
|
|
1010
|
+
// We can not remove this due to it being a breaking change for those manually constructing the service.
|
|
1011
|
+
applicationRef) {
|
|
1007
1012
|
this.coreAdapter = coreAdapter;
|
|
1008
1013
|
this.windowRef = windowRef;
|
|
1009
1014
|
this.dynamicComponentService = dynamicComponentService;
|
|
@@ -1026,7 +1031,6 @@
|
|
|
1026
1031
|
*/
|
|
1027
1032
|
SkyFlyoutService.prototype.close = function (args) {
|
|
1028
1033
|
if (this.host && !this.isOpening) {
|
|
1029
|
-
this.removeAfterClosed = true;
|
|
1030
1034
|
this.host.instance.messageStream.next({
|
|
1031
1035
|
type: exports.SkyFlyoutMessageType.Close,
|
|
1032
1036
|
data: {
|
|
@@ -1058,8 +1062,6 @@
|
|
|
1058
1062
|
_this._ngZone.onStable.pipe(operators.take(1)).subscribe(function () {
|
|
1059
1063
|
if (_this.host) {
|
|
1060
1064
|
_this.removeHostComponent();
|
|
1061
|
-
// Without this tick - the host does not actually get removed on initial navigation in this case.
|
|
1062
|
-
_this.applicationRef.tick();
|
|
1063
1065
|
}
|
|
1064
1066
|
});
|
|
1065
1067
|
}
|
|
@@ -1148,14 +1150,18 @@
|
|
|
1148
1150
|
};
|
|
1149
1151
|
return SkyFlyoutService;
|
|
1150
1152
|
}());
|
|
1151
|
-
SkyFlyoutService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyFlyoutService, deps: [{ token: i1__namespace$1.SkyCoreAdapterService }, { token: i1__namespace$1.SkyAppWindowRef }, { token: i1__namespace$1.SkyDynamicComponentService }, { token: i2__namespace$2.Router }, { token: i0__namespace.NgZone }, { token: i0__namespace.ApplicationRef }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
1153
|
+
SkyFlyoutService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyFlyoutService, deps: [{ token: i1__namespace$1.SkyCoreAdapterService }, { token: i1__namespace$1.SkyAppWindowRef }, { token: i1__namespace$1.SkyDynamicComponentService }, { token: i2__namespace$2.Router }, { token: i0__namespace.NgZone }, { token: i0__namespace.ApplicationRef, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
1152
1154
|
SkyFlyoutService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyFlyoutService, providedIn: 'any' });
|
|
1153
1155
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyFlyoutService, decorators: [{
|
|
1154
1156
|
type: i0.Injectable,
|
|
1155
1157
|
args: [{
|
|
1156
1158
|
providedIn: 'any',
|
|
1157
1159
|
}]
|
|
1158
|
-
}], ctorParameters: function () {
|
|
1160
|
+
}], ctorParameters: function () {
|
|
1161
|
+
return [{ type: i1__namespace$1.SkyCoreAdapterService }, { type: i1__namespace$1.SkyAppWindowRef }, { type: i1__namespace$1.SkyDynamicComponentService }, { type: i2__namespace$2.Router }, { type: i0__namespace.NgZone }, { type: i0__namespace.ApplicationRef, decorators: [{
|
|
1162
|
+
type: i0.Optional
|
|
1163
|
+
}] }];
|
|
1164
|
+
} });
|
|
1159
1165
|
|
|
1160
1166
|
/**
|
|
1161
1167
|
* Generated bundle index. Do not edit.
|
package/documentation.json
CHANGED
|
@@ -653,29 +653,7 @@
|
|
|
653
653
|
}
|
|
654
654
|
}
|
|
655
655
|
],
|
|
656
|
-
"children": [
|
|
657
|
-
{
|
|
658
|
-
"id": 157,
|
|
659
|
-
"name": "constructor",
|
|
660
|
-
"kind": 512,
|
|
661
|
-
"kindString": "Constructor",
|
|
662
|
-
"flags": {},
|
|
663
|
-
"signatures": [
|
|
664
|
-
{
|
|
665
|
-
"id": 158,
|
|
666
|
-
"name": "new SkyFlyoutModule",
|
|
667
|
-
"kind": 16384,
|
|
668
|
-
"kindString": "Constructor signature",
|
|
669
|
-
"flags": {},
|
|
670
|
-
"type": {
|
|
671
|
-
"type": "reference",
|
|
672
|
-
"id": 156,
|
|
673
|
-
"name": "SkyFlyoutModule"
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
]
|
|
677
|
-
}
|
|
678
|
-
],
|
|
656
|
+
"children": [],
|
|
679
657
|
"groups": [
|
|
680
658
|
{
|
|
681
659
|
"title": "Constructors",
|
|
@@ -726,7 +704,7 @@
|
|
|
726
704
|
"sources": [
|
|
727
705
|
{
|
|
728
706
|
"fileName": "projects/flyout/src/modules/flyout/flyout.service.ts",
|
|
729
|
-
"line":
|
|
707
|
+
"line": 41,
|
|
730
708
|
"character": 2
|
|
731
709
|
}
|
|
732
710
|
],
|
|
@@ -802,7 +780,21 @@
|
|
|
802
780
|
"name": "applicationRef",
|
|
803
781
|
"kind": 32768,
|
|
804
782
|
"kindString": "Parameter",
|
|
805
|
-
"flags": {
|
|
783
|
+
"flags": {
|
|
784
|
+
"isOptional": true
|
|
785
|
+
},
|
|
786
|
+
"decorators": [
|
|
787
|
+
{
|
|
788
|
+
"name": "Optional",
|
|
789
|
+
"type": {
|
|
790
|
+
"type": "reference",
|
|
791
|
+
"qualifiedName": "OptionalDecorator",
|
|
792
|
+
"package": "@angular/core",
|
|
793
|
+
"name": "Optional"
|
|
794
|
+
},
|
|
795
|
+
"arguments": {}
|
|
796
|
+
}
|
|
797
|
+
],
|
|
806
798
|
"type": {
|
|
807
799
|
"type": "reference",
|
|
808
800
|
"qualifiedName": "ApplicationRef",
|
|
@@ -830,7 +822,7 @@
|
|
|
830
822
|
"sources": [
|
|
831
823
|
{
|
|
832
824
|
"fileName": "projects/flyout/src/modules/flyout/flyout.service.ts",
|
|
833
|
-
"line":
|
|
825
|
+
"line": 63,
|
|
834
826
|
"character": 9
|
|
835
827
|
}
|
|
836
828
|
],
|
|
@@ -881,7 +873,7 @@
|
|
|
881
873
|
"sources": [
|
|
882
874
|
{
|
|
883
875
|
"fileName": "projects/flyout/src/modules/flyout/flyout.service.ts",
|
|
884
|
-
"line":
|
|
876
|
+
"line": 52,
|
|
885
877
|
"character": 9
|
|
886
878
|
}
|
|
887
879
|
],
|
|
@@ -918,7 +910,7 @@
|
|
|
918
910
|
"sources": [
|
|
919
911
|
{
|
|
920
912
|
"fileName": "projects/flyout/src/modules/flyout/flyout.service.ts",
|
|
921
|
-
"line":
|
|
913
|
+
"line": 79,
|
|
922
914
|
"character": 9
|
|
923
915
|
}
|
|
924
916
|
],
|
|
@@ -1020,7 +1012,7 @@
|
|
|
1020
1012
|
"sources": [
|
|
1021
1013
|
{
|
|
1022
1014
|
"fileName": "projects/flyout/src/modules/flyout/flyout.service.ts",
|
|
1023
|
-
"line":
|
|
1015
|
+
"line": 35,
|
|
1024
1016
|
"character": 13
|
|
1025
1017
|
}
|
|
1026
1018
|
],
|
|
@@ -339,7 +339,9 @@ export class SkyFlyoutComponent {
|
|
|
339
339
|
flyoutWidth: this.flyoutWidth,
|
|
340
340
|
})
|
|
341
341
|
.pipe(take(1))
|
|
342
|
-
.subscribe(
|
|
342
|
+
.subscribe(
|
|
343
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
344
|
+
() => { }, (err) => {
|
|
343
345
|
console.warn('Could not save flyout data.');
|
|
344
346
|
console.warn(err);
|
|
345
347
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flyout.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.component.ts","../../../../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n AnimationEvent,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n HostListener,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService,\n SkyUIConfigService,\n} from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyFlyoutAdapterService } from './flyout-adapter.service';\nimport { SkyFlyoutInstance } from './flyout-instance';\nimport { SkyFlyoutMediaQueryService } from './flyout-media-query.service';\nimport { SkyFlyoutAction } from './types/flyout-action';\nimport { SkyFlyoutBeforeCloseHandler } from './types/flyout-before-close-handler';\nimport { SkyFlyoutConfig } from './types/flyout-config';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\nimport { SkyFlyoutPermalink } from './types/flyout-permalink';\n\nconst FLYOUT_OPEN_STATE = 'flyoutOpen';\nconst FLYOUT_CLOSED_STATE = 'flyoutClosed';\n\nlet nextId = 0;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-flyout',\n templateUrl: './flyout.component.html',\n styleUrls: ['./flyout.component.scss'],\n providers: [\n SkyFlyoutAdapterService,\n SkyFlyoutMediaQueryService,\n { provide: SkyMediaQueryService, useExisting: SkyFlyoutMediaQueryService },\n ],\n animations: [\n trigger('flyoutState', [\n state(FLYOUT_OPEN_STATE, style({ transform: 'initial' })),\n state(FLYOUT_CLOSED_STATE, style({ transform: 'translateX(100%)' })),\n transition('void => *', [\n style({ transform: 'translateX(100%)' }),\n animate(250),\n ]),\n transition(`* <=> *`, animate('250ms ease-in')),\n ]),\n ],\n // Allow automatic change detection for child components.\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class SkyFlyoutComponent implements OnDestroy, OnInit {\n public config: SkyFlyoutConfig;\n public enableTrapFocus: boolean;\n public enableTrapFocusAutoCapture: boolean;\n public flyoutId = `sky-flyout-${++nextId}`;\n public flyoutState = FLYOUT_CLOSED_STATE;\n public isOpen = false;\n public isOpening = false;\n\n public flyoutWidth = 0;\n public instanceReady = false;\n public isDragging = false;\n public isFullscreen = false;\n public resizeKeyControlActive = false;\n\n private xCoord = 0;\n private windowBufferSize = 20;\n\n public get messageStream(): Subject<SkyFlyoutMessage> {\n return this._messageStream;\n }\n\n public get permalink(): SkyFlyoutPermalink {\n const permalink = this.config.permalink;\n if (permalink) {\n return permalink;\n }\n\n return {};\n }\n\n public get permalinkLabel(): string {\n if (this.permalink.label) {\n return this.permalink.label;\n }\n\n return this.getString('skyux_flyout_permalink_button');\n }\n\n public get primaryAction(): SkyFlyoutAction {\n const primaryAction = this.config.primaryAction;\n if (primaryAction) {\n return primaryAction;\n }\n\n return {};\n }\n\n public get primaryActionLabel(): string {\n if (this.config.primaryAction && this.config.primaryAction.label) {\n return this.config.primaryAction.label;\n }\n\n return this.getString('skyux_flyout_primary_action_button');\n }\n\n public themeName: string;\n\n /**\n * @internal\n */\n public widthStep = 10;\n\n /**\n * @internal\n */\n @ViewChild('flyoutRef', {\n read: ElementRef,\n static: true,\n })\n public flyoutRef: ElementRef;\n\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n private target: ViewContainerRef;\n\n @ViewChild('flyoutCloseButton', {\n read: ElementRef,\n static: true,\n })\n private flyoutCloseButton: ElementRef;\n\n @ViewChild('flyoutContent', {\n read: ElementRef,\n static: true,\n })\n private flyoutContent: ElementRef;\n\n @ViewChild('flyoutHeader', {\n read: ElementRef,\n static: true,\n })\n private flyoutHeader: ElementRef;\n\n private flyoutInstance: SkyFlyoutInstance<any>;\n\n private ngUnsubscribe = new Subject();\n\n private _messageStream = new Subject<SkyFlyoutMessage>();\n\n constructor(\n private adapter: SkyFlyoutAdapterService,\n private changeDetector: ChangeDetectorRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver,\n private resourcesService: SkyLibResourcesService,\n private flyoutMediaQueryService: SkyFlyoutMediaQueryService,\n private elementRef: ElementRef,\n private uiConfigService: SkyUIConfigService,\n private readonly _ngZone: NgZone\n ) {\n // All commands flow through the message stream.\n this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n this.handleIncomingMessages(message);\n });\n }\n\n public ngOnInit(): void {\n this.adapter.adjustHeaderForHelp(this.flyoutHeader);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n @HostListener('window:resize', ['$event'])\n public onWindowResize(event: any): void {\n if (\n this.flyoutMediaQueryService.isWidthWithinBreakpiont(\n event.target.innerWidth,\n SkyMediaBreakpoints.xs\n )\n ) {\n this.updateBreakpointAndResponsiveClass(event.target.innerWidth);\n } else {\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n }\n\n this.setFullscreen();\n\n if (event.target.innerWidth - this.flyoutWidth < this.windowBufferSize) {\n this.flyoutWidth = event.target.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n this.setUserData();\n }\n }\n\n public attach<T>(\n component: Type<T>,\n config: SkyFlyoutConfig\n ): SkyFlyoutInstance<T> {\n this.cleanTemplate();\n\n // Emit the closed event on any previously opened flyout instance\n if (this.flyoutInstance) {\n this.notifyClosed();\n }\n\n this.config = Object.assign({ providers: [] }, config);\n this.config.defaultWidth =\n this.config.defaultWidth || window.innerWidth / 2;\n this.config.minWidth = this.config.minWidth || 320;\n this.config.maxWidth = this.config.maxWidth || this.config.defaultWidth;\n\n this.config.showIterator = this.config.showIterator || false;\n this.config.iteratorNextButtonDisabled =\n this.config.iteratorNextButtonDisabled || false;\n this.config.iteratorPreviousButtonDisabled =\n this.config.iteratorPreviousButtonDisabled || false;\n\n const factory = this.resolver.resolveComponentFactory(component);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: this.config.providers,\n });\n\n const componentRef = this.target.createComponent(\n factory,\n undefined,\n injector\n );\n\n this.flyoutInstance = this.createFlyoutInstance<T>(componentRef.instance);\n\n // This is used to ensure we do not render the flyout until we have attached the component.\n // This allows the aria-labelledby to function correctly.\n this.instanceReady = true;\n this.changeDetector.markForCheck();\n\n // Open the flyout immediately.\n this.messageStream.next({\n type: SkyFlyoutMessageType.Open,\n });\n\n if (this.config.settingsKey) {\n this.uiConfigService\n .getConfig(this.config.settingsKey)\n .pipe(take(1))\n .subscribe((value: any) => {\n if (value && value.flyoutWidth) {\n this.flyoutWidth = value.flyoutWidth;\n } else {\n // Bad data, or config is the default config.\n this.flyoutWidth = this.config.defaultWidth;\n }\n this.checkInitialSize();\n });\n } else {\n this.flyoutWidth = this.config.defaultWidth;\n this.checkInitialSize();\n }\n\n return this.flyoutInstance;\n }\n\n public close(): void {\n this.messageStream.next({\n type: SkyFlyoutMessageType.Close,\n });\n }\n\n public invokePrimaryAction(): boolean {\n this.primaryAction.callback();\n\n if (this.primaryAction.closeAfterInvoking) {\n this.close();\n }\n\n return false;\n }\n\n public getAnimationState(): string {\n return this.instanceReady && this.isOpening\n ? FLYOUT_OPEN_STATE\n : FLYOUT_CLOSED_STATE;\n }\n\n public animationDone(event: AnimationEvent): void {\n if (event.toState === FLYOUT_OPEN_STATE) {\n this.isOpen = true;\n }\n\n if (event.toState === FLYOUT_CLOSED_STATE) {\n this.isOpen = false;\n this.notifyClosed();\n this.cleanTemplate();\n }\n }\n\n public onHeaderGrabHandleMouseDown(event: MouseEvent): void {\n this.onResizeHandleMouseDown(event);\n }\n\n public onHeaderGrabHandleKeyDown(event: KeyboardEvent): void {\n this.handleResizeKeyDown(event);\n }\n\n public onResizeHandleKeyDown(event: KeyboardEvent): void {\n this.handleResizeKeyDown(event);\n }\n\n public onResizeHandleMouseDown(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isFullscreen) {\n return;\n }\n\n this.isDragging = true;\n this.xCoord = event.clientX;\n\n this.adapter.toggleIframePointerEvents(false);\n\n fromEvent(document, 'mousemove')\n .pipe(\n takeWhile(() => {\n return this.isDragging;\n })\n )\n .subscribe((moveEvent: any) => {\n this.onMouseMove(moveEvent);\n });\n\n fromEvent(document, 'mouseup')\n .pipe(\n takeWhile(() => {\n return this.isDragging;\n })\n )\n .subscribe((mouseUpEvent: any) => {\n this.onHandleRelease(mouseUpEvent);\n });\n }\n\n public onMouseMove(event: MouseEvent): void {\n /* Sanity check */\n /* istanbul ignore if */\n if (!this.isDragging) {\n return;\n }\n\n const offsetX = event.clientX - this.xCoord;\n let width = this.flyoutWidth;\n\n width -= offsetX;\n\n if (width < this.config.minWidth || width > this.config.maxWidth) {\n return;\n }\n\n if (window.innerWidth - width < this.windowBufferSize) {\n width = window.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n } else {\n this.xCoord = event.clientX;\n }\n\n this.flyoutWidth = width;\n\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n\n this.changeDetector.markForCheck();\n }\n\n public onHandleRelease(event: MouseEvent): void {\n fromEvent(document, 'click')\n .pipe(take(1))\n .subscribe(() => {\n this.isDragging = false;\n this.adapter.toggleIframePointerEvents(true);\n this.setUserData();\n });\n }\n\n public onIteratorPreviousButtonClick(): void {\n this.flyoutInstance.iteratorPreviousButtonClick.emit();\n }\n\n public onIteratorNextButtonClick(): void {\n this.flyoutInstance.iteratorNextButtonClick.emit();\n }\n\n private createFlyoutInstance<T>(component: T): SkyFlyoutInstance<T> {\n const instance = new SkyFlyoutInstance<T>();\n\n instance.componentInstance = component;\n instance.hostController\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n this.messageStream.next(message);\n });\n\n return instance;\n }\n\n private handleIncomingMessages(message: SkyFlyoutMessage): void {\n /* tslint:disable-next-line:switch-default */\n switch (message.type) {\n case SkyFlyoutMessageType.Open:\n if (!this.isOpen) {\n this.isOpen = false;\n this.isOpening = true;\n }\n this.initFocusTrap();\n break;\n\n case SkyFlyoutMessageType.Close:\n if (\n (this.flyoutInstance.beforeClose as Subject<any>).observers.length ===\n 0 ||\n message.data?.ignoreBeforeClose\n ) {\n this.isOpen = true;\n this.isOpening = false;\n } else {\n (this.flyoutInstance.beforeClose as Subject<any>).next(\n new SkyFlyoutBeforeCloseHandler(() => {\n this.isOpen = true;\n this.isOpening = false;\n })\n );\n }\n break;\n\n case SkyFlyoutMessageType.EnableIteratorNextButton:\n this.config.iteratorNextButtonDisabled = false;\n break;\n\n case SkyFlyoutMessageType.EnableIteratorPreviousButton:\n this.config.iteratorPreviousButtonDisabled = false;\n break;\n\n case SkyFlyoutMessageType.DisableIteratorNextButton:\n this.config.iteratorNextButtonDisabled = true;\n break;\n\n case SkyFlyoutMessageType.DisableIteratorPreviousButton:\n this.config.iteratorPreviousButtonDisabled = true;\n break;\n }\n\n this.changeDetector.markForCheck();\n }\n\n private notifyClosed(): void {\n this.flyoutInstance.closed.emit();\n this.flyoutInstance.closed.complete();\n }\n\n private cleanTemplate(): void {\n this.target.clear();\n }\n\n private updateBreakpointAndResponsiveClass(width: number): void {\n this.flyoutMediaQueryService.setBreakpointForWidth(width);\n\n const newBreakpiont = this.flyoutMediaQueryService.current;\n\n this.adapter.setResponsiveClass(this.elementRef, newBreakpiont);\n }\n\n private setFullscreen(): void {\n if (window.innerWidth - this.windowBufferSize < this.config.minWidth) {\n this.isFullscreen = true;\n } else {\n this.isFullscreen = false;\n }\n }\n\n private setUserData(): void {\n if (this.config.settingsKey) {\n this.uiConfigService\n .setConfig(this.config.settingsKey, {\n flyoutWidth: this.flyoutWidth,\n })\n .pipe(take(1))\n .subscribe(\n () => {},\n (err) => {\n console.warn('Could not save flyout data.');\n console.warn(err);\n }\n );\n }\n }\n\n private checkInitialSize(): void {\n if (this.flyoutWidth < this.config.minWidth) {\n this.flyoutWidth = this.config.minWidth;\n this.setUserData();\n } else if (this.flyoutWidth > this.config.maxWidth) {\n this.flyoutWidth = this.config.maxWidth;\n this.setUserData();\n }\n\n // Ensure flyout does not load larger than the window and its buffer\n if (window.innerWidth - this.flyoutWidth < this.windowBufferSize) {\n this.flyoutWidth = window.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n this.setUserData();\n }\n\n if (\n this.flyoutMediaQueryService.isWidthWithinBreakpiont(\n window.innerWidth,\n SkyMediaBreakpoints.xs\n )\n ) {\n this.updateBreakpointAndResponsiveClass(window.innerWidth);\n } else {\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n }\n\n this.setFullscreen();\n }\n\n private getString(key: string): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.resourcesService.getStringForLocale({ locale: 'en-US' }, key);\n }\n\n private handleResizeKeyDown(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (event.key) {\n const keyPressed = event.key.toLowerCase().replace('arrow', '');\n switch (keyPressed) {\n case 'enter':\n case ' ':\n this.resizeKeyControlActive = !this.resizeKeyControlActive;\n break;\n case 'tab':\n /* istanbul ignore else */\n if (this.resizeKeyControlActive) {\n this.resizeKeyControlActive = false;\n }\n break;\n case 'left':\n if (this.resizeKeyControlActive) {\n /* istanbul ignore else */\n if (this.flyoutWidth < this.config.maxWidth) {\n this.flyoutWidth = Math.min(\n this.flyoutWidth + this.widthStep,\n this.config.maxWidth\n );\n }\n }\n break;\n\n case 'right':\n if (this.resizeKeyControlActive) {\n /* istanbul ignore else */\n if (this.flyoutWidth > this.config.minWidth) {\n this.flyoutWidth = Math.max(\n this.flyoutWidth - this.widthStep,\n this.config.minWidth\n );\n }\n }\n break;\n\n /* istanbul ignore next */\n default:\n break;\n }\n }\n }\n\n /** Executes a function when the zone is stable. */\n private _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n\n private initFocusTrap(): void {\n this.enableTrapFocusAutoCapture = false;\n this.enableTrapFocus = false;\n // Waiting for zone to be stable will avoid ExpressionChangeAfterCheckedError.\n this._executeOnStable(() => {\n this.enableTrapFocusAutoCapture = true;\n this.enableTrapFocus = true;\n });\n }\n}\n","<div\n class=\"sky-flyout\"\n tabindex=\"-1\"\n [attr.role]=\"config?.ariaRole ? config.ariaRole : 'dialog'\"\n [attr.aria-describedby]=\"config?.ariaDescribedBy\"\n [attr.aria-label]=\"config?.ariaLabel\"\n [attr.aria-labelledby]=\"config?.ariaLabelledBy\"\n [attr.aria-modal]=\"\n config?.ariaRole === 'dialog' || !config?.ariaRole ? true : false\n \"\n [attr.hidden]=\"!instanceReady ? true : undefined\"\n [id]=\"flyoutId\"\n [ngClass]=\"{\n 'sky-flyout-hidden': !isOpen && !isOpening,\n 'sky-flyout-fullscreen': isFullscreen\n }\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-8': 'modern'\n }\"\n (@flyoutState.done)=\"animationDone($event)\"\n [@flyoutState]=\"getAnimationState()\"\n [style.width.px]=\"flyoutWidth\"\n #flyoutRef\n [cdkTrapFocus]=\"enableTrapFocus\"\n [cdkTrapFocusAutoCapture]=\"enableTrapFocusAutoCapture\"\n>\n <div\n class=\"sky-flyout-header\"\n [skyThemeClass]=\"{\n 'sky-padding-squish-large': 'default'\n }\"\n #flyoutHeader\n >\n <div class=\"sky-flyout-header-content\">\n <button\n *skyThemeIf=\"'modern'\"\n class=\"\n sky-btn\n sky-btn-icon-borderless\n sky-margin-inline-sm\n sky-flyout-header-grab-handle\n \"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n (keydown)=\"onHeaderGrabHandleKeyDown($event)\"\n (mousedown)=\"onHeaderGrabHandleMouseDown($event)\"\n >\n <sky-icon icon=\"tile-drag\" iconType=\"skyux\" size=\"lg\"> </sky-icon>\n </button>\n\n <sky-flyout-iterator\n *ngIf=\"config.showIterator\"\n [nextButtonDisabled]=\"config.iteratorNextButtonDisabled\"\n [previousButtonDisabled]=\"config.iteratorPreviousButtonDisabled\"\n (nextButtonClick)=\"onIteratorNextButtonClick()\"\n (previousButtonClick)=\"onIteratorPreviousButtonClick()\"\n >\n </sky-flyout-iterator>\n </div>\n <div class=\"sky-flyout-header-buttons\">\n <ng-container *ngTemplateOutlet=\"permalinkTemplate\"> </ng-container>\n <ng-container *ngTemplateOutlet=\"primaryActionTemplate\"> </ng-container>\n <button\n class=\"sky-btn sky-flyout-btn-close sky-label-icon-theme-default\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_flyout_close' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"close()\"\n #flyoutCloseButton\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"close\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n <div class=\"sky-flyout-content\" #flyoutContent>\n <div #target></div>\n </div>\n <div\n class=\"sky-flyout-resize-handle\"\n role=\"separator\"\n tabindex=\"0\"\n type=\"range\"\n [attr.aria-controls]=\"flyoutId\"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n [attr.aria-valuemax]=\"config.maxWidth\"\n [attr.aria-valuemin]=\"config.minWidth\"\n [attr.aria-valuenow]=\"flyoutWidth\"\n (keydown)=\"onResizeHandleKeyDown($event)\"\n (mousedown)=\"onResizeHandleMouseDown($event)\"\n ></div>\n</div>\n\n<ng-template #permalinkTemplate>\n <ng-template [ngIf]=\"permalink\">\n <ng-template [ngIf]=\"permalink.url\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [skyHref]=\"permalink.url\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n <ng-template [ngIf]=\"permalink.route\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [routerLink]=\"permalink.route.commands\"\n [fragment]=\"permalink.route.extras?.fragment\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n [queryParams]=\"permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"permalink.route.extras?.queryParamsHandling\"\n [state]=\"permalink.route.extras?.state\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template #primaryActionTemplate>\n <ng-template [ngIf]=\"primaryAction && primaryAction.callback\">\n <button\n type=\"button\"\n class=\"\n sky-btn\n sky-btn-default\n sky-flyout-btn-primary-action\n sky-margin-inline-default\n \"\n (click)=\"invokePrimaryAction()\"\n >\n {{ primaryActionLabel }}\n </button>\n </ng-template>\n</ng-template>\n"]}
|
|
1
|
+
{"version":3,"file":"flyout.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.component.ts","../../../../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n AnimationEvent,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n HostListener,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService,\n SkyUIConfigService,\n} from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyFlyoutAdapterService } from './flyout-adapter.service';\nimport { SkyFlyoutInstance } from './flyout-instance';\nimport { SkyFlyoutMediaQueryService } from './flyout-media-query.service';\nimport { SkyFlyoutAction } from './types/flyout-action';\nimport { SkyFlyoutBeforeCloseHandler } from './types/flyout-before-close-handler';\nimport { SkyFlyoutConfig } from './types/flyout-config';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\nimport { SkyFlyoutPermalink } from './types/flyout-permalink';\n\nconst FLYOUT_OPEN_STATE = 'flyoutOpen';\nconst FLYOUT_CLOSED_STATE = 'flyoutClosed';\n\nlet nextId = 0;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-flyout',\n templateUrl: './flyout.component.html',\n styleUrls: ['./flyout.component.scss'],\n providers: [\n SkyFlyoutAdapterService,\n SkyFlyoutMediaQueryService,\n { provide: SkyMediaQueryService, useExisting: SkyFlyoutMediaQueryService },\n ],\n animations: [\n trigger('flyoutState', [\n state(FLYOUT_OPEN_STATE, style({ transform: 'initial' })),\n state(FLYOUT_CLOSED_STATE, style({ transform: 'translateX(100%)' })),\n transition('void => *', [\n style({ transform: 'translateX(100%)' }),\n animate(250),\n ]),\n transition(`* <=> *`, animate('250ms ease-in')),\n ]),\n ],\n // Allow automatic change detection for child components.\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class SkyFlyoutComponent implements OnDestroy, OnInit {\n public config: SkyFlyoutConfig;\n public enableTrapFocus: boolean;\n public enableTrapFocusAutoCapture: boolean;\n public flyoutId = `sky-flyout-${++nextId}`;\n public flyoutState = FLYOUT_CLOSED_STATE;\n public isOpen = false;\n public isOpening = false;\n\n public flyoutWidth = 0;\n public instanceReady = false;\n public isDragging = false;\n public isFullscreen = false;\n public resizeKeyControlActive = false;\n\n private xCoord = 0;\n private windowBufferSize = 20;\n\n public get messageStream(): Subject<SkyFlyoutMessage> {\n return this._messageStream;\n }\n\n public get permalink(): SkyFlyoutPermalink {\n const permalink = this.config.permalink;\n if (permalink) {\n return permalink;\n }\n\n return {};\n }\n\n public get permalinkLabel(): string {\n if (this.permalink.label) {\n return this.permalink.label;\n }\n\n return this.getString('skyux_flyout_permalink_button');\n }\n\n public get primaryAction(): SkyFlyoutAction {\n const primaryAction = this.config.primaryAction;\n if (primaryAction) {\n return primaryAction;\n }\n\n return {};\n }\n\n public get primaryActionLabel(): string {\n if (this.config.primaryAction && this.config.primaryAction.label) {\n return this.config.primaryAction.label;\n }\n\n return this.getString('skyux_flyout_primary_action_button');\n }\n\n public themeName: string;\n\n /**\n * @internal\n */\n public widthStep = 10;\n\n /**\n * @internal\n */\n @ViewChild('flyoutRef', {\n read: ElementRef,\n static: true,\n })\n public flyoutRef: ElementRef;\n\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n private target: ViewContainerRef;\n\n @ViewChild('flyoutCloseButton', {\n read: ElementRef,\n static: true,\n })\n private flyoutCloseButton: ElementRef;\n\n @ViewChild('flyoutContent', {\n read: ElementRef,\n static: true,\n })\n private flyoutContent: ElementRef;\n\n @ViewChild('flyoutHeader', {\n read: ElementRef,\n static: true,\n })\n private flyoutHeader: ElementRef;\n\n private flyoutInstance: SkyFlyoutInstance<any>;\n\n private ngUnsubscribe = new Subject();\n\n private _messageStream = new Subject<SkyFlyoutMessage>();\n\n constructor(\n private adapter: SkyFlyoutAdapterService,\n private changeDetector: ChangeDetectorRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver,\n private resourcesService: SkyLibResourcesService,\n private flyoutMediaQueryService: SkyFlyoutMediaQueryService,\n private elementRef: ElementRef,\n private uiConfigService: SkyUIConfigService,\n private readonly _ngZone: NgZone\n ) {\n // All commands flow through the message stream.\n this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n this.handleIncomingMessages(message);\n });\n }\n\n public ngOnInit(): void {\n this.adapter.adjustHeaderForHelp(this.flyoutHeader);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n @HostListener('window:resize', ['$event'])\n public onWindowResize(event: any): void {\n if (\n this.flyoutMediaQueryService.isWidthWithinBreakpiont(\n event.target.innerWidth,\n SkyMediaBreakpoints.xs\n )\n ) {\n this.updateBreakpointAndResponsiveClass(event.target.innerWidth);\n } else {\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n }\n\n this.setFullscreen();\n\n if (event.target.innerWidth - this.flyoutWidth < this.windowBufferSize) {\n this.flyoutWidth = event.target.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n this.setUserData();\n }\n }\n\n public attach<T>(\n component: Type<T>,\n config: SkyFlyoutConfig\n ): SkyFlyoutInstance<T> {\n this.cleanTemplate();\n\n // Emit the closed event on any previously opened flyout instance\n if (this.flyoutInstance) {\n this.notifyClosed();\n }\n\n this.config = Object.assign({ providers: [] }, config);\n this.config.defaultWidth =\n this.config.defaultWidth || window.innerWidth / 2;\n this.config.minWidth = this.config.minWidth || 320;\n this.config.maxWidth = this.config.maxWidth || this.config.defaultWidth;\n\n this.config.showIterator = this.config.showIterator || false;\n this.config.iteratorNextButtonDisabled =\n this.config.iteratorNextButtonDisabled || false;\n this.config.iteratorPreviousButtonDisabled =\n this.config.iteratorPreviousButtonDisabled || false;\n\n const factory = this.resolver.resolveComponentFactory(component);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: this.config.providers,\n });\n\n const componentRef = this.target.createComponent(\n factory,\n undefined,\n injector\n );\n\n this.flyoutInstance = this.createFlyoutInstance<T>(componentRef.instance);\n\n // This is used to ensure we do not render the flyout until we have attached the component.\n // This allows the aria-labelledby to function correctly.\n this.instanceReady = true;\n this.changeDetector.markForCheck();\n\n // Open the flyout immediately.\n this.messageStream.next({\n type: SkyFlyoutMessageType.Open,\n });\n\n if (this.config.settingsKey) {\n this.uiConfigService\n .getConfig(this.config.settingsKey)\n .pipe(take(1))\n .subscribe((value: any) => {\n if (value && value.flyoutWidth) {\n this.flyoutWidth = value.flyoutWidth;\n } else {\n // Bad data, or config is the default config.\n this.flyoutWidth = this.config.defaultWidth;\n }\n this.checkInitialSize();\n });\n } else {\n this.flyoutWidth = this.config.defaultWidth;\n this.checkInitialSize();\n }\n\n return this.flyoutInstance;\n }\n\n public close(): void {\n this.messageStream.next({\n type: SkyFlyoutMessageType.Close,\n });\n }\n\n public invokePrimaryAction(): boolean {\n this.primaryAction.callback();\n\n if (this.primaryAction.closeAfterInvoking) {\n this.close();\n }\n\n return false;\n }\n\n public getAnimationState(): string {\n return this.instanceReady && this.isOpening\n ? FLYOUT_OPEN_STATE\n : FLYOUT_CLOSED_STATE;\n }\n\n public animationDone(event: AnimationEvent): void {\n if (event.toState === FLYOUT_OPEN_STATE) {\n this.isOpen = true;\n }\n\n if (event.toState === FLYOUT_CLOSED_STATE) {\n this.isOpen = false;\n this.notifyClosed();\n this.cleanTemplate();\n }\n }\n\n public onHeaderGrabHandleMouseDown(event: MouseEvent): void {\n this.onResizeHandleMouseDown(event);\n }\n\n public onHeaderGrabHandleKeyDown(event: KeyboardEvent): void {\n this.handleResizeKeyDown(event);\n }\n\n public onResizeHandleKeyDown(event: KeyboardEvent): void {\n this.handleResizeKeyDown(event);\n }\n\n public onResizeHandleMouseDown(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isFullscreen) {\n return;\n }\n\n this.isDragging = true;\n this.xCoord = event.clientX;\n\n this.adapter.toggleIframePointerEvents(false);\n\n fromEvent(document, 'mousemove')\n .pipe(\n takeWhile(() => {\n return this.isDragging;\n })\n )\n .subscribe((moveEvent: any) => {\n this.onMouseMove(moveEvent);\n });\n\n fromEvent(document, 'mouseup')\n .pipe(\n takeWhile(() => {\n return this.isDragging;\n })\n )\n .subscribe((mouseUpEvent: any) => {\n this.onHandleRelease(mouseUpEvent);\n });\n }\n\n public onMouseMove(event: MouseEvent): void {\n /* Sanity check */\n /* istanbul ignore if */\n if (!this.isDragging) {\n return;\n }\n\n const offsetX = event.clientX - this.xCoord;\n let width = this.flyoutWidth;\n\n width -= offsetX;\n\n if (width < this.config.minWidth || width > this.config.maxWidth) {\n return;\n }\n\n if (window.innerWidth - width < this.windowBufferSize) {\n width = window.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n } else {\n this.xCoord = event.clientX;\n }\n\n this.flyoutWidth = width;\n\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n\n this.changeDetector.markForCheck();\n }\n\n public onHandleRelease(event: MouseEvent): void {\n fromEvent(document, 'click')\n .pipe(take(1))\n .subscribe(() => {\n this.isDragging = false;\n this.adapter.toggleIframePointerEvents(true);\n this.setUserData();\n });\n }\n\n public onIteratorPreviousButtonClick(): void {\n this.flyoutInstance.iteratorPreviousButtonClick.emit();\n }\n\n public onIteratorNextButtonClick(): void {\n this.flyoutInstance.iteratorNextButtonClick.emit();\n }\n\n private createFlyoutInstance<T>(component: T): SkyFlyoutInstance<T> {\n const instance = new SkyFlyoutInstance<T>();\n\n instance.componentInstance = component;\n instance.hostController\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n this.messageStream.next(message);\n });\n\n return instance;\n }\n\n private handleIncomingMessages(message: SkyFlyoutMessage): void {\n /* tslint:disable-next-line:switch-default */\n switch (message.type) {\n case SkyFlyoutMessageType.Open:\n if (!this.isOpen) {\n this.isOpen = false;\n this.isOpening = true;\n }\n this.initFocusTrap();\n break;\n\n case SkyFlyoutMessageType.Close:\n if (\n (this.flyoutInstance.beforeClose as Subject<any>).observers.length ===\n 0 ||\n message.data?.ignoreBeforeClose\n ) {\n this.isOpen = true;\n this.isOpening = false;\n } else {\n (this.flyoutInstance.beforeClose as Subject<any>).next(\n new SkyFlyoutBeforeCloseHandler(() => {\n this.isOpen = true;\n this.isOpening = false;\n })\n );\n }\n break;\n\n case SkyFlyoutMessageType.EnableIteratorNextButton:\n this.config.iteratorNextButtonDisabled = false;\n break;\n\n case SkyFlyoutMessageType.EnableIteratorPreviousButton:\n this.config.iteratorPreviousButtonDisabled = false;\n break;\n\n case SkyFlyoutMessageType.DisableIteratorNextButton:\n this.config.iteratorNextButtonDisabled = true;\n break;\n\n case SkyFlyoutMessageType.DisableIteratorPreviousButton:\n this.config.iteratorPreviousButtonDisabled = true;\n break;\n }\n\n this.changeDetector.markForCheck();\n }\n\n private notifyClosed(): void {\n this.flyoutInstance.closed.emit();\n this.flyoutInstance.closed.complete();\n }\n\n private cleanTemplate(): void {\n this.target.clear();\n }\n\n private updateBreakpointAndResponsiveClass(width: number): void {\n this.flyoutMediaQueryService.setBreakpointForWidth(width);\n\n const newBreakpiont = this.flyoutMediaQueryService.current;\n\n this.adapter.setResponsiveClass(this.elementRef, newBreakpiont);\n }\n\n private setFullscreen(): void {\n if (window.innerWidth - this.windowBufferSize < this.config.minWidth) {\n this.isFullscreen = true;\n } else {\n this.isFullscreen = false;\n }\n }\n\n private setUserData(): void {\n if (this.config.settingsKey) {\n this.uiConfigService\n .setConfig(this.config.settingsKey, {\n flyoutWidth: this.flyoutWidth,\n })\n .pipe(take(1))\n .subscribe(\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n (err) => {\n console.warn('Could not save flyout data.');\n console.warn(err);\n }\n );\n }\n }\n\n private checkInitialSize(): void {\n if (this.flyoutWidth < this.config.minWidth) {\n this.flyoutWidth = this.config.minWidth;\n this.setUserData();\n } else if (this.flyoutWidth > this.config.maxWidth) {\n this.flyoutWidth = this.config.maxWidth;\n this.setUserData();\n }\n\n // Ensure flyout does not load larger than the window and its buffer\n if (window.innerWidth - this.flyoutWidth < this.windowBufferSize) {\n this.flyoutWidth = window.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n this.setUserData();\n }\n\n if (\n this.flyoutMediaQueryService.isWidthWithinBreakpiont(\n window.innerWidth,\n SkyMediaBreakpoints.xs\n )\n ) {\n this.updateBreakpointAndResponsiveClass(window.innerWidth);\n } else {\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n }\n\n this.setFullscreen();\n }\n\n private getString(key: string): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.resourcesService.getStringForLocale({ locale: 'en-US' }, key);\n }\n\n private handleResizeKeyDown(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (event.key) {\n const keyPressed = event.key.toLowerCase().replace('arrow', '');\n switch (keyPressed) {\n case 'enter':\n case ' ':\n this.resizeKeyControlActive = !this.resizeKeyControlActive;\n break;\n case 'tab':\n /* istanbul ignore else */\n if (this.resizeKeyControlActive) {\n this.resizeKeyControlActive = false;\n }\n break;\n case 'left':\n if (this.resizeKeyControlActive) {\n /* istanbul ignore else */\n if (this.flyoutWidth < this.config.maxWidth) {\n this.flyoutWidth = Math.min(\n this.flyoutWidth + this.widthStep,\n this.config.maxWidth\n );\n }\n }\n break;\n\n case 'right':\n if (this.resizeKeyControlActive) {\n /* istanbul ignore else */\n if (this.flyoutWidth > this.config.minWidth) {\n this.flyoutWidth = Math.max(\n this.flyoutWidth - this.widthStep,\n this.config.minWidth\n );\n }\n }\n break;\n\n /* istanbul ignore next */\n default:\n break;\n }\n }\n }\n\n /** Executes a function when the zone is stable. */\n private _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n\n private initFocusTrap(): void {\n this.enableTrapFocusAutoCapture = false;\n this.enableTrapFocus = false;\n // Waiting for zone to be stable will avoid ExpressionChangeAfterCheckedError.\n this._executeOnStable(() => {\n this.enableTrapFocusAutoCapture = true;\n this.enableTrapFocus = true;\n });\n }\n}\n","<div\n class=\"sky-flyout\"\n tabindex=\"-1\"\n [attr.role]=\"config?.ariaRole ? config.ariaRole : 'dialog'\"\n [attr.aria-describedby]=\"config?.ariaDescribedBy\"\n [attr.aria-label]=\"config?.ariaLabel\"\n [attr.aria-labelledby]=\"config?.ariaLabelledBy\"\n [attr.aria-modal]=\"\n config?.ariaRole === 'dialog' || !config?.ariaRole ? true : false\n \"\n [attr.hidden]=\"!instanceReady ? true : undefined\"\n [id]=\"flyoutId\"\n [ngClass]=\"{\n 'sky-flyout-hidden': !isOpen && !isOpening,\n 'sky-flyout-fullscreen': isFullscreen\n }\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-8': 'modern'\n }\"\n (@flyoutState.done)=\"animationDone($event)\"\n [@flyoutState]=\"getAnimationState()\"\n [style.width.px]=\"flyoutWidth\"\n #flyoutRef\n [cdkTrapFocus]=\"enableTrapFocus\"\n [cdkTrapFocusAutoCapture]=\"enableTrapFocusAutoCapture\"\n>\n <div\n class=\"sky-flyout-header\"\n [skyThemeClass]=\"{\n 'sky-padding-squish-large': 'default'\n }\"\n #flyoutHeader\n >\n <div class=\"sky-flyout-header-content\">\n <button\n *skyThemeIf=\"'modern'\"\n class=\"\n sky-btn\n sky-btn-icon-borderless\n sky-margin-inline-sm\n sky-flyout-header-grab-handle\n \"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n (keydown)=\"onHeaderGrabHandleKeyDown($event)\"\n (mousedown)=\"onHeaderGrabHandleMouseDown($event)\"\n >\n <sky-icon icon=\"tile-drag\" iconType=\"skyux\" size=\"lg\"> </sky-icon>\n </button>\n\n <sky-flyout-iterator\n *ngIf=\"config.showIterator\"\n [nextButtonDisabled]=\"config.iteratorNextButtonDisabled\"\n [previousButtonDisabled]=\"config.iteratorPreviousButtonDisabled\"\n (nextButtonClick)=\"onIteratorNextButtonClick()\"\n (previousButtonClick)=\"onIteratorPreviousButtonClick()\"\n >\n </sky-flyout-iterator>\n </div>\n <div class=\"sky-flyout-header-buttons\">\n <ng-container *ngTemplateOutlet=\"permalinkTemplate\"> </ng-container>\n <ng-container *ngTemplateOutlet=\"primaryActionTemplate\"> </ng-container>\n <button\n class=\"sky-btn sky-flyout-btn-close sky-label-icon-theme-default\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_flyout_close' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"close()\"\n #flyoutCloseButton\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"close\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n <div class=\"sky-flyout-content\" #flyoutContent>\n <div #target></div>\n </div>\n <div\n class=\"sky-flyout-resize-handle\"\n role=\"separator\"\n tabindex=\"0\"\n type=\"range\"\n [attr.aria-controls]=\"flyoutId\"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n [attr.aria-valuemax]=\"config.maxWidth\"\n [attr.aria-valuemin]=\"config.minWidth\"\n [attr.aria-valuenow]=\"flyoutWidth\"\n (keydown)=\"onResizeHandleKeyDown($event)\"\n (mousedown)=\"onResizeHandleMouseDown($event)\"\n ></div>\n</div>\n\n<ng-template #permalinkTemplate>\n <ng-template [ngIf]=\"permalink\">\n <ng-template [ngIf]=\"permalink.url\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [skyHref]=\"permalink.url\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n <ng-template [ngIf]=\"permalink.route\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [routerLink]=\"permalink.route.commands\"\n [fragment]=\"permalink.route.extras?.fragment\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n [queryParams]=\"permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"permalink.route.extras?.queryParamsHandling\"\n [state]=\"permalink.route.extras?.state\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template #primaryActionTemplate>\n <ng-template [ngIf]=\"primaryAction && primaryAction.callback\">\n <button\n type=\"button\"\n class=\"\n sky-btn\n sky-btn-default\n sky-flyout-btn-primary-action\n sky-margin-inline-default\n \"\n (click)=\"invokePrimaryAction()\"\n >\n {{ primaryActionLabel }}\n </button>\n </ng-template>\n</ng-template>\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApplicationRef, Injectable, NgZone, } from '@angular/core';
|
|
1
|
+
import { ApplicationRef, Injectable, NgZone, Optional, } from '@angular/core';
|
|
2
2
|
import { NavigationStart, Router } from '@angular/router';
|
|
3
3
|
import { SkyAppWindowRef, SkyCoreAdapterService, SkyDynamicComponentService, } from '@skyux/core';
|
|
4
4
|
import { Subject, fromEvent } from 'rxjs';
|
|
@@ -14,7 +14,10 @@ import * as i2 from "@angular/router";
|
|
|
14
14
|
* document's `body` element. The `SkyFlyoutInstance` class watches for and triggers flyout events.
|
|
15
15
|
*/
|
|
16
16
|
export class SkyFlyoutService {
|
|
17
|
-
constructor(coreAdapter, windowRef, dynamicComponentService, router, _ngZone,
|
|
17
|
+
constructor(coreAdapter, windowRef, dynamicComponentService, router, _ngZone,
|
|
18
|
+
// NOTE: This used to be used for an `applicationRef.tick` which has since been removed.
|
|
19
|
+
// We can not remove this due to it being a breaking change for those manually constructing the service.
|
|
20
|
+
applicationRef) {
|
|
18
21
|
this.coreAdapter = coreAdapter;
|
|
19
22
|
this.windowRef = windowRef;
|
|
20
23
|
this.dynamicComponentService = dynamicComponentService;
|
|
@@ -37,7 +40,6 @@ export class SkyFlyoutService {
|
|
|
37
40
|
*/
|
|
38
41
|
close(args) {
|
|
39
42
|
if (this.host && !this.isOpening) {
|
|
40
|
-
this.removeAfterClosed = true;
|
|
41
43
|
this.host.instance.messageStream.next({
|
|
42
44
|
type: SkyFlyoutMessageType.Close,
|
|
43
45
|
data: {
|
|
@@ -68,8 +70,6 @@ export class SkyFlyoutService {
|
|
|
68
70
|
this._ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
69
71
|
if (this.host) {
|
|
70
72
|
this.removeHostComponent();
|
|
71
|
-
// Without this tick - the host does not actually get removed on initial navigation in this case.
|
|
72
|
-
this.applicationRef.tick();
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
75
|
}
|
|
@@ -156,12 +156,14 @@ export class SkyFlyoutService {
|
|
|
156
156
|
this.ngUnsubscribe = new Subject();
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
SkyFlyoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyFlyoutService, deps: [{ token: i1.SkyCoreAdapterService }, { token: i1.SkyAppWindowRef }, { token: i1.SkyDynamicComponentService }, { token: i2.Router }, { token: i0.NgZone }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
159
|
+
SkyFlyoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyFlyoutService, deps: [{ token: i1.SkyCoreAdapterService }, { token: i1.SkyAppWindowRef }, { token: i1.SkyDynamicComponentService }, { token: i2.Router }, { token: i0.NgZone }, { token: i0.ApplicationRef, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
160
160
|
SkyFlyoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyFlyoutService, providedIn: 'any' });
|
|
161
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyFlyoutService, decorators: [{
|
|
162
162
|
type: Injectable,
|
|
163
163
|
args: [{
|
|
164
164
|
providedIn: 'any',
|
|
165
165
|
}]
|
|
166
|
-
}], ctorParameters: function () { return [{ type: i1.SkyCoreAdapterService }, { type: i1.SkyAppWindowRef }, { type: i1.SkyDynamicComponentService }, { type: i2.Router }, { type: i0.NgZone }, { type: i0.ApplicationRef
|
|
166
|
+
}], ctorParameters: function () { return [{ type: i1.SkyCoreAdapterService }, { type: i1.SkyAppWindowRef }, { type: i1.SkyDynamicComponentService }, { type: i2.Router }, { type: i0.NgZone }, { type: i0.ApplicationRef, decorators: [{
|
|
167
|
+
type: Optional
|
|
168
|
+
}] }]; } });
|
|
167
169
|
//# sourceMappingURL=flyout.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flyout.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,UAAU,EACV,MAAM,GAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;;;;AAEnE;;;;GAIG;AAIH,MAAM,OAAO,gBAAgB;IAM3B,YACU,WAAkC,EAClC,SAA0B,EAC1B,uBAAmD,EACnD,MAAc,EACL,OAAe,EACf,cAA8B;QALvC,gBAAW,GAAX,WAAW,CAAuB;QAClC,cAAS,GAAT,SAAS,CAAiB;QAC1B,4BAAuB,GAAvB,uBAAuB,CAA4B;QACnD,WAAM,GAAN,MAAM,CAAQ;QACL,YAAO,GAAP,OAAO,CAAQ;QACf,mBAAc,GAAd,cAAc,CAAgB;QAVzC,sBAAiB,GAAG,KAAK,CAAC;QAC1B,cAAS,GAAG,KAAK,CAAC;QAClB,kBAAa,GAAG,IAAI,OAAO,EAAW,CAAC;IAS5C,CAAC;IAEG,WAAW;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAyB;QACpC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;gBACpC,IAAI,EAAE,oBAAoB,CAAC,KAAK;gBAChC,IAAI,EAAE;oBACJ,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK;iBACzD;aACF,CAAC,CAAC;SACJ;IACH,CAAC;IAED;;;;OAIG;IACI,IAAI,CACT,SAAkB,EAClB,MAAwB;QAExB,6EAA6E;QAC7E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAEvC,IAAI,CAAC,MAAM,CAAC,MAAM;iBACf,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;iBAC9C,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,KAAK,YAAY,eAAe,EAAE;oBACpC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAEb,+FAA+F;oBAC/F,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;wBACjD,IAAI,IAAI,CAAC,IAAI,EAAE;4BACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BAC3B,iGAAiG;4BACjG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;yBAC5B;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACN;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE5D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,IAAI;YACP,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;SACvB;IACH,CAAC;IAEO,YAAY,CAAI,MAA4B;QAClD,0BAA0B;QAC1B,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAE1C,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB;;;;;;eAMG;YACH,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;iBAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,CAAC,KAAiB,EAAE,EAAE;gBAC/B,OAAO,GAAG,KAAK,CAAC;gBAEhB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;oBACjC,OAAO;iBACR;gBAED,IAAI,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBACjE,OAAO;iBACR;gBAED,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,KAAK,QAAQ;oBACvB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CACnC,KAAK,CAAC,MAAM,EACZ,cAAc,CAAC,SAAS,CAAC,aAAa,CACvC,CAAC;gBAER,0BAA0B;gBAC1B,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;iBAChB;YACH,CAAC,CAAC,CAAC;YAEL;;;;;eAKG;YACH,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;iBACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,GAAG,EAAE;gBACd,IAAI,OAAO,EAAE;oBACX,IAAI,CAAC,KAAK,EAAE,CAAC;iBACd;YACH,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,cAAc,CAAC,aAAa;iBACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,CAAC,OAAyB,EAAE,EAAE;gBACvC,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,KAAK,EAAE;oBAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;iBACxB;YACH,CAAC,CAAC,CAAC;YAEL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;gBACzC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBAC5B;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAW,CAAC;IAC9C,CAAC;;8GA5KU,gBAAgB;kHAAhB,gBAAgB,cAFf,KAAK;4FAEN,gBAAgB;kBAH5B,UAAU;mBAAC;oBACV,UAAU,EAAE,KAAK;iBAClB","sourcesContent":["import {\n ApplicationRef,\n ComponentRef,\n Injectable,\n NgZone,\n OnDestroy,\n Type,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport {\n SkyAppWindowRef,\n SkyCoreAdapterService,\n SkyDynamicComponentService,\n} from '@skyux/core';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyFlyoutInstance } from './flyout-instance';\nimport { SkyFlyoutComponent } from './flyout.component';\nimport { SkyFlyoutCloseArgs } from './types/flyout-close-args';\nimport { SkyFlyoutConfig } from './types/flyout-config';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\n\n/**\n * Launches flyouts and provides a common look and feel.\n * This service dynamically generates the flyout component and appends it directly to the\n * document's `body` element. The `SkyFlyoutInstance` class watches for and triggers flyout events.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyFlyoutService implements OnDestroy {\n private host: ComponentRef<SkyFlyoutComponent>;\n private removeAfterClosed = false;\n private isOpening = false;\n private ngUnsubscribe = new Subject<boolean>();\n\n constructor(\n private coreAdapter: SkyCoreAdapterService,\n private windowRef: SkyAppWindowRef,\n private dynamicComponentService: SkyDynamicComponentService,\n private router: Router,\n private readonly _ngZone: NgZone,\n private readonly applicationRef: ApplicationRef\n ) {}\n\n public ngOnDestroy(): void {\n this.removeListners();\n if (this.host) {\n this.removeHostComponent();\n }\n }\n\n /**\n * Closes the flyout. This method also removes the flyout's HTML elements from the DOM.\n * @param args Arguments used when closing the flyout.\n */\n public close(args?: SkyFlyoutCloseArgs): void {\n if (this.host && !this.isOpening) {\n this.removeAfterClosed = true;\n this.host.instance.messageStream.next({\n type: SkyFlyoutMessageType.Close,\n data: {\n ignoreBeforeClose: args ? args.ignoreBeforeClose : false,\n },\n });\n }\n }\n\n /**\n * Opens a flyout and displays the specified component.\n * @param component Specifies the component to render.\n * @param config Specifies the flyout configuration passed to the specified component's constructor.\n */\n public open<T>(\n component: Type<T>,\n config?: SkyFlyoutConfig\n ): SkyFlyoutInstance<T> {\n // isOpening flag will prevent close() from firing when open() is also fired.\n this.isOpening = true;\n this.windowRef.nativeWindow.setTimeout(() => {\n this.isOpening = false;\n });\n\n if (!this.host) {\n this.host = this.createHostComponent();\n\n this.router.events\n .pipe(takeWhile(() => this.host !== undefined))\n .subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.close();\n\n // Sanity check - if the host still exists after animations should have completed - remove host\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this.host) {\n this.removeHostComponent();\n // Without this tick - the host does not actually get removed on initial navigation in this case.\n this.applicationRef.tick();\n }\n });\n }\n });\n }\n\n const flyout = this.host.instance.attach(component, config);\n\n this.addListeners(flyout);\n\n return flyout;\n }\n\n private createHostComponent(): ComponentRef<SkyFlyoutComponent> {\n this.host =\n this.dynamicComponentService.createComponent(SkyFlyoutComponent);\n return this.host;\n }\n\n private removeHostComponent(): void {\n if (this.host) {\n this.dynamicComponentService.removeComponent(this.host);\n this.host = undefined;\n }\n }\n\n private addListeners<T>(flyout: SkyFlyoutInstance<T>): void {\n /* istanbul ignore else */\n if (this.host) {\n const flyoutInstance = this.host.instance;\n\n let doClose = false;\n\n /**\n * Handles when to close a flyout.\n * Note: We're using `mouseup` in order to capture the parent of certain targets that will be\n * deleted immediately after being clicked. If we use `click`, the event is fired after the\n * element is removed from the DOM making it impossible to check the parent's z-index\n * relative to the flyout's container.\n */\n fromEvent(document, 'mouseup')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: MouseEvent) => {\n doClose = false;\n\n if (this.host.instance.isDragging) {\n return;\n }\n\n if (flyoutInstance.flyoutRef.nativeElement.contains(event.target)) {\n return;\n }\n\n const isAbove =\n event.target === document\n ? false\n : this.coreAdapter.isTargetAboveElement(\n event.target,\n flyoutInstance.flyoutRef.nativeElement\n );\n\n /* istanbul ignore else */\n if (!isAbove) {\n doClose = true;\n }\n });\n\n /**\n * Check if we should close the flyout specifically on a `click` event so that we can keep\n * it open when consumers fire another `click` event on a trigger button. Since the consumer\n * will likely use a `click` event to open the flyout, we want to wait for that event to fire\n * before determining if the flyout should be closed.\n */\n fromEvent(document, 'click')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n if (doClose) {\n this.close();\n }\n });\n\n this.removeAfterClosed = false;\n flyoutInstance.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n if (message.type === SkyFlyoutMessageType.Close) {\n this.removeAfterClosed = true;\n this.isOpening = false;\n }\n });\n\n flyout.closed.pipe(take(1)).subscribe(() => {\n this.removeListners();\n if (this.removeAfterClosed) {\n this.removeHostComponent();\n }\n });\n }\n }\n\n private removeListners(): void {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.unsubscribe();\n this.ngUnsubscribe = new Subject<boolean>();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"flyout.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ApplicationRef,\n ComponentRef,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Type,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport {\n SkyAppWindowRef,\n SkyCoreAdapterService,\n SkyDynamicComponentService,\n} from '@skyux/core';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyFlyoutInstance } from './flyout-instance';\nimport { SkyFlyoutComponent } from './flyout.component';\nimport { SkyFlyoutCloseArgs } from './types/flyout-close-args';\nimport { SkyFlyoutConfig } from './types/flyout-config';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\n\n/**\n * Launches flyouts and provides a common look and feel.\n * This service dynamically generates the flyout component and appends it directly to the\n * document's `body` element. The `SkyFlyoutInstance` class watches for and triggers flyout events.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyFlyoutService implements OnDestroy {\n private host: ComponentRef<SkyFlyoutComponent>;\n private removeAfterClosed = false;\n private isOpening = false;\n private ngUnsubscribe = new Subject<boolean>();\n\n constructor(\n private coreAdapter: SkyCoreAdapterService,\n private windowRef: SkyAppWindowRef,\n private dynamicComponentService: SkyDynamicComponentService,\n private router: Router,\n private readonly _ngZone: NgZone,\n // NOTE: This used to be used for an `applicationRef.tick` which has since been removed.\n // We can not remove this due to it being a breaking change for those manually constructing the service.\n @Optional() private readonly applicationRef?: ApplicationRef\n ) {}\n\n public ngOnDestroy(): void {\n this.removeListners();\n if (this.host) {\n this.removeHostComponent();\n }\n }\n\n /**\n * Closes the flyout. This method also removes the flyout's HTML elements from the DOM.\n * @param args Arguments used when closing the flyout.\n */\n public close(args?: SkyFlyoutCloseArgs): void {\n if (this.host && !this.isOpening) {\n this.host.instance.messageStream.next({\n type: SkyFlyoutMessageType.Close,\n data: {\n ignoreBeforeClose: args ? args.ignoreBeforeClose : false,\n },\n });\n }\n }\n\n /**\n * Opens a flyout and displays the specified component.\n * @param component Specifies the component to render.\n * @param config Specifies the flyout configuration passed to the specified component's constructor.\n */\n public open<T>(\n component: Type<T>,\n config?: SkyFlyoutConfig\n ): SkyFlyoutInstance<T> {\n // isOpening flag will prevent close() from firing when open() is also fired.\n this.isOpening = true;\n this.windowRef.nativeWindow.setTimeout(() => {\n this.isOpening = false;\n });\n\n if (!this.host) {\n this.host = this.createHostComponent();\n\n this.router.events\n .pipe(takeWhile(() => this.host !== undefined))\n .subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.close();\n\n // Sanity check - if the host still exists after animations should have completed - remove host\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this.host) {\n this.removeHostComponent();\n }\n });\n }\n });\n }\n\n const flyout = this.host.instance.attach(component, config);\n\n this.addListeners(flyout);\n\n return flyout;\n }\n\n private createHostComponent(): ComponentRef<SkyFlyoutComponent> {\n this.host =\n this.dynamicComponentService.createComponent(SkyFlyoutComponent);\n return this.host;\n }\n\n private removeHostComponent(): void {\n if (this.host) {\n this.dynamicComponentService.removeComponent(this.host);\n this.host = undefined;\n }\n }\n\n private addListeners<T>(flyout: SkyFlyoutInstance<T>): void {\n /* istanbul ignore else */\n if (this.host) {\n const flyoutInstance = this.host.instance;\n\n let doClose = false;\n\n /**\n * Handles when to close a flyout.\n * Note: We're using `mouseup` in order to capture the parent of certain targets that will be\n * deleted immediately after being clicked. If we use `click`, the event is fired after the\n * element is removed from the DOM making it impossible to check the parent's z-index\n * relative to the flyout's container.\n */\n fromEvent(document, 'mouseup')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: MouseEvent) => {\n doClose = false;\n\n if (this.host.instance.isDragging) {\n return;\n }\n\n if (flyoutInstance.flyoutRef.nativeElement.contains(event.target)) {\n return;\n }\n\n const isAbove =\n event.target === document\n ? false\n : this.coreAdapter.isTargetAboveElement(\n event.target,\n flyoutInstance.flyoutRef.nativeElement\n );\n\n /* istanbul ignore else */\n if (!isAbove) {\n doClose = true;\n }\n });\n\n /**\n * Check if we should close the flyout specifically on a `click` event so that we can keep\n * it open when consumers fire another `click` event on a trigger button. Since the consumer\n * will likely use a `click` event to open the flyout, we want to wait for that event to fire\n * before determining if the flyout should be closed.\n */\n fromEvent(document, 'click')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n if (doClose) {\n this.close();\n }\n });\n\n this.removeAfterClosed = false;\n flyoutInstance.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n if (message.type === SkyFlyoutMessageType.Close) {\n this.removeAfterClosed = true;\n this.isOpening = false;\n }\n });\n\n flyout.closed.pipe(take(1)).subscribe(() => {\n this.removeListners();\n if (this.removeAfterClosed) {\n this.removeHostComponent();\n }\n });\n }\n }\n\n private removeListners(): void {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.unsubscribe();\n this.ngUnsubscribe = new Subject<boolean>();\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* NOTICE: DO NOT MODIFY THIS FILE!
|
|
3
3
|
* The contents of this file were automatically generated by
|
|
4
|
-
* the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-flyout' schematic.
|
|
4
|
+
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-flyout' schematic.
|
|
5
5
|
* To update this file, simply rerun the command.
|
|
6
6
|
*/
|
|
7
7
|
import { NgModule } from '@angular/core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sky-flyout-resources.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/flyout/src/lib/modules/shared/sky-flyout-resources.module.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,2BAA2B,EAE3B,aAAa,EAGb,qBAAqB,GACtB,MAAM,aAAa,CAAC;;AAErB,MAAM,SAAS,GAA0C;IACvD,OAAO,EAAE;QACP,kBAAkB,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;QAC/C,qCAAqC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;QAC9D,iCAAiC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QACtD,6BAA6B,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;QACzD,kCAAkC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;QAC9D,0BAA0B,EAAE;YAC1B,OAAO,EACL,4NAA4N;SAC/N;KACF;CACF,CAAC;AAEF,MAAM,OAAO,0BAA0B;IAC9B,SAAS,
|
|
1
|
+
{"version":3,"file":"sky-flyout-resources.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/flyout/src/lib/modules/shared/sky-flyout-resources.module.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,2BAA2B,EAE3B,aAAa,EAGb,qBAAqB,GACtB,MAAM,aAAa,CAAC;;AAErB,MAAM,SAAS,GAA0C;IACvD,OAAO,EAAE;QACP,kBAAkB,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;QAC/C,qCAAqC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;QAC9D,iCAAiC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QACtD,6BAA6B,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;QACzD,kCAAkC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;QAC9D,0BAA0B,EAAE;YAC1B,OAAO,EACL,4NAA4N;SAC/N;KACF;CACF,CAAC;AAEF,MAAM,OAAO,0BAA0B;IAC9B,SAAS,CACd,UAA4B,EAC5B,IAAY;QAEZ,OAAO,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;CACF;AAED;;GAEG;AAWH,MAAM,OAAO,wBAAwB;;sHAAxB,wBAAwB;uHAAxB,wBAAwB,YATzB,aAAa;uHASZ,wBAAwB,aARxB;QACT;YACE,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,0BAA0B;YACpC,KAAK,EAAE,IAAI;SACZ;KACF,YAPS,aAAa;4FASZ,wBAAwB;kBAVpC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,SAAS,EAAE;wBACT;4BACE,OAAO,EAAE,2BAA2B;4BACpC,QAAQ,EAAE,0BAA0B;4BACpC,KAAK,EAAE,IAAI;yBACZ;qBACF;iBACF","sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-flyout' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_flyout_close: { message: 'Close flyout' },\n skyux_flyout_iterator_previous_button: { message: 'Previous' },\n skyux_flyout_iterator_next_button: { message: 'Next' },\n skyux_flyout_permalink_button: { message: 'View record' },\n skyux_flyout_primary_action_button: { message: 'Create list' },\n skyux_flyout_resize_handle: {\n message:\n 'Resize the flyout window. Press the enter or space key to activate, then use left arrow key to expand the flyout window and right arrow key to shrink the flyout window. Press the enter, space, or tab key to deactivate.',\n },\n },\n};\n\nexport class SkyFlyoutResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyFlyoutResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyFlyoutResourcesModule {}\n"]}
|
package/fesm2015/skyux-flyout.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, NgModule, Component, Input, Output, Injectable, Injector, ElementRef, ViewContainerRef, ChangeDetectionStrategy, ViewChild, HostListener } from '@angular/core';
|
|
2
|
+
import { EventEmitter, NgModule, Component, Input, Output, Injectable, Injector, ElementRef, ViewContainerRef, ChangeDetectionStrategy, ViewChild, HostListener, Optional } from '@angular/core';
|
|
3
3
|
import { Subject, BehaviorSubject, fromEvent } from 'rxjs';
|
|
4
4
|
import * as i9 from '@angular/cdk/a11y';
|
|
5
5
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
@@ -143,7 +143,7 @@ class SkyFlyoutInstance {
|
|
|
143
143
|
/**
|
|
144
144
|
* NOTICE: DO NOT MODIFY THIS FILE!
|
|
145
145
|
* The contents of this file were automatically generated by
|
|
146
|
-
* the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-flyout' schematic.
|
|
146
|
+
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-flyout' schematic.
|
|
147
147
|
* To update this file, simply rerun the command.
|
|
148
148
|
*/
|
|
149
149
|
const RESOURCES = {
|
|
@@ -699,7 +699,9 @@ class SkyFlyoutComponent {
|
|
|
699
699
|
flyoutWidth: this.flyoutWidth,
|
|
700
700
|
})
|
|
701
701
|
.pipe(take(1))
|
|
702
|
-
.subscribe(
|
|
702
|
+
.subscribe(
|
|
703
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
704
|
+
() => { }, (err) => {
|
|
703
705
|
console.warn('Could not save flyout data.');
|
|
704
706
|
console.warn(err);
|
|
705
707
|
});
|
|
@@ -913,7 +915,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
913
915
|
* document's `body` element. The `SkyFlyoutInstance` class watches for and triggers flyout events.
|
|
914
916
|
*/
|
|
915
917
|
class SkyFlyoutService {
|
|
916
|
-
constructor(coreAdapter, windowRef, dynamicComponentService, router, _ngZone,
|
|
918
|
+
constructor(coreAdapter, windowRef, dynamicComponentService, router, _ngZone,
|
|
919
|
+
// NOTE: This used to be used for an `applicationRef.tick` which has since been removed.
|
|
920
|
+
// We can not remove this due to it being a breaking change for those manually constructing the service.
|
|
921
|
+
applicationRef) {
|
|
917
922
|
this.coreAdapter = coreAdapter;
|
|
918
923
|
this.windowRef = windowRef;
|
|
919
924
|
this.dynamicComponentService = dynamicComponentService;
|
|
@@ -936,7 +941,6 @@ class SkyFlyoutService {
|
|
|
936
941
|
*/
|
|
937
942
|
close(args) {
|
|
938
943
|
if (this.host && !this.isOpening) {
|
|
939
|
-
this.removeAfterClosed = true;
|
|
940
944
|
this.host.instance.messageStream.next({
|
|
941
945
|
type: SkyFlyoutMessageType.Close,
|
|
942
946
|
data: {
|
|
@@ -967,8 +971,6 @@ class SkyFlyoutService {
|
|
|
967
971
|
this._ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
968
972
|
if (this.host) {
|
|
969
973
|
this.removeHostComponent();
|
|
970
|
-
// Without this tick - the host does not actually get removed on initial navigation in this case.
|
|
971
|
-
this.applicationRef.tick();
|
|
972
974
|
}
|
|
973
975
|
});
|
|
974
976
|
}
|
|
@@ -1055,14 +1057,16 @@ class SkyFlyoutService {
|
|
|
1055
1057
|
this.ngUnsubscribe = new Subject();
|
|
1056
1058
|
}
|
|
1057
1059
|
}
|
|
1058
|
-
SkyFlyoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyFlyoutService, deps: [{ token: i1$1.SkyCoreAdapterService }, { token: i1$1.SkyAppWindowRef }, { token: i1$1.SkyDynamicComponentService }, { token: i2$2.Router }, { token: i0.NgZone }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1060
|
+
SkyFlyoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyFlyoutService, deps: [{ token: i1$1.SkyCoreAdapterService }, { token: i1$1.SkyAppWindowRef }, { token: i1$1.SkyDynamicComponentService }, { token: i2$2.Router }, { token: i0.NgZone }, { token: i0.ApplicationRef, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1059
1061
|
SkyFlyoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyFlyoutService, providedIn: 'any' });
|
|
1060
1062
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyFlyoutService, decorators: [{
|
|
1061
1063
|
type: Injectable,
|
|
1062
1064
|
args: [{
|
|
1063
1065
|
providedIn: 'any',
|
|
1064
1066
|
}]
|
|
1065
|
-
}], ctorParameters: function () { return [{ type: i1$1.SkyCoreAdapterService }, { type: i1$1.SkyAppWindowRef }, { type: i1$1.SkyDynamicComponentService }, { type: i2$2.Router }, { type: i0.NgZone }, { type: i0.ApplicationRef
|
|
1067
|
+
}], ctorParameters: function () { return [{ type: i1$1.SkyCoreAdapterService }, { type: i1$1.SkyAppWindowRef }, { type: i1$1.SkyDynamicComponentService }, { type: i2$2.Router }, { type: i0.NgZone }, { type: i0.ApplicationRef, decorators: [{
|
|
1068
|
+
type: Optional
|
|
1069
|
+
}] }]; } });
|
|
1066
1070
|
|
|
1067
1071
|
/**
|
|
1068
1072
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-flyout.js","sources":["../../../../../libs/components/flyout/src/lib/modules/flyout/types/flyout-message-type.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-instance.ts","../../../../../libs/components/flyout/src/lib/modules/shared/sky-flyout-resources.module.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-iterator.component.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-iterator.component.html","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-adapter.service.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-media-query.service.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/types/flyout-before-close-handler.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.component.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.component.html","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.module.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.service.ts","../../../../../libs/components/flyout/src/skyux-flyout.ts"],"sourcesContent":["/**\n * @internal\n */\nexport enum SkyFlyoutMessageType {\n Open = 0,\n Close,\n EnableIteratorNextButton,\n EnableIteratorPreviousButton,\n DisableIteratorNextButton,\n DisableIteratorPreviousButton,\n}\n","import { EventEmitter } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyFlyoutBeforeCloseHandler } from './types/flyout-before-close-handler';\nimport { SkyFlyoutCloseArgs } from './types/flyout-close-args';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\n\n/**\n * Represents a single displayed flyout.\n */\nexport class SkyFlyoutInstance<T> {\n /**\n * An event that the modal instance emits when it is about to close.\n * If a subscription exists for this event,\n * the modal does not close until the subscriber calls the handler's `closeModal` method.\n */\n public get beforeClose(): Observable<SkyFlyoutBeforeCloseHandler> {\n return this._beforeClose;\n }\n\n /**\n * An event that the flyout instance emits when it closes.\n */\n public closed = new EventEmitter<void>();\n\n /**\n * Specifies the instance of the component to display in the flyout.\n */\n public componentInstance: T;\n\n /**\n * Used to communicate with the host component.\n * @internal\n */\n public get hostController(): Subject<SkyFlyoutMessage> {\n return this._hostController;\n }\n\n /**\n * A `boolean` value that returns `true` if the flyout is open.\n * @default true\n */\n public isOpen = true;\n\n /**\n * An event that the flyout instance emits when users click the next iterator button.\n */\n public get iteratorNextButtonClick(): EventEmitter<void> {\n return this._iteratorNextButtonClick;\n }\n\n /**\n * An event that the flyout instance emits when users click the previous iterator button.\n */\n public get iteratorPreviousButtonClick(): EventEmitter<void> {\n return this._iteratorPreviousButtonClick;\n }\n\n /**\n * Disables the next iterator button.\n * @default false\n */\n public set iteratorNextButtonDisabled(newValue: boolean) {\n this._iteratorNextButtonDisabled = newValue;\n if (newValue) {\n this.hostController.next({\n type: SkyFlyoutMessageType.DisableIteratorNextButton,\n });\n } else {\n this.hostController.next({\n type: SkyFlyoutMessageType.EnableIteratorNextButton,\n });\n }\n }\n\n public get iteratorNextButtonDisabled(): boolean {\n return this._iteratorNextButtonDisabled;\n }\n\n /**\n * Disables the previous iterator button.\n * @default false\n */\n public set iteratorPreviousButtonDisabled(newValue: boolean) {\n this._iteratorPreviousButtonDisabled = newValue;\n if (newValue) {\n this.hostController.next({\n type: SkyFlyoutMessageType.DisableIteratorPreviousButton,\n });\n } else {\n this.hostController.next({\n type: SkyFlyoutMessageType.EnableIteratorPreviousButton,\n });\n }\n }\n\n public get iteratorPreviousButtonDisabled(): boolean {\n return this._iteratorPreviousButtonDisabled;\n }\n\n private _beforeClose = new Subject<SkyFlyoutBeforeCloseHandler>();\n\n private _iteratorNextButtonClick = new EventEmitter<void>();\n\n private _iteratorPreviousButtonClick = new EventEmitter<void>();\n\n private _iteratorNextButtonDisabled = false;\n\n private _iteratorPreviousButtonDisabled = false;\n\n private _hostController = new Subject<SkyFlyoutMessage>();\n\n constructor() {\n this.closed.subscribe(() => {\n this.isOpen = false;\n });\n }\n\n /**\n * Closes the flyout instance and emits its `closed` event.\n * @param args Arguments used when closing the flyout.\n */\n public close(args?: SkyFlyoutCloseArgs): void {\n this.hostController.next({\n type: SkyFlyoutMessageType.Close,\n data: { ignoreBeforeClose: args ? args.ignoreBeforeClose : false },\n });\n\n this._iteratorPreviousButtonClick.complete();\n this._iteratorNextButtonClick.complete();\n\n this.hostController.complete();\n }\n}\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-flyout' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_flyout_close: { message: 'Close flyout' },\n skyux_flyout_iterator_previous_button: { message: 'Previous' },\n skyux_flyout_iterator_next_button: { message: 'Next' },\n skyux_flyout_permalink_button: { message: 'View record' },\n skyux_flyout_primary_action_button: { message: 'Create list' },\n skyux_flyout_resize_handle: {\n message:\n 'Resize the flyout window. Press the enter or space key to activate, then use left arrow key to expand the flyout window and right arrow key to shrink the flyout window. Press the enter, space, or tab key to deactivate.',\n },\n },\n};\n\nexport class SkyFlyoutResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyFlyoutResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyFlyoutResourcesModule {}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-flyout-iterator',\n templateUrl: './flyout-iterator.component.html',\n styleUrls: ['./flyout-iterator.component.scss'],\n})\nexport class SkyFlyoutIteratorComponent implements OnDestroy {\n @Input()\n public nextButtonDisabled: boolean;\n\n @Input()\n public previousButtonDisabled: boolean;\n\n @Output()\n public get previousButtonClick(): EventEmitter<void> {\n return this._previousButtonClick;\n }\n\n @Output()\n public get nextButtonClick(): EventEmitter<void> {\n return this._nextButtonClick;\n }\n\n private ngUnsubscribe = new Subject();\n\n private _nextButtonClick = new EventEmitter<void>();\n\n private _previousButtonClick = new EventEmitter<void>();\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this._previousButtonClick.complete();\n this._nextButtonClick.complete();\n }\n\n public onIteratorPreviousClick(): void {\n /* istanbul ignore else */\n if (!this.previousButtonDisabled) {\n this._previousButtonClick.emit();\n }\n }\n\n public onIteratorNextClick(): void {\n /* istanbul ignore else */\n if (!this.nextButtonDisabled) {\n this._nextButtonClick.emit();\n }\n }\n}\n","<div id=\"iterators\" class=\"sky-flyout-iterators\">\n <button\n class=\"sky-btn\"\n [attr.aria-label]=\"\n 'skyux_flyout_iterator_previous_button' | skyLibResources\n \"\n [disabled]=\"previousButtonDisabled\"\n [skyThemeClass]=\"{\n 'sky-btn-default sky-margin-inline-compact': 'default',\n 'sky-btn-icon-borderless sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onIteratorPreviousClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"chevron-up\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"chevron-up\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button\n class=\"sky-btn\"\n [attr.aria-label]=\"'skyux_flyout_iterator_next_button' | skyLibResources\"\n [disabled]=\"nextButtonDisabled\"\n [skyThemeClass]=\"{\n 'sky-btn-default sky-margin-inline-compact': 'default',\n 'sky-btn-icon-borderless sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onIteratorNextClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"chevron-down\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n</div>\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\nimport { SkyAppWindowRef, SkyMediaBreakpoints } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyFlyoutAdapterService {\n private renderer: Renderer2;\n\n constructor(\n private rendererFactory: RendererFactory2,\n private windowRef: SkyAppWindowRef\n ) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n public adjustHeaderForHelp(header: ElementRef): void {\n const windowObj = this.windowRef.nativeWindow;\n const helpWidget = windowObj.document.getElementById('bb-help-invoker');\n\n if (helpWidget) {\n this.renderer.addClass(header.nativeElement, 'sky-flyout-help-shim');\n }\n }\n\n public setResponsiveClass(\n element: ElementRef,\n breakpoint: SkyMediaBreakpoints\n ): void {\n const nativeEl: HTMLElement = element.nativeElement;\n\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-xs');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-sm');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-md');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-lg');\n\n let newClass: string;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n newClass = 'sky-responsive-container-xs';\n break;\n }\n case SkyMediaBreakpoints.sm: {\n newClass = 'sky-responsive-container-sm';\n break;\n }\n case SkyMediaBreakpoints.md: {\n newClass = 'sky-responsive-container-md';\n break;\n }\n default: {\n newClass = 'sky-responsive-container-lg';\n break;\n }\n }\n\n this.renderer.addClass(nativeEl, newClass);\n }\n\n public toggleIframePointerEvents(enable: boolean): void {\n // When iframes are present on the page, they may interfere with dragging\n // temporarily disable pointer events in iframes when dragging starts.\n // When re-enabling we set to the empty string as it will remove the element styling\n // and fall back to any css originally given to iframe\n const iframes = document.querySelectorAll('iframe');\n for (let i = 0; i < iframes.length; i++) {\n iframes[i].style.pointerEvents = enable ? '' : 'none';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryListener } from '@skyux/core';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyFlyoutMediaQueryService {\n public get current(): SkyMediaBreakpoints {\n return this._current;\n }\n\n private currentSubject = new BehaviorSubject<SkyMediaBreakpoints>(\n this.current\n );\n\n private _current = SkyMediaBreakpoints.xs;\n\n constructor() {\n this.currentSubject.next(this._current);\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n },\n });\n }\n\n public setBreakpointForWidth(width: number): void {\n let breakpoint: SkyMediaBreakpoints;\n\n if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.xs)) {\n breakpoint = SkyMediaBreakpoints.xs;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.sm)) {\n breakpoint = SkyMediaBreakpoints.sm;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.md)) {\n breakpoint = SkyMediaBreakpoints.md;\n } else {\n breakpoint = SkyMediaBreakpoints.lg;\n }\n\n this._current = breakpoint;\n this.currentSubject.next(this._current);\n }\n\n public isWidthWithinBreakpiont(\n width: number,\n breakpoint: SkyMediaBreakpoints\n ): boolean {\n const xsBreakpointMaxPixels = 767;\n const smBreakpointMinPixels = 768;\n const smBreakpointMaxPixels = 991;\n const mdBreakpointMinPixels = 992;\n const mdBreakpointMaxPixels = 1199;\n const lgBreakpointMinPixels = 1200;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n return width <= xsBreakpointMaxPixels;\n }\n case SkyMediaBreakpoints.sm: {\n return width >= smBreakpointMinPixels && width <= smBreakpointMaxPixels;\n }\n case SkyMediaBreakpoints.md: {\n return width >= mdBreakpointMinPixels && width <= mdBreakpointMaxPixels;\n }\n default: {\n return width >= lgBreakpointMinPixels;\n }\n }\n }\n\n public destroy(): void {\n this.currentSubject.complete();\n }\n}\n","/**\n * Handler for notifying the flyout when it is appropriate to close the flyout. This will be returned from the flyout instance's `beforeClose` observable.\n */\nexport class SkyFlyoutBeforeCloseHandler {\n /**\n * Function which should be called to close the flyout. This should be called once any intervening actions have completed.\n */\n public readonly closeFlyout: Function;\n\n constructor(closeFlyoutFunction: Function) {\n this.closeFlyout = closeFlyoutFunction;\n }\n}\n","import {\n AnimationEvent,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n HostListener,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService,\n SkyUIConfigService,\n} from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyFlyoutAdapterService } from './flyout-adapter.service';\nimport { SkyFlyoutInstance } from './flyout-instance';\nimport { SkyFlyoutMediaQueryService } from './flyout-media-query.service';\nimport { SkyFlyoutAction } from './types/flyout-action';\nimport { SkyFlyoutBeforeCloseHandler } from './types/flyout-before-close-handler';\nimport { SkyFlyoutConfig } from './types/flyout-config';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\nimport { SkyFlyoutPermalink } from './types/flyout-permalink';\n\nconst FLYOUT_OPEN_STATE = 'flyoutOpen';\nconst FLYOUT_CLOSED_STATE = 'flyoutClosed';\n\nlet nextId = 0;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-flyout',\n templateUrl: './flyout.component.html',\n styleUrls: ['./flyout.component.scss'],\n providers: [\n SkyFlyoutAdapterService,\n SkyFlyoutMediaQueryService,\n { provide: SkyMediaQueryService, useExisting: SkyFlyoutMediaQueryService },\n ],\n animations: [\n trigger('flyoutState', [\n state(FLYOUT_OPEN_STATE, style({ transform: 'initial' })),\n state(FLYOUT_CLOSED_STATE, style({ transform: 'translateX(100%)' })),\n transition('void => *', [\n style({ transform: 'translateX(100%)' }),\n animate(250),\n ]),\n transition(`* <=> *`, animate('250ms ease-in')),\n ]),\n ],\n // Allow automatic change detection for child components.\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class SkyFlyoutComponent implements OnDestroy, OnInit {\n public config: SkyFlyoutConfig;\n public enableTrapFocus: boolean;\n public enableTrapFocusAutoCapture: boolean;\n public flyoutId = `sky-flyout-${++nextId}`;\n public flyoutState = FLYOUT_CLOSED_STATE;\n public isOpen = false;\n public isOpening = false;\n\n public flyoutWidth = 0;\n public instanceReady = false;\n public isDragging = false;\n public isFullscreen = false;\n public resizeKeyControlActive = false;\n\n private xCoord = 0;\n private windowBufferSize = 20;\n\n public get messageStream(): Subject<SkyFlyoutMessage> {\n return this._messageStream;\n }\n\n public get permalink(): SkyFlyoutPermalink {\n const permalink = this.config.permalink;\n if (permalink) {\n return permalink;\n }\n\n return {};\n }\n\n public get permalinkLabel(): string {\n if (this.permalink.label) {\n return this.permalink.label;\n }\n\n return this.getString('skyux_flyout_permalink_button');\n }\n\n public get primaryAction(): SkyFlyoutAction {\n const primaryAction = this.config.primaryAction;\n if (primaryAction) {\n return primaryAction;\n }\n\n return {};\n }\n\n public get primaryActionLabel(): string {\n if (this.config.primaryAction && this.config.primaryAction.label) {\n return this.config.primaryAction.label;\n }\n\n return this.getString('skyux_flyout_primary_action_button');\n }\n\n public themeName: string;\n\n /**\n * @internal\n */\n public widthStep = 10;\n\n /**\n * @internal\n */\n @ViewChild('flyoutRef', {\n read: ElementRef,\n static: true,\n })\n public flyoutRef: ElementRef;\n\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n private target: ViewContainerRef;\n\n @ViewChild('flyoutCloseButton', {\n read: ElementRef,\n static: true,\n })\n private flyoutCloseButton: ElementRef;\n\n @ViewChild('flyoutContent', {\n read: ElementRef,\n static: true,\n })\n private flyoutContent: ElementRef;\n\n @ViewChild('flyoutHeader', {\n read: ElementRef,\n static: true,\n })\n private flyoutHeader: ElementRef;\n\n private flyoutInstance: SkyFlyoutInstance<any>;\n\n private ngUnsubscribe = new Subject();\n\n private _messageStream = new Subject<SkyFlyoutMessage>();\n\n constructor(\n private adapter: SkyFlyoutAdapterService,\n private changeDetector: ChangeDetectorRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver,\n private resourcesService: SkyLibResourcesService,\n private flyoutMediaQueryService: SkyFlyoutMediaQueryService,\n private elementRef: ElementRef,\n private uiConfigService: SkyUIConfigService,\n private readonly _ngZone: NgZone\n ) {\n // All commands flow through the message stream.\n this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n this.handleIncomingMessages(message);\n });\n }\n\n public ngOnInit(): void {\n this.adapter.adjustHeaderForHelp(this.flyoutHeader);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n @HostListener('window:resize', ['$event'])\n public onWindowResize(event: any): void {\n if (\n this.flyoutMediaQueryService.isWidthWithinBreakpiont(\n event.target.innerWidth,\n SkyMediaBreakpoints.xs\n )\n ) {\n this.updateBreakpointAndResponsiveClass(event.target.innerWidth);\n } else {\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n }\n\n this.setFullscreen();\n\n if (event.target.innerWidth - this.flyoutWidth < this.windowBufferSize) {\n this.flyoutWidth = event.target.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n this.setUserData();\n }\n }\n\n public attach<T>(\n component: Type<T>,\n config: SkyFlyoutConfig\n ): SkyFlyoutInstance<T> {\n this.cleanTemplate();\n\n // Emit the closed event on any previously opened flyout instance\n if (this.flyoutInstance) {\n this.notifyClosed();\n }\n\n this.config = Object.assign({ providers: [] }, config);\n this.config.defaultWidth =\n this.config.defaultWidth || window.innerWidth / 2;\n this.config.minWidth = this.config.minWidth || 320;\n this.config.maxWidth = this.config.maxWidth || this.config.defaultWidth;\n\n this.config.showIterator = this.config.showIterator || false;\n this.config.iteratorNextButtonDisabled =\n this.config.iteratorNextButtonDisabled || false;\n this.config.iteratorPreviousButtonDisabled =\n this.config.iteratorPreviousButtonDisabled || false;\n\n const factory = this.resolver.resolveComponentFactory(component);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: this.config.providers,\n });\n\n const componentRef = this.target.createComponent(\n factory,\n undefined,\n injector\n );\n\n this.flyoutInstance = this.createFlyoutInstance<T>(componentRef.instance);\n\n // This is used to ensure we do not render the flyout until we have attached the component.\n // This allows the aria-labelledby to function correctly.\n this.instanceReady = true;\n this.changeDetector.markForCheck();\n\n // Open the flyout immediately.\n this.messageStream.next({\n type: SkyFlyoutMessageType.Open,\n });\n\n if (this.config.settingsKey) {\n this.uiConfigService\n .getConfig(this.config.settingsKey)\n .pipe(take(1))\n .subscribe((value: any) => {\n if (value && value.flyoutWidth) {\n this.flyoutWidth = value.flyoutWidth;\n } else {\n // Bad data, or config is the default config.\n this.flyoutWidth = this.config.defaultWidth;\n }\n this.checkInitialSize();\n });\n } else {\n this.flyoutWidth = this.config.defaultWidth;\n this.checkInitialSize();\n }\n\n return this.flyoutInstance;\n }\n\n public close(): void {\n this.messageStream.next({\n type: SkyFlyoutMessageType.Close,\n });\n }\n\n public invokePrimaryAction(): boolean {\n this.primaryAction.callback();\n\n if (this.primaryAction.closeAfterInvoking) {\n this.close();\n }\n\n return false;\n }\n\n public getAnimationState(): string {\n return this.instanceReady && this.isOpening\n ? FLYOUT_OPEN_STATE\n : FLYOUT_CLOSED_STATE;\n }\n\n public animationDone(event: AnimationEvent): void {\n if (event.toState === FLYOUT_OPEN_STATE) {\n this.isOpen = true;\n }\n\n if (event.toState === FLYOUT_CLOSED_STATE) {\n this.isOpen = false;\n this.notifyClosed();\n this.cleanTemplate();\n }\n }\n\n public onHeaderGrabHandleMouseDown(event: MouseEvent): void {\n this.onResizeHandleMouseDown(event);\n }\n\n public onHeaderGrabHandleKeyDown(event: KeyboardEvent): void {\n this.handleResizeKeyDown(event);\n }\n\n public onResizeHandleKeyDown(event: KeyboardEvent): void {\n this.handleResizeKeyDown(event);\n }\n\n public onResizeHandleMouseDown(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isFullscreen) {\n return;\n }\n\n this.isDragging = true;\n this.xCoord = event.clientX;\n\n this.adapter.toggleIframePointerEvents(false);\n\n fromEvent(document, 'mousemove')\n .pipe(\n takeWhile(() => {\n return this.isDragging;\n })\n )\n .subscribe((moveEvent: any) => {\n this.onMouseMove(moveEvent);\n });\n\n fromEvent(document, 'mouseup')\n .pipe(\n takeWhile(() => {\n return this.isDragging;\n })\n )\n .subscribe((mouseUpEvent: any) => {\n this.onHandleRelease(mouseUpEvent);\n });\n }\n\n public onMouseMove(event: MouseEvent): void {\n /* Sanity check */\n /* istanbul ignore if */\n if (!this.isDragging) {\n return;\n }\n\n const offsetX = event.clientX - this.xCoord;\n let width = this.flyoutWidth;\n\n width -= offsetX;\n\n if (width < this.config.minWidth || width > this.config.maxWidth) {\n return;\n }\n\n if (window.innerWidth - width < this.windowBufferSize) {\n width = window.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n } else {\n this.xCoord = event.clientX;\n }\n\n this.flyoutWidth = width;\n\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n\n this.changeDetector.markForCheck();\n }\n\n public onHandleRelease(event: MouseEvent): void {\n fromEvent(document, 'click')\n .pipe(take(1))\n .subscribe(() => {\n this.isDragging = false;\n this.adapter.toggleIframePointerEvents(true);\n this.setUserData();\n });\n }\n\n public onIteratorPreviousButtonClick(): void {\n this.flyoutInstance.iteratorPreviousButtonClick.emit();\n }\n\n public onIteratorNextButtonClick(): void {\n this.flyoutInstance.iteratorNextButtonClick.emit();\n }\n\n private createFlyoutInstance<T>(component: T): SkyFlyoutInstance<T> {\n const instance = new SkyFlyoutInstance<T>();\n\n instance.componentInstance = component;\n instance.hostController\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n this.messageStream.next(message);\n });\n\n return instance;\n }\n\n private handleIncomingMessages(message: SkyFlyoutMessage): void {\n /* tslint:disable-next-line:switch-default */\n switch (message.type) {\n case SkyFlyoutMessageType.Open:\n if (!this.isOpen) {\n this.isOpen = false;\n this.isOpening = true;\n }\n this.initFocusTrap();\n break;\n\n case SkyFlyoutMessageType.Close:\n if (\n (this.flyoutInstance.beforeClose as Subject<any>).observers.length ===\n 0 ||\n message.data?.ignoreBeforeClose\n ) {\n this.isOpen = true;\n this.isOpening = false;\n } else {\n (this.flyoutInstance.beforeClose as Subject<any>).next(\n new SkyFlyoutBeforeCloseHandler(() => {\n this.isOpen = true;\n this.isOpening = false;\n })\n );\n }\n break;\n\n case SkyFlyoutMessageType.EnableIteratorNextButton:\n this.config.iteratorNextButtonDisabled = false;\n break;\n\n case SkyFlyoutMessageType.EnableIteratorPreviousButton:\n this.config.iteratorPreviousButtonDisabled = false;\n break;\n\n case SkyFlyoutMessageType.DisableIteratorNextButton:\n this.config.iteratorNextButtonDisabled = true;\n break;\n\n case SkyFlyoutMessageType.DisableIteratorPreviousButton:\n this.config.iteratorPreviousButtonDisabled = true;\n break;\n }\n\n this.changeDetector.markForCheck();\n }\n\n private notifyClosed(): void {\n this.flyoutInstance.closed.emit();\n this.flyoutInstance.closed.complete();\n }\n\n private cleanTemplate(): void {\n this.target.clear();\n }\n\n private updateBreakpointAndResponsiveClass(width: number): void {\n this.flyoutMediaQueryService.setBreakpointForWidth(width);\n\n const newBreakpiont = this.flyoutMediaQueryService.current;\n\n this.adapter.setResponsiveClass(this.elementRef, newBreakpiont);\n }\n\n private setFullscreen(): void {\n if (window.innerWidth - this.windowBufferSize < this.config.minWidth) {\n this.isFullscreen = true;\n } else {\n this.isFullscreen = false;\n }\n }\n\n private setUserData(): void {\n if (this.config.settingsKey) {\n this.uiConfigService\n .setConfig(this.config.settingsKey, {\n flyoutWidth: this.flyoutWidth,\n })\n .pipe(take(1))\n .subscribe(\n () => {},\n (err) => {\n console.warn('Could not save flyout data.');\n console.warn(err);\n }\n );\n }\n }\n\n private checkInitialSize(): void {\n if (this.flyoutWidth < this.config.minWidth) {\n this.flyoutWidth = this.config.minWidth;\n this.setUserData();\n } else if (this.flyoutWidth > this.config.maxWidth) {\n this.flyoutWidth = this.config.maxWidth;\n this.setUserData();\n }\n\n // Ensure flyout does not load larger than the window and its buffer\n if (window.innerWidth - this.flyoutWidth < this.windowBufferSize) {\n this.flyoutWidth = window.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n this.setUserData();\n }\n\n if (\n this.flyoutMediaQueryService.isWidthWithinBreakpiont(\n window.innerWidth,\n SkyMediaBreakpoints.xs\n )\n ) {\n this.updateBreakpointAndResponsiveClass(window.innerWidth);\n } else {\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n }\n\n this.setFullscreen();\n }\n\n private getString(key: string): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.resourcesService.getStringForLocale({ locale: 'en-US' }, key);\n }\n\n private handleResizeKeyDown(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (event.key) {\n const keyPressed = event.key.toLowerCase().replace('arrow', '');\n switch (keyPressed) {\n case 'enter':\n case ' ':\n this.resizeKeyControlActive = !this.resizeKeyControlActive;\n break;\n case 'tab':\n /* istanbul ignore else */\n if (this.resizeKeyControlActive) {\n this.resizeKeyControlActive = false;\n }\n break;\n case 'left':\n if (this.resizeKeyControlActive) {\n /* istanbul ignore else */\n if (this.flyoutWidth < this.config.maxWidth) {\n this.flyoutWidth = Math.min(\n this.flyoutWidth + this.widthStep,\n this.config.maxWidth\n );\n }\n }\n break;\n\n case 'right':\n if (this.resizeKeyControlActive) {\n /* istanbul ignore else */\n if (this.flyoutWidth > this.config.minWidth) {\n this.flyoutWidth = Math.max(\n this.flyoutWidth - this.widthStep,\n this.config.minWidth\n );\n }\n }\n break;\n\n /* istanbul ignore next */\n default:\n break;\n }\n }\n }\n\n /** Executes a function when the zone is stable. */\n private _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n\n private initFocusTrap(): void {\n this.enableTrapFocusAutoCapture = false;\n this.enableTrapFocus = false;\n // Waiting for zone to be stable will avoid ExpressionChangeAfterCheckedError.\n this._executeOnStable(() => {\n this.enableTrapFocusAutoCapture = true;\n this.enableTrapFocus = true;\n });\n }\n}\n","<div\n class=\"sky-flyout\"\n tabindex=\"-1\"\n [attr.role]=\"config?.ariaRole ? config.ariaRole : 'dialog'\"\n [attr.aria-describedby]=\"config?.ariaDescribedBy\"\n [attr.aria-label]=\"config?.ariaLabel\"\n [attr.aria-labelledby]=\"config?.ariaLabelledBy\"\n [attr.aria-modal]=\"\n config?.ariaRole === 'dialog' || !config?.ariaRole ? true : false\n \"\n [attr.hidden]=\"!instanceReady ? true : undefined\"\n [id]=\"flyoutId\"\n [ngClass]=\"{\n 'sky-flyout-hidden': !isOpen && !isOpening,\n 'sky-flyout-fullscreen': isFullscreen\n }\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-8': 'modern'\n }\"\n (@flyoutState.done)=\"animationDone($event)\"\n [@flyoutState]=\"getAnimationState()\"\n [style.width.px]=\"flyoutWidth\"\n #flyoutRef\n [cdkTrapFocus]=\"enableTrapFocus\"\n [cdkTrapFocusAutoCapture]=\"enableTrapFocusAutoCapture\"\n>\n <div\n class=\"sky-flyout-header\"\n [skyThemeClass]=\"{\n 'sky-padding-squish-large': 'default'\n }\"\n #flyoutHeader\n >\n <div class=\"sky-flyout-header-content\">\n <button\n *skyThemeIf=\"'modern'\"\n class=\"\n sky-btn\n sky-btn-icon-borderless\n sky-margin-inline-sm\n sky-flyout-header-grab-handle\n \"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n (keydown)=\"onHeaderGrabHandleKeyDown($event)\"\n (mousedown)=\"onHeaderGrabHandleMouseDown($event)\"\n >\n <sky-icon icon=\"tile-drag\" iconType=\"skyux\" size=\"lg\"> </sky-icon>\n </button>\n\n <sky-flyout-iterator\n *ngIf=\"config.showIterator\"\n [nextButtonDisabled]=\"config.iteratorNextButtonDisabled\"\n [previousButtonDisabled]=\"config.iteratorPreviousButtonDisabled\"\n (nextButtonClick)=\"onIteratorNextButtonClick()\"\n (previousButtonClick)=\"onIteratorPreviousButtonClick()\"\n >\n </sky-flyout-iterator>\n </div>\n <div class=\"sky-flyout-header-buttons\">\n <ng-container *ngTemplateOutlet=\"permalinkTemplate\"> </ng-container>\n <ng-container *ngTemplateOutlet=\"primaryActionTemplate\"> </ng-container>\n <button\n class=\"sky-btn sky-flyout-btn-close sky-label-icon-theme-default\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_flyout_close' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"close()\"\n #flyoutCloseButton\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"close\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n <div class=\"sky-flyout-content\" #flyoutContent>\n <div #target></div>\n </div>\n <div\n class=\"sky-flyout-resize-handle\"\n role=\"separator\"\n tabindex=\"0\"\n type=\"range\"\n [attr.aria-controls]=\"flyoutId\"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n [attr.aria-valuemax]=\"config.maxWidth\"\n [attr.aria-valuemin]=\"config.minWidth\"\n [attr.aria-valuenow]=\"flyoutWidth\"\n (keydown)=\"onResizeHandleKeyDown($event)\"\n (mousedown)=\"onResizeHandleMouseDown($event)\"\n ></div>\n</div>\n\n<ng-template #permalinkTemplate>\n <ng-template [ngIf]=\"permalink\">\n <ng-template [ngIf]=\"permalink.url\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [skyHref]=\"permalink.url\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n <ng-template [ngIf]=\"permalink.route\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [routerLink]=\"permalink.route.commands\"\n [fragment]=\"permalink.route.extras?.fragment\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n [queryParams]=\"permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"permalink.route.extras?.queryParamsHandling\"\n [state]=\"permalink.route.extras?.state\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template #primaryActionTemplate>\n <ng-template [ngIf]=\"primaryAction && primaryAction.callback\">\n <button\n type=\"button\"\n class=\"\n sky-btn\n sky-btn-default\n sky-flyout-btn-primary-action\n sky-margin-inline-default\n \"\n (click)=\"invokePrimaryAction()\"\n >\n {{ primaryActionLabel }}\n </button>\n </ng-template>\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/indicators';\nimport { SkyHrefModule } from '@skyux/router';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyFlyoutResourcesModule } from '../shared/sky-flyout-resources.module';\n\nimport { SkyFlyoutIteratorComponent } from './flyout-iterator.component';\nimport { SkyFlyoutComponent } from './flyout.component';\n\n@NgModule({\n declarations: [SkyFlyoutComponent, SkyFlyoutIteratorComponent],\n imports: [\n A11yModule,\n CommonModule,\n FormsModule,\n RouterModule,\n SkyI18nModule,\n SkyIconModule,\n SkyFlyoutResourcesModule,\n SkyThemeModule,\n SkyHrefModule,\n ],\n exports: [SkyFlyoutComponent],\n entryComponents: [SkyFlyoutComponent],\n})\nexport class SkyFlyoutModule {}\n","import {\n ApplicationRef,\n ComponentRef,\n Injectable,\n NgZone,\n OnDestroy,\n Type,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport {\n SkyAppWindowRef,\n SkyCoreAdapterService,\n SkyDynamicComponentService,\n} from '@skyux/core';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyFlyoutInstance } from './flyout-instance';\nimport { SkyFlyoutComponent } from './flyout.component';\nimport { SkyFlyoutCloseArgs } from './types/flyout-close-args';\nimport { SkyFlyoutConfig } from './types/flyout-config';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\n\n/**\n * Launches flyouts and provides a common look and feel.\n * This service dynamically generates the flyout component and appends it directly to the\n * document's `body` element. The `SkyFlyoutInstance` class watches for and triggers flyout events.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyFlyoutService implements OnDestroy {\n private host: ComponentRef<SkyFlyoutComponent>;\n private removeAfterClosed = false;\n private isOpening = false;\n private ngUnsubscribe = new Subject<boolean>();\n\n constructor(\n private coreAdapter: SkyCoreAdapterService,\n private windowRef: SkyAppWindowRef,\n private dynamicComponentService: SkyDynamicComponentService,\n private router: Router,\n private readonly _ngZone: NgZone,\n private readonly applicationRef: ApplicationRef\n ) {}\n\n public ngOnDestroy(): void {\n this.removeListners();\n if (this.host) {\n this.removeHostComponent();\n }\n }\n\n /**\n * Closes the flyout. This method also removes the flyout's HTML elements from the DOM.\n * @param args Arguments used when closing the flyout.\n */\n public close(args?: SkyFlyoutCloseArgs): void {\n if (this.host && !this.isOpening) {\n this.removeAfterClosed = true;\n this.host.instance.messageStream.next({\n type: SkyFlyoutMessageType.Close,\n data: {\n ignoreBeforeClose: args ? args.ignoreBeforeClose : false,\n },\n });\n }\n }\n\n /**\n * Opens a flyout and displays the specified component.\n * @param component Specifies the component to render.\n * @param config Specifies the flyout configuration passed to the specified component's constructor.\n */\n public open<T>(\n component: Type<T>,\n config?: SkyFlyoutConfig\n ): SkyFlyoutInstance<T> {\n // isOpening flag will prevent close() from firing when open() is also fired.\n this.isOpening = true;\n this.windowRef.nativeWindow.setTimeout(() => {\n this.isOpening = false;\n });\n\n if (!this.host) {\n this.host = this.createHostComponent();\n\n this.router.events\n .pipe(takeWhile(() => this.host !== undefined))\n .subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.close();\n\n // Sanity check - if the host still exists after animations should have completed - remove host\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this.host) {\n this.removeHostComponent();\n // Without this tick - the host does not actually get removed on initial navigation in this case.\n this.applicationRef.tick();\n }\n });\n }\n });\n }\n\n const flyout = this.host.instance.attach(component, config);\n\n this.addListeners(flyout);\n\n return flyout;\n }\n\n private createHostComponent(): ComponentRef<SkyFlyoutComponent> {\n this.host =\n this.dynamicComponentService.createComponent(SkyFlyoutComponent);\n return this.host;\n }\n\n private removeHostComponent(): void {\n if (this.host) {\n this.dynamicComponentService.removeComponent(this.host);\n this.host = undefined;\n }\n }\n\n private addListeners<T>(flyout: SkyFlyoutInstance<T>): void {\n /* istanbul ignore else */\n if (this.host) {\n const flyoutInstance = this.host.instance;\n\n let doClose = false;\n\n /**\n * Handles when to close a flyout.\n * Note: We're using `mouseup` in order to capture the parent of certain targets that will be\n * deleted immediately after being clicked. If we use `click`, the event is fired after the\n * element is removed from the DOM making it impossible to check the parent's z-index\n * relative to the flyout's container.\n */\n fromEvent(document, 'mouseup')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: MouseEvent) => {\n doClose = false;\n\n if (this.host.instance.isDragging) {\n return;\n }\n\n if (flyoutInstance.flyoutRef.nativeElement.contains(event.target)) {\n return;\n }\n\n const isAbove =\n event.target === document\n ? false\n : this.coreAdapter.isTargetAboveElement(\n event.target,\n flyoutInstance.flyoutRef.nativeElement\n );\n\n /* istanbul ignore else */\n if (!isAbove) {\n doClose = true;\n }\n });\n\n /**\n * Check if we should close the flyout specifically on a `click` event so that we can keep\n * it open when consumers fire another `click` event on a trigger button. Since the consumer\n * will likely use a `click` event to open the flyout, we want to wait for that event to fire\n * before determining if the flyout should be closed.\n */\n fromEvent(document, 'click')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n if (doClose) {\n this.close();\n }\n });\n\n this.removeAfterClosed = false;\n flyoutInstance.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n if (message.type === SkyFlyoutMessageType.Close) {\n this.removeAfterClosed = true;\n this.isOpening = false;\n }\n });\n\n flyout.closed.pipe(take(1)).subscribe(() => {\n this.removeListners();\n if (this.removeAfterClosed) {\n this.removeHostComponent();\n }\n });\n }\n }\n\n private removeListners(): void {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.unsubscribe();\n this.ngUnsubscribe = new Subject<boolean>();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-flyout.js","sources":["../../../../../libs/components/flyout/src/lib/modules/flyout/types/flyout-message-type.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-instance.ts","../../../../../libs/components/flyout/src/lib/modules/shared/sky-flyout-resources.module.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-iterator.component.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-iterator.component.html","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-adapter.service.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout-media-query.service.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/types/flyout-before-close-handler.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.component.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.component.html","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.module.ts","../../../../../libs/components/flyout/src/lib/modules/flyout/flyout.service.ts","../../../../../libs/components/flyout/src/skyux-flyout.ts"],"sourcesContent":["/**\n * @internal\n */\nexport enum SkyFlyoutMessageType {\n Open = 0,\n Close,\n EnableIteratorNextButton,\n EnableIteratorPreviousButton,\n DisableIteratorNextButton,\n DisableIteratorPreviousButton,\n}\n","import { EventEmitter } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyFlyoutBeforeCloseHandler } from './types/flyout-before-close-handler';\nimport { SkyFlyoutCloseArgs } from './types/flyout-close-args';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\n\n/**\n * Represents a single displayed flyout.\n */\nexport class SkyFlyoutInstance<T> {\n /**\n * An event that the modal instance emits when it is about to close.\n * If a subscription exists for this event,\n * the modal does not close until the subscriber calls the handler's `closeModal` method.\n */\n public get beforeClose(): Observable<SkyFlyoutBeforeCloseHandler> {\n return this._beforeClose;\n }\n\n /**\n * An event that the flyout instance emits when it closes.\n */\n public closed = new EventEmitter<void>();\n\n /**\n * Specifies the instance of the component to display in the flyout.\n */\n public componentInstance: T;\n\n /**\n * Used to communicate with the host component.\n * @internal\n */\n public get hostController(): Subject<SkyFlyoutMessage> {\n return this._hostController;\n }\n\n /**\n * A `boolean` value that returns `true` if the flyout is open.\n * @default true\n */\n public isOpen = true;\n\n /**\n * An event that the flyout instance emits when users click the next iterator button.\n */\n public get iteratorNextButtonClick(): EventEmitter<void> {\n return this._iteratorNextButtonClick;\n }\n\n /**\n * An event that the flyout instance emits when users click the previous iterator button.\n */\n public get iteratorPreviousButtonClick(): EventEmitter<void> {\n return this._iteratorPreviousButtonClick;\n }\n\n /**\n * Disables the next iterator button.\n * @default false\n */\n public set iteratorNextButtonDisabled(newValue: boolean) {\n this._iteratorNextButtonDisabled = newValue;\n if (newValue) {\n this.hostController.next({\n type: SkyFlyoutMessageType.DisableIteratorNextButton,\n });\n } else {\n this.hostController.next({\n type: SkyFlyoutMessageType.EnableIteratorNextButton,\n });\n }\n }\n\n public get iteratorNextButtonDisabled(): boolean {\n return this._iteratorNextButtonDisabled;\n }\n\n /**\n * Disables the previous iterator button.\n * @default false\n */\n public set iteratorPreviousButtonDisabled(newValue: boolean) {\n this._iteratorPreviousButtonDisabled = newValue;\n if (newValue) {\n this.hostController.next({\n type: SkyFlyoutMessageType.DisableIteratorPreviousButton,\n });\n } else {\n this.hostController.next({\n type: SkyFlyoutMessageType.EnableIteratorPreviousButton,\n });\n }\n }\n\n public get iteratorPreviousButtonDisabled(): boolean {\n return this._iteratorPreviousButtonDisabled;\n }\n\n private _beforeClose = new Subject<SkyFlyoutBeforeCloseHandler>();\n\n private _iteratorNextButtonClick = new EventEmitter<void>();\n\n private _iteratorPreviousButtonClick = new EventEmitter<void>();\n\n private _iteratorNextButtonDisabled = false;\n\n private _iteratorPreviousButtonDisabled = false;\n\n private _hostController = new Subject<SkyFlyoutMessage>();\n\n constructor() {\n this.closed.subscribe(() => {\n this.isOpen = false;\n });\n }\n\n /**\n * Closes the flyout instance and emits its `closed` event.\n * @param args Arguments used when closing the flyout.\n */\n public close(args?: SkyFlyoutCloseArgs): void {\n this.hostController.next({\n type: SkyFlyoutMessageType.Close,\n data: { ignoreBeforeClose: args ? args.ignoreBeforeClose : false },\n });\n\n this._iteratorPreviousButtonClick.complete();\n this._iteratorNextButtonClick.complete();\n\n this.hostController.complete();\n }\n}\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-flyout' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_flyout_close: { message: 'Close flyout' },\n skyux_flyout_iterator_previous_button: { message: 'Previous' },\n skyux_flyout_iterator_next_button: { message: 'Next' },\n skyux_flyout_permalink_button: { message: 'View record' },\n skyux_flyout_primary_action_button: { message: 'Create list' },\n skyux_flyout_resize_handle: {\n message:\n 'Resize the flyout window. Press the enter or space key to activate, then use left arrow key to expand the flyout window and right arrow key to shrink the flyout window. Press the enter, space, or tab key to deactivate.',\n },\n },\n};\n\nexport class SkyFlyoutResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyFlyoutResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyFlyoutResourcesModule {}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-flyout-iterator',\n templateUrl: './flyout-iterator.component.html',\n styleUrls: ['./flyout-iterator.component.scss'],\n})\nexport class SkyFlyoutIteratorComponent implements OnDestroy {\n @Input()\n public nextButtonDisabled: boolean;\n\n @Input()\n public previousButtonDisabled: boolean;\n\n @Output()\n public get previousButtonClick(): EventEmitter<void> {\n return this._previousButtonClick;\n }\n\n @Output()\n public get nextButtonClick(): EventEmitter<void> {\n return this._nextButtonClick;\n }\n\n private ngUnsubscribe = new Subject();\n\n private _nextButtonClick = new EventEmitter<void>();\n\n private _previousButtonClick = new EventEmitter<void>();\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this._previousButtonClick.complete();\n this._nextButtonClick.complete();\n }\n\n public onIteratorPreviousClick(): void {\n /* istanbul ignore else */\n if (!this.previousButtonDisabled) {\n this._previousButtonClick.emit();\n }\n }\n\n public onIteratorNextClick(): void {\n /* istanbul ignore else */\n if (!this.nextButtonDisabled) {\n this._nextButtonClick.emit();\n }\n }\n}\n","<div id=\"iterators\" class=\"sky-flyout-iterators\">\n <button\n class=\"sky-btn\"\n [attr.aria-label]=\"\n 'skyux_flyout_iterator_previous_button' | skyLibResources\n \"\n [disabled]=\"previousButtonDisabled\"\n [skyThemeClass]=\"{\n 'sky-btn-default sky-margin-inline-compact': 'default',\n 'sky-btn-icon-borderless sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onIteratorPreviousClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"chevron-up\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"chevron-up\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button\n class=\"sky-btn\"\n [attr.aria-label]=\"'skyux_flyout_iterator_next_button' | skyLibResources\"\n [disabled]=\"nextButtonDisabled\"\n [skyThemeClass]=\"{\n 'sky-btn-default sky-margin-inline-compact': 'default',\n 'sky-btn-icon-borderless sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onIteratorNextClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"chevron-down\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n</div>\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\nimport { SkyAppWindowRef, SkyMediaBreakpoints } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyFlyoutAdapterService {\n private renderer: Renderer2;\n\n constructor(\n private rendererFactory: RendererFactory2,\n private windowRef: SkyAppWindowRef\n ) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n public adjustHeaderForHelp(header: ElementRef): void {\n const windowObj = this.windowRef.nativeWindow;\n const helpWidget = windowObj.document.getElementById('bb-help-invoker');\n\n if (helpWidget) {\n this.renderer.addClass(header.nativeElement, 'sky-flyout-help-shim');\n }\n }\n\n public setResponsiveClass(\n element: ElementRef,\n breakpoint: SkyMediaBreakpoints\n ): void {\n const nativeEl: HTMLElement = element.nativeElement;\n\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-xs');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-sm');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-md');\n this.renderer.removeClass(nativeEl, 'sky-responsive-container-lg');\n\n let newClass: string;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n newClass = 'sky-responsive-container-xs';\n break;\n }\n case SkyMediaBreakpoints.sm: {\n newClass = 'sky-responsive-container-sm';\n break;\n }\n case SkyMediaBreakpoints.md: {\n newClass = 'sky-responsive-container-md';\n break;\n }\n default: {\n newClass = 'sky-responsive-container-lg';\n break;\n }\n }\n\n this.renderer.addClass(nativeEl, newClass);\n }\n\n public toggleIframePointerEvents(enable: boolean): void {\n // When iframes are present on the page, they may interfere with dragging\n // temporarily disable pointer events in iframes when dragging starts.\n // When re-enabling we set to the empty string as it will remove the element styling\n // and fall back to any css originally given to iframe\n const iframes = document.querySelectorAll('iframe');\n for (let i = 0; i < iframes.length; i++) {\n iframes[i].style.pointerEvents = enable ? '' : 'none';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryListener } from '@skyux/core';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyFlyoutMediaQueryService {\n public get current(): SkyMediaBreakpoints {\n return this._current;\n }\n\n private currentSubject = new BehaviorSubject<SkyMediaBreakpoints>(\n this.current\n );\n\n private _current = SkyMediaBreakpoints.xs;\n\n constructor() {\n this.currentSubject.next(this._current);\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n },\n });\n }\n\n public setBreakpointForWidth(width: number): void {\n let breakpoint: SkyMediaBreakpoints;\n\n if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.xs)) {\n breakpoint = SkyMediaBreakpoints.xs;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.sm)) {\n breakpoint = SkyMediaBreakpoints.sm;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.md)) {\n breakpoint = SkyMediaBreakpoints.md;\n } else {\n breakpoint = SkyMediaBreakpoints.lg;\n }\n\n this._current = breakpoint;\n this.currentSubject.next(this._current);\n }\n\n public isWidthWithinBreakpiont(\n width: number,\n breakpoint: SkyMediaBreakpoints\n ): boolean {\n const xsBreakpointMaxPixels = 767;\n const smBreakpointMinPixels = 768;\n const smBreakpointMaxPixels = 991;\n const mdBreakpointMinPixels = 992;\n const mdBreakpointMaxPixels = 1199;\n const lgBreakpointMinPixels = 1200;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n return width <= xsBreakpointMaxPixels;\n }\n case SkyMediaBreakpoints.sm: {\n return width >= smBreakpointMinPixels && width <= smBreakpointMaxPixels;\n }\n case SkyMediaBreakpoints.md: {\n return width >= mdBreakpointMinPixels && width <= mdBreakpointMaxPixels;\n }\n default: {\n return width >= lgBreakpointMinPixels;\n }\n }\n }\n\n public destroy(): void {\n this.currentSubject.complete();\n }\n}\n","/**\n * Handler for notifying the flyout when it is appropriate to close the flyout. This will be returned from the flyout instance's `beforeClose` observable.\n */\nexport class SkyFlyoutBeforeCloseHandler {\n /**\n * Function which should be called to close the flyout. This should be called once any intervening actions have completed.\n */\n public readonly closeFlyout: Function;\n\n constructor(closeFlyoutFunction: Function) {\n this.closeFlyout = closeFlyoutFunction;\n }\n}\n","import {\n AnimationEvent,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n HostListener,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryService,\n SkyUIConfigService,\n} from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyFlyoutAdapterService } from './flyout-adapter.service';\nimport { SkyFlyoutInstance } from './flyout-instance';\nimport { SkyFlyoutMediaQueryService } from './flyout-media-query.service';\nimport { SkyFlyoutAction } from './types/flyout-action';\nimport { SkyFlyoutBeforeCloseHandler } from './types/flyout-before-close-handler';\nimport { SkyFlyoutConfig } from './types/flyout-config';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\nimport { SkyFlyoutPermalink } from './types/flyout-permalink';\n\nconst FLYOUT_OPEN_STATE = 'flyoutOpen';\nconst FLYOUT_CLOSED_STATE = 'flyoutClosed';\n\nlet nextId = 0;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-flyout',\n templateUrl: './flyout.component.html',\n styleUrls: ['./flyout.component.scss'],\n providers: [\n SkyFlyoutAdapterService,\n SkyFlyoutMediaQueryService,\n { provide: SkyMediaQueryService, useExisting: SkyFlyoutMediaQueryService },\n ],\n animations: [\n trigger('flyoutState', [\n state(FLYOUT_OPEN_STATE, style({ transform: 'initial' })),\n state(FLYOUT_CLOSED_STATE, style({ transform: 'translateX(100%)' })),\n transition('void => *', [\n style({ transform: 'translateX(100%)' }),\n animate(250),\n ]),\n transition(`* <=> *`, animate('250ms ease-in')),\n ]),\n ],\n // Allow automatic change detection for child components.\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class SkyFlyoutComponent implements OnDestroy, OnInit {\n public config: SkyFlyoutConfig;\n public enableTrapFocus: boolean;\n public enableTrapFocusAutoCapture: boolean;\n public flyoutId = `sky-flyout-${++nextId}`;\n public flyoutState = FLYOUT_CLOSED_STATE;\n public isOpen = false;\n public isOpening = false;\n\n public flyoutWidth = 0;\n public instanceReady = false;\n public isDragging = false;\n public isFullscreen = false;\n public resizeKeyControlActive = false;\n\n private xCoord = 0;\n private windowBufferSize = 20;\n\n public get messageStream(): Subject<SkyFlyoutMessage> {\n return this._messageStream;\n }\n\n public get permalink(): SkyFlyoutPermalink {\n const permalink = this.config.permalink;\n if (permalink) {\n return permalink;\n }\n\n return {};\n }\n\n public get permalinkLabel(): string {\n if (this.permalink.label) {\n return this.permalink.label;\n }\n\n return this.getString('skyux_flyout_permalink_button');\n }\n\n public get primaryAction(): SkyFlyoutAction {\n const primaryAction = this.config.primaryAction;\n if (primaryAction) {\n return primaryAction;\n }\n\n return {};\n }\n\n public get primaryActionLabel(): string {\n if (this.config.primaryAction && this.config.primaryAction.label) {\n return this.config.primaryAction.label;\n }\n\n return this.getString('skyux_flyout_primary_action_button');\n }\n\n public themeName: string;\n\n /**\n * @internal\n */\n public widthStep = 10;\n\n /**\n * @internal\n */\n @ViewChild('flyoutRef', {\n read: ElementRef,\n static: true,\n })\n public flyoutRef: ElementRef;\n\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n private target: ViewContainerRef;\n\n @ViewChild('flyoutCloseButton', {\n read: ElementRef,\n static: true,\n })\n private flyoutCloseButton: ElementRef;\n\n @ViewChild('flyoutContent', {\n read: ElementRef,\n static: true,\n })\n private flyoutContent: ElementRef;\n\n @ViewChild('flyoutHeader', {\n read: ElementRef,\n static: true,\n })\n private flyoutHeader: ElementRef;\n\n private flyoutInstance: SkyFlyoutInstance<any>;\n\n private ngUnsubscribe = new Subject();\n\n private _messageStream = new Subject<SkyFlyoutMessage>();\n\n constructor(\n private adapter: SkyFlyoutAdapterService,\n private changeDetector: ChangeDetectorRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver,\n private resourcesService: SkyLibResourcesService,\n private flyoutMediaQueryService: SkyFlyoutMediaQueryService,\n private elementRef: ElementRef,\n private uiConfigService: SkyUIConfigService,\n private readonly _ngZone: NgZone\n ) {\n // All commands flow through the message stream.\n this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n this.handleIncomingMessages(message);\n });\n }\n\n public ngOnInit(): void {\n this.adapter.adjustHeaderForHelp(this.flyoutHeader);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n @HostListener('window:resize', ['$event'])\n public onWindowResize(event: any): void {\n if (\n this.flyoutMediaQueryService.isWidthWithinBreakpiont(\n event.target.innerWidth,\n SkyMediaBreakpoints.xs\n )\n ) {\n this.updateBreakpointAndResponsiveClass(event.target.innerWidth);\n } else {\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n }\n\n this.setFullscreen();\n\n if (event.target.innerWidth - this.flyoutWidth < this.windowBufferSize) {\n this.flyoutWidth = event.target.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n this.setUserData();\n }\n }\n\n public attach<T>(\n component: Type<T>,\n config: SkyFlyoutConfig\n ): SkyFlyoutInstance<T> {\n this.cleanTemplate();\n\n // Emit the closed event on any previously opened flyout instance\n if (this.flyoutInstance) {\n this.notifyClosed();\n }\n\n this.config = Object.assign({ providers: [] }, config);\n this.config.defaultWidth =\n this.config.defaultWidth || window.innerWidth / 2;\n this.config.minWidth = this.config.minWidth || 320;\n this.config.maxWidth = this.config.maxWidth || this.config.defaultWidth;\n\n this.config.showIterator = this.config.showIterator || false;\n this.config.iteratorNextButtonDisabled =\n this.config.iteratorNextButtonDisabled || false;\n this.config.iteratorPreviousButtonDisabled =\n this.config.iteratorPreviousButtonDisabled || false;\n\n const factory = this.resolver.resolveComponentFactory(component);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: this.config.providers,\n });\n\n const componentRef = this.target.createComponent(\n factory,\n undefined,\n injector\n );\n\n this.flyoutInstance = this.createFlyoutInstance<T>(componentRef.instance);\n\n // This is used to ensure we do not render the flyout until we have attached the component.\n // This allows the aria-labelledby to function correctly.\n this.instanceReady = true;\n this.changeDetector.markForCheck();\n\n // Open the flyout immediately.\n this.messageStream.next({\n type: SkyFlyoutMessageType.Open,\n });\n\n if (this.config.settingsKey) {\n this.uiConfigService\n .getConfig(this.config.settingsKey)\n .pipe(take(1))\n .subscribe((value: any) => {\n if (value && value.flyoutWidth) {\n this.flyoutWidth = value.flyoutWidth;\n } else {\n // Bad data, or config is the default config.\n this.flyoutWidth = this.config.defaultWidth;\n }\n this.checkInitialSize();\n });\n } else {\n this.flyoutWidth = this.config.defaultWidth;\n this.checkInitialSize();\n }\n\n return this.flyoutInstance;\n }\n\n public close(): void {\n this.messageStream.next({\n type: SkyFlyoutMessageType.Close,\n });\n }\n\n public invokePrimaryAction(): boolean {\n this.primaryAction.callback();\n\n if (this.primaryAction.closeAfterInvoking) {\n this.close();\n }\n\n return false;\n }\n\n public getAnimationState(): string {\n return this.instanceReady && this.isOpening\n ? FLYOUT_OPEN_STATE\n : FLYOUT_CLOSED_STATE;\n }\n\n public animationDone(event: AnimationEvent): void {\n if (event.toState === FLYOUT_OPEN_STATE) {\n this.isOpen = true;\n }\n\n if (event.toState === FLYOUT_CLOSED_STATE) {\n this.isOpen = false;\n this.notifyClosed();\n this.cleanTemplate();\n }\n }\n\n public onHeaderGrabHandleMouseDown(event: MouseEvent): void {\n this.onResizeHandleMouseDown(event);\n }\n\n public onHeaderGrabHandleKeyDown(event: KeyboardEvent): void {\n this.handleResizeKeyDown(event);\n }\n\n public onResizeHandleKeyDown(event: KeyboardEvent): void {\n this.handleResizeKeyDown(event);\n }\n\n public onResizeHandleMouseDown(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isFullscreen) {\n return;\n }\n\n this.isDragging = true;\n this.xCoord = event.clientX;\n\n this.adapter.toggleIframePointerEvents(false);\n\n fromEvent(document, 'mousemove')\n .pipe(\n takeWhile(() => {\n return this.isDragging;\n })\n )\n .subscribe((moveEvent: any) => {\n this.onMouseMove(moveEvent);\n });\n\n fromEvent(document, 'mouseup')\n .pipe(\n takeWhile(() => {\n return this.isDragging;\n })\n )\n .subscribe((mouseUpEvent: any) => {\n this.onHandleRelease(mouseUpEvent);\n });\n }\n\n public onMouseMove(event: MouseEvent): void {\n /* Sanity check */\n /* istanbul ignore if */\n if (!this.isDragging) {\n return;\n }\n\n const offsetX = event.clientX - this.xCoord;\n let width = this.flyoutWidth;\n\n width -= offsetX;\n\n if (width < this.config.minWidth || width > this.config.maxWidth) {\n return;\n }\n\n if (window.innerWidth - width < this.windowBufferSize) {\n width = window.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n } else {\n this.xCoord = event.clientX;\n }\n\n this.flyoutWidth = width;\n\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n\n this.changeDetector.markForCheck();\n }\n\n public onHandleRelease(event: MouseEvent): void {\n fromEvent(document, 'click')\n .pipe(take(1))\n .subscribe(() => {\n this.isDragging = false;\n this.adapter.toggleIframePointerEvents(true);\n this.setUserData();\n });\n }\n\n public onIteratorPreviousButtonClick(): void {\n this.flyoutInstance.iteratorPreviousButtonClick.emit();\n }\n\n public onIteratorNextButtonClick(): void {\n this.flyoutInstance.iteratorNextButtonClick.emit();\n }\n\n private createFlyoutInstance<T>(component: T): SkyFlyoutInstance<T> {\n const instance = new SkyFlyoutInstance<T>();\n\n instance.componentInstance = component;\n instance.hostController\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n this.messageStream.next(message);\n });\n\n return instance;\n }\n\n private handleIncomingMessages(message: SkyFlyoutMessage): void {\n /* tslint:disable-next-line:switch-default */\n switch (message.type) {\n case SkyFlyoutMessageType.Open:\n if (!this.isOpen) {\n this.isOpen = false;\n this.isOpening = true;\n }\n this.initFocusTrap();\n break;\n\n case SkyFlyoutMessageType.Close:\n if (\n (this.flyoutInstance.beforeClose as Subject<any>).observers.length ===\n 0 ||\n message.data?.ignoreBeforeClose\n ) {\n this.isOpen = true;\n this.isOpening = false;\n } else {\n (this.flyoutInstance.beforeClose as Subject<any>).next(\n new SkyFlyoutBeforeCloseHandler(() => {\n this.isOpen = true;\n this.isOpening = false;\n })\n );\n }\n break;\n\n case SkyFlyoutMessageType.EnableIteratorNextButton:\n this.config.iteratorNextButtonDisabled = false;\n break;\n\n case SkyFlyoutMessageType.EnableIteratorPreviousButton:\n this.config.iteratorPreviousButtonDisabled = false;\n break;\n\n case SkyFlyoutMessageType.DisableIteratorNextButton:\n this.config.iteratorNextButtonDisabled = true;\n break;\n\n case SkyFlyoutMessageType.DisableIteratorPreviousButton:\n this.config.iteratorPreviousButtonDisabled = true;\n break;\n }\n\n this.changeDetector.markForCheck();\n }\n\n private notifyClosed(): void {\n this.flyoutInstance.closed.emit();\n this.flyoutInstance.closed.complete();\n }\n\n private cleanTemplate(): void {\n this.target.clear();\n }\n\n private updateBreakpointAndResponsiveClass(width: number): void {\n this.flyoutMediaQueryService.setBreakpointForWidth(width);\n\n const newBreakpiont = this.flyoutMediaQueryService.current;\n\n this.adapter.setResponsiveClass(this.elementRef, newBreakpiont);\n }\n\n private setFullscreen(): void {\n if (window.innerWidth - this.windowBufferSize < this.config.minWidth) {\n this.isFullscreen = true;\n } else {\n this.isFullscreen = false;\n }\n }\n\n private setUserData(): void {\n if (this.config.settingsKey) {\n this.uiConfigService\n .setConfig(this.config.settingsKey, {\n flyoutWidth: this.flyoutWidth,\n })\n .pipe(take(1))\n .subscribe(\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n (err) => {\n console.warn('Could not save flyout data.');\n console.warn(err);\n }\n );\n }\n }\n\n private checkInitialSize(): void {\n if (this.flyoutWidth < this.config.minWidth) {\n this.flyoutWidth = this.config.minWidth;\n this.setUserData();\n } else if (this.flyoutWidth > this.config.maxWidth) {\n this.flyoutWidth = this.config.maxWidth;\n this.setUserData();\n }\n\n // Ensure flyout does not load larger than the window and its buffer\n if (window.innerWidth - this.flyoutWidth < this.windowBufferSize) {\n this.flyoutWidth = window.innerWidth - this.windowBufferSize;\n this.xCoord = this.windowBufferSize;\n this.setUserData();\n }\n\n if (\n this.flyoutMediaQueryService.isWidthWithinBreakpiont(\n window.innerWidth,\n SkyMediaBreakpoints.xs\n )\n ) {\n this.updateBreakpointAndResponsiveClass(window.innerWidth);\n } else {\n this.updateBreakpointAndResponsiveClass(this.flyoutWidth);\n }\n\n this.setFullscreen();\n }\n\n private getString(key: string): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.resourcesService.getStringForLocale({ locale: 'en-US' }, key);\n }\n\n private handleResizeKeyDown(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (event.key) {\n const keyPressed = event.key.toLowerCase().replace('arrow', '');\n switch (keyPressed) {\n case 'enter':\n case ' ':\n this.resizeKeyControlActive = !this.resizeKeyControlActive;\n break;\n case 'tab':\n /* istanbul ignore else */\n if (this.resizeKeyControlActive) {\n this.resizeKeyControlActive = false;\n }\n break;\n case 'left':\n if (this.resizeKeyControlActive) {\n /* istanbul ignore else */\n if (this.flyoutWidth < this.config.maxWidth) {\n this.flyoutWidth = Math.min(\n this.flyoutWidth + this.widthStep,\n this.config.maxWidth\n );\n }\n }\n break;\n\n case 'right':\n if (this.resizeKeyControlActive) {\n /* istanbul ignore else */\n if (this.flyoutWidth > this.config.minWidth) {\n this.flyoutWidth = Math.max(\n this.flyoutWidth - this.widthStep,\n this.config.minWidth\n );\n }\n }\n break;\n\n /* istanbul ignore next */\n default:\n break;\n }\n }\n }\n\n /** Executes a function when the zone is stable. */\n private _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n\n private initFocusTrap(): void {\n this.enableTrapFocusAutoCapture = false;\n this.enableTrapFocus = false;\n // Waiting for zone to be stable will avoid ExpressionChangeAfterCheckedError.\n this._executeOnStable(() => {\n this.enableTrapFocusAutoCapture = true;\n this.enableTrapFocus = true;\n });\n }\n}\n","<div\n class=\"sky-flyout\"\n tabindex=\"-1\"\n [attr.role]=\"config?.ariaRole ? config.ariaRole : 'dialog'\"\n [attr.aria-describedby]=\"config?.ariaDescribedBy\"\n [attr.aria-label]=\"config?.ariaLabel\"\n [attr.aria-labelledby]=\"config?.ariaLabelledBy\"\n [attr.aria-modal]=\"\n config?.ariaRole === 'dialog' || !config?.ariaRole ? true : false\n \"\n [attr.hidden]=\"!instanceReady ? true : undefined\"\n [id]=\"flyoutId\"\n [ngClass]=\"{\n 'sky-flyout-hidden': !isOpen && !isOpening,\n 'sky-flyout-fullscreen': isFullscreen\n }\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-8': 'modern'\n }\"\n (@flyoutState.done)=\"animationDone($event)\"\n [@flyoutState]=\"getAnimationState()\"\n [style.width.px]=\"flyoutWidth\"\n #flyoutRef\n [cdkTrapFocus]=\"enableTrapFocus\"\n [cdkTrapFocusAutoCapture]=\"enableTrapFocusAutoCapture\"\n>\n <div\n class=\"sky-flyout-header\"\n [skyThemeClass]=\"{\n 'sky-padding-squish-large': 'default'\n }\"\n #flyoutHeader\n >\n <div class=\"sky-flyout-header-content\">\n <button\n *skyThemeIf=\"'modern'\"\n class=\"\n sky-btn\n sky-btn-icon-borderless\n sky-margin-inline-sm\n sky-flyout-header-grab-handle\n \"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n (keydown)=\"onHeaderGrabHandleKeyDown($event)\"\n (mousedown)=\"onHeaderGrabHandleMouseDown($event)\"\n >\n <sky-icon icon=\"tile-drag\" iconType=\"skyux\" size=\"lg\"> </sky-icon>\n </button>\n\n <sky-flyout-iterator\n *ngIf=\"config.showIterator\"\n [nextButtonDisabled]=\"config.iteratorNextButtonDisabled\"\n [previousButtonDisabled]=\"config.iteratorPreviousButtonDisabled\"\n (nextButtonClick)=\"onIteratorNextButtonClick()\"\n (previousButtonClick)=\"onIteratorPreviousButtonClick()\"\n >\n </sky-flyout-iterator>\n </div>\n <div class=\"sky-flyout-header-buttons\">\n <ng-container *ngTemplateOutlet=\"permalinkTemplate\"> </ng-container>\n <ng-container *ngTemplateOutlet=\"primaryActionTemplate\"> </ng-container>\n <button\n class=\"sky-btn sky-flyout-btn-close sky-label-icon-theme-default\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_flyout_close' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"close()\"\n #flyoutCloseButton\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"close\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n <div class=\"sky-flyout-content\" #flyoutContent>\n <div #target></div>\n </div>\n <div\n class=\"sky-flyout-resize-handle\"\n role=\"separator\"\n tabindex=\"0\"\n type=\"range\"\n [attr.aria-controls]=\"flyoutId\"\n [attr.aria-label]=\"'skyux_flyout_resize_handle' | skyLibResources\"\n [attr.aria-valuemax]=\"config.maxWidth\"\n [attr.aria-valuemin]=\"config.minWidth\"\n [attr.aria-valuenow]=\"flyoutWidth\"\n (keydown)=\"onResizeHandleKeyDown($event)\"\n (mousedown)=\"onResizeHandleMouseDown($event)\"\n ></div>\n</div>\n\n<ng-template #permalinkTemplate>\n <ng-template [ngIf]=\"permalink\">\n <ng-template [ngIf]=\"permalink.url\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [skyHref]=\"permalink.url\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n <ng-template [ngIf]=\"permalink.route\">\n <a\n class=\"sky-btn sky-flyout-btn-permalink sky-margin-inline-default\"\n [routerLink]=\"permalink.route.commands\"\n [fragment]=\"permalink.route.extras?.fragment\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-borderless': 'modern'\n }\"\n [queryParams]=\"permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"permalink.route.extras?.queryParamsHandling\"\n [state]=\"permalink.route.extras?.state\"\n (click)=\"close()\"\n >\n {{ permalinkLabel }}\n </a>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template #primaryActionTemplate>\n <ng-template [ngIf]=\"primaryAction && primaryAction.callback\">\n <button\n type=\"button\"\n class=\"\n sky-btn\n sky-btn-default\n sky-flyout-btn-primary-action\n sky-margin-inline-default\n \"\n (click)=\"invokePrimaryAction()\"\n >\n {{ primaryActionLabel }}\n </button>\n </ng-template>\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/indicators';\nimport { SkyHrefModule } from '@skyux/router';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyFlyoutResourcesModule } from '../shared/sky-flyout-resources.module';\n\nimport { SkyFlyoutIteratorComponent } from './flyout-iterator.component';\nimport { SkyFlyoutComponent } from './flyout.component';\n\n@NgModule({\n declarations: [SkyFlyoutComponent, SkyFlyoutIteratorComponent],\n imports: [\n A11yModule,\n CommonModule,\n FormsModule,\n RouterModule,\n SkyI18nModule,\n SkyIconModule,\n SkyFlyoutResourcesModule,\n SkyThemeModule,\n SkyHrefModule,\n ],\n exports: [SkyFlyoutComponent],\n entryComponents: [SkyFlyoutComponent],\n})\nexport class SkyFlyoutModule {}\n","import {\n ApplicationRef,\n ComponentRef,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Type,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport {\n SkyAppWindowRef,\n SkyCoreAdapterService,\n SkyDynamicComponentService,\n} from '@skyux/core';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyFlyoutInstance } from './flyout-instance';\nimport { SkyFlyoutComponent } from './flyout.component';\nimport { SkyFlyoutCloseArgs } from './types/flyout-close-args';\nimport { SkyFlyoutConfig } from './types/flyout-config';\nimport { SkyFlyoutMessage } from './types/flyout-message';\nimport { SkyFlyoutMessageType } from './types/flyout-message-type';\n\n/**\n * Launches flyouts and provides a common look and feel.\n * This service dynamically generates the flyout component and appends it directly to the\n * document's `body` element. The `SkyFlyoutInstance` class watches for and triggers flyout events.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyFlyoutService implements OnDestroy {\n private host: ComponentRef<SkyFlyoutComponent>;\n private removeAfterClosed = false;\n private isOpening = false;\n private ngUnsubscribe = new Subject<boolean>();\n\n constructor(\n private coreAdapter: SkyCoreAdapterService,\n private windowRef: SkyAppWindowRef,\n private dynamicComponentService: SkyDynamicComponentService,\n private router: Router,\n private readonly _ngZone: NgZone,\n // NOTE: This used to be used for an `applicationRef.tick` which has since been removed.\n // We can not remove this due to it being a breaking change for those manually constructing the service.\n @Optional() private readonly applicationRef?: ApplicationRef\n ) {}\n\n public ngOnDestroy(): void {\n this.removeListners();\n if (this.host) {\n this.removeHostComponent();\n }\n }\n\n /**\n * Closes the flyout. This method also removes the flyout's HTML elements from the DOM.\n * @param args Arguments used when closing the flyout.\n */\n public close(args?: SkyFlyoutCloseArgs): void {\n if (this.host && !this.isOpening) {\n this.host.instance.messageStream.next({\n type: SkyFlyoutMessageType.Close,\n data: {\n ignoreBeforeClose: args ? args.ignoreBeforeClose : false,\n },\n });\n }\n }\n\n /**\n * Opens a flyout and displays the specified component.\n * @param component Specifies the component to render.\n * @param config Specifies the flyout configuration passed to the specified component's constructor.\n */\n public open<T>(\n component: Type<T>,\n config?: SkyFlyoutConfig\n ): SkyFlyoutInstance<T> {\n // isOpening flag will prevent close() from firing when open() is also fired.\n this.isOpening = true;\n this.windowRef.nativeWindow.setTimeout(() => {\n this.isOpening = false;\n });\n\n if (!this.host) {\n this.host = this.createHostComponent();\n\n this.router.events\n .pipe(takeWhile(() => this.host !== undefined))\n .subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.close();\n\n // Sanity check - if the host still exists after animations should have completed - remove host\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this.host) {\n this.removeHostComponent();\n }\n });\n }\n });\n }\n\n const flyout = this.host.instance.attach(component, config);\n\n this.addListeners(flyout);\n\n return flyout;\n }\n\n private createHostComponent(): ComponentRef<SkyFlyoutComponent> {\n this.host =\n this.dynamicComponentService.createComponent(SkyFlyoutComponent);\n return this.host;\n }\n\n private removeHostComponent(): void {\n if (this.host) {\n this.dynamicComponentService.removeComponent(this.host);\n this.host = undefined;\n }\n }\n\n private addListeners<T>(flyout: SkyFlyoutInstance<T>): void {\n /* istanbul ignore else */\n if (this.host) {\n const flyoutInstance = this.host.instance;\n\n let doClose = false;\n\n /**\n * Handles when to close a flyout.\n * Note: We're using `mouseup` in order to capture the parent of certain targets that will be\n * deleted immediately after being clicked. If we use `click`, the event is fired after the\n * element is removed from the DOM making it impossible to check the parent's z-index\n * relative to the flyout's container.\n */\n fromEvent(document, 'mouseup')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: MouseEvent) => {\n doClose = false;\n\n if (this.host.instance.isDragging) {\n return;\n }\n\n if (flyoutInstance.flyoutRef.nativeElement.contains(event.target)) {\n return;\n }\n\n const isAbove =\n event.target === document\n ? false\n : this.coreAdapter.isTargetAboveElement(\n event.target,\n flyoutInstance.flyoutRef.nativeElement\n );\n\n /* istanbul ignore else */\n if (!isAbove) {\n doClose = true;\n }\n });\n\n /**\n * Check if we should close the flyout specifically on a `click` event so that we can keep\n * it open when consumers fire another `click` event on a trigger button. Since the consumer\n * will likely use a `click` event to open the flyout, we want to wait for that event to fire\n * before determining if the flyout should be closed.\n */\n fromEvent(document, 'click')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n if (doClose) {\n this.close();\n }\n });\n\n this.removeAfterClosed = false;\n flyoutInstance.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyFlyoutMessage) => {\n if (message.type === SkyFlyoutMessageType.Close) {\n this.removeAfterClosed = true;\n this.isOpening = false;\n }\n });\n\n flyout.closed.pipe(take(1)).subscribe(() => {\n this.removeListners();\n if (this.removeAfterClosed) {\n this.removeHostComponent();\n }\n });\n }\n }\n\n private removeListners(): void {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.unsubscribe();\n this.ngUnsubscribe = new Subject<boolean>();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -16,12 +16,12 @@ export declare class SkyFlyoutService implements OnDestroy {
|
|
|
16
16
|
private dynamicComponentService;
|
|
17
17
|
private router;
|
|
18
18
|
private readonly _ngZone;
|
|
19
|
-
private readonly applicationRef
|
|
19
|
+
private readonly applicationRef?;
|
|
20
20
|
private host;
|
|
21
21
|
private removeAfterClosed;
|
|
22
22
|
private isOpening;
|
|
23
23
|
private ngUnsubscribe;
|
|
24
|
-
constructor(coreAdapter: SkyCoreAdapterService, windowRef: SkyAppWindowRef, dynamicComponentService: SkyDynamicComponentService, router: Router, _ngZone: NgZone, applicationRef
|
|
24
|
+
constructor(coreAdapter: SkyCoreAdapterService, windowRef: SkyAppWindowRef, dynamicComponentService: SkyDynamicComponentService, router: Router, _ngZone: NgZone, applicationRef?: ApplicationRef);
|
|
25
25
|
ngOnDestroy(): void;
|
|
26
26
|
/**
|
|
27
27
|
* Closes the flyout. This method also removes the flyout's HTML elements from the DOM.
|
|
@@ -38,6 +38,6 @@ export declare class SkyFlyoutService implements OnDestroy {
|
|
|
38
38
|
private removeHostComponent;
|
|
39
39
|
private addListeners;
|
|
40
40
|
private removeListners;
|
|
41
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SkyFlyoutService,
|
|
41
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SkyFlyoutService, [null, null, null, null, null, { optional: true; }]>;
|
|
42
42
|
static ɵprov: i0.ɵɵInjectableDeclaration<SkyFlyoutService>;
|
|
43
43
|
}
|
|
@@ -2,7 +2,7 @@ import { SkyAppLocaleInfo, SkyLibResourcesProvider } from '@skyux/i18n';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@skyux/i18n";
|
|
4
4
|
export declare class SkyFlyoutResourcesProvider implements SkyLibResourcesProvider {
|
|
5
|
-
getString(localeInfo: SkyAppLocaleInfo, name: string): string;
|
|
5
|
+
getString(localeInfo: SkyAppLocaleInfo, name: string): string | undefined;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Import into any component library module that needs to use resource strings.
|
package/package.json
CHANGED
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skyux/flyout",
|
|
3
|
-
"version": "5.
|
|
4
|
-
"peerDependencies": {
|
|
5
|
-
"@angular/animations": "^12.2.16",
|
|
6
|
-
"@angular/cdk": "^12.2.13",
|
|
7
|
-
"@angular/common": "^12.2.16",
|
|
8
|
-
"@angular/core": "^12.2.16",
|
|
9
|
-
"@angular/forms": "^12.2.16",
|
|
10
|
-
"@angular/router": "^12.2.16",
|
|
11
|
-
"@skyux/core": "5.6.0",
|
|
12
|
-
"@skyux/i18n": "5.6.0",
|
|
13
|
-
"@skyux/indicators": "5.6.0",
|
|
14
|
-
"@skyux/router": "5.6.0",
|
|
15
|
-
"@skyux/theme": "5.6.0"
|
|
16
|
-
},
|
|
17
|
-
"dependencies": {
|
|
18
|
-
"tslib": "^2.3.1"
|
|
19
|
-
},
|
|
3
|
+
"version": "5.7.0",
|
|
20
4
|
"author": "Blackbaud, Inc.",
|
|
21
5
|
"keywords": [
|
|
22
6
|
"blackbaud",
|
|
@@ -31,6 +15,22 @@
|
|
|
31
15
|
"url": "https://github.com/blackbaud/skyux/issues"
|
|
32
16
|
},
|
|
33
17
|
"homepage": "https://github.com/blackbaud/skyux#readme",
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"@angular/animations": "^12.2.16",
|
|
20
|
+
"@angular/cdk": "^12.2.13",
|
|
21
|
+
"@angular/common": "^12.2.16",
|
|
22
|
+
"@angular/core": "^12.2.16",
|
|
23
|
+
"@angular/forms": "^12.2.16",
|
|
24
|
+
"@angular/router": "^12.2.16",
|
|
25
|
+
"@skyux/core": "5.7.0",
|
|
26
|
+
"@skyux/i18n": "5.7.0",
|
|
27
|
+
"@skyux/indicators": "5.7.0",
|
|
28
|
+
"@skyux/router": "5.7.0",
|
|
29
|
+
"@skyux/theme": "5.7.0"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"tslib": "^2.3.1"
|
|
33
|
+
},
|
|
34
34
|
"main": "bundles/skyux-flyout.umd.js",
|
|
35
35
|
"module": "fesm2015/skyux-flyout.js",
|
|
36
36
|
"es2015": "fesm2015/skyux-flyout.js",
|