ngx-slice-kit
Version:
[](https://badge.fury.io/js/ngx-slice-kit)
53 lines • 7.11 kB
JavaScript
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
import { Subject } from 'rxjs';
import { DOCUMENT, isPlatformServer } from '@angular/common';
import { DropdownComponent } from './dropdown.component';
import * as i0 from "@angular/core";
export class DropdownService {
constructor(document, platformId, injector, appRef, cfResolver) {
this.document = document;
this.platformId = platformId;
this.injector = injector;
this.appRef = appRef;
this.cfResolver = cfResolver;
}
/**
* showOverlay runs overlay with specified component
* @param config
* contains dropdown options
*/
showDropdown(config) {
if (isPlatformServer(this.platformId)) {
return;
}
const dropdown = this.document.createElement('sdk-dropdown');
const factory = this.cfResolver.resolveComponentFactory(DropdownComponent);
const dropdownRef = factory.create(this.injector, [], dropdown);
dropdownRef.instance.config = config;
this.appRef.attachView(dropdownRef.hostView);
this.document.body.appendChild(dropdown);
const result = new Subject();
dropdownRef.instance.resultEvent.subscribe((res) => {
result.next(res);
result.complete();
this.document.body.removeChild(dropdown);
this.appRef.detachView(dropdownRef.hostView);
});
return result.asObservable();
}
}
DropdownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DropdownService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Injector }, { token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
DropdownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DropdownService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DropdownService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }, { type: i0.Injector }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LXNsaWNlLWtpdC9zcmMvbGliL2Ryb3Bkb3ducy9kcm9wZG93bi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEMsTUFBTSxFQUFFLFVBQVUsRUFBWSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBTXpELE1BQU0sT0FBTyxlQUFlO0lBRXhCLFlBQzhCLFFBQWEsRUFDVixVQUFlLEVBQ3BDLFFBQWtCLEVBQ2xCLE1BQXNCLEVBQ3RCLFVBQW9DO1FBSmxCLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDVixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBQ3BDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7SUFFaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsTUFBdUI7UUFDdkMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbkMsT0FBTztTQUNWO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFN0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFaEUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQzs7NEdBekNRLGVBQWUsa0JBR1osUUFBUSxhQUNSLFdBQVc7Z0hBSmQsZUFBZSxjQUZaLE1BQU07MkZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlRLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMgfSBmcm9tICcuL2Ryb3Bkb3duLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93blNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgY2ZSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNob3dPdmVybGF5IHJ1bnMgb3ZlcmxheSB3aXRoIHNwZWNpZmllZCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gY29uZmlnXG4gICAgICogY29udGFpbnMgZHJvcGRvd24gb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBzaG93RHJvcGRvd24oY29uZmlnOiBEcm9wZG93bk9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkcm9wZG93biA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2RrLWRyb3Bkb3duJyk7XG5cbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY2ZSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShEcm9wZG93bkNvbXBvbmVudCk7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duUmVmID0gZmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3RvciwgW10sIGRyb3Bkb3duKTtcblxuICAgICAgICBkcm9wZG93blJlZi5pbnN0YW5jZS5jb25maWcgPSBjb25maWc7XG5cbiAgICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhkcm9wZG93blJlZi5ob3N0Vmlldyk7XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRyb3Bkb3duKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICBkcm9wZG93blJlZi5pbnN0YW5jZS5yZXN1bHRFdmVudC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQubmV4dChyZXMpO1xuICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZHJvcGRvd24pO1xuICAgICAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhkcm9wZG93blJlZi5ob3N0Vmlldyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxufVxuIl19