@ngbase/adk 0.1.17 → 0.1.18

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 (199) hide show
  1. package/fesm2022/ngbase-adk-a11y.mjs +42 -42
  2. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  3. package/fesm2022/ngbase-adk-accordion.mjs +20 -26
  4. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  5. package/fesm2022/ngbase-adk-autocomplete.mjs +11 -11
  6. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  7. package/fesm2022/ngbase-adk-avatar.mjs +13 -13
  8. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  9. package/fesm2022/ngbase-adk-bidi.mjs +3 -3
  10. package/fesm2022/ngbase-adk-bidi.mjs.map +1 -1
  11. package/fesm2022/ngbase-adk-breadcrumb.mjs +14 -14
  12. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  13. package/fesm2022/ngbase-adk-cache.mjs +3 -3
  14. package/fesm2022/ngbase-adk-cache.mjs.map +1 -1
  15. package/fesm2022/ngbase-adk-carousel.mjs +18 -18
  16. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  17. package/fesm2022/ngbase-adk-checkbox.mjs +15 -21
  18. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  19. package/fesm2022/ngbase-adk-chip.mjs +12 -12
  20. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-clipboard.mjs +7 -5
  22. package/fesm2022/ngbase-adk-clipboard.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
  24. package/fesm2022/ngbase-adk-color-picker.mjs +44 -53
  25. package/fesm2022/ngbase-adk-color-picker.mjs.map +1 -1
  26. package/fesm2022/ngbase-adk-cookies.mjs +3 -3
  27. package/fesm2022/ngbase-adk-cookies.mjs.map +1 -1
  28. package/fesm2022/ngbase-adk-datepicker.mjs +70 -89
  29. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  30. package/fesm2022/ngbase-adk-dialog.mjs +17 -39
  31. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  32. package/fesm2022/ngbase-adk-drag.mjs +20 -20
  33. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  34. package/fesm2022/ngbase-adk-form-field.mjs +65 -118
  35. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  36. package/fesm2022/ngbase-adk-hover-card.mjs +5 -5
  37. package/fesm2022/ngbase-adk-hover-card.mjs.map +1 -1
  38. package/fesm2022/ngbase-adk-icon.mjs +9 -11
  39. package/fesm2022/ngbase-adk-icon.mjs.map +1 -1
  40. package/fesm2022/ngbase-adk-inline-edit.mjs +27 -35
  41. package/fesm2022/ngbase-adk-inline-edit.mjs.map +1 -1
  42. package/fesm2022/ngbase-adk-jwt.mjs +6 -6
  43. package/fesm2022/ngbase-adk-jwt.mjs.map +1 -1
  44. package/fesm2022/ngbase-adk-keys.mjs +6 -6
  45. package/fesm2022/ngbase-adk-keys.mjs.map +1 -1
  46. package/fesm2022/ngbase-adk-layout.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-list.mjs +10 -10
  48. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  49. package/fesm2022/ngbase-adk-mask.mjs +8 -8
  50. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  51. package/fesm2022/ngbase-adk-menu.mjs +69 -79
  52. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  53. package/fesm2022/ngbase-adk-network.mjs +3 -3
  54. package/fesm2022/ngbase-adk-network.mjs.map +1 -1
  55. package/fesm2022/ngbase-adk-otp.mjs +24 -45
  56. package/fesm2022/ngbase-adk-otp.mjs.map +1 -1
  57. package/fesm2022/ngbase-adk-pagination.mjs +9 -9
  58. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  59. package/fesm2022/ngbase-adk-popover.mjs +120 -89
  60. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  61. package/fesm2022/ngbase-adk-portal.mjs +134 -47
  62. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  63. package/fesm2022/ngbase-adk-progress.mjs +7 -7
  64. package/fesm2022/ngbase-adk-progress.mjs.map +1 -1
  65. package/fesm2022/ngbase-adk-radio.mjs +20 -27
  66. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  67. package/fesm2022/ngbase-adk-resizable.mjs +138 -48
  68. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  69. package/fesm2022/ngbase-adk-scroll-area.mjs +28 -20
  70. package/fesm2022/ngbase-adk-scroll-area.mjs.map +1 -1
  71. package/fesm2022/ngbase-adk-select.mjs +58 -80
  72. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  73. package/fesm2022/ngbase-adk-selectable.mjs +19 -30
  74. package/fesm2022/ngbase-adk-selectable.mjs.map +1 -1
  75. package/fesm2022/ngbase-adk-sheet.mjs +6 -20
  76. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -1
  77. package/fesm2022/ngbase-adk-sidenav.mjs +65 -48
  78. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  79. package/fesm2022/ngbase-adk-slider.mjs +40 -53
  80. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  81. package/fesm2022/ngbase-adk-sonner.mjs +12 -19
  82. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  83. package/fesm2022/ngbase-adk-stepper.mjs +17 -25
  84. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  85. package/fesm2022/ngbase-adk-switch.mjs +25 -32
  86. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  87. package/fesm2022/ngbase-adk-table.mjs +581 -83
  88. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  89. package/fesm2022/ngbase-adk-tabs.mjs +37 -35
  90. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  91. package/fesm2022/ngbase-adk-test.mjs.map +1 -1
  92. package/fesm2022/ngbase-adk-toggle-group.mjs +20 -34
  93. package/fesm2022/ngbase-adk-toggle-group.mjs.map +1 -1
  94. package/fesm2022/ngbase-adk-toggle.mjs +14 -19
  95. package/fesm2022/ngbase-adk-toggle.mjs.map +1 -1
  96. package/fesm2022/ngbase-adk-tooltip.mjs +12 -19
  97. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  98. package/fesm2022/ngbase-adk-tour.mjs +52 -52
  99. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  100. package/fesm2022/ngbase-adk-translate.mjs +8 -10
  101. package/fesm2022/ngbase-adk-translate.mjs.map +1 -1
  102. package/fesm2022/ngbase-adk-tree.mjs +20 -20
  103. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  104. package/fesm2022/ngbase-adk-utils.mjs +30 -43
  105. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  106. package/fesm2022/ngbase-adk-virtualizer.mjs +9 -9
  107. package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -1
  108. package/package.json +101 -101
  109. package/schematics/components/files/accordion/accordion.ts.template +8 -5
  110. package/schematics/components/files/audio/AudioPlayer.ts.template +245 -0
  111. package/schematics/components/files/audio/AudioRecorder.ts.template +377 -0
  112. package/schematics/components/files/audio/AudioVisualizer.ts.template +175 -0
  113. package/schematics/components/files/audio/index.ts.template +3 -0
  114. package/schematics/components/files/charts/area-chart.component.ts.template +278 -0
  115. package/schematics/components/files/charts/bar-chart.component.ts.template +262 -0
  116. package/schematics/components/files/charts/chart-tooltip.component.ts.template +168 -0
  117. package/schematics/components/files/charts/index.ts.template +4 -0
  118. package/schematics/components/files/charts/line-chart.component.ts.template +238 -0
  119. package/schematics/components/files/charts/pie-chart.component.ts.template +283 -0
  120. package/schematics/components/files/checkbox/checkbox.ts.template +2 -2
  121. package/schematics/components/files/color-picker/color-picker.ts.template +2 -2
  122. package/schematics/components/files/dialog/dialog.ts.template +18 -14
  123. package/schematics/components/files/drawer/drawer.ts.template +30 -27
  124. package/schematics/components/files/form-field/form-field.ts.template +49 -21
  125. package/schematics/components/files/pagination/pagination.ts.template +4 -4
  126. package/schematics/components/files/picasa/picasa-base.component.ts.template +15 -30
  127. package/schematics/components/files/popover/popover.ts.template +15 -4
  128. package/schematics/components/files/select/list-selection.ts.template +0 -2
  129. package/schematics/components/files/select/option.ts.template +1 -1
  130. package/schematics/components/files/selectable/selectable.ts.template +2 -2
  131. package/schematics/components/files/sheet/sheet.ts.template +26 -14
  132. package/schematics/components/files/sidenav/sidenav.ts.template +7 -5
  133. package/schematics/components/files/sonner/sonner.ts.template +1 -2
  134. package/schematics/components/files/stepper/stepper.ts.template +2 -4
  135. package/schematics/components/files/switch/switch.ts.template +2 -2
  136. package/schematics/components/files/table/table.ts.template +43 -3
  137. package/schematics/components/files/theme/theme.service.ts.template +3 -3
  138. package/schematics/components/files/toggle/toggle.ts.template +1 -1
  139. package/schematics/components/files/toggle-group/toggle-group.ts.template +1 -1
  140. package/schematics/components/files/tooltip/tooltip.ts.template +2 -3
  141. package/{accordion/index.d.ts → types/ngbase-adk-accordion.d.ts} +1 -3
  142. package/{autocomplete/index.d.ts → types/ngbase-adk-autocomplete.d.ts} +2 -7
  143. package/{checkbox/index.d.ts → types/ngbase-adk-checkbox.d.ts} +8 -14
  144. package/types/ngbase-adk-clipboard.d.ts +12 -0
  145. package/{color-picker/index.d.ts → types/ngbase-adk-color-picker.d.ts} +14 -26
  146. package/{datepicker/index.d.ts → types/ngbase-adk-datepicker.d.ts} +9 -18
  147. package/{dialog/index.d.ts → types/ngbase-adk-dialog.d.ts} +3 -8
  148. package/types/ngbase-adk-form-field.d.ts +88 -0
  149. package/{inline-edit/index.d.ts → types/ngbase-adk-inline-edit.d.ts} +8 -16
  150. package/{menu/index.d.ts → types/ngbase-adk-menu.d.ts} +6 -5
  151. package/{otp/index.d.ts → types/ngbase-adk-otp.d.ts} +8 -16
  152. package/{popover/index.d.ts → types/ngbase-adk-popover.d.ts} +14 -2
  153. package/{portal/index.d.ts → types/ngbase-adk-portal.d.ts} +29 -8
  154. package/{radio/index.d.ts → types/ngbase-adk-radio.d.ts} +9 -12
  155. package/{resizable/index.d.ts → types/ngbase-adk-resizable.d.ts} +4 -4
  156. package/{scroll-area/index.d.ts → types/ngbase-adk-scroll-area.d.ts} +2 -1
  157. package/{select/index.d.ts → types/ngbase-adk-select.d.ts} +8 -22
  158. package/{selectable/index.d.ts → types/ngbase-adk-selectable.d.ts} +6 -10
  159. package/{sheet/index.d.ts → types/ngbase-adk-sheet.d.ts} +4 -3
  160. package/{sidenav/index.d.ts → types/ngbase-adk-sidenav.d.ts} +7 -8
  161. package/{slider/index.d.ts → types/ngbase-adk-slider.d.ts} +8 -17
  162. package/{sonner/index.d.ts → types/ngbase-adk-sonner.d.ts} +1 -3
  163. package/{stepper/index.d.ts → types/ngbase-adk-stepper.d.ts} +1 -4
  164. package/{switch/index.d.ts → types/ngbase-adk-switch.d.ts} +7 -14
  165. package/{table/index.d.ts → types/ngbase-adk-table.d.ts} +126 -3
  166. package/{test/index.d.ts → types/ngbase-adk-test.d.ts} +1 -1
  167. package/{toggle-group/index.d.ts → types/ngbase-adk-toggle-group.d.ts} +5 -10
  168. package/types/ngbase-adk-toggle.d.ts +14 -0
  169. package/{tooltip/index.d.ts → types/ngbase-adk-tooltip.d.ts} +9 -11
  170. package/{tour/index.d.ts → types/ngbase-adk-tour.d.ts} +4 -6
  171. package/{utils/index.d.ts → types/ngbase-adk-utils.d.ts} +15 -11
  172. package/clipboard/index.d.ts +0 -11
  173. package/form-field/index.d.ts +0 -97
  174. package/toggle/index.d.ts +0 -16
  175. /package/{a11y/index.d.ts → types/ngbase-adk-a11y.d.ts} +0 -0
  176. /package/{avatar/index.d.ts → types/ngbase-adk-avatar.d.ts} +0 -0
  177. /package/{bidi/index.d.ts → types/ngbase-adk-bidi.d.ts} +0 -0
  178. /package/{breadcrumb/index.d.ts → types/ngbase-adk-breadcrumb.d.ts} +0 -0
  179. /package/{cache/index.d.ts → types/ngbase-adk-cache.d.ts} +0 -0
  180. /package/{carousel/index.d.ts → types/ngbase-adk-carousel.d.ts} +0 -0
  181. /package/{chip/index.d.ts → types/ngbase-adk-chip.d.ts} +0 -0
  182. /package/{collections/index.d.ts → types/ngbase-adk-collections.d.ts} +0 -0
  183. /package/{cookies/index.d.ts → types/ngbase-adk-cookies.d.ts} +0 -0
  184. /package/{drag/index.d.ts → types/ngbase-adk-drag.d.ts} +0 -0
  185. /package/{hover-card/index.d.ts → types/ngbase-adk-hover-card.d.ts} +0 -0
  186. /package/{icon/index.d.ts → types/ngbase-adk-icon.d.ts} +0 -0
  187. /package/{jwt/index.d.ts → types/ngbase-adk-jwt.d.ts} +0 -0
  188. /package/{keys/index.d.ts → types/ngbase-adk-keys.d.ts} +0 -0
  189. /package/{layout/index.d.ts → types/ngbase-adk-layout.d.ts} +0 -0
  190. /package/{list/index.d.ts → types/ngbase-adk-list.d.ts} +0 -0
  191. /package/{mask/index.d.ts → types/ngbase-adk-mask.d.ts} +0 -0
  192. /package/{network/index.d.ts → types/ngbase-adk-network.d.ts} +0 -0
  193. /package/{pagination/index.d.ts → types/ngbase-adk-pagination.d.ts} +0 -0
  194. /package/{progress/index.d.ts → types/ngbase-adk-progress.d.ts} +0 -0
  195. /package/{tabs/index.d.ts → types/ngbase-adk-tabs.d.ts} +0 -0
  196. /package/{translate/index.d.ts → types/ngbase-adk-translate.d.ts} +0 -0
  197. /package/{tree/index.d.ts → types/ngbase-adk-tree.d.ts} +0 -0
  198. /package/{virtualizer/index.d.ts → types/ngbase-adk-virtualizer.d.ts} +0 -0
  199. /package/{index.d.ts → types/ngbase-adk.d.ts} +0 -0
@@ -22,10 +22,10 @@ class MenuService {
22
22
  this.close();
23
23
  this.currentRef = ref;
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
26
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: MenuService, providedIn: 'root' }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MenuService, providedIn: 'root' }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: MenuService, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MenuService, decorators: [{
29
29
  type: Injectable,
30
30
  args: [{ providedIn: 'root' }]
31
31
  }] });
@@ -59,10 +59,10 @@ class NgbContextMenu {
59
59
  });
60
60
  this.listeners.on();
61
61
  }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbContextMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
63
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbContextMenu, isStandalone: true, selector: "[ngbContextMenu]", inputs: { ngbContextMenu: { classPropertyName: "ngbContextMenu", publicName: "ngbContextMenu", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { ctxOpen: "ctxOpen", ctxClose: "ctxClose" }, host: { listeners: { "contextmenu": "open($event)" } }, ngImport: i0 }); }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbContextMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
63
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbContextMenu, isStandalone: true, selector: "[ngbContextMenu]", inputs: { ngbContextMenu: { classPropertyName: "ngbContextMenu", publicName: "ngbContextMenu", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { ctxOpen: "ctxOpen", ctxClose: "ctxClose" }, host: { listeners: { "contextmenu": "open($event)" } }, ngImport: i0 }); }
64
64
  }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbContextMenu, decorators: [{
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbContextMenu, decorators: [{
66
66
  type: Directive,
67
67
  args: [{
68
68
  selector: '[ngbContextMenu]',
@@ -70,7 +70,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
70
70
  '(contextmenu)': 'open($event)',
71
71
  },
72
72
  }]
73
- }] });
73
+ }], propDecorators: { ngbContextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbContextMenu", required: true }] }], ctxOpen: [{ type: i0.Output, args: ["ctxOpen"] }], ctxClose: [{ type: i0.Output, args: ["ctxClose"] }] } });
74
74
 
75
75
  class NgbMentionTrigger {
76
76
  constructor() {
@@ -160,10 +160,10 @@ class NgbMentionTrigger {
160
160
  w: rect.width,
161
161
  };
162
162
  }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbMentionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
164
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbMentionTrigger, isStandalone: true, selector: "[ngbMentionTrigger]", inputs: { ngbMentionTrigger: { classPropertyName: "ngbMentionTrigger", publicName: "ngbMentionTrigger", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { search: "search" }, host: { listeners: { "input": "open()" } }, ngImport: i0 }); }
163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbMentionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
164
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbMentionTrigger, isStandalone: true, selector: "[ngbMentionTrigger]", inputs: { ngbMentionTrigger: { classPropertyName: "ngbMentionTrigger", publicName: "ngbMentionTrigger", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { search: "search" }, host: { listeners: { "input": "open()" } }, ngImport: i0 }); }
165
165
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbMentionTrigger, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbMentionTrigger, decorators: [{
167
167
  type: Directive,
168
168
  args: [{
169
169
  selector: '[ngbMentionTrigger]',
@@ -171,7 +171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
171
171
  '(input)': 'open()',
172
172
  },
173
173
  }]
174
- }] });
174
+ }], propDecorators: { ngbMentionTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbMentionTrigger", required: true }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], search: [{ type: i0.Output, args: ["search"] }] } });
175
175
 
176
176
  class NgpMenuGroup {
177
177
  constructor() {
@@ -184,24 +184,30 @@ class NgpMenuGroup {
184
184
  this.allyGroup._isPopup.set(true);
185
185
  });
186
186
  }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgpMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
188
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: NgpMenuGroup, isStandalone: true, selector: "[ngbMenuGroup]", host: { listeners: { "click": "menu.noAutoClose() ? null : menu.close()" } }, hostDirectives: [{ directive: i1.AccessibleGroup }], ngImport: i0 }); }
187
+ onClick() {
188
+ if (!this.menu.noAutoClose()) {
189
+ // Close with closeParent: true to cascade close to root menu
190
+ this.menu.closeWithParent();
191
+ }
192
+ }
193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgpMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
194
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NgpMenuGroup, isStandalone: true, selector: "[ngbMenuGroup]", host: { listeners: { "click": "onClick()" } }, hostDirectives: [{ directive: i1.AccessibleGroup }], ngImport: i0 }); }
189
195
  }
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgpMenuGroup, decorators: [{
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgpMenuGroup, decorators: [{
191
197
  type: Directive,
192
198
  args: [{
193
199
  selector: '[ngbMenuGroup]',
194
200
  hostDirectives: [AccessibleGroup],
195
201
  host: {
196
- '(click)': 'menu.noAutoClose() ? null : menu.close()',
202
+ '(click)': 'onClick()',
197
203
  },
198
204
  }]
199
205
  }], ctorParameters: () => [] });
200
206
  class NgpMenuContent {
201
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgpMenuContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
202
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: NgpMenuContent, isStandalone: true, selector: "ng-template[ngbMenuContent]", ngImport: i0 }); }
207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgpMenuContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
208
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NgpMenuContent, isStandalone: true, selector: "ng-template[ngbMenuContent]", ngImport: i0 }); }
203
209
  }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgpMenuContent, decorators: [{
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgpMenuContent, decorators: [{
205
211
  type: Directive,
206
212
  args: [{
207
213
  selector: 'ng-template[ngbMenuContent]',
@@ -211,13 +217,11 @@ class NgbMenu {
211
217
  constructor() {
212
218
  this.dir = injectDirectionality();
213
219
  this.popover = ngbPopoverPortal();
214
- this.menuEl = viewChild(NgpMenuGroup, ...(ngDevMode ? [{ debugName: "menuEl", read: ElementRef }] : [{
215
- read: ElementRef,
216
- }]));
220
+ this.menuEl = viewChild(NgpMenuGroup, { ...(ngDevMode ? { debugName: "menuEl" } : {}), read: ElementRef });
217
221
  this.container = viewChild.required('container', { read: TemplateRef });
218
- this.content = contentChildren(NgpMenuContent, ...(ngDevMode ? [{ debugName: "content", read: TemplateRef, descendants: true }] : [{ read: TemplateRef, descendants: true }]));
219
- this.options = contentChildren(NgbOption, ...(ngDevMode ? [{ debugName: "options", descendants: true }] : [{ descendants: true }]));
220
- this.lists = contentChildren(NgbList, ...(ngDevMode ? [{ debugName: "lists", descendants: true }] : [{ descendants: true }]));
222
+ this.content = contentChildren(NgpMenuContent, { ...(ngDevMode ? { debugName: "content" } : {}), read: TemplateRef, descendants: true });
223
+ this.options = contentChildren(NgbOption, { ...(ngDevMode ? { debugName: "options" } : {}), descendants: true });
224
+ this.lists = contentChildren(NgbList, { ...(ngDevMode ? { debugName: "lists" } : {}), descendants: true });
221
225
  this.manager = new Keys();
222
226
  this.selected = output();
223
227
  this.ayId = uniqueId();
@@ -225,13 +229,15 @@ class NgbMenu {
225
229
  this.events = new Subject();
226
230
  this.activeOption = new BehaviorSubject(null);
227
231
  this.isOpen = false;
228
- this.close = (data) => {
232
+ this.close = (data, options) => {
229
233
  if (!this.isOpen)
230
234
  return;
231
- this.diaRef?.close(data);
232
- this.activeOption.next(null);
233
- this.isOpen = false;
235
+ // Don't set isOpen = false here - let afterClosed do it
236
+ // This prevents reopening while close animation is in progress
237
+ this.diaRef?.close(data, options);
234
238
  };
239
+ // Close this menu and cascade close to all parent menus
240
+ this.closeWithParent = (data) => this.close(data, { closeParent: true });
235
241
  effect(cleanup => {
236
242
  const options = this.options().length ? this.options() : this.lists();
237
243
  options.forEach(option => {
@@ -260,7 +266,11 @@ class NgbMenu {
260
266
  });
261
267
  });
262
268
  }
263
- open(options, subMenu = false) {
269
+ open(options, subMenu = false, parentDiaRef) {
270
+ // Don't open if already open or if close animation is in progress
271
+ if (this.isOpen || this.diaRef?.isClosing) {
272
+ return;
273
+ }
264
274
  const rtl = this.dir.isRtl();
265
275
  const content = this.content()[0];
266
276
  const template = content || this.container();
@@ -272,9 +282,19 @@ class NgbMenu {
272
282
  ayId: this.ayId,
273
283
  data: options.data,
274
284
  ...options,
285
+ // Pass parent for proper parent-child tracking
286
+ parent: parentDiaRef,
275
287
  });
276
288
  this.diaRef = diaRef;
277
289
  this.opened();
290
+ // Subscribe to afterClosed to sync isOpen state when dialog is closed
291
+ // This handles cases where the dialog is closed externally (e.g., via parent cascade)
292
+ diaRef.afterClosed.subscribe(() => {
293
+ this.activeOption.next(null);
294
+ this.isOpen = false;
295
+ // Clear diaRef so isClosing check doesn't block future opens
296
+ this.diaRef = null;
297
+ });
278
298
  }
279
299
  opened() {
280
300
  this.isOpen = true;
@@ -291,16 +311,18 @@ class NgbMenu {
291
311
  ngOnDestroy() {
292
312
  this.close();
293
313
  }
294
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
295
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.0", type: NgbMenu, isStandalone: true, selector: "[ngbMenu]", inputs: { noAutoClose: { classPropertyName: "noAutoClose", publicName: "noAutoClose", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, queries: [{ propertyName: "content", predicate: NgpMenuContent, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "options", predicate: NgbOption, descendants: true, isSignal: true }, { propertyName: "lists", predicate: NgbList, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "menuEl", first: true, predicate: NgpMenuGroup, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: TemplateRef, isSignal: true }], exportAs: ["ngbMenu"], ngImport: i0 }); }
314
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
315
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.0", type: NgbMenu, isStandalone: true, selector: "[ngbMenu]", inputs: { noAutoClose: { classPropertyName: "noAutoClose", publicName: "noAutoClose", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, queries: [{ propertyName: "content", predicate: NgpMenuContent, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "options", predicate: NgbOption, descendants: true, isSignal: true }, { propertyName: "lists", predicate: NgbList, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "menuEl", first: true, predicate: NgpMenuGroup, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: TemplateRef, isSignal: true }], exportAs: ["ngbMenu"], ngImport: i0 }); }
296
316
  }
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbMenu, decorators: [{
317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbMenu, decorators: [{
298
318
  type: Directive,
299
319
  args: [{
300
320
  selector: '[ngbMenu]',
301
321
  exportAs: 'ngbMenu',
302
322
  }]
303
- }], ctorParameters: () => [] });
323
+ }], ctorParameters: () => [], propDecorators: { menuEl: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NgpMenuGroup), { ...{
324
+ read: ElementRef,
325
+ }, isSignal: true }] }], container: [{ type: i0.ViewChild, args: ['container', { ...{ read: TemplateRef }, isSignal: true }] }], content: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NgpMenuContent), { ...{ read: TemplateRef, descendants: true }, isSignal: true }] }], options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NgbOption), { ...{ descendants: true }, isSignal: true }] }], lists: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NgbList), { ...{ descendants: true }, isSignal: true }] }], selected: [{ type: i0.Output, args: ["selected"] }], noAutoClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "noAutoClose", required: false }] }] } });
304
326
  const aliasMenu = (menu) => ({
305
327
  provide: NgbMenu,
306
328
  useExisting: menu,
@@ -310,7 +332,7 @@ class NgbNavigationMenu {
310
332
  constructor() {
311
333
  this.popover = ngbPopoverPortal();
312
334
  this.dir = injectDirectionality();
313
- this.menus = contentChildren(NgbMenuTrigger, ...(ngDevMode ? [{ debugName: "menus", descendants: true }] : [{ descendants: true }]));
335
+ this.menus = contentChildren(NgbMenuTrigger, { ...(ngDevMode ? { debugName: "menus" } : {}), descendants: true });
314
336
  this.hover = input(false, ...(ngDevMode ? [{ debugName: "hover" }] : []));
315
337
  this.ayId = uniqueId();
316
338
  this.timerId = 0;
@@ -388,15 +410,15 @@ class NgbNavigationMenu {
388
410
  this.close?.();
389
411
  }, 200);
390
412
  }
391
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbNavigationMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
392
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.0", type: NgbNavigationMenu, isStandalone: true, selector: "[ngbNavigationMenu]", inputs: { hover: { classPropertyName: "hover", publicName: "hover", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "menus", predicate: NgbMenuTrigger, descendants: true, isSignal: true }], ngImport: i0 }); }
413
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbNavigationMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
414
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.0", type: NgbNavigationMenu, isStandalone: true, selector: "[ngbNavigationMenu]", inputs: { hover: { classPropertyName: "hover", publicName: "hover", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "menus", predicate: NgbMenuTrigger, descendants: true, isSignal: true }], ngImport: i0 }); }
393
415
  }
394
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbNavigationMenu, decorators: [{
416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbNavigationMenu, decorators: [{
395
417
  type: Directive,
396
418
  args: [{
397
419
  selector: '[ngbNavigationMenu]',
398
420
  }]
399
- }], ctorParameters: () => [] });
421
+ }], ctorParameters: () => [], propDecorators: { menus: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NgbMenuTrigger), { ...{ descendants: true }, isSignal: true }] }], hover: [{ type: i0.Input, args: [{ isSignal: true, alias: "hover", required: false }] }] } });
400
422
 
