@ngbase/adk 0.1.1 → 0.1.3

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 (275) hide show
  1. package/a11y/accessibility-group.d.ts +2 -5
  2. package/accordion/accordion-item.d.ts +7 -1
  3. package/accordion/public-api.d.ts +1 -1
  4. package/autocomplete/autocomplete-input.d.ts +2 -4
  5. package/autocomplete/autocomplete.d.ts +13 -4
  6. package/avatar/avatar.d.ts +1 -1
  7. package/breadcrumb/breadcrumb.d.ts +2 -3
  8. package/breadcrumb/public-api.d.ts +1 -1
  9. package/carousel/carousel.d.ts +3 -3
  10. package/checkbox/checkbox.d.ts +11 -3
  11. package/checkbox/public-api.d.ts +1 -1
  12. package/chip/chip.d.ts +2 -2
  13. package/datepicker/calendar.d.ts +3 -3
  14. package/datepicker/datepicker-trigger.d.ts +22 -5
  15. package/datepicker/datepicker.d.ts +4 -3
  16. package/datepicker/time.d.ts +2 -2
  17. package/dialog/dialog.d.ts +1 -1
  18. package/drag/drag.d.ts +1 -2
  19. package/fesm2022/ngbase-adk-a11y.mjs +29 -26
  20. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-accordion.mjs +16 -3
  22. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-autocomplete.mjs +23 -52
  24. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  25. package/fesm2022/ngbase-adk-avatar.mjs +2 -2
  26. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  27. package/fesm2022/ngbase-adk-breadcrumb.mjs +2 -2
  28. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  29. package/fesm2022/ngbase-adk-carousel.mjs +7 -7
  30. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  31. package/fesm2022/ngbase-adk-checkbox.mjs +8 -6
  32. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  33. package/fesm2022/ngbase-adk-chip.mjs +4 -2
  34. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  35. package/fesm2022/ngbase-adk-datepicker.mjs +187 -350
  36. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  37. package/fesm2022/ngbase-adk-dialog.mjs +14 -15
  38. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  39. package/fesm2022/ngbase-adk-drag.mjs +1 -2
  40. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  41. package/fesm2022/ngbase-adk-form-field.mjs +2 -156
  42. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  43. package/fesm2022/ngbase-adk-list.mjs +2 -2
  44. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  45. package/fesm2022/ngbase-adk-mask.mjs +5 -3
  46. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-menu.mjs +34 -34
  48. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  49. package/fesm2022/ngbase-adk-otp.mjs +164 -0
  50. package/fesm2022/ngbase-adk-otp.mjs.map +1 -0
  51. package/fesm2022/ngbase-adk-pagination.mjs +10 -67
  52. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  53. package/fesm2022/ngbase-adk-popover.mjs +434 -556
  54. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  55. package/fesm2022/ngbase-adk-portal.mjs +5 -10
  56. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  57. package/fesm2022/ngbase-adk-radio.mjs +8 -19
  58. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  59. package/fesm2022/ngbase-adk-resizable.mjs +10 -43
  60. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  61. package/fesm2022/ngbase-adk-select.mjs +87 -185
  62. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  63. package/fesm2022/ngbase-adk-sheet.mjs +95 -0
  64. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -0
  65. package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
  66. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  67. package/fesm2022/ngbase-adk-slider.mjs +12 -23
  68. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  69. package/fesm2022/ngbase-adk-sonner.mjs +13 -63
  70. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  71. package/fesm2022/ngbase-adk-stepper.mjs +16 -114
  72. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  73. package/fesm2022/ngbase-adk-switch.mjs +2 -2
  74. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  75. package/fesm2022/ngbase-adk-table.mjs +17 -35
  76. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  77. package/fesm2022/ngbase-adk-tabs.mjs +14 -94
  78. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  79. package/fesm2022/ngbase-adk-test.mjs +11 -1
  80. package/fesm2022/ngbase-adk-test.mjs.map +1 -1
  81. package/fesm2022/ngbase-adk-tooltip.mjs +49 -39
  82. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  83. package/fesm2022/ngbase-adk-tour.mjs +3 -3
  84. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  85. package/fesm2022/ngbase-adk-tree.mjs +11 -43
  86. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  87. package/fesm2022/ngbase-adk-utils.mjs +12 -9
  88. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  89. package/form-field/public-api.d.ts +0 -1
  90. package/mask/mask.d.ts +1 -2
  91. package/menu/menu-trigger.d.ts +3 -3
  92. package/menu/menu.d.ts +13 -7
  93. package/otp/index.d.ts +5 -0
  94. package/{form-field → otp}/otp.d.ts +1 -1
  95. package/otp/public-api.d.ts +1 -0
  96. package/package.json +27 -19
  97. package/pagination/pagination.d.ts +7 -3
  98. package/popover/base-popover.service.d.ts +1 -1
  99. package/popover/popover-arrow.ng.d.ts +34 -0
  100. package/popover/popover.d.ts +17 -7
  101. package/popover/popover.service.d.ts +5 -4
  102. package/popover/public-api.d.ts +1 -0
  103. package/popover/utils.d.ts +32 -48
  104. package/portal/dialog-ref.d.ts +0 -1
  105. package/portal/portal-base.service.d.ts +3 -3
  106. package/portal/portal-close.directive.d.ts +3 -2
  107. package/radio/radio.d.ts +5 -1
  108. package/resizable/resizable-group.d.ts +2 -2
  109. package/resizable/resizable.d.ts +2 -2
  110. package/select/option-group.d.ts +3 -3
  111. package/select/option.d.ts +1 -1
  112. package/select/select-base.d.ts +8 -6
  113. package/select/select.d.ts +6 -3
  114. package/sheet/index.d.ts +5 -0
  115. package/sheet/public-api.d.ts +2 -0
  116. package/sheet/sheet.d.ts +26 -0
  117. package/sheet/sheet.service.d.ts +13 -0
  118. package/sidenav/public-api.d.ts +1 -1
  119. package/sidenav/sidenav.d.ts +1 -1
  120. package/slider/public-api.d.ts +1 -1
  121. package/slider/slider.d.ts +6 -5
  122. package/sonner/sonner.d.ts +2 -1
  123. package/stepper/animation.d.ts +1 -1
  124. package/stepper/step.d.ts +1 -1
  125. package/stepper/stepper.d.ts +2 -2
  126. package/switch/switch.d.ts +1 -1
  127. package/table/body-row.d.ts +3 -3
  128. package/table/head-row.d.ts +3 -3
  129. package/table/table.d.ts +3 -3
  130. package/tabs/tab-group.d.ts +4 -4
  131. package/tabs/tab.d.ts +2 -2
  132. package/test/utils.d.ts +19 -3
  133. package/tooltip/public-api.d.ts +1 -1
  134. package/tooltip/tooltip.d.ts +5 -1
  135. package/tooltip/tooltip.directive.d.ts +1 -1
  136. package/tooltip/tooltip.service.d.ts +4 -2
  137. package/tour/tour.service.d.ts +3 -4
  138. package/tree/public-api.d.ts +2 -2
  139. package/tree/tree-node.d.ts +2 -2
  140. package/tree/tree.d.ts +2 -2
  141. package/utils/utils.d.ts +5 -4
  142. package/schematics/collection.json +0 -15
  143. package/schematics/components/files/accordion/accordion.ts.template +0 -55
  144. package/schematics/components/files/accordion/index.ts.template +0 -5
  145. package/schematics/components/files/alert/alert.ts.template +0 -62
  146. package/schematics/components/files/alert/index.ts.template +0 -1
  147. package/schematics/components/files/autocomplete/autocomplete.ts.template +0 -48
  148. package/schematics/components/files/autocomplete/index.ts.template +0 -5
  149. package/schematics/components/files/avatar/avatar.ts.template +0 -31
  150. package/schematics/components/files/avatar/index.ts.template +0 -1
  151. package/schematics/components/files/badge/badge.ts.template +0 -11
  152. package/schematics/components/files/badge/index.ts.template +0 -1
  153. package/schematics/components/files/breadcrumb/breadcrumb.ts.template +0 -49
  154. package/schematics/components/files/breadcrumb/index.ts.template +0 -1
  155. package/schematics/components/files/button/button.ts.template +0 -29
  156. package/schematics/components/files/button/index.ts.template +0 -5
  157. package/schematics/components/files/card/card.ts.template +0 -11
  158. package/schematics/components/files/card/index.ts.template +0 -5
  159. package/schematics/components/files/carousel/carousel.ts.template +0 -44
  160. package/schematics/components/files/carousel/index.ts.template +0 -1
  161. package/schematics/components/files/checkbox/checkbox.ts.template +0 -46
  162. package/schematics/components/files/checkbox/focus-style.directive.ts.template +0 -12
  163. package/schematics/components/files/checkbox/index.ts.template +0 -6
  164. package/schematics/components/files/chip/chip.ts.template +0 -36
  165. package/schematics/components/files/chip/index.ts.template +0 -1
  166. package/schematics/components/files/color-picker/color-picker.ts.template +0 -104
  167. package/schematics/components/files/color-picker/index.ts.template +0 -5
  168. package/schematics/components/files/command/command.ts.template +0 -82
  169. package/schematics/components/files/command/index.ts.template +0 -1
  170. package/schematics/components/files/datepicker/calendar.ts.template +0 -117
  171. package/schematics/components/files/datepicker/datepicker-trigger.ts.template +0 -27
  172. package/schematics/components/files/datepicker/datepicker.ts.template +0 -28
  173. package/schematics/components/files/datepicker/index.ts.template +0 -3
  174. package/schematics/components/files/datepicker/time.ts.template +0 -46
  175. package/schematics/components/files/dialog/dialog.ts.template +0 -89
  176. package/schematics/components/files/dialog/index.ts.template +0 -5
  177. package/schematics/components/files/drawer/drawer.ts.template +0 -104
  178. package/schematics/components/files/drawer/index.ts.template +0 -5
  179. package/schematics/components/files/form-field/index.ts.template +0 -7
  180. package/schematics/components/files/form-field/input-style.directive.ts.template +0 -11
  181. package/schematics/components/files/form-field/input.ts.template +0 -100
  182. package/schematics/components/files/form-field/otp.ts.template +0 -37
  183. package/schematics/components/files/hover-card/hover-card.ts.template +0 -13
  184. package/schematics/components/files/hover-card/index.ts.template +0 -5
  185. package/schematics/components/files/icon/icon.ts.template +0 -16
  186. package/schematics/components/files/icon/index.ts.template +0 -1
  187. package/schematics/components/files/inline-edit/index.ts.template +0 -1
  188. package/schematics/components/files/inline-edit/inline-edit.ts.template +0 -24
  189. package/schematics/components/files/keys/index.ts.template +0 -5
  190. package/schematics/components/files/keys/key.ts.template +0 -35
  191. package/schematics/components/files/list/index.ts.template +0 -5
  192. package/schematics/components/files/list/list.ts.template +0 -28
  193. package/schematics/components/files/mask/index.ts.template +0 -1
  194. package/schematics/components/files/mask/mask.ts.template +0 -8
  195. package/schematics/components/files/menu/context-menu.ts.template +0 -14
  196. package/schematics/components/files/menu/index.ts.template +0 -8
  197. package/schematics/components/files/menu/mention.ts.template +0 -14
  198. package/schematics/components/files/menu/menu.ts.template +0 -37
  199. package/schematics/components/files/menu/navigation-menu.ts.template +0 -8
  200. package/schematics/components/files/pagination/index.ts.template +0 -1
  201. package/schematics/components/files/pagination/pagination.ts.template +0 -71
  202. package/schematics/components/files/picasa/index.ts.template +0 -1
  203. package/schematics/components/files/picasa/picasa-base.component.ts.template +0 -80
  204. package/schematics/components/files/picasa/picasa.component.ts.template +0 -57
  205. package/schematics/components/files/picasa/picasa.directive.ts.template +0 -41
  206. package/schematics/components/files/picasa/picase.service.ts.template +0 -24
  207. package/schematics/components/files/popover/index.ts.template +0 -1
  208. package/schematics/components/files/popover/popover.ts.template +0 -87
  209. package/schematics/components/files/progress/index.ts.template +0 -5
  210. package/schematics/components/files/progress/progress.ts.template +0 -14
  211. package/schematics/components/files/radio/index.ts.template +0 -5
  212. package/schematics/components/files/radio/radio.ts.template +0 -40
  213. package/schematics/components/files/resizable/index.ts.template +0 -5
  214. package/schematics/components/files/resizable/resizable.ts.template +0 -56
  215. package/schematics/components/files/scroll-area/index.ts.template +0 -1
  216. package/schematics/components/files/scroll-area/scroll-area.ts.template +0 -40
  217. package/schematics/components/files/select/index.ts.template +0 -8
  218. package/schematics/components/files/select/list-selection.ts.template +0 -15
  219. package/schematics/components/files/select/option.ts.template +0 -34
  220. package/schematics/components/files/select/select-input.ts.template +0 -21
  221. package/schematics/components/files/select/select.ts.template +0 -96
  222. package/schematics/components/files/selectable/index.ts.template +0 -1
  223. package/schematics/components/files/selectable/selectable.ts.template +0 -34
  224. package/schematics/components/files/separator/index.ts.template +0 -5
  225. package/schematics/components/files/separator/separator.ts.template +0 -19
  226. package/schematics/components/files/sheet/index.ts.template +0 -5
  227. package/schematics/components/files/sheet/sheet.ts.template +0 -134
  228. package/schematics/components/files/sidenav/index.ts.template +0 -1
  229. package/schematics/components/files/sidenav/sidenav.ts.template +0 -48
  230. package/schematics/components/files/skeleton/index.ts.template +0 -1
  231. package/schematics/components/files/skeleton/skeleton.ts.template +0 -15
  232. package/schematics/components/files/slider/index.ts.template +0 -5
  233. package/schematics/components/files/slider/slider.ts.template +0 -42
  234. package/schematics/components/files/sonner/index.ts.template +0 -5
  235. package/schematics/components/files/sonner/sonner.ts.template +0 -58
  236. package/schematics/components/files/spinner/index.ts.template +0 -1
  237. package/schematics/components/files/spinner/spinner.ts.template +0 -79
  238. package/schematics/components/files/stepper/index.ts.template +0 -1
  239. package/schematics/components/files/stepper/stepper.ts.template +0 -88
  240. package/schematics/components/files/switch/index.ts.template +0 -5
  241. package/schematics/components/files/switch/switch.ts.template +0 -29
  242. package/schematics/components/files/table/body-cell.ts.template +0 -19
  243. package/schematics/components/files/table/body-row.ts.template +0 -21
  244. package/schematics/components/files/table/column.ts.template +0 -8
  245. package/schematics/components/files/table/head-cell.ts.template +0 -19
  246. package/schematics/components/files/table/head-row.ts.template +0 -27
  247. package/schematics/components/files/table/index.ts.template +0 -26
  248. package/schematics/components/files/table/table.ts.template +0 -20
  249. package/schematics/components/files/tabs/index.ts.template +0 -5
  250. package/schematics/components/files/tabs/tab.ts.template +0 -89
  251. package/schematics/components/files/theme/index.ts.template +0 -2
  252. package/schematics/components/files/theme/theme-button.component.ts.template +0 -26
  253. package/schematics/components/files/theme/theme.component.ts.template +0 -165
  254. package/schematics/components/files/theme/theme.service.ts.template +0 -44
  255. package/schematics/components/files/toggle/index.ts.template +0 -5
  256. package/schematics/components/files/toggle/toggle.ts.template +0 -13
  257. package/schematics/components/files/toggle-group/index.ts.template +0 -5
  258. package/schematics/components/files/toggle-group/toggle-group.ts.template +0 -25
  259. package/schematics/components/files/tooltip/index.ts.template +0 -5
  260. package/schematics/components/files/tooltip/tooltip.ts.template +0 -40
  261. package/schematics/components/files/tour/index.ts.template +0 -3
  262. package/schematics/components/files/tour/tour-step.ts.template +0 -8
  263. package/schematics/components/files/tour/tour.service.ts.template +0 -7
  264. package/schematics/components/files/tour/tour.ts.template +0 -8
  265. package/schematics/components/files/tree/index.ts.template +0 -1
  266. package/schematics/components/files/tree/tree.ts.template +0 -66
  267. package/schematics/components/index.d.ts +0 -3
  268. package/schematics/components/index.js +0 -17
  269. package/schematics/components/index.js.map +0 -1
  270. package/schematics/components/index.ts +0 -29
  271. package/schematics/components/schema.d.ts +0 -6
  272. package/schematics/components/schema.js +0 -3
  273. package/schematics/components/schema.js.map +0 -1
  274. package/schematics/components/schema.json +0 -137
  275. package/schematics/components/schema.ts +0 -6
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, input, inject, output, Directive, ElementRef, effect, viewChild, TemplateRef, contentChildren, Component, ChangeDetectionStrategy, signal, afterNextRender } from '@angular/core';
2
+ import { Injectable, input, inject, output, Directive, ElementRef, effect, viewChild, TemplateRef, contentChildren, signal, afterNextRender } from '@angular/core';
3
3
  import { documentListener, uniqueId } from '@ngbase/adk/utils';
