UNPKG

@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
/** * @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==