@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
104 lines (103 loc) • 9.15 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { AsiDropdownContainer } from './container/asi-dropdown-container.component';
import { Injectable, ComponentFactoryResolver, } from '@angular/core';
import * as nh from '../../native-helper';
import { of } from 'rxjs';
var AsiDropdownService = /** @class */ (function () {
function AsiDropdownService(resolver) {
this.resolver = resolver;
this.containers = [];
}
/**
*
* @param asiDropDown The template content of the dropdown
* @param viewContainerRef The ViewContainerRef of the parent component
* @param elementRef The parent HTMLElement, where the dropdown should display
*/
/**
*
* @param {?} viewContainerRef The ViewContainerRef of the parent component
* @param {?} elementRef The parent HTMLElement, where the dropdown should display
* @param {?} asiDropDown The template content of the dropdown
* @return {?}
*/
AsiDropdownService.prototype.showDropdown = /**
*
* @param {?} viewContainerRef The ViewContainerRef of the parent component
* @param {?} elementRef The parent HTMLElement, where the dropdown should display
* @param {?} asiDropDown The template content of the dropdown
* @return {?}
*/
function (viewContainerRef, elementRef, asiDropDown) {
var _this = this;
/** @type {?} */
var containerRef = this.getContainer(viewContainerRef);
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);
}
};
/**
* @param {?} viewContainerRef
* @return {?}
*/
AsiDropdownService.prototype.getContainer = /**
* @param {?} viewContainerRef
* @return {?}
*/
function (viewContainerRef) {
/** @type {?} */
var asiDropdownContainerFactory = this.resolver.resolveComponentFactory(AsiDropdownContainer);
return viewContainerRef.createComponent(asiDropdownContainerFactory, 0);
};
AsiDropdownService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AsiDropdownService.ctorParameters = function () { return [
{ type: ComponentFactoryResolver }
]; };
return AsiDropdownService;
}());
export { AsiDropdownService };
if (false) {
/** @type {?} */
AsiDropdownService.prototype.containers;
/** @type {?} */
AsiDropdownService.prototype.resolver;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWRyb3Bkb3duLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXNpLW5ndG9vbHMvbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYXNpLWRyb3Bkb3duL2FzaS1kcm9wZG93bi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQ0wsVUFBVSxFQUVWLHdCQUF3QixHQUd6QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7O0lBT3BDLDRCQUFvQixRQUFrQztRQUFsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjswQkFGVSxFQUFFO0tBR2pFO0lBRUQ7Ozs7O09BS0c7Ozs7Ozs7O0lBQ0gseUNBQVk7Ozs7Ozs7SUFBWixVQUFhLGdCQUFrQyxFQUFFLFVBQWUsRUFBRSxXQUF3QjtRQUExRixpQkFrQkM7O1FBakJDLElBQUksWUFBWSxHQUF1QyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFM0YsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBRXRELFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQUMsaUJBQWlCO1lBQzFELEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSSxDQUFDLFVBQVUsRUFBRSxVQUFDLFNBQVM7Z0JBQ25DLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDN0QsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbkMsTUFBTSxDQUFDLFlBQVksQ0FBQztLQUNyQjs7Ozs7O0lBRUQscUNBQVE7Ozs7O0lBQVIsVUFBUyxLQUFhLEVBQUUsUUFBa0I7UUFDeEMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDYixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDckQ7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pCO1NBQ0Y7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEI7S0FDRjs7Ozs7SUFFTyx5Q0FBWTs7OztjQUFDLGdCQUFtQzs7UUFFdEQsSUFBTSwyQkFBMkIsR0FBMkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztnQkFqRDNFLFVBQVU7Ozs7Z0JBUlQsd0JBQXdCOzs2QkFMMUI7O1NBY2Esa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNpRHJvcERvd24gfSBmcm9tICcuL2FzaS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc2lEcm9wZG93bkNvbnRhaW5lciB9IGZyb20gJy4vY29udGFpbmVyL2FzaS1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBJbmplY3RhYmxlLFxyXG4gIENvbXBvbmVudEZhY3RvcnksXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0ICogYXMgbmggZnJvbSAnLi4vLi4vbmF0aXZlLWhlbHBlcic7XHJcbmltcG9ydCB7IG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBc2lEcm9wZG93blNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGNvbnRhaW5lcnM6IEFycmF5PENvbXBvbmVudFJlZjxBc2lEcm9wZG93bkNvbnRhaW5lcj4+ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYXNpRHJvcERvd24gVGhlIHRlbXBsYXRlIGNvbnRlbnQgb2YgdGhlIGRyb3Bkb3duXHJcbiAgICogQHBhcmFtIHZpZXdDb250YWluZXJSZWYgVGhlIFZpZXdDb250YWluZXJSZWYgb2YgdGhlIHBhcmVudCBjb21wb25lbnRcclxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgcGFyZW50IEhUTUxFbGVtZW50LCB3aGVyZSB0aGUgZHJvcGRvd24gc2hvdWxkIGRpc3BsYXlcclxuICAgKi9cclxuICBzaG93RHJvcGRvd24odmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgZWxlbWVudFJlZjogYW55LCBhc2lEcm9wRG93bjogQXNpRHJvcERvd24pOiBDb21wb25lbnRSZWY8QXNpRHJvcGRvd25Db250YWluZXI+IHtcclxuICAgIGxldCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxBc2lEcm9wZG93bkNvbnRhaW5lcj4gPSB0aGlzLmdldENvbnRhaW5lcih2aWV3Q29udGFpbmVyUmVmKTtcclxuXHJcbiAgICBjb250YWluZXJSZWYuaW5zdGFuY2UuaW5qZWN0U2VydmljZSh0aGlzKTtcclxuICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5mb3JFbGVtZW50KGVsZW1lbnRSZWYpO1xyXG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLnNob3coYXNpRHJvcERvd24pO1xyXG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLnNldEluZGV4KHRoaXMuY29udGFpbmVycy5sZW5ndGgpO1xyXG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLmNhbkNsb3NlID0gYXNpRHJvcERvd24uY2FuQ2xvc2U7XHJcblxyXG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLm9uQ2xvc2UoKS5zdWJzY3JpYmUoKGNvbnRhaW5lclRvUmVtb3ZlKSA9PiB7XHJcbiAgICAgIG5oLnJlbW92ZSh0aGlzLmNvbnRhaW5lcnMsIChjb250YWluZXIpID0+IHtcclxuICAgICAgICByZXR1cm4gY29udGFpbmVyVG9SZW1vdmUuaW5kZXggPT09IGNvbnRhaW5lci5pbnN0YW5jZS5pbmRleDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNvbnRhaW5lcnMucHVzaChjb250YWluZXJSZWYpO1xyXG5cclxuICAgIHJldHVybiBjb250YWluZXJSZWY7XHJcbiAgfVxyXG5cclxuICBjYW5DbG9zZShpbmRleDogbnVtYmVyLCBjYW5DbG9zZTogRnVuY3Rpb24pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKGluZGV4ID49IHRoaXMuY29udGFpbmVycy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGlmIChjYW5DbG9zZSkge1xyXG4gICAgICAgIHJldHVybiBuaC5vYnNlcnZlKGNhbkNsb3NlKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRhaW5lcih2aWV3Q29udGFpbmVyUmVmIDogVmlld0NvbnRhaW5lclJlZik6IENvbXBvbmVudFJlZjxBc2lEcm9wZG93bkNvbnRhaW5lcj4ge1xyXG4gICAgLy8gQ3JlYXRlIGFuIEFzaURyb3Bkb3duQ29udGFpbmVyXHJcbiAgICBjb25zdCBhc2lEcm9wZG93bkNvbnRhaW5lckZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8QXNpRHJvcGRvd25Db250YWluZXI+ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShBc2lEcm9wZG93bkNvbnRhaW5lcik7XHJcbiAgICByZXR1cm4gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoYXNpRHJvcGRvd25Db250YWluZXJGYWN0b3J5LCAwKTtcclxuICB9XHJcbn1cclxuIl19