4
4
  import * as i1 from '@ngbase/adk/a11y';
5
5
  import { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';
6
+ import { injectDirectionality } from '@ngbase/adk/bidi';
6
7
  import { Keys } from '@ngbase/adk/keys';
7
8
  import { NgbList } from '@ngbase/adk/list';
9
+ import { ngbPopoverPortal } from '@ngbase/adk/popover';
8
10
  import { NgbOption } from '@ngbase/adk/select';
9
11
  import { Subject, BehaviorSubject } from 'rxjs';
10
- import { injectDirectionality } from '@ngbase/adk/bidi';
11
- import { ngbPopoverPortal } from '@ngbase/adk/popover';
12
12
 
13
13
  class MenuService {
14
14
  constructor() {
@@ -173,7 +173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
173
173
  }]
174
174
  }] });
175
175
 
176
- class MenuGroup {
176
+ class NgpMenuGroup {
177
177
  constructor() {
178
178
  this.menu = inject(NgbMenu);
179
179
  this.allyGroup = inject(AccessibleGroup);
@@ -184,39 +184,51 @@ class MenuGroup {
184
184
  this.allyGroup._isPopup.set(true);
185
185
  });
186
186
  }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: MenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
188
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: MenuGroup, isStandalone: true, selector: "[ngbMenuGroup]", host: { listeners: { "click": "menu.close()" } }, hostDirectives: [{ directive: i1.AccessibleGroup }], ngImport: i0 }); }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgpMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
188
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgpMenuGroup, isStandalone: true, selector: "[ngbMenuGroup]", host: { listeners: { "click": "menu.noAutoClose() ? null : menu.close()" } }, hostDirectives: [{ directive: i1.AccessibleGroup }], ngImport: i0 }); }
189
189
  }
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: MenuGroup, decorators: [{
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgpMenuGroup, decorators: [{
191
191
  type: Directive,
192
192
  args: [{
193
193
  selector: '[ngbMenuGroup]',
194
194
  hostDirectives: [AccessibleGroup],
195
195
  host: {
196
- '(click)': 'menu.close()',
196
+ '(click)': 'menu.noAutoClose() ? null : menu.close()',
197
197
  },
198
198
  }]
199
199
  }], ctorParameters: () => [] });
