@acorex/components 21.1.0-next.2 → 22.0.0-next.1

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.
Files changed (218) hide show
  1. package/fesm2022/acorex-components-accordion.mjs +47 -30
  2. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-components-action-sheet.mjs +46 -31
  4. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  5. package/fesm2022/acorex-components-alert.mjs +24 -17
  6. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  7. package/fesm2022/acorex-components-aspect-ratio.mjs +10 -8
  8. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  9. package/fesm2022/acorex-components-audio-wave.mjs +13 -10
  10. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  11. package/fesm2022/acorex-components-autocomplete.mjs +24 -17
  12. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  13. package/fesm2022/acorex-components-avatar.mjs +20 -16
  14. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  15. package/fesm2022/acorex-components-badge.mjs +11 -10
  16. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  17. package/fesm2022/acorex-components-bottom-navigation.mjs +19 -16
  18. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  19. package/fesm2022/acorex-components-breadcrumbs.mjs +16 -14
  20. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  21. package/fesm2022/acorex-components-button-group.mjs +17 -16
  22. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  23. package/fesm2022/acorex-components-button.mjs +38 -29
  24. package/fesm2022/acorex-components-button.mjs.map +1 -1
  25. package/fesm2022/acorex-components-calendar.mjs +44 -30
  26. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  27. package/fesm2022/acorex-components-check-box.mjs +12 -11
  28. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  29. package/fesm2022/acorex-components-chips.mjs +11 -10
  30. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  31. package/fesm2022/acorex-components-circular-progress.mjs +19 -14
  32. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  33. package/fesm2022/acorex-components-code-editor.mjs +42 -26
  34. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  35. package/fesm2022/acorex-components-color-box.mjs +20 -15
  36. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  37. package/fesm2022/acorex-components-color-palette.mjs +45 -43
  38. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  39. package/fesm2022/acorex-components-command.mjs +25 -16
  40. package/fesm2022/acorex-components-command.mjs.map +1 -1
  41. package/fesm2022/acorex-components-comment.mjs +42 -41
  42. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  43. package/fesm2022/{acorex-components-conversation-composer-action-choice-dialog.component-C28hl7iD.mjs → acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs} +17 -12
  44. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map +1 -0
  45. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Duvap4M4.mjs → acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs} +2 -2
  46. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Duvap4M4.mjs.map → acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs.map} +1 -1
  47. package/fesm2022/acorex-components-conversation.mjs +1620 -1156
  48. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  49. package/fesm2022/acorex-components-cron-job.mjs +56 -51
  50. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  51. package/fesm2022/acorex-components-data-list.mjs +61 -33
  52. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  53. package/fesm2022/acorex-components-data-pager.mjs +42 -47
  54. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  55. package/fesm2022/acorex-components-data-table.mjs +110 -96
  56. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  57. package/fesm2022/acorex-components-datetime-box.mjs +42 -26
  58. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  59. package/fesm2022/acorex-components-datetime-input.mjs +38 -24
  60. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  61. package/fesm2022/acorex-components-datetime-picker.mjs +50 -30
  62. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  63. package/fesm2022/acorex-components-decorators.mjs +53 -45
  64. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  65. package/fesm2022/acorex-components-dialog.mjs +17 -15
  66. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  67. package/fesm2022/acorex-components-drawer.mjs +33 -24
  68. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  69. package/fesm2022/acorex-components-dropdown-button.mjs +10 -10
  70. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  71. package/fesm2022/acorex-components-dropdown.mjs +24 -20
  72. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  73. package/fesm2022/acorex-components-editor.mjs +16 -13
  74. package/fesm2022/acorex-components-editor.mjs.map +1 -1
  75. package/fesm2022/acorex-components-fab.mjs +27 -18
  76. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  77. package/fesm2022/acorex-components-file-viewer.mjs +149 -99
  78. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  79. package/fesm2022/acorex-components-flow-chart.mjs +53 -37
  80. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  81. package/fesm2022/acorex-components-form.mjs +45 -34
  82. package/fesm2022/acorex-components-form.mjs.map +1 -1
  83. package/fesm2022/acorex-components-grid-layout-builder.mjs +23 -21
  84. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  85. package/fesm2022/acorex-components-image-editor.mjs +182 -135
  86. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  87. package/fesm2022/acorex-components-image.mjs +14 -12
  88. package/fesm2022/acorex-components-image.mjs.map +1 -1
  89. package/fesm2022/acorex-components-json-viewer.mjs +15 -11
  90. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  91. package/fesm2022/acorex-components-kanban.mjs +41 -22
  92. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  93. package/fesm2022/acorex-components-kbd.mjs +23 -16
  94. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  95. package/fesm2022/acorex-components-label.mjs +10 -10
  96. package/fesm2022/acorex-components-label.mjs.map +1 -1
  97. package/fesm2022/acorex-components-list.mjs +26 -18
  98. package/fesm2022/acorex-components-list.mjs.map +1 -1
  99. package/fesm2022/acorex-components-loading-dialog.mjs +26 -19
  100. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  101. package/fesm2022/acorex-components-loading.mjs +20 -20
  102. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  103. package/fesm2022/acorex-components-map.mjs +79 -47
  104. package/fesm2022/acorex-components-map.mjs.map +1 -1
  105. package/fesm2022/acorex-components-media-viewer.mjs +126 -86
  106. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  107. package/fesm2022/acorex-components-menu.mjs +71 -52
  108. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  109. package/fesm2022/{acorex-components-modal-acorex-components-modal-dF5HUEBH.mjs → acorex-components-modal-acorex-components-modal-Djl-uo9b.mjs} +34 -30
  110. package/fesm2022/acorex-components-modal-acorex-components-modal-Djl-uo9b.mjs.map +1 -0
  111. package/fesm2022/{acorex-components-modal-modal-content.component-BGTYje3j.mjs → acorex-components-modal-modal-content.component-BpUsCI8D.mjs} +73 -40
  112. package/fesm2022/acorex-components-modal-modal-content.component-BpUsCI8D.mjs.map +1 -0
  113. package/fesm2022/acorex-components-modal.mjs +1 -1
  114. package/fesm2022/acorex-components-navbar.mjs +9 -9
  115. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  116. package/fesm2022/acorex-components-notification.mjs +41 -27
  117. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  118. package/fesm2022/acorex-components-number-box.mjs +32 -21
  119. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  120. package/fesm2022/acorex-components-otp.mjs +18 -14
  121. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  122. package/fesm2022/acorex-components-page.mjs +10 -10
  123. package/fesm2022/acorex-components-paint.mjs +79 -55
  124. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  125. package/fesm2022/acorex-components-password-box.mjs +46 -30
  126. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  127. package/fesm2022/acorex-components-pdf-reader.mjs +11 -10
  128. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  129. package/fesm2022/acorex-components-phone-box.mjs +31 -21
  130. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  131. package/fesm2022/acorex-components-picker.mjs +44 -31
  132. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  133. package/fesm2022/acorex-components-popover.mjs +14 -12
  134. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  135. package/fesm2022/acorex-components-popup.mjs +32 -24
  136. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  137. package/fesm2022/acorex-components-progress-bar.mjs +9 -9
  138. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  139. package/fesm2022/acorex-components-qrcode.mjs +28 -19
  140. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  141. package/fesm2022/acorex-components-query-builder.mjs +19 -14
  142. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  143. package/fesm2022/acorex-components-radio.mjs +10 -10
  144. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  145. package/fesm2022/acorex-components-rail-navigation.mjs +44 -30
  146. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  147. package/fesm2022/acorex-components-range-slider.mjs +60 -35
  148. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  149. package/fesm2022/acorex-components-rate-picker.mjs +30 -20
  150. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  151. package/fesm2022/acorex-components-rest-api-generator.mjs +50 -39
  152. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  153. package/fesm2022/acorex-components-result.mjs +9 -9
  154. package/fesm2022/acorex-components-result.mjs.map +1 -1
  155. package/fesm2022/acorex-components-routing-progress.mjs +9 -9
  156. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  157. package/fesm2022/acorex-components-rrule.mjs +52 -35
  158. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  159. package/fesm2022/acorex-components-scheduler-picker.mjs +205 -152
  160. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  161. package/fesm2022/acorex-components-scheduler.mjs +504 -275
  162. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  163. package/fesm2022/acorex-components-search-box.mjs +14 -12
  164. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  165. package/fesm2022/acorex-components-select-box.mjs +32 -21
  166. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  167. package/fesm2022/acorex-components-selection-list-2.mjs +16 -13
  168. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  169. package/fesm2022/acorex-components-selection-list.mjs +14 -12
  170. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  171. package/fesm2022/acorex-components-side-menu.mjs +74 -46
  172. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  173. package/fesm2022/acorex-components-sidebar.mjs +89 -63
  174. package/fesm2022/acorex-components-sidebar.mjs.map +1 -1
  175. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  176. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  177. package/fesm2022/acorex-components-slider.mjs +10 -10
  178. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  179. package/fesm2022/acorex-components-sliding-item.mjs +31 -22
  180. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  181. package/fesm2022/acorex-components-step-wizard.mjs +66 -41
  182. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  183. package/fesm2022/acorex-components-switch.mjs +13 -13
  184. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  185. package/fesm2022/acorex-components-tabs.mjs +27 -23
  186. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  187. package/fesm2022/acorex-components-tag-box.mjs +30 -20
  188. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  189. package/fesm2022/acorex-components-tag.mjs +9 -9
  190. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  191. package/fesm2022/acorex-components-text-area.mjs +10 -10
  192. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  193. package/fesm2022/acorex-components-text-box.mjs +14 -12
  194. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  195. package/fesm2022/acorex-components-time-duration.mjs +46 -28
  196. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  197. package/fesm2022/acorex-components-time-line.mjs +27 -20
  198. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  199. package/fesm2022/acorex-components-toast.mjs +37 -25
  200. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  201. package/fesm2022/acorex-components-toolbar.mjs +17 -13
  202. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  203. package/fesm2022/acorex-components-tooltip.mjs +18 -15
  204. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  205. package/fesm2022/acorex-components-tree-view.mjs +106 -59
  206. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  207. package/fesm2022/acorex-components-uploader.mjs +15 -14
  208. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  209. package/fesm2022/acorex-components-video-player.mjs +11 -10
  210. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  211. package/fesm2022/acorex-components-wysiwyg.mjs +67 -53
  212. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  213. package/package.json +3 -3
  214. package/types/acorex-components-rrule.d.ts +3 -2
  215. package/types/acorex-components-side-menu.d.ts +1 -1
  216. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-C28hl7iD.mjs.map +0 -1
  217. package/fesm2022/acorex-components-modal-acorex-components-modal-dF5HUEBH.mjs.map +0 -1
  218. package/fesm2022/acorex-components-modal-modal-content.component-BGTYje3j.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-menu.mjs","sources":["../../../../packages/components/menu/src/lib/menu.service.ts","../../../../packages/components/menu/src/lib/menu.types.ts","../../../../packages/components/menu/src/lib/menu-item.component.ts","../../../../packages/components/menu/src/lib/menu-item.component.html","../../../../packages/components/menu/src/lib/context-menu.component.ts","../../../../packages/components/menu/src/lib/menu.component.html","../../../../packages/components/menu/src/lib/menu.component.ts","../../../../packages/components/menu/src/lib/menu.module.ts","../../../../packages/components/menu/src/acorex-components-menu.ts"],"sourcesContent":["import { AXHtmlUtil, AXPoint } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, DOCUMENT, inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { AXMenuItemComponentBase, AXRootMenu } from './menu.types';\n\n@Injectable()\nexport class AXMenuService {\n public closeAll$: Subject<void> = new Subject();\n public open$: Subject<AXMenuItemComponentBase> = new Subject();\n public close$: Subject<AXMenuItemComponentBase> = new Subject();\n\n public openContextMenu$ = new Subject<{ sender: AXRootMenu; point: AXPoint }>();\n public closeAllContextMenu$ = new Subject<{ sender: AXRootMenu }>();\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n\n private readonly openItems = new Set<AXMenuItemComponentBase>();\n private globalListenersBound = false;\n private rootElement?: HTMLElement;\n private scrollableParents: HTMLElement[] = [];\n\n private readonly onDocumentClick = (event: MouseEvent) => {\n if (this.rootElement && !this.rootElement.contains(event.target as Node)) {\n this.closeAll$.next();\n }\n };\n\n private readonly onWindowOrScrollEvent = () => {\n this.closeAll$.next();\n };\n\n constructor() {\n this.closeAll$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.openItems.clear();\n });\n }\n\n /**\n * Registers a single set of document/window/scroll listeners for the whole menu tree.\n */\n initGlobalListeners(rootElement: HTMLElement) {\n if (!isPlatformBrowser(this.platformId) || this.globalListenersBound) {\n return;\n }\n this.globalListenersBound = true;\n this.rootElement = rootElement;\n\n this.document.addEventListener('click', this.onDocumentClick);\n window.addEventListener('scroll', this.onWindowOrScrollEvent, { capture: true });\n window.addEventListener('resize', this.onWindowOrScrollEvent);\n\n this.scrollableParents = AXHtmlUtil.getScrollableParents(rootElement);\n this.scrollableParents.forEach((parent) => {\n parent.addEventListener('scroll', this.onWindowOrScrollEvent);\n });\n\n this.destroyRef.onDestroy(() => {\n this.document.removeEventListener('click', this.onDocumentClick);\n window.removeEventListener('scroll', this.onWindowOrScrollEvent, { capture: true });\n window.removeEventListener('resize', this.onWindowOrScrollEvent);\n this.scrollableParents.forEach((parent) => {\n parent.removeEventListener('scroll', this.onWindowOrScrollEvent);\n });\n });\n }\n\n /**\n * Closes open submenus that are not on the ancestor path of the item being opened.\n */\n closeExcept(opener: AXMenuItemComponentBase) {\n const keepOpen = new Set<AXMenuItemComponentBase>();\n let current: AXMenuItemComponentBase | null | undefined = opener;\n while (current) {\n keepOpen.add(current);\n current = current.getParentMenuItem?.() ?? current.parent ?? null;\n }\n\n for (const openItem of [...this.openItems]) {\n if (!keepOpen.has(openItem)) {\n this.markClosed(openItem);\n }\n }\n }\n\n markOpen(item: AXMenuItemComponentBase) {\n this.openItems.add(item);\n this.open$.next(item);\n }\n\n markClosed(item: AXMenuItemComponentBase) {\n this.openItems.delete(item);\n this.close$.next(item);\n }\n}\n","import { AXOrientation, AXStyleColorType, NXClickEvent, NXComponent } from '@acorex/cdk/common';\nimport { OutputEmitterRef, WritableSignal } from '@angular/core';\nimport { IsActiveMatchOptions, UrlTree } from '@angular/router';\n\nexport type AXMenuOpenTrigger = 'click' | 'hover';\nexport type AXMenuCloseTrigger = 'click' | 'leave';\n\nexport abstract class AXRootMenu {\n orientation: WritableSignal<AXOrientation>;\n openOn: WritableSignal<AXMenuOpenTrigger>;\n closeOn: WritableSignal<AXMenuCloseTrigger>;\n onItemClick: OutputEmitterRef<AXMenuItemClickBaseEvent>;\n nativeElement: HTMLDivElement;\n hasArrow: WritableSignal<boolean>;\n}\n\nexport abstract class AXMenuItemComponentBase {\n parent?: AXMenuItemComponentBase | null;\n\n /** Resolves the parent item, including for `ngTemplateOutlet`-created nested items. */\n getParentMenuItem?(): AXMenuItemComponentBase | null | undefined;\n}\n\n/** Shared tree item shape for `ax-menu`, `ax-context-menu`, and `ax-side-menu`. */\nexport interface AXMenuItem {\n text: string;\n name?: string;\n icon?: string;\n data?: unknown;\n disabled?: boolean;\n items?: AXMenuItem[];\n color?: AXStyleColorType;\n suffix?: {\n text: string;\n };\n /** Side-menu alias for `suffix.text`. */\n suffixText?: string;\n break?: boolean;\n group?: {\n name?: string;\n title?: string;\n };\n title?: string;\n routerLink?: string | any[] | UrlTree;\n routerLinkActive?: string | string[];\n routerLinkActiveOptions?: { exact: boolean } | IsActiveMatchOptions;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n active?: boolean;\n isLoading?: boolean;\n isCollapsed?: boolean;\n toggleOnClick?: boolean;\n}\n\nexport class AXMenuItemClickBaseEvent<T extends NXComponent = NXComponent> extends NXClickEvent<T> {\n item: {\n name?: string;\n text: string;\n data?: any;\n };\n canceled = false;\n}\n","import { AXComponent, AXStyleColorType, NXComponent } from '@acorex/cdk/common';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n Injector,\n input,\n OnDestroy,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXMenuService } from './menu.service';\nimport { AXMenuItemClickBaseEvent, AXMenuItemComponentBase, AXRootMenu } from './menu.types';\n\nexport type AXMenuItemClickEvent = AXMenuItemClickBaseEvent<AXMenuItemComponent>;\n\n/**\n * Represents a menu item component used within an `ax-menu`.\n * @category Components\n */\n@Component({\n selector: 'ax-menu-item',\n templateUrl: './menu-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXMenuItemComponentBase,\n useExisting: AXMenuItemComponent,\n },\n AXUnsubscriber,\n {\n provide: AXComponent,\n useExisting: AXMenuItemComponent,\n },\n ],\n})\nexport class AXMenuItemComponent extends NXComponent implements OnDestroy {\n protected isOpen = signal(false);\n\n readonly parent = inject(AXMenuItemComponent, { optional: true, skipSelf: true });\n\n protected isFirstLevel = computed(() => this.getParentMenuItem() == null);\n\n private readonly childMenuItems = contentChildren(AXMenuItemComponent, { descendants: false });\n private readonly discoveredSubmenuNodeCount = signal(0);\n private readonly submenuSlot = viewChild<ElementRef<HTMLElement>>('submenuSlot');\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private childObserver: MutationObserver | null = null;\n private childRefreshScheduled = false;\n\n /**\n * Nested items from the data model. Required for recursive `ngTemplateOutlet` templates\n * because `contentChildren` does not traverse those embedded views.\n */\n subItems = input<readonly unknown[]>([]);\n\n protected hasSubItems = computed(\n () =>\n (this.subItems()?.length ?? 0) > 0 ||\n this.childMenuItems().length > 0 ||\n this.discoveredSubmenuNodeCount() > 0,\n );\n\n protected root = inject(AXRootMenu);\n\n private service = inject(AXMenuService);\n\n private unsuscriber = inject(AXUnsubscriber);\n private renderer = inject(Renderer2);\n private injector = inject(Injector);\n private zIndexService = inject(AXZIndexService);\n private zToken: AXZToken | null = null;\n\n protected arrowIcon = computed<string>(() => {\n const isRtl = AXHtmlUtil.isRtl(this.nativeElement);\n return this.root.orientation() == 'horizontal' && this.isFirstLevel()\n ? 'ax-icon-chevron-down'\n : isRtl\n ? 'ax-icon-chevron-left'\n : 'ax-icon-chevron-right';\n });\n\n onClick = output<AXMenuItemClickEvent>();\n\n name = input<string>();\n data = input<any>();\n disabled = input<boolean>();\n color = input<AXStyleColorType>();\n\n constructor() {\n super();\n\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this.reparentOrphanedChildren();\n this.updateDiscoveredSubmenuNodeCount();\n this.childObserver = new MutationObserver((records) => {\n if (!this.hasRelevantChildMutation(records)) {\n return;\n }\n this.scheduleChildRefresh();\n });\n this.childObserver.observe(this.nativeElement, { childList: true, subtree: true });\n this.destroyRef.onDestroy(() => this.childObserver?.disconnect());\n });\n\n this.service.closeAll$.pipe(this.unsuscriber.takeUntilDestroy).subscribe(() => this.close());\n\n this.service.open$.pipe(this.unsuscriber.takeUntilDestroy).subscribe((item) => {\n if ((this as any) === item) {\n this.isOpen.set(true);\n this.schedulePositionCalculation();\n }\n });\n\n this.service.close$.pipe(this.unsuscriber.takeUntilDestroy).subscribe((item) => {\n if ((this as any) == item) {\n this.isOpen.set(false);\n }\n });\n }\n\n private getText(): string {\n return this.nativeElement.querySelector<HTMLDivElement>('ax-text')?.innerText;\n }\n\n /**\n * Resolves the parent menu item. Items rendered via recursive `ngTemplateOutlet` do not\n * receive a DI parent, so we fall back to the DOM tree after reparenting.\n */\n getParentMenuItem(): AXMenuItemComponent | null {\n if (this.parent) {\n return this.parent;\n }\n\n const parentHost = this.nativeElement.parentElement?.closest('ax-menu-item');\n if (!parentHost || parentHost === this.nativeElement) {\n return null;\n }\n\n const ctx = (parentHost as HTMLElement & { __axContext__?: unknown }).__axContext__;\n return ctx instanceof AXMenuItemComponent ? ctx : null;\n }\n\n /**\n * Opens the submenu of this menu item if it has sub-items and is not disabled.\n */\n open() {\n if (this.disabled() || !this.hasSubItems()) {\n return;\n }\n\n this.reparentOrphanedChildren();\n this.service.closeExcept(this);\n\n if (!this.zToken) {\n this.zToken = this.zIndexService.acquire();\n }\n this.service.markOpen(this);\n }\n\n /**\n * Closes the submenu of this menu item if open.\n */\n close() {\n this.service.markClosed(this);\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n }\n\n /**\n * Positions the submenu after layout so nested levels measure their full height.\n */\n private schedulePositionCalculation() {\n afterNextRender(\n () => {\n if (this.isOpen()) {\n this.calculatePosition();\n afterNextRender(\n () => {\n if (this.isOpen()) {\n this.calculatePosition();\n }\n },\n { injector: this.injector },\n );\n }\n },\n { injector: this.injector },\n );\n }\n\n /**\n * Calculate the position of the submenu to avoid it going out of the viewport.\n */\n private calculatePosition() {\n const submenu = this.submenuSlot()?.nativeElement;\n if (!submenu) return;\n\n const submenuRect = this.measureSubmenuRect(submenu);\n const itemRect = this.nativeElement.getBoundingClientRect();\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const isRtl = AXHtmlUtil.isRtl(this.nativeElement);\n\n let finalTop: number;\n let finalLeft: number;\n\n const preferredTop =\n this.isFirstLevel() && this.root.orientation() === 'horizontal'\n ? itemRect.bottom\n : itemRect.top;\n\n const alternateTop = itemRect.top - submenuRect.height;\n\n if (preferredTop + submenuRect.height <= windowHeight) {\n finalTop = preferredTop;\n } else if (alternateTop >= 0) {\n finalTop = alternateTop;\n } else {\n finalTop = windowHeight - submenuRect.height;\n }\n\n finalTop = this.clampVerticalPosition(finalTop, submenuRect.height, windowHeight);\n\n if (this.isFirstLevel() && this.root.orientation() === 'horizontal') {\n const preferredLeft = isRtl ? itemRect.right - submenuRect.width : itemRect.left;\n const alternateLeft = isRtl ? itemRect.left : itemRect.right - submenuRect.width;\n\n if (preferredLeft >= 0 && preferredLeft + submenuRect.width <= windowWidth) {\n finalLeft = preferredLeft;\n } else {\n finalLeft = Math.max(0, Math.min(alternateLeft, windowWidth - submenuRect.width));\n }\n } else {\n const preferredLeftRtl = itemRect.left - submenuRect.width;\n const alternateLeftRtl = itemRect.right;\n\n const preferredLeftLtr = itemRect.right;\n const alternateLeftLtr = itemRect.left - submenuRect.width;\n\n if (isRtl) {\n if (preferredLeftRtl >= 0) {\n finalLeft = preferredLeftRtl;\n } else if (alternateLeftRtl + submenuRect.width <= windowWidth) {\n finalLeft = alternateLeftRtl;\n } else {\n finalLeft = 0;\n }\n } else {\n if (preferredLeftLtr + submenuRect.width <= windowWidth) {\n finalLeft = preferredLeftLtr;\n } else if (alternateLeftLtr >= 0) {\n finalLeft = alternateLeftLtr;\n } else {\n finalLeft = windowWidth - submenuRect.width;\n }\n }\n }\n\n const isNestedMenu = !(this.isFirstLevel() && this.root.orientation() === 'horizontal');\n if (isNestedMenu) {\n const overlapsParent = finalLeft < itemRect.right && itemRect.left < finalLeft + submenuRect.width;\n if (overlapsParent) {\n const shiftedTop = itemRect.bottom;\n if (shiftedTop + submenuRect.height <= windowHeight) {\n finalTop = shiftedTop;\n }\n }\n }\n\n finalTop = this.clampVerticalPosition(finalTop, submenuRect.height, windowHeight);\n\n this.renderer.setStyle(submenu, 'position', 'fixed');\n this.renderer.setStyle(submenu, 'top', `${finalTop}px`);\n this.renderer.setStyle(submenu, 'left', `${finalLeft}px`);\n if (this.zToken) {\n this.renderer.setStyle(submenu, 'z-index', String(this.zToken.zIndex));\n }\n }\n\n /** Measures submenu size using the same flex layout as the rendered menu. */\n private measureSubmenuRect(submenu: HTMLElement): DOMRect {\n this.renderer.setStyle(submenu, 'visibility', 'hidden');\n this.renderer.setStyle(submenu, 'display', 'flex');\n const rect = submenu.getBoundingClientRect();\n this.renderer.removeStyle(submenu, 'visibility');\n this.renderer.removeStyle(submenu, 'display');\n return rect;\n }\n\n /**\n * Moves nested `ax-menu-item` nodes rendered by recursive `ngTemplateOutlet` templates\n * into the submenu slot. Angular content queries do not traverse those embedded views.\n */\n private reparentOrphanedChildren() {\n const container = this.submenuSlot()?.nativeElement;\n if (!container) {\n return;\n }\n\n for (const el of this.getDirectSubmenuNodes()) {\n if (!container.contains(el)) {\n try {\n container.appendChild(el);\n } catch {\n // HierarchyRequestError when the node is already being moved.\n }\n }\n }\n }\n\n /**\n * Nested submenu nodes rendered by custom recursive templates (direct children of this item only).\n */\n private getDirectSubmenuNodes(): HTMLElement[] {\n return Array.from(\n this.nativeElement.querySelectorAll<HTMLElement>('ax-menu-item, ax-title, ax-divider'),\n ).filter((el) => {\n if (el === this.nativeElement) {\n return false;\n }\n\n if (el.tagName === 'AX-MENU-ITEM') {\n return el.parentElement?.closest('ax-menu-item') === this.nativeElement;\n }\n\n return el.closest('ax-menu-item') === this.nativeElement;\n });\n }\n\n private updateDiscoveredSubmenuNodeCount() {\n this.discoveredSubmenuNodeCount.set(this.getDirectSubmenuNodes().length);\n }\n\n private scheduleChildRefresh() {\n if (this.childRefreshScheduled) {\n return;\n }\n this.childRefreshScheduled = true;\n requestAnimationFrame(() => {\n this.childRefreshScheduled = false;\n this.reparentOrphanedChildren();\n this.updateDiscoveredSubmenuNodeCount();\n });\n }\n\n private hasRelevantChildMutation(records: MutationRecord[]): boolean {\n for (const record of records) {\n if (\n this.nodeListContainsMenuStructuralNode(record.addedNodes) ||\n this.nodeListContainsMenuStructuralNode(record.removedNodes)\n ) {\n return true;\n }\n }\n return false;\n }\n\n private nodeListContainsMenuStructuralNode(nodes: NodeList): boolean {\n for (const node of Array.from(nodes)) {\n if (!(node instanceof Element)) {\n continue;\n }\n const tagName = node.tagName;\n if (tagName === 'AX-MENU-ITEM' || tagName === 'AX-TITLE' || tagName === 'AX-DIVIDER') {\n return true;\n }\n if (node.querySelector?.('ax-menu-item,ax-title,ax-divider')) {\n return true;\n }\n }\n return false;\n }\n\n /** Keeps the submenu fully inside the viewport vertically. */\n private clampVerticalPosition(top: number, height: number, windowHeight: number): number {\n if (top + height > windowHeight) {\n top = windowHeight - height;\n }\n if (top < 0) {\n top = 0;\n }\n return top;\n }\n\n @HostListener('click', ['$event'])\n handleClick(e: MouseEvent) {\n e.stopPropagation();\n if (this.disabled()) return;\n\n const event = {\n sender: this,\n nativeEvent: e,\n canceled: false,\n item: {\n name: this.name(),\n text: this.getText(),\n data: this.data(),\n },\n } as AXMenuItemClickEvent;\n\n this.onClick.emit(event);\n this.root.onItemClick.emit({ ...event, ...{ sender: this.root as any } });\n\n if (this.hasSubItems() && !event.canceled) {\n this.open();\n } else if (!event.canceled) {\n this.service.closeAll$.next();\n this.service.closeAllContextMenu$.next({ sender: this.root });\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n handleMouseEnter(event: MouseEvent) {\n event.stopPropagation();\n if (this.mouseLeaveTimeout) {\n clearTimeout(this.mouseLeaveTimeout);\n this.mouseLeaveTimeout = null;\n }\n if (!this.isFirstLevel() || this.root.openOn() == 'hover') {\n this.open();\n }\n }\n\n private mouseLeaveTimeout: ReturnType<typeof setTimeout> | null = null;\n\n @HostListener('mouseleave', ['$event'])\n handleMouseLeave(event: MouseEvent) {\n event.stopPropagation();\n\n if (!this.hasSubItems() || this.root.closeOn() !== 'leave') {\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n if (relatedTarget instanceof Node && this.containsSubmenuPointer(relatedTarget)) {\n return;\n }\n\n if (this.mouseLeaveTimeout) {\n clearTimeout(this.mouseLeaveTimeout);\n }\n\n this.mouseLeaveTimeout = setTimeout(() => {\n this.close();\n }, 500);\n }\n\n /** True when the pointer moved into this item's submenu panel or a nested open submenu. */\n private containsSubmenuPointer(node: Node): boolean {\n const submenu = this.submenuSlot()?.nativeElement;\n if (submenu?.contains(node)) {\n return true;\n }\n\n if (this.nativeElement.contains(node)) {\n return true;\n }\n\n return this.getDirectSubmenuNodes().some((child) => child.contains(node));\n }\n\n ngOnDestroy() {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n /** @ignore */\n @HostBinding('class')\n get __hostClass(): string[] {\n const list: string[] = ['ax-action-item'];\n if (this.disabled()) {\n list.push('ax-state-disabled');\n }\n list.push(`${this.color() ?? 'ax-default'}`);\n\n return list;\n }\n}\n","<div class=\"ax-action-item-prefix\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-text\"></ng-content>\n</div>\n<div class=\"ax-action-item-suffix\">\n <ng-content select=\"ax-suffix\"></ng-content>\n @if (hasSubItems() && (!isFirstLevel() || root.hasArrow())) {\n <i class=\"ax-icon ax-icon-solid {{ arrowIcon() }} \"></i>\n }\n</div>\n<div\n #submenuSlot\n class=\"ax-menu-items ax-action-list ax-action-list-vertical\"\n [class.ax-state-open]=\"isOpen()\"\n>\n <ng-content select=\"ax-menu-item,ax-title,ax-divider,ng-container,[ngTemplateOutlet]\"></ng-content>\n</div>\n","import { AXComponent, AXOrientation, NXComponent, NXEvent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { isBrowser } from '@acorex/core/platform';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXPoint } from '@acorex/core/utils';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { AsyncPipe, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n DOCUMENT,\n HostBinding,\n HostListener,\n inject,\n Injector,\n input,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { cloneDeep } from 'lodash-es';\nimport { AXMenuItemComponent } from './menu-item.component';\nimport { AXMenuService } from './menu.service';\nimport { AXMenuCloseTrigger, AXMenuItem, AXMenuItemClickBaseEvent, AXMenuOpenTrigger, AXRootMenu } from './menu.types';\n\nexport class AXContextMenuOpeningEvent extends NXEvent<AXContextMenuComponent> {\n items: AXMenuItem[];\n canceled = false;\n targetElement: HTMLElement;\n}\nexport type AXContextMenuItemsClickEvent = AXMenuItemClickBaseEvent<AXContextMenuComponent>;\n\n/**\n * Represents a menu component that displays context menu.\n * @category Components\n */\n@Component({\n selector: 'ax-context-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXMenuService,\n {\n provide: AXRootMenu,\n useExisting: AXContextMenuComponent,\n },\n {\n provide: AXComponent,\n useExisting: AXContextMenuComponent,\n },\n ],\n imports: [\n NgTemplateOutlet,\n AXDecoratorGenericComponent,\n AXMenuItemComponent,\n AXDecoratorIconComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n})\nexport class AXContextMenuComponent extends NXComponent {\n // Inputs and Outputs\n\n readonly orientation = input<AXOrientation>('vertical');\n readonly openOn = input<AXMenuOpenTrigger>('hover');\n readonly closeOn = input<AXMenuCloseTrigger>('click');\n /** When true, closes the menu on router navigation (e.g. side-menu route changes). */\n readonly closeOnRouteChange = input(false);\n readonly originalItems = input<AXMenuItem[]>([], { alias: 'items' });\n readonly target = input<HTMLElement | HTMLElement[] | string>();\n\n onItemClick = output<AXContextMenuItemsClickEvent>();\n onOpening = output<AXContextMenuOpeningEvent>();\n /** Emitted when the menu closes (backdrop, item click, scroll, another menu opening, etc.). */\n onClose = output<void>();\n\n hasArrow = signal<boolean>(true);\n\n // Injected Services\n\n private service = inject(AXMenuService);\n private renderer = inject(Renderer2);\n private document = inject(DOCUMENT);\n private platformID = inject(PLATFORM_ID);\n private zIndexService = inject(AXZIndexService);\n private injector = inject(Injector);\n private zToken: AXZToken | null = null;\n private lastOpenPoint: AXPoint | null = null;\n private router = inject(Router, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n // Constructor (Dependency Injection)\n\n /** @ignore */\n constructor() {\n super();\n //\n afterNextRender(() => {\n this.bindContextEvent();\n this.service.initGlobalListeners(this.nativeElement);\n });\n\n this.setupCloseOnRouteChange();\n\n this.service.closeAllContextMenu$.subscribe(() => {\n this.service.closeAll$.next();\n this.close();\n });\n\n this.service.openContextMenu$.subscribe((e) => {\n if ((e.sender as any) == this) {\n this.internalShowAt(e.point);\n }\n });\n }\n\n // Lifecycle Hooks\n\n ngOnDestroy() {\n if (isBrowser()) {\n this.removeContextEvent();\n }\n }\n\n /**\n * Refreshes the context menu by rebinding event listeners to target elements.\n */\n refresh() {\n this.bindContextEvent();\n }\n\n /**\n * Shows the context menu at a specific point.\n * @param point - The coordinates where the menu should appear\n * @param targetElement - Optional target element for the context menu\n * @param event - Optional opening event with menu items\n */\n showAt(point: AXPoint, targetElement?: HTMLElement, event?: AXContextMenuOpeningEvent) {\n const sender = this as any as AXRootMenu;\n this.service.closeAllContextMenu$.next({ sender });\n if (isPlatformBrowser(this.platformID)) {\n if (!targetElement) {\n targetElement = this.document.elementFromPoint(point.x, point.y) as HTMLElement;\n }\n if (!event) {\n event = {\n sender: this,\n canceled: false,\n targetElement: targetElement,\n items: cloneDeep(this.originalItems()),\n };\n if (event.canceled) return;\n }\n this.onOpening.emit(event);\n this.items.set(event.items);\n }\n this.service.openContextMenu$.next({ sender, point });\n }\n\n /**\n * Closes the context menu and removes the backdrop.\n */\n close() {\n const wasOpen = this.nativeElement.classList.contains('ax-state-open');\n this.nativeElement.classList.remove('ax-state-open');\n this.lastOpenPoint = null;\n // Drop rendered items before moving DOM nodes back to the original parent.\n // This prevents a large menu tree from being re-parented/removed as a single heavy DOM operation.\n if (wasOpen) {\n this.items.set([]);\n }\n this.removeBackdrop();\n // Release z-index token\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n if (wasOpen) {\n this.onClose.emit();\n }\n }\n\n // Private Properties\n\n private backdropElement!: HTMLElement;\n private originalNextSibling: Node | null = null;\n private originalParent: HTMLElement | null = null;\n\n protected items = signal<AXMenuItem[]>([]);\n\n // Private Methods (Internal Logic)\n\n /** @ignore */\n private setupCloseOnRouteChange() {\n if (!this.router || !isPlatformBrowser(this.platformID)) {\n return;\n }\n\n this.router.events\n .pipe(\n filter((event): event is NavigationStart => event instanceof NavigationStart),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n if (this.closeOnRouteChange()) {\n this.close();\n }\n });\n }\n\n /** @ignore */\n private getTargetElements(): HTMLElement[] {\n if (isPlatformBrowser(this.platformID)) {\n const elements: HTMLElement[] =\n typeof this.target() == 'string'\n ? Array.from(this.document.querySelectorAll<HTMLElement>(this.target() as string))\n : Array.isArray(this.target())\n ? (this.target() as HTMLElement[])\n : [this.target() as HTMLElement];\n\n return elements;\n }\n return null;\n }\n\n /** @ignore */\n private bindContextEvent() {\n this.getTargetElements().forEach((e) => {\n e?.addEventListener('contextmenu', this.handleContextMenu.bind(this));\n });\n }\n\n /** @ignore */\n private removeContextEvent() {\n this.getTargetElements().forEach((e) => {\n e?.removeEventListener('contextmenu', this.handleContextMenu.bind(this));\n });\n }\n\n /** @ignore */\n private handleContextMenu(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n //\n if (isPlatformBrowser(this.platformID)) {\n const elementsUnderMouse = this.document.elementsFromPoint(e.x, e.y) as HTMLElement[];\n const targetElements = this.getTargetElements();\n const targetElement = elementsUnderMouse.find((target) => targetElements.includes(target));\n //\n const event: AXContextMenuOpeningEvent = {\n sender: this,\n canceled: false,\n targetElement: targetElement,\n items: cloneDeep(this.originalItems()),\n };\n //\n if (!event.canceled) {\n this.showAt({ x: e.clientX, y: e.clientY }, targetElement, event);\n }\n }\n }\n\n /** @ignore */\n private internalShowAt(point: AXPoint) {\n this.lastOpenPoint = point;\n const elementRef = this.nativeElement;\n elementRef.classList.add('ax-state-open');\n this.positionAtPoint(point);\n this.createBackdrop();\n\n // Items may render after the signal update (e.g. compact side-menu); reposition once laid out.\n afterNextRender(\n () => {\n if (this.lastOpenPoint && elementRef.classList.contains('ax-state-open')) {\n this.positionAtPoint(this.lastOpenPoint);\n }\n },\n { injector: this.injector },\n );\n }\n\n /**\n * Positions the menu at `point`, flipping when it would overflow the viewport.\n * Uses a temporary visible layout pass so parents that hide the host (e.g. side-menu `display: none`) do not yield a zero-sized rect.\n */\n private positionAtPoint(point: AXPoint) {\n const elementRef = this.nativeElement;\n const itemRect = this.measureMenuRect(elementRef);\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const isRtl = AXHtmlUtil.isRtl(elementRef);\n\n let left: number;\n if (isRtl) {\n left = point.x - itemRect.width;\n if (left < 0) {\n left = point.x;\n }\n } else {\n left = point.x;\n if (left + itemRect.width > windowWidth) {\n left = point.x - itemRect.width;\n }\n }\n\n const bottom = point.y + itemRect.height;\n let top: number;\n\n if (bottom > windowHeight) {\n top = point.y - itemRect.height;\n if (top < 0) {\n top = 0;\n }\n } else {\n top = point.y;\n }\n\n this.renderer.setStyle(elementRef, 'left', `${left}px`);\n this.renderer.setStyle(elementRef, 'top', `${top}px`);\n this.renderer.setStyle(elementRef, 'position', 'fixed');\n }\n\n /** Measures menu size even when an ancestor hides the host with `display: none`. */\n private measureMenuRect(elementRef: HTMLElement): DOMRect {\n this.renderer.setStyle(elementRef, 'visibility', 'hidden');\n this.renderer.setStyle(elementRef, 'display', 'flex');\n const rect = elementRef.getBoundingClientRect();\n this.renderer.removeStyle(elementRef, 'visibility');\n this.renderer.removeStyle(elementRef, 'display');\n return rect;\n }\n\n /** @ignore */\n private createBackdrop() {\n if (!this.originalParent) {\n this.originalParent = this.nativeElement.parentElement;\n this.originalNextSibling = this.nativeElement.nextSibling;\n }\n\n // Acquire z-index token\n this.zToken = this.zIndexService.acquire();\n\n this.backdropElement = this.renderer.createElement('div');\n this.renderer.setStyle(this.backdropElement, 'position', 'fixed');\n this.renderer.setStyle(this.backdropElement, 'top', '0');\n this.renderer.setStyle(this.backdropElement, 'left', '0');\n this.renderer.setStyle(this.backdropElement, 'width', '100%');\n this.renderer.setStyle(this.backdropElement, 'height', '100%');\n this.renderer.setStyle(this.backdropElement, 'z-index', String(this.zToken.zIndex));\n this.renderer.setStyle(this.backdropElement, 'background', 'transparent');\n\n this.createEventListeners(this.backdropElement);\n\n this.document.body.appendChild(this.backdropElement);\n this.backdropElement.appendChild(this.nativeElement);\n }\n\n /** @ignore */\n private removeBackdrop() {\n if (this.backdropElement) {\n if (this.originalParent) {\n this.renderer.insertBefore(this.originalParent, this.nativeElement, this.originalNextSibling);\n }\n if (this.backdropElement.parentNode) {\n this.renderer.removeChild(this.backdropElement.parentNode, this.backdropElement);\n }\n this.backdropElement = null;\n }\n }\n\n private createEventListeners(el: HTMLElement) {\n const l1 = this.renderer.listen(el, 'click', () => {\n this.close();\n l1();\n });\n\n const l2 = this.renderer.listen(el, 'wheel', () => {\n this.close();\n l2();\n });\n\n const l3 = this.renderer.listen(el, 'contextmenu', (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n const x = e.clientX;\n const y = e.clientY;\n\n // Close first so the full-screen backdrop is gone; otherwise the next target never\n // receives contextmenu (conversation list / message list / etc.).\n this.close();\n\n if (isPlatformBrowser(this.platformID)) {\n requestAnimationFrame(() => {\n const under = this.document.elementFromPoint(x, y) as HTMLElement | null;\n if (!under || under === this.document.body || under === this.document.documentElement) {\n return;\n }\n const forward = new MouseEvent('contextmenu', {\n bubbles: true,\n cancelable: true,\n view: this.document.defaultView ?? undefined,\n clientX: x,\n clientY: y,\n screenX: e.screenX,\n screenY: e.screenY,\n button: 2,\n buttons: 2,\n });\n under.dispatchEvent(forward);\n });\n }\n\n l3();\n });\n }\n\n // Host Listeners (UI Interaction Handling)\n\n /** @ignore */\n @HostListener('window:scroll')\n @HostListener('window:resize')\n onWindowEvent() {\n const sender = this as any as AXRootMenu;\n this.service.closeAllContextMenu$.next({ sender: sender }); // Close all menus on scroll or resize\n }\n\n /** @ignore */\n @HostBinding('class')\n get __hostClass(): any {\n return ['ax-menu-container', `ax-orientation-${this.orientation()}`, 'ax-action-list', 'ax-action-list-vertical'];\n }\n}\n","<ng-content select=\"ax-menu-item,ax-divider,ax-title,ng-container\"></ng-content>\n\n@for (node of items(); track node) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n}\n\n<ng-template #Recursion let-item>\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <ax-menu-item\n [name]=\"item.name\"\n [data]=\"item.data\"\n [disabled]=\"item.disabled\"\n [color]=\"item.color\"\n [subItems]=\"item.items ?? []\"\n >\n @if (item.icon) {\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"> </ax-icon>\n </ax-prefix>\n }\n @if (item.text) {\n <ax-text>{{ item.text | translate | async }}</ax-text>\n }\n @if (item.suffix) {\n <ax-suffix>\n <ax-text>{{ item.suffix.text | translate | async }}</ax-text>\n </ax-suffix>\n }\n @for (child of item.items; track child) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n }\n </ax-menu-item>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n</ng-template>\n","import { AXComponent, AXOrientation, NXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n inject,\n input,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXMenuItemComponent } from './menu-item.component';\nimport { AXMenuService } from './menu.service';\nimport { AXMenuCloseTrigger, AXMenuItem, AXMenuItemClickBaseEvent, AXMenuOpenTrigger, AXRootMenu } from './menu.types';\n\nexport type AXMenuItemsClickEvent = AXMenuItemClickBaseEvent<AXMenuComponent>;\n\n/**\n * Represents a menu component that displays menu items.\n * @category Components\n */\n@Component({\n selector: 'ax-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n AXMenuService,\n {\n provide: AXRootMenu,\n useExisting: AXMenuComponent,\n },\n {\n provide: AXComponent,\n useExisting: AXMenuComponent,\n },\n ],\n imports: [\n NgTemplateOutlet,\n AXDecoratorGenericComponent,\n AXMenuItemComponent,\n AXDecoratorIconComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n})\nexport class AXMenuComponent extends NXComponent {\n constructor() {\n super();\n afterNextRender(() => {\n this.service.initGlobalListeners(this.nativeElement);\n });\n }\n\n orientation = input<AXOrientation>('horizontal');\n\n openOn = input<AXMenuOpenTrigger>('hover');\n\n closeOn = input<AXMenuCloseTrigger>('leave');\n\n service = inject(AXMenuService);\n\n onItemClick = output<AXMenuItemsClickEvent>();\n\n items = input<AXMenuItem[]>([]);\n\n hasArrow = input<boolean>(true);\n\n /** @ignore */\n @HostBinding('class')\n get __hostClass(): string[] {\n return [\n 'ax-root-menu',\n 'ax-action-list',\n `ax-action-list-${this.orientation()}`,\n `${!this.hasArrow() ? 'ax-hide-arrow' : ''}`,\n ];\n }\n\n /**\n * Closes all open menus and submenus for this root menu.\n *\n * @returns void - No return value. All open menu overlays are closed and hidden.\n */\n public close() {\n this.service.closeAll$.next();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXContextMenuComponent } from './context-menu.component';\nimport { AXMenuItemComponent } from './menu-item.component';\nimport { AXMenuComponent } from './menu.component';\n\n@NgModule({\n imports: [AXMenuItemComponent, AXMenuComponent, AXContextMenuComponent],\n exports: [AXMenuItemComponent, AXMenuComponent, AXContextMenuComponent],\n})\nexport class AXMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-menu.mjs","sources":["../../../../packages/components/menu/src/lib/menu.service.ts","../../../../packages/components/menu/src/lib/menu.types.ts","../../../../packages/components/menu/src/lib/menu-item.component.ts","../../../../packages/components/menu/src/lib/menu-item.component.html","../../../../packages/components/menu/src/lib/context-menu.component.ts","../../../../packages/components/menu/src/lib/menu.component.html","../../../../packages/components/menu/src/lib/menu.component.ts","../../../../packages/components/menu/src/lib/menu.module.ts","../../../../packages/components/menu/src/acorex-components-menu.ts"],"sourcesContent":["import { AXHtmlUtil, AXPoint } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, DOCUMENT, inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { AXMenuItemComponentBase, AXRootMenu } from './menu.types';\n\n@Injectable()\nexport class AXMenuService {\n public closeAll$: Subject<void> = new Subject();\n public open$: Subject<AXMenuItemComponentBase> = new Subject();\n public close$: Subject<AXMenuItemComponentBase> = new Subject();\n\n public openContextMenu$ = new Subject<{ sender: AXRootMenu; point: AXPoint }>();\n public closeAllContextMenu$ = new Subject<{ sender: AXRootMenu }>();\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n\n private readonly openItems = new Set<AXMenuItemComponentBase>();\n private globalListenersBound = false;\n private rootElement?: HTMLElement;\n private scrollableParents: HTMLElement[] = [];\n\n private readonly onDocumentClick = (event: MouseEvent) => {\n if (this.rootElement && !this.rootElement.contains(event.target as Node)) {\n this.closeAll$.next();\n }\n };\n\n private readonly onWindowOrScrollEvent = () => {\n this.closeAll$.next();\n };\n\n constructor() {\n this.closeAll$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.openItems.clear();\n });\n }\n\n /**\n * Registers a single set of document/window/scroll listeners for the whole menu tree.\n */\n initGlobalListeners(rootElement: HTMLElement) {\n if (!isPlatformBrowser(this.platformId) || this.globalListenersBound) {\n return;\n }\n this.globalListenersBound = true;\n this.rootElement = rootElement;\n\n this.document.addEventListener('click', this.onDocumentClick);\n window.addEventListener('scroll', this.onWindowOrScrollEvent, { capture: true });\n window.addEventListener('resize', this.onWindowOrScrollEvent);\n\n this.scrollableParents = AXHtmlUtil.getScrollableParents(rootElement);\n this.scrollableParents.forEach((parent) => {\n parent.addEventListener('scroll', this.onWindowOrScrollEvent);\n });\n\n this.destroyRef.onDestroy(() => {\n this.document.removeEventListener('click', this.onDocumentClick);\n window.removeEventListener('scroll', this.onWindowOrScrollEvent, { capture: true });\n window.removeEventListener('resize', this.onWindowOrScrollEvent);\n this.scrollableParents.forEach((parent) => {\n parent.removeEventListener('scroll', this.onWindowOrScrollEvent);\n });\n });\n }\n\n /**\n * Closes open submenus that are not on the ancestor path of the item being opened.\n */\n closeExcept(opener: AXMenuItemComponentBase) {\n const keepOpen = new Set<AXMenuItemComponentBase>();\n let current: AXMenuItemComponentBase | null | undefined = opener;\n while (current) {\n keepOpen.add(current);\n current = current.getParentMenuItem?.() ?? current.parent ?? null;\n }\n\n for (const openItem of [...this.openItems]) {\n if (!keepOpen.has(openItem)) {\n this.markClosed(openItem);\n }\n }\n }\n\n markOpen(item: AXMenuItemComponentBase) {\n this.openItems.add(item);\n this.open$.next(item);\n }\n\n markClosed(item: AXMenuItemComponentBase) {\n this.openItems.delete(item);\n this.close$.next(item);\n }\n}\n","import { AXOrientation, AXStyleColorType, NXClickEvent, NXComponent } from '@acorex/cdk/common';\nimport { OutputEmitterRef, WritableSignal } from '@angular/core';\nimport { IsActiveMatchOptions, UrlTree } from '@angular/router';\n\nexport type AXMenuOpenTrigger = 'click' | 'hover';\nexport type AXMenuCloseTrigger = 'click' | 'leave';\n\nexport abstract class AXRootMenu {\n orientation: WritableSignal<AXOrientation>;\n openOn: WritableSignal<AXMenuOpenTrigger>;\n closeOn: WritableSignal<AXMenuCloseTrigger>;\n onItemClick: OutputEmitterRef<AXMenuItemClickBaseEvent>;\n nativeElement: HTMLDivElement;\n hasArrow: WritableSignal<boolean>;\n}\n\nexport abstract class AXMenuItemComponentBase {\n parent?: AXMenuItemComponentBase | null;\n\n /** Resolves the parent item, including for `ngTemplateOutlet`-created nested items. */\n getParentMenuItem?(): AXMenuItemComponentBase | null | undefined;\n}\n\n/** Shared tree item shape for `ax-menu`, `ax-context-menu`, and `ax-side-menu`. */\nexport interface AXMenuItem {\n text: string;\n name?: string;\n icon?: string;\n data?: unknown;\n disabled?: boolean;\n items?: AXMenuItem[];\n color?: AXStyleColorType;\n suffix?: {\n text: string;\n };\n /** Side-menu alias for `suffix.text`. */\n suffixText?: string;\n break?: boolean;\n group?: {\n name?: string;\n title?: string;\n };\n title?: string;\n routerLink?: string | any[] | UrlTree;\n routerLinkActive?: string | string[];\n routerLinkActiveOptions?: { exact: boolean } | IsActiveMatchOptions;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n active?: boolean;\n isLoading?: boolean;\n isCollapsed?: boolean;\n toggleOnClick?: boolean;\n}\n\nexport class AXMenuItemClickBaseEvent<T extends NXComponent = NXComponent> extends NXClickEvent<T> {\n item: {\n name?: string;\n text: string;\n data?: any;\n };\n canceled = false;\n}\n","import { AXComponent, AXStyleColorType, NXComponent } from '@acorex/cdk/common';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n Injector,\n input,\n OnDestroy,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXMenuService } from './menu.service';\nimport { AXMenuItemClickBaseEvent, AXMenuItemComponentBase, AXRootMenu } from './menu.types';\n\nexport type AXMenuItemClickEvent = AXMenuItemClickBaseEvent<AXMenuItemComponent>;\n\n/**\n * Represents a menu item component used within an `ax-menu`.\n * @category Components\n */\n@Component({\n selector: 'ax-menu-item',\n templateUrl: './menu-item.component.html',\n encapsulation: ViewEncapsulation.None,\n\n providers: [\n {\n provide: AXMenuItemComponentBase,\n useExisting: AXMenuItemComponent,\n },\n AXUnsubscriber,\n {\n provide: AXComponent,\n useExisting: AXMenuItemComponent,\n },\n ],\n})\nexport class AXMenuItemComponent extends NXComponent implements OnDestroy {\n protected isOpen = signal(false);\n\n readonly parent = inject(AXMenuItemComponent, { optional: true, skipSelf: true });\n\n protected isFirstLevel = computed(() => this.getParentMenuItem() == null);\n\n private readonly childMenuItems = contentChildren(AXMenuItemComponent, { descendants: false });\n private readonly discoveredSubmenuNodeCount = signal(0);\n private readonly submenuSlot = viewChild<ElementRef<HTMLElement>>('submenuSlot');\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private childObserver: MutationObserver | null = null;\n private childRefreshScheduled = false;\n\n /**\n * Nested items from the data model. Required for recursive `ngTemplateOutlet` templates\n * because `contentChildren` does not traverse those embedded views.\n */\n subItems = input<readonly unknown[]>([]);\n\n protected hasSubItems = computed(\n () =>\n (this.subItems()?.length ?? 0) > 0 || this.childMenuItems().length > 0 || this.discoveredSubmenuNodeCount() > 0,\n );\n\n protected root = inject(AXRootMenu);\n\n private service = inject(AXMenuService);\n\n private unsuscriber = inject(AXUnsubscriber);\n private renderer = inject(Renderer2);\n private injector = inject(Injector);\n private zIndexService = inject(AXZIndexService);\n private zToken: AXZToken | null = null;\n\n protected arrowIcon = computed<string>(() => {\n const isRtl = AXHtmlUtil.isRtl(this.nativeElement);\n return this.root.orientation() == 'horizontal' && this.isFirstLevel()\n ? 'ax-icon-chevron-down'\n : isRtl\n ? 'ax-icon-chevron-left'\n : 'ax-icon-chevron-right';\n });\n\n onClick = output<AXMenuItemClickEvent>();\n\n name = input<string>();\n data = input<any>();\n disabled = input<boolean>();\n color = input<AXStyleColorType>();\n\n constructor() {\n super();\n\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this.reparentOrphanedChildren();\n this.updateDiscoveredSubmenuNodeCount();\n this.childObserver = new MutationObserver((records) => {\n if (!this.hasRelevantChildMutation(records)) {\n return;\n }\n this.scheduleChildRefresh();\n });\n this.childObserver.observe(this.nativeElement, { childList: true, subtree: true });\n this.destroyRef.onDestroy(() => this.childObserver?.disconnect());\n });\n\n this.service.closeAll$.pipe(this.unsuscriber.takeUntilDestroy).subscribe(() => this.close());\n\n this.service.open$.pipe(this.unsuscriber.takeUntilDestroy).subscribe((item) => {\n if ((this as any) === item) {\n this.isOpen.set(true);\n this.schedulePositionCalculation();\n }\n });\n\n this.service.close$.pipe(this.unsuscriber.takeUntilDestroy).subscribe((item) => {\n if ((this as any) == item) {\n this.isOpen.set(false);\n }\n });\n }\n\n private getText(): string {\n return this.nativeElement.querySelector<HTMLDivElement>('ax-text')?.innerText;\n }\n\n /**\n * Resolves the parent menu item. Items rendered via recursive `ngTemplateOutlet` do not\n * receive a DI parent, so we fall back to the DOM tree after reparenting.\n */\n getParentMenuItem(): AXMenuItemComponent | null {\n if (this.parent) {\n return this.parent;\n }\n\n const parentHost = this.nativeElement.parentElement?.closest('ax-menu-item');\n if (!parentHost || parentHost === this.nativeElement) {\n return null;\n }\n\n const ctx = (parentHost as HTMLElement & { __axContext__?: unknown }).__axContext__;\n return ctx instanceof AXMenuItemComponent ? ctx : null;\n }\n\n /**\n * Opens the submenu of this menu item if it has sub-items and is not disabled.\n */\n open() {\n if (this.disabled() || !this.hasSubItems()) {\n return;\n }\n\n this.reparentOrphanedChildren();\n this.service.closeExcept(this);\n\n if (!this.zToken) {\n this.zToken = this.zIndexService.acquire();\n }\n this.service.markOpen(this);\n }\n\n /**\n * Closes the submenu of this menu item if open.\n */\n close() {\n this.service.markClosed(this);\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n }\n\n /**\n * Positions the submenu after layout so nested levels measure their full height.\n */\n private schedulePositionCalculation() {\n afterNextRender(\n () => {\n if (this.isOpen()) {\n this.calculatePosition();\n afterNextRender(\n () => {\n if (this.isOpen()) {\n this.calculatePosition();\n }\n },\n { injector: this.injector },\n );\n }\n },\n { injector: this.injector },\n );\n }\n\n /**\n * Calculate the position of the submenu to avoid it going out of the viewport.\n */\n private calculatePosition() {\n const submenu = this.submenuSlot()?.nativeElement;\n if (!submenu) return;\n\n const submenuRect = this.measureSubmenuRect(submenu);\n const itemRect = this.nativeElement.getBoundingClientRect();\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const isRtl = AXHtmlUtil.isRtl(this.nativeElement);\n\n let finalTop: number;\n let finalLeft: number;\n\n const preferredTop =\n this.isFirstLevel() && this.root.orientation() === 'horizontal' ? itemRect.bottom : itemRect.top;\n\n const alternateTop = itemRect.top - submenuRect.height;\n\n if (preferredTop + submenuRect.height <= windowHeight) {\n finalTop = preferredTop;\n } else if (alternateTop >= 0) {\n finalTop = alternateTop;\n } else {\n finalTop = windowHeight - submenuRect.height;\n }\n\n finalTop = this.clampVerticalPosition(finalTop, submenuRect.height, windowHeight);\n\n if (this.isFirstLevel() && this.root.orientation() === 'horizontal') {\n const preferredLeft = isRtl ? itemRect.right - submenuRect.width : itemRect.left;\n const alternateLeft = isRtl ? itemRect.left : itemRect.right - submenuRect.width;\n\n if (preferredLeft >= 0 && preferredLeft + submenuRect.width <= windowWidth) {\n finalLeft = preferredLeft;\n } else {\n finalLeft = Math.max(0, Math.min(alternateLeft, windowWidth - submenuRect.width));\n }\n } else {\n const preferredLeftRtl = itemRect.left - submenuRect.width;\n const alternateLeftRtl = itemRect.right;\n\n const preferredLeftLtr = itemRect.right;\n const alternateLeftLtr = itemRect.left - submenuRect.width;\n\n if (isRtl) {\n if (preferredLeftRtl >= 0) {\n finalLeft = preferredLeftRtl;\n } else if (alternateLeftRtl + submenuRect.width <= windowWidth) {\n finalLeft = alternateLeftRtl;\n } else {\n finalLeft = 0;\n }\n } else {\n if (preferredLeftLtr + submenuRect.width <= windowWidth) {\n finalLeft = preferredLeftLtr;\n } else if (alternateLeftLtr >= 0) {\n finalLeft = alternateLeftLtr;\n } else {\n finalLeft = windowWidth - submenuRect.width;\n }\n }\n }\n\n const isNestedMenu = !(this.isFirstLevel() && this.root.orientation() === 'horizontal');\n if (isNestedMenu) {\n const overlapsParent = finalLeft < itemRect.right && itemRect.left < finalLeft + submenuRect.width;\n if (overlapsParent) {\n const shiftedTop = itemRect.bottom;\n if (shiftedTop + submenuRect.height <= windowHeight) {\n finalTop = shiftedTop;\n }\n }\n }\n\n finalTop = this.clampVerticalPosition(finalTop, submenuRect.height, windowHeight);\n\n this.renderer.setStyle(submenu, 'position', 'fixed');\n this.renderer.setStyle(submenu, 'top', `${finalTop}px`);\n this.renderer.setStyle(submenu, 'left', `${finalLeft}px`);\n if (this.zToken) {\n this.renderer.setStyle(submenu, 'z-index', String(this.zToken.zIndex));\n }\n }\n\n /** Measures submenu size using the same flex layout as the rendered menu. */\n private measureSubmenuRect(submenu: HTMLElement): DOMRect {\n this.renderer.setStyle(submenu, 'visibility', 'hidden');\n this.renderer.setStyle(submenu, 'display', 'flex');\n const rect = submenu.getBoundingClientRect();\n this.renderer.removeStyle(submenu, 'visibility');\n this.renderer.removeStyle(submenu, 'display');\n return rect;\n }\n\n /**\n * Moves nested `ax-menu-item` nodes rendered by recursive `ngTemplateOutlet` templates\n * into the submenu slot. Angular content queries do not traverse those embedded views.\n */\n private reparentOrphanedChildren() {\n const container = this.submenuSlot()?.nativeElement;\n if (!container) {\n return;\n }\n\n for (const el of this.getDirectSubmenuNodes()) {\n if (!container.contains(el)) {\n try {\n container.appendChild(el);\n } catch {\n // HierarchyRequestError when the node is already being moved.\n }\n }\n }\n }\n\n /**\n * Nested submenu nodes rendered by custom recursive templates (direct children of this item only).\n */\n private getDirectSubmenuNodes(): HTMLElement[] {\n return Array.from(this.nativeElement.querySelectorAll<HTMLElement>('ax-menu-item, ax-title, ax-divider')).filter(\n (el) => {\n if (el === this.nativeElement) {\n return false;\n }\n\n if (el.tagName === 'AX-MENU-ITEM') {\n return el.parentElement?.closest('ax-menu-item') === this.nativeElement;\n }\n\n return el.closest('ax-menu-item') === this.nativeElement;\n },\n );\n }\n\n private updateDiscoveredSubmenuNodeCount() {\n this.discoveredSubmenuNodeCount.set(this.getDirectSubmenuNodes().length);\n }\n\n private scheduleChildRefresh() {\n if (this.childRefreshScheduled) {\n return;\n }\n this.childRefreshScheduled = true;\n requestAnimationFrame(() => {\n this.childRefreshScheduled = false;\n this.reparentOrphanedChildren();\n this.updateDiscoveredSubmenuNodeCount();\n });\n }\n\n private hasRelevantChildMutation(records: MutationRecord[]): boolean {\n for (const record of records) {\n if (\n this.nodeListContainsMenuStructuralNode(record.addedNodes) ||\n this.nodeListContainsMenuStructuralNode(record.removedNodes)\n ) {\n return true;\n }\n }\n return false;\n }\n\n private nodeListContainsMenuStructuralNode(nodes: NodeList): boolean {\n for (const node of Array.from(nodes)) {\n if (!(node instanceof Element)) {\n continue;\n }\n const tagName = node.tagName;\n if (tagName === 'AX-MENU-ITEM' || tagName === 'AX-TITLE' || tagName === 'AX-DIVIDER') {\n return true;\n }\n if (node.querySelector?.('ax-menu-item,ax-title,ax-divider')) {\n return true;\n }\n }\n return false;\n }\n\n /** Keeps the submenu fully inside the viewport vertically. */\n private clampVerticalPosition(top: number, height: number, windowHeight: number): number {\n if (top + height > windowHeight) {\n top = windowHeight - height;\n }\n if (top < 0) {\n top = 0;\n }\n return top;\n }\n\n @HostListener('click', ['$event'])\n handleClick(e: MouseEvent) {\n e.stopPropagation();\n if (this.disabled()) return;\n\n const event = {\n sender: this,\n nativeEvent: e,\n canceled: false,\n item: {\n name: this.name(),\n text: this.getText(),\n data: this.data(),\n },\n } as AXMenuItemClickEvent;\n\n this.onClick.emit(event);\n this.root.onItemClick.emit({ ...event, ...{ sender: this.root as any } });\n\n if (this.hasSubItems() && !event.canceled) {\n this.open();\n } else if (!event.canceled) {\n this.service.closeAll$.next();\n this.service.closeAllContextMenu$.next({ sender: this.root });\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n handleMouseEnter(event: MouseEvent) {\n event.stopPropagation();\n if (this.mouseLeaveTimeout) {\n clearTimeout(this.mouseLeaveTimeout);\n this.mouseLeaveTimeout = null;\n }\n if (!this.isFirstLevel() || this.root.openOn() == 'hover') {\n this.open();\n }\n }\n\n private mouseLeaveTimeout: ReturnType<typeof setTimeout> | null = null;\n\n @HostListener('mouseleave', ['$event'])\n handleMouseLeave(event: MouseEvent) {\n event.stopPropagation();\n\n if (!this.hasSubItems() || this.root.closeOn() !== 'leave') {\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n if (relatedTarget instanceof Node && this.containsSubmenuPointer(relatedTarget)) {\n return;\n }\n\n if (this.mouseLeaveTimeout) {\n clearTimeout(this.mouseLeaveTimeout);\n }\n\n this.mouseLeaveTimeout = setTimeout(() => {\n this.close();\n }, 500);\n }\n\n /** True when the pointer moved into this item's submenu panel or a nested open submenu. */\n private containsSubmenuPointer(node: Node): boolean {\n const submenu = this.submenuSlot()?.nativeElement;\n if (submenu?.contains(node)) {\n return true;\n }\n\n if (this.nativeElement.contains(node)) {\n return true;\n }\n\n return this.getDirectSubmenuNodes().some((child) => child.contains(node));\n }\n\n ngOnDestroy() {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n /** @ignore */\n @HostBinding('class')\n get __hostClass(): string[] {\n const list: string[] = ['ax-action-item'];\n if (this.disabled()) {\n list.push('ax-state-disabled');\n }\n list.push(`${this.color() ?? 'ax-default'}`);\n\n return list;\n }\n}\n","<div class=\"ax-action-item-prefix\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-text\"></ng-content>\n</div>\n<div class=\"ax-action-item-suffix\">\n <ng-content select=\"ax-suffix\"></ng-content>\n @if (hasSubItems() && (!isFirstLevel() || root.hasArrow())) {\n <i class=\"ax-icon ax-icon-solid {{ arrowIcon() }} \"></i>\n }\n</div>\n<div\n #submenuSlot\n class=\"ax-menu-items ax-action-list ax-action-list-vertical\"\n [class.ax-state-open]=\"isOpen()\"\n>\n <ng-content select=\"ax-menu-item,ax-title,ax-divider,ng-container,[ngTemplateOutlet]\"></ng-content>\n</div>\n","import { AXComponent, AXOrientation, NXComponent, NXEvent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { isBrowser } from '@acorex/core/platform';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXPoint } from '@acorex/core/utils';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { AsyncPipe, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n Component,\n DestroyRef,\n DOCUMENT,\n HostBinding,\n HostListener,\n inject,\n Injector,\n input,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router } from '@angular/router';\nimport { cloneDeep } from 'lodash-es';\nimport { filter } from 'rxjs/operators';\nimport { AXMenuItemComponent } from './menu-item.component';\nimport { AXMenuService } from './menu.service';\nimport { AXMenuCloseTrigger, AXMenuItem, AXMenuItemClickBaseEvent, AXMenuOpenTrigger, AXRootMenu } from './menu.types';\n\nexport class AXContextMenuOpeningEvent extends NXEvent<AXContextMenuComponent> {\n items: AXMenuItem[];\n canceled = false;\n targetElement: HTMLElement;\n}\nexport type AXContextMenuItemsClickEvent = AXMenuItemClickBaseEvent<AXContextMenuComponent>;\n\n/**\n * Represents a menu component that displays context menu.\n * @category Components\n */\n@Component({\n selector: 'ax-context-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXMenuService,\n {\n provide: AXRootMenu,\n useExisting: AXContextMenuComponent,\n },\n {\n provide: AXComponent,\n useExisting: AXContextMenuComponent,\n },\n ],\n imports: [\n NgTemplateOutlet,\n AXDecoratorGenericComponent,\n AXMenuItemComponent,\n AXDecoratorIconComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n})\nexport class AXContextMenuComponent extends NXComponent {\n // Inputs and Outputs\n\n readonly orientation = input<AXOrientation>('vertical');\n readonly openOn = input<AXMenuOpenTrigger>('hover');\n readonly closeOn = input<AXMenuCloseTrigger>('click');\n /** When true, closes the menu on router navigation (e.g. side-menu route changes). */\n readonly closeOnRouteChange = input(false);\n readonly originalItems = input<AXMenuItem[]>([], { alias: 'items' });\n readonly target = input<HTMLElement | HTMLElement[] | string>();\n\n onItemClick = output<AXContextMenuItemsClickEvent>();\n onOpening = output<AXContextMenuOpeningEvent>();\n /** Emitted when the menu closes (backdrop, item click, scroll, another menu opening, etc.). */\n onClose = output<void>();\n\n hasArrow = signal<boolean>(true);\n\n // Injected Services\n\n private service = inject(AXMenuService);\n private renderer = inject(Renderer2);\n private document = inject(DOCUMENT);\n private platformID = inject(PLATFORM_ID);\n private zIndexService = inject(AXZIndexService);\n private injector = inject(Injector);\n private zToken: AXZToken | null = null;\n private lastOpenPoint: AXPoint | null = null;\n private router = inject(Router, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n // Constructor (Dependency Injection)\n\n /** @ignore */\n constructor() {\n super();\n //\n afterNextRender(() => {\n this.bindContextEvent();\n this.service.initGlobalListeners(this.nativeElement);\n });\n\n this.setupCloseOnRouteChange();\n\n this.service.closeAllContextMenu$.subscribe(() => {\n this.service.closeAll$.next();\n this.close();\n });\n\n this.service.openContextMenu$.subscribe((e) => {\n if ((e.sender as any) == this) {\n this.internalShowAt(e.point);\n }\n });\n }\n\n // Lifecycle Hooks\n\n ngOnDestroy() {\n if (isBrowser()) {\n this.removeContextEvent();\n }\n }\n\n /**\n * Refreshes the context menu by rebinding event listeners to target elements.\n */\n refresh() {\n this.bindContextEvent();\n }\n\n /**\n * Shows the context menu at a specific point.\n * @param point - The coordinates where the menu should appear\n * @param targetElement - Optional target element for the context menu\n * @param event - Optional opening event with menu items\n */\n showAt(point: AXPoint, targetElement?: HTMLElement, event?: AXContextMenuOpeningEvent) {\n const sender = this as any as AXRootMenu;\n this.service.closeAllContextMenu$.next({ sender });\n if (isPlatformBrowser(this.platformID)) {\n if (!targetElement) {\n targetElement = this.document.elementFromPoint(point.x, point.y) as HTMLElement;\n }\n if (!event) {\n event = {\n sender: this,\n canceled: false,\n targetElement: targetElement,\n items: cloneDeep(this.originalItems()),\n };\n if (event.canceled) return;\n }\n this.onOpening.emit(event);\n this.items.set(event.items);\n }\n this.service.openContextMenu$.next({ sender, point });\n }\n\n /**\n * Closes the context menu and removes the backdrop.\n */\n close() {\n const wasOpen = this.nativeElement.classList.contains('ax-state-open');\n this.nativeElement.classList.remove('ax-state-open');\n this.lastOpenPoint = null;\n // Drop rendered items before moving DOM nodes back to the original parent.\n // This prevents a large menu tree from being re-parented/removed as a single heavy DOM operation.\n if (wasOpen) {\n this.items.set([]);\n }\n this.removeBackdrop();\n // Release z-index token\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n if (wasOpen) {\n this.onClose.emit();\n }\n }\n\n // Private Properties\n\n private backdropElement!: HTMLElement;\n private originalNextSibling: Node | null = null;\n private originalParent: HTMLElement | null = null;\n\n protected items = signal<AXMenuItem[]>([]);\n\n // Private Methods (Internal Logic)\n\n /** @ignore */\n private setupCloseOnRouteChange() {\n if (!this.router || !isPlatformBrowser(this.platformID)) {\n return;\n }\n\n this.router.events\n .pipe(\n filter((event): event is NavigationStart => event instanceof NavigationStart),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n if (this.closeOnRouteChange()) {\n this.close();\n }\n });\n }\n\n /** @ignore */\n private getTargetElements(): HTMLElement[] {\n if (isPlatformBrowser(this.platformID)) {\n const elements: HTMLElement[] =\n typeof this.target() == 'string'\n ? Array.from(this.document.querySelectorAll<HTMLElement>(this.target() as string))\n : Array.isArray(this.target())\n ? (this.target() as HTMLElement[])\n : [this.target() as HTMLElement];\n\n return elements;\n }\n return null;\n }\n\n /** @ignore */\n private bindContextEvent() {\n this.getTargetElements().forEach((e) => {\n e?.addEventListener('contextmenu', this.handleContextMenu.bind(this));\n });\n }\n\n /** @ignore */\n private removeContextEvent() {\n this.getTargetElements().forEach((e) => {\n e?.removeEventListener('contextmenu', this.handleContextMenu.bind(this));\n });\n }\n\n /** @ignore */\n private handleContextMenu(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n //\n if (isPlatformBrowser(this.platformID)) {\n const elementsUnderMouse = this.document.elementsFromPoint(e.x, e.y) as HTMLElement[];\n const targetElements = this.getTargetElements();\n const targetElement = elementsUnderMouse.find((target) => targetElements.includes(target));\n //\n const event: AXContextMenuOpeningEvent = {\n sender: this,\n canceled: false,\n targetElement: targetElement,\n items: cloneDeep(this.originalItems()),\n };\n //\n if (!event.canceled) {\n this.showAt({ x: e.clientX, y: e.clientY }, targetElement, event);\n }\n }\n }\n\n /** @ignore */\n private internalShowAt(point: AXPoint) {\n this.lastOpenPoint = point;\n const elementRef = this.nativeElement;\n elementRef.classList.add('ax-state-open');\n this.positionAtPoint(point);\n this.createBackdrop();\n\n // Items may render after the signal update (e.g. compact side-menu); reposition once laid out.\n afterNextRender(\n () => {\n if (this.lastOpenPoint && elementRef.classList.contains('ax-state-open')) {\n this.positionAtPoint(this.lastOpenPoint);\n }\n },\n { injector: this.injector },\n );\n }\n\n /**\n * Positions the menu at `point`, flipping when it would overflow the viewport.\n * Uses a temporary visible layout pass so parents that hide the host (e.g. side-menu `display: none`) do not yield a zero-sized rect.\n */\n private positionAtPoint(point: AXPoint) {\n const elementRef = this.nativeElement;\n const itemRect = this.measureMenuRect(elementRef);\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const isRtl = AXHtmlUtil.isRtl(elementRef);\n\n let left: number;\n if (isRtl) {\n left = point.x - itemRect.width;\n if (left < 0) {\n left = point.x;\n }\n } else {\n left = point.x;\n if (left + itemRect.width > windowWidth) {\n left = point.x - itemRect.width;\n }\n }\n\n const bottom = point.y + itemRect.height;\n let top: number;\n\n if (bottom > windowHeight) {\n top = point.y - itemRect.height;\n if (top < 0) {\n top = 0;\n }\n } else {\n top = point.y;\n }\n\n this.renderer.setStyle(elementRef, 'left', `${left}px`);\n this.renderer.setStyle(elementRef, 'top', `${top}px`);\n this.renderer.setStyle(elementRef, 'position', 'fixed');\n }\n\n /** Measures menu size even when an ancestor hides the host with `display: none`. */\n private measureMenuRect(elementRef: HTMLElement): DOMRect {\n this.renderer.setStyle(elementRef, 'visibility', 'hidden');\n this.renderer.setStyle(elementRef, 'display', 'flex');\n const rect = elementRef.getBoundingClientRect();\n this.renderer.removeStyle(elementRef, 'visibility');\n this.renderer.removeStyle(elementRef, 'display');\n return rect;\n }\n\n /** @ignore */\n private createBackdrop() {\n if (!this.originalParent) {\n this.originalParent = this.nativeElement.parentElement;\n this.originalNextSibling = this.nativeElement.nextSibling;\n }\n\n // Acquire z-index token\n this.zToken = this.zIndexService.acquire();\n\n this.backdropElement = this.renderer.createElement('div');\n this.renderer.setStyle(this.backdropElement, 'position', 'fixed');\n this.renderer.setStyle(this.backdropElement, 'top', '0');\n this.renderer.setStyle(this.backdropElement, 'left', '0');\n this.renderer.setStyle(this.backdropElement, 'width', '100%');\n this.renderer.setStyle(this.backdropElement, 'height', '100%');\n this.renderer.setStyle(this.backdropElement, 'z-index', String(this.zToken.zIndex));\n this.renderer.setStyle(this.backdropElement, 'background', 'transparent');\n\n this.createEventListeners(this.backdropElement);\n\n this.document.body.appendChild(this.backdropElement);\n this.backdropElement.appendChild(this.nativeElement);\n }\n\n /** @ignore */\n private removeBackdrop() {\n if (this.backdropElement) {\n if (this.originalParent) {\n this.renderer.insertBefore(this.originalParent, this.nativeElement, this.originalNextSibling);\n }\n if (this.backdropElement.parentNode) {\n this.renderer.removeChild(this.backdropElement.parentNode, this.backdropElement);\n }\n this.backdropElement = null;\n }\n }\n\n private createEventListeners(el: HTMLElement) {\n const l1 = this.renderer.listen(el, 'click', () => {\n this.close();\n l1();\n });\n\n const l2 = this.renderer.listen(el, 'wheel', () => {\n this.close();\n l2();\n });\n\n const l3 = this.renderer.listen(el, 'contextmenu', (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n const x = e.clientX;\n const y = e.clientY;\n\n // Close first so the full-screen backdrop is gone; otherwise the next target never\n // receives contextmenu (conversation list / message list / etc.).\n this.close();\n\n if (isPlatformBrowser(this.platformID)) {\n requestAnimationFrame(() => {\n const under = this.document.elementFromPoint(x, y) as HTMLElement | null;\n if (!under || under === this.document.body || under === this.document.documentElement) {\n return;\n }\n const forward = new MouseEvent('contextmenu', {\n bubbles: true,\n cancelable: true,\n view: this.document.defaultView ?? undefined,\n clientX: x,\n clientY: y,\n screenX: e.screenX,\n screenY: e.screenY,\n button: 2,\n buttons: 2,\n });\n under.dispatchEvent(forward);\n });\n }\n\n l3();\n });\n }\n\n // Host Listeners (UI Interaction Handling)\n\n /** @ignore */\n @HostListener('window:scroll')\n @HostListener('window:resize')\n onWindowEvent() {\n const sender = this as any as AXRootMenu;\n this.service.closeAllContextMenu$.next({ sender: sender }); // Close all menus on scroll or resize\n }\n\n /** @ignore */\n @HostBinding('class')\n get __hostClass(): any {\n return ['ax-menu-container', `ax-orientation-${this.orientation()}`, 'ax-action-list', 'ax-action-list-vertical'];\n }\n}\n","<ng-content select=\"ax-menu-item,ax-divider,ax-title,ng-container\"></ng-content>\n\n@for (node of items(); track node) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n}\n\n<ng-template #Recursion let-item>\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <ax-menu-item\n [name]=\"item.name\"\n [data]=\"item.data\"\n [disabled]=\"item.disabled\"\n [color]=\"item.color\"\n [subItems]=\"item.items ?? []\"\n >\n @if (item.icon) {\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"> </ax-icon>\n </ax-prefix>\n }\n @if (item.text) {\n <ax-text>{{ item.text | translate | async }}</ax-text>\n }\n @if (item.suffix) {\n <ax-suffix>\n <ax-text>{{ item.suffix.text | translate | async }}</ax-text>\n </ax-suffix>\n }\n @for (child of item.items; track child) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n }\n </ax-menu-item>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n</ng-template>\n","import { AXComponent, AXOrientation, NXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, Component, HostBinding, inject, input, output, ViewEncapsulation } from '@angular/core';\nimport { AXMenuItemComponent } from './menu-item.component';\nimport { AXMenuService } from './menu.service';\nimport { AXMenuCloseTrigger, AXMenuItem, AXMenuItemClickBaseEvent, AXMenuOpenTrigger, AXRootMenu } from './menu.types';\n\nexport type AXMenuItemsClickEvent = AXMenuItemClickBaseEvent<AXMenuComponent>;\n\n/**\n * Represents a menu component that displays menu items.\n * @category Components\n */\n@Component({\n selector: 'ax-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n encapsulation: ViewEncapsulation.None,\n\n providers: [\n AXMenuService,\n {\n provide: AXRootMenu,\n useExisting: AXMenuComponent,\n },\n {\n provide: AXComponent,\n useExisting: AXMenuComponent,\n },\n ],\n imports: [\n NgTemplateOutlet,\n AXDecoratorGenericComponent,\n AXMenuItemComponent,\n AXDecoratorIconComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n})\nexport class AXMenuComponent extends NXComponent {\n constructor() {\n super();\n afterNextRender(() => {\n this.service.initGlobalListeners(this.nativeElement);\n });\n }\n\n orientation = input<AXOrientation>('horizontal');\n\n openOn = input<AXMenuOpenTrigger>('hover');\n\n closeOn = input<AXMenuCloseTrigger>('leave');\n\n service = inject(AXMenuService);\n\n onItemClick = output<AXMenuItemsClickEvent>();\n\n items = input<AXMenuItem[]>([]);\n\n hasArrow = input<boolean>(true);\n\n /** @ignore */\n @HostBinding('class')\n get __hostClass(): string[] {\n return [\n 'ax-root-menu',\n 'ax-action-list',\n `ax-action-list-${this.orientation()}`,\n `${!this.hasArrow() ? 'ax-hide-arrow' : ''}`,\n ];\n }\n\n /**\n * Closes all open menus and submenus for this root menu.\n *\n * @returns void - No return value. All open menu overlays are closed and hidden.\n */\n public close() {\n this.service.closeAll$.next();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXContextMenuComponent } from './context-menu.component';\nimport { AXMenuItemComponent } from './menu-item.component';\nimport { AXMenuComponent } from './menu.component';\n\n@NgModule({\n imports: [AXMenuItemComponent, AXMenuComponent, AXContextMenuComponent],\n exports: [AXMenuItemComponent, AXMenuComponent, AXContextMenuComponent],\n})\nexport class AXMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,24 +1,25 @@
1
1
  import { AXComponent, NXComponent } from '@acorex/cdk/common';
2
2
  import * as i0 from '@angular/core';
3
- import { ChangeDetectionStrategy, ViewEncapsulation, Component, inject, signal, ComponentRef, Injectable, viewChild, TemplateRef, NgModule, input, Directive } from '@angular/core';
3
+ import { ViewEncapsulation, Component, inject, signal, ComponentRef, Injectable, viewChild, TemplateRef, NgModule, input, Directive } from '@angular/core';
4
4
  import { AXOverlayService } from '@acorex/cdk/overlay';
5
5
  import { cloneDeep, set } from 'lodash-es';
6
6
  import { Subject } from 'rxjs';
7
7
 
8
8
  class AXModalFooterComponent {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXModalFooterComponent, isStandalone: true, selector: "ax-modal-footer", providers: [{ provide: AXComponent, useExisting: AXModalFooterComponent }], ngImport: i0, template: "<ng-content select=\"ax-modal-footer\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</ng-content>\n", styles: ["@layer components{ax-modal-footer{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXModalFooterComponent, isStandalone: true, selector: "ax-modal-footer", providers: [{ provide: AXComponent, useExisting: AXModalFooterComponent }], ngImport: i0, template: "<ng-content select=\"ax-modal-footer\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</ng-content>\n", styles: ["@layer components{ax-modal-footer{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalFooterComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalFooterComponent, decorators: [{
13
13
  type: Component,
14
- args: [{ selector: 'ax-modal-footer', imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: AXComponent, useExisting: AXModalFooterComponent }], template: "<ng-content select=\"ax-modal-footer\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</ng-content>\n", styles: ["@layer components{ax-modal-footer{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
14
+ args: [{ selector: 'ax-modal-footer', imports: [], encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXModalFooterComponent }], template: "<ng-content select=\"ax-modal-footer\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</ng-content>\n", styles: ["@layer components{ax-modal-footer{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
15
15
  }] });
16
16
 
17
17
  class AXModalStateService {
18
18
  constructor() {
19
19
  this.modalList = new Map();
20
20
  this.overlayService = inject(AXOverlayService);
21
- this.modalOption = signal(null, ...(ngDevMode ? [{ debugName: "modalOption" }] : /* istanbul ignore next */ []));
21
+ this.modalOption = signal(null, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "modalOption" }] : /* istanbul ignore next */ []));
22
23
  }
23
24
  /**
24
25
  * Opens a modal with the specified content and options.
@@ -29,7 +30,7 @@ class AXModalStateService {
29
30
  async open(content, options) {
30
31
  this.modalOption.set(options);
31
32
  const randomId = Math.floor(Math.random() * 100000000000);
32
- const modalContentComp = (await import('./acorex-components-modal-modal-content.component-BGTYje3j.mjs')).AXModalContentComponent;
33
+ const modalContentComp = (await import('./acorex-components-modal-modal-content.component-BpUsCI8D.mjs')).AXModalContentComponent;
33
34
  const onClose = new Subject();
34
35
  const returnRef = {
35
36
  close: (data) => {
@@ -170,10 +171,10 @@ class AXModalStateService {
170
171
  return;
171
172
  ref.overlay.bringToFront();
172
173
  }
173
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
174
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalStateService, providedIn: 'root' }); }
174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
175
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalStateService, providedIn: 'root' }); }
175
176
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalStateService, decorators: [{
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalStateService, decorators: [{
177
178
  type: Injectable,
178
179
  args: [{
179
180
  providedIn: 'root',
@@ -184,8 +185,10 @@ class AXModalComponent extends NXComponent {
184
185
  constructor() {
185
186
  super(...arguments);
186
187
  this.service = inject(AXModalStateService);
187
- this.template = viewChild(TemplateRef, ...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
188
- this.ref = signal(null, ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
188
+ this.template = viewChild(TemplateRef, /* @ts-ignore */
189
+ ...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
190
+ this.ref = signal(null, /* @ts-ignore */
191
+ ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
189
192
  }
190
193
  /**
191
194
  * Opens the modal with the specified options.
@@ -239,14 +242,14 @@ class AXModalComponent extends NXComponent {
239
242
  return;
240
243
  this.ref().restore();
241
244
  }
242
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.9", type: AXModalComponent, isStandalone: true, selector: "ax-modal", providers: [{ provide: AXComponent, useExisting: AXModalComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
245
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
246
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: AXModalComponent, isStandalone: true, selector: "ax-modal", providers: [{ provide: AXComponent, useExisting: AXModalComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
244
247
  <ng-template #contentTemplate>
245
248
  <ng-content></ng-content>
246
249
  </ng-template>
247
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
250
+ `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
248
251
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalComponent, decorators: [{
252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalComponent, decorators: [{
250
253
  type: Component,
251
254
  args: [{
252
255
  selector: 'ax-modal',
@@ -256,17 +259,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
256
259
  </ng-template>
257
260
  `,
258
261
  encapsulation: ViewEncapsulation.None,
259
- changeDetection: ChangeDetectionStrategy.OnPush,
260
262
  providers: [{ provide: AXComponent, useExisting: AXModalComponent }],
261
263
  }]
262
264
  }], propDecorators: { template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
263
265
 
264
266
  class AXModalModule {
265
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
266
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXModalModule, imports: [AXModalComponent, AXModalFooterComponent], exports: [AXModalComponent, AXModalFooterComponent] }); }
267
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalModule }); }
267
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
268
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXModalModule, imports: [AXModalComponent, AXModalFooterComponent], exports: [AXModalComponent, AXModalFooterComponent] }); }
269
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalModule }); }
268
270
  }
269
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalModule, decorators: [{
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalModule, decorators: [{
270
272
  type: NgModule,
271
273
  args: [{
272
274
  imports: [AXModalComponent, AXModalFooterComponent],
@@ -277,7 +279,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
277
279
  class AXModalService {
278
280
  constructor() {
279
281
  this.stateService = inject(AXModalStateService);
280
- this.ref = signal(null, ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
282
+ this.ref = signal(null, /* @ts-ignore */
283
+ ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
281
284
  }
