UNPKG

@ngx-performance-ui/ui

Version:
221 lines 17.4 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'; var DropdownDirective = /** @class */ (function () { function DropdownDirective(renderer, elRef, vcRef) { this.renderer = renderer; this.elRef = elRef; this.vcRef = vcRef; this.show = false; this.trigger = 'click'; } Object.defineProperty(DropdownDirective.prototype, "pDropdown", { get: /** * @return {?} */ function () { return this._pDropdown; }, set: /** * @param {?} v * @return {?} */ function (v) { this._pDropdown = v; if (this.dropdownContainer) this.remove(); this.view(); }, enumerable: true, configurable: true }); /** * @private * @return {?} */ DropdownDirective.prototype.subscribeToMouse = /** * @private * @return {?} */ function () { var _this = this; (this.trigger === 'mousemove' ? this.mousemove$ : this.click$) .pipe(takeUntilDestroy(this), filter((/** * @param {?} event * @return {?} */ function (event) { return !!event; }))) .subscribe((/** * @param {?} event * @return {?} */ function (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 {?} */ DropdownDirective.prototype.ngOnInit = /** * @return {?} */ function () { this.view(); this.subscribeToMouse(); }; /** * @return {?} */ DropdownDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { }; /** * @return {?} */ DropdownDirective.prototype.view = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var element = this.elRef.nativeElement; /** @type {?} */ var 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 {?} */ var 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 {?} */ var dropdownContentNode = createProjectableNode.call(this, this.pDropdown); dropdownContentNode.forEach((/** * @param {?} node * @return {?} */ function (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 {?} */ DropdownDirective.prototype.hide = /** * @return {?} */ function () { var _this = this; // this.renderer.addClass(this.dropdownContainer, 'collapse-top'); setTimeout((/** * @return {?} */ function () { _this.renderer.addClass(_this.dropdownContainer, 'd-none'); }), 270); this.show = false; }; /** * @return {?} */ DropdownDirective.prototype.remove = /** * @return {?} */ function () { this.dropdownContainer.remove(); }; DropdownDirective.decorators = [ { type: Directive, args: [{ selector: '[pDropdown]', exportAs: 'pDropdown', },] } ]; /** @nocollapse */ DropdownDirective.ctorParameters = function () { return [ { 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); return DropdownDirective; }()); export { DropdownDirective }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wZXJmb3JtYW5jZS11aS91aS8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2Ryb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDO0lBaUNFLDJCQUFvQixRQUFtQixFQUFVLEtBQWlCLEVBQVUsS0FBdUI7UUFBL0UsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQWRuRyxTQUFJLEdBQVksS0FBSyxDQUFDO1FBR3RCLFlBQU8sR0FBMEIsT0FBTyxDQUFDO0lBVzZELENBQUM7SUExQnZHLHNCQUNJLHdDQUFTOzs7O1FBTWI7WUFDRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQzs7Ozs7UUFURCxVQUNjLENBQXdDO1lBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBRXBCLElBQUksSUFBSSxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQzs7O09BQUE7Ozs7O0lB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c0MsU0FBUztnQkFBNUIsVUFBVTtnQkFBb0IsZ0JBQWdCOzs7NEJBYy9ELEtBQUs7dUJBV0wsS0FBSyxTQUFDLHlCQUF5QjswQkFHL0IsS0FBSyxTQUFDLGtCQUFrQjs7SUFJekI7UUFEQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzBDQUNuQyxVQUFVO3lEQUFhO0lBR25DO1FBREMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzswQ0FDbkMsVUFBVTtxREFBYTtJQStFakMsd0JBQUM7Q0FBQSxBQTNHRCxJQTJHQztTQXZHWSxpQkFBaUI7Ozs7OztJQUM1Qix1Q0FBMEQ7O0lBYTFELGlDQUNzQjs7SUFFdEIsb0NBQ3lDOztJQUV6Qyx1Q0FDbUM7O0lBRW5DLG1DQUMrQjs7SUFFL0Isc0NBQXVCOztJQUN2Qiw4Q0FBK0I7Ozs7O0lBRW5CLHFDQUEyQjs7Ozs7SUFBRSxrQ0FBeUI7Ozs7O0lBQUUsa0NBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBWaWV3Q29udGFpbmVyUmVmLCBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlUHJvamVjdGFibGVOb2RlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRXZlbnRMaXN0ZW5lclN0YXRlLCB0YWtlVW50aWxEZXN0cm95IH0gZnJvbSAnQG5neC1wZXJmb3JtYW5jZS11aS9jb3JlJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3BEcm9wZG93bl0nLFxuICBleHBvcnRBczogJ3BEcm9wZG93bicsXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBfcERyb3Bkb3duOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwRHJvcGRvd24odjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55Pikge1xuICAgIHRoaXMuX3BEcm9wZG93biA9IHY7XG5cbiAgICBpZiAodGhpcy5kcm9wZG93bkNvbnRhaW5lcikgdGhpcy5yZW1vdmUoKTtcbiAgICB0aGlzLnZpZXcoKTtcbiAgfVxuICBnZXQgcERyb3Bkb3duKCkge1xuICAgIHJldHVybiB0aGlzLl9wRHJvcGRvd247XG4gIH1cblxuICBASW5wdXQoJ3BEcm9wZG93blNob3dJbml0aWFsaXplJylcbiAgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgncERyb3Bkb3duVHJpZ2dlcicpXG4gIHRyaWdnZXI6ICdtb3VzZW1vdmUnIHwgJ2NsaWNrJyA9ICdjbGljayc7XG5cbiAgQFNlbGVjdChFdmVudExpc3RlbmVyU3RhdGUuZ2V0T25lKCdtb3VzZW1vdmUnKSlcbiAgbW91c2Vtb3ZlJDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcblxuICBAU2VsZWN0KEV2ZW50TGlzdGVuZXJTdGF0ZS5nZXRPbmUoJ2NsaWNrJykpXG4gIGNsaWNrJDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcblxuICBjb250YWluZXI6IEhUTUxFbGVtZW50O1xuICBkcm9wZG93bkNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuICBwcml2YXRlIHN1YnNjcmliZVRvTW91c2UoKSB7XG4gICAgKHRoaXMudHJpZ2dlciA9PT0gJ21vdXNlbW92ZScgPyB0aGlzLm1vdXNlbW92ZSQgOiB0aGlzLmNsaWNrJClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95KHRoaXMpLFxuICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gISFldmVudCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvdykge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kcm9wZG93bkNvbnRhaW5lciwgJ2NvbGxhcHNlLXRvcCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRyb3Bkb3duQ29udGFpbmVyLCAnZC1ub25lJyk7XG4gICAgICAgICAgICB0aGlzLnNob3cgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAhdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAhdGhpcy5kcm9wZG93bkNvbnRhaW5lci5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3KCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb01vdXNlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgdmlldygpIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBlbFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29udGFpbmVyLCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuY29udGFpbmVyLCAnZC1pbmxpbmUtYmxvY2snKTtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lciwgZWxlbWVudCk7XG5cbiAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGlmICghdGhpcy5zaG93KSB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZHJvcGRvd25Db250YWluZXIsICdkLW5vbmUnKTtcblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5kcm9wZG93bkNvbnRhaW5lciwgJ2NhcmQnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJvcGRvd25Db250YWluZXIsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcm9wZG93bkNvbnRhaW5lciwgJ21pbi13aWR0aCcsIGAke2VsV2lkdGh9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJvcGRvd25Db250YWluZXIsICdwYWRkaW5nJywgYDEuMjVyZW1gKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJvcGRvd25Db250YWluZXIsICd6LWluZGV4JywgYDEwMDBgKTtcblxuICAgIGNvbnN0IGRyb3Bkb3duQ29udGVudE5vZGUgPSBjcmVhdGVQcm9qZWN0YWJsZU5vZGUuY2FsbCh0aGlzLCB0aGlzLnBEcm9wZG93bik7XG4gICAgZHJvcGRvd25Db250ZW50Tm9kZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRyb3Bkb3duQ29udGFpbmVyLCBub2RlKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIsIHRoaXMuZHJvcGRvd25Db250YWluZXIpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmNvbnRhaW5lcik7XG5cbiAgICAvLyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZHJvcGRvd25Db250YWluZXIsICdleHBhbmQtdG9wJyk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIC8vIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5kcm9wZG93bkNvbnRhaW5lciwgJ2NvbGxhcHNlLXRvcCcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRyb3Bkb3duQ29udGFpbmVyLCAnZC1ub25lJyk7XG4gICAgfSwgMjcwKTtcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyLnJlbW92ZSgpO1xuICB9XG59XG4iXX0=