@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
113 lines (112 loc) • 10.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { AsiDropdownContainer } from './container/asi-dropdown-container.component';
import { Injectable, ComponentFactoryResolver, ApplicationRef } from '@angular/core';
import * as nh from '../../native-helper';
import { of } from 'rxjs';
var AsiDropdownService = /** @class */ (function () {
function AsiDropdownService(resolver, appRef) {
this.resolver = resolver;
this.appRef = appRef;
this.containers = [];
}
/**
*
* @param templateRef The template content of the dropdown
* @param htmlElement The parent HTMLElement, where the dropdown should display
*/
/**
*
* @param {?} elementRef
* @param {?} asiDropDown
* @return {?}
*/
AsiDropdownService.prototype.showDropdown = /**
*
* @param {?} elementRef
* @param {?} asiDropDown
* @return {?}
*/
function (elementRef, asiDropDown) {
var _this = this;
/** @type {?} */
var containerRef = this.getContainer();
containerRef.instance.injectService(this);
containerRef.instance.forElement(elementRef);
containerRef.instance.show(asiDropDown);
containerRef.instance.setIndex(this.containers.length);
containerRef.instance.canClose = asiDropDown.canClose;
containerRef.instance.onClose().subscribe(function (containerToRemove) {
nh.remove(_this.containers, function (container) {
return containerToRemove.index === container.instance.index;
});
});
this.containers.push(containerRef);
return containerRef;
};
/**
* @param {?} index
* @param {?} canClose
* @return {?}
*/
AsiDropdownService.prototype.canClose = /**
* @param {?} index
* @param {?} canClose
* @return {?}
*/
function (index, canClose) {
if (index >= this.containers.length - 1) {
if (canClose) {
return nh.observe(canClose(document.activeElement));
}
else {
return of(true);
}
}
else {
return of(false);
}
};
/**
* @return {?}
*/
AsiDropdownService.prototype.getContainer = /**
* @return {?}
*/
function () {
/** @type {?} */
var rootComponent = this.appRef.components[0].instance;
if (!rootComponent.viewContainerRef) {
/** @type {?} */
var appName = this.appRef.componentTypes[0].name;
// tslint:disable-next-line:max-line-length
throw new Error('AsiDropdown : Please add "viewContainerRef : ViewContainerRef" declaration in your root component constructor : ' + appName);
}
/** @type {?} */
var asiDropdownContainerFactory = this.resolver.resolveComponentFactory(AsiDropdownContainer);
/** @type {?} */
var containerRef = rootComponent.viewContainerRef.createComponent(asiDropdownContainerFactory, 0);
return containerRef;
};
AsiDropdownService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AsiDropdownService.ctorParameters = function () { return [
{ type: ComponentFactoryResolver },
{ type: ApplicationRef }
]; };
return AsiDropdownService;
}());
export { AsiDropdownService };
if (false) {
/** @type {?} */
AsiDropdownService.prototype.containers;
/** @type {?} */
AsiDropdownService.prototype.resolver;
/** @type {?} */
AsiDropdownService.prototype.appRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWRyb3Bkb3duLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXNpLW5ndG9vbHMvbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYXNpLWRyb3Bkb3duL2FzaS1kcm9wZG93bi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFvQix3QkFBd0IsRUFBZ0IsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJILE9BQU8sS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUMsT0FBTyxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7SUFPcEMsNEJBQW9CLFFBQWtDLEVBQVUsTUFBc0I7UUFBbEUsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFnQjswQkFGdEIsRUFBRTtLQUdqRTtJQUVEOzs7O09BSUc7Ozs7Ozs7SUFDSCx5Q0FBWTs7Ozs7O0lBQVosVUFBYSxVQUFlLEVBQUUsV0FBd0I7UUFBdEQsaUJBa0JDOztRQWpCQyxJQUFJLFlBQVksR0FBdUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTNFLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUV0RCxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFDLGlCQUFpQjtZQUMxRCxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUksQ0FBQyxVQUFVLEVBQUUsVUFBQyxTQUFTO2dCQUNuQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2FBQzdELENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRW5DLE1BQU0sQ0FBQyxZQUFZLENBQUM7S0FDckI7Ozs7OztJQUVELHFDQUFROzs7OztJQUFSLFVBQVMsS0FBYSxFQUFFLFFBQWtCO1FBQ3hDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQ3JEO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQjtTQUNGO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xCO0tBQ0Y7Ozs7SUFFTyx5Q0FBWTs7Ozs7UUFFbEIsSUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3pELEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzs7WUFDcEMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOztZQUVuRCxNQUFNLElBQUksS0FBSyxDQUFDLGtIQUFrSCxHQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQy9JOztRQUVELElBQU0sMkJBQTJCLEdBQTJDLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsb0JBQW9CLENBQUMsQ0FBQzs7UUFDeEksSUFBSSxZQUFZLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRyxNQUFNLENBQUMsWUFBWSxDQUFDOzs7Z0JBekR2QixVQUFVOzs7O2dCQUw0Qix3QkFBd0I7Z0JBQWdCLGNBQWM7OzZCQUY3Rjs7U0FRYSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc2lEcm9wRG93biB9IGZyb20gJy4vYXNpLWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzaURyb3Bkb3duQ29udGFpbmVyIH0gZnJvbSAnLi9jb250YWluZXIvYXNpLWRyb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBDb21wb25lbnRGYWN0b3J5LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgQXBwbGljYXRpb25SZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCAqIGFzIG5oIGZyb20gJy4uLy4uL25hdGl2ZS1oZWxwZXInO1xyXG5pbXBvcnQgeyBvZiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXNpRHJvcGRvd25TZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBjb250YWluZXJzOiBBcnJheTxDb21wb25lbnRSZWY8QXNpRHJvcGRvd25Db250YWluZXI+PiA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZikge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGVtcGxhdGVSZWYgVGhlIHRlbXBsYXRlIGNvbnRlbnQgb2YgdGhlIGRyb3Bkb3duXHJcbiAgICogQHBhcmFtIGh0bWxFbGVtZW50IFRoZSBwYXJlbnQgSFRNTEVsZW1lbnQsIHdoZXJlIHRoZSBkcm9wZG93biBzaG91bGQgZGlzcGxheVxyXG4gICAqL1xyXG4gIHNob3dEcm9wZG93bihlbGVtZW50UmVmOiBhbnksIGFzaURyb3BEb3duOiBBc2lEcm9wRG93bik6IENvbXBvbmVudFJlZjxBc2lEcm9wZG93bkNvbnRhaW5lcj4ge1xyXG4gICAgbGV0IGNvbnRhaW5lclJlZjogQ29tcG9uZW50UmVmPEFzaURyb3Bkb3duQ29udGFpbmVyPiA9IHRoaXMuZ2V0Q29udGFpbmVyKCk7XHJcblxyXG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLmluamVjdFNlcnZpY2UodGhpcyk7XHJcbiAgICBjb250YWluZXJSZWYuaW5zdGFuY2UuZm9yRWxlbWVudChlbGVtZW50UmVmKTtcclxuICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5zaG93KGFzaURyb3BEb3duKTtcclxuICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5zZXRJbmRleCh0aGlzLmNvbnRhaW5lcnMubGVuZ3RoKTtcclxuICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5jYW5DbG9zZSA9IGFzaURyb3BEb3duLmNhbkNsb3NlO1xyXG5cclxuICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5vbkNsb3NlKCkuc3Vic2NyaWJlKChjb250YWluZXJUb1JlbW92ZSkgPT4ge1xyXG4gICAgICBuaC5yZW1vdmUodGhpcy5jb250YWluZXJzLCAoY29udGFpbmVyKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lclRvUmVtb3ZlLmluZGV4ID09PSBjb250YWluZXIuaW5zdGFuY2UuaW5kZXg7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb250YWluZXJzLnB1c2goY29udGFpbmVyUmVmKTtcclxuXHJcbiAgICByZXR1cm4gY29udGFpbmVyUmVmO1xyXG4gIH1cclxuXHJcbiAgY2FuQ2xvc2UoaW5kZXg6IG51bWJlciwgY2FuQ2xvc2U6IEZ1bmN0aW9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChpbmRleCA+PSB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoIC0gMSkge1xyXG4gICAgICBpZiAoY2FuQ2xvc2UpIHtcclxuICAgICAgICByZXR1cm4gbmgub2JzZXJ2ZShjYW5DbG9zZShkb2N1bWVudC5hY3RpdmVFbGVtZW50KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250YWluZXIoKTogQ29tcG9uZW50UmVmPEFzaURyb3Bkb3duQ29udGFpbmVyPiB7XHJcbiAgICAvLyByZXRyZWl2ZSByb290Q29tcG9uZW50XHJcbiAgICBjb25zdCByb290Q29tcG9uZW50ID0gdGhpcy5hcHBSZWYuY29tcG9uZW50c1swXS5pbnN0YW5jZTtcclxuICAgIGlmICghcm9vdENvbXBvbmVudC52aWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgIGNvbnN0IGFwcE5hbWUgPSB0aGlzLmFwcFJlZi5jb21wb25lbnRUeXBlc1swXS5uYW1lO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXNpRHJvcGRvd24gOiBQbGVhc2UgYWRkIFwidmlld0NvbnRhaW5lclJlZiA6IFZpZXdDb250YWluZXJSZWZcIiBkZWNsYXJhdGlvbiBpbiB5b3VyIHJvb3QgY29tcG9uZW50IGNvbnN0cnVjdG9yIDogJyArIGFwcE5hbWUpO1xyXG4gICAgfVxyXG4gICAgLy8gQ3JlYXRlIGFuIEFzaURyb3Bkb3duQ29udGFpbmVyXHJcbiAgICBjb25zdCBhc2lEcm9wZG93bkNvbnRhaW5lckZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8QXNpRHJvcGRvd25Db250YWluZXI+ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShBc2lEcm9wZG93bkNvbnRhaW5lcik7XHJcbiAgICBsZXQgY29udGFpbmVyUmVmID0gcm9vdENvbXBvbmVudC52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChhc2lEcm9wZG93bkNvbnRhaW5lckZhY3RvcnksIDApO1xyXG5cclxuICAgIHJldHVybiBjb250YWluZXJSZWY7XHJcbiAgfVxyXG59XHJcbiJdfQ==