282
285
  /**
283
286
  * Opens a modal with the specified content and options.
@@ -340,10 +343,10 @@ class AXModalService {
340
343
  return;
341
344
  this.ref().bringToFront();
342
345
  }
343
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
344
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalService, providedIn: 'root' }); }
346
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
347
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalService, providedIn: 'root' }); }
345
348
  }
346
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalService, decorators: [{
349
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalService, decorators: [{
347
350
  type: Injectable,
348
351
  args: [{
349
352
  providedIn: 'root',
@@ -352,7 +355,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
352
355
 
353
356
  class AXModalComponentBase {
354
357
  constructor() {
355
- this.__modal__ = input(...(ngDevMode ? [undefined, { debugName: "__modal__" }] : /* istanbul ignore next */ []));
358
+ this.__modal__ = input(/* @ts-ignore */
359
+ ...(ngDevMode ? [undefined, { debugName: "__modal__" }] : /* istanbul ignore next */ []));
356
360
  }
357
361
  close(data = null) {
358
362
  this.__modal__().close(data);
@@ -369,10 +373,10 @@ class AXModalComponentBase {
369
373
  bringToFront() {
370
374
  this.__modal__().bringToFront();
371
375
  }
372
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalComponentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
373
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: AXModalComponentBase, isStandalone: true, inputs: { __modal__: { classPropertyName: "__modal__", publicName: "__modal__", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
376
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalComponentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
377
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: AXModalComponentBase, isStandalone: true, inputs: { __modal__: { classPropertyName: "__modal__", publicName: "__modal__", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
374
378
  }
375
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXModalComponentBase, decorators: [{
379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXModalComponentBase, decorators: [{
376
380
  type: Directive
377
381
  }], propDecorators: { __modal__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__modal__", required: false }] }] } });
378
382
 
@@ -381,4 +385,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
381
385
  */
382
386
 
383
387
  export { AXModalStateService as A, AXModalFooterComponent as a, AXModalComponent as b, AXModalComponentBase as c, AXModalModule as d, AXModalService as e };
384
- //# sourceMappingURL=acorex-components-modal-acorex-components-modal-dF5HUEBH.mjs.map
388
+ //# sourceMappingURL=acorex-components-modal-acorex-components-modal-Djl-uo9b.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-components-modal-acorex-components-modal-Djl-uo9b.mjs","sources":["../../../../packages/components/modal/src/lib/modal-footer/modal-footer.component.ts","../../../../packages/components/modal/src/lib/modal-footer/modal-footer.component.html","../../../../packages/components/modal/src/lib/modal-state.service.ts","../../../../packages/components/modal/src/lib/modal.component.ts","../../../../packages/components/modal/src/lib/modal.module.ts","../../../../packages/components/modal/src/lib/modal.service.ts","../../../../packages/components/modal/src/lib/modal.types.ts","../../../../packages/components/modal/src/acorex-components-modal.ts"],"sourcesContent":["import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ax-modal-footer',\n templateUrl: './modal-footer.component.html',\n styleUrl: './modal-footer.component.css',\n imports: [],\n encapsulation: ViewEncapsulation.None,\n\n providers: [{ provide: AXComponent, useExisting: AXModalFooterComponent }],\n})\nexport class AXModalFooterComponent {}\n","<ng-content select=\"ax-modal-footer\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</ng-content>\n","import { AXOverlayRef, AXOverlayService } from '@acorex/cdk/overlay';\nimport { AXComponentContent, AXComponentInputs } from '@acorex/core/components';\nimport { ComponentRef, inject, Injectable, signal } from '@angular/core';\nimport { cloneDeep, set } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXModalContentComponent } from './modal-content/modal-content.component';\nimport { AXModalOptions, AXModalRef } from './modal.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXModalStateService {\n private modalList = new Map<number, { overlay: AXOverlayRef<AXModalContentComponent>; modal: AXModalRef }>();\n private overlayService = inject(AXOverlayService);\n modalOption = signal<AXModalOptions>(null);\n\n /**\n * Opens a modal with the specified content and options.\n * @param content - Component, template, or HTML element to display\n * @param options - Configuration options for the modal\n * @returns Promise<AXModalRef> - Reference to the opened modal\n */\n async open<TResult = any>(\n content: AXComponentContent | HTMLElement,\n options?: AXModalOptions,\n ): Promise<AXModalRef<TResult>> {\n this.modalOption.set(options);\n const randomId = Math.floor(Math.random() * 100000000000);\n const modalContentComp = (await import('./modal-content/modal-content.component')).AXModalContentComponent;\n const onClose = new Subject<TResult>();\n\n const returnRef: AXModalRef = {\n close: (data) => {\n this.close(randomId, data);\n },\n setInputs: (values: AXComponentInputs) => {\n this.setInputs(randomId, values);\n },\n minimize: () => {\n this.minimize(randomId);\n },\n maximize: () => {\n this.maximize(randomId);\n },\n restore: () => {\n this.restore(randomId);\n },\n bringToFront: () => {\n this.bringToFront(randomId);\n },\n onClose,\n };\n\n const finalInputs = { ...(cloneDeep(options?.inputs) ?? {}), ...{ __modal__: returnRef } };\n const finalOptions = set(cloneDeep(options) ?? {}, 'inputs', finalInputs);\n\n const ref = await this.overlayService.create(modalContentComp, {\n position: options?.position,\n backdrop: options?.backdrop,\n inputs: {\n __content__: content,\n inputs: {\n ...finalOptions?.inputs,\n },\n id: randomId,\n },\n });\n\n this.modalList.set(randomId, { overlay: ref, modal: returnRef });\n\n return returnRef;\n }\n\n /**\n * Closes a modal by its ID.\n * @param id - The modal ID to close\n * @param data - Optional data to pass to the close event\n */\n async close<TResult = any>(id: number, data?: TResult) {\n const ref = this.modalList.get(id);\n if (!ref) return;\n ref.modal.onClose.next(data);\n ref.overlay.dispose();\n this.modalList.delete(id);\n }\n\n /**\n * Sets input values for a modal by its ID.\n * @param id - The modal ID\n * @param values - Object containing input values to set\n */\n async setInputs(id: number, values: AXComponentInputs) {\n const ref = this.modalList.get(id).overlay.instance;\n if (!ref) return;\n if (ref instanceof ComponentRef) {\n const comRef = ref as ComponentRef<any>;\n Object.entries(values).forEach((v) => {\n comRef.setInput(v[0], v[1]);\n });\n } else {\n ref.context.inputs.set(values);\n }\n }\n\n /**\n * Minimizes a modal by its ID.\n * @param id - The modal ID to minimize\n */\n async minimize(id: number) {\n const ref = this.modalList.get(id).overlay.instance;\n if (!ref) return;\n if (ref instanceof ComponentRef) {\n ref.instance.minimize();\n } else {\n ref.context.minimize();\n }\n }\n\n /**\n * Maximizes a modal by its ID.\n * @param id - The modal ID to maximize\n */\n async maximize(id: number) {\n const ref = this.modalList.get(id).overlay.instance;\n if (!ref) return;\n if (ref instanceof ComponentRef) {\n ref.instance.maximize();\n } else {\n ref.context.maximize();\n }\n }\n\n /**\n * Restores a modal by its ID.\n * @param id - The modal ID to restore\n */\n async restore(id: number) {\n const ref = this.modalList.get(id).overlay.instance;\n if (!ref) return;\n if (ref instanceof ComponentRef) {\n ref.instance.restore();\n } else {\n ref.context.restore();\n }\n }\n\n /**\n * Gets the index of a modal in the minimized stack.\n * @param targetKey - The modal ID to find\n * @returns number - The index position in the stack\n */\n getMapIndexOf(targetKey: any) {\n let index = 0;\n for (const key of this.modalList.keys()) {\n if (key === targetKey) {\n return index;\n }\n index++;\n }\n return -1;\n }\n\n /**\n * Brings a modal to the front of all other overlays.\n * @param id - The modal ID to bring to front\n */\n bringToFront(id: number) {\n const ref = this.modalList.get(id);\n if (!ref) return;\n ref.overlay.bringToFront();\n }\n}\n","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXComponentInputs } from '@acorex/core/components';\nimport { Component, inject, signal, TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXModalStateService } from './modal-state.service';\nimport { AXModalOptions, AXModalRef } from './modal.types';\n\n@Component({\n selector: 'ax-modal',\n template: `\n <ng-template #contentTemplate>\n <ng-content></ng-content>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n\n providers: [{ provide: AXComponent, useExisting: AXModalComponent }],\n})\nexport class AXModalComponent extends NXComponent {\n private service = inject(AXModalStateService);\n protected template = viewChild(TemplateRef);\n private ref = signal<AXModalRef<any>>(null);\n\n /**\n * Opens the modal with the specified options.\n * @param options - Configuration options for the modal\n * @returns Promise<AXModalRef> - Reference to the opened modal\n */\n async open(options?: AXModalOptions) {\n const ref = await this.service.open(this.template(), options);\n this.ref.set(ref);\n return ref;\n }\n\n /**\n * Closes the currently open modal.\n */\n async close() {\n if (this.ref()) return;\n this.ref().close();\n }\n\n /**\n * Sets input values for the modal content component.\n * @param values - Object containing input values to set\n */\n async setInputs(values: AXComponentInputs) {\n if (!this.ref()) return;\n const transform = { inputs: values };\n this.ref().setInputs(transform);\n }\n\n /**\n * Minimizes the modal to the bottom bar.\n */\n async minimize() {\n if (!this.ref()) return;\n this.ref().minimize();\n }\n\n /**\n * Maximizes the modal to fullscreen.\n */\n async maximize() {\n if (!this.ref()) return;\n this.ref().maximize();\n }\n\n /**\n * Restores the modal from minimized or maximized state.\n */\n async restore() {\n if (!this.ref()) return;\n this.ref().restore();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXModalFooterComponent } from './modal-footer/modal-footer.component';\nimport { AXModalComponent } from './modal.component';\n\n@NgModule({\n imports: [AXModalComponent, AXModalFooterComponent],\n exports: [AXModalComponent, AXModalFooterComponent],\n})\nexport class AXModalModule {}\n","import { AXComponentContent, AXComponentInputs } from '@acorex/core/components';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { AXModalStateService } from './modal-state.service';\nimport { AXModalOptions, AXModalRef } from './modal.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXModalService {\n private stateService = inject(AXModalStateService);\n private ref = signal<AXModalRef<any>>(null);\n\n /**\n * Opens a modal with the specified content and options.\n * @param content - Component, template, or HTML element to display\n * @param options - Configuration options for the modal\n * @returns Promise<AXModalRef> - Reference to the opened modal\n */\n async open(content: AXComponentContent | HTMLElement, options?: AXModalOptions): Promise<AXModalRef> {\n const ref = await this.stateService.open(content, options);\n this.ref.set(ref);\n return ref;\n }\n\n /**\n * Closes the currently open modal.\n */\n async close() {\n if (!this.ref()) return;\n this.ref().close();\n }\n\n /**\n * Sets input values for the modal content component.\n * @param values - Object containing input values to set\n */\n async setInputs(values: AXComponentInputs) {\n if (!this.ref()) return;\n const transform = { inputs: values };\n this.ref().setInputs(transform);\n }\n\n /**\n * Minimizes the modal to the bottom bar.\n */\n async minimize() {\n if (!this.ref()) return;\n this.ref().minimize();\n }\n\n /**\n * Maximizes the modal to fullscreen.\n */\n async maximize() {\n if (!this.ref()) return;\n this.ref().maximize();\n }\n\n /**\n * Restores the modal from minimized or maximized state.\n */\n async restore() {\n if (!this.ref()) return;\n this.ref().restore();\n }\n\n /**\n * Brings the modal to the front of all other overlays.\n */\n bringToFront() {\n if (!this.ref()) return;\n this.ref().bringToFront();\n }\n}\n","import { AXOverlayOptions } from '@acorex/cdk/overlay';\nimport { AXComponentInputs } from '@acorex/core/components';\nimport { Directive, input } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface AXModalOptions extends AXOverlayOptions {\n title?: string;\n buttons?: {\n minimize?: {\n enable: boolean;\n position: 'bottom-right' | 'bottom-left';\n };\n maximize?: boolean;\n close?: boolean;\n };\n draggable?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'full' | 'fit';\n header?: boolean;\n footer?: boolean;\n panelClass?: string;\n closeOnEscape?: boolean;\n}\n\nexport interface AXModalRef<TResult = any> {\n minimize: () => void;\n maximize: () => void;\n restore: () => void;\n close: (data?: TResult) => void;\n setInputs: (values: AXComponentInputs) => void;\n /** Brings this modal to the front of all other overlays */\n bringToFront: () => void;\n onClose: Subject<TResult>;\n}\n\n@Directive()\nexport abstract class AXModalComponentBase {\n __modal__ = input<AXModalRef>();\n\n public close(data: any = null) {\n this.__modal__().close(data);\n }\n\n public minimize() {\n this.__modal__().minimize();\n }\n\n public restore() {\n this.__modal__().restore();\n }\n\n public maximize() {\n this.__modal__().maximize();\n }\n\n public bringToFront() {\n this.__modal__().bringToFront();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}