UNPKG

ngx-ntk-smart-module

Version:

Ntk Cms Modal

1 lines 86 kB
{"version":3,"file":"ngx-ntk-smart-module.mjs","sources":["../../../projects/ngx-ntk-smart-module/src/lib/modal/ntk-smart-modal.config.ts","../../../projects/ngx-ntk-smart-module/src/lib/modal/ntk-smart-modal.component.ts","../../../projects/ngx-ntk-smart-module/src/lib/modal/ntk-smart-modal-stack.service.ts","../../../projects/ngx-ntk-smart-module/src/lib/modal/ntk-smart-modal.service.ts","../../../projects/ngx-ntk-smart-module/src/lib/modal/ntk-smart-modal.module.ts","../../../projects/ngx-ntk-smart-module/src/lib/loader/ntk-smart-loader.service.ts","../../../projects/ngx-ntk-smart-module/src/lib/loader/loader-instance.ts","../../../projects/ngx-ntk-smart-module/src/lib/loader/ntk-smart-loader.component.ts","../../../projects/ngx-ntk-smart-module/src/lib/loader/ntk-smart-loader.module.ts","../../../projects/ngx-ntk-smart-module/src/public-api.ts","../../../projects/ngx-ntk-smart-module/src/ngx-ntk-smart-module.ts"],"sourcesContent":["export const NtkSmartModalConfig = {\r\n    bodyClassOpen: 'dialog-open',\r\n    prefixEvent: 'ntk-smart-modal.'\r\n};\r\n\r\nexport interface INtkSmartModalOptions {\r\n    closable?: boolean;\r\n    escapable?: boolean;\r\n    dismissable?: boolean;\r\n    customClass?: string;\r\n    backdrop?: boolean;\r\n    force?: boolean;\r\n    hideDelay?: number;\r\n    autostart?: boolean;\r\n    target?: string;\r\n    ariaLabel?: string;\r\n    ariaLabelledBy?: string;\r\n    ariaDescribedBy?: string;\r\n    refocus?: boolean;\r\n}\r\n","import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ComponentFactory,\r\n  ComponentFactoryResolver,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  PLATFORM_ID,\r\n  QueryList,\r\n  Renderer2,\r\n  Type,\r\n  ViewChildren,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport { NtkSmartModalConfig } from './ntk-smart-modal.config';\r\n\r\n\r\n@Component({\r\n  selector: 'ntk-smart-modal',\r\n  standalone:false,\r\n  template: `\r\n    <div *ngIf=\"overlayVisible\"\r\n         [style.z-index]=\"visible ? layerPosition-1 : -1\"\r\n         [ngClass]=\"{'transparent':!backdrop, 'overlay':true, 'nsm-overlay-open':openedClass}\"\r\n         (click)=\"dismiss($event)\" #nsmOverlay>\r\n      <div [style.z-index]=\"visible ? layerPosition : -1\"\r\n           [ngClass]=\"['nsm-dialog', customClass, openedClass ? 'nsm-dialog-open': 'nsm-dialog-close']\" #nsmDialog\r\n           [attr.aria-hidden]=\"openedClass ? false : true\"\r\n           [attr.aria-label]=\"ariaLabel\"\r\n           [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n           [attr.aria-describedby]=\"ariaDescribedBy\">\r\n        <div class=\"nsm-content\" #nsmContent>\r\n          <div class=\"nsm-body\">\r\n            <ng-template #dynamicContent></ng-template>\r\n            <ng-content></ng-content>\r\n\r\n          </div>\r\n          <button type=\"button\" *ngIf=\"closable\" (click)=\"close()\" aria-label=\"Close\" class=\"nsm-dialog-btn-close\">\r\n            <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 512 512\"\r\n                 xml:space=\"preserve\" width=\"16px\" height=\"16px\" role=\"img\" aria-labelledby=\"closeIconTitle closeIconDesc\">\r\n              <title id=\"closeIconTitle\">Close Icon</title>\r\n              <desc id=\"closeIconDesc\">A light-gray close icon used to close the modal</desc>\r\n              <g>\r\n                <path d=\"M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249    C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306    C514.019,27.23,514.019,14.135,505.943,6.058z\"\r\n                      fill=\"currentColor\"/>\r\n              </g>\r\n              <g>\r\n                <path d=\"M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636    c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z\"\r\n                      fill=\"currentColor\"/>\r\n              </g>\r\n            </svg>\r\n          </button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  `\r\n})\r\nexport class NtkSmartModalComponent implements OnInit, OnDestroy, AfterViewInit {\r\n  @Input() public closable: boolean = true;\r\n  @Input() public escapable: boolean = true;\r\n  @Input() public dismissable: boolean = true;\r\n  @Input() public identifier: string = '';\r\n  @Input() public customClass: string = 'nsm-dialog-animation-fade';\r\n  @Input() public visible: boolean = false;\r\n  @Input() public backdrop: boolean = true;\r\n  @Input() public force: boolean = true;\r\n  @Input() public hideDelay: number = 500;\r\n  @Input() public autostart: boolean = false;\r\n  @Input() public target: string = '';\r\n  @Input() public ariaLabel: string | null = null;\r\n  @Input() public ariaLabelledBy: string | null = null;\r\n  @Input() public ariaDescribedBy: string | null = null;\r\n  @Input() public refocus: boolean = true;\r\n\r\n  @Output() public visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n  @Output() public onClose: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onCloseFinished: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onDismiss: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onDismissFinished: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onAnyCloseEvent: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onAnyCloseEventFinished: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onOpen: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onOpenFinished: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onEscape: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onDataAdded: EventEmitter<any> = new EventEmitter();\r\n  @Output() public onDataRemoved: EventEmitter<any> = new EventEmitter();\r\n\r\n  public contentComponent: Type<Component>;\r\n  public layerPosition: number = 1041;\r\n  public overlayVisible: boolean = false;\r\n  public openedClass: boolean = false;\r\n\r\n  public createFrom = 'html';\r\n\r\n  private _data: any;\r\n\r\n  @ViewChildren('nsmContent') private nsmContent: QueryList<ElementRef>;\r\n  @ViewChildren('nsmDialog') public nsmDialog: QueryList<ElementRef>;\r\n  @ViewChildren('nsmOverlay') private nsmOverlay: QueryList<ElementRef>;\r\n  @ViewChildren('dynamicContent', { read: ViewContainerRef }) dynamicContentContainer: QueryList<ViewContainerRef>;\r\n\r\n  constructor(\r\n    private _renderer: Renderer2,\r\n    private _changeDetectorRef: ChangeDetectorRef,\r\n    private componentFactoryResolver: ComponentFactoryResolver,\r\n    @Inject(DOCUMENT) private _document: any,\r\n    @Inject(PLATFORM_ID) private _platformId: any,\r\n  ) { }\r\n\r\n  public ngOnInit(): void {\r\n    if (!this.identifier || !this.identifier.length) {\r\n      throw new Error('identifier field isn’t set. Please set one before calling <ngx-smart-modal> in a template.');\r\n    }\r\n\r\n    this._sendEvent('create');\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n    if (this.contentComponent) {\r\n      const factory = this.componentFactoryResolver.resolveComponentFactory(this.contentComponent);\r\n      this.createDynamicContent(this.dynamicContentContainer, factory);\r\n      this.dynamicContentContainer.changes.subscribe((contentViewContainers: QueryList<ViewContainerRef>) => {\r\n        this.createDynamicContent(contentViewContainers, factory);\r\n      });\r\n    }\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this._sendEvent('delete');\r\n  }\r\n\r\n  /**\r\n   * Open the modal instance\r\n   *\r\n   * @param top open the modal top of all other\r\n   * @returns the modal component\r\n   */\r\n  public open(top?: boolean): NtkSmartModalComponent {\r\n    this._sendEvent('open', { top: top });\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Close the modal instance\r\n   *\r\n   * @returns the modal component\r\n   */\r\n  public close(): NtkSmartModalComponent {\r\n    this._sendEvent('close');\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Dismiss the modal instance\r\n   *\r\n   * @param e the event sent by the browser\r\n   * @returns the modal component\r\n   */\r\n  public dismiss(e: any): NtkSmartModalComponent {\r\n    if (!this.dismissable || !e.target.classList.contains('overlay')) {\r\n      return this;\r\n    }\r\n\r\n    this._sendEvent('dismiss');\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Toggle visibility of the modal instance\r\n   *\r\n   * @param top open the modal top of all other\r\n   * @returns the modal component\r\n   */\r\n  public toggle(top?: boolean): NtkSmartModalComponent {\r\n    this._sendEvent('toggle', { top: top });\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Add a custom class to the modal instance\r\n   *\r\n   * @param className the class to add\r\n   * @returns the modal component\r\n   */\r\n  public addCustomClass(className: string): NtkSmartModalComponent {\r\n    if (!this.customClass.length) {\r\n      this.customClass = className;\r\n    } else {\r\n      this.customClass += ' ' + className;\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Remove a custom class to the modal instance\r\n   *\r\n   * @param className the class to remove\r\n   * @returns the modal component\r\n   */\r\n  public removeCustomClass(className?: string): NtkSmartModalComponent {\r\n    if (className) {\r\n      this.customClass = this.customClass.replace(className, '').trim();\r\n    } else {\r\n      this.customClass = '';\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Returns the visibility state of the modal instance\r\n   */\r\n  public isVisible(): boolean {\r\n    return this.visible;\r\n  }\r\n\r\n  /**\r\n   * Checks if data is attached to the modal instance\r\n   */\r\n  public hasData(): boolean {\r\n    return this._data !== undefined;\r\n  }\r\n\r\n  /**\r\n   * Attach data to the modal instance\r\n   *\r\n   * @param data the data to attach\r\n   * @param force override potentially attached data\r\n   * @returns the modal component\r\n   */\r\n  public setData(data: any, force?: boolean): NtkSmartModalComponent {\r\n    if (!this.hasData() || (this.hasData() && force)) {\r\n      this._data = data;\r\n      this.onDataAdded.emit(this._data);\r\n      this.markForCheck();\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Retrieve the data attached to the modal instance\r\n   */\r\n  public getData(): any {\r\n    return this._data;\r\n  }\r\n\r\n  /**\r\n   * Remove the data attached to the modal instance\r\n   *\r\n   * @returns the modal component\r\n   */\r\n  public removeData(): NtkSmartModalComponent {\r\n    this._data = undefined;\r\n    this.onDataRemoved.emit(true);\r\n    this.markForCheck();\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Add body class modal opened\r\n   *\r\n   * @returns the modal component\r\n   */\r\n  public addBodyClass(): NtkSmartModalComponent {\r\n    this._renderer.addClass(this._document.body, NtkSmartModalConfig.bodyClassOpen);\r\n\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Add body class modal opened\r\n   *\r\n   * @returns the modal component\r\n   */\r\n  public removeBodyClass(): NtkSmartModalComponent {\r\n    this._renderer.removeClass(this._document.body, NtkSmartModalConfig.bodyClassOpen);\r\n\r\n    return this;\r\n  }\r\n\r\n  public markForCheck() {\r\n    try {\r\n      this._changeDetectorRef.detectChanges();\r\n    } catch (e) {\r\n    }\r\n\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  /**\r\n   * Listens for window resize event and recalculates modal instance position if it is element-relative\r\n   */\r\n  @HostListener('window:resize')\r\n  public targetPlacement(): boolean | void {\r\n    if (!this.isBrowser || !this.nsmDialog.length || !this.nsmContent.length || !this.nsmOverlay.length || !this.target) {\r\n      return false;\r\n    }\r\n    const targetElement = this._document.querySelector(this.target);\r\n\r\n    if (!targetElement) {\r\n      return false;\r\n    }\r\n\r\n    const targetElementRect = targetElement.getBoundingClientRect();\r\n    const bodyRect = this.nsmOverlay.first.nativeElement.getBoundingClientRect();\r\n\r\n    const nsmContentRect = this.nsmContent.first.nativeElement.getBoundingClientRect();\r\n    const nsmDialogRect = this.nsmDialog.first.nativeElement.getBoundingClientRect();\r\n\r\n    const marginLeft = parseInt(getComputedStyle(this.nsmContent.first.nativeElement).marginLeft as any, 10);\r\n    const marginTop = parseInt(getComputedStyle(this.nsmContent.first.nativeElement).marginTop as any, 10);\r\n\r\n    let offsetTop = targetElementRect.top - nsmDialogRect.top - ((nsmContentRect.height - targetElementRect.height) / 2);\r\n    let offsetLeft = targetElementRect.left - nsmDialogRect.left - ((nsmContentRect.width - targetElementRect.width) / 2);\r\n\r\n    if (offsetLeft + nsmDialogRect.left + nsmContentRect.width + (marginLeft * 2) > bodyRect.width) {\r\n      offsetLeft = bodyRect.width - (nsmDialogRect.left + nsmContentRect.width) - (marginLeft * 2);\r\n    } else if (offsetLeft + nsmDialogRect.left < 0) {\r\n      offsetLeft = -nsmDialogRect.left;\r\n    }\r\n\r\n    if (offsetTop + nsmDialogRect.top + nsmContentRect.height + marginTop > bodyRect.height) {\r\n      offsetTop = bodyRect.height - (nsmDialogRect.top + nsmContentRect.height) - marginTop;\r\n    }\r\n\r\n    this._renderer.setStyle(this.nsmContent.first.nativeElement, 'top', (offsetTop < 0 ? 0 : offsetTop) + 'px');\r\n    this._renderer.setStyle(this.nsmContent.first.nativeElement, 'left', offsetLeft + 'px');\r\n  }\r\n\r\n  private _sendEvent(name: string, extraData?: any): boolean {\r\n    if (!this.isBrowser) {\r\n      return false;\r\n    }\r\n\r\n    const data = {\r\n      extraData: extraData,\r\n      instance: { id: this.identifier, modal: this }\r\n    };\r\n\r\n    const event = new CustomEvent(NtkSmartModalConfig.prefixEvent + name, { detail: data });\r\n\r\n    return window.dispatchEvent(event);\r\n  }\r\n\r\n  /**\r\n   * Is current platform browser\r\n   */\r\n  private get isBrowser(): boolean {\r\n    return isPlatformBrowser(this._platformId);\r\n  }\r\n\r\n  /**\r\n   * Creates content inside provided ViewContainerRef\r\n   */\r\n  private createDynamicContent(changes: QueryList<ViewContainerRef>, factory: ComponentFactory<Component>): void {\r\n    changes.forEach((viewContainerRef: ViewContainerRef) => {\r\n      viewContainerRef.clear();\r\n      viewContainerRef.createComponent(factory);\r\n      this.markForCheck();\r\n    });\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\nimport { ModalInstance } from './modal-instance';\r\nimport { NtkSmartModalComponent } from './ntk-smart-modal.component';\r\n\r\n@Injectable()\r\nexport class NtkSmartModalStackService {\r\n  private modalStack: ModalInstance[];\r\n\r\n  constructor() {\r\n    this.modalStack = [];\r\n  }\r\n\r\n  /**\r\n   * Add a new modal instance. This step is essential and allows to retrieve any modal at any time.\r\n   * It stores an object that contains the given modal identifier and the modal itself directly in the `modalStack`.\r\n   *\r\n   * @param modalInstance The object that contains the given modal identifier and the modal itself.\r\n   * @param force Optional parameter that forces the overriding of modal instance if it already exists.\r\n   * @returns nothing special.\r\n   */\r\n  public addModal(modalInstance: ModalInstance, force?: boolean): void {\r\n    if (force) {\r\n      const i: number = this.modalStack.findIndex((o: ModalInstance) => o.id === modalInstance.id);\r\n      if (i > -1) {\r\n        this.modalStack[i].modal = modalInstance.modal;\r\n      } else {\r\n        this.modalStack.push(modalInstance);\r\n      }\r\n      return;\r\n    }\r\n    this.modalStack.push(modalInstance);\r\n  }\r\n\r\n  /**\r\n   * Retrieve a modal instance by its identifier.\r\n   *\r\n   * @param id The modal identifier used at creation time.\r\n   */\r\n  public getModal(id: string): NtkSmartModalComponent {\r\n    const i = this.modalStack.find((o: ModalInstance) => o.id === id);\r\n\r\n    if (i !== undefined) {\r\n      return i.modal;\r\n    } else {\r\n      throw new Error(`Cannot find modal with identifier ${id}`);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Retrieve all the created modals.\r\n   *\r\n   * @returns an array that contains all modal instances.\r\n   */\r\n  public getModalStack(): ModalInstance[] {\r\n    return this.modalStack;\r\n  }\r\n\r\n  /**\r\n   * Retrieve all the opened modals. It looks for all modal instances with their `visible` property set to `true`.\r\n   *\r\n   * @returns an array that contains all the opened modals.\r\n   */\r\n  public getOpenedModals(): ModalInstance[] {\r\n    return this.modalStack.filter((o: ModalInstance) => o.modal.visible);\r\n  }\r\n\r\n  /**\r\n   * Retrieve the opened modal with highest z-index.\r\n   *\r\n   * @returns the opened modal with highest z-index.\r\n   */\r\n  public getTopOpenedModal(): NtkSmartModalComponent {\r\n    if (!this.getOpenedModals().length) {\r\n      throw new Error('No modal is opened');\r\n    }\r\n\r\n    return this.getOpenedModals()\r\n      .map((o: ModalInstance) => o.modal)\r\n      .reduce((highest, item) => item.layerPosition > highest.layerPosition ? item : highest, this.getOpenedModals()[0].modal);\r\n  }\r\n\r\n  /**\r\n   * Get the higher `z-index` value between all the modal instances. It iterates over the `ModalStack` array and\r\n   * calculates a higher value (it takes the highest index value between all the modal instances and adds 1).\r\n   * Use it to make a modal appear foreground.\r\n   *\r\n   * @returns a higher index from all the existing modal instances.\r\n   */\r\n  public getHigherIndex(): number {\r\n    return Math.max(...this.modalStack.map((o) => o.modal.layerPosition), 1041) + 1;\r\n  }\r\n\r\n  /**\r\n   * It gives the number of modal instances. It's helpful to know if the modal stack is empty or not.\r\n   *\r\n   * @returns the number of modal instances.\r\n   */\r\n  public getModalStackCount(): number {\r\n    return this.modalStack.length;\r\n  }\r\n\r\n  /**\r\n   * Remove a modal instance from the modal stack.\r\n   *\r\n   * @param id The modal identifier.\r\n   * @returns the removed modal instance.\r\n   */\r\n  public removeModal(id: string): void {\r\n    const i: number = this.modalStack.findIndex((o: any) => o.id === id);\r\n    if (i > -1) {\r\n      this.modalStack.splice(i, 1);\r\n    }\r\n  }\r\n}\r\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\r\nimport {\r\n  ApplicationRef,\r\n  ComponentFactoryResolver,\r\n  EmbeddedViewRef,\r\n  Inject,\r\n  Injectable,\r\n  Injector,\r\n  PLATFORM_ID,\r\n  TemplateRef,\r\n  Type\r\n} from '@angular/core';\r\n\r\n\r\nimport { ModalInstance } from './modal-instance';\r\nimport { NtkSmartModalStackService } from './ntk-smart-modal-stack.service';\r\nimport { NtkSmartModalComponent } from './ntk-smart-modal.component';\r\nimport { INtkSmartModalOptions, NtkSmartModalConfig } from './ntk-smart-modal.config';\r\n\r\nexport type Content<T> = string | TemplateRef<T> | Type<T>;\r\n\r\n@Injectable()\r\nexport class NtkSmartModalService {\r\n  private lastElementFocused: any;\r\n\r\n  constructor(\r\n    private _componentFactoryResolver: ComponentFactoryResolver,\r\n    private _appRef: ApplicationRef,\r\n    private _injector: Injector,\r\n    private _modalStack: NtkSmartModalStackService,\r\n    private applicationRef: ApplicationRef,\r\n    @Inject(DOCUMENT) private _document: any,\r\n    @Inject(PLATFORM_ID) private _platformId: any\r\n  ) {\r\n    this._addEvents();\r\n  }\r\n\r\n  /**\r\n   * Add a new modal instance. This step is essential and allows to retrieve any modal at any time.\r\n   * It stores an object that contains the given modal identifier and the modal itself directly in the `modalStack`.\r\n   *\r\n   * @param modalInstance The object that contains the given modal identifier and the modal itself.\r\n   * @param force Optional parameter that forces the overriding of modal instance if it already exists.\r\n   * @returns nothing special.\r\n   */\r\n  public addModal(modalInstance: ModalInstance, force?: boolean): void {\r\n    this._modalStack.addModal(modalInstance, force);\r\n  }\r\n\r\n  /**\r\n   * Retrieve a modal instance by its identifier.\r\n   *\r\n   * @param id The modal identifier used at creation time.\r\n   */\r\n  public getModal(id: string): NtkSmartModalComponent {\r\n    return this._modalStack.getModal(id);\r\n  }\r\n\r\n  /**\r\n   * Alias of `getModal` to retrieve a modal instance by its identifier.\r\n   *\r\n   * @param id The modal identifier used at creation time.\r\n   */\r\n  public get(id: string): NtkSmartModalComponent {\r\n    return this.getModal(id);\r\n  }\r\n\r\n  /**\r\n   * Open a given modal\r\n   *\r\n   * @param id The modal identifier used at creation time.\r\n   * @param force Tell the modal to open top of all other opened modals\r\n   */\r\n  public open(id: string, force = false): boolean {\r\n    return this._openModal(this.get(id), force);\r\n  }\r\n\r\n  /**\r\n   * Close a given modal\r\n   *\r\n   * @param id The modal identifier used at creation time.\r\n   */\r\n  public close(id: string): boolean {\r\n    return this._closeModal(this.get(id));\r\n  }\r\n\r\n  /**\r\n   * Close all opened modals\r\n   */\r\n  public closeAll(): void {\r\n    this.getOpenedModals().forEach((instance: ModalInstance) => {\r\n      this._closeModal(instance.modal);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Toggles a given modal\r\n   * If the retrieved modal is opened it closes it, else it opens it.\r\n   *\r\n   * @param id The modal identifier used at creation time.\r\n   * @param force Tell the modal to open top of all other opened modals\r\n   */\r\n  public toggle(id: string, force = false): boolean {\r\n    return this._toggleModal(this.get(id), force);\r\n  }\r\n\r\n  /**\r\n   * Retrieve all the created modals.\r\n   *\r\n   * @returns an array that contains all modal instances.\r\n   */\r\n  public getModalStack(): ModalInstance[] {\r\n    return this._modalStack.getModalStack();\r\n  }\r\n\r\n  /**\r\n   * Retrieve all the opened modals. It looks for all modal instances with their `visible` property set to `true`.\r\n   *\r\n   * @returns an array that contains all the opened modals.\r\n   */\r\n  public getOpenedModals(): ModalInstance[] {\r\n    return this._modalStack.getOpenedModals();\r\n  }\r\n\r\n  /**\r\n   * Retrieve the opened modal with highest z-index.\r\n   *\r\n   * @returns the opened modal with highest z-index.\r\n   */\r\n  public getTopOpenedModal(): NtkSmartModalComponent {\r\n    return this._modalStack.getTopOpenedModal();\r\n  }\r\n\r\n  /**\r\n   * Get the higher `z-index` value between all the modal instances. It iterates over the `ModalStack` array and\r\n   * calculates a higher value (it takes the highest index value between all the modal instances and adds 1).\r\n   * Use it to make a modal appear foreground.\r\n   *\r\n   * @returns a higher index from all the existing modal instances.\r\n   */\r\n  public getHigherIndex(): number {\r\n    return this._modalStack.getHigherIndex();\r\n  }\r\n\r\n  /**\r\n   * It gives the number of modal instances. It's helpful to know if the modal stack is empty or not.\r\n   *\r\n   * @returns the number of modal instances.\r\n   */\r\n  public getModalStackCount(): number {\r\n    return this._modalStack.getModalStackCount();\r\n  }\r\n\r\n  /**\r\n   * Remove a modal instance from the modal stack.\r\n   *\r\n   * @param id The modal identifier.\r\n   * @returns the removed modal instance.\r\n   */\r\n  public removeModal(id: string): void {\r\n    this._modalStack.removeModal(id);\r\n  }\r\n\r\n  /**\r\n   * Associate data to an identified modal. If the modal isn't already associated to some data, it creates a new\r\n   * entry in the `modalData` array with its `id` and the given `data`. If the modal already has data, it rewrites\r\n   * them with the new ones. Finally if no modal found it returns an error message in the console and false value\r\n   * as method output.\r\n   *\r\n   * @param data The data you want to associate to the modal.\r\n   * @param id The modal identifier.\r\n   * @param force If true, overrides the previous stored data if there was.\r\n   * @returns true if the given modal exists and the process has been tried, either false.\r\n   */\r\n  public setModalData(data: any, id: string, force?: boolean): boolean {\r\n    let i;\r\n    if (i = this.get(id)) {\r\n      i.setData(data, force);\r\n      return true;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Retrieve modal data by its identifier.\r\n   *\r\n   * @param id The modal identifier used at creation time.\r\n   * @returns the associated modal data.\r\n   */\r\n  public getModalData(id: string): any {\r\n    let i;\r\n    if (i = this.get(id)) {\r\n      return i.getData();\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * Reset the data attached to a given modal.\r\n   *\r\n   * @param id The modal identifier used at creation time.\r\n   * @returns the removed data or false if modal doesn't exist.\r\n   */\r\n  public resetModalData(id: string): any | boolean {\r\n    if (!!this._modalStack.getModalStack().find((o: ModalInstance) => o.id === id)) {\r\n      const removed: any = this.getModal(id).getData();\r\n      this.getModal(id).removeData();\r\n      return removed;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Close the latest opened modal if it has been declared as escapable\r\n   * Using a debounce system because one or more modals could be listening\r\n   * escape key press event.\r\n   */\r\n  public closeLatestModal(): void {\r\n    this.getTopOpenedModal().close();\r\n  }\r\n\r\n  /**\r\n   * Create dynamic NtkSmartModalComponent\r\n   * @param id The modal identifier used at creation time.\r\n   * @param content The modal content ( string, templateRef or Component )\r\n   */\r\n  public create<T>(id: string, content: Content<T>, options: INtkSmartModalOptions = {}) {\r\n    try {\r\n      return this.getModal(id);\r\n    } catch (e) {\r\n      const componentFactory = this._componentFactoryResolver.resolveComponentFactory(NtkSmartModalComponent);\r\n      const ngContent = this._resolveNgContent(content);\r\n\r\n      const componentRef = componentFactory.create(this._injector, ngContent);\r\n\r\n      if (content instanceof Type) {\r\n        componentRef.instance.contentComponent = content;\r\n      }\r\n\r\n      componentRef.instance.identifier = id;\r\n      componentRef.instance.createFrom = 'service';\r\n\r\n      if (typeof options.closable === 'boolean') { componentRef.instance.closable = options.closable; }\r\n      if (typeof options.escapable === 'boolean') { componentRef.instance.escapable = options.escapable; }\r\n      if (typeof options.dismissable === 'boolean') { componentRef.instance.dismissable = options.dismissable; }\r\n      if (typeof options.customClass === 'string') { componentRef.instance.customClass = options.customClass; }\r\n      if (typeof options.backdrop === 'boolean') { componentRef.instance.backdrop = options.backdrop; }\r\n      if (typeof options.force === 'boolean') { componentRef.instance.force = options.force; }\r\n      if (typeof options.hideDelay === 'number') { componentRef.instance.hideDelay = options.hideDelay; }\r\n      if (typeof options.autostart === 'boolean') { componentRef.instance.autostart = options.autostart; }\r\n      if (typeof options.target === 'string') { componentRef.instance.target = options.target; }\r\n      if (typeof options.ariaLabel === 'string') { componentRef.instance.ariaLabel = options.ariaLabel; }\r\n      if (typeof options.ariaLabelledBy === 'string') { componentRef.instance.ariaLabelledBy = options.ariaLabelledBy; }\r\n      if (typeof options.ariaDescribedBy === 'string') { componentRef.instance.ariaDescribedBy = options.ariaDescribedBy; }\r\n      if (typeof options.refocus === 'boolean') { componentRef.instance.refocus = options.refocus; }\r\n\r\n      this._appRef.attachView(componentRef.hostView);\r\n\r\n      const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n      this._document.body.appendChild(domElem);\r\n\r\n      return componentRef.instance;\r\n    }\r\n  }\r\n\r\n  private _addEvents(): boolean {\r\n    if (!this.isBrowser) {\r\n      return false;\r\n    }\r\n\r\n    window.addEventListener(NtkSmartModalConfig.prefixEvent + 'create', ((e: CustomEvent) => {\r\n      this._initModal(e.detail.instance);\r\n    }) as EventListener);\r\n\r\n    window.addEventListener(NtkSmartModalConfig.prefixEvent + 'delete', ((e: CustomEvent) => {\r\n      this._deleteModal(e.detail.instance);\r\n    }) as EventListener);\r\n\r\n    window.addEventListener(NtkSmartModalConfig.prefixEvent + 'open', ((e: CustomEvent) => {\r\n      this._openModal(e.detail.instance.modal, e.detail.top);\r\n    }) as EventListener);\r\n\r\n    window.addEventListener(NtkSmartModalConfig.prefixEvent + 'toggle', ((e: CustomEvent) => {\r\n      this._toggleModal(e.detail.instance.modal, e.detail.top);\r\n    }) as EventListener);\r\n\r\n    window.addEventListener(NtkSmartModalConfig.prefixEvent + 'close', ((e: CustomEvent) => {\r\n      this._closeModal(e.detail.instance.modal);\r\n    }) as EventListener);\r\n\r\n    window.addEventListener(NtkSmartModalConfig.prefixEvent + 'dismiss', ((e: CustomEvent) => {\r\n      this._dismissModal(e.detail.instance.modal);\r\n    }) as EventListener);\r\n\r\n    window.addEventListener('keyup', this._escapeKeyboardEvent);\r\n\r\n    return true;\r\n  }\r\n\r\n  private _initModal(modalInstance: ModalInstance) {\r\n    modalInstance.modal.layerPosition += this.getModalStackCount();\r\n    this.addModal(modalInstance, modalInstance.modal.force);\r\n\r\n    if (modalInstance.modal.autostart) {\r\n      this.open(modalInstance.id);\r\n    }\r\n  }\r\n\r\n  private _openModal(modal: NtkSmartModalComponent, top?: boolean): boolean {\r\n    if (modal.visible) {\r\n      return false;\r\n    }\r\n\r\n    this.lastElementFocused = document.activeElement;\r\n\r\n    if (modal.escapable) {\r\n      window.addEventListener('keyup', this._escapeKeyboardEvent);\r\n    }\r\n\r\n    if (modal.backdrop) {\r\n      window.addEventListener('keydown', this._trapFocusModal);\r\n    }\r\n\r\n    if (top) {\r\n      modal.layerPosition = this.getHigherIndex();\r\n    }\r\n\r\n    modal.addBodyClass();\r\n    modal.overlayVisible = true;\r\n    modal.visible = true;\r\n    modal.onOpen.emit(modal);\r\n    modal.markForCheck();\r\n\r\n    setTimeout(() => {\r\n      modal.openedClass = true;\r\n\r\n      if (modal.target) {\r\n        modal.targetPlacement();\r\n      }\r\n\r\n      modal.nsmDialog.first.nativeElement.setAttribute('role', 'dialog');\r\n      modal.nsmDialog.first.nativeElement.setAttribute('tabIndex', '-1');\r\n      modal.nsmDialog.first.nativeElement.setAttribute('aria-modal', 'true');\r\n      modal.nsmDialog.first.nativeElement.focus();\r\n\r\n      modal.markForCheck();\r\n      modal.onOpenFinished.emit(modal);\r\n    });\r\n\r\n    return true;\r\n  }\r\n\r\n  private _toggleModal(modal: NtkSmartModalComponent, top?: boolean): boolean {\r\n    if (modal.visible) {\r\n      return this._closeModal(modal);\r\n    } else {\r\n      return this._openModal(modal, top);\r\n    }\r\n  }\r\n\r\n  private _closeModal(modal: NtkSmartModalComponent): boolean {\r\n    if (!modal.openedClass) {\r\n      return false;\r\n    }\r\n\r\n    modal.openedClass = false;\r\n    modal.onClose.emit(modal);\r\n    modal.onAnyCloseEvent.emit(modal);\r\n\r\n    if (this.getOpenedModals().length < 2) {\r\n      modal.removeBodyClass();\r\n      window.removeEventListener('keyup', this._escapeKeyboardEvent);\r\n      window.removeEventListener('keydown', this._trapFocusModal);\r\n    }\r\n\r\n    setTimeout(() => {\r\n      modal.visibleChange.emit(modal.visible);\r\n      modal.visible = false;\r\n      modal.overlayVisible = false;\r\n      modal.nsmDialog.first.nativeElement.removeAttribute('tabIndex');\r\n      modal.markForCheck();\r\n      modal.onCloseFinished.emit(modal);\r\n      modal.onAnyCloseEventFinished.emit(modal);\r\n      if (modal.refocus) {\r\n        this.lastElementFocused.focus();\r\n      }\r\n    }, modal.hideDelay);\r\n\r\n    return true;\r\n  }\r\n\r\n  private _dismissModal(modal: NtkSmartModalComponent): boolean {\r\n    if (!modal.openedClass) {\r\n      return false;\r\n    }\r\n\r\n    modal.openedClass = false;\r\n    modal.onDismiss.emit(modal);\r\n    modal.onAnyCloseEvent.emit(modal);\r\n\r\n    if (this.getOpenedModals().length < 2) {\r\n      modal.removeBodyClass();\r\n    }\r\n\r\n    setTimeout(() => {\r\n      modal.visible = false;\r\n      modal.visibleChange.emit(modal.visible);\r\n      modal.overlayVisible = false;\r\n      modal.markForCheck();\r\n      modal.onDismissFinished.emit(modal);\r\n      modal.onAnyCloseEventFinished.emit(modal);\r\n    }, modal.hideDelay);\r\n\r\n    return true;\r\n  }\r\n\r\n  private _deleteModal(modalInstance: ModalInstance) {\r\n    this.removeModal(modalInstance.id);\r\n\r\n    if (!this.getModalStack().length) {\r\n      modalInstance.modal.removeBodyClass();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Resolve content according to the types\r\n   * @param content The modal content ( string, templateRef or Component )\r\n   */\r\n  private _resolveNgContent<T>(content: Content<T>): any[][] | Text[][] {\r\n    if (typeof content === 'string') {\r\n      const element = this._document.createTextNode(content);\r\n      return [[element]];\r\n    }\r\n\r\n    if (content instanceof TemplateRef) {\r\n      const viewRef = content.createEmbeddedView(null as any);\r\n      this.applicationRef.attachView(viewRef);\r\n      return [viewRef.rootNodes];\r\n    }\r\n\r\n    return [];\r\n  }\r\n\r\n  /**\r\n   * Close the latest opened modal if escape key event is emitted\r\n   * @param event The Keyboard Event\r\n   */\r\n  private _escapeKeyboardEvent = (event: KeyboardEvent) => {\r\n    if (event.key === 'Escape') {\r\n      try {\r\n        const modal = this.getTopOpenedModal();\r\n\r\n        if (!modal.escapable) {\r\n          return false;\r\n        }\r\n\r\n        modal.onEscape.emit(modal);\r\n        this.closeLatestModal();\r\n\r\n        return true;\r\n      } catch (e) {\r\n        return false;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Is current platform browser\r\n   */\r\n  private get isBrowser(): boolean {\r\n    return isPlatformBrowser(this._platformId);\r\n  }\r\n\r\n  /**\r\n   * While modal is open, the focus stay on it\r\n   * @param event The Keyboar dEvent\r\n   */\r\n  private _trapFocusModal = (event: KeyboardEvent) => {\r\n    if (event.key === 'Tab') {\r\n      try {\r\n        const modal = this.getTopOpenedModal();\r\n\r\n        if (!modal.nsmDialog.first.nativeElement.contains(document.activeElement)) {\r\n          event.preventDefault();\r\n          event.stopPropagation();\r\n          modal.nsmDialog.first.nativeElement.focus();\r\n        }\r\n\r\n        return true;\r\n      } catch (e) {\r\n        return false;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NtkSmartModalStackService } from './ntk-smart-modal-stack.service';\r\nimport { NtkSmartModalComponent } from './ntk-smart-modal.component';\r\nimport { NtkSmartModalService } from './ntk-smart-modal.service';\r\n\r\n@NgModule({\r\n  declarations: [NtkSmartModalComponent],\r\n  exports: [NtkSmartModalComponent],\r\n  imports: [CommonModule],\r\n})\r\nexport class NtkSmartModalModule {\r\n  /**\r\n   * Use in AppModule: new instance of NtkSmartModal.\r\n   */\r\n  public static forRoot(): ModuleWithProviders<NtkSmartModalModule> {\r\n    return {\r\n      ngModule: NtkSmartModalModule,\r\n      providers: [\r\n        NtkSmartModalService,\r\n        NtkSmartModalStackService\r\n      ],\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Use in features modules with lazy loading: new instance of NtkSmartModal.\r\n   */\r\n  public static forChild(): ModuleWithProviders<NtkSmartModalModule> {\r\n    return {\r\n      ngModule: NtkSmartModalModule,\r\n      providers: [\r\n        NtkSmartModalService,\r\n        NtkSmartModalStackService\r\n      ],\r\n    };\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { LoaderInstance } from './loader-instance';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class NtkSmartLoaderService {\r\n  private privateloaderStack: LoaderInstance[] = [];\r\n  private privateActions: Array<{ identifier: string, action: string }> = [];\r\n\r\n  /**\r\n   * Add a new loader instance. This step is essential and allows to retrieve any loader at any time.\r\n   * It stores an object that contains the given loader identifier and the loader itself directly in the `loaderStack`.\r\n   *\r\n   * @param loaderInstance The object that contains the given loader identifier and the loader itself.\r\n   * @param force Optional parameter that forces the overriding of loader instance if it already exists.\r\n   * @returns Returns nothing special.\r\n   */\r\n  public addLoader(loaderInstance: LoaderInstance, force?: boolean): void {\r\n    if (force) {\r\n      const i: number = this.privateloaderStack.findIndex((o: LoaderInstance) => {\r\n        return o.id === loaderInstance.id;\r\n      });\r\n      if (i > -1) {\r\n        this.privateloaderStack[i].component = loaderInstance.component;\r\n      } else {\r\n        this.privateloaderStack.push(loaderInstance);\r\n      }\r\n      return;\r\n    }\r\n    let loader;\r\n    // tslint:disable-next-line: no-conditional-assignment\r\n    if (loader = this._getLoader(loaderInstance.id)) {\r\n      throw (new Error('Loader with ' + loaderInstance.id + ' identifier already exist'));\r\n    } else {\r\n      this.privateloaderStack.push(loaderInstance);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Remove a loader instance from the loader stack.\r\n   *\r\n   * @param id The loader identifier.\r\n   */\r\n  public removeLoader(id: string): void {\r\n    this.privateloaderStack = this.privateloaderStack.filter((loader) => loader.id !== id);\r\n\r\n    this._removeAction(id, '*');\r\n  }\r\n\r\n  /**\r\n   * Retrieve all the created loaders.\r\n   *\r\n   * @returns Returns an array that contains all loader instances.\r\n   */\r\n  public getLoaderStack(): LoaderInstance[] {\r\n    return this.privateloaderStack;\r\n  }\r\n\r\n  /**\r\n   * It gives the number of loader instances. It's helpful to know if the loader stack is empty or not.\r\n   *\r\n   * @returns Returns the number of loader instances.\r\n   */\r\n  public getLoaderStackCount(): number {\r\n    return this.privateloaderStack.length;\r\n  }\r\n\r\n  /**\r\n   * Retrieve all the opened loaders. It looks for all loader instances with their `visible` property set to `true`.\r\n   *\r\n   * @returns Returns an array that contains all the opened loaders.\r\n   */\r\n  public getOpenedLoaders(): LoaderInstance[] {\r\n    return this.privateloaderStack.filter((loader) => loader.component.visible);\r\n  }\r\n\r\n  /**\r\n   * Retrieve all the active loaders. It looks for all loader instances with their `loading` property set to `true`.\r\n   *\r\n   * @returns Returns an array that contains all the active loaders.\r\n   */\r\n  public getActiveLoaders(): LoaderInstance[] {\r\n    return this.privateloaderStack.filter((loader) => loader.component.loading);\r\n  }\r\n\r\n  /**\r\n   * Get the higher `z-index` value between all the loader instances. It iterates over the `LoaderStack` array and\r\n   * calculates a higher value (it takes the highest index value between all the loader instances and adds 1).\r\n   * Use it to make a loader appear foreground.\r\n   *\r\n   * @returns Returns a higher index from all the existing loader instances.\r\n   */\r\n  public getHigherIndex(): number {\r\n    const index: number[] = this.getOpenedLoaders().map((loader) => loader.component.layerPosition);\r\n\r\n    return Math.max(...index) + 1;\r\n  }\r\n\r\n  /**\r\n   * Enable loading state to one or several loaders.\r\n   *\r\n   * @param id The loader identifier.\r\n   */\r\n  public start(id: string | string[]): void {\r\n    let loader;\r\n\r\n    if (Array.isArray(id)) {\r\n      id.forEach((i: string) => {\r\n        this.start(i);\r\n      });\r\n    } else if (loader = this._getLoader(id)) {\r\n      loader.component.start();\r\n      this._removeAction(id, 'start');\r\n    } else {\r\n      this._addAction(id, 'start');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Enable loading state to all loaders.\r\n   */\r\n  public startAll(): void {\r\n    this.privateloaderStack.forEach((loader) => this.start(loader.id));\r\n  }\r\n\r\n  /**\r\n   * Disable loading state to one or several loaders.\r\n   *\r\n   * @param id The loader identifier.\r\n   */\r\n  public stop(id: string | string[]): void {\r\n    let loader;\r\n\r\n    if (Array.isArray(id)) {\r\n      id.forEach((i: string) => {\r\n        this.stop(i);\r\n      });\r\n    } else if (loader = this._getLoader(id)) {\r\n      loader.component.stop();\r\n      this._removeAction(id, 'stop');\r\n    } else {\r\n      this._addAction(id, 'stop');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Disable loading state to all loaders.\r\n   */\r\n  public stopAll(): void {\r\n    this.privateloaderStack.forEach((loader) => this.stop(loader.id));\r\n  }\r\n\r\n  public isLoading(id: string | string[]): boolean {\r\n    let loader;\r\n    if (Array.isArray(id)) {\r\n      const tmp: any = [];\r\n\r\n      id.forEach((i: string) => {\r\n        this.privateloaderStack.forEach((load) => {\r\n          if (load.id === i) {\r\n            tmp.push(load.component.loading);\r\n          }\r\n        });\r\n      });\r\n      return tmp.indexOf(false) === -1;\r\n    } else if (loader = this._getLoader(id)) {\r\n      return loader.component.loading;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Execute an action on loaders\r\n   *\r\n   * @param id The loader identifier.\r\n   * @param action Name of the action.\r\n   */\r\n  public executeAction(id: string, action: string): void {\r\n    // First check if the action exists in privateActions\r\n    if (this.privateActions.find((act) => act.identifier === id && act.action === action)) {\r\n      switch (action) {\r\n        case 'start':\r\n          this.start(id);\r\n          break;\r\n        case 'stop':\r\n          this.stop(id);\r\n          break;\r\n      }\r\n    } else {\r\n      // If no action exists, execute it directly if the loader exists\r\n      let loader;\r\n      if (loader = this._getLoader(id)) {\r\n        switch (action) {\r\n          case 'start':\r\n            loader.component.start();\r\n            break;\r\n          case 'stop':\r\n            loader.component.stop();\r\n            break;\r\n        }\r\n      } else {\r\n        // If loader doesn't exist, add the action to be executed later\r\n        this._addAction(id, action);\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Retrieve a loader instance by its identifier.\r\n   * If there's several loaders with same identifier, the first is returned.\r\n   *\r\n   * @param id The loader identifier used at creation time.\r\n   */\r\n  private _getLoader(id: string): LoaderInstance | null {\r\n    return this.privateloaderStack.find((load) => load.id === id) || null;\r\n  }\r\n\r\n  /**\r\n   * Adds an action on one or more loaders\r\n   *\r\n   * @param id The loader identifier.\r\n   * @param action Name of the action.\r\n   */\r\n  private _addAction(id: string | string[], action: string): void {\r\n    if (Array.isArray(id)) {\r\n      id.forEach((i: string) => {\r\n        this._addAction(i, action);\r\n      });\r\n    } else {\r\n      this.privateActions.push({ identifier: id, action: action });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Remove an action on one or more loaders\r\n   *\r\n   * @param id The loader identifier.\r\n   * @param action Name of the action.\r\n   */\r\n  private _removeAction(id: string | string[], action: string): void {\r\n    if (Array.isArray(id)) {\r\n      id.forEach((i: string) => {\r\n        this._removeAction(i, action);\r\n      });\r\n    } else {\r\n      this.privateActions = this.privateActions.filter((act) => act.identifier !== id || (act.action !== action && action !== '*'));\r\n    }\r\n  }\r\n}\r\n","import { NtkSmartLoaderComponent } from './ntk-smart-loader.component';\r\n\r\nexport class LoaderInstance {\r\n  public id: string;\r\n  public component: NtkSmartLoaderComponent;\r\n\r\n  constructor(component: NtkSmartLoaderComponent) {\r\n    this.id = component.identifier;\r\n    this.component = component;\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n} from '@angular/core';\r\n\r\nimport { LoaderInstance } from './loader-instance';\r\nimport { NtkSmartLoaderService } from './ntk-smart-loader.service';\r\n\r\n@Component({\r\n  selector: 'ntk-smart-loader',\r\n  standalone: false,\r\n  template: `\r\n    <div\r\n      class=\"loader-container {{ customClass }}\"\r\n      [ngClass]=\"{ active: loading }\"\r\n      [style.z-index]=\"layerPosition - 1\"\r\n      *ngIf=\"visible\"\r\n    >\r\n      <ng-content></ng-content>\r\n    </div>\r\n  `,\r\n})\r\nexport class NtkSmartLoaderComponent implements OnInit, OnDestroy {\r\n  @Input() public identifier = '';\r\n  @Input() public customClass = '';\r\n  @Input() public force = false;\r\n  @Input() public delayIn = 0;\r\n  @Input() public delayOut = 0;\r\n  @Input() public autostart = false;\r\n  @Output() public onStart = new EventEmitter<NtkSmartLoaderComponent>();\r\n  @Output() public onStop = new EventEmitter<NtkSmartLoaderComponent>();\r\n  @Output() public onVisibleChange =\r\n    new EventEmitter<NtkSmartLoaderComponent>();\r\n\r\n  public loading = false;\r\n  public visible = false;\r\n  public layerPosition = 999;\r\n\r\n  private privateDebouncer: any;\r\n  private privateIsProcessing = false;\r\n\r\n  private privateLoaderBodyClass = 'loader-open';\r\n  private privateEnterClass = 'enter';\r\n  private privateLeaveClass = 'leave';\r\n\r\n  constructor(\r\n    public ntkSmartLoaderService: NtkSmartLoaderService,\r\n    private changeDetectorRef: ChangeDetectorRef\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    try {\r\n      console.log(\r\n        'SmartLoader Component initialized with identifier:',\r\n        this.identifier\r\n      );\r\n      const loader = new LoaderInstance(this);\r\n\r\n      this.ntkSmartLoaderService.addLoader(loader, this.force);\r\n      console.log(\r\n        'Loader added to service. Stack count:',\r\n        this.ntkSmartLoaderService.getLoaderStackCount()\r\n      );\r\n\r\n      this.layerPosition += this.ntkSmartLoaderService.getLoaderStackCount();\r\n      this.addCustomClass(\r\n        this.identifier.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\r\n      );\r\n\r\n      if (this.autostart) {\r\n        console.log('Autostart enabled, starting loader');\r\n        this.ntkSmartLoaderService.start(this.identifier);\r\n      }\r\n      // Don't auto-start if autostart is false - let user control it manually\r\n    } catch (error) {\r\n      console.error('Error in smart loader initialization:', error);\r\n      throw error;\r\n    }\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.ntkSmartLoaderService.removeLoader(this.identifier);\r\n  }\r\n\r\n  public start(top?: boolean): void {\r\n    console.log('SmartLoader start called for identifier:', this.identifier);\r\n    this.privateIsProcessing = true;\r\n\r\n    clearInterval(this.privateDebouncer);\r\n\r\n    this.visible = true;\r\n    console.log('Loader visible set to true');\r\n\r\n    setTimeout(() => {\r\n      this.addCustomClass(this.privateEnterClass);\r\n    });\r\n\r\n    this.privateDebouncer = setTimeout(() => {\r\n      if (top) {\r\n        this.layerPosition = this.ntkSmartLoaderService.getHigherIndex();\r\n      }\r\n\r\n      if (!document.body.classList.contains(this.privateLoaderBodyClass)) {\r\n        document.body.classList.add(this.privateLoaderBodyClass);\r\n      }\r\n\r\n      this.loading = true;\r\n      console.log('Loader loading set to true');\r\n\r\n      this.onStart.emit(this);\r\n      this.onVisibleChange.emit(this);\r\n\r\n      this.removeCustomClass(this.privateEnterClass);\r\n      this.privateIsProcessing = false;\r\n    }, this.delayIn);\r\n  }\r\n\r\n  public stop(): void {\r\n    if (this.privateIsProcessing) {\r\n      this.visible = false;\r\n      this.loading = false;\r\n    }\r\n\r\n    clearInterval(this.privateDebouncer);\r\n\r\n    this.addCustomClass(this.privateLeaveClass);\r\n    this.loading = false;\r\n    this.privateDebouncer = setTimeout(() => {\r\n      if (document.body.classList.contains(this.privateLoaderBodyClass)) {\r\n        document.body.classList.remove(this.privateLoaderBodyClass);\r\n      }\r\n\r\n      this.visible = false;\r\n\r\n      this.onStop.emit(this);\r\n      this.onVisibleChange.emit(this);\r\n\r\n      this.removeCustomClass(this.privateLeaveClass);\r\n      setTimeout(() => {\r\n        this.changeDetectorRef.markForCheck();\r\n      });\r\n    }, this.delayOut);\r\n  }\r\n\r\n  public addCustomClass(className: string): void {\r\n    if (!this.customClass.length) {\r\n      this.customClass = className;\r\n    } else {\r\n      if (this.customClass.indexOf(className) === -1) {\r\n        this.customClass += ' ' + className;\r\n      }\r\n    }\r\n  }\r\n\r\n  public removeCustomClass(className?: string): void {\r\n    if (className) {\r\n      this.customClass = this.customClass.replace(className, '').trim();\r\n    } else {\r\n      this.customClass = '';\r\n    }\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { NtkSmartLoaderComponent } from './ntk-smart-loader.component';\r\nimport { NtkSmartLoaderService } from './ntk-smart-loader.service';\r\n\r\n@NgModule({\r\n  declarations: [NtkSmartLoaderComponent],\r\n  exports: [NtkSmartLoaderComponent],\r\n  imports: [CommonModule],\r\n})\r\nexport class NtkSmartLoaderModule {\r\n  /**\r\n   * Use in AppModule: new instance of NtkSmartLoader.\r\n   */\r\n  public static forRoot(): ModuleWithProviders<NtkSmartLoaderModule> {\r\n    return {\r\n      ngModule: NtkSmartLoaderModule,\r\n      providers: [NtkSmartLoaderService],\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Use in features modules with lazy loading: new instance of NtkSmartLoader.\r\n   */\r\n  public static forChild(): ModuleWithProviders<NtkSmartLoaderModule> {\r\n    return {\r\n      ngModule: NtkSmartLoaderModule,\r\n      providers: [NtkSmartLoaderService],\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ntk-cms-module\r\n */\r\n\r\nexport { NtkSmartModalService } from './lib/modal/ntk-smart-modal.service';\r\nexport { NtkSmartModalComponent } from './lib/modal/ntk-smart-modal.component';\r\nexport { NtkSmartModalModule } from './lib/modal/ntk-smart-modal.module';\r\nexport { NtkSmartModalStackService } from './lib/modal/ntk-smart-modal-stack.service';\r\n\r\nexport { NtkSmartLoaderService } from './lib/loader/ntk-smart-loader.service';\r\nexport { NtkSmartLoaderComponent } from './lib/loader/ntk-smart-loader.component';\r\nexport { NtkSmartLoaderModule } from './lib/loader/ntk-smart-loader.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NtkSmartModalStackService","i1.NtkSmartLoaderService","i2"],"mappings":"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"}