UNPKG

@period-year-norway/ngx-bootstrap

Version:
1 lines 26.5 kB
{"version":3,"file":"period-year-norway-ngx-bootstrap-component-loader.mjs","sources":["../../../../src/component-loader/bs-component-ref.class.ts","../../../../src/component-loader/content-ref.class.ts","../../../../src/component-loader/component-loader.class.ts","../../../../src/component-loader/component-loader.factory.ts","../../../../src/component-loader/period-year-norway-ngx-bootstrap-component-loader.ts"],"sourcesContent":["import { TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\nexport class BsComponentRef<T> {\r\n templateRef?: TemplateRef<T>;\r\n viewContainer?: ViewContainerRef;\r\n}\r\n","/**\r\n * @copyright Valor Software\r\n * @copyright Angular ng-bootstrap team\r\n */\r\n\r\nimport { ComponentRef, ViewRef } from '@angular/core';\r\n\r\nexport class ContentRef {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n nodes: any[];\r\n viewRef?: ViewRef;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n componentRef?: ComponentRef<any>;\r\n\r\n constructor(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n nodes: any[],\r\n viewRef?: ViewRef,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n componentRef?: ComponentRef<any>\r\n ) {\r\n this.nodes = nodes;\r\n this.viewRef = viewRef;\r\n this.componentRef = componentRef;\r\n }\r\n}\r\n","// todo: add delay support\r\n// todo: merge events onShow, onShown, etc...\r\n// todo: add global positioning configuration?\r\nimport {\r\n ApplicationRef,\r\n ComponentFactory,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n EventEmitter,\r\n Injector,\r\n NgZone,\r\n Renderer2,\r\n StaticProvider,\r\n TemplateRef,\r\n Type,\r\n ViewContainerRef\r\n} from '@angular/core';\r\n\r\nimport { PositioningOptions, PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\n\r\nimport { listenToTriggersV2, registerEscClick, registerOutsideClick } from '@period-year-norway/ngx-bootstrap/utils';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ContentRef } from './content-ref.class';\r\nimport { ListenOptions } from './listen-options.model';\r\n\r\nexport class ComponentLoader<T extends object> {\r\n onBeforeShow = new EventEmitter();\r\n onShown = new EventEmitter();\r\n onBeforeHide = new EventEmitter();\r\n onHidden = new EventEmitter();\r\n\r\n instance?: T;\r\n _componentRef?: ComponentRef<T>;\r\n _inlineViewRef?: EmbeddedViewRef<T>;\r\n\r\n private _providers: StaticProvider[] = [];\r\n private _componentFactory?: ComponentFactory<T>;\r\n private _zoneSubscription?: Subscription;\r\n private _contentRef?: ContentRef;\r\n private _innerComponent?: ComponentRef<T>;\r\n\r\n private _unregisterListenersFn?: () => void;\r\n private _isHiding = false;\r\n /**\r\n * Placement of a component. Accepts: \"top\", \"bottom\", \"left\", \"right\"\r\n */\r\n private attachment?: string;\r\n /**\r\n * A selector specifying the element the popover should be appended to.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private container: string | ElementRef | any;\r\n /**\r\n * A selector used if container element was not found\r\n */\r\n private containerDefaultSelector = 'body';\r\n /**\r\n * Specifies events that should trigger. Supports a space separated list of\r\n * event names.\r\n */\r\n private triggers?: string;\r\n private _listenOpts: ListenOptions = {};\r\n private _globalListener = Function.prototype;\r\n\r\n /**\r\n * Do not use this directly, it should be instanced via\r\n * `ComponentLoadFactory.attach`\r\n * @internal\r\n */\r\n public constructor(\r\n private _viewContainerRef: ViewContainerRef | undefined,\r\n private _renderer: Renderer2 | undefined,\r\n private _elementRef: ElementRef | undefined,\r\n private _injector: Injector,\r\n private _componentFactoryResolver: ComponentFactoryResolver,\r\n private _ngZone: NgZone,\r\n private _applicationRef: ApplicationRef,\r\n private _posService: PositioningService,\r\n private _document: Document,\r\n ) {\r\n }\r\n\r\n get isShown(): boolean {\r\n if (this._isHiding) {\r\n return false;\r\n }\r\n\r\n return !!this._componentRef;\r\n }\r\n\r\n attach(compType: Type<T>): ComponentLoader<T> {\r\n this._componentFactory = this._componentFactoryResolver\r\n .resolveComponentFactory<T>(compType);\r\n\r\n return this;\r\n }\r\n\r\n // todo: add behaviour: to target element, `body`, custom element\r\n to(container?: string | ElementRef): ComponentLoader<T> {\r\n this.container = container || this.container;\r\n\r\n return this;\r\n }\r\n\r\n position(opts?: PositioningOptions): ComponentLoader<T> {\r\n if (!opts) {\r\n return this;\r\n }\r\n\r\n this.attachment = opts.attachment || this.attachment;\r\n this._elementRef = (opts.target as ElementRef) || this._elementRef;\r\n\r\n return this;\r\n }\r\n\r\n provide(provider: StaticProvider): ComponentLoader<T> {\r\n this._providers.push(provider);\r\n\r\n return this;\r\n }\r\n\r\n // todo: appendChild to element or document.querySelector(this.container)\r\n\r\n show(opts: {\r\n content?: string | TemplateRef<unknown>;\r\n context?: unknown;\r\n initialState?: unknown;\r\n [key: string]: unknown;\r\n id?: number | string;\r\n } = {}\r\n ): ComponentRef<T> | undefined {\r\n\r\n this._subscribePositioning();\r\n this._innerComponent = void 0;\r\n\r\n if (!this._componentRef) {\r\n this.onBeforeShow.emit();\r\n this._contentRef = this._getContentRef(opts.content, opts.context, opts.initialState);\r\n\r\n const injector = Injector.create({\r\n providers: this._providers,\r\n parent: this._injector\r\n });\r\n\r\n if (!this._componentFactory) {\r\n return;\r\n }\r\n\r\n this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);\r\n\r\n this._applicationRef.attachView(this._componentRef.hostView);\r\n // this._componentRef = this._viewContainerRef\r\n // .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);\r\n this.instance = this._componentRef.instance;\r\n\r\n Object.assign(this._componentRef.instance, opts);\r\n\r\n if (this.container instanceof ElementRef) {\r\n this.container.nativeElement.appendChild(\r\n this._componentRef.location.nativeElement\r\n );\r\n }\r\n\r\n if (typeof this.container === 'string' && typeof this._document !== 'undefined') {\r\n const selectedElement = this._document.querySelector(this.container) ||\r\n this._document.querySelector(this.containerDefaultSelector);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n selectedElement.appendChild(this._componentRef.location.nativeElement);\r\n }\r\n\r\n if (\r\n !this.container &&\r\n this._elementRef &&\r\n this._elementRef.nativeElement.parentElement\r\n ) {\r\n this._elementRef.nativeElement.parentElement.appendChild(\r\n this._componentRef.location.nativeElement\r\n );\r\n }\r\n\r\n // we need to manually invoke change detection since events registered\r\n // via\r\n // Renderer::listen() are not picked up by change detection with the\r\n // OnPush strategy\r\n if (this._contentRef.componentRef) {\r\n this._innerComponent = this._contentRef.componentRef.instance;\r\n this._contentRef.componentRef.changeDetectorRef.markForCheck();\r\n this._contentRef.componentRef.changeDetectorRef.detectChanges();\r\n }\r\n this._componentRef.changeDetectorRef.markForCheck();\r\n this._componentRef.changeDetectorRef.detectChanges();\r\n\r\n\r\n this.onShown.emit(opts.id ? { id: opts.id } : this._componentRef.instance);\r\n }\r\n\r\n this._registerOutsideClick();\r\n\r\n return this._componentRef;\r\n }\r\n\r\n hide(id?: number | string): ComponentLoader<T> {\r\n if (!this._componentRef) {\r\n return this;\r\n }\r\n\r\n this._posService.deletePositionElement(this._componentRef.location);\r\n\r\n this.onBeforeHide.emit(this._componentRef.instance);\r\n\r\n const componentEl = this._componentRef.location.nativeElement;\r\n componentEl.parentNode?.removeChild(componentEl);\r\n\r\n this._contentRef?.componentRef?.destroy();\r\n\r\n if (this._viewContainerRef && this._contentRef?.viewRef) {\r\n this._viewContainerRef.remove(\r\n this._viewContainerRef.indexOf(this._contentRef.viewRef)\r\n );\r\n }\r\n this._contentRef?.viewRef?.destroy();\r\n\r\n this._contentRef = void 0;\r\n this._componentRef = void 0;\r\n this._removeGlobalListener();\r\n\r\n this.onHidden.emit(id ? { id } : null);\r\n\r\n return this;\r\n }\r\n\r\n toggle(): void {\r\n if (this.isShown) {\r\n this.hide();\r\n\r\n return;\r\n }\r\n\r\n this.show();\r\n }\r\n\r\n dispose(): void {\r\n if (this.isShown) {\r\n this.hide();\r\n }\r\n\r\n this._unsubscribePositioning();\r\n\r\n if (this._unregisterListenersFn) {\r\n this._unregisterListenersFn();\r\n }\r\n }\r\n\r\n listen(listenOpts: ListenOptions): ComponentLoader<T> {\r\n this.triggers = listenOpts.triggers || this.triggers;\r\n this._listenOpts.outsideClick = listenOpts.outsideClick;\r\n this._listenOpts.outsideEsc = listenOpts.outsideEsc;\r\n listenOpts.target = listenOpts.target || this._elementRef?.nativeElement;\r\n\r\n const hide = (this._listenOpts.hide = () =>\r\n listenOpts.hide ? listenOpts.hide() : void this.hide());\r\n const show = (this._listenOpts.show = (registerHide) => {\r\n listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);\r\n registerHide();\r\n });\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const toggle = (registerHide: any) => {\r\n this.isShown ? hide() : show(registerHide);\r\n };\r\n\r\n if (this._renderer) {\r\n this._unregisterListenersFn = listenToTriggersV2(this._renderer, {\r\n target: listenOpts.target,\r\n triggers: listenOpts.triggers,\r\n show,\r\n hide,\r\n toggle\r\n });\r\n }\r\n\r\n return this;\r\n }\r\n\r\n _removeGlobalListener() {\r\n if (this._globalListener) {\r\n this._globalListener();\r\n this._globalListener = Function.prototype;\r\n }\r\n }\r\n\r\n attachInline(\r\n vRef: ViewContainerRef | undefined,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n template: TemplateRef<any> | undefined\r\n ): ComponentLoader<T> {\r\n if (vRef && template) {\r\n this._inlineViewRef = vRef.createEmbeddedView(template);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n _registerOutsideClick(): void {\r\n if (!this._componentRef || !this._componentRef.location) {\r\n return;\r\n }\r\n // why: should run after first event bubble\r\n if (this._listenOpts.outsideClick) {\r\n const target = this._componentRef.location.nativeElement;\r\n setTimeout(() => {\r\n if (this._renderer && this._elementRef) {\r\n this._globalListener = registerOutsideClick(this._renderer, {\r\n targets: [target, this._elementRef.nativeElement],\r\n outsideClick: this._listenOpts.outsideClick,\r\n hide: () => this._listenOpts.hide && this._listenOpts.hide()\r\n });\r\n }\r\n });\r\n }\r\n if (this._listenOpts.outsideEsc && this._renderer && this._elementRef) {\r\n const target = this._componentRef.location.nativeElement;\r\n this._globalListener = registerEscClick(this._renderer, {\r\n targets: [target, this._elementRef.nativeElement],\r\n outsideEsc: this._listenOpts.outsideEsc,\r\n hide: () => this._listenOpts.hide && this._listenOpts.hide()\r\n });\r\n }\r\n }\r\n\r\n getInnerComponent(): ComponentRef<T> | undefined {\r\n return this._innerComponent;\r\n }\r\n\r\n private _subscribePositioning(): void {\r\n if (this._zoneSubscription || !this.attachment) {\r\n return;\r\n }\r\n\r\n this.onShown.subscribe(() => {\r\n this._posService.position({\r\n element: this._componentRef?.location,\r\n target: this._elementRef,\r\n attachment: this.attachment,\r\n appendToBody: this.container === 'body'\r\n });\r\n });\r\n\r\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\r\n if (!this._componentRef) {\r\n return;\r\n }\r\n\r\n this._posService.calcPosition();\r\n });\r\n }\r\n\r\n private _unsubscribePositioning(): void {\r\n if (!this._zoneSubscription) {\r\n return;\r\n }\r\n\r\n this._zoneSubscription.unsubscribe();\r\n this._zoneSubscription = void 0;\r\n }\r\n\r\n private _getContentRef(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n content: string | TemplateRef<any> | any,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n context?: any,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n initialState?: any\r\n ): ContentRef {\r\n if (!content) {\r\n return new ContentRef([]);\r\n }\r\n\r\n if (content instanceof TemplateRef) {\r\n if (this._viewContainerRef) {\r\n const _viewRef = this._viewContainerRef\r\n .createEmbeddedView<TemplateRef<T>>(content, context);\r\n _viewRef.markForCheck();\r\n\r\n return new ContentRef([_viewRef.rootNodes], _viewRef);\r\n }\r\n const viewRef = content.createEmbeddedView({});\r\n this._applicationRef.attachView(viewRef);\r\n\r\n return new ContentRef([viewRef.rootNodes], viewRef);\r\n }\r\n\r\n if (typeof content === 'function') {\r\n const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(\r\n content\r\n );\r\n\r\n const modalContentInjector = Injector.create({\r\n providers: this._providers,\r\n parent: this._injector\r\n });\r\n\r\n const componentRef = contentCmptFactory.create(modalContentInjector);\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n Object.assign(componentRef.instance, initialState);\r\n this._applicationRef.attachView(componentRef.hostView);\r\n\r\n return new ContentRef(\r\n [[componentRef.location.nativeElement]],\r\n componentRef.hostView,\r\n componentRef\r\n );\r\n }\r\n\r\n const nodes = this._renderer\r\n ? [this._renderer.createText(`${content}`)]\r\n : [];\r\n return new ContentRef([nodes]);\r\n }\r\n}\r\n","import {\r\n ApplicationRef, ComponentFactoryResolver, ElementRef, Inject, Injectable, Injector,\r\n NgZone, Renderer2, ViewContainerRef\r\n} from '@angular/core';\r\nimport { ComponentLoader } from './component-loader.class';\r\nimport { PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class ComponentLoaderFactory {\r\n constructor(private _componentFactoryResolver: ComponentFactoryResolver,\r\n private _ngZone: NgZone,\r\n private _injector: Injector,\r\n private _posService: PositioningService,\r\n private _applicationRef: ApplicationRef,\r\n @Inject(DOCUMENT) private _document: Document\r\n ) {}\r\n\r\n /**\r\n *\r\n * @param _elementRef\r\n * @param _viewContainerRef\r\n * @param _renderer\r\n */\r\n createLoader<T extends object>(_elementRef?: ElementRef,\r\n _viewContainerRef?: ViewContainerRef,\r\n _renderer?: Renderer2,\r\n ): ComponentLoader<T> {\r\n return new ComponentLoader<T>(\r\n _viewContainerRef,\r\n _renderer,\r\n _elementRef,\r\n this._injector,\r\n this._componentFactoryResolver,\r\n this._ngZone,\r\n this._applicationRef,\r\n this._posService,\r\n this._document\r\n );\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}