UNPKG

ngx-slice-kit

Version:

[![npm version](https://badge.fury.io/js/ngx-slice-kit.svg)](https://badge.fury.io/js/ngx-slice-kit)

72 lines 8.71 kB
import { Directive, EventEmitter, HostListener, Inject, Input, Output, PLATFORM_ID, } from '@angular/core'; import { isPlatformServer } from '@angular/common'; import * as i0 from "@angular/core"; import * as i1 from "../dropdown.service"; import * as i2 from "../options.service"; export class DropdownMenuTriggerDirective { constructor(platformId, dropdownService, el, optionsService) { this.platformId = platformId; this.dropdownService = dropdownService; this.el = el; this.optionsService = optionsService; // @Input() public config: DropdownOptions; this.resultEvent = new EventEmitter(); this.opened = new EventEmitter(); this.closed = new EventEmitter(); } open() { if (isPlatformServer(this.platformId)) { return; } if (this.isOpened) { return; } this.isOpened = true; this.opened.emit(); this.optionsService.options = this.options; const opts = { triggerRect: this.el.nativeElement.getBoundingClientRect(), fitWidth: this.fitWidth, multi: false }; this.dropdownService.showDropdown(opts).subscribe(res => { this.isOpened = false; this.closed.emit(); if (res) { this.resultEvent.emit(res); } }); } ngOnDestroy() { this.resultEvent.complete(); this.opened.complete(); this.closed.complete(); this.sub?.unsubscribe(); this.optionsService.options = null; } } DropdownMenuTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DropdownMenuTriggerDirective, deps: [{ token: PLATFORM_ID }, { token: i1.DropdownService }, { token: i0.ElementRef }, { token: i2.OptionsService }], target: i0.ɵɵFactoryTarget.Directive }); DropdownMenuTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: DropdownMenuTriggerDirective, selector: "[sdkDropdownMenuTrigger]", inputs: { options: "options", fitWidth: "fitWidth" }, outputs: { resultEvent: "resultEvent", opened: "opened", closed: "closed" }, host: { listeners: { "click": "open()" } }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DropdownMenuTriggerDirective, decorators: [{ type: Directive, args: [{ selector: '[sdkDropdownMenuTrigger]' }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }, { type: i1.DropdownService }, { type: i0.ElementRef }, { type: i2.OptionsService }]; }, propDecorators: { options: [{ type: Input }], fitWidth: [{ type: Input }], resultEvent: [{ type: Output }], opened: [{ type: Output }], closed: [{ type: Output }], open: [{ type: HostListener, args: ['click'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LXNsaWNlLWtpdC9zcmMvbGliL2Ryb3Bkb3ducy9jb250ZXh0L2Ryb3Bkb3duLW1lbnUtdHJpZ2dlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFdBQVcsR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUtsSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQU1uRCxNQUFNLE9BQU8sNEJBQTRCO0lBYXJDLFlBQ2lDLFVBQWUsRUFDcEMsZUFBZ0MsRUFDaEMsRUFBYyxFQUNkLGNBQThCO1FBSFQsZUFBVSxHQUFWLFVBQVUsQ0FBSztRQUNwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWIxQywyQ0FBMkM7UUFFMUIsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBV3JFLENBQUM7SUFHTSxJQUFJO1FBQ1AsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbkMsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTNDLE1BQU0sSUFBSSxHQUFvQjtZQUMxQixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUU7WUFDMUQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRW5CLElBQUksR0FBRyxFQUFFO2dCQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzlCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7O3lIQXpEUSw0QkFBNEIsa0JBY3pCLFdBQVc7NkdBZGQsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBSHhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtpQkFDdkM7OzBCQWVRLE1BQU07MkJBQUMsV0FBVztnSUFaUCxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR1csV0FBVztzQkFBM0IsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLE1BQU07c0JBQXRCLE1BQU07Z0JBY0EsSUFBSTtzQkFEVixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUExBVEZPUk1fSUQsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcm9wZG93blNlcnZpY2UgfSBmcm9tICcuLi9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9ucyB9IGZyb20gJy4uL2Ryb3Bkb3duLm1vZGVsJztcbmltcG9ydCB7IE9wdGlvbk1vZGVsIH0gZnJvbSAnLi4vZHJvcGRvd24tb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uL29wdGlvbnMuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3Nka0Ryb3Bkb3duTWVudVRyaWdnZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bk1lbnVUcmlnZ2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zOiBPcHRpb25Nb2RlbFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaXRXaWR0aDogYm9vbGVhbjtcbiAgICAvLyBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBEcm9wZG93bk9wdGlvbnM7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlc3VsdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb3BlbmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgcHVibGljIHN1YjogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBpc09wZW5lZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICAgICAgcHJpdmF0ZSBkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBvcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHVibGljIG9wZW4oKTogdm9pZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc09wZW5lZCA9IHRydWU7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgICAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgICAgY29uc3Qgb3B0czogRHJvcGRvd25PcHRpb25zID0ge1xuICAgICAgICAgICAgdHJpZ2dlclJlY3Q6IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICAgIGZpdFdpZHRoOiB0aGlzLmZpdFdpZHRoLFxuICAgICAgICAgICAgbXVsdGk6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2Uuc2hvd0Ryb3Bkb3duKG9wdHMpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5lZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuXG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRFdmVudC5lbWl0KHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXN1bHRFdmVudC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLm9wZW5lZC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmNsb3NlZC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vcHRpb25zU2VydmljZS5vcHRpb25zID0gbnVsbDtcbiAgICB9XG5cbn1cbiJdfQ==