ng-devui
Version:
DevUI components based on Angular
87 lines • 14.5 kB
JavaScript
import { DOCUMENT } from '@angular/common';
import { ComponentFactoryResolver, Inject, Injectable, RendererFactory2 } from '@angular/core';
import { OverlayContainerRef } from 'ng-devui/overlay-container';
import { DevConfigService } from 'ng-devui/utils';
import { assign, isUndefined } from 'lodash-es';
import { ModalComponent } from './modal.component';
import * as i0 from "@angular/core";
import * as i1 from "ng-devui/overlay-container";
import * as i2 from "ng-devui/utils";
export class ModalService {
constructor(componentFactoryResolver, overlayContainerRef, rendererFactory, devConfigService, doc) {
this.componentFactoryResolver = componentFactoryResolver;
this.overlayContainerRef = overlayContainerRef;
this.rendererFactory = rendererFactory;
this.devConfigService = devConfigService;
this.doc = doc;
this.renderer = this.rendererFactory.createRenderer(null, null);
this.document = this.doc;
}
open({ id, component, injector, width, zIndex, backDropZIndex, data, handler, showAnimation,
/**
* @deprecated
*/
showAnimate, backdropCloseable, componentFactoryResolver, onClose, beforeHidden, placement = 'center', offsetX, offsetY, bodyScrollable, contentTemplate, escapable = true, cssClass }) {
const finalComponentFactoryResolver = componentFactoryResolver || this.componentFactoryResolver;
const modalRef = this.overlayContainerRef.createComponent(finalComponentFactoryResolver.resolveComponentFactory(ModalComponent), injector);
const componentConfig = this.devConfigService.getConfigForComponent('modal') || {};
const showAnimationApiConfig = this.devConfigService.getConfigForApi('showAnimation');
const bodyScrollableApiConfig = this.devConfigService.getConfigForApi('bodyScrollable');
showAnimation = showAnimation ?? showAnimate ?? componentConfig.showAnimation ?? showAnimationApiConfig;
bodyScrollable = bodyScrollable ?? componentConfig.bodyScrollable ?? bodyScrollableApiConfig ?? true;
assign(modalRef.instance, {
id,
width,
zIndex,
backDropZIndex,
showAnimation,
beforeHidden,
backdropCloseable: isUndefined(backdropCloseable) ? true : backdropCloseable,
placement,
offsetX,
offsetY,
bodyScrollable,
contentTemplate,
escapable,
cssClass
});
let modalContentInstance;
if (component) {
modalContentInstance = modalRef.instance.modalContainerHost.viewContainerRef
.createComponent(finalComponentFactoryResolver.resolveComponentFactory(component), 0, injector);
assign(modalContentInstance.instance, { data, handler });
}
modalRef.instance.onHidden = () => {
if (modalRef.instance.documentOverFlow) {
this.renderer.removeStyle(this.document.body, 'top');
this.renderer.removeStyle(this.document.body, 'left');
this.renderer.removeClass(this.document.body, 'devui-body-scrollblock');
this.renderer.removeClass(this.document.body, 'devui-body-overflow-hidden');
this.document.documentElement.scrollTop = modalRef.instance.scrollTop;
this.document.body.scrollTop = modalRef.instance.scrollTop;
this.document.documentElement.scrollLeft = modalRef.instance.scrollLeft;
this.document.body.scrollLeft = modalRef.instance.scrollLeft;
}
if (onClose) {
onClose();
}
setTimeout(() => {
modalRef.hostView.destroy();
});
};
modalRef.instance.show();
return {
modalInstance: modalRef.instance,
modalContentInstance: modalContentInstance ? modalContentInstance.instance : null
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.OverlayContainerRef }, { token: i0.RendererFactory2 }, { token: i2.DevConfigService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalService, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i1.OverlayContainerRef }, { type: i0.RendererFactory2 }, { type: i2.DevConfigService }, { type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL21vZGFsL21vZGFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsTUFBTSxFQUNOLFVBQVUsRUFDQyxnQkFBZ0IsRUFDNUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBSW5ELE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQW9CLHdCQUFrRCxFQUNsRCxtQkFBd0MsRUFBVSxlQUFpQyxFQUNuRixnQkFBa0MsRUFDaEIsR0FBUTtRQUgxQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBVSxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDbkYscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQ0gsRUFBRSxFQUNGLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBQ2QsSUFBSSxFQUNK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QUFDLFNBQVMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDL0QsQ0FBQztZQUNELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV6QixPQUFPO1lBQ0wsYUFBYSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQ2hDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDbEYsQ0FBQztJQUNKLENBQUM7K0dBbEdVLFlBQVksNkpBT0gsUUFBUTttSEFQakIsWUFBWTs7NEZBQVosWUFBWTtrQkFEeEIsVUFBVTs7MEJBUUksTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXJSZWYgfSBmcm9tICduZy1kZXZ1aS9vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBEZXZDb25maWdTZXJ2aWNlIH0gZnJvbSAnbmctZGV2dWkvdXRpbHMnO1xuaW1wb3J0IHsgYXNzaWduLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IElNb2RhbE9wdGlvbnMgfSBmcm9tICcuL21vZGFsLnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgZG9jdW1lbnQ6IERvY3VtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgb3ZlcmxheUNvbnRhaW5lclJlZjogT3ZlcmxheUNvbnRhaW5lclJlZiwgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXG4gICAgICAgICAgICAgIHByaXZhdGUgZGV2Q29uZmlnU2VydmljZTogRGV2Q29uZmlnU2VydmljZSxcbiAgICAgICAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IGFueSkge1xuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcbiAgICB0aGlzLmRvY3VtZW50ID0gdGhpcy5kb2M7XG4gIH1cblxuICBvcGVuKHtcbiAgICBpZCxcbiAgICBjb21wb25lbnQsXG4gICAgaW5qZWN0b3IsXG4gICAgd2lkdGgsXG4gICAgekluZGV4LFxuICAgIGJhY2tEcm9wWkluZGV4LFxuICAgIGRhdGEsXG4gICAgaGFuZGxlcixcbiAgICBzaG93QW5pbWF0aW9uLFxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgc2hvd0FuaW1hdGUsXG4gICAgYmFja2Ryb3BDbG9zZWFibGUsXG4gICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIG9uQ2xvc2UsXG4gICAgYmVmb3JlSGlkZGVuLFxuICAgIHBsYWNlbWVudCA9ICdjZW50ZXInLFxuICAgIG9mZnNldFgsXG4gICAgb2Zmc2V0WSxcbiAgICBib2R5U2Nyb2xsYWJsZSxcbiAgICBjb250ZW50VGVtcGxhdGUsXG4gICAgZXNjYXBhYmxlID0gdHJ1ZSxcbiAgICBjc3NDbGFzc1xuICB9OiBJTW9kYWxPcHRpb25zKSB7XG4gICAgY29uc3QgZmluYWxDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfHwgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm92ZXJsYXlDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgZmluYWxDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTW9kYWxDb21wb25lbnQpLFxuICAgICAgaW5qZWN0b3JcbiAgICApO1xuICAgIGNvbnN0IGNvbXBvbmVudENvbmZpZyA9IHRoaXMuZGV2Q29uZmlnU2VydmljZS5nZXRDb25maWdGb3JDb21wb25lbnQoJ21vZGFsJykgfHwge307XG4gICAgY29uc3Qgc2hvd0FuaW1hdGlvbkFwaUNvbmZpZyA9IHRoaXMuZGV2Q29uZmlnU2VydmljZS5nZXRDb25maWdGb3JBcGkoJ3Nob3dBbmltYXRpb24nKTtcbiAgICBjb25zdCBib2R5U2Nyb2xsYWJsZUFwaUNvbmZpZyA9IHRoaXMuZGV2Q29uZmlnU2VydmljZS5nZXRDb25maWdGb3JBcGkoJ2JvZHlTY3JvbGxhYmxlJyk7XG4gICAgc2hvd0FuaW1hdGlvbiA9IHNob3dBbmltYXRpb24gPz8gc2hvd0FuaW1hdGUgPz8gY29tcG9uZW50Q29uZmlnLnNob3dBbmltYXRpb24gPz8gc2hvd0FuaW1hdGlvbkFwaUNvbmZpZztcbiAgICBib2R5U2Nyb2xsYWJsZSA9IGJvZHlTY3JvbGxhYmxlID8/IGNvbXBvbmVudENvbmZpZy5ib2R5U2Nyb2xsYWJsZSA/PyBib2R5U2Nyb2xsYWJsZUFwaUNvbmZpZyA/PyB0cnVlO1xuXG4gICAgYXNzaWduKG1vZGFsUmVmLmluc3RhbmNlLCB7XG4gICAgICBpZCxcbiAgICAgIHdpZHRoLFxuICAgICAgekluZGV4LFxuICAgICAgYmFja0Ryb3BaSW5kZXgsXG4gICAgICBzaG93QW5pbWF0aW9uLFxuICAgICAgYmVmb3JlSGlkZGVuLFxuICAgICAgYmFja2Ryb3BDbG9zZWFibGU6IGlzVW5kZWZpbmVkKGJhY2tkcm9wQ2xvc2VhYmxlKSA/IHRydWUgOiBiYWNrZHJvcENsb3NlYWJsZSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIG9mZnNldFgsXG4gICAgICBvZmZzZXRZLFxuICAgICAgYm9keVNjcm9sbGFibGUsXG4gICAgICBjb250ZW50VGVtcGxhdGUsXG4gICAgICBlc2NhcGFibGUsXG4gICAgICBjc3NDbGFzc1xuICAgIH0pO1xuXG4gICAgbGV0IG1vZGFsQ29udGVudEluc3RhbmNlO1xuICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgIG1vZGFsQ29udGVudEluc3RhbmNlID0gbW9kYWxSZWYuaW5zdGFuY2UubW9kYWxDb250YWluZXJIb3N0LnZpZXdDb250YWluZXJSZWZcbiAgICAgICAgLmNyZWF0ZUNvbXBvbmVudChmaW5hbENvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpLCAwLCBpbmplY3Rvcik7XG4gICAgICBhc3NpZ24obW9kYWxDb250ZW50SW5zdGFuY2UuaW5zdGFuY2UsIHsgZGF0YSwgaGFuZGxlciB9KTtcbiAgICB9XG5cbiAgICBtb2RhbFJlZi5pbnN0YW5jZS5vbkhpZGRlbiA9ICgpID0+IHtcbiAgICAgIGlmIChtb2RhbFJlZi5pbnN0YW5jZS5kb2N1bWVudE92ZXJGbG93KSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCAndG9wJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCAnbGVmdCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ2RldnVpLWJvZHktc2Nyb2xsYmxvY2snKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50LmJvZHksICdkZXZ1aS1ib2R5LW92ZXJmbG93LWhpZGRlbicpO1xuICAgICAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSBtb2RhbFJlZi5pbnN0YW5jZS5zY3JvbGxUb3A7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSBtb2RhbFJlZi5pbnN0YW5jZS5zY3JvbGxUb3A7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgPSBtb2RhbFJlZi5pbnN0YW5jZS5zY3JvbGxMZWZ0O1xuICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCA9IG1vZGFsUmVmLmluc3RhbmNlLnNjcm9sbExlZnQ7XG4gICAgICB9XG4gICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbW9kYWxSZWYuaG9zdFZpZXcuZGVzdHJveSgpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIG1vZGFsUmVmLmluc3RhbmNlLnNob3coKTtcblxuICAgIHJldHVybiB7XG4gICAgICBtb2RhbEluc3RhbmNlOiBtb2RhbFJlZi5pbnN0YW5jZSxcbiAgICAgIG1vZGFsQ29udGVudEluc3RhbmNlOiBtb2RhbENvbnRlbnRJbnN0YW5jZSA/IG1vZGFsQ29udGVudEluc3RhbmNlLmluc3RhbmNlIDogbnVsbFxuICAgIH07XG4gIH1cbn1cbiJdfQ==