ngx-kit 2.1.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -149,7 +149,7 @@ class NgxMenuPanel {
149
149
  <ng-content></ng-content>
150
150
  </div>
151
151
  </ng-template>
152
- `, isInline: true, styles: [".ngx-menu-panel{overflow:auto;box-sizing:border-box;outline:0;background-color:var(--ngx-menu-bg, #ffffff);color:var(--ngx-menu-fg, #111111);box-shadow:var(--ngx-menu-shadow, 0px 0px 4px rgb(0 0 0 / 30%));border-radius:var(--ngx-menu-radius, 10px);padding:var(--ngx-menu-padding, 5px);min-width:var(--ngx-menu-min-width, 20px);min-height:var(--ngx-menu-min-height, 40px);will-change:transform,opacity}.ngx-menu-panel.ngx-menu-panel-exit{animation:menu-exit .1s 25ms linear forwards}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
152
+ `, isInline: true, styles: [".ngx-menu-panel{--ngx-menu-bg: light-dark(#ffffff, #252425);--ngx-menu-fg: light-dark(#000000, #ffffff)}.ngx-menu-panel{overflow:auto;box-sizing:border-box;outline:0;background-color:var(--ngx-menu-bg);color:var(--ngx-menu-fg);box-shadow:var(--ngx-menu-shadow, 0px 0px 4px rgb(0 0 0 / 30%));border-radius:var(--ngx-menu-radius, 10px);padding:var(--ngx-menu-padding, 5px);min-width:var(--ngx-menu-min-width, 20px);min-height:var(--ngx-menu-min-height, 40px);will-change:transform,opacity}.ngx-menu-panel.ngx-menu-panel-exit{animation:menu-exit .1s 25ms linear forwards}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
153
153
  }
154
154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxMenuPanel, decorators: [{
155
155
  type: Component,
@@ -159,7 +159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
159
159
  <ng-content></ng-content>
160
160
  </div>
161
161
  </ng-template>
162
- `, exportAs: 'NgxMenu', imports: [CommonModule], providers: [{ provide: NGX_MENU_CONTEXT, useExisting: NgxMenuPanel }], styles: [".ngx-menu-panel{overflow:auto;box-sizing:border-box;outline:0;background-color:var(--ngx-menu-bg, #ffffff);color:var(--ngx-menu-fg, #111111);box-shadow:var(--ngx-menu-shadow, 0px 0px 4px rgb(0 0 0 / 30%));border-radius:var(--ngx-menu-radius, 10px);padding:var(--ngx-menu-padding, 5px);min-width:var(--ngx-menu-min-width, 20px);min-height:var(--ngx-menu-min-height, 40px);will-change:transform,opacity}.ngx-menu-panel.ngx-menu-panel-exit{animation:menu-exit .1s 25ms linear forwards}\n"] }]
162
+ `, exportAs: 'NgxMenu', imports: [CommonModule], providers: [{ provide: NGX_MENU_CONTEXT, useExisting: NgxMenuPanel }], styles: [".ngx-menu-panel{--ngx-menu-bg: light-dark(#ffffff, #252425);--ngx-menu-fg: light-dark(#000000, #ffffff)}.ngx-menu-panel{overflow:auto;box-sizing:border-box;outline:0;background-color:var(--ngx-menu-bg);color:var(--ngx-menu-fg);box-shadow:var(--ngx-menu-shadow, 0px 0px 4px rgb(0 0 0 / 30%));border-radius:var(--ngx-menu-radius, 10px);padding:var(--ngx-menu-padding, 5px);min-width:var(--ngx-menu-min-width, 20px);min-height:var(--ngx-menu-min-height, 40px);will-change:transform,opacity}.ngx-menu-panel.ngx-menu-panel-exit{animation:menu-exit .1s 25ms linear forwards}\n"] }]
163
163
  }], propDecorators: { template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
164
164
 
165
165
  class NgxMenuItem {
@@ -179,7 +179,7 @@ class NgxMenuItem {
179
179
  <div class="ngx-menu-item">
180
180
  <ng-content></ng-content>
181
181
  </div>
182
- `, isInline: true, styles: [".ngx-menu-item{box-sizing:border-box;outline:0;padding:var(--ngx-menu-item-padding, 6px 12px)}.ngx-menu-item:hover{cursor:pointer;background-color:var(--ngx-menu-item-padding, #9bc6ff68)}\n"] });
182
+ `, isInline: true, styles: [".ngx-menu-item{box-sizing:border-box;outline:0;padding:var(--ngx-menu-item-padding, 6px 12px);transition:all .3s}.ngx-menu-item:hover{cursor:pointer;background-color:var(--ngx-menu-item-padding, #9bc6ff68)}\n"] });
183
183
  }
