@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
140 lines (139 loc) • 11.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { EventEmitter, Output, ElementRef, Input, Component, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
import { AsiDropdownService } from './asi-dropdown.service';
export class AsiDropDown {
/**
* @param {?} asiDropdownService
* @param {?} elementRef
* @param {?} viewContainerRef
*/
constructor(asiDropdownService, elementRef, viewContainerRef) {
this.asiDropdownService = asiDropdownService;
this.elementRef = elementRef;
this.viewContainerRef = viewContainerRef;
/**
* Change to true to open the drowndrop
*/
this.open = false;
/**
* fix the width to the relative component width
*/
this.calculWidth = true;
/**
* Allow you to add a class to the down drop container
*/
this.dropDownClass = '';
/**
* Event emitted when dropdown is closed (you should put you open var to false to be able to reopen)
*/
this.onClose = new EventEmitter();
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
// To open
if (changes["open"]) {
if (changes["open"].currentValue) {
setTimeout(() => {
if (this.relativeTo == null) {
this.dropdown = this.asiDropdownService.showDropdown(this.viewContainerRef, this.elementRef.nativeElement.parentElement, this);
}
else if (this.relativeTo.nativeElement) {
this.dropdown = this.asiDropdownService.showDropdown(this.viewContainerRef, this.relativeTo.nativeElement, this);
}
else if (this.relativeTo['elementRef'].nativeElement) {
this.dropdown = this.asiDropdownService.showDropdown(this.viewContainerRef, this.relativeTo['elementRef'].nativeElement, this);
}
else {
console.warn('Default choice for the down down cannot find nativeElement on the relativeTo element');
this.dropdown = this.asiDropdownService.showDropdown(this.viewContainerRef, this.elementRef.nativeElement.parentElement, this);
}
this.dropdown.instance.setCalculWidth(this.calculWidth);
this.dropdown.instance.onClose().subscribe(() => {
this.destroyDropdown();
});
});
}
else if (this.dropdown) {
this.dropdown.instance.close();
}
}
}
/**
* @return {?}
*/
destroyDropdown() {
this.open = false;
this.onClose.emit();
this.dropdown.destroy();
}
}
AsiDropDown.decorators = [
{ type: Component, args: [{
selector: 'asi-dropdown',
template: '<ng-template><div class="asi-dropdown"><ng-content></ng-content></div></ng-template>'
}] }
];
/** @nocollapse */
AsiDropDown.ctorParameters = () => [
{ type: AsiDropdownService },
{ type: ElementRef },
{ type: ViewContainerRef }
];
AsiDropDown.propDecorators = {
open: [{ type: Input }],
calculWidth: [{ type: Input }],
relativeTo: [{ type: Input }],
dropDownClass: [{ type: Input }],
onClose: [{ type: Output }],
canClose: [{ type: Input }],
contentTemplate: [{ type: ViewChild, args: [TemplateRef,] }]
};
if (false) {
/**
* Change to true to open the drowndrop
* @type {?}
*/
AsiDropDown.prototype.open;
/**
* fix the width to the relative component width
* @type {?}
*/
AsiDropDown.prototype.calculWidth;
/**
* link the dropdown to the component position
* @type {?}
*/
AsiDropDown.prototype.relativeTo;
/**
* Allow you to add a class to the down drop container
* @type {?}
*/
AsiDropDown.prototype.dropDownClass;
/**
* Event emitted when dropdown is closed (you should put you open var to false to be able to reopen)
* @type {?}
*/
AsiDropDown.prototype.onClose;
/**
* Function to check if the dropdown can close on click, get the clicked element as parameter
* @type {?}
*/
AsiDropDown.prototype.canClose;
/** @type {?} */
AsiDropDown.prototype.dropdown;
/** @type {?} */
AsiDropDown.prototype.contentTemplate;
/** @type {?} */
AsiDropDown.prototype.asiDropdownService;
/** @type {?} */
AsiDropDown.prototype.elementRef;
/** @type {?} */
AsiDropDown.prototype.viewContainerRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhc2ktbmd0b29scy9saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hc2ktZHJvcGRvd24vYXNpLWRyb3Bkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUMvRCxTQUFTLEVBQTBDLGdCQUFnQixFQUNwRSxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU01RCxNQUFNOzs7Ozs7SUFtQkosWUFBb0Isa0JBQXNDLEVBQVUsVUFBc0IsRUFBVSxnQkFBa0M7UUFBbEgsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCOzs7O29CQWhCdEgsS0FBSzs7OzsyQkFFRSxJQUFJOzs7OzZCQUlGLEVBQUU7Ozs7dUJBRVAsSUFBSSxZQUFZLEVBQUU7S0FTckM7Ozs7O0lBRUQsV0FBVyxDQUFDLE9BQXNCOztRQUVoQyxFQUFFLENBQUMsQ0FBQyxPQUFPLFVBQU8sQ0FBQztZQUNqQixFQUFFLENBQUMsQ0FBQyxPQUFPLFNBQU0sWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUNoSTtvQkFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO3dCQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUNsSDtvQkFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO3dCQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUNoSTtvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLHNGQUFzRixDQUFDLENBQUM7d0JBQ3JHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUNoSTtvQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUM5QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7cUJBQ3hCLENBQUMsQ0FBQztpQkFDSixDQUFDLENBQUM7YUFDSjtZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEM7U0FDRjtLQUNGOzs7O0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUN6Qjs7O1lBeERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsUUFBUSxFQUFFLHNGQUFzRjthQUNqRzs7OztZQUxRLGtCQUFrQjtZQUpILFVBQVU7WUFDbUIsZ0JBQWdCOzs7bUJBWWxFLEtBQUs7MEJBRUwsS0FBSzt5QkFFTCxLQUFLOzRCQUVMLEtBQUs7c0JBRUwsTUFBTTt1QkFFTixLQUFLOzhCQUlMLFNBQVMsU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBFdmVudEVtaXR0ZXIsIE91dHB1dCwgRWxlbWVudFJlZiwgSW5wdXQsIENvbXBvbmVudCwgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBc2lEcm9wZG93bkNvbnRhaW5lciB9IGZyb20gJy4vY29udGFpbmVyL2FzaS1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNpRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9hc2ktZHJvcGRvd24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FzaS1kcm9wZG93bicsXHJcbiAgdGVtcGxhdGU6ICc8bmctdGVtcGxhdGU+PGRpdiBjbGFzcz1cImFzaS1kcm9wZG93blwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj48L25nLXRlbXBsYXRlPicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc2lEcm9wRG93biBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKiBDaGFuZ2UgdG8gdHJ1ZSB0byBvcGVuIHRoZSBkcm93bmRyb3AgKi9cclxuICBASW5wdXQoKSBvcGVuID0gZmFsc2U7XHJcbiAgLyoqIGZpeCB0aGUgd2lkdGggdG8gdGhlIHJlbGF0aXZlIGNvbXBvbmVudCB3aWR0aCAqL1xyXG4gIEBJbnB1dCgpIGNhbGN1bFdpZHRoID0gdHJ1ZTtcclxuICAvKiogbGluayB0aGUgZHJvcGRvd24gdG8gdGhlIGNvbXBvbmVudCBwb3NpdGlvbiAqL1xyXG4gIEBJbnB1dCgpIHJlbGF0aXZlVG86IEVsZW1lbnRSZWY7XHJcbiAgLyoqIEFsbG93IHlvdSB0byBhZGQgYSBjbGFzcyB0byB0aGUgZG93biBkcm9wIGNvbnRhaW5lciAqL1xyXG4gIEBJbnB1dCgpIGRyb3BEb3duQ2xhc3MgPSAnJztcclxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRyb3Bkb3duIGlzIGNsb3NlZCAoeW91IHNob3VsZCBwdXQgeW91IG9wZW4gdmFyIHRvIGZhbHNlIHRvIGJlIGFibGUgdG8gcmVvcGVuKSAqL1xyXG4gIEBPdXRwdXQoKSBvbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBGdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZHJvcGRvd24gY2FuIGNsb3NlIG9uIGNsaWNrLCBnZXQgdGhlIGNsaWNrZWQgZWxlbWVudCBhcyBwYXJhbWV0ZXIgKi9cclxuICBASW5wdXQoKSBjYW5DbG9zZTogRnVuY3Rpb247XHJcblxyXG4gIHByaXZhdGUgZHJvcGRvd246IENvbXBvbmVudFJlZjxBc2lEcm9wZG93bkNvbnRhaW5lcj47XHJcblxyXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhc2lEcm9wZG93blNlcnZpY2U6IEFzaURyb3Bkb3duU2VydmljZSwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAvLyBUbyBvcGVuXHJcbiAgICBpZiAoY2hhbmdlcy5vcGVuKSB7XHJcbiAgICAgIGlmIChjaGFuZ2VzLm9wZW4uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yZWxhdGl2ZVRvID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wZG93biA9IHRoaXMuYXNpRHJvcGRvd25TZXJ2aWNlLnNob3dEcm9wZG93bih0aGlzLnZpZXdDb250YWluZXJSZWYsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIHRoaXMpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbGF0aXZlVG8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duID0gdGhpcy5hc2lEcm9wZG93blNlcnZpY2Uuc2hvd0Ryb3Bkb3duKHRoaXMudmlld0NvbnRhaW5lclJlZiwgdGhpcy5yZWxhdGl2ZVRvLm5hdGl2ZUVsZW1lbnQsIHRoaXMpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbGF0aXZlVG9bJ2VsZW1lbnRSZWYnXS5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24gPSB0aGlzLmFzaURyb3Bkb3duU2VydmljZS5zaG93RHJvcGRvd24odGhpcy52aWV3Q29udGFpbmVyUmVmLCB0aGlzLnJlbGF0aXZlVG9bJ2VsZW1lbnRSZWYnXS5uYXRpdmVFbGVtZW50LCB0aGlzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRGVmYXVsdCBjaG9pY2UgZm9yIHRoZSBkb3duIGRvd24gY2Fubm90IGZpbmQgbmF0aXZlRWxlbWVudCBvbiB0aGUgcmVsYXRpdmVUbyBlbGVtZW50Jyk7XHJcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24gPSB0aGlzLmFzaURyb3Bkb3duU2VydmljZS5zaG93RHJvcGRvd24odGhpcy52aWV3Q29udGFpbmVyUmVmLCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LCB0aGlzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZHJvcGRvd24uaW5zdGFuY2Uuc2V0Q2FsY3VsV2lkdGgodGhpcy5jYWxjdWxXaWR0aCk7XHJcbiAgICAgICAgICB0aGlzLmRyb3Bkb3duLmluc3RhbmNlLm9uQ2xvc2UoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lEcm9wZG93bigpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcm9wZG93bikge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd24uaW5zdGFuY2UuY2xvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVzdHJveURyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xyXG4gICAgdGhpcy5kcm9wZG93bi5kZXN0cm95KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==