200
+ class NgpMenuContent {
201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgpMenuContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
202
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgpMenuContent, isStandalone: true, selector: "ng-template[ngbMenuContent]", ngImport: i0 }); }
203
+ }
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgpMenuContent, decorators: [{
205
+ type: Directive,
206
+ args: [{
207
+ selector: 'ng-template[ngbMenuContent]',
208
+ }]
209
+ }] });
200
210
  class NgbMenu {
201
211
  constructor() {
202
212
  this.dir = injectDirectionality();
203
213
  this.popover = ngbPopoverPortal();
204
- this.menuEl = viewChild(MenuGroup, {
214
+ this.menuEl = viewChild(NgpMenuGroup, {
205
215
  read: ElementRef,
206
216
  });
207
217
  this.container = viewChild.required('container', { read: TemplateRef });
218
+ this.content = contentChildren(NgpMenuContent, { read: TemplateRef, descendants: true });
208
219
  this.options = contentChildren(NgbOption, { descendants: true });
209
220
  this.lists = contentChildren(NgbList, { descendants: true });
210
221
  this.manager = new Keys();
211
222
  this.selected = output();
212
223
  this.ayId = uniqueId();
224
+ this.noAutoClose = input(false);
213
225
  this.events = new Subject();
214
226
  this.activeOption = new BehaviorSubject(null);
215
227
  this.isOpen = false;
216
- this.close = () => {
228
+ this.close = (data) => {
217
229
  if (!this.isOpen)
218
230
  return;
219
- this.diaRef?.close();
231
+ this.diaRef?.close(data);
220
232
  this.activeOption.next(null);
221
233
  this.isOpen = false;
222
234
  };
@@ -250,12 +262,15 @@ class NgbMenu {
250
262
  }
251
263
  open(options, subMenu = false) {
252
264
  const rtl = this.dir.isRtl();
253
- const { diaRef } = this.popover.open(this.container(), {
265
+ const content = this.content()[0];
266
+ const template = content || this.container();
267
+ const { diaRef } = this.popover.open(template, {
254
268
  ...this.options(),
255
269
  backdrop: !subMenu,
256
- position: subMenu ? (rtl ? 'left' : 'right') : rtl ? 'br' : 'bl',
270
+ position: subMenu ? (rtl ? 'ls' : 'rs') : rtl ? 'br' : 'bl',
257
271
  offset: 4,
258
272
  ayId: this.ayId,
273
+ data: options.data,
259
274
  ...options,
260
275
  });
261
276
  this.diaRef = diaRef;
@@ -276,32 +291,17 @@ class NgbMenu {
276
291
  ngOnDestroy() {
277
292
  this.close();
278
293
  }
279
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbMenu, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
280
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.0", type: NgbMenu, isStandalone: true, selector: "[ngbMenu]", outputs: { selected: "selected" }, queries: [{ propertyName: "options", predicate: NgbOption, descendants: true, isSignal: true }, { propertyName: "lists", predicate: NgbList, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "menuEl", first: true, predicate: MenuGroup, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: TemplateRef, isSignal: true }], exportAs: ["ngbMenu"], ngImport: i0, template: `
281
- <ng-template #container>
282
- <div ngbMenuGroup>
283
- <ng-content />
284
- </div>
285
- </ng-template>
286
- `, isInline: true, dependencies: [{ kind: "directive", type: MenuGroup, selector: "[ngbMenuGroup]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
294
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
295
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.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 }); }
287
296
  }
288
297
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbMenu, decorators: [{
289
- type: Component,
298
+ type: Directive,
290
299
  args: [{
291
300
  selector: '[ngbMenu]',
292
301
  exportAs: 'ngbMenu',
293
- changeDetection: ChangeDetectionStrategy.OnPush,
294
- imports: [AccessibleGroup, MenuGroup],
295
- template: `
296
- <ng-template #container>
297
- <div ngbMenuGroup>
298
- <ng-content />
299
- </div>
300
- </ng-template>
301
- `,
302
302
  }]
303
303
  }], ctorParameters: () => [] });
304
- const provideMenu = (menu) => ({
304
+ const aliasMenu = (menu) => ({
305
305
  provide: NgbMenu,
306
306
  useExisting: menu,
307
307
  });
@@ -495,7 +495,7 @@ class NgbMenuTrigger {
495
495
  // offset: 4,
496
496
  // ayId: this.ayId(),
497
497
  // });
498
- menu.open({ target: this.el.nativeElement, data: this.ngbMenuTriggerData() }, !!this.parent);
498
+ menu.open({ ...this.options(), target: this.el.nativeElement, data: this.ngbMenuTriggerData() }, !!this.parent);
499
499
  this._menuOpen.set(true);
500
500
  menu.parentMenuTrigger = this;
501
501
  // if (this.nav) {
@@ -542,5 +542,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
542
542
  * Generated bundle index. Do not edit.
543
543
  */
544
544
 
545
- export { MenuGroup, NgbContextMenu, NgbMentionTrigger, NgbMenu, NgbMenuTrigger, NgbNavigationMenu, provideMenu };
545
+ export { NgbContextMenu, NgbMentionTrigger, NgbMenu, NgbMenuTrigger, NgbNavigationMenu, NgpMenuContent, NgpMenuGroup, aliasMenu };
546
546
  //# sourceMappingURL=ngbase-adk-menu.mjs.map
@@ -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 ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n OnDestroy,\n TemplateRef,\n contentChildren,\n effect,\n inject,\n output,\n viewChild,\n} from '@angular/core';\nimport { AccessibleGroup } from '@ngbase/adk/a11y';\nimport { Keys } from '@ngbase/adk/keys';\nimport { NgbList } from '@ngbase/adk/list';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { NgbOption } from '@ngbase/adk/select';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { NgbMenuTrigger } from './menu-trigger';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\nimport { ngbPopoverPortal, PopoverOptions } from '@ngbase/adk/popover';\nimport { uniqueId } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbMenuGroup]',\n hostDirectives: [AccessibleGroup],\n host: {\n '(click)': 'menu.close()',\n },\n})\nexport class MenuGroup {\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@Component({\n selector: '[ngbMenu]',\n exportAs: 'ngbMenu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AccessibleGroup, MenuGroup],\n template: `\n <ng-template #container>\n <div ngbMenuGroup>\n <ng-content />\n </div>\n </ng-template>\n `,\n})\nexport class NgbMenu implements OnDestroy {\n readonly dir = injectDirectionality();\n readonly popover = ngbPopoverPortal();\n private readonly menuEl = viewChild<MenuGroup, ElementRef<HTMLDivElement>>(MenuGroup, {\n read: ElementRef,\n });\n readonly container = viewChild.required('container', { read: TemplateRef });\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 // 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 { diaRef } = this.popover.open(this.container()!, {\n ...this.options(),\n backdrop: !subMenu,\n position: subMenu ? (rtl ? 'left' : 'right') : rtl ? 'br' : 'bl',\n offset: 4,\n ayId: this.ayId,\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 = () => {\n if (!this.isOpen) return;\n this.diaRef?.close();\n this.activeOption.next(null);\n this.isOpen = false;\n };\n\n ngOnDestroy() {\n this.close();\n }\n}\n\nexport const provideMenu = (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 { DialogOptions } from '@ngbase/adk/portal';\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<DialogOptions>({});\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 private 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({ target: this.el.nativeElement, data: this.ngbMenuTriggerData() }, !!this.parent);\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)': '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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"}
@@ -0,0 +1,164 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ElementRef, Directive, computed, effect, viewChild, viewChildren, input, booleanAttribute, signal, afterRenderEffect, untracked } from '@angular/core';
3
+ import { provideValueAccessor } from '@ngbase/adk/utils';
4
+
5
+ class NgbOtpInput {
6
+ constructor() {
7
+ this.otp = inject(NgbInputOtp);
8
+ this.el = inject(ElementRef);
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbOtpInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbOtpInput, isStandalone: true, selector: "input[ngbOtpInput]", host: { properties: { "disabled": "otp.disabled() || undefined" }, styleAttribute: "position: absolute; inset: 0; border: none; background: transparent; caret-color: transparent; outline: none; color: transparent; letter-spacing: -0.5rem;" }, ngImport: i0 }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbOtpInput, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ selector: 'input[ngbOtpInput]',
17
+ host: {
18
+ '[disabled]': 'otp.disabled() || undefined',
19
+ style: 'position: absolute; inset: 0; border: none; background: transparent; caret-color: transparent; outline: none; color: transparent; letter-spacing: -0.5rem;',
20
+ },
21
+ }]
22
+ }] });
23
+ class NgbOtpValue {
24
+ constructor() {
25
+ this.otp = inject(NgbInputOtp);
26
+ this.el = inject(ElementRef);
27
+ this.index = computed(() => this.otp._otpValues().findIndex(v => this.el === v.el));
28
+ this.value = computed(() => this.otp.values()[this.index()] || '');
29
+ this.focused = computed(() => {
30
+ return (this.otp.focused() && this.index() === Math.min(this.otp.values().length, this.otp.no() - 1));
31
+ });
32
+ effect(() => {
33
+ const value = this.value();
34
+ this.el.nativeElement.textContent = value && this.otp.masked() ? '•' : value;
35
+ });
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbOtpValue, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbOtpValue, isStandalone: true, selector: "[ngbOtpValue]", host: { attributes: { "aria-hidden": "true", "tabindex": "-1" }, properties: { "attr.data-focus": "focused() || undefined", "attr.data-disabled": "otp.disabled() || undefined" }, styleAttribute: "pointer-events: none" }, ngImport: i0 }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbOtpValue, decorators: [{
41
+ type: Directive,
42
+ args: [{
43
+ selector: '[ngbOtpValue]',
44
+ host: {
45
+ style: `pointer-events: none`,
46
+ '[attr.data-focus]': 'focused() || undefined',
47
+ '[attr.data-disabled]': 'otp.disabled() || undefined',
48
+ 'aria-hidden': 'true',
49
+ tabindex: '-1',
50
+ },
51
+ }]
52
+ }], ctorParameters: () => [] });
53
+ class NgbInputOtp {
54
+ constructor() {
55
+ this.inputs = viewChild.required(NgbOtpInput);
56
+ this._otpValues = viewChildren(NgbOtpValue);
57
+ // private readonly
58
+ this.size = input([4]);
59
+ this.masked = input(false, { transform: booleanAttribute });
60
+ this.disabled = input(false);
61
+ this.no = computed(() => this.size().reduce((a, b) => a + b, 0));
62
+ this.lastValue = '';
63
+ this.values = signal('');
64
+ this.focused = signal(false);
65
+ afterRenderEffect(cleanup => {
66
+ const inputEl = this.inputs().el.nativeElement;
67
+ const inputListener = () => {
68
+ const value = inputEl.value;
69
+ this.updateValue(value);
70
+ };
71
+ const keydownListener = (e) => {
72
+ const value = inputEl.value.length === this.no();
73
+ // const isPaste = (e.ctrlKey || e.metaKey) && e.key === 'v';
74
+ // if (isPaste || ['Tab', 'Enter'].includes(e.key)) {
75
+ // // prevent default behavior for tab key
76
+ // return;
77
+ // } else
78
+ if (value && !['Tab', 'Enter', 'Backspace'].includes(e.key)) {
79
+ // prevent default behavior for non-numeric characters
80
+ e.preventDefault();
81
+ }
82
+ };
83
+ const pasteListener = (e) => {
84
+ e.preventDefault();
85
+ const pastedText = e.clipboardData?.getData('text') || '';
86
+ const numbers = pastedText.replace(/\D/g, '');
87
+ // Only process if we have valid numbers
88
+ if (numbers.length === 0)
89
+ return;
90
+ this.updateNewValue(numbers.slice(0, this.no()));
91
+ this.updateValue(inputEl.value);
92
+ };
93
+ const blurListener = () => {
94
+ // We have to use untracked because the blur is triggered by the input element when we make it disabled
95
+ // so we are getting cannot update signal inside computed error
96
+ untracked(() => this.focused.set(false));
97
+ };
98
+ const focusListener = () => {
99
+ this.focused.set(true);
100
+ // set the cursor to the end of the input
101
+ inputEl.selectionStart = inputEl.selectionEnd = inputEl.value.length;
102
+ };
103
+ inputEl.addEventListener('input', inputListener);
104
+ inputEl.addEventListener('focus', focusListener);
105
+ inputEl.addEventListener('blur', blurListener);
106
+ inputEl.addEventListener('keydown', keydownListener);
107
+ inputEl.addEventListener('paste', pasteListener);
108
+ cleanup(() => {
109
+ inputEl.removeEventListener('input', inputListener);
110
+ inputEl.removeEventListener('focus', focusListener);
111
+ inputEl.removeEventListener('blur', blurListener);
112
+ inputEl.removeEventListener('keydown', keydownListener);
113
+ inputEl.removeEventListener('paste', pasteListener);
114
+ });
115
+ });
116
+ }
117
+ updateNewValue(value) {
118
+ this.values.set(value);
119
+ this.inputs().el.nativeElement.value = value;
120
+ }
121
+ writeValue(value) {
122
+ const values = value || '';
123
+ this.lastValue = value;
124
+ this.updateNewValue(values);
125
+ }
126
+ updateValue(values) {
127
+ this.values.set(values);
128
+ // const value = values.length === this.no() ? values : '';
129
+ // if (this.lastValue === value) {
130
+ // return;
131
+ // }
132
+ this.lastValue = values;
133
+ this.onChange?.(values);
134
+ this.onTouched?.();
135
+ }
136
+ registerOnChange(fn) {
137
+ this.onChange = fn;
138
+ }
139
+ registerOnTouched(fn) {
140
+ this.onTouched = fn;
141
+ }
142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbInputOtp, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
143
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbInputOtp, isStandalone: true, selector: "[ngbInputOtp]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, masked: { classPropertyName: "masked", publicName: "masked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [_provide(NgbInputOtp)], viewQueries: [{ propertyName: "inputs", first: true, predicate: NgbOtpInput, descendants: true, isSignal: true }, { propertyName: "_otpValues", predicate: NgbOtpValue, descendants: true, isSignal: true }], ngImport: i0 }); }
144
+ }
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbInputOtp, decorators: [{
146
+ type: Directive,
147
+ args: [{
148
+ selector: '[ngbInputOtp]',
149
+ providers: [_provide(NgbInputOtp)],
150
+ }]
151
+ }], ctorParameters: () => [] });
152
+ function _provide(otp) {
153
+ return [provideValueAccessor(otp)];
154
+ }
155
+ function aliasInputOtp(otp) {
156
+ return [_provide(otp), { provide: NgbInputOtp, useExisting: otp }];
157
+ }
158
+
159
+ /**
160
+ * Generated bundle index. Do not edit.
161
+ */
162
+
163
+ export { NgbInputOtp, NgbOtpInput, NgbOtpValue, aliasInputOtp };
164
+ //# sourceMappingURL=ngbase-adk-otp.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngbase-adk-otp.mjs","sources":["../../../projects/adk/otp/otp.ts","../../../projects/adk/otp/ngbase-adk-otp.ts"],"sourcesContent":["import {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: 'input[ngbOtpInput]',\n host: {\n '[disabled]': 'otp.disabled() || undefined',\n style:\n 'position: absolute; inset: 0; border: none; background: transparent; caret-color: transparent; outline: none; color: transparent; letter-spacing: -0.5rem;',\n },\n})\nexport class NgbOtpInput {\n readonly otp = inject(NgbInputOtp);\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n}\n\n@Directive({\n selector: '[ngbOtpValue]',\n host: {\n style: `pointer-events: none`,\n '[attr.data-focus]': 'focused() || undefined',\n '[attr.data-disabled]': 'otp.disabled() || undefined',\n 'aria-hidden': 'true',\n tabindex: '-1',\n },\n})\nexport class NgbOtpValue {\n readonly otp = inject(NgbInputOtp);\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly index = computed(() => this.otp._otpValues().findIndex(v => this.el === v.el));\n readonly value = computed(() => this.otp.values()[this.index()] || '');\n\n readonly focused = computed(() => {\n return (\n this.otp.focused() && this.index() === Math.min(this.otp.values().length, this.otp.no() - 1)\n );\n });\n\n constructor() {\n effect(() => {\n const value = this.value();\n this.el.nativeElement.textContent = value && this.otp.masked() ? '•' : value;\n });\n }\n}\n\n@Directive({\n selector: '[ngbInputOtp]',\n providers: [_provide(NgbInputOtp)],\n})\nexport class NgbInputOtp implements ControlValueAccessor {\n private readonly inputs = viewChild.required<NgbOtpInput>(NgbOtpInput);\n readonly _otpValues = viewChildren<NgbOtpValue>(NgbOtpValue);\n // private readonly\n\n readonly size = input<number[]>([4]);\n readonly masked = input(false, { transform: booleanAttribute });\n readonly disabled = input<boolean>(false);\n\n readonly no = computed(() => this.size().reduce((a, b) => a + b, 0));\n private onChange?: (value: string) => void;\n private onTouched?: () => void;\n private lastValue = '';\n readonly values = signal<string>('');\n readonly focused = signal<boolean>(false);\n\n constructor() {\n afterRenderEffect(cleanup => {\n const inputEl = this.inputs().el.nativeElement;\n\n const inputListener = () => {\n const value = inputEl.value;\n this.updateValue(value);\n };\n\n const keydownListener = (e: KeyboardEvent) => {\n const value = inputEl.value.length === this.no();\n // const isPaste = (e.ctrlKey || e.metaKey) && e.key === 'v';\n // if (isPaste || ['Tab', 'Enter'].includes(e.key)) {\n // // prevent default behavior for tab key\n // return;\n // } else\n if (value && !['Tab', 'Enter', 'Backspace'].includes(e.key)) {\n // prevent default behavior for non-numeric characters\n e.preventDefault();\n }\n };\n\n const pasteListener = (e: ClipboardEvent) => {\n e.preventDefault();\n\n const pastedText = e.clipboardData?.getData('text') || '';\n const numbers = pastedText.replace(/\\D/g, '');\n\n // Only process if we have valid numbers\n if (numbers.length === 0) return;\n\n this.updateNewValue(numbers.slice(0, this.no()));\n this.updateValue(inputEl.value);\n };\n\n const blurListener = () => {\n // We have to use untracked because the blur is triggered by the input element when we make it disabled\n // so we are getting cannot update signal inside computed error\n untracked(() => this.focused.set(false));\n };\n\n const focusListener = () => {\n this.focused.set(true);\n // set the cursor to the end of the input\n inputEl.selectionStart = inputEl.selectionEnd = inputEl.value.length;\n };\n\n inputEl.addEventListener('input', inputListener);\n inputEl.addEventListener('focus', focusListener);\n inputEl.addEventListener('blur', blurListener);\n inputEl.addEventListener('keydown', keydownListener);\n inputEl.addEventListener('paste', pasteListener);\n\n cleanup(() => {\n inputEl.removeEventListener('input', inputListener);\n inputEl.removeEventListener('focus', focusListener);\n inputEl.removeEventListener('blur', blurListener);\n inputEl.removeEventListener('keydown', keydownListener);\n inputEl.removeEventListener('paste', pasteListener);\n });\n });\n }\n\n private updateNewValue(value: string) {\n this.values.set(value);\n this.inputs().el.nativeElement.value = value;\n }\n\n writeValue(value: string) {\n const values = value || '';\n this.lastValue = value;\n this.updateNewValue(values);\n }\n\n updateValue(values: string) {\n this.values.set(values);\n // const value = values.length === this.no() ? values : '';\n // if (this.lastValue === value) {\n // return;\n // }\n this.lastValue = values;\n this.onChange?.(values);\n this.onTouched?.();\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n}\n\nfunction _provide(otp: typeof NgbInputOtp) {\n return [provideValueAccessor(otp)];\n}\n\nexport function aliasInputOtp(otp: typeof NgbInputOtp) {\n return [_provide(otp), { provide: NgbInputOtp, useExisting: otp }];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}