@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
221 lines • 17.4 kB
JavaScript
/**
* @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=