ngx-slice-kit
Version:
[](https://badge.fury.io/js/ngx-slice-kit)
72 lines • 8.71 kB
JavaScript
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==