@hxui/angular
Version:
This README includes the steps that are necessary to import the HxUi-angular into a project or to contribute with development.
192 lines (191 loc) • 14.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { ReflectiveInjector, Injectable, ComponentFactoryResolver, Optional, Inject } from '@angular/core';
import { ModalBackdropComponent } from './modal-backdrop.component';
import { FocusTrapFactory } from '@angular/cdk/a11y';
import { DOCUMENT } from '@angular/common';
var ModalService = /** @class */ (function () {
function ModalService(componentFactoryResolver, focusTrapFactory, document) {
this.componentFactoryResolver = componentFactoryResolver;
this.focusTrapFactory = focusTrapFactory;
this.document = document;
this.elementFocusedBeforeDialogWasOpened = null;
}
/**
* @param {?} vcRef
* @return {?}
*/
ModalService.prototype.registerViewContainerRef = /**
* @param {?} vcRef
* @return {?}
*/
function (vcRef) {
this.vcRef = vcRef;
};
/**
* @param {?} injector
* @return {?}
*/
ModalService.prototype.registerInjector = /**
* @param {?} injector
* @return {?}
*/
function (injector) {
this.injector = injector;
};
/**
* Create component dynamically
*/
/**
* Create component dynamically
* @template T
* @param {?} component
* @param {?=} parameters
* @return {?}
*/
ModalService.prototype.create = /**
* Create component dynamically
* @template T
* @param {?} component
* @param {?=} parameters
* @return {?}
*/
function (component, parameters) {
// create backdrop
this.backdropRef = this.dynamicComponentLoader(ModalBackdropComponent);
// create dynamic component
this.componentRef = this.dynamicComponentLoader(component, parameters);
this.componentNativeElement = this.componentRef.location.nativeElement;
this.trapFocus();
return this.componentRef;
};
/**
* @return {?}
*/
ModalService.prototype.close = /**
* @return {?}
*/
function () {
if (!!this.componentRef) {
this.componentRef.destroy();
}
};
/**
* Load dynamic component and return componentRef
* @template T
* @param {?} component
* @param {?=} parameters
* @return {?}
*/
ModalService.prototype.dynamicComponentLoader = /**
* Load dynamic component and return componentRef
* @template T
* @param {?} component
* @param {?=} parameters
* @return {?}
*/
function (component, parameters) {
var _this = this;
// compile the component based on its type and
// create a component factory
var /** @type {?} */ factory = this.componentFactoryResolver.resolveComponentFactory(component);
// the injector will be needed for DI in
// the custom component
var /** @type {?} */ childInjector = ReflectiveInjector.resolveAndCreate([], this.injector);
// create the actual component
var /** @type {?} */ componentRef = this.vcRef.createComponent(factory, 0, childInjector);
// pass the @Input parameters to the instance
Object.assign(componentRef.instance, parameters);
// add a destroy method to the modal instance
componentRef.instance['destroy'] = function () {
// this will close the backdrop
// this will close the backdrop
_this.backdropRef.destroy();
// this will destroy the component
componentRef.destroy();
_this.restoreFocus();
};
return componentRef;
};
/**
* @return {?}
*/
ModalService.prototype.trapFocus = /**
* @return {?}
*/
function () {
this.focusTrap = this.focusTrapFactory.create(this.componentNativeElement);
this.savePreviouslyFocusedElement();
this.focusTrap.focusInitialElementWhenReady();
};
/**
* @return {?}
*/
ModalService.prototype.restoreFocus = /**
* @return {?}
*/
function () {
var /** @type {?} */ toFocus = this.elementFocusedBeforeDialogWasOpened;
if (toFocus && typeof toFocus.focus === 'function') {
toFocus.focus();
}
if (this.focusTrap) {
this.focusTrap.destroy();
}
};
/**
* @return {?}
*/
ModalService.prototype.savePreviouslyFocusedElement = /**
* @return {?}
*/
function () {
if (this.document) {
this.elementFocusedBeforeDialogWasOpened = /** @type {?} */ (this.document
.activeElement);
}
};
ModalService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
ModalService.ctorParameters = function () { return [
{ type: ComponentFactoryResolver, },
{ type: FocusTrapFactory, },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },
]; };
return ModalService;
}());
export { ModalService };
function ModalService_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ModalService.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ModalService.ctorParameters;
/** @type {?} */
ModalService.prototype.vcRef;
/** @type {?} */
ModalService.prototype.injector;
/** @type {?} */
ModalService.prototype.backdropRef;
/** @type {?} */
ModalService.prototype.elementFocusedBeforeDialogWasOpened;
/** @type {?} */
ModalService.prototype.componentRef;
/** @type {?} */
ModalService.prototype.componentNativeElement;
/** @type {?} */
ModalService.prototype.focusTrap;
/** @type {?} */
ModalService.prototype.componentFactoryResolver;
/** @type {?} */
ModalService.prototype.focusTrapFactory;
/** @type {?} */
ModalService.prototype.document;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoeHVpL2FuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvbW9kYWwvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUVMLGtCQUFrQixFQUNsQixVQUFVLEVBR1Ysd0JBQXdCLEVBQ3hCLFFBQVEsRUFDUixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztJQW1CekMsc0JBQ1UsMEJBQ0Esa0JBR0E7UUFKQSw2QkFBd0IsR0FBeEIsd0JBQXdCO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0I7UUFHaEIsYUFBUSxHQUFSLFFBQVE7bURBYmdELElBQUk7S0FjbEU7Ozs7O0lBRUosK0NBQXdCOzs7O0lBQXhCLFVBQXlCLEtBQXVCO1FBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOzs7OztJQUVELHVDQUFnQjs7OztJQUFoQixVQUFpQixRQUFrQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztLQUMxQjtJQUVEOztPQUVHOzs7Ozs7OztJQUNILDZCQUFNOzs7Ozs7O0lBQU4sVUFBVSxTQUFjLEVBQUUsVUFBbUI7O1FBRTNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUM1QyxzQkFBc0IsQ0FDdkIsQ0FBQzs7UUFHRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBSSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUN2RSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7S0FDMUI7Ozs7SUFFRCw0QkFBSzs7O0lBQUw7UUFDRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3QjtLQUNGOzs7Ozs7OztJQUtPLDZDQUFzQjs7Ozs7OztjQUM1QixTQUFjLEVBQ2QsVUFBbUI7Ozs7UUFJbkIscUJBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FDbkUsU0FBUyxDQUNWLENBQUM7OztRQUdGLHFCQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FDdkQsRUFBRSxFQUNGLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQzs7UUFFRixxQkFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQzs7UUFHM0UsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDOztRQUVqRCxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHOztZQUVqQyxBQURBLCtCQUErQjtZQUMvQixLQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDOztZQUUzQixZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsS0FBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCLENBQUM7UUFFRixNQUFNLENBQUMsWUFBWSxDQUFDOzs7OztJQUdkLGdDQUFTOzs7O1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsQ0FBQzs7Ozs7SUFHeEMsbUNBQVk7Ozs7UUFDbEIscUJBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQztRQUV6RCxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDbkQsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2pCO1FBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMxQjs7Ozs7SUFHSyxtREFBNEI7Ozs7UUFDbEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLG1DQUFtQyxxQkFBRyxJQUFJLENBQUMsUUFBUTtpQkFDckQsYUFBNEIsQ0FBQSxDQUFDO1NBQ2pDOzs7Z0JBbEhKLFVBQVU7Ozs7Z0JBUlQsd0JBQXdCO2dCQUtqQixnQkFBZ0I7Z0RBdUJwQixRQUFRLFlBQ1IsTUFBTSxTQUFDLFFBQVE7O3VCQW5DcEI7O1NBZWEsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBSZWZsZWN0aXZlSW5qZWN0b3IsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbmplY3RvcixcclxuICBDb21wb25lbnRSZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIE9wdGlvbmFsLFxyXG4gIEluamVjdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNb2RhbEJhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC1iYWNrZHJvcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb2N1c1RyYXBGYWN0b3J5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2Uge1xyXG4gIC8vIGhlcmUgd2UgaG9sZCBvdXIgcGxhY2Vob2xkZXJcclxuICBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIC8vIGhlcmUgd2UgaG9sZCBvdXIgaW5qZWN0b3JcclxuICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcjtcclxuICAvLyBoZXJlIHdlIGhvbGQgdGhlIGJhY2tkcm9wIGNvbXBvbmVudFxyXG4gIHByaXZhdGUgYmFja2Ryb3BSZWY6IENvbXBvbmVudFJlZjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PjtcclxuICAvLyBFbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIHRoZSBkaWFsb2cgd2FzIG9wZW5lZC4gU2F2ZSB0aGlzIHRvIHJlc3RvcmUgdXBvbiBjbG9zZS5cclxuICBwcml2YXRlIGVsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGNvbXBvbmVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBjb21wb25lbnROYXRpdmVFbGVtZW50O1xyXG5cclxuICBwcml2YXRlIGZvY3VzVHJhcDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBmb2N1c1RyYXBGYWN0b3J5OiBGb2N1c1RyYXBGYWN0b3J5LFxyXG4gICAgQE9wdGlvbmFsKClcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpXHJcbiAgICBwcml2YXRlIGRvY3VtZW50OiBhbnlcclxuICApIHt9XHJcblxyXG4gIHJlZ2lzdGVyVmlld0NvbnRhaW5lclJlZih2Y1JlZjogVmlld0NvbnRhaW5lclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy52Y1JlZiA9IHZjUmVmO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJJbmplY3RvcihpbmplY3RvcjogSW5qZWN0b3IpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5qZWN0b3IgPSBpbmplY3RvcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBjb21wb25lbnQgZHluYW1pY2FsbHlcclxuICAgKi9cclxuICBjcmVhdGU8VD4oY29tcG9uZW50OiBhbnksIHBhcmFtZXRlcnM/OiBPYmplY3QpOiBDb21wb25lbnRSZWY8VD4ge1xyXG4gICAgLy8gY3JlYXRlIGJhY2tkcm9wXHJcbiAgICB0aGlzLmJhY2tkcm9wUmVmID0gdGhpcy5keW5hbWljQ29tcG9uZW50TG9hZGVyPE1vZGFsQmFja2Ryb3BDb21wb25lbnQ+KFxyXG4gICAgICBNb2RhbEJhY2tkcm9wQ29tcG9uZW50XHJcbiAgICApO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBkeW5hbWljIGNvbXBvbmVudFxyXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmR5bmFtaWNDb21wb25lbnRMb2FkZXI8VD4oY29tcG9uZW50LCBwYXJhbWV0ZXJzKTtcclxuXHJcbiAgICB0aGlzLmNvbXBvbmVudE5hdGl2ZUVsZW1lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy50cmFwRm9jdXMoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRSZWY7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIGlmICghIXRoaXMuY29tcG9uZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgZHluYW1pYyBjb21wb25lbnQgYW5kIHJldHVybiBjb21wb25lbnRSZWZcclxuICAgKi9cclxuICBwcml2YXRlIGR5bmFtaWNDb21wb25lbnRMb2FkZXI8VD4oXHJcbiAgICBjb21wb25lbnQ6IGFueSxcclxuICAgIHBhcmFtZXRlcnM/OiBPYmplY3RcclxuICApOiBDb21wb25lbnRSZWY8YW55PiB7XHJcbiAgICAvLyBjb21waWxlIHRoZSBjb21wb25lbnQgYmFzZWQgb24gaXRzIHR5cGUgYW5kXHJcbiAgICAvLyBjcmVhdGUgYSBjb21wb25lbnQgZmFjdG9yeVxyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxyXG4gICAgICBjb21wb25lbnRcclxuICAgICk7XHJcbiAgICAvLyB0aGUgaW5qZWN0b3Igd2lsbCBiZSBuZWVkZWQgZm9yIERJIGluXHJcbiAgICAvLyB0aGUgY3VzdG9tIGNvbXBvbmVudFxyXG4gICAgY29uc3QgY2hpbGRJbmplY3RvciA9IFJlZmxlY3RpdmVJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFxyXG4gICAgICBbXSxcclxuICAgICAgdGhpcy5pbmplY3RvclxyXG4gICAgKTtcclxuICAgIC8vIGNyZWF0ZSB0aGUgYWN0dWFsIGNvbXBvbmVudFxyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52Y1JlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSwgMCwgY2hpbGRJbmplY3Rvcik7XHJcblxyXG4gICAgLy8gcGFzcyB0aGUgQElucHV0IHBhcmFtZXRlcnMgdG8gdGhlIGluc3RhbmNlXHJcbiAgICBPYmplY3QuYXNzaWduKGNvbXBvbmVudFJlZi5pbnN0YW5jZSwgcGFyYW1ldGVycyk7XHJcbiAgICAvLyBhZGQgYSBkZXN0cm95IG1ldGhvZCB0byB0aGUgbW9kYWwgaW5zdGFuY2VcclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZVsnZGVzdHJveSddID0gKCkgPT4ge1xyXG4gICAgICAvLyB0aGlzIHdpbGwgY2xvc2UgdGhlIGJhY2tkcm9wXHJcbiAgICAgIHRoaXMuYmFja2Ryb3BSZWYuZGVzdHJveSgpO1xyXG4gICAgICAvLyB0aGlzIHdpbGwgZGVzdHJveSB0aGUgY29tcG9uZW50XHJcbiAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMucmVzdG9yZUZvY3VzKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXBGb2N1cygpIHtcclxuICAgIHRoaXMuZm9jdXNUcmFwID0gdGhpcy5mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLmNvbXBvbmVudE5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5zYXZlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCk7XHJcbiAgICB0aGlzLmZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc3RvcmVGb2N1cygpIHtcclxuICAgIGNvbnN0IHRvRm9jdXMgPSB0aGlzLmVsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkO1xyXG5cclxuICAgIGlmICh0b0ZvY3VzICYmIHR5cGVvZiB0b0ZvY3VzLmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHRvRm9jdXMuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5mb2N1c1RyYXApIHtcclxuICAgICAgdGhpcy5mb2N1c1RyYXAuZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzYXZlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCkge1xyXG4gICAgaWYgKHRoaXMuZG9jdW1lbnQpIHtcclxuICAgICAgdGhpcy5lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZCA9IHRoaXMuZG9jdW1lbnRcclxuICAgICAgICAuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19