184
184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxMenuItem, decorators: [{
185
185
  type: Component,
@@ -187,7 +187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
187
187
  <div class="ngx-menu-item">
188
188
  <ng-content></ng-content>
189
189
  </div>
190
- `, exportAs: 'NgxMenuItem', styles: [".ngx-menu-item{box-sizing:border-box;outline:0;padding:var(--ngx-menu-item-padding, 6px 12px)}.ngx-menu-item:hover{cursor:pointer;background-color:var(--ngx-menu-item-padding, #9bc6ff68)}\n"] }]
190
+ `, exportAs: 'NgxMenuItem', styles: [".ngx-menu-item{box-sizing:border-box;outline:0;padding:var(--ngx-menu-item-padding, 6px 12px);transition:all .3s}.ngx-menu-item:hover{cursor:pointer;background-color:var(--ngx-menu-item-padding, #9bc6ff68)}\n"] }]
191
191
  }], propDecorators: { onClick: [{
192
192
  type: HostListener,
193
193
  args: ['click']
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-kit-menu.mjs","sources":["../../../projects/libs/menu/directives/ngx-menu.directive.ts","../../../projects/libs/menu/directives/ngx-context-menu.directive.ts","../../../projects/libs/menu/tokens/menu-context.token.ts","../../../projects/libs/menu/components/ngx-menu/menu.component.ts","../../../projects/libs/menu/components/ngx-menu-item/menu-item.component.ts","../../../projects/libs/menu/components/ngx-menu-divider/menu-divider.component.ts","../../../projects/libs/menu/ngx-menu.module.ts","../../../projects/libs/menu/ngx-kit-menu.ts"],"sourcesContent":["import {\r\n Directive,\r\n OnDestroy,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n ApplicationRef,\r\n} from '@angular/core';\r\nimport { OverlayRef, OverlayService, OverlayInstance, Alignment, Placement } from 'ngx-kit/shared';\r\nimport { NgxMenuPanel } from '../components/ngx-menu/menu.component';\r\n\r\n@Directive({\r\n selector: '[ngxMenu]',\r\n exportAs: 'ngxMenu',\r\n})\r\nexport class NgxMenu implements OnDestroy {\r\n ngxMenu = input.required<NgxMenuPanel>();\r\n placement = input<Placement>();\r\n alignment = input<Alignment>();\r\n\r\n private containerRef?: OverlayRef<NgxMenuPanel>;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private appRef: ApplicationRef,\r\n private overlayService: OverlayService,\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this.destroyContainer();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(ev: Event) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.toggleContainer();\r\n }\r\n\r\n private toggleContainer() {\r\n if (this.containerRef) {\r\n this.destroyContainer();\r\n return;\r\n }\r\n const t = this.ngxMenu().template();\r\n if (!t) return;\r\n this.containerRef = this.overlayService.openTemplate({\r\n anchor: this.el.nativeElement,\r\n template: t,\r\n appRef: this.appRef,\r\n alignment: this.alignment() ?? 'start',\r\n placement: this.placement() ?? 'auto',\r\n onClosed: () => {\r\n this.containerRef = undefined;\r\n this.overlayService.closeAll();\r\n },\r\n configure: (instance: OverlayInstance, ref: OverlayRef<NgxMenuPanel>) => {\r\n this.ngxMenu().containerRef = ref;\r\n },\r\n });\r\n }\r\n\r\n private destroyContainer() {\r\n this.containerRef?.close();\r\n this.containerRef = undefined;\r\n }\r\n}\r\n","import { Directive, OnDestroy, input, ApplicationRef, ElementRef } from '@angular/core';\r\nimport { OverlayRef, OverlayService, OverlayInstance } from 'ngx-kit/shared';\r\nimport { NgxMenuPanel } from '../components/ngx-menu/menu.component';\r\n\r\n@Directive({\r\n selector: '[ngxContextMenu]',\r\n exportAs: 'ngxContextMenu',\r\n})\r\nexport class NgxContextMenu implements OnDestroy {\r\n ngxContextMenu = input.required<NgxMenuPanel>();\r\n\r\n private containerRef?: OverlayRef<NgxMenuPanel>;\r\n\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private appRef: ApplicationRef,\r\n private overlayService: OverlayService,\r\n ) {\r\n el.nativeElement.addEventListener('contextmenu', (ev) => this.onClick(ev));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyContainer();\r\n this.el.nativeElement.removeEventListener('contextmenu', (ev) => this.onClick(ev));\r\n }\r\n\r\n onClick(ev: PointerEvent) {\r\n if (ev.currentTarget == this.el.nativeElement) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.toggleContainer(ev.clientX, ev.clientY);\r\n }\r\n }\r\n\r\n private toggleContainer(x: number, y: number) {\r\n if (this.containerRef) {\r\n this.destroyContainer();\r\n return;\r\n }\r\n const t = this.ngxContextMenu().template();\r\n if (!t) return;\r\n this.containerRef = this.overlayService.openTemplate({\r\n anchor: this.el.nativeElement,\r\n point: { x, y },\r\n template: t,\r\n appRef: this.appRef,\r\n alignment: 'start',\r\n placement: 'auto',\r\n onClosed: () => {\r\n this.containerRef = undefined;\r\n this.overlayService.closeAll();\r\n },\r\n configure: (instance: OverlayInstance, ref: OverlayRef<NgxMenuPanel>) => {\r\n this.ngxContextMenu().containerRef = ref;\r\n },\r\n });\r\n }\r\n\r\n private destroyContainer() {\r\n this.containerRef?.close();\r\n this.containerRef = undefined;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface MenuContext {\r\n close(): void;\r\n}\r\n\r\nexport const NGX_MENU_CONTEXT = new InjectionToken<MenuContext>('ngx-menu-context');\r\n","import { CommonModule } from '@angular/common';\nimport { Component, input, TemplateRef, viewChild } from '@angular/core';\nimport { OverlayRef } from 'ngx-kit/shared';\nimport { MenuContext, NGX_MENU_CONTEXT } from '../../tokens/menu-context.token';\n\n@Component({\n selector: 'ngx-menu,[ngx-menu]',\n template: `\n <ng-template>\n <div class=\"ngx-menu-panel\" [class]=\"class()\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n exportAs: 'NgxMenu',\n styles: `\n .ngx-menu-panel {\n overflow: auto;\n box-sizing: border-box;\n outline: 0;\n background-color: var(--ngx-menu-bg, #ffffff);\n color: var(--ngx-menu-fg, #111111);\n box-shadow: var(--ngx-menu-shadow, 0px 0px 4px rgb(0 0 0 / 30%));\n border-radius: var(--ngx-menu-radius, 10px);\n padding: var(--ngx-menu-padding, 5px);\n min-width: var(--ngx-menu-min-width, 20px);\n min-height: var(--ngx-menu-min-height, 40px);\n will-change: transform, opacity;\n }\n .ngx-menu-panel.ngx-menu-panel-exit {\n animation: menu-exit 100ms 25ms linear forwards;\n }\n `,\n imports: [CommonModule],\n providers: [{ provide: NGX_MENU_CONTEXT, useExisting: NgxMenuPanel }],\n})\nexport class NgxMenuPanel implements MenuContext {\n template = viewChild<TemplateRef<any>>(TemplateRef);\n class = input<string>();\n\n containerRef?: OverlayRef<NgxMenuPanel>;\n\n close(): void {\n this.containerRef?.close();\n }\n}\n","import { Component, HostListener, inject } from '@angular/core';\nimport { NGX_MENU_CONTEXT } from '../../tokens/menu-context.token';\nimport { NgxMenu } from '../../directives/ngx-menu.directive';\n\n@Component({\n selector: 'ngx-menu-item,[ngx-menu-item]',\n template: `\n <div class=\"ngx-menu-item\">\n <ng-content></ng-content>\n </div>\n `,\n exportAs: 'NgxMenuItem',\n styles: `\n .ngx-menu-item {\n box-sizing: border-box;\n outline: 0;\n padding: var(--ngx-menu-item-padding, 6px 12px);\n &:hover {\n cursor: pointer;\n background-color: var(--ngx-menu-item-padding, #9bc6ff68);\n }\n }\n `,\n})\nexport class NgxMenuItem {\n menuContext = inject(NGX_MENU_CONTEXT);\n childMenu = inject(NgxMenu, {\n self: true,\n optional: true,\n });\n\n @HostListener('click')\n onClick() {\n if (this.childMenu?.ngxMenu) {\n return;\n }\n this.menuContext?.close();\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-menu-divider,[ngx-menu-divider]',\n template: ``,\n styles: `\n :host {\n display: block;\n border-bottom: var(--ngx-menu-item-border, 1px #43434d3d solid);\n border-bottom-color: var(--ngx-menu-divider-border-color, #43434d3d);\n margin: var(--ngx-menu-divider-margin, 10px calc(var(--ngx-menu-padding, 5px) * -1));\n }\n `,\n})\nexport class NgxMenuDivider {}\n","import { NgModule } from '@angular/core';\r\nimport { NgxMenuDivider } from './components/ngx-menu-divider/menu-divider.component';\r\nimport { NgxMenuItem } from './components/ngx-menu-item/menu-item.component';\r\nimport { NgxMenuPanel } from './components/ngx-menu/menu.component';\r\nimport { NgxMenu } from './directives/ngx-menu.directive';\r\nimport { NgxContextMenu } from './public-api';\r\n\r\nconst d = [NgxMenu, NgxContextMenu, NgxMenuPanel, NgxMenuItem, NgxMenuDivider];\r\n@NgModule({\r\n imports: d,\r\n exports: d,\r\n})\r\nexport class NgxMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-kit-menu.mjs","sources":["../../../projects/libs/menu/directives/ngx-menu.directive.ts","../../../projects/libs/menu/directives/ngx-context-menu.directive.ts","../../../projects/libs/menu/tokens/menu-context.token.ts","../../../projects/libs/menu/components/ngx-menu/menu.component.ts","../../../projects/libs/menu/components/ngx-menu-item/menu-item.component.ts","../../../projects/libs/menu/components/ngx-menu-divider/menu-divider.component.ts","../../../projects/libs/menu/ngx-menu.module.ts","../../../projects/libs/menu/ngx-kit-menu.ts"],"sourcesContent":["import {\r\n Directive,\r\n OnDestroy,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n ApplicationRef,\r\n} from '@angular/core';\r\nimport { OverlayRef, OverlayService, OverlayInstance, Alignment, Placement } from 'ngx-kit/shared';\r\nimport { NgxMenuPanel } from '../components/ngx-menu/menu.component';\r\n\r\n@Directive({\r\n selector: '[ngxMenu]',\r\n exportAs: 'ngxMenu',\r\n})\r\nexport class NgxMenu implements OnDestroy {\r\n ngxMenu = input.required<NgxMenuPanel>();\r\n placement = input<Placement>();\r\n alignment = input<Alignment>();\r\n\r\n private containerRef?: OverlayRef<NgxMenuPanel>;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private appRef: ApplicationRef,\r\n private overlayService: OverlayService,\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this.destroyContainer();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(ev: Event) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.toggleContainer();\r\n }\r\n\r\n private toggleContainer() {\r\n if (this.containerRef) {\r\n this.destroyContainer();\r\n return;\r\n }\r\n const t = this.ngxMenu().template();\r\n if (!t) return;\r\n this.containerRef = this.overlayService.openTemplate({\r\n anchor: this.el.nativeElement,\r\n template: t,\r\n appRef: this.appRef,\r\n alignment: this.alignment() ?? 'start',\r\n placement: this.placement() ?? 'auto',\r\n onClosed: () => {\r\n this.containerRef = undefined;\r\n this.overlayService.closeAll();\r\n },\r\n configure: (instance: OverlayInstance, ref: OverlayRef<NgxMenuPanel>) => {\r\n this.ngxMenu().containerRef = ref;\r\n },\r\n });\r\n }\r\n\r\n private destroyContainer() {\r\n this.containerRef?.close();\r\n this.containerRef = undefined;\r\n }\r\n}\r\n","import { Directive, OnDestroy, input, ApplicationRef, ElementRef } from '@angular/core';\r\nimport { OverlayRef, OverlayService, OverlayInstance } from 'ngx-kit/shared';\r\nimport { NgxMenuPanel } from '../components/ngx-menu/menu.component';\r\n\r\n@Directive({\r\n selector: '[ngxContextMenu]',\r\n exportAs: 'ngxContextMenu',\r\n})\r\nexport class NgxContextMenu implements OnDestroy {\r\n ngxContextMenu = input.required<NgxMenuPanel>();\r\n\r\n private containerRef?: OverlayRef<NgxMenuPanel>;\r\n\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private appRef: ApplicationRef,\r\n private overlayService: OverlayService,\r\n ) {\r\n el.nativeElement.addEventListener('contextmenu', (ev) => this.onClick(ev));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyContainer();\r\n this.el.nativeElement.removeEventListener('contextmenu', (ev) => this.onClick(ev));\r\n }\r\n\r\n onClick(ev: PointerEvent) {\r\n if (ev.currentTarget == this.el.nativeElement) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.toggleContainer(ev.clientX, ev.clientY);\r\n }\r\n }\r\n\r\n private toggleContainer(x: number, y: number) {\r\n if (this.containerRef) {\r\n this.destroyContainer();\r\n return;\r\n }\r\n const t = this.ngxContextMenu().template();\r\n if (!t) return;\r\n this.containerRef = this.overlayService.openTemplate({\r\n anchor: this.el.nativeElement,\r\n point: { x, y },\r\n template: t,\r\n appRef: this.appRef,\r\n alignment: 'start',\r\n placement: 'auto',\r\n onClosed: () => {\r\n this.containerRef = undefined;\r\n this.overlayService.closeAll();\r\n },\r\n configure: (instance: OverlayInstance, ref: OverlayRef<NgxMenuPanel>) => {\r\n this.ngxContextMenu().containerRef = ref;\r\n },\r\n });\r\n }\r\n\r\n private destroyContainer() {\r\n this.containerRef?.close();\r\n this.containerRef = undefined;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface MenuContext {\r\n close(): void;\r\n}\r\n\r\nexport const NGX_MENU_CONTEXT = new InjectionToken<MenuContext>('ngx-menu-context');\r\n","import { CommonModule } from '@angular/common';\nimport { Component, input, TemplateRef, viewChild } from '@angular/core';\nimport { OverlayRef } from 'ngx-kit/shared';\nimport { MenuContext, NGX_MENU_CONTEXT } from '../../tokens/menu-context.token';\n\n@Component({\n selector: 'ngx-menu,[ngx-menu]',\n template: `\n <ng-template>\n <div class=\"ngx-menu-panel\" [class]=\"class()\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n exportAs: 'NgxMenu',\n styles: `\n .ngx-menu-panel {\n --ngx-menu-bg: light-dark(#ffffff, #252425);\n --ngx-menu-fg: light-dark(#000000, #ffffff);\n }\n .ngx-menu-panel {\n overflow: auto;\n box-sizing: border-box;\n outline: 0;\n background-color: var(--ngx-menu-bg);\n color: var(--ngx-menu-fg);\n box-shadow: var(--ngx-menu-shadow, 0px 0px 4px rgb(0 0 0 / 30%));\n border-radius: var(--ngx-menu-radius, 10px);\n padding: var(--ngx-menu-padding, 5px);\n min-width: var(--ngx-menu-min-width, 20px);\n min-height: var(--ngx-menu-min-height, 40px);\n will-change: transform, opacity;\n }\n .ngx-menu-panel.ngx-menu-panel-exit {\n animation: menu-exit 100ms 25ms linear forwards;\n }\n `,\n imports: [CommonModule],\n providers: [{ provide: NGX_MENU_CONTEXT, useExisting: NgxMenuPanel }],\n})\nexport class NgxMenuPanel implements MenuContext {\n template = viewChild<TemplateRef<any>>(TemplateRef);\n class = input<string>();\n\n containerRef?: OverlayRef<NgxMenuPanel>;\n\n close(): void {\n this.containerRef?.close();\n }\n}\n","import { Component, HostListener, inject } from '@angular/core';\nimport { NGX_MENU_CONTEXT } from '../../tokens/menu-context.token';\nimport { NgxMenu } from '../../directives/ngx-menu.directive';\n\n@Component({\n selector: 'ngx-menu-item,[ngx-menu-item]',\n template: `\n <div class=\"ngx-menu-item\">\n <ng-content></ng-content>\n </div>\n `,\n exportAs: 'NgxMenuItem',\n styles: `\n .ngx-menu-item {\n box-sizing: border-box;\n outline: 0;\n padding: var(--ngx-menu-item-padding, 6px 12px);\n transition: all 300ms;\n &:hover {\n cursor: pointer;\n background-color: var(--ngx-menu-item-padding, #9bc6ff68);\n }\n }\n `,\n})\nexport class NgxMenuItem {\n menuContext = inject(NGX_MENU_CONTEXT);\n childMenu = inject(NgxMenu, {\n self: true,\n optional: true,\n });\n\n @HostListener('click')\n onClick() {\n if (this.childMenu?.ngxMenu) {\n return;\n }\n this.menuContext?.close();\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-menu-divider,[ngx-menu-divider]',\n template: ``,\n styles: `\n :host {\n display: block;\n border-bottom: var(--ngx-menu-item-border, 1px #43434d3d solid);\n border-bottom-color: var(--ngx-menu-divider-border-color, #43434d3d);\n margin: var(--ngx-menu-divider-margin, 10px calc(var(--ngx-menu-padding, 5px) * -1));\n }\n `,\n})\nexport class NgxMenuDivider {}\n","import { NgModule } from '@angular/core';\r\nimport { NgxMenuDivider } from './components/ngx-menu-divider/menu-divider.component';\r\nimport { NgxMenuItem } from './components/ngx-menu-item/menu-item.component';\r\nimport { NgxMenuPanel } from './components/ngx-menu/menu.component';\r\nimport { NgxMenu } from './directives/ngx-menu.directive';\r\nimport { NgxContextMenu } from './public-api';\r\n\r\nconst d = [NgxMenu, NgxContextMenu, NgxMenuPanel, NgxMenuItem, NgxMenuDivider];\r\n@NgModule({\r\n imports: d,\r\n exports: d,\r\n})\r\nexport class NgxMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,350 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, HostListener, Component, createComponent, Inject, Injectable, makeEnvironmentProviders, provideEnvironmentInitializer, inject, Injector } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule, DOCUMENT } from '@angular/common';
5
+ import { Subject } from 'rxjs';
6
+
7
+ const NGX_MESSAGE_CONFIGS = new InjectionToken('ngx-message-configs');
8
+ const NGX_MESSAGE_API = new InjectionToken('NgxMessageService');
9
+ const NGX_MESSAGE_DEFAULT_OPTIONS = {
10
+ useOverlay: true,
11
+ title: '',
12
+ text: '',
13
+ html: '',
14
+ backdrop: true,
15
+ icon: 'None',
16
+ width: undefined,
17
+ allowOutsideClick: true,
18
+ allowEscapeKey: true,
19
+ allowEnterKey: true,
20
+ showConfirmButton: true,
21
+ showDenyButton: false,
22
+ showCancelButton: false,
23
+ confirmButtonText: 'Ok',
24
+ denyButtonText: 'No',
25
+ cancelButtonText: 'Cancel',
26
+ confirmButtonColor: '',
27
+ denyButtonColor: '',
28
+ cancelButtonColor: '',
29
+ confirmButtonAriaLabel: '',
30
+ denyButtonAriaLabel: '',
31
+ cancelButtonAriaLabel: '',
32
+ reverseButtons: false,
33
+ showCloseButton: false,
34
+ containerClass: '',
35
+ };
36
+
37
+ /**
38
+ * An enum of possible reasons that can explain an alert dismissal.
39
+ */
40
+ var DismissReason;
41
+ (function (DismissReason) {
42
+ DismissReason[DismissReason["cancel"] = 0] = "cancel";
43
+ DismissReason[DismissReason["backdrop"] = 1] = "backdrop";
44
+ DismissReason[DismissReason["close"] = 2] = "close";
45
+ /**
46
+ * @description ❌⚠️NOT Implemented!⚠️❌
47
+ */
48
+ DismissReason[DismissReason["esc"] = 3] = "esc";
49
+ /**
50
+ * @description ❌⚠️NOT Implemented!⚠️❌
51
+ */
52
+ DismissReason[DismissReason["timer"] = 4] = "timer";
53
+ })(DismissReason || (DismissReason = {}));
54
+
55
+ class NgxMessageComponent {
56
+ options;
57
+ index = 0;
58
+ _onClose = new Subject();
59
+ onClose = this._onClose.asObservable();
60
+ onScapeKey(event) {
61
+ if (this.options.allowEscapeKey) {
62
+ this.onCancel();
63
+ }
64
+ }
65
+ onEnterKey(event) {
66
+ event.stopPropagation();
67
+ event.preventDefault();
68
+ if (this.options.allowEnterKey) {
69
+ if (this.options.showConfirmButton) {
70
+ this.onConfirm();
71
+ }
72
+ else if (this.options.showDenyButton) {
73
+ this.onDeny();
74
+ }
75
+ else {
76
+ this.onCancel();
77
+ }
78
+ }
79
+ }
80
+ onConfirm() {
81
+ this._onClose.next({
82
+ index: this.index,
83
+ result: {
84
+ isConfirmed: true,
85
+ isDismissed: false,
86
+ isDenied: false,
87
+ dismiss: DismissReason.close,
88
+ },
89
+ });
90
+ }
91
+ onCancel() {
92
+ this._onClose.next({
93
+ index: this.index,
94
+ result: {
95
+ isConfirmed: false,
96
+ isDismissed: true,
97
+ isDenied: false,
98
+ dismiss: DismissReason.cancel,
99
+ },
100
+ });
101
+ }
102
+ onDeny() {
103
+ this._onClose.next({
104
+ index: this.index,
105
+ result: {
106
+ isConfirmed: false,
107
+ isDismissed: false,
108
+ isDenied: true,
109
+ dismiss: DismissReason.close,
110
+ },
111
+ });
112
+ }
113
+ close() {
114
+ this.onCancel();
115
+ }
116
+ onOutSideClick() {
117
+ if (this.options.allowOutsideClick) {
118
+ this.onCancel();
119
+ }
120
+ }
121
+ innerOnClick(ev) {
122
+ ev.preventDefault();
123
+ ev.stopPropagation();
124
+ }
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: NgxMessageComponent, isStandalone: true, selector: "ngx-message", host: { listeners: { "document:keydown.escape": "onScapeKey($event)", "document:keydown.enter": "onEnterKey($event)" } }, providers: [
127
+ {
128
+ provide: NGX_MESSAGE_CONFIGS,
129
+ useValue: NGX_MESSAGE_DEFAULT_OPTIONS,
130
+ },
131
+ ], ngImport: i0, template: "<div\r\n class=\"ngx-message-container\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\">\r\n <div class=\"ngx-message-inner\" (click)=\"innerOnClick($event)\">\r\n @if (options.showCloseButton) {\r\n <div class=\"ngx-message-header\">\r\n <button class=\"ngx-message-close\" (click)=\"close()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M312.1 375c9.369 9.369 9.369 24.57 0 33.94s-24.57 9.369-33.94 0L160 289.9l-119 119c-9.369 9.369-24.57 9.369-33.94 0s-9.369-24.57 0-33.94L126.1 256L7.027 136.1c-9.369-9.369-9.369-24.57 0-33.94s24.57-9.369 33.94 0L160 222.1l119-119c9.369-9.369 24.57-9.369 33.94 0s9.369 24.57 0 33.94L193.9 256L312.1 375z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- --------- icon -------- -->\r\n @switch (options.icon) {\r\n @case ('success') {\r\n <div class=\"alert-icon alert-success alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-success-circular-line-left\"></div>\r\n <span class=\"alert-success-line-tip\"></span>\r\n <span class=\"alert-success-line-long\"></span>\r\n <div class=\"alert-success-ring\"></div>\r\n <div class=\"alert-success-fix\"></div>\r\n <div class=\"alert-success-circular-line-right\"></div>\r\n </div>\r\n }\r\n @case ('error') {\r\n <div class=\"alert-icon alert-error alert-icon-show\" style=\"display: flex\">\r\n <span class=\"alert-x-mark\">\r\n <span class=\"alert-x-mark-line-left\"></span>\r\n <span class=\"alert-x-mark-line-right\"></span>\r\n </span>\r\n </div>\r\n }\r\n @case ('info') {\r\n <div class=\"alert-icon alert-info alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">i</div>\r\n </div>\r\n }\r\n @case ('question') {\r\n <div class=\"alert-icon alert-question alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">?</div>\r\n </div>\r\n }\r\n @case ('warning') {\r\n <div class=\"alert-icon alert-warning alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">!</div>\r\n </div>\r\n }\r\n }\r\n <!-- --------- /icon -------- -->\r\n\r\n <div class=\"ngx-message-title\">\r\n {{ options.title }}\r\n </div>\r\n <div class=\"ngx-message-body\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </div>\r\n <div class=\"ngx-message-footer\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn-cancel\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button class=\"btn-deny\" (click)=\"onDeny()\" [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn-confirm\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--ngx-message-bg: light-dark(#ffffff, #252425);--ngx-message-fg: light-dark(#000000, #ffffff)}:host:popover-open{margin:0;padding:0;border:none;background:transparent;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;overflow:auto}.ngx-message-container{position:fixed;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:9999;top:0;bottom:0;width:100%}.ngx-message-container.has-backdrop{background:#0000001e}.ngx-message-container .ngx-message-inner{background-color:var(--ngx-message-bg);color:var(--ngx-message-fg);box-shadow:var(--ngx-message-shadow, 0px 0px 4px rgba(0, 0, 0, .3));border-radius:var(--ngx-message-radius, 10px);width:400px;max-width:95%;min-height:150px;animation:ShowAlert .3s}.ngx-message-container .ngx-message-header{display:flex;align-items:center;font-size:30px;min-height:40px}.ngx-message-container .ngx-message-header .ngx-message-close{background:none;border:none;outline:none;cursor:pointer}.ngx-message-container .ngx-message-header .ngx-message-close svg{width:20px;height:20px}.ngx-message-container .ngx-message-body{padding:5px 15px 15px;text-align:center;max-height:calc(100vh - 120px);overflow:auto;line-height:2}.ngx-message-container .ngx-message-title{padding:15px;text-align:center;font-size:1.2rem}.ngx-message-container .ngx-message-footer{display:flex;align-items:center;flex-wrap:wrap;padding:15px;gap:6px;justify-content:center}.ngx-message-container .ngx-message-footer button{background:none;border:none;background-color:#007bff;color:#fff;padding:8px 15px;border-radius:3px;cursor:pointer}.ngx-message-container .ngx-message-footer button.btn-confirm{background-color:#007bff}.ngx-message-container .ngx-message-footer button.btn-cancel{background-color:#6e7881}.ngx-message-container .ngx-message-footer button.btn-deny{background-color:#dc3741}@keyframes ShowAlert{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}to{transform:scale(1)}}\n", ".alert-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:.5em auto .6em;border:.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;user-select:none}.alert-icon .alert-icon-content{display:flex;align-items:center;font-size:3.75em}.alert-icon.alert-error{border-color:#f27474;color:#f27474}.alert-icon.alert-error .alert-x-mark{position:relative;flex-grow:1}.alert-icon.alert-error [class^=alert-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.alert-icon.alert-error [class^=alert-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.alert-icon.alert-error [class^=alert-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.alert-icon.alert-error.alert-icon-show{animation:alert-animate-error-icon .5s}.alert-icon.alert-error.alert-icon-show .alert-x-mark{animation:alert-animate-error-x-mark .5s}.alert-icon.alert-warning{border-color:#facea8;color:#f8bb86}.alert-icon.alert-warning.alert-icon-show{animation:alert-animate-error-icon .5s}.alert-icon.alert-warning.alert-icon-show .alert-icon-content{animation:alert-animate-i-mark .5s}.alert-icon.alert-info{border-color:#9de0f6;color:#3fc3ee}.alert-icon.alert-info.alert-icon-show{animation:alert-animate-error-icon .5s}.alert-icon.alert-info.alert-icon-show .alert-icon-content{animation:alert-animate-i-mark .8s}.alert-icon.alert-question{border-color:#c9dae1;color:#87adbd}.alert-icon.alert-question.alert-icon-show{animation:alert-animate-error-icon .5s}.alert-icon.alert-question.alert-icon-show .alert-icon-content{animation:alert-animate-question-mark .8s}.alert-icon.alert-success{border-color:#a5dc86;color:#a5dc86}.alert-icon.alert-success [class^=alert-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.alert-icon.alert-success [class^=alert-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.alert-icon.alert-success [class^=alert-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.alert-icon.alert-success .alert-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.alert-icon.alert-success .alert-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.alert-icon.alert-success [class^=alert-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.alert-icon.alert-success [class^=alert-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.alert-icon.alert-success [class^=alert-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.alert-icon.alert-success.alert-icon-show .alert-success-line-tip{animation:alert-animate-success-line-tip .75s}.alert-icon.alert-success.alert-icon-show .alert-success-line-long{animation:alert-animate-success-line-long .75s}.alert-icon.alert-success.alert-icon-show .alert-success-circular-line-right{animation:alert-rotate-success-circular-line 4.25s ease-in}@keyframes alert-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}to{top:1.125em;left:.1875em;width:.75em}}@keyframes alert-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}to{top:.9375em;right:.1875em;width:1.375em}}@keyframes alert-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}to{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes alert-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}to{top:2.375em;right:.5em;width:2.9375em}}@keyframes alert-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}to{transform:rotate(-405deg)}}@keyframes alert-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}to{margin-top:0;transform:scale(1);opacity:1}}@keyframes alert-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}to{transform:rotateX(0);opacity:1}}@keyframes alert-rotate-loading{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes alert-animate-question-mark{0%{transform:rotateY(-360deg)}to{transform:rotateY(0)}}@keyframes alert-animate-i-mark{0%{transform:rotate(45deg);opacity:0}25%{transform:rotate(-25deg);opacity:.4}50%{transform:rotate(15deg);opacity:.8}75%{transform:rotate(-5deg);opacity:1}to{transform:rotateX(0);opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxMessageComponent, decorators: [{
134
+ type: Component,
135
+ args: [{ selector: 'ngx-message', standalone: true, imports: [CommonModule], providers: [
136
+ {
137
+ provide: NGX_MESSAGE_CONFIGS,
138
+ useValue: NGX_MESSAGE_DEFAULT_OPTIONS,
139
+ },
140
+ ], template: "<div\r\n class=\"ngx-message-container\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\">\r\n <div class=\"ngx-message-inner\" (click)=\"innerOnClick($event)\">\r\n @if (options.showCloseButton) {\r\n <div class=\"ngx-message-header\">\r\n <button class=\"ngx-message-close\" (click)=\"close()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M312.1 375c9.369 9.369 9.369 24.57 0 33.94s-24.57 9.369-33.94 0L160 289.9l-119 119c-9.369 9.369-24.57 9.369-33.94 0s-9.369-24.57 0-33.94L126.1 256L7.027 136.1c-9.369-9.369-9.369-24.57 0-33.94s24.57-9.369 33.94 0L160 222.1l119-119c9.369-9.369 24.57-9.369 33.94 0s9.369 24.57 0 33.94L193.9 256L312.1 375z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- --------- icon -------- -->\r\n @switch (options.icon) {\r\n @case ('success') {\r\n <div class=\"alert-icon alert-success alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-success-circular-line-left\"></div>\r\n <span class=\"alert-success-line-tip\"></span>\r\n <span class=\"alert-success-line-long\"></span>\r\n <div class=\"alert-success-ring\"></div>\r\n <div class=\"alert-success-fix\"></div>\r\n <div class=\"alert-success-circular-line-right\"></div>\r\n </div>\r\n }\r\n @case ('error') {\r\n <div class=\"alert-icon alert-error alert-icon-show\" style=\"display: flex\">\r\n <span class=\"alert-x-mark\">\r\n <span class=\"alert-x-mark-line-left\"></span>\r\n <span class=\"alert-x-mark-line-right\"></span>\r\n </span>\r\n </div>\r\n }\r\n @case ('info') {\r\n <div class=\"alert-icon alert-info alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">i</div>\r\n </div>\r\n }\r\n @case ('question') {\r\n <div class=\"alert-icon alert-question alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">?</div>\r\n </div>\r\n }\r\n @case ('warning') {\r\n <div class=\"alert-icon alert-warning alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">!</div>\r\n </div>\r\n }\r\n }\r\n <!-- --------- /icon -------- -->\r\n\r\n <div class=\"ngx-message-title\">\r\n {{ options.title }}\r\n </div>\r\n <div class=\"ngx-message-body\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </div>\r\n <div class=\"ngx-message-footer\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn-cancel\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button class=\"btn-deny\" (click)=\"onDeny()\" [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn-confirm\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--ngx-message-bg: light-dark(#ffffff, #252425);--ngx-message-fg: light-dark(#000000, #ffffff)}:host:popover-open{margin:0;padding:0;border:none;background:transparent;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;overflow:auto}.ngx-message-container{position:fixed;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:9999;top:0;bottom:0;width:100%}.ngx-message-container.has-backdrop{background:#0000001e}.ngx-message-container .ngx-message-inner{background-color:var(--ngx-message-bg);color:var(--ngx-message-fg);box-shadow:var(--ngx-message-shadow, 0px 0px 4px rgba(0, 0, 0, .3));border-radius:var(--ngx-message-radius, 10px);width:400px;max-width:95%;min-height:150px;animation:ShowAlert .3s}.ngx-message-container .ngx-message-header{display:flex;align-items:center;font-size:30px;min-height:40px}.ngx-message-container .ngx-message-header .ngx-message-close{background:none;border:none;outline:none;cursor:pointer}.ngx-message-container .ngx-message-header .ngx-message-close svg{width:20px;height:20px}.ngx-message-container .ngx-message-body{padding:5px 15px 15px;text-align:center;max-height:calc(100vh - 120px);overflow:auto;line-height:2}.ngx-message-container .ngx-message-title{padding:15px;text-align:center;font-size:1.2rem}.ngx-message-container .ngx-message-footer{display:flex;align-items:center;flex-wrap:wrap;padding:15px;gap:6px;justify-content:center}.ngx-message-container .ngx-message-footer button{background:none;border:none;background-color:#007bff;color:#fff;padding:8px 15px;border-radius:3px;cursor:pointer}.ngx-message-container .ngx-message-footer button.btn-confirm{background-color:#007bff}.ngx-message-container .ngx-message-footer button.btn-cancel{background-color:#6e7881}.ngx-message-container .ngx-message-footer button.btn-deny{background-color:#dc3741}@keyframes ShowAlert{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}to{transform:scale(1)}}\n", ".alert-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:.5em auto .6em;border:.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;user-select:none}.alert-icon .alert-icon-content{display:flex;align-items:center;font-size:3.75em}.alert-icon.alert-error{border-color:#f27474;color:#f27474}.alert-icon.alert-error .alert-x-mark{position:relative;flex-grow:1}.alert-icon.alert-error [class^=alert-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.alert-icon.alert-error [class^=alert-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.alert-icon.alert-error [class^=alert-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.alert-icon.alert-error.alert-icon-show{animation:alert-animate-error-icon .5s}.alert-icon.alert-error.alert-icon-show .alert-x-mark{animation:alert-animate-error-x-mark .5s}.alert-icon.alert-warning{border-color:#facea8;color:#f8bb86}.alert-icon.alert-warning.alert-icon-show{animation:alert-animate-error-icon .5s}.alert-icon.alert-warning.alert-icon-show .alert-icon-content{animation:alert-animate-i-mark .5s}.alert-icon.alert-info{border-color:#9de0f6;color:#3fc3ee}.alert-icon.alert-info.alert-icon-show{animation:alert-animate-error-icon .5s}.alert-icon.alert-info.alert-icon-show .alert-icon-content{animation:alert-animate-i-mark .8s}.alert-icon.alert-question{border-color:#c9dae1;color:#87adbd}.alert-icon.alert-question.alert-icon-show{animation:alert-animate-error-icon .5s}.alert-icon.alert-question.alert-icon-show .alert-icon-content{animation:alert-animate-question-mark .8s}.alert-icon.alert-success{border-color:#a5dc86;color:#a5dc86}.alert-icon.alert-success [class^=alert-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.alert-icon.alert-success [class^=alert-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.alert-icon.alert-success [class^=alert-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.alert-icon.alert-success .alert-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.alert-icon.alert-success .alert-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.alert-icon.alert-success [class^=alert-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.alert-icon.alert-success [class^=alert-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.alert-icon.alert-success [class^=alert-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.alert-icon.alert-success.alert-icon-show .alert-success-line-tip{animation:alert-animate-success-line-tip .75s}.alert-icon.alert-success.alert-icon-show .alert-success-line-long{animation:alert-animate-success-line-long .75s}.alert-icon.alert-success.alert-icon-show .alert-success-circular-line-right{animation:alert-rotate-success-circular-line 4.25s ease-in}@keyframes alert-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}to{top:1.125em;left:.1875em;width:.75em}}@keyframes alert-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}to{top:.9375em;right:.1875em;width:1.375em}}@keyframes alert-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}to{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes alert-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}to{top:2.375em;right:.5em;width:2.9375em}}@keyframes alert-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}to{transform:rotate(-405deg)}}@keyframes alert-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}to{margin-top:0;transform:scale(1);opacity:1}}@keyframes alert-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}to{transform:rotateX(0);opacity:1}}@keyframes alert-rotate-loading{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes alert-animate-question-mark{0%{transform:rotateY(-360deg)}to{transform:rotateY(0)}}@keyframes alert-animate-i-mark{0%{transform:rotate(45deg);opacity:0}25%{transform:rotate(-25deg);opacity:.4}50%{transform:rotate(15deg);opacity:.8}75%{transform:rotate(-5deg);opacity:1}to{transform:rotateX(0);opacity:1}}\n"] }]
141
+ }], propDecorators: { onScapeKey: [{
142
+ type: HostListener,
143
+ args: ['document:keydown.escape', ['$event']]
144
+ }], onEnterKey: [{
145
+ type: HostListener,
146
+ args: ['document:keydown.enter', ['$event']]
147
+ }] } });
148
+
149
+ function applyDefaultConfig(config, defaultConfig) {
150
+ var config = JSON.parse(JSON.stringify(config));
151
+ for (let key in defaultConfig) {
152
+ if (config[key] === undefined || config[key] === null || config[key] === '') {
153
+ config[key] = defaultConfig[key];
154
+ }
155
+ else if (typeof config[key] === 'object') {
156
+ config[key] = applyDefaultConfig(config[key], defaultConfig[key]);
157
+ }
158
+ }
159
+ return config;
160
+ }
161
+
162
+ class NgxMessageService {
163
+ appRef;
164
+ injector;
165
+ envInjector;
166
+ _doc;
167
+ currentAdIndex = -1;
168
+ alerts = [];
169
+ insertedId = 0;
170
+ constructor(appRef, injector, envInjector, _doc) {
171
+ this.appRef = appRef;
172
+ this.injector = injector;
173
+ this.envInjector = envInjector;
174
+ this._doc = _doc;
175
+ }
176
+ show(c) {
177
+ let d = applyDefaultConfig(this.injector.get(NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS), NGX_MESSAGE_DEFAULT_OPTIONS);
178
+ const config = applyDefaultConfig(c, d);
179
+ return new Promise((resolve, reject) => {
180
+ const componentRef = createComponent(NgxMessageComponent, {
181
+ environmentInjector: this.envInjector,
182
+ });
183
+ this.appRef.attachView(componentRef.hostView);
184
+ this.appendDialogComponentToBody(componentRef, config);
185
+ componentRef.instance.options = config;
186
+ componentRef.instance.index = this.insertedId;
187
+ componentRef.instance.onClose.subscribe((result) => {
188
+ this.removeDialogComponentFromBody(result.index);
189
+ resolve(result.result);
190
+ });
191
+ this.alerts.push(componentRef);
192
+ this.insertedId++;
193
+ });
194
+ }
195
+ removeDialogComponentFromBody(index) {
196
+ if (this.alerts[index]) {
197
+ const domElem = this.alerts[index].hostView
198
+ .rootNodes[0];
199
+ // قبل از destroy باید hidePopover صدا بزنیم
200
+ if (domElem.popover === 'manual') {
201
+ try {
202
+ domElem.hidePopover();
203
+ }
204
+ catch { }
205
+ }
206
+ this.appRef.detachView(this.alerts[index].hostView);
207
+ this.alerts[index].destroy();
208
+ }
209
+ }
210
+ appendDialogComponentToBody(componentRef, config) {
211
+ const domElem = componentRef.hostView.rootNodes[0];
212
+ if (config.containerClass) {
213
+ for (let c of config.containerClass.split(' ')) {
214
+ if (c.trim())
215
+ domElem.classList.add(c);
216
+ }
217
+ }
218
+ this._doc.body.appendChild(domElem);
219
+ if (config.useOverlay) {
220
+ domElem.popover = 'manual';
221
+ domElem.showPopover();
222
+ }
223
+ }
224
+ closeAll() {
225
+ for (let i = 0; i < this.alerts.length; i++) {
226
+ this.removeDialogComponentFromBody(i);
227
+ }
228
+ }
229
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxMessageService, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.EnvironmentInjector }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
230
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxMessageService, providedIn: 'root' });
231
+ }
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxMessageService, decorators: [{
233
+ type: Injectable,
234
+ args: [{
235
+ providedIn: 'root',
236
+ }]
237
+ }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.EnvironmentInjector }, { type: Document, decorators: [{
238
+ type: Inject,
239
+ args: [DOCUMENT]
240
+ }] }] });
241
+
242
+ /**
243
+ * Static facade so call sites can use: MSG.warn('msg', opts)
244
+ * Module will set the service instance in its constructor.
245
+ */
246
+ class MSG {
247
+ static injector;
248
+ static show(options) {
249
+ if (!MSG.injector) {
250
+ throw new Error('ngx-kit: Error on EnvironmentProvider. Ensure "provideMessage()" in root provider.');
251
+ }
252
+ return MSG.injector.get(NGX_MESSAGE_API).show(options);
253
+ }
254
+ static fire(options) {
255
+ return this.show(options);
256
+ }
257
+ static info(title, text, options) {
258
+ return this.show({
259
+ icon: 'info',
260
+ title,
261
+ text,
262
+ ...options,
263
+ });
264
+ }
265
+ static success(title, text, options) {
266
+ return this.show({
267
+ icon: 'success',
268
+ title,
269
+ text,
270
+ ...options,
271
+ });
272
+ }
273
+ static warning(title, text, options) {
274
+ return this.show({
275
+ icon: 'warning',
276
+ title,
277
+ text,
278
+ ...options,
279
+ });
280
+ }
281
+ static error(title, text, options) {
282
+ return this.show({
283
+ icon: 'error',
284
+ title,
285
+ text,
286
+ ...options,
287
+ });
288
+ }
289
+ }
290
+
291
+ function provideMessage(options) {
292
+ return makeEnvironmentProviders([
293
+ {
294
+ provide: NGX_MESSAGE_CONFIGS,
295
+ useValue: { ...NGX_MESSAGE_DEFAULT_OPTIONS, ...(options || {}) },
296
+ },
297
+ {
298
+ provide: NGX_MESSAGE_API,
299
+ useExisting: NgxMessageService,
300
+ },
301
+ provideEnvironmentInitializer(() => {
302
+ MSG.injector = inject(Injector);
303
+ }),
304
+ ]);
305
+ }
306
+
307
+ class MessageOptions {
308
+ config;
309
+ constructor(config) {
310
+ this.config = config;
311
+ //config = { ...(new MessageOptions()), ...config };
312
+ }
313
+ /**
314
+ * add popover manual to set alert dialog container to top layer
315
+ * - usefull when using alert modal in angular material dialog
316
+ *
317
+ */
318
+ useOverlay;
319
+ title = '';
320
+ text = '';
321
+ html = '';
322
+ backdrop = true;
323
+ icon;
324
+ width;
325
+ allowOutsideClick = true;
326
+ allowEscapeKey = true;
327
+ allowEnterKey = true;
328
+ showConfirmButton = true;
329
+ showDenyButton = false;
330
+ showCancelButton = false;
331
+ confirmButtonText = 'Ok';
332
+ denyButtonText = 'No';
333
+ cancelButtonText = 'Cancel';
334
+ confirmButtonColor;
335
+ denyButtonColor;
336
+ cancelButtonColor;
337
+ confirmButtonAriaLabel = '';
338
+ denyButtonAriaLabel = '';
339
+ cancelButtonAriaLabel = '';
340
+ reverseButtons = false;
341
+ showCloseButton = false;
342
+ containerClass = '';
343
+ }
344
+
345
+ /**
346
+ * Generated bundle index. Do not edit.
347
+ */
348
+
349
+ export { DismissReason, MSG, MessageOptions, NgxMessageService, provideMessage };
350
+ //# sourceMappingURL=ngx-kit-message.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-kit-message.mjs","sources":["../../../projects/libs/message/models/configs.ts","../../../projects/libs/message/models/message-result.ts","../../../projects/libs/message/components/message.component.ts","../../../projects/libs/message/components/message.component.html","../../../projects/libs/message/services/apply-default.ts","../../../projects/libs/message/services/message.service.ts","../../../projects/libs/message/message-facade.ts","../../../projects/libs/message/message-provider.ts","../../../projects/libs/message/models/message-options.ts","../../../projects/libs/message/ngx-kit-message.ts"],"sourcesContent":["import { Inject, InjectionToken } from '@angular/core';\r\nimport { IMessageOptions } from './message-options.interface';\r\nimport { NgxMessageService } from '../public-api';\r\nimport { MessageOptions } from './message-options';\r\n\r\nexport type MessageIcon = 'None' | 'success' | 'error' | 'warning' | 'info' | 'question';\r\n\r\nexport const NGX_MESSAGE_CONFIGS = new InjectionToken<IMessageOptions>('ngx-message-configs');\r\n\r\nexport const NGX_MESSAGE_API = new InjectionToken<NgxMessageService>('NgxMessageService');\r\nexport const NGX_MESSAGE_DEFAULT_OPTIONS: MessageOptions = {\r\n useOverlay: true,\r\n title: '',\r\n text: '',\r\n html: '',\r\n backdrop: true,\r\n icon: 'None',\r\n width: undefined,\r\n allowOutsideClick: true,\r\n allowEscapeKey: true,\r\n allowEnterKey: true,\r\n showConfirmButton: true,\r\n showDenyButton: false,\r\n showCancelButton: false,\r\n confirmButtonText: 'Ok',\r\n denyButtonText: 'No',\r\n cancelButtonText: 'Cancel',\r\n confirmButtonColor: '',\r\n denyButtonColor: '',\r\n cancelButtonColor: '',\r\n confirmButtonAriaLabel: '',\r\n denyButtonAriaLabel: '',\r\n cancelButtonAriaLabel: '',\r\n reverseButtons: false,\r\n showCloseButton: false,\r\n containerClass: '',\r\n};\r\n\r\n\r\n","export interface MessageResult<T = any> {\r\n readonly isConfirmed: boolean\r\n readonly isDenied: boolean\r\n readonly isDismissed: boolean\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n readonly value?: T\r\n readonly dismiss?: DismissReason\r\n}\r\n\r\n\r\n/**\r\n * An enum of possible reasons that can explain an alert dismissal.\r\n */\r\nexport enum DismissReason {\r\n cancel,\r\n backdrop,\r\n close,\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n esc,\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n timer,\r\n}\r\n","import { Component, HostListener } from '@angular/core';\r\nimport { IMessageOptions } from '../models/message-options.interface';\r\nimport { Subject } from 'rxjs';\r\nimport { MessageResult, DismissReason } from '../models/message-result';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/configs';\r\n\r\n@Component({\r\n selector: 'ngx-message',\r\n templateUrl: 'message.component.html',\r\n styleUrls: ['./message.component.scss', './message-icons.scss'],\r\n standalone: true,\r\n imports: [CommonModule],\r\n providers: [\r\n {\r\n provide: NGX_MESSAGE_CONFIGS,\r\n useValue: NGX_MESSAGE_DEFAULT_OPTIONS,\r\n },\r\n ],\r\n})\r\nexport class NgxMessageComponent {\r\n options!: IMessageOptions;\r\n index = 0;\r\n\r\n private readonly _onClose = new Subject<{ index: number; result: MessageResult<any> }>();\r\n public onClose = this._onClose.asObservable();\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onScapeKey(event: Event) {\r\n if (this.options.allowEscapeKey) {\r\n this.onCancel();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.enter', ['$event'])\r\n onEnterKey(event: Event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (this.options.allowEnterKey) {\r\n if (this.options.showConfirmButton) {\r\n this.onConfirm();\r\n } else if (this.options.showDenyButton) {\r\n this.onDeny();\r\n } else {\r\n this.onCancel();\r\n }\r\n }\r\n }\r\n\r\n onConfirm() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: true,\r\n isDismissed: false,\r\n isDenied: false,\r\n dismiss: DismissReason.close,\r\n },\r\n });\r\n }\r\n onCancel() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: false,\r\n isDismissed: true,\r\n isDenied: false,\r\n dismiss: DismissReason.cancel,\r\n },\r\n });\r\n }\r\n onDeny() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: false,\r\n isDismissed: false,\r\n isDenied: true,\r\n dismiss: DismissReason.close,\r\n },\r\n });\r\n }\r\n close() {\r\n this.onCancel();\r\n }\r\n\r\n onOutSideClick() {\r\n if (this.options.allowOutsideClick) {\r\n this.onCancel();\r\n }\r\n }\r\n innerOnClick(ev: Event) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n}\r\n","<div\r\n class=\"ngx-message-container\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\">\r\n <div class=\"ngx-message-inner\" (click)=\"innerOnClick($event)\">\r\n @if (options.showCloseButton) {\r\n <div class=\"ngx-message-header\">\r\n <button class=\"ngx-message-close\" (click)=\"close()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M312.1 375c9.369 9.369 9.369 24.57 0 33.94s-24.57 9.369-33.94 0L160 289.9l-119 119c-9.369 9.369-24.57 9.369-33.94 0s-9.369-24.57 0-33.94L126.1 256L7.027 136.1c-9.369-9.369-9.369-24.57 0-33.94s24.57-9.369 33.94 0L160 222.1l119-119c9.369-9.369 24.57-9.369 33.94 0s9.369 24.57 0 33.94L193.9 256L312.1 375z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- --------- icon -------- -->\r\n @switch (options.icon) {\r\n @case ('success') {\r\n <div class=\"alert-icon alert-success alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-success-circular-line-left\"></div>\r\n <span class=\"alert-success-line-tip\"></span>\r\n <span class=\"alert-success-line-long\"></span>\r\n <div class=\"alert-success-ring\"></div>\r\n <div class=\"alert-success-fix\"></div>\r\n <div class=\"alert-success-circular-line-right\"></div>\r\n </div>\r\n }\r\n @case ('error') {\r\n <div class=\"alert-icon alert-error alert-icon-show\" style=\"display: flex\">\r\n <span class=\"alert-x-mark\">\r\n <span class=\"alert-x-mark-line-left\"></span>\r\n <span class=\"alert-x-mark-line-right\"></span>\r\n </span>\r\n </div>\r\n }\r\n @case ('info') {\r\n <div class=\"alert-icon alert-info alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">i</div>\r\n </div>\r\n }\r\n @case ('question') {\r\n <div class=\"alert-icon alert-question alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">?</div>\r\n </div>\r\n }\r\n @case ('warning') {\r\n <div class=\"alert-icon alert-warning alert-icon-show\" style=\"display: flex\">\r\n <div class=\"alert-icon-content\">!</div>\r\n </div>\r\n }\r\n }\r\n <!-- --------- /icon -------- -->\r\n\r\n <div class=\"ngx-message-title\">\r\n {{ options.title }}\r\n </div>\r\n <div class=\"ngx-message-body\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </div>\r\n <div class=\"ngx-message-footer\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn-cancel\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button class=\"btn-deny\" (click)=\"onDeny()\" [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn-confirm\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","\r\nexport function applyDefaultConfig(config: any, defaultConfig: any): any {\r\n var config = JSON.parse(JSON.stringify(config));\r\n for (let key in defaultConfig) {\r\n if (config[key] === undefined || config[key] === null || config[key] === '') {\r\n config[key] = defaultConfig[key];\r\n } else if (typeof config[key] === 'object') {\r\n config[key] = applyDefaultConfig(config[key], defaultConfig[key]);\r\n }\r\n }\r\n return config;\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EmbeddedViewRef,\r\n EnvironmentInjector,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n} from '@angular/core';\r\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/configs';\r\nimport { IMessageOptions } from '../models/message-options.interface';\r\nimport { MessageResult } from '../models/message-result';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { NgxMessageComponent } from '../components/message.component';\r\nimport { applyDefaultConfig } from './apply-default';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NgxMessageService {\r\n currentAdIndex = -1;\r\n alerts: ComponentRef<NgxMessageComponent>[] = [];\r\n insertedId = 0;\r\n constructor(\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private envInjector: EnvironmentInjector,\r\n @Inject(DOCUMENT) private _doc: Document,\r\n ) {}\r\n\r\n public show(c?: IMessageOptions): Promise<MessageResult<any>> {\r\n let d = applyDefaultConfig(\r\n this.injector.get(NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS),\r\n NGX_MESSAGE_DEFAULT_OPTIONS,\r\n );\r\n const config = applyDefaultConfig(c, d);\r\n return new Promise((resolve, reject) => {\r\n const componentRef = createComponent(NgxMessageComponent, {\r\n environmentInjector: this.envInjector,\r\n });\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n this.appendDialogComponentToBody(componentRef, config);\r\n componentRef.instance.options = config;\r\n componentRef.instance.index = this.insertedId;\r\n componentRef.instance.onClose.subscribe((result) => {\r\n this.removeDialogComponentFromBody(result.index);\r\n resolve(result.result);\r\n });\r\n this.alerts.push(componentRef);\r\n this.insertedId++;\r\n });\r\n }\r\n\r\n private removeDialogComponentFromBody(index: number): void {\r\n if (this.alerts[index]) {\r\n const domElem = (this.alerts[index].hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement;\r\n\r\n // قبل از destroy باید hidePopover صدا بزنیم\r\n if (domElem.popover === 'manual') {\r\n try {\r\n domElem.hidePopover();\r\n } catch {}\r\n }\r\n\r\n this.appRef.detachView(this.alerts[index].hostView);\r\n this.alerts[index].destroy();\r\n }\r\n }\r\n\r\n private appendDialogComponentToBody(\r\n componentRef: ComponentRef<NgxMessageComponent>,\r\n config: IMessageOptions,\r\n ) {\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n if (config.containerClass) {\r\n for (let c of config.containerClass.split(' ')) {\r\n if (c.trim()) domElem.classList.add(c);\r\n }\r\n }\r\n this._doc.body.appendChild(domElem);\r\n if (config.useOverlay) {\r\n domElem.popover = 'manual';\r\n domElem.showPopover();\r\n }\r\n }\r\n\r\n closeAll() {\r\n for (let i = 0; i < this.alerts.length; i++) {\r\n this.removeDialogComponentFromBody(i);\r\n }\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\nimport { NGX_MESSAGE_API } from './models/configs';\nimport { IMessageOptions } from './models/message-options.interface';\nimport { MessageResult } from './models/message-result';\n\n/**\n * Static facade so call sites can use: MSG.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class MSG {\n static injector: Injector;\n\n static show(options?: IMessageOptions): Promise<MessageResult<any>> {\n if (!MSG.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideMessage()\" in root provider.',\n );\n }\n\n return MSG.injector.get(NGX_MESSAGE_API).show(options);\n }\n\n static fire(options?: IMessageOptions) {\n return this.show(options);\n }\n\n static info(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'info',\n title,\n text,\n ...options,\n });\n }\n\n static success(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'success',\n title,\n text,\n ...options,\n });\n }\n static warning(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'warning',\n title,\n text,\n ...options,\n });\n }\n static error(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'error',\n title,\n text,\n ...options,\n });\n }\n}\n","import {\r\n EnvironmentProviders,\r\n inject,\r\n Injector,\r\n makeEnvironmentProviders,\r\n provideEnvironmentInitializer,\r\n} from '@angular/core';\r\nimport { IMessageOptions } from './models/message-options.interface';\r\nimport {\r\n NGX_MESSAGE_API,\r\n NGX_MESSAGE_CONFIGS,\r\n NGX_MESSAGE_DEFAULT_OPTIONS,\r\n} from './models/configs';\r\nimport { NgxMessageService } from './services/message.service';\r\nimport { MSG as MessageFacade } from './message-facade';\r\n\r\nexport function provideMessage(options?: IMessageOptions): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: NGX_MESSAGE_CONFIGS,\r\n useValue: { ...NGX_MESSAGE_DEFAULT_OPTIONS, ...(options || {}) },\r\n },\r\n {\r\n provide: NGX_MESSAGE_API,\r\n useExisting: NgxMessageService,\r\n },\r\n provideEnvironmentInitializer(() => {\r\n MessageFacade.injector = inject(Injector);\r\n }),\r\n ]);\r\n}\r\n","import { MessageIcon } from './configs';\r\nimport { IMessageOptions } from './message-options.interface';\r\n\r\n\r\nexport class MessageOptions implements IMessageOptions {\r\n public constructor(private config?: IMessageOptions) {\r\n //config = { ...(new MessageOptions()), ...config };\r\n }\r\n /**\r\n * add popover manual to set alert dialog container to top layer\r\n * - usefull when using alert modal in angular material dialog\r\n *\r\n */\r\n useOverlay?: boolean;\r\n title?: string = '';\r\n text?: string = '';\r\n html?: string | HTMLElement = '';\r\n backdrop?: boolean = true;\r\n icon?: MessageIcon;\r\n width?: number | string;\r\n allowOutsideClick?: boolean = true;\r\n allowEscapeKey?: boolean = true;\r\n allowEnterKey?: boolean = true;\r\n showConfirmButton?: boolean = true;\r\n showDenyButton?: boolean = false;\r\n showCancelButton?: boolean = false;\r\n confirmButtonText: string = 'Ok';\r\n denyButtonText?: string = 'No';\r\n cancelButtonText?: string = 'Cancel';\r\n confirmButtonColor?: string;\r\n denyButtonColor?: string;\r\n cancelButtonColor?: string;\r\n confirmButtonAriaLabel?: string = '';\r\n denyButtonAriaLabel?: string = '';\r\n cancelButtonAriaLabel?: string = '';\r\n reverseButtons?: boolean = false;\r\n showCloseButton?: boolean = false;\r\n containerClass?: string = '';\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["MessageFacade"],"mappings":"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"}