UNPKG

@ngx-performance-ui/ui

Version:
198 lines 16.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Directive, ElementRef, Input, Renderer2, ViewContainerRef } from '@angular/core'; import { Select } from '@ngxs/store'; import { Observable } from 'rxjs'; import { createProjectableNode } from '../utils'; import { EventListenerState, takeUntilDestroy } from '@ngx-performance-ui/core'; import { filter } from 'rxjs/operators'; export class DropdownDirective { /** * @param {?} renderer * @param {?} elRef * @param {?} vcRef */ constructor(renderer, elRef, vcRef) { this.renderer = renderer; this.elRef = elRef; this.vcRef = vcRef; this.show = false; this.trigger = 'click'; } /** * @param {?} v * @return {?} */ set pDropdown(v) { this._pDropdown = v; if (this.dropdownContainer) this.remove(); this.view(); } /** * @return {?} */ get pDropdown() { return this._pDropdown; } /** * @private * @return {?} */ subscribeToMouse() { (this.trigger === 'mousemove' ? this.mousemove$ : this.click$) .pipe(takeUntilDestroy(this), filter((/** * @param {?} event * @return {?} */ event => !!event))) .subscribe((/** * @param {?} event * @return {?} */ event => { if (this.elRef.nativeElement.contains(event.target)) { if (this.show) { this.hide(); } else { // this.renderer.removeClass(this.dropdownContainer, 'collapse-top'); this.renderer.removeClass(this.dropdownContainer, 'd-none'); this.show = true; } } else if (!this.elRef.nativeElement.contains(event.target) && !this.dropdownContainer.contains((/** @type {?} */ (event.target)))) { this.hide(); } })); } /** * @return {?} */ ngOnInit() { this.view(); this.subscribeToMouse(); } /** * @return {?} */ ngOnDestroy() { } /** * @return {?} */ view() { /** @type {?} */ const element = this.elRef.nativeElement; /** @type {?} */ const elWidth = element.offsetWidth; this.container = this.renderer.createElement('div'); this.renderer.setStyle(this.container, 'position', 'relative'); this.renderer.addClass(this.container, 'd-inline-block'); /** @type {?} */ const parent = this.renderer.parentNode(element); this.renderer.appendChild(this.container, element); this.dropdownContainer = this.renderer.createElement('div'); if (!this.show) this.renderer.addClass(this.dropdownContainer, 'd-none'); this.renderer.addClass(this.dropdownContainer, 'card'); this.renderer.setStyle(this.dropdownContainer, 'position', 'absolute'); this.renderer.setStyle(this.dropdownContainer, 'min-width', `${elWidth}px`); this.renderer.setStyle(this.dropdownContainer, 'padding', `1.25rem`); this.renderer.setStyle(this.dropdownContainer, 'z-index', `1000`); /** @type {?} */ const dropdownContentNode = createProjectableNode.call(this, this.pDropdown); dropdownContentNode.forEach((/** * @param {?} node * @return {?} */ node => { this.renderer.appendChild(this.dropdownContainer, node); })); this.renderer.appendChild(this.container, this.dropdownContainer); this.renderer.appendChild(parent, this.container); // this.renderer.addClass(this.dropdownContainer, 'expand-top'); } /** * @return {?} */ hide() { // this.renderer.addClass(this.dropdownContainer, 'collapse-top'); setTimeout((/** * @return {?} */ () => { this.renderer.addClass(this.dropdownContainer, 'd-none'); }), 270); this.show = false; } /** * @return {?} */ remove() { this.dropdownContainer.remove(); } } DropdownDirective.decorators = [ { type: Directive, args: [{ selector: '[pDropdown]', exportAs: 'pDropdown', },] } ]; /** @nocollapse */ DropdownDirective.ctorParameters = () => [ { type: Renderer2 }, { type: ElementRef }, { type: ViewContainerRef } ]; DropdownDirective.propDecorators = { pDropdown: [{ type: Input }], show: [{ type: Input, args: ['pDropdownShowInitialize',] }], trigger: [{ type: Input, args: ['pDropdownTrigger',] }] }; tslib_1.__decorate([ Select(EventListenerState.getOne('mousemove')), tslib_1.__metadata("design:type", Observable) ], DropdownDirective.prototype, "mousemove$", void 0); tslib_1.__decorate([ Select(EventListenerState.getOne('click')), tslib_1.__metadata("design:type", Observable) ], DropdownDirective.prototype, "click$", void 0); if (false) { /** * @type {?} * @private */ DropdownDirective.prototype._pDropdown; /** @type {?} */ DropdownDirective.prototype.show; /** @type {?} */ DropdownDirective.prototype.trigger; /** @type {?} */ DropdownDirective.prototype.mousemove$; /** @type {?} */ DropdownDirective.prototype.click$; /** @type {?} */ DropdownDirective.prototype.container; /** @type {?} */ DropdownDirective.prototype.dropdownContainer; /** * @type {?} * @private */ DropdownDirective.prototype.renderer; /** * @type {?} * @private */ DropdownDirective.prototype.elRef; /** * @type {?} * @private */ DropdownDirective.prototype.vcRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wZXJmb3JtYW5jZS11aS91aS8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2Ryb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXhDLE1BQU0sT0FBTyxpQkFBaUI7Ozs7OztJQTZCNUIsWUFBb0IsUUFBbUIsRUFBVSxLQUFpQixFQUFVLEtBQXVCO1FBQS9FLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFkbkcsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUd0QixZQUFPLEdBQTBCLE9BQU8sQ0FBQztJQVc2RCxDQUFDOzs7OztJQTFCdkcsSUFDSSxTQUFTLENBQUMsQ0FBd0M7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFcEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7Ozs7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7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SyxTQUFDLHlCQUF5QjtzQkFHL0IsS0FBSyxTQUFDLGtCQUFrQjs7QUFJekI7SUFEQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3NDQUNuQyxVQUFVO3FEQUFhO0FBR25DO0lBREMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztzQ0FDbkMsVUFBVTtpREFBYTs7Ozs7O0lBdkIvQix1Q0FBMEQ7O0lBYTFELGlDQUNzQjs7SUFFdEIsb0NBQ3lDOztJQUV6Qyx1Q0FDbUM7O0lBRW5DLG1DQUMrQjs7SUFFL0Isc0NBQXVCOztJQUN2Qiw4Q0FBK0I7Ozs7O0lBRW5CLHFDQUEyQjs7Ozs7SUFBRSxrQ0FBeUI7Ozs7O0lBQUUsa0NBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBWaWV3Q29udGFpbmVyUmVmLCBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlUHJvamVjdGFibGVOb2RlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRXZlbnRMaXN0ZW5lclN0YXRlLCB0YWtlVW50aWxEZXN0cm95IH0gZnJvbSAnQG5neC1wZXJmb3JtYW5jZS11aS9jb3JlJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3BEcm9wZG93bl0nLFxuICBleHBvcnRBczogJ3BEcm9wZG93bicsXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBfcERyb3Bkb3duOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwRHJvcGRvd24odjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55Pikge1xuICAgIHRoaXMuX3BEcm9wZG93biA9IHY7XG5cbiAgICBpZiAodGhpcy5kcm9wZG93bkNvbnRhaW5lcikgdGhpcy5yZW1vdmUoKTtcbiAgICB0aGlzLnZpZXcoKTtcbiAgfVxuICBnZXQgcERyb3Bkb3duKCkge1xuICAgIHJldHVybiB0aGlzLl9wRHJvcGRvd247XG4gIH1cblxuICBASW5wdXQoJ3BEcm9wZG93blNob3dJbml0aWFsaXplJylcbiAgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgncERyb3Bkb3duVHJpZ2dlcicpXG4gIHRyaWdnZXI6ICdtb3VzZW1vdmUnIHwgJ2NsaWNrJyA9ICdjbGljayc7XG5cbiAgQFNlbGVjdChFdmVudExpc3RlbmVyU3RhdGUuZ2V0T25lKCdtb3VzZW1vdmUnKSlcbiAgbW91c2Vtb3ZlJDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcblxuICBAU2VsZWN0KEV2ZW50TGlzdGVuZXJTdGF0ZS5nZXRPbmUoJ2NsaWNrJykpXG4gIGNsaWNrJDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcblxuICBjb250YWluZXI6IEhUTUxFbGVtZW50O1xuICBkcm9wZG93bkNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuICBwcml2YXRlIHN1YnNjcmliZVRvTW91c2UoKSB7XG4gICAgKHRoaXMudHJpZ2dlciA9PT0gJ21vdXNlbW92ZScgPyB0aGlzLm1vdXNlbW92ZSQgOiB0aGlzLmNsaWNrJClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95KHRoaXMpLFxuICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gISFldmVudCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvdykge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kcm9wZG93bkNvbnRhaW5lciwgJ2NvbGxhcHNlLXRvcCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRyb3Bkb3duQ29udGFpbmVyLCAnZC1ub25lJyk7XG4gICAgICAgICAgICB0aGlzLnNob3cgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAhdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAhdGhpcy5kcm9wZG93bkNvbnRhaW5lci5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3KCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb01vdXNlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgdmlldygpIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBlbFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29udGFpbmVyLCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuY29udGFpbmVyLCAnZC1pbmxpbmUtYmxvY2snKTtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lciwgZWxlbWVudCk7XG5cbiAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGlmICghdGhpcy5zaG93KSB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZHJvcGRvd25Db250YWluZXIsICdkLW5vbmUnKTtcblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5kcm9wZG93bkNvbnRhaW5lciwgJ2NhcmQnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJvcGRvd25Db250YWluZXIsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcm9wZG93bkNvbnRhaW5lciwgJ21pbi13aWR0aCcsIGAke2VsV2lkdGh9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJvcGRvd25Db250YWluZXIsICdwYWRkaW5nJywgYDEuMjVyZW1gKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJvcGRvd25Db250YWluZXIsICd6LWluZGV4JywgYDEwMDBgKTtcblxuICAgIGNvbnN0IGRyb3Bkb3duQ29udGVudE5vZGUgPSBjcmVhdGVQcm9qZWN0YWJsZU5vZGUuY2FsbCh0aGlzLCB0aGlzLnBEcm9wZG93bik7XG4gICAgZHJvcGRvd25Db250ZW50Tm9kZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRyb3Bkb3duQ29udGFpbmVyLCBub2RlKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIsIHRoaXMuZHJvcGRvd25Db250YWluZXIpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmNvbnRhaW5lcik7XG5cbiAgICAvLyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZHJvcGRvd25Db250YWluZXIsICdleHBhbmQtdG9wJyk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIC8vIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5kcm9wZG93bkNvbnRhaW5lciwgJ2NvbGxhcHNlLXRvcCcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRyb3Bkb3duQ29udGFpbmVyLCAnZC1ub25lJyk7XG4gICAgfSwgMjcwKTtcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyLnJlbW92ZSgpO1xuICB9XG59XG4iXX0=