@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
198 lines • 16.3 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';
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=