401
423
  class NgbMenuTrigger {
402
424
  constructor() {
@@ -410,16 +432,13 @@ class NgbMenuTrigger {
410
432
  this._menuOpen = signal(false, ...(ngDevMode ? [{ debugName: "_menuOpen" }] : []));
411
433
  this.menuOpen = this._menuOpen.asReadonly();
412
434
  this.events = new Subject();
413
- this.closeParent = true;
414
- this.delayTimer = 0;
415
- this.isMouseOverTrigger = false;
416
435
  // if a11y is provided, then we should open on keyleft and keyright
417
436
  this.a11y?.events.subscribe(ev => {
418
437
  if (!this.menu.isOpen && ev.type === 'keyRight') {
419
438
  this.open();
420
439
  }
421
440
  else if (this.menu.isOpen && ev.type === 'keyLeft') {
422
- this.closeParent = false;
441
+ // Close without cascading to parent (navigation close)
423
442
  this.closeMenu();
424
443
  }
425
444
  });
@@ -429,7 +448,7 @@ class NgbMenuTrigger {
429
448
  this.open();
430
449
  }
431
450
  else if (this.menu.isOpen) {
432
- this.closeParent = false;
451
+ // Close without cascading to parent (navigation close)
433
452
  this.closeMenu();
434
453
  }
435
454
  });
@@ -437,20 +456,13 @@ class NgbMenuTrigger {
437
456
  if (this.parent || this.nav) {
438
457
  this.el.nativeElement.addEventListener('mouseenter', ev => {
439
458
  this.events.next({ event: ev, type: 'enter', menu: this });
440
- this.isMouseOverTrigger = true;
441
459
  if (this.nav) {
442
460
  return;
443
461
  }
444
- clearTimeout(this.delayTimer);
445
- // console.log('mouseenter', this.debugId());
446
462
  this.open(ev);
447
463
  });
448
464
  this.el.nativeElement.addEventListener('mouseleave', ev => {
449
465
  this.events.next({ event: ev, type: 'leave', menu: this });
450
- this.isMouseOverTrigger = false;
451
- if (this.nav) {
452
- return;
453
- }
454
466
  });
455
467
  }
456
468
  });
@@ -485,42 +497,20 @@ class NgbMenuTrigger {
485
497
  if (menu.isOpen) {
486
498
  return;
487
499
  }
488
- // console.log('open menu', this.parent);
489
- // const { diaRef, events } = this.popover.open(menu.container()!, {
490
- // ...this.options(),
491
- // data: this.ngbMenuTriggerData(),
492
- // backdrop: !this.parent,
493
- // target: this.el.nativeElement,
494
- // position: this.parent ? 'right' : 'bl',
495
- // offset: 4,
496
- // ayId: this.ayId(),
497
- // });
498
- menu.open({ ...this.options(), target: this.el.nativeElement, data: this.ngbMenuTriggerData() }, !!this.parent);
500
+ // Pass parent's diaRef for proper parent-child tracking
501
+ const parentDiaRef = this.parent?.diaRef;
502
+ menu.open({ ...this.options(), target: this.el.nativeElement, data: this.ngbMenuTriggerData() }, !!this.parent, parentDiaRef);
499
503
  this._menuOpen.set(true);
500
504
  menu.parentMenuTrigger = this;
501
- // if (this.nav) {
502
- // events.subscribe(ev => {
503
- // if (ev.type === 'mouseleave') {
504
- // this.delayTimer = setTimeout(() => {
505
- // this.closeMenu();
506
- // }, 300);
507
- // } else {
508
- // clearTimeout(this.delayTimer);
509
- // }
510
- // });
511
- // }
512
505
  menu.diaRef?.afterClosed.subscribe(() => {
513
- if (this.closeParent)
514
- this.rootParent?.close();
515
- this.closeParent = true;
516
506
  menu.close();
517
507
  this._menuOpen.set(false);
518
508
  });
519
509
  }
520
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
521
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbMenuTrigger, isStandalone: true, selector: "[ngbMenuTrigger]", inputs: { ngbMenuTrigger: { classPropertyName: "ngbMenuTrigger", publicName: "ngbMenuTrigger", isSignal: true, isRequired: true, transformFunction: null }, ngbMenuTriggerData: { classPropertyName: "ngbMenuTriggerData", publicName: "ngbMenuTriggerData", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tabindex": "0" }, listeners: { "click": "clickOpen($event)" }, properties: { "attr.aria-expanded": "menuOpen()", "attr.aria-haspopup": "true" } }, exportAs: ["ngbMenuTrigger"], ngImport: i0 }); }
510
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
511
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbMenuTrigger, isStandalone: true, selector: "[ngbMenuTrigger]", inputs: { ngbMenuTrigger: { classPropertyName: "ngbMenuTrigger", publicName: "ngbMenuTrigger", isSignal: true, isRequired: true, transformFunction: null }, ngbMenuTriggerData: { classPropertyName: "ngbMenuTriggerData", publicName: "ngbMenuTriggerData", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tabindex": "0" }, listeners: { "click": "clickOpen($event)" }, properties: { "attr.aria-expanded": "menuOpen()", "attr.aria-haspopup": "true" } }, exportAs: ["ngbMenuTrigger"], ngImport: i0 }); }
522
512
  }
523
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbMenuTrigger, decorators: [{
513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbMenuTrigger, decorators: [{
524
514
  type: Directive,
525
515
  args: [{
526
516
  selector: '[ngbMenuTrigger]',
@@ -532,7 +522,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
532
522
  tabindex: '0',
533
523
  },
534
524
  }]
535
- }], ctorParameters: () => [] });
525
+ }], ctorParameters: () => [], propDecorators: { ngbMenuTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbMenuTrigger", required: true }] }], ngbMenuTriggerData: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbMenuTriggerData", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
536
526
 
537
527
  /*
538
528
  * Public API Surface of menu
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-menu.mjs","sources":["../../../projects/adk/menu/context-menu.ts","../../../projects/adk/menu/mention.ts","../../../projects/adk/menu/menu.ts","../../../projects/adk/menu/navigation-menu.ts","../../../projects/adk/menu/menu-trigger.ts","../../../projects/adk/menu/public-api.ts","../../../projects/adk/menu/ngbase-adk-menu.ts"],"sourcesContent":["import { Directive, inject, Injectable, input, output } from '@angular/core';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { documentListener } from '@ngbase/adk/utils';\nimport { NgbMenu } from './menu';\n\n@Injectable({ providedIn: 'root' })\nclass MenuService {\n private currentRef: DialogRef<any> | null = null;\n\n close() {\n this.currentRef?.close();\n this.currentRef = null;\n }\n\n setCurrentRef(ref: DialogRef<any>) {\n this.close();\n this.currentRef = ref;\n }\n}\n\n@Directive({\n selector: '[ngbContextMenu]',\n host: {\n '(contextmenu)': 'open($event)',\n },\n})\nexport class NgbContextMenu {\n readonly ngbContextMenu = input.required<NgbMenu>();\n readonly menuService = inject(MenuService);\n\n readonly ctxOpen = output<boolean>();\n readonly ctxClose = output<boolean>();\n\n private listeners = (() => {\n const ev = ['click', 'contextmenu'].map(ev =>\n documentListener(ev, () => this.menuService.close(), { once: true, lazy: true }),\n );\n return { on: () => ev.forEach(e => e.on()), off: () => ev.forEach(e => e.off()) };\n })();\n\n open(ev: MouseEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n const menu = this.ngbContextMenu();\n menu.open({\n target: ev.target as HTMLElement,\n client: { x: ev.clientX, y: ev.clientY, w: 1, h: 1 },\n maxHeight: '400px',\n backdrop: false,\n offset: 0,\n });\n this.ctxOpen.emit(true);\n this.menuService.setCurrentRef(menu.diaRef);\n menu.diaRef.afterClosed.subscribe(() => {\n this.ctxClose.emit(true);\n this.listeners.off();\n });\n this.listeners.on();\n }\n}\n","import { Directive, ElementRef, inject, input, output } from '@angular/core';\nimport { NgbMenu } from './menu';\n\n@Directive({\n selector: '[ngbMentionTrigger]',\n host: {\n '(input)': 'open()',\n },\n})\nexport class NgbMentionTrigger {\n private readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n\n readonly ngbMentionTrigger = input.required<NgbMenu>();\n readonly options = input<{ focus?: 'el'; width?: 'full' }>();\n readonly key = input.required<string>();\n readonly search = output<string>();\n\n private close?: VoidFunction;\n\n open() {\n // open the menu in a position where the cursor is at '@' character\n const { selectionStart } = this.el.nativeElement;\n // check the word before the cursor which should starts with the key character\n const word = this.getCurrentWord();\n if (word.length <= 0 || word[0] !== this.key()) {\n this.close?.();\n this.close = undefined;\n return;\n }\n\n this.search.emit(word.substring(1));\n\n if (this.close) {\n return;\n }\n\n let client = null;\n\n if (!this.options()?.focus) {\n client = this.getPositionAt(selectionStart);\n // console.log('x', x, 'y', y, 'w', w, 'h', h);\n }\n\n // open the menu at the cursor position\n const menu = this.ngbMentionTrigger();\n menu.open({\n maxHeight: '400px',\n target: this.el.nativeElement,\n client,\n width: this.options()?.width === 'full' ? 'target' : undefined,\n });\n this.close = menu.close;\n }\n\n private getCurrentWord() {\n const textarea = this.el.nativeElement;\n // Get the current cursor position in the textarea\n const cursorPosition = textarea.selectionStart;\n\n // Get the text up to the cursor position\n const textUpToCursor = textarea.value.substring(0, cursorPosition);\n\n // Find the start of the current word\n const wordStart = textUpToCursor.lastIndexOf(' ') + 1;\n\n // Get the text after the cursor position up to the end of the textarea\n const textAfterCursor = textarea.value.substring(cursorPosition);\n\n // Find the end of the current word\n const wordEnd = textAfterCursor.indexOf(' ');\n const currentWord = textarea.value.substring(\n wordStart,\n cursorPosition + (wordEnd > -1 ? wordEnd : textAfterCursor.length),\n );\n\n return currentWord;\n }\n\n private getPositionAt(index: number): {\n x: number;\n y: number;\n h: number;\n w: number;\n } {\n const textarea = this.el.nativeElement;\n const text = textarea.value.substring(0, index);\n const mirror = document.createElement('div');\n const cursor = document.createElement('span');\n const style = window.getComputedStyle(textarea);\n const textareaRect = textarea.getBoundingClientRect();\n\n // Setup the mirror div to accurately reflect the textarea's position and styles\n mirror.style.position = 'fixed';\n mirror.style.top = `${textareaRect.top}px`; // Position at the same vertical position\n mirror.style.left = `${textareaRect.left}px`; // Position at the same horizontal position\n mirror.style.visibility = 'hidden';\n mirror.style.whiteSpace = 'pre-wrap';\n mirror.style.wordWrap = 'break-word';\n mirror.style.fontFamily = style.fontFamily;\n mirror.style.fontSize = style.fontSize;\n mirror.style.lineHeight = style.lineHeight;\n mirror.style.padding = style.padding;\n mirror.style.border = style.border;\n mirror.style.width = `${textarea.offsetWidth}px`; // Ensure width matches\n mirror.style.height = `${textarea.offsetHeight}px`; // Mat\n\n // Append mirror to the body to measure\n document.body.appendChild(mirror);\n mirror.textContent = text.substring(0, index - 1);\n cursor.textContent = '|';\n mirror.appendChild(cursor);\n\n const rect = cursor.getBoundingClientRect();\n\n document.body.removeChild(mirror);\n\n // Return the position relative to the viewport\n return {\n x: rect.left,\n y: rect.top,\n h: rect.height,\n w: rect.width,\n };\n }\n}\n","import {\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { AccessibleGroup } from '@ngbase/adk/a11y';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\nimport { Keys } from '@ngbase/adk/keys';\nimport { NgbList } from '@ngbase/adk/list';\nimport { ngbPopoverPortal, PopoverOptions } from '@ngbase/adk/popover';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { NgbOption } from '@ngbase/adk/select';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { NgbMenuTrigger } from './menu-trigger';\n\n@Directive({\n selector: '[ngbMenuGroup]',\n hostDirectives: [AccessibleGroup],\n host: {\n '(click)': 'menu.noAutoClose() ? null : menu.close()',\n },\n})\nexport class NgpMenuGroup {\n readonly menu = inject(NgbMenu);\n readonly allyGroup = inject(AccessibleGroup);\n\n constructor() {\n // we need to wait for angular to check the changes\n // on component creation this data is not available\n effect(() => {\n this.allyGroup._ayId.set(this.menu.diaRef.options.ayId!);\n this.allyGroup._isPopup.set(true);\n });\n }\n}\n\n@Directive({\n selector: 'ng-template[ngbMenuContent]',\n})\nexport class NgpMenuContent {}\n\n@Directive({\n selector: '[ngbMenu]',\n exportAs: 'ngbMenu',\n})\nexport class NgbMenu implements OnDestroy {\n readonly dir = injectDirectionality();\n readonly popover = ngbPopoverPortal();\n private readonly menuEl = viewChild<NgpMenuGroup, ElementRef<HTMLDivElement>>(NgpMenuGroup, {\n read: ElementRef,\n });\n readonly container = viewChild.required('container', { read: TemplateRef });\n readonly content = contentChildren(NgpMenuContent, { read: TemplateRef, descendants: true });\n readonly options = contentChildren(NgbOption, { descendants: true });\n readonly lists = contentChildren(NgbList, { descendants: true });\n readonly manager = new Keys();\n readonly selected = output<string>();\n readonly ayId = uniqueId();\n\n readonly noAutoClose = input<boolean>(false);\n\n // this will be injected by the MenuTrigger directive\n parentMenuTrigger?: NgbMenuTrigger;\n\n // this will be injected by the MenuTrigger directive\n diaRef!: DialogRef;\n readonly events = new Subject<{ event: MouseEvent; type: 'enter' | 'leave' }>();\n readonly activeOption = new BehaviorSubject<NgbOption<any> | NgbList | null>(null);\n isOpen = false;\n\n constructor() {\n effect(cleanup => {\n const options = this.options().length ? this.options() : this.lists();\n options.forEach(option => {\n const mouseover = () => {\n if (this.activeOption.getValue() !== option) {\n this.activeOption.next(option);\n }\n };\n option.el.nativeElement.addEventListener('mouseover', mouseover);\n cleanup(() => option.el.nativeElement.removeEventListener('mouseover', mouseover));\n });\n });\n effect(cleanup => {\n const el = this.menuEl()?.nativeElement;\n if (!el) {\n return;\n }\n const enter = (ev: MouseEvent) => this.events.next({ event: ev, type: 'enter' });\n const leave = (ev: MouseEvent) => this.events.next({ event: ev, type: 'leave' });\n // we need to fire the mouseenter event\n el.addEventListener('mouseenter', enter);\n el.addEventListener('mouseleave', leave);\n cleanup(() => {\n el.removeEventListener('mouseenter', enter);\n el.removeEventListener('mouseleave', leave);\n });\n });\n }\n\n open(options: PopoverOptions, subMenu: boolean = false) {\n const rtl = this.dir.isRtl();\n const content = this.content()[0];\n const template = content || this.container()!;\n\n const { diaRef } = this.popover.open(template, {\n ...this.options(),\n backdrop: !subMenu,\n position: subMenu ? (rtl ? 'ls' : 'rs') : rtl ? 'br' : 'bl',\n offset: 4,\n ayId: this.ayId,\n data: options.data,\n ...options,\n });\n this.diaRef = diaRef;\n this.opened();\n }\n\n opened() {\n this.isOpen = true;\n this.options().forEach(list => {\n list.setAyId(this.diaRef.options.ayId!);\n });\n this.lists().forEach(list => {\n list.setAyId(this.diaRef.options.ayId!);\n });\n }\n\n get rootParent(): NgbMenu | undefined {\n return this.parentMenuTrigger?.rootParent || this;\n }\n\n close = (data?: any) => {\n if (!this.isOpen) return;\n this.diaRef?.close(data);\n this.activeOption.next(null);\n this.isOpen = false;\n };\n\n ngOnDestroy() {\n this.close();\n }\n}\n\nexport const aliasMenu = (menu: typeof NgbMenu) => ({\n provide: NgbMenu,\n useExisting: menu,\n});\n","import { Directive, contentChildren, effect, input } from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\nimport { PopoverOpen, ngbPopoverPortal } from '@ngbase/adk/popover';\nimport { documentListener, uniqueId } from '@ngbase/adk/utils';\nimport { NgbMenuTrigger } from './menu-trigger';\n\n@Directive({\n selector: '[ngbNavigationMenu]',\n})\nexport class NgbNavigationMenu {\n private popover = ngbPopoverPortal();\n private readonly dir = injectDirectionality();\n private readonly menus = contentChildren(NgbMenuTrigger, { descendants: true });\n\n readonly hover = input<boolean>(false);\n\n private ayId = uniqueId();\n close?: VoidFunction;\n private timerId: any = 0;\n private popoverOpen?: PopoverOpen<any>;\n private clicked = false;\n private currentEl?: NgbMenuTrigger;\n\n constructor() {\n documentListener('click', () => {\n if (this.close) {\n this.clicked = false;\n this.currentEl = undefined;\n this.close();\n }\n });\n effect(cleanup => {\n const menus = this.menus();\n const hover = this.hover();\n const sub = menus.map(menu =>\n menu.events.subscribe(({ type, menu }) => {\n const isSame = this.currentEl === menu;\n if (\n (type === 'enter' && (hover || this.clicked)) ||\n (type === 'click' && !hover && !isSame)\n ) {\n this.clicked = true;\n this.currentEl = menu;\n this.open(menu);\n } else if (isSame && (hover || type === 'click')) {\n this.scheduleClose();\n }\n }),\n );\n cleanup(() => sub.forEach(x => x.unsubscribe()));\n });\n }\n\n open(menuTrigger: NgbMenuTrigger) {\n clearTimeout(this.timerId);\n const menu = menuTrigger.ngbMenuTrigger();\n const target = menuTrigger.el.nativeElement;\n if (this.close) {\n // console.log('navigation menu open existing', menu);\n this.popoverOpen?.replace?.(menu.container()!);\n this.popoverOpen?.parent.target?.set(target);\n menu.diaRef = this.popoverOpen!.diaRef;\n // We need to change the id so that new menu items gets registered for a11y\n menu.diaRef.options.ayId = uniqueId();\n menu.opened();\n return;\n }\n // console.log('navigation menu open');\n\n this.popoverOpen = this.popover.open(menu.container()!, {\n target,\n position: this.dir.isRtl() ? 'br' : 'bl',\n className: 'transition-all',\n ayId: this.ayId,\n backdrop: false,\n });\n menu.diaRef = this.popoverOpen.diaRef;\n if (this.hover()) {\n this.popoverOpen.events.subscribe(e => {\n if (e.type === 'mouseenter') {\n clearTimeout(this.timerId);\n } else {\n this.scheduleClose();\n }\n });\n }\n menu.opened();\n this.close = () => {\n menu.close();\n this.close = undefined;\n this.popoverOpen = undefined;\n };\n }\n\n private scheduleClose() {\n clearTimeout(this.timerId);\n this.timerId = setTimeout(() => {\n this.clicked = false;\n this.currentEl = undefined;\n this.close?.();\n }, 200);\n }\n}\n","import { Directive, ElementRef, afterNextRender, inject, input, signal } from '@angular/core';\nimport { AccessibleItem } from '@ngbase/adk/a11y';\nimport { PopoverOptions } from '@ngbase/adk/popover';\nimport { Subject } from 'rxjs';\nimport { NgbMenu } from './menu';\nimport { NgbNavigationMenu } from './navigation-menu';\n\n@Directive({\n selector: '[ngbMenuTrigger]',\n exportAs: 'ngbMenuTrigger',\n host: {\n '(click)': 'clickOpen($event)',\n '[attr.aria-expanded]': 'menuOpen()',\n '[attr.aria-haspopup]': 'true',\n tabindex: '0',\n },\n})\nexport class NgbMenuTrigger {\n private readonly nav = inject(NgbNavigationMenu, { optional: true });\n private readonly parent = inject(NgbMenu, { optional: true });\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly a11y = inject(AccessibleItem, { optional: true });\n\n readonly ngbMenuTrigger = input.required<NgbMenu>();\n readonly ngbMenuTriggerData = input();\n readonly options = input<Partial<PopoverOptions>>({});\n\n private readonly _menuOpen = signal<boolean>(false);\n readonly menuOpen = this._menuOpen.asReadonly();\n readonly events = new Subject<{\n event: MouseEvent;\n type: 'enter' | 'leave' | 'click';\n menu: NgbMenuTrigger;\n }>();\n private closeParent = true;\n private delayTimer: any = 0;\n private isMouseOverTrigger = false;\n\n constructor() {\n // if a11y is provided, then we should open on keyleft and keyright\n this.a11y?.events.subscribe(ev => {\n if (!this.menu.isOpen && ev.type === 'keyRight') {\n this.open();\n } else if (this.menu.isOpen && ev.type === 'keyLeft') {\n this.closeParent = false;\n this.closeMenu();\n }\n });\n afterNextRender(() => {\n this.parent?.activeOption.subscribe(option => {\n if (option?.el.nativeElement === this.el.nativeElement) {\n this.open();\n } else if (this.menu.isOpen) {\n this.closeParent = false;\n this.closeMenu();\n }\n });\n // if parent is provided, then this is a sub-menu and we should open on mouseenter and close on mouseleave\n if (this.parent || this.nav) {\n this.el.nativeElement.addEventListener('mouseenter', ev => {\n this.events.next({ event: ev, type: 'enter', menu: this });\n this.isMouseOverTrigger = true;\n if (this.nav) {\n return;\n }\n clearTimeout(this.delayTimer);\n // console.log('mouseenter', this.debugId());\n this.open(ev);\n });\n this.el.nativeElement.addEventListener('mouseleave', ev => {\n this.events.next({ event: ev, type: 'leave', menu: this });\n this.isMouseOverTrigger = false;\n if (this.nav) {\n return;\n }\n });\n }\n });\n }\n\n private get menu() {\n return this.ngbMenuTrigger();\n }\n\n get rootParent() {\n return this.parent?.rootParent || this.parent;\n }\n\n clickOpen(ev: MouseEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n if (this.nav) {\n this.events.next({ event: ev, type: 'click', menu: this });\n return;\n } else {\n this.openMenu();\n }\n }\n\n private open(ev?: MouseEvent) {\n ev?.preventDefault();\n ev?.stopPropagation();\n this.openMenu();\n }\n\n closeMenu() {\n this.ngbMenuTrigger().close();\n }\n\n openMenu() {\n const menu = this.ngbMenuTrigger();\n if (menu.isOpen) {\n return;\n }\n // console.log('open menu', this.parent);\n // const { diaRef, events } = this.popover.open(menu.container()!, {\n // ...this.options(),\n // data: this.ngbMenuTriggerData(),\n // backdrop: !this.parent,\n // target: this.el.nativeElement,\n // position: this.parent ? 'right' : 'bl',\n // offset: 4,\n // ayId: this.ayId(),\n // });\n menu.open(\n { ...this.options(), target: this.el.nativeElement, data: this.ngbMenuTriggerData() },\n !!this.parent,\n );\n this._menuOpen.set(true);\n menu.parentMenuTrigger = this;\n // if (this.nav) {\n // events.subscribe(ev => {\n // if (ev.type === 'mouseleave') {\n // this.delayTimer = setTimeout(() => {\n // this.closeMenu();\n // }, 300);\n // } else {\n // clearTimeout(this.delayTimer);\n // }\n // });\n // }\n menu.diaRef?.afterClosed.subscribe(() => {\n if (this.closeParent) this.rootParent?.close();\n this.closeParent = true;\n menu.close();\n this._menuOpen.set(false);\n });\n }\n}\n","/*\n * Public API Surface of menu\n */\n\nexport * from './context-menu';\nexport * from './mention';\nexport * from './menu';\nexport * from './menu-trigger';\nexport * from './navigation-menu';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-menu.mjs","sources":["../../../projects/adk/menu/context-menu.ts","../../../projects/adk/menu/mention.ts","../../../projects/adk/menu/menu.ts","../../../projects/adk/menu/navigation-menu.ts","../../../projects/adk/menu/menu-trigger.ts","../../../projects/adk/menu/public-api.ts","../../../projects/adk/menu/ngbase-adk-menu.ts"],"sourcesContent":["import { Directive, inject, Injectable, input, output } from '@angular/core';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { documentListener } from '@ngbase/adk/utils';\nimport { NgbMenu } from './menu';\n\n@Injectable({ providedIn: 'root' })\nclass MenuService {\n private currentRef: DialogRef<any> | null = null;\n\n close() {\n this.currentRef?.close();\n this.currentRef = null;\n }\n\n setCurrentRef(ref: DialogRef<any>) {\n this.close();\n this.currentRef = ref;\n }\n}\n\n@Directive({\n selector: '[ngbContextMenu]',\n host: {\n '(contextmenu)': 'open($event)',\n },\n})\nexport class NgbContextMenu {\n readonly ngbContextMenu = input.required<NgbMenu>();\n readonly menuService = inject(MenuService);\n\n readonly ctxOpen = output<boolean>();\n readonly ctxClose = output<boolean>();\n\n private listeners = (() => {\n const ev = ['click', 'contextmenu'].map(ev =>\n documentListener(ev, () => this.menuService.close(), { once: true, lazy: true }),\n );\n return { on: () => ev.forEach(e => e.on()), off: () => ev.forEach(e => e.off()) };\n })();\n\n open(ev: MouseEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n const menu = this.ngbContextMenu();\n menu.open({\n target: ev.target as HTMLElement,\n client: { x: ev.clientX, y: ev.clientY, w: 1, h: 1 },\n maxHeight: '400px',\n backdrop: false,\n offset: 0,\n });\n this.ctxOpen.emit(true);\n this.menuService.setCurrentRef(menu.diaRef);\n menu.diaRef.afterClosed.subscribe(() => {\n this.ctxClose.emit(true);\n this.listeners.off();\n });\n this.listeners.on();\n }\n}\n","import { Directive, ElementRef, inject, input, output } from '@angular/core';\nimport { NgbMenu } from './menu';\n\n@Directive({\n selector: '[ngbMentionTrigger]',\n host: {\n '(input)': 'open()',\n },\n})\nexport class NgbMentionTrigger {\n private readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n\n readonly ngbMentionTrigger = input.required<NgbMenu>();\n readonly options = input<{ focus?: 'el'; width?: 'full' }>();\n readonly key = input.required<string>();\n readonly search = output<string>();\n\n private close?: VoidFunction;\n\n open() {\n // open the menu in a position where the cursor is at '@' character\n const { selectionStart } = this.el.nativeElement;\n // check the word before the cursor which should starts with the key character\n const word = this.getCurrentWord();\n if (word.length <= 0 || word[0] !== this.key()) {\n this.close?.();\n this.close = undefined;\n return;\n }\n\n this.search.emit(word.substring(1));\n\n if (this.close) {\n return;\n }\n\n let client = null;\n\n if (!this.options()?.focus) {\n client = this.getPositionAt(selectionStart);\n // console.log('x', x, 'y', y, 'w', w, 'h', h);\n }\n\n // open the menu at the cursor position\n const menu = this.ngbMentionTrigger();\n menu.open({\n maxHeight: '400px',\n target: this.el.nativeElement,\n client,\n width: this.options()?.width === 'full' ? 'target' : undefined,\n });\n this.close = menu.close;\n }\n\n private getCurrentWord() {\n const textarea = this.el.nativeElement;\n // Get the current cursor position in the textarea\n const cursorPosition = textarea.selectionStart;\n\n // Get the text up to the cursor position\n const textUpToCursor = textarea.value.substring(0, cursorPosition);\n\n // Find the start of the current word\n const wordStart = textUpToCursor.lastIndexOf(' ') + 1;\n\n // Get the text after the cursor position up to the end of the textarea\n const textAfterCursor = textarea.value.substring(cursorPosition);\n\n // Find the end of the current word\n const wordEnd = textAfterCursor.indexOf(' ');\n const currentWord = textarea.value.substring(\n wordStart,\n cursorPosition + (wordEnd > -1 ? wordEnd : textAfterCursor.length),\n );\n\n return currentWord;\n }\n\n private getPositionAt(index: number): {\n x: number;\n y: number;\n h: number;\n w: number;\n } {\n const textarea = this.el.nativeElement;\n const text = textarea.value.substring(0, index);\n const mirror = document.createElement('div');\n const cursor = document.createElement('span');\n const style = window.getComputedStyle(textarea);\n const textareaRect = textarea.getBoundingClientRect();\n\n // Setup the mirror div to accurately reflect the textarea's position and styles\n mirror.style.position = 'fixed';\n mirror.style.top = `${textareaRect.top}px`; // Position at the same vertical position\n mirror.style.left = `${textareaRect.left}px`; // Position at the same horizontal position\n mirror.style.visibility = 'hidden';\n mirror.style.whiteSpace = 'pre-wrap';\n mirror.style.wordWrap = 'break-word';\n mirror.style.fontFamily = style.fontFamily;\n mirror.style.fontSize = style.fontSize;\n mirror.style.lineHeight = style.lineHeight;\n mirror.style.padding = style.padding;\n mirror.style.border = style.border;\n mirror.style.width = `${textarea.offsetWidth}px`; // Ensure width matches\n mirror.style.height = `${textarea.offsetHeight}px`; // Mat\n\n // Append mirror to the body to measure\n document.body.appendChild(mirror);\n mirror.textContent = text.substring(0, index - 1);\n cursor.textContent = '|';\n mirror.appendChild(cursor);\n\n const rect = cursor.getBoundingClientRect();\n\n document.body.removeChild(mirror);\n\n // Return the position relative to the viewport\n return {\n x: rect.left,\n y: rect.top,\n h: rect.height,\n w: rect.width,\n };\n }\n}\n","import {\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { AccessibleGroup } from '@ngbase/adk/a11y';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\nimport { Keys } from '@ngbase/adk/keys';\nimport { NgbList } from '@ngbase/adk/list';\nimport { ngbPopoverPortal, PopoverOptions } from '@ngbase/adk/popover';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { NgbOption } from '@ngbase/adk/select';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { NgbMenuTrigger } from './menu-trigger';\n\n@Directive({\n selector: '[ngbMenuGroup]',\n hostDirectives: [AccessibleGroup],\n host: {\n '(click)': 'onClick()',\n },\n})\nexport class NgpMenuGroup {\n readonly menu = inject(NgbMenu);\n readonly allyGroup = inject(AccessibleGroup);\n\n constructor() {\n // we need to wait for angular to check the changes\n // on component creation this data is not available\n effect(() => {\n this.allyGroup._ayId.set(this.menu.diaRef.options.ayId!);\n this.allyGroup._isPopup.set(true);\n });\n }\n\n onClick() {\n if (!this.menu.noAutoClose()) {\n // Close with closeParent: true to cascade close to root menu\n this.menu.closeWithParent();\n }\n }\n}\n\n@Directive({\n selector: 'ng-template[ngbMenuContent]',\n})\nexport class NgpMenuContent {}\n\n@Directive({\n selector: '[ngbMenu]',\n exportAs: 'ngbMenu',\n})\nexport class NgbMenu implements OnDestroy {\n readonly dir = injectDirectionality();\n readonly popover = ngbPopoverPortal();\n private readonly menuEl = viewChild<NgpMenuGroup, ElementRef<HTMLDivElement>>(NgpMenuGroup, {\n read: ElementRef,\n });\n readonly container = viewChild.required('container', { read: TemplateRef });\n readonly content = contentChildren(NgpMenuContent, { read: TemplateRef, descendants: true });\n readonly options = contentChildren(NgbOption, { descendants: true });\n readonly lists = contentChildren(NgbList, { descendants: true });\n readonly manager = new Keys();\n readonly selected = output<string>();\n readonly ayId = uniqueId();\n\n readonly noAutoClose = input<boolean>(false);\n\n // this will be injected by the MenuTrigger directive\n parentMenuTrigger?: NgbMenuTrigger;\n\n // this will be injected by the MenuTrigger directive\n diaRef!: DialogRef;\n readonly events = new Subject<{ event: MouseEvent; type: 'enter' | 'leave' }>();\n readonly activeOption = new BehaviorSubject<NgbOption<any> | NgbList | null>(null);\n isOpen = false;\n\n constructor() {\n effect(cleanup => {\n const options = this.options().length ? this.options() : this.lists();\n options.forEach(option => {\n const mouseover = () => {\n if (this.activeOption.getValue() !== option) {\n this.activeOption.next(option);\n }\n };\n option.el.nativeElement.addEventListener('mouseover', mouseover);\n cleanup(() => option.el.nativeElement.removeEventListener('mouseover', mouseover));\n });\n });\n effect(cleanup => {\n const el = this.menuEl()?.nativeElement;\n if (!el) {\n return;\n }\n const enter = (ev: MouseEvent) => this.events.next({ event: ev, type: 'enter' });\n const leave = (ev: MouseEvent) => this.events.next({ event: ev, type: 'leave' });\n // we need to fire the mouseenter event\n el.addEventListener('mouseenter', enter);\n el.addEventListener('mouseleave', leave);\n cleanup(() => {\n el.removeEventListener('mouseenter', enter);\n el.removeEventListener('mouseleave', leave);\n });\n });\n }\n\n open(options: PopoverOptions, subMenu: boolean = false, parentDiaRef?: DialogRef) {\n // Don't open if already open or if close animation is in progress\n if (this.isOpen || this.diaRef?.isClosing) {\n return;\n }\n\n const rtl = this.dir.isRtl();\n const content = this.content()[0];\n const template = content || this.container()!;\n\n const { diaRef } = this.popover.open(template, {\n ...this.options(),\n backdrop: !subMenu,\n position: subMenu ? (rtl ? 'ls' : 'rs') : rtl ? 'br' : 'bl',\n offset: 4,\n ayId: this.ayId,\n data: options.data,\n ...options,\n // Pass parent for proper parent-child tracking\n parent: parentDiaRef,\n });\n this.diaRef = diaRef;\n this.opened();\n\n // Subscribe to afterClosed to sync isOpen state when dialog is closed\n // This handles cases where the dialog is closed externally (e.g., via parent cascade)\n diaRef.afterClosed.subscribe(() => {\n this.activeOption.next(null);\n this.isOpen = false;\n // Clear diaRef so isClosing check doesn't block future opens\n this.diaRef = null!;\n });\n }\n\n opened() {\n this.isOpen = true;\n this.options().forEach(list => {\n list.setAyId(this.diaRef.options.ayId!);\n });\n this.lists().forEach(list => {\n list.setAyId(this.diaRef.options.ayId!);\n });\n }\n\n get rootParent(): NgbMenu | undefined {\n return this.parentMenuTrigger?.rootParent || this;\n }\n\n close = (data?: any, options?: { closeParent?: boolean }) => {\n if (!this.isOpen) return;\n // Don't set isOpen = false here - let afterClosed do it\n // This prevents reopening while close animation is in progress\n this.diaRef?.close(data, options);\n };\n\n // Close this menu and cascade close to all parent menus\n closeWithParent = (data?: any) => this.close(data, { closeParent: true });\n\n ngOnDestroy() {\n this.close();\n }\n}\n\nexport const aliasMenu = (menu: typeof NgbMenu) => ({\n provide: NgbMenu,\n useExisting: menu,\n});\n","import { Directive, contentChildren, effect, input } from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\nimport { PopoverOpen, ngbPopoverPortal } from '@ngbase/adk/popover';\nimport { documentListener, uniqueId } from '@ngbase/adk/utils';\nimport { NgbMenuTrigger } from './menu-trigger';\n\n@Directive({\n selector: '[ngbNavigationMenu]',\n})\nexport class NgbNavigationMenu {\n private popover = ngbPopoverPortal();\n private readonly dir = injectDirectionality();\n private readonly menus = contentChildren(NgbMenuTrigger, { descendants: true });\n\n readonly hover = input<boolean>(false);\n\n private ayId = uniqueId();\n close?: VoidFunction;\n private timerId: any = 0;\n private popoverOpen?: PopoverOpen<any>;\n private clicked = false;\n private currentEl?: NgbMenuTrigger;\n\n constructor() {\n documentListener('click', () => {\n if (this.close) {\n this.clicked = false;\n this.currentEl = undefined;\n this.close();\n }\n });\n effect(cleanup => {\n const menus = this.menus();\n const hover = this.hover();\n const sub = menus.map(menu =>\n menu.events.subscribe(({ type, menu }) => {\n const isSame = this.currentEl === menu;\n if (\n (type === 'enter' && (hover || this.clicked)) ||\n (type === 'click' && !hover && !isSame)\n ) {\n this.clicked = true;\n this.currentEl = menu;\n this.open(menu);\n } else if (isSame && (hover || type === 'click')) {\n this.scheduleClose();\n }\n }),\n );\n cleanup(() => sub.forEach(x => x.unsubscribe()));\n });\n }\n\n open(menuTrigger: NgbMenuTrigger) {\n clearTimeout(this.timerId);\n const menu = menuTrigger.ngbMenuTrigger();\n const target = menuTrigger.el.nativeElement;\n if (this.close) {\n // console.log('navigation menu open existing', menu);\n this.popoverOpen?.replace?.(menu.container()!);\n this.popoverOpen?.parent.target?.set(target);\n menu.diaRef = this.popoverOpen!.diaRef;\n // We need to change the id so that new menu items gets registered for a11y\n menu.diaRef.options.ayId = uniqueId();\n menu.opened();\n return;\n }\n // console.log('navigation menu open');\n\n this.popoverOpen = this.popover.open(menu.container()!, {\n target,\n position: this.dir.isRtl() ? 'br' : 'bl',\n className: 'transition-all',\n ayId: this.ayId,\n backdrop: false,\n });\n menu.diaRef = this.popoverOpen.diaRef;\n if (this.hover()) {\n this.popoverOpen.events.subscribe(e => {\n if (e.type === 'mouseenter') {\n clearTimeout(this.timerId);\n } else {\n this.scheduleClose();\n }\n });\n }\n menu.opened();\n this.close = () => {\n menu.close();\n this.close = undefined;\n this.popoverOpen = undefined;\n };\n }\n\n private scheduleClose() {\n clearTimeout(this.timerId);\n this.timerId = setTimeout(() => {\n this.clicked = false;\n this.currentEl = undefined;\n this.close?.();\n }, 200);\n }\n}\n","import { Directive, ElementRef, afterNextRender, inject, input, signal } from '@angular/core';\nimport { AccessibleItem } from '@ngbase/adk/a11y';\nimport { PopoverOptions } from '@ngbase/adk/popover';\nimport { Subject } from 'rxjs';\nimport { NgbMenu } from './menu';\nimport { NgbNavigationMenu } from './navigation-menu';\n\n@Directive({\n selector: '[ngbMenuTrigger]',\n exportAs: 'ngbMenuTrigger',\n host: {\n '(click)': 'clickOpen($event)',\n '[attr.aria-expanded]': 'menuOpen()',\n '[attr.aria-haspopup]': 'true',\n tabindex: '0',\n },\n})\nexport class NgbMenuTrigger {\n private readonly nav = inject(NgbNavigationMenu, { optional: true });\n private readonly parent = inject(NgbMenu, { optional: true });\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly a11y = inject(AccessibleItem, { optional: true });\n\n readonly ngbMenuTrigger = input.required<NgbMenu>();\n readonly ngbMenuTriggerData = input();\n readonly options = input<Partial<PopoverOptions>>({});\n\n private readonly _menuOpen = signal<boolean>(false);\n readonly menuOpen = this._menuOpen.asReadonly();\n readonly events = new Subject<{\n event: MouseEvent;\n type: 'enter' | 'leave' | 'click';\n menu: NgbMenuTrigger;\n }>();\n constructor() {\n // if a11y is provided, then we should open on keyleft and keyright\n this.a11y?.events.subscribe(ev => {\n if (!this.menu.isOpen && ev.type === 'keyRight') {\n this.open();\n } else if (this.menu.isOpen && ev.type === 'keyLeft') {\n // Close without cascading to parent (navigation close)\n this.closeMenu();\n }\n });\n afterNextRender(() => {\n this.parent?.activeOption.subscribe(option => {\n if (option?.el.nativeElement === this.el.nativeElement) {\n this.open();\n } else if (this.menu.isOpen) {\n // Close without cascading to parent (navigation close)\n this.closeMenu();\n }\n });\n // if parent is provided, then this is a sub-menu and we should open on mouseenter and close on mouseleave\n if (this.parent || this.nav) {\n this.el.nativeElement.addEventListener('mouseenter', ev => {\n this.events.next({ event: ev, type: 'enter', menu: this });\n if (this.nav) {\n return;\n }\n this.open(ev);\n });\n this.el.nativeElement.addEventListener('mouseleave', ev => {\n this.events.next({ event: ev, type: 'leave', menu: this });\n });\n }\n });\n }\n\n private get menu() {\n return this.ngbMenuTrigger();\n }\n\n get rootParent() {\n return this.parent?.rootParent || this.parent;\n }\n\n clickOpen(ev: MouseEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n if (this.nav) {\n this.events.next({ event: ev, type: 'click', menu: this });\n return;\n } else {\n this.openMenu();\n }\n }\n\n private open(ev?: MouseEvent) {\n ev?.preventDefault();\n ev?.stopPropagation();\n this.openMenu();\n }\n\n closeMenu() {\n this.ngbMenuTrigger().close();\n }\n\n openMenu() {\n const menu = this.ngbMenuTrigger();\n if (menu.isOpen) {\n return;\n }\n // Pass parent's diaRef for proper parent-child tracking\n const parentDiaRef = this.parent?.diaRef;\n menu.open(\n { ...this.options(), target: this.el.nativeElement, data: this.ngbMenuTriggerData() },\n !!this.parent,\n parentDiaRef,\n );\n this._menuOpen.set(true);\n menu.parentMenuTrigger = this;\n\n menu.diaRef?.afterClosed.subscribe(() => {\n menu.close();\n this._menuOpen.set(false);\n });\n }\n}\n","/*\n * Public API Surface of menu\n */\n\nexport * from './context-menu';\nexport * from './mention';\nexport * from './menu';\nexport * from './menu-trigger';\nexport * from './navigation-menu';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -54,10 +54,10 @@ class Network {
54
54
  if (this.listeners.length === 0)
55
55
  this.off();
56
56
  }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Network, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
58
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Network, providedIn: 'root' }); }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: Network, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
58
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: Network, providedIn: 'root' }); }
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Network, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: Network, decorators: [{
61
61
  type: Injectable,
62
62
  args: [{ providedIn: 'root' }]
63
63
  }], ctorParameters: () => [] });
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-network.mjs","sources":["../../../projects/adk/network/network.service.ts","../../../projects/adk/network/network.interceptor.ts","../../../projects/adk/network/ngbase-adk-network.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { isClient } from '@ngbase/adk/utils';\nimport { documentListener, ListenerOut } from '@ngbase/adk/utils';\n\n@Injectable({ providedIn: 'root' })\nexport class Network {\n private status = signal(true);\n readonly isOnline = this.status.asReadonly();\n private listeners: ((status: boolean) => void)[] = [];\n private initialized = false;\n private onlineListener!: ListenerOut;\n private offlineListener!: ListenerOut;\n\n constructor() {\n if (isClient()) {\n this.status.set(navigator.onLine);\n this.onlineListener = documentListener('online', () => this.updateOnlineStatus(true), {\n element: window,\n lazy: true,\n });\n this.offlineListener = documentListener('offline', () => this.updateOnlineStatus(false), {\n element: window,\n lazy: true,\n });\n }\n }\n\n private on(): void {\n if (this.initialized) return;\n // window.addEventListener('online', () => this.updateOnlineStatus(true));\n // window.addEventListener('offline', () => this.updateOnlineStatus(false));\n this.onlineListener.on();\n this.offlineListener.on();\n this.initialized = true;\n }\n\n private off(): void {\n // window.removeEventListener('online', () => this.updateOnlineStatus(true));\n // window.removeEventListener('offline', () => this.updateOnlineStatus(false));\n this.onlineListener.off();\n this.offlineListener.off();\n this.initialized = false;\n }\n\n private updateOnlineStatus(status: boolean): void {\n this.status.set(status);\n this.listeners.forEach(listener => listener(this.status()));\n }\n\n public addListener(listener: (status: boolean) => void): void {\n this.listeners.push(listener);\n listener(this.status()); // Immediately call with current status\n this.on();\n }\n\n public removeListener(listener: (status: boolean) => void): void {\n const index = this.listeners.indexOf(listener);\n if (index > -1) this.listeners.splice(index, 1);\n if (this.listeners.length === 0) this.off();\n }\n}\n\nexport const injectNetwork = () => inject(Network);\n","import { HTTP_INTERCEPTORS, HttpInterceptorFn } from '@angular/common/http';\nimport { catchError } from 'rxjs';\nimport { injectNetwork } from './network.service';\nimport { isClient } from '@ngbase/adk/utils';\n\nconst networkInterceptor: HttpInterceptorFn = (req, next) => {\n const networkService = injectNetwork();\n const isBrowser = isClient();\n\n if (isBrowser && !networkService.isOnline()) {\n throw 'No internet connection';\n }\n\n return next(req).pipe(\n catchError(error => {\n if (isBrowser && !networkService.isOnline()) {\n // You can implement custom error handling here\n }\n throw error;\n }),\n );\n};\n\nexport const provideNetworkInterceptor = () => ({\n provide: HTTP_INTERCEPTORS,\n useFactory: networkInterceptor,\n multi: true,\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-network.mjs","sources":["../../../projects/adk/network/network.service.ts","../../../projects/adk/network/network.interceptor.ts","../../../projects/adk/network/ngbase-adk-network.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { isClient } from '@ngbase/adk/utils';\nimport { documentListener, ListenerOut } from '@ngbase/adk/utils';\n\n@Injectable({ providedIn: 'root' })\nexport class Network {\n private status = signal(true);\n readonly isOnline = this.status.asReadonly();\n private listeners: ((status: boolean) => void)[] = [];\n private initialized = false;\n private onlineListener!: ListenerOut;\n private offlineListener!: ListenerOut;\n\n constructor() {\n if (isClient()) {\n this.status.set(navigator.onLine);\n this.onlineListener = documentListener('online', () => this.updateOnlineStatus(true), {\n element: window,\n lazy: true,\n });\n this.offlineListener = documentListener('offline', () => this.updateOnlineStatus(false), {\n element: window,\n lazy: true,\n });\n }\n }\n\n private on(): void {\n if (this.initialized) return;\n // window.addEventListener('online', () => this.updateOnlineStatus(true));\n // window.addEventListener('offline', () => this.updateOnlineStatus(false));\n this.onlineListener.on();\n this.offlineListener.on();\n this.initialized = true;\n }\n\n private off(): void {\n // window.removeEventListener('online', () => this.updateOnlineStatus(true));\n // window.removeEventListener('offline', () => this.updateOnlineStatus(false));\n this.onlineListener.off();\n this.offlineListener.off();\n this.initialized = false;\n }\n\n private updateOnlineStatus(status: boolean): void {\n this.status.set(status);\n this.listeners.forEach(listener => listener(this.status()));\n }\n\n public addListener(listener: (status: boolean) => void): void {\n this.listeners.push(listener);\n listener(this.status()); // Immediately call with current status\n this.on();\n }\n\n public removeListener(listener: (status: boolean) => void): void {\n const index = this.listeners.indexOf(listener);\n if (index > -1) this.listeners.splice(index, 1);\n if (this.listeners.length === 0) this.off();\n }\n}\n\nexport const injectNetwork = () => inject(Network);\n","import { HTTP_INTERCEPTORS, HttpInterceptorFn } from '@angular/common/http';\nimport { catchError } from 'rxjs';\nimport { injectNetwork } from './network.service';\nimport { isClient } from '@ngbase/adk/utils';\n\nconst networkInterceptor: HttpInterceptorFn = (req, next) => {\n const networkService = injectNetwork();\n const isBrowser = isClient();\n\n if (isBrowser && !networkService.isOnline()) {\n throw 'No internet connection';\n }\n\n return next(req).pipe(\n catchError(error => {\n if (isBrowser && !networkService.isOnline()) {\n // You can implement custom error handling here\n }\n throw error;\n }),\n );\n};\n\nexport const provideNetworkInterceptor = () => ({\n provide: HTTP_INTERCEPTORS,\n useFactory: networkInterceptor,\n multi: true,\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}