@ngbase/adk 0.1.10 → 0.1.12

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 (380) hide show
  1. package/a11y/index.d.ts +151 -5
  2. package/accordion/index.d.ts +44 -5
  3. package/autocomplete/index.d.ts +54 -5
  4. package/avatar/index.d.ts +25 -5
  5. package/bidi/index.d.ts +17 -5
  6. package/breadcrumb/index.d.ts +36 -5
  7. package/cache/index.d.ts +46 -5
  8. package/carousel/index.d.ts +79 -5
  9. package/checkbox/index.d.ts +33 -5
  10. package/chip/index.d.ts +28 -5
  11. package/clipboard/index.d.ts +11 -5
  12. package/collections/index.d.ts +23 -5
  13. package/color-picker/index.d.ts +119 -5
  14. package/cookies/index.d.ts +35 -5
  15. package/datepicker/index.d.ts +317 -5
  16. package/dialog/index.d.ts +63 -5
  17. package/drag/index.d.ts +107 -5
  18. package/fesm2022/ngbase-adk-a11y.mjs +100 -74
  19. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  20. package/fesm2022/ngbase-adk-accordion.mjs +31 -19
  21. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  22. package/fesm2022/ngbase-adk-autocomplete.mjs +17 -17
  23. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  24. package/fesm2022/ngbase-adk-avatar.mjs +16 -16
  25. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  26. package/fesm2022/ngbase-adk-bidi.mjs +6 -7
  27. package/fesm2022/ngbase-adk-bidi.mjs.map +1 -1
  28. package/fesm2022/ngbase-adk-breadcrumb.mjs +15 -15
  29. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  30. package/fesm2022/ngbase-adk-cache.mjs +3 -3
  31. package/fesm2022/ngbase-adk-carousel.mjs +24 -24
  32. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  33. package/fesm2022/ngbase-adk-checkbox.mjs +10 -10
  34. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  35. package/fesm2022/ngbase-adk-chip.mjs +13 -13
  36. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  37. package/fesm2022/ngbase-adk-clipboard.mjs +27 -12
  38. package/fesm2022/ngbase-adk-clipboard.mjs.map +1 -1
  39. package/fesm2022/ngbase-adk-collections.mjs +5 -5
  40. package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
  41. package/fesm2022/ngbase-adk-color-picker.mjs +39 -39
  42. package/fesm2022/ngbase-adk-color-picker.mjs.map +1 -1
  43. package/fesm2022/ngbase-adk-cookies.mjs +3 -3
  44. package/fesm2022/ngbase-adk-datepicker.mjs +107 -107
  45. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  46. package/fesm2022/ngbase-adk-dialog.mjs +39 -109
  47. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  48. package/fesm2022/ngbase-adk-drag.mjs +21 -22
  49. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  50. package/fesm2022/ngbase-adk-form-field.mjs +206 -31
  51. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  52. package/fesm2022/ngbase-adk-hover-card.mjs +6 -6
  53. package/fesm2022/ngbase-adk-hover-card.mjs.map +1 -1
  54. package/fesm2022/ngbase-adk-icon.mjs +10 -10
  55. package/fesm2022/ngbase-adk-icon.mjs.map +1 -1
  56. package/fesm2022/ngbase-adk-inline-edit.mjs +29 -27
  57. package/fesm2022/ngbase-adk-inline-edit.mjs.map +1 -1
  58. package/fesm2022/ngbase-adk-jwt.mjs +6 -6
  59. package/fesm2022/ngbase-adk-keys.mjs +7 -8
  60. package/fesm2022/ngbase-adk-keys.mjs.map +1 -1
  61. package/fesm2022/ngbase-adk-layout.mjs +1 -1
  62. package/fesm2022/ngbase-adk-layout.mjs.map +1 -1
  63. package/fesm2022/ngbase-adk-list.mjs +10 -10
  64. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  65. package/fesm2022/ngbase-adk-mask.mjs +8 -8
  66. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  67. package/fesm2022/ngbase-adk-menu.mjs +41 -41
  68. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  69. package/fesm2022/ngbase-adk-network.mjs +4 -4
  70. package/fesm2022/ngbase-adk-network.mjs.map +1 -1
  71. package/fesm2022/ngbase-adk-otp.mjs +19 -19
  72. package/fesm2022/ngbase-adk-otp.mjs.map +1 -1
  73. package/fesm2022/ngbase-adk-pagination.mjs +20 -20
  74. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  75. package/fesm2022/ngbase-adk-popover.mjs +28 -28
  76. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  77. package/fesm2022/ngbase-adk-portal.mjs +14 -15
  78. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  79. package/fesm2022/ngbase-adk-progress.mjs +8 -8
  80. package/fesm2022/ngbase-adk-progress.mjs.map +1 -1
  81. package/fesm2022/ngbase-adk-radio.mjs +15 -15
  82. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  83. package/fesm2022/ngbase-adk-resizable.mjs +19 -20
  84. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  85. package/fesm2022/ngbase-adk-scroll-area.mjs +31 -31
  86. package/fesm2022/ngbase-adk-scroll-area.mjs.map +1 -1
  87. package/fesm2022/ngbase-adk-select.mjs +73 -75
  88. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  89. package/fesm2022/ngbase-adk-selectable.mjs +9 -9
  90. package/fesm2022/ngbase-adk-selectable.mjs.map +1 -1
  91. package/fesm2022/ngbase-adk-sheet.mjs +9 -7
  92. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -1
  93. package/fesm2022/ngbase-adk-sidenav.mjs +37 -37
  94. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  95. package/fesm2022/ngbase-adk-slider.mjs +26 -26
  96. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  97. package/fesm2022/ngbase-adk-sonner.mjs +11 -11
  98. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  99. package/fesm2022/ngbase-adk-stepper.mjs +28 -28
  100. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  101. package/fesm2022/ngbase-adk-switch.mjs +16 -16
  102. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  103. package/fesm2022/ngbase-adk-table.mjs +98 -78
  104. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  105. package/fesm2022/ngbase-adk-tabs.mjs +44 -44
  106. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  107. package/fesm2022/ngbase-adk-toggle-group.mjs +15 -15
  108. package/fesm2022/ngbase-adk-toggle-group.mjs.map +1 -1
  109. package/fesm2022/ngbase-adk-toggle.mjs +4 -4
  110. package/fesm2022/ngbase-adk-toggle.mjs.map +1 -1
  111. package/fesm2022/ngbase-adk-tooltip.mjs +15 -15
  112. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  113. package/fesm2022/ngbase-adk-tour.mjs +28 -28
  114. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  115. package/fesm2022/ngbase-adk-translate.mjs +13 -13
  116. package/fesm2022/ngbase-adk-translate.mjs.map +1 -1
  117. package/fesm2022/ngbase-adk-tree.mjs +27 -27
  118. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  119. package/fesm2022/ngbase-adk-utils.mjs +43 -20
  120. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  121. package/fesm2022/ngbase-adk-virtualizer.mjs +20 -20
  122. package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -1
  123. package/form-field/index.d.ts +95 -5
  124. package/hover-card/index.d.ts +21 -5
  125. package/icon/index.d.ts +28 -5
  126. package/index.d.ts +2 -5
  127. package/inline-edit/index.d.ts +53 -5
  128. package/jwt/index.d.ts +20 -5
  129. package/keys/index.d.ts +54 -5
  130. package/layout/index.d.ts +20 -5
  131. package/list/index.d.ts +34 -5
  132. package/mask/index.d.ts +33 -5
  133. package/menu/index.d.ts +145 -5
  134. package/network/index.d.ts +29 -5
  135. package/otp/index.d.ts +51 -5
  136. package/package.json +44 -44
  137. package/pagination/index.d.ts +35 -5
  138. package/popover/index.d.ts +212 -5
  139. package/portal/index.d.ts +113 -5
  140. package/progress/index.d.ts +17 -5
  141. package/radio/index.d.ts +45 -5
  142. package/resizable/index.d.ts +73 -5
  143. package/schematics/components/files/accordion/accordion.ts.template +2 -2
  144. package/schematics/components/files/autocomplete/autocomplete.ts.template +1 -0
  145. package/schematics/components/files/avatar/avatar.ts.template +12 -4
  146. package/schematics/components/files/button/button.ts.template +32 -13
  147. package/schematics/components/files/command/command.ts.template +10 -9
  148. package/schematics/components/files/datepicker/datepicker-llm.md.template +15 -2
  149. package/schematics/components/files/dialog/dialog.ts.template +9 -2
  150. package/schematics/components/files/drawer/drawer.ts.template +1 -1
  151. package/schematics/components/files/form-field/form-field.ts.template +10 -1
  152. package/schematics/components/files/form-field/input-style.directive.ts.template +1 -1
  153. package/schematics/components/files/icon/icon-llm.md.template +0 -1
  154. package/schematics/components/files/inline-edit/inline-edit.ts.template +2 -2
  155. package/schematics/components/files/otp/otp.ts.template +1 -1
  156. package/schematics/components/files/picasa/picasa-base.component.ts.template +1 -2
  157. package/schematics/components/files/picasa/picasa.component.ts.template +4 -4
  158. package/schematics/components/files/select/select.ts.template +5 -18
  159. package/schematics/components/files/sheet/sheet.ts.template +1 -1
  160. package/schematics/components/files/sidenav/sidenav-llm.md.template +0 -1
  161. package/schematics/components/files/spinner/spinner.ts.template +1 -29
  162. package/schematics/components/files/table/table-llm.md.template +41 -1
  163. package/schematics/components/files/table/table.ts.template +40 -5
  164. package/scroll-area/index.d.ts +60 -5
  165. package/select/index.d.ts +177 -5
  166. package/selectable/index.d.ts +32 -5
  167. package/sheet/index.d.ts +44 -5
  168. package/sidenav/index.d.ts +74 -5
  169. package/slider/index.d.ts +79 -5
  170. package/sonner/index.d.ts +50 -5
  171. package/stepper/index.d.ts +54 -5
  172. package/switch/index.d.ts +47 -5
  173. package/table/index.d.ts +143 -5
  174. package/tabs/index.d.ts +85 -5
  175. package/test/index.d.ts +81 -5
  176. package/toggle/index.d.ts +16 -5
  177. package/toggle-group/index.d.ts +39 -5
  178. package/tooltip/index.d.ts +60 -5
  179. package/tour/index.d.ts +70 -5
  180. package/translate/index.d.ts +58 -5
  181. package/tree/index.d.ts +95 -5
  182. package/utils/index.d.ts +82 -5
  183. package/virtualizer/index.d.ts +45 -5
  184. package/a11y/accessibility-group.d.ts +0 -46
  185. package/a11y/accessibility-item.d.ts +0 -49
  186. package/a11y/accessibility.service.d.ts +0 -17
  187. package/a11y/autofocus.d.ts +0 -18
  188. package/a11y/focus-trap.d.ts +0 -15
  189. package/a11y/public-api.d.ts +0 -4
  190. package/accordion/accordion-content.d.ts +0 -8
  191. package/accordion/accordion-group.d.ts +0 -10
  192. package/accordion/accordion-header.d.ts +0 -7
  193. package/accordion/accordion-item.d.ts +0 -16
  194. package/accordion/public-api.d.ts +0 -4
  195. package/autocomplete/autocomplete-input.d.ts +0 -19
  196. package/autocomplete/autocomplete.d.ts +0 -34
  197. package/autocomplete/public-api.d.ts +0 -2
  198. package/avatar/avatar.d.ts +0 -22
  199. package/avatar/public-api.d.ts +0 -1
  200. package/bidi/direction.service.d.ts +0 -14
  201. package/bidi/public-api.d.ts +0 -1
  202. package/breadcrumb/breadcrumb-link.d.ts +0 -7
  203. package/breadcrumb/breadcrumb-separator.d.ts +0 -6
  204. package/breadcrumb/breadcrumb.d.ts +0 -12
  205. package/breadcrumb/breadcrumbs.d.ts +0 -9
  206. package/breadcrumb/public-api.d.ts +0 -4
  207. package/cache/cache-config.d.ts +0 -22
  208. package/cache/cache.d.ts +0 -17
  209. package/cache/cache.interecptor.d.ts +0 -2
  210. package/cache/public-api.d.ts +0 -3
  211. package/carousel/carousel-item.d.ts +0 -7
  212. package/carousel/carousel-next.d.ts +0 -8
  213. package/carousel/carousel.d.ts +0 -61
  214. package/carousel/public-api.d.ts +0 -3
  215. package/checkbox/checkbox.d.ts +0 -30
  216. package/checkbox/public-api.d.ts +0 -1
  217. package/chip/chip-group.d.ts +0 -7
  218. package/chip/chip.d.ts +0 -19
  219. package/chip/public-api.d.ts +0 -2
  220. package/clipboard/clipboard.d.ts +0 -7
  221. package/clipboard/public-api.d.ts +0 -1
  222. package/collections/SelectionModel.d.ts +0 -19
  223. package/collections/public-api.d.ts +0 -1
  224. package/color-picker/color-input.d.ts +0 -16
  225. package/color-picker/color-picker-trigger.d.ts +0 -30
  226. package/color-picker/color-picker.d.ts +0 -72
  227. package/color-picker/public-api.d.ts +0 -3
  228. package/color-picker/utils.d.ts +0 -21
  229. package/cookies/cookie.service.d.ts +0 -32
  230. package/cookies/public-api.d.ts +0 -1
  231. package/datepicker/calendar.d.ts +0 -121
  232. package/datepicker/datepicker-trigger.d.ts +0 -66
  233. package/datepicker/datepicker.d.ts +0 -55
  234. package/datepicker/native-date-adapter.d.ts +0 -33
  235. package/datepicker/public-api.d.ts +0 -5
  236. package/datepicker/time.d.ts +0 -42
  237. package/dialog/dialog.animation.d.ts +0 -3
  238. package/dialog/dialog.d.ts +0 -49
  239. package/dialog/dialog.service.d.ts +0 -7
  240. package/dialog/public-api.d.ts +0 -3
  241. package/drag/drag-drop.d.ts +0 -37
  242. package/drag/drag-move.d.ts +0 -17
  243. package/drag/drag.d.ts +0 -52
  244. package/drag/public-api.d.ts +0 -3
  245. package/form-field/auto-height.d.ts +0 -9
  246. package/form-field/error.d.ts +0 -18
  247. package/form-field/form-field.d.ts +0 -14
  248. package/form-field/input.d.ts +0 -16
  249. package/form-field/label.d.ts +0 -7
  250. package/form-field/public-api.d.ts +0 -5
  251. package/hover-card/hover-card.d.ts +0 -18
  252. package/hover-card/public-api.d.ts +0 -1
  253. package/icon/icon.d.ts +0 -12
  254. package/icon/icon.service.d.ts +0 -12
  255. package/icon/public-api.d.ts +0 -2
  256. package/inline-edit/inline-edit.d.ts +0 -47
  257. package/inline-edit/public-api.d.ts +0 -1
  258. package/jwt/jwt.service.d.ts +0 -27
  259. package/jwt/public-api.d.ts +0 -1
  260. package/keys/keys.service.d.ts +0 -13
  261. package/keys/public-api.d.ts +0 -2
  262. package/keys/shortcuts.service.d.ts +0 -38
  263. package/layout/layout.d.ts +0 -16
  264. package/layout/public-api.d.ts +0 -1
  265. package/list/list.d.ts +0 -20
  266. package/list/list.directive.d.ts +0 -12
  267. package/list/public-api.d.ts +0 -2
  268. package/mask/mask-pipe.d.ts +0 -7
  269. package/mask/mask.d.ts +0 -24
  270. package/mask/public-api.d.ts +0 -2
  271. package/menu/context-menu.d.ts +0 -21
  272. package/menu/mention.d.ts +0 -18
  273. package/menu/menu-trigger.d.ts +0 -34
  274. package/menu/menu.d.ts +0 -58
  275. package/menu/navigation-menu.d.ts +0 -19
  276. package/menu/public-api.d.ts +0 -5
  277. package/network/network.interceptor.d.ts +0 -6
  278. package/network/network.service.d.ts +0 -18
  279. package/network/public-api.d.ts +0 -2
  280. package/otp/otp.d.ts +0 -48
  281. package/otp/public-api.d.ts +0 -1
  282. package/pagination/pagination.d.ts +0 -32
  283. package/pagination/public-api.d.ts +0 -1
  284. package/popover/base-popover.service.d.ts +0 -16
  285. package/popover/popover-arrow.ng.d.ts +0 -34
  286. package/popover/popover-trigger.d.ts +0 -21
  287. package/popover/popover.d.ts +0 -60
  288. package/popover/popover.service.d.ts +0 -43
  289. package/popover/public-api.d.ts +0 -6
  290. package/popover/utils.d.ts +0 -69
  291. package/portal/dialog-ref.d.ts +0 -70
  292. package/portal/portal-base.service.d.ts +0 -19
  293. package/portal/portal-close.directive.d.ts +0 -9
  294. package/portal/portal.component.d.ts +0 -7
  295. package/portal/portal.service.d.ts +0 -16
  296. package/portal/public-api.d.ts +0 -5
  297. package/progress/progress.d.ts +0 -13
  298. package/progress/public-api.d.ts +0 -1
  299. package/public-api.d.ts +0 -2
  300. package/radio/public-api.d.ts +0 -2
  301. package/radio/radio-group.d.ts +0 -19
  302. package/radio/radio.d.ts +0 -26
  303. package/resizable/public-api.d.ts +0 -2
  304. package/resizable/resizable-group.d.ts +0 -22
  305. package/resizable/resizable.d.ts +0 -50
  306. package/scroll-area/public-api.d.ts +0 -1
  307. package/scroll-area/scroll-area.d.ts +0 -56
  308. package/select/list-selection.d.ts +0 -7
  309. package/select/option-group.d.ts +0 -7
  310. package/select/option.d.ts +0 -25
  311. package/select/public-api.d.ts +0 -6
  312. package/select/select-base.d.ts +0 -66
  313. package/select/select-input.d.ts +0 -23
  314. package/select/select.d.ts +0 -53
  315. package/selectable/public-api.d.ts +0 -2
  316. package/selectable/selectable-item.d.ts +0 -12
  317. package/selectable/selectable.d.ts +0 -19
  318. package/sheet/public-api.d.ts +0 -2
  319. package/sheet/sheet.d.ts +0 -26
  320. package/sheet/sheet.service.d.ts +0 -13
  321. package/sidenav/public-api.d.ts +0 -3
  322. package/sidenav/sidenav-header.d.ts +0 -31
  323. package/sidenav/sidenav.d.ts +0 -23
  324. package/sidenav/sidenav.service.d.ts +0 -18
  325. package/slider/public-api.d.ts +0 -1
  326. package/slider/slider.d.ts +0 -76
  327. package/sonner/public-api.d.ts +0 -2
  328. package/sonner/sonner.d.ts +0 -25
  329. package/sonner/sonner.service.d.ts +0 -21
  330. package/stepper/animation.d.ts +0 -1
  331. package/stepper/public-api.d.ts +0 -3
  332. package/stepper/step.d.ts +0 -24
  333. package/stepper/stepper.d.ts +0 -26
  334. package/switch/public-api.d.ts +0 -1
  335. package/switch/switch.d.ts +0 -44
  336. package/table/body-cell.d.ts +0 -11
  337. package/table/body-row.d.ts +0 -25
  338. package/table/column.d.ts +0 -10
  339. package/table/head-cell.d.ts +0 -12
  340. package/table/head-row.d.ts +0 -24
  341. package/table/public-api.d.ts +0 -8
  342. package/table/sort.d.ts +0 -40
  343. package/table/table.d.ts +0 -38
  344. package/tabs/public-api.d.ts +0 -2
  345. package/tabs/tab-group.d.ts +0 -52
  346. package/tabs/tab.d.ts +0 -31
  347. package/test/public-api.d.ts +0 -1
  348. package/test/utils.d.ts +0 -78
  349. package/toggle/public-api.d.ts +0 -1
  350. package/toggle/toggle.d.ts +0 -13
  351. package/toggle-group/public-api.d.ts +0 -2
  352. package/toggle-group/toggle-group.d.ts +0 -25
  353. package/toggle-group/toggle-item.d.ts +0 -14
  354. package/tooltip/public-api.d.ts +0 -2
  355. package/tooltip/tooltip.d.ts +0 -24
  356. package/tooltip/tooltip.directive.d.ts +0 -34
  357. package/tooltip/tooltip.service.d.ts +0 -28
  358. package/tour/animation.d.ts +0 -2
  359. package/tour/public-api.d.ts +0 -5
  360. package/tour/tour-base.d.ts +0 -21
  361. package/tour/tour-step.d.ts +0 -11
  362. package/tour/tour.d.ts +0 -9
  363. package/tour/tour.service.d.ts +0 -29
  364. package/translate/config.d.ts +0 -16
  365. package/translate/public-api.d.ts +0 -3
  366. package/translate/translate.d.ts +0 -11
  367. package/translate/translate.service.d.ts +0 -31
  368. package/tree/public-api.d.ts +0 -3
  369. package/tree/tree-node.d.ts +0 -28
  370. package/tree/tree-toggle.d.ts +0 -16
  371. package/tree/tree.d.ts +0 -55
  372. package/utils/animation.d.ts +0 -3
  373. package/utils/disposals.d.ts +0 -7
  374. package/utils/number-only.d.ts +0 -22
  375. package/utils/public-api.d.ts +0 -6
  376. package/utils/range.pipe.d.ts +0 -7
  377. package/utils/ssr.d.ts +0 -2
  378. package/utils/utils.d.ts +0 -28
  379. package/virtualizer/public-api.d.ts +0 -1
  380. package/virtualizer/virtualizer.d.ts +0 -42
@@ -6,25 +6,25 @@ import { uniqueId, provideValueAccessor } from '@ngbase/adk/utils';
6
6
 
7
7
  class NgbFormField {
8
8
  constructor() {
9
- this._control = contentChild(NgControl, { descendants: true });
9
+ this._control = contentChild(NgControl, ...(ngDevMode ? [{ debugName: "_control", descendants: true }] : [{ descendants: true }]));
10
10
  this._id = uniqueId();
11
11
  // we need to forwardRef the error component to avoid circular dependency
12
12
  this.status = statusChange(this._control);
13
- this._invalid = computed(() => this.status() === 'INVALID' && this._control()?.touched);
14
- this.errors = contentChildren(forwardRef(() => NgbInputError));
15
- this.hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));
13
+ this._invalid = computed(() => this.status() === 'INVALID' && this._control()?.touched, ...(ngDevMode ? [{ debugName: "_invalid" }] : []));
14
+ this.errors = contentChildren(forwardRef(() => NgbInputError), ...(ngDevMode ? [{ debugName: "errors" }] : []));
15
+ this.hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()), ...(ngDevMode ? [{ debugName: "hasErrors" }] : []));
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbFormField, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbFormField, isStandalone: true, selector: "ngb-form-field, [ngbFormField]", queries: [{ propertyName: "_control", first: true, predicate: NgControl, descendants: true, isSignal: true }, { propertyName: "errors", predicate: i0.forwardRef(() => NgbInputError), isSignal: true }], ngImport: i0 }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbFormField, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.0", type: NgbFormField, isStandalone: true, selector: "ngb-form-field, [ngbFormField]", queries: [{ propertyName: "_control", first: true, predicate: NgControl, descendants: true, isSignal: true }, { propertyName: "errors", predicate: i0.forwardRef(() => NgbInputError), isSignal: true }], ngImport: i0 }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbFormField, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbFormField, decorators: [{
21
21
  type: Directive,
22
22
  args: [{
23
23
  selector: 'ngb-form-field, [ngbFormField]',
24
24
  }]
25
25
  }] });
26
26
  function statusChange(sControl) {
27
- const statusChanges = signal(null, { equal: () => false });
27
+ const statusChanges = signal(null, ...(ngDevMode ? [{ debugName: "statusChanges", equal: () => false }] : [{ equal: () => false }]));
28
28
  effect(cleanup => {
29
29
  const control = sControl();
30
30
  if (control) {
@@ -43,9 +43,9 @@ class NgbInputError {
43
43
  /* the input can have comma separated error names like
44
44
  * 'required' or '!required && minlength'
45
45
  */
46
- this.ngbError = input.required();
47
- this.invalid = input();
48
- this.animate = signal(false);
46
+ this.ngbError = input.required(...(ngDevMode ? [{ debugName: "ngbError" }] : []));
47
+ this.invalid = input(...(ngDevMode ? [undefined, { debugName: "invalid" }] : []));
48
+ this.animate = signal(false, ...(ngDevMode ? [{ debugName: "animate" }] : []));
49
49
  this.errorNames = computed(() => {
50
50
  const names = (this.ngbError() ?? '').split('&&');
51
51
  return names.reduce((acc, n) => {
@@ -56,7 +56,7 @@ class NgbInputError {
56
56
  }
57
57
  return acc;
58
58
  }, []);
59
- });
59
+ }, ...(ngDevMode ? [{ debugName: "errorNames" }] : []));
60
60
  this.isFieldInvalid = computed(() => {
61
61
  const control = this.formField._control();
62
62
  const status = this.formField.status();
@@ -64,15 +64,15 @@ class NgbInputError {
64
64
  return (status === 'INVALID' &&
65
65
  control?.touched &&
66
66
  names.every(n => !!control.errors?.[n.name] !== n.negated));
67
- });
67
+ }, ...(ngDevMode ? [{ debugName: "isFieldInvalid" }] : []));
68
68
  this.isInvalid = computed(() => {
69
69
  return this.invalid() ?? this.isFieldInvalid();
70
- });
70
+ }, ...(ngDevMode ? [{ debugName: "isInvalid" }] : []));
71
71
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbInputError, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbInputError, isStandalone: true, selector: "[ngbError]", inputs: { ngbError: { classPropertyName: "ngbError", publicName: "ngbError", isSignal: true, isRequired: true, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "hidden": "!animate() && !isInvalid()" } }, ngImport: i0 }); }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbInputError, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbInputError, isStandalone: true, selector: "[ngbError]", inputs: { ngbError: { classPropertyName: "ngbError", publicName: "ngbError", isSignal: true, isRequired: true, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "hidden": "!animate() && !isInvalid()" } }, ngImport: i0 }); }
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbInputError, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbInputError, decorators: [{
76
76
  type: Directive,
77
77
  args: [{
78
78
  selector: '[ngbError]',
@@ -100,9 +100,13 @@ const toggleDiv = trigger('toggleDiv', [
100
100
  class InputBase {
101
101
  constructor() {
102
102
  this.formField = inject(NgbFormField, { optional: true });
103
- this.value = model('');
103
+ this.value = model('', ...(ngDevMode ? [{ debugName: "value" }] : []));
104
104
  this.id = this.formField?._id ?? uniqueId();
105
105
  }
106
+ setInputValue(ev) {
107
+ const value = ev.target.value;
108
+ this.setValue(value, true);
109
+ }
106
110
  setValue(value, fromInput = false) {
107
111
  this.value.set(value);
108
112
  if (fromInput) {
@@ -119,19 +123,19 @@ class InputBase {
119
123
  registerOnTouched(fn) {
120
124
  this.onTouched = fn;
121
125
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: InputBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
123
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: InputBase, isStandalone: true, selector: "[ngbInputBase]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { attributes: { "role": "textbox" }, listeners: { "input": "setValue($event.target.value, true)" }, properties: { "attr.id": "id", "value": "value()" } }, providers: [provideValueAccessor(InputBase)], ngImport: i0 }); }
126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: InputBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
127
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: InputBase, isStandalone: true, selector: "input[ngbInputBase]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { attributes: { "role": "textbox" }, listeners: { "input": "setInputValue($event)" }, properties: { "attr.id": "id", "value": "value()" } }, providers: [provideValueAccessor(InputBase)], ngImport: i0 }); }
124
128
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: InputBase, decorators: [{
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: InputBase, decorators: [{
126
130
  type: Directive,
127
131
  args: [{
128
- selector: '[ngbInputBase]',
132
+ selector: 'input[ngbInputBase]',
129
133
  providers: [provideValueAccessor(InputBase)],
130
134
  host: {
131
135
  role: 'textbox',
132
136
  '[attr.id]': 'id',
133
137
  '[value]': 'value()',
134
- '(input)': 'setValue($event.target.value, true)',
138
+ '(input)': 'setInputValue($event)',
135
139
  },
136
140
  }]
137
141
  }] });
@@ -140,6 +144,8 @@ class AutoHeight {
140
144
  constructor() {
141
145
  this.el = inject(ElementRef);
142
146
  this.model = inject(NgControl, { optional: true });
147
+ this.ngbInput = inject(InputBase, { optional: true });
148
+ this.maxHeight = input(...(ngDevMode ? [undefined, { debugName: "maxHeight" }] : []));
143
149
  // Disable textarea resizing
144
150
  this.el.nativeElement.style.resize = 'none';
145
151
  const injector = inject(Injector);
@@ -166,18 +172,29 @@ class AutoHeight {
166
172
  ro.observe(this.el.nativeElement);
167
173
  cleanup(() => ro.disconnect());
168
174
  });
175
+ effect(() => {
176
+ const _ = this.ngbInput?.value();
177
+ this.update();
178
+ });
169
179
  }
170
180
  update() {
171
181
  const el = this.el.nativeElement;
172
182
  el.style.height = 'auto';
173
183
  // also we need to consider the border so we need to calculate the border using height
174
184
  const borderHeight = el.offsetHeight - el.clientHeight;
175
- el.style.height = el.scrollHeight + borderHeight + 'px';
185
+ const height = el.scrollHeight + borderHeight;
186
+ const maxHeight = this.maxHeight();
187
+ if (maxHeight) {
188
+ el.style.height = Math.min(height, maxHeight) + 'px';
189
+ }
190
+ else {
191
+ el.style.height = height + 'px';
192
+ }
176
193
  }
177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AutoHeight, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
178
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: AutoHeight, isStandalone: true, selector: "textarea[ngbAutoHeight]", ngImport: i0 }); }
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AutoHeight, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
195
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: AutoHeight, isStandalone: true, selector: "textarea[ngbAutoHeight]", inputs: { maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
179
196
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AutoHeight, decorators: [{
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AutoHeight, decorators: [{
181
198
  type: Directive,
182
199
  args: [{
183
200
  selector: 'textarea[ngbAutoHeight]',
@@ -189,10 +206,10 @@ class NgbLabel {
189
206
  this.formField = inject(NgbFormField);
190
207
  this.id = this.formField._id;
191
208
  }
192
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
193
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbLabel, isStandalone: true, selector: "[ngbLabel]", host: { properties: { "attr.for": "id" } }, ngImport: i0 }); }
209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
210
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: NgbLabel, isStandalone: true, selector: "[ngbLabel]", host: { properties: { "attr.for": "id" } }, ngImport: i0 }); }
194
211
  }
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbLabel, decorators: [{
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbLabel, decorators: [{
196
213
  type: Directive,
197
214
  args: [{
198
215
  selector: '[ngbLabel]',
@@ -202,9 +219,167 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
202
219
  }]
203
220
  }] });
204
221
 
222
+ class NumberFormat {
223
+ constructor() {
224
+ // Input signals with default values
225
+ this.el = inject(ElementRef);
226
+ this.decimals = input(2, ...(ngDevMode ? [{ debugName: "decimals" }] : []));
227
+ this.decimalSeparator = input('.', ...(ngDevMode ? [{ debugName: "decimalSeparator" }] : []));
228
+ this.thousandSeparator = input(',', ...(ngDevMode ? [{ debugName: "thousandSeparator" }] : []));
229
+ // Private members
230
+ this.onChange = (_) => { };
231
+ this.onTouched = () => { };
232
+ this.rawValue = '';
233
+ this.specialKeys = [
234
+ 'Backspace',
235
+ 'Tab',
236
+ 'End',
237
+ 'Home',
238
+ 'ArrowLeft',
239
+ 'ArrowRight',
240
+ 'Delete',
241
+ ];
242
+ }
243
+ // Handles input changes
244
+ onInput(ev) {
245
+ const value = ev.target.value.toString();
246
+ const position = this.el.nativeElement.selectionStart;
247
+ const cleanedValue = this.cleanValue(value);
248
+ if (this.isValidNumber(cleanedValue)) {
249
+ this.rawValue = cleanedValue;
250
+ this.formatDisplayValue(cleanedValue);
251
+ this.onChange(this.rawValue);
252
+ this.onTouched();
253
+ this.updateCursorPosition(value, position ?? 0);
254
+ }
255
+ }
256
+ // Handles keydown events to validate input
257
+ onKeyDown(event) {
258
+ if (this.specialKeys.includes(event.key))
259
+ return;
260
+ const value = this.el.nativeElement.value;
261
+ const position = this.el.nativeElement.selectionStart;
262
+ // Handle decimal separator
263
+ if (event.key === this.decimalSeparator()) {
264
+ if (value.includes(this.decimalSeparator())) {
265
+ event.preventDefault();
266
+ }
267
+ return;
268
+ }
269
+ // Only allow digits
270
+ if (!/^\d$/.test(event.key)) {
271
+ event.preventDefault();
272
+ return;
273
+ }
274
+ // Check decimal digits limit
275
+ if (this.isDecimalPartFull(value, position ?? 0)) {
276
+ event.preventDefault();
277
+ }
278
+ }
279
+ // Handle blur event
280
+ onBlur() {
281
+ if (this.rawValue) {
282
+ this.formatDisplayValue(this.rawValue);
283
+ }
284
+ this.onTouched();
285
+ }
286
+ // ControlValueAccessor implementation
287
+ writeValue(value) {
288
+ if (value) {
289
+ const cleanValue = this.cleanValue(value);
290
+ this.rawValue = cleanValue;
291
+ this.formatDisplayValue(cleanValue);
292
+ }
293
+ else {
294
+ this.reset();
295
+ }
296
+ }
297
+ reset() {
298
+ this.el.nativeElement.value = '';
299
+ this.rawValue = '';
300
+ }
301
+ registerOnChange(fn) {
302
+ this.onChange = fn;
303
+ }
304
+ registerOnTouched(fn) {
305
+ this.onTouched = fn;
306
+ }
307
+ setDisabledState(isDisabled) {
308
+ this.el.nativeElement.disabled = isDisabled;
309
+ }
310
+ // Private helper methods
311
+ cleanValue(value) {
312
+ return value
313
+ .toString()
314
+ .replace(new RegExp(`[^\\d${this.escapeRegExp(this.decimalSeparator())}]`, 'g'), '');
315
+ }
316
+ isValidNumber(value) {
317
+ const parts = value.split(this.decimalSeparator());
318
+ return parts.length <= 2 && parts.every(part => /^\d*$/.test(part));
319
+ }
320
+ formatDisplayValue(value) {
321
+ if (!value) {
322
+ this.reset();
323
+ return;
324
+ }
325
+ const parts = value.split(this.decimalSeparator());
326
+ let integerPart = parts[0]
327
+ .replace(/^0+(?=\d)/, '')
328
+ .replace(/\B(?=(\d{3})+(?!\d))/g, this.thousandSeparator());
329
+ const decimalPart = parts.length > 1 ? parts[1].substring(0, this.decimals()) : undefined;
330
+ this.el.nativeElement.value =
331
+ decimalPart !== undefined
332
+ ? `${integerPart}${this.decimalSeparator()}${decimalPart}`
333
+ : integerPart;
334
+ }
335
+ updateCursorPosition(originalValue, originalPosition) {
336
+ setTimeout(() => {
337
+ const el = this.el.nativeElement;
338
+ if (originalPosition === originalValue.length) {
339
+ // If cursor was at the end, keep it at the end
340
+ el.setSelectionRange(el.value.length, el.value.length);
341
+ return;
342
+ }
343
+ // Calculate new cursor position based on thousand separators
344
+ const oldSeparatorCount = this.countSeparators(originalValue.substring(0, originalPosition));
345
+ const newValueUpToOldPos = el.value.substring(0, originalPosition + 1);
346
+ const newSeparatorCount = this.countSeparators(newValueUpToOldPos);
347
+ const newPosition = originalPosition + (newSeparatorCount - oldSeparatorCount);
348
+ el.setSelectionRange(newPosition, newPosition);
349
+ }, 0);
350
+ }
351
+ countSeparators(value) {
352
+ const regex = new RegExp(this.escapeRegExp(this.thousandSeparator()), 'g');
353
+ return (value.match(regex) || []).length;
354
+ }
355
+ isDecimalPartFull(value, position) {
356
+ const decimalPos = value.indexOf(this.decimalSeparator());
357
+ return (decimalPos !== -1 &&
358
+ position > decimalPos &&
359
+ value.substring(decimalPos + 1).length >= this.decimals());
360
+ }
361
+ escapeRegExp(str) {
362
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
363
+ }
364
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NumberFormat, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
365
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NumberFormat, isStandalone: true, selector: "[numberFormat]", inputs: { decimals: { classPropertyName: "decimals", publicName: "decimals", isSignal: true, isRequired: false, transformFunction: null }, decimalSeparator: { classPropertyName: "decimalSeparator", publicName: "decimalSeparator", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onInput($event)", "blur": "onBlur()", "keydown": "onKeyDown($event)" } }, providers: [provideValueAccessor(NumberFormat)], ngImport: i0 }); }
366
+ }
367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NumberFormat, decorators: [{
368
+ type: Directive,
369
+ args: [{
370
+ selector: '[numberFormat]',
371
+ providers: [provideValueAccessor(NumberFormat)],
372
+ host: {
373
+ '(input)': 'onInput($event)',
374
+ '(blur)': 'onBlur()',
375
+ '(keydown)': 'onKeyDown($event)',
376
+ },
377
+ }]
378
+ }] });
379
+
205
380
  /**
206
381
  * Generated bundle index. Do not edit.
207
382
  */
208
383
 
209
- export { AutoHeight, InputBase, NgbFormField, NgbInputError, NgbLabel, markControlsTouched, toggleDiv };
384
+ export { AutoHeight, InputBase, NgbFormField, NgbInputError, NgbLabel, NumberFormat, markControlsTouched, toggleDiv };
210
385
  //# sourceMappingURL=ngbase-adk-form-field.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-form-field.mjs","sources":["../../../projects/adk/form-field/form-field.ts","../../../projects/adk/form-field/error.ts","../../../projects/adk/form-field/input.ts","../../../projects/adk/form-field/auto-height.ts","../../../projects/adk/form-field/label.ts","../../../projects/adk/form-field/ngbase-adk-form-field.ts"],"sourcesContent":["import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n signal,\n Signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbInputError } from './error';\n\n@Directive({\n selector: 'ngb-form-field, [ngbFormField]',\n})\nexport class NgbFormField {\n readonly _control = contentChild(NgControl, { descendants: true });\n readonly _id = uniqueId();\n\n // we need to forwardRef the error component to avoid circular dependency\n readonly status = statusChange(this._control);\n private readonly _invalid = computed(\n () => this.status() === 'INVALID' && this._control()?.touched,\n );\n\n readonly errors = contentChildren<NgbInputError>(forwardRef(() => NgbInputError));\n readonly hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));\n}\n\nfunction statusChange(sControl: Signal<NgControl | undefined>): Signal<string | null> {\n const statusChanges = signal<string | null>(null, { equal: () => false });\n effect(cleanup => {\n const control = sControl();\n if (control) {\n const sub = control.statusChanges?.subscribe(() => {\n statusChanges.set(control.status);\n });\n cleanup(() => sub?.unsubscribe());\n }\n });\n return statusChanges;\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { computed, Directive, inject, input, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbError]',\n host: {\n '[hidden]': '!animate() && !isInvalid()',\n },\n})\nexport class NgbInputError {\n private readonly formField = inject(NgbFormField);\n /* the input can have comma separated error names like\n * 'required' or '!required && minlength'\n */\n readonly ngbError = input.required<string>();\n readonly invalid = input<boolean>();\n readonly animate = signal(false);\n\n private readonly errorNames = computed(() => {\n const names = (this.ngbError() ?? '').split('&&');\n return names.reduce(\n (acc, n) => {\n const trimmed = n.trim();\n if (trimmed) {\n const negated = trimmed.startsWith('!');\n acc.push({ name: trimmed.slice(negated ? 1 : 0), negated });\n }\n return acc;\n },\n [] as { name: string; negated: boolean }[],\n );\n });\n\n readonly isFieldInvalid = computed(() => {\n const control = this.formField._control();\n const status = this.formField.status();\n const names = this.errorNames();\n\n return (\n status === 'INVALID' &&\n control?.touched &&\n names.every(n => !!control.errors?.[n.name] !== n.negated)\n );\n });\n\n readonly isInvalid = computed(() => {\n return this.invalid() ?? this.isFieldInvalid();\n });\n}\n\nexport function markControlsTouched(\n control: AbstractControl,\n options = { touched: true, dirty: false },\n) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(c => markControlsTouched(c, options));\n }\n if (options.dirty) control.markAsTouched();\n if (options.touched) control.markAsTouched();\n control.updateValueAndValidity();\n}\n\nexport const toggleDiv = trigger('toggleDiv', [\n state('hidden', style({ opacity: 0, height: '0px', visibility: 'hidden' })),\n state('visible', style({ opacity: 1, height: '*', visibility: 'visible' })),\n transition('hidden <=> visible', [animate('150ms ease-in-out')]),\n]);\n","import { Directive, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbInputBase]',\n providers: [provideValueAccessor(InputBase)],\n host: {\n role: 'textbox',\n '[attr.id]': 'id',\n '[value]': 'value()',\n '(input)': 'setValue($event.target.value, true)',\n },\n})\nexport class InputBase<T = unknown> implements ControlValueAccessor {\n readonly formField = inject(NgbFormField, { optional: true });\n readonly value = model<T>('' as any);\n\n readonly id = this.formField?._id ?? uniqueId();\n\n onChange?: (_: string) => void;\n onTouched?: () => void;\n\n setValue(value: any, fromInput = false): void {\n this.value.set(value);\n if (fromInput) {\n this.onChange?.(value);\n this.onTouched?.();\n }\n }\n\n writeValue(value: string): void {\n this.setValue(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: VoidFunction): void {\n this.onTouched = fn;\n }\n}\n","import { afterNextRender, Directive, effect, ElementRef, inject, Injector } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: 'textarea[ngbAutoHeight]',\n})\nexport class AutoHeight {\n private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private model = inject(NgControl, { optional: true });\n\n constructor() {\n // Disable textarea resizing\n this.el.nativeElement.style.resize = 'none';\n\n const injector = inject(Injector);\n effect(cleanup => {\n // required for updating the height for the initial value\n this.update();\n\n const sub = this.model?.valueChanges?.subscribe(v => {\n if (v === this.el.nativeElement.value) {\n this.update();\n } else {\n // Wait for Angular to update the DOM with the new value\n // Use a settimeout to wait for the next tick\n afterNextRender(() => this.update(), { injector });\n }\n });\n cleanup(() => sub?.unsubscribe());\n\n const ro = new ResizeObserver(entries => {\n for (let entry of entries) {\n this.update();\n }\n });\n\n // Observe one or multiple elements\n ro.observe(this.el.nativeElement);\n cleanup(() => ro.disconnect());\n });\n }\n\n private update() {\n const el = this.el.nativeElement;\n el.style.height = 'auto';\n // also we need to consider the border so we need to calculate the border using height\n const borderHeight = el.offsetHeight - el.clientHeight;\n el.style.height = el.scrollHeight + borderHeight + 'px';\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbLabel]',\n host: {\n '[attr.for]': 'id',\n },\n})\nexport class NgbLabel {\n private readonly formField = inject(NgbFormField);\n readonly id = this.formField._id;\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-form-field.mjs","sources":["../../../projects/adk/form-field/form-field.ts","../../../projects/adk/form-field/error.ts","../../../projects/adk/form-field/input.ts","../../../projects/adk/form-field/auto-height.ts","../../../projects/adk/form-field/label.ts","../../../projects/adk/form-field/currency-mask.ng.ts","../../../projects/adk/form-field/ngbase-adk-form-field.ts"],"sourcesContent":["import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n signal,\n Signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbInputError } from './error';\n\n@Directive({\n selector: 'ngb-form-field, [ngbFormField]',\n})\nexport class NgbFormField {\n readonly _control = contentChild(NgControl, { descendants: true });\n readonly _id = uniqueId();\n\n // we need to forwardRef the error component to avoid circular dependency\n readonly status = statusChange(this._control);\n private readonly _invalid = computed(\n () => this.status() === 'INVALID' && this._control()?.touched,\n );\n\n readonly errors = contentChildren<NgbInputError>(forwardRef(() => NgbInputError));\n readonly hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));\n}\n\nfunction statusChange(sControl: Signal<NgControl | undefined>): Signal<string | null> {\n const statusChanges = signal<string | null>(null, { equal: () => false });\n effect(cleanup => {\n const control = sControl();\n if (control) {\n const sub = control.statusChanges?.subscribe(() => {\n statusChanges.set(control.status);\n });\n cleanup(() => sub?.unsubscribe());\n }\n });\n return statusChanges;\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { computed, Directive, inject, input, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbError]',\n host: {\n '[hidden]': '!animate() && !isInvalid()',\n },\n})\nexport class NgbInputError {\n private readonly formField = inject(NgbFormField);\n /* the input can have comma separated error names like\n * 'required' or '!required && minlength'\n */\n readonly ngbError = input.required<string>();\n readonly invalid = input<boolean>();\n readonly animate = signal(false);\n\n private readonly errorNames = computed(() => {\n const names = (this.ngbError() ?? '').split('&&');\n return names.reduce(\n (acc, n) => {\n const trimmed = n.trim();\n if (trimmed) {\n const negated = trimmed.startsWith('!');\n acc.push({ name: trimmed.slice(negated ? 1 : 0), negated });\n }\n return acc;\n },\n [] as { name: string; negated: boolean }[],\n );\n });\n\n readonly isFieldInvalid = computed(() => {\n const control = this.formField._control();\n const status = this.formField.status();\n const names = this.errorNames();\n\n return (\n status === 'INVALID' &&\n control?.touched &&\n names.every(n => !!control.errors?.[n.name] !== n.negated)\n );\n });\n\n readonly isInvalid = computed(() => {\n return this.invalid() ?? this.isFieldInvalid();\n });\n}\n\nexport function markControlsTouched(\n control: AbstractControl,\n options = { touched: true, dirty: false },\n) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(c => markControlsTouched(c, options));\n }\n if (options.dirty) control.markAsTouched();\n if (options.touched) control.markAsTouched();\n control.updateValueAndValidity();\n}\n\nexport const toggleDiv = trigger('toggleDiv', [\n state('hidden', style({ opacity: 0, height: '0px', visibility: 'hidden' })),\n state('visible', style({ opacity: 1, height: '*', visibility: 'visible' })),\n transition('hidden <=> visible', [animate('150ms ease-in-out')]),\n]);\n","import { Directive, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: 'input[ngbInputBase]',\n providers: [provideValueAccessor(InputBase)],\n host: {\n role: 'textbox',\n '[attr.id]': 'id',\n '[value]': 'value()',\n '(input)': 'setInputValue($event)',\n },\n})\nexport class InputBase<T = unknown> implements ControlValueAccessor {\n readonly formField = inject(NgbFormField, { optional: true });\n readonly value = model<T>('' as any);\n\n readonly id = this.formField?._id ?? uniqueId();\n\n onChange?: (_: string) => void;\n onTouched?: () => void;\n\n protected setInputValue(ev: Event): void {\n const value = (ev.target as HTMLInputElement).value;\n this.setValue(value, true);\n }\n\n setValue(value: any, fromInput = false): void {\n this.value.set(value);\n if (fromInput) {\n this.onChange?.(value);\n this.onTouched?.();\n }\n }\n\n writeValue(value: string): void {\n this.setValue(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: VoidFunction): void {\n this.onTouched = fn;\n }\n}\n","import {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputBase } from './input';\n\n@Directive({\n selector: 'textarea[ngbAutoHeight]',\n})\nexport class AutoHeight {\n private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private model = inject(NgControl, { optional: true });\n private ngbInput = inject(InputBase, { optional: true });\n\n readonly maxHeight = input<number>();\n\n constructor() {\n // Disable textarea resizing\n this.el.nativeElement.style.resize = 'none';\n\n const injector = inject(Injector);\n effect(cleanup => {\n // required for updating the height for the initial value\n this.update();\n\n const sub = this.model?.valueChanges?.subscribe(v => {\n if (v === this.el.nativeElement.value) {\n this.update();\n } else {\n // Wait for Angular to update the DOM with the new value\n // Use a settimeout to wait for the next tick\n afterNextRender(() => this.update(), { injector });\n }\n });\n cleanup(() => sub?.unsubscribe());\n\n const ro = new ResizeObserver(entries => {\n for (let entry of entries) {\n this.update();\n }\n });\n\n // Observe one or multiple elements\n ro.observe(this.el.nativeElement);\n cleanup(() => ro.disconnect());\n });\n\n effect(() => {\n const _ = this.ngbInput?.value();\n this.update();\n });\n }\n\n private update() {\n const el = this.el.nativeElement;\n el.style.height = 'auto';\n // also we need to consider the border so we need to calculate the border using height\n const borderHeight = el.offsetHeight - el.clientHeight;\n const height = el.scrollHeight + borderHeight;\n const maxHeight = this.maxHeight();\n if (maxHeight) {\n el.style.height = Math.min(height, maxHeight) + 'px';\n } else {\n el.style.height = height + 'px';\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbLabel]',\n host: {\n '[attr.for]': 'id',\n },\n})\nexport class NgbLabel {\n private readonly formField = inject(NgbFormField);\n readonly id = this.formField._id;\n}\n","import { Directive, ElementRef, input, inject } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[numberFormat]',\n providers: [provideValueAccessor(NumberFormat)],\n host: {\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class NumberFormat implements ControlValueAccessor {\n // Input signals with default values\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n readonly decimals = input<number>(2);\n readonly decimalSeparator = input<string>('.');\n readonly thousandSeparator = input<string>(',');\n\n // Private members\n private onChange = (_: any) => {};\n private onTouched = () => {};\n private rawValue = '';\n\n private readonly specialKeys = [\n 'Backspace',\n 'Tab',\n 'End',\n 'Home',\n 'ArrowLeft',\n 'ArrowRight',\n 'Delete',\n ];\n\n // Handles input changes\n onInput(ev: Event) {\n const value = (ev.target as any).value.toString();\n const position = this.el.nativeElement.selectionStart;\n const cleanedValue = this.cleanValue(value);\n\n if (this.isValidNumber(cleanedValue)) {\n this.rawValue = cleanedValue;\n this.formatDisplayValue(cleanedValue);\n this.onChange(this.rawValue);\n this.onTouched();\n this.updateCursorPosition(value, position ?? 0);\n }\n }\n\n // Handles keydown events to validate input\n onKeyDown(event: KeyboardEvent) {\n if (this.specialKeys.includes(event.key)) return;\n\n const value = this.el.nativeElement.value;\n const position = this.el.nativeElement.selectionStart;\n\n // Handle decimal separator\n if (event.key === this.decimalSeparator()) {\n if (value.includes(this.decimalSeparator())) {\n event.preventDefault();\n }\n return;\n }\n\n // Only allow digits\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n\n // Check decimal digits limit\n if (this.isDecimalPartFull(value, position ?? 0)) {\n event.preventDefault();\n }\n }\n\n // Handle blur event\n onBlur() {\n if (this.rawValue) {\n this.formatDisplayValue(this.rawValue);\n }\n this.onTouched();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string) {\n if (value) {\n const cleanValue = this.cleanValue(value);\n this.rawValue = cleanValue;\n this.formatDisplayValue(cleanValue);\n } else {\n this.reset();\n }\n }\n\n private reset() {\n this.el.nativeElement.value = '';\n this.rawValue = '';\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.el.nativeElement.disabled = isDisabled;\n }\n\n // Private helper methods\n private cleanValue(value: string | number): string {\n return value\n .toString()\n .replace(new RegExp(`[^\\\\d${this.escapeRegExp(this.decimalSeparator())}]`, 'g'), '');\n }\n\n private isValidNumber(value: string): boolean {\n const parts = value.split(this.decimalSeparator());\n return parts.length <= 2 && parts.every(part => /^\\d*$/.test(part));\n }\n\n private formatDisplayValue(value: string) {\n if (!value) {\n this.reset();\n return;\n }\n\n const parts = value.split(this.decimalSeparator());\n let integerPart = parts[0]\n .replace(/^0+(?=\\d)/, '')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandSeparator());\n const decimalPart = parts.length > 1 ? parts[1].substring(0, this.decimals()) : undefined;\n\n this.el.nativeElement.value =\n decimalPart !== undefined\n ? `${integerPart}${this.decimalSeparator()}${decimalPart}`\n : integerPart;\n }\n\n private updateCursorPosition(originalValue: string, originalPosition: number) {\n setTimeout(() => {\n const el = this.el.nativeElement;\n if (originalPosition === originalValue.length) {\n // If cursor was at the end, keep it at the end\n el.setSelectionRange(el.value.length, el.value.length);\n return;\n }\n\n // Calculate new cursor position based on thousand separators\n const oldSeparatorCount = this.countSeparators(originalValue.substring(0, originalPosition));\n const newValueUpToOldPos = el.value.substring(0, originalPosition + 1);\n const newSeparatorCount = this.countSeparators(newValueUpToOldPos);\n\n const newPosition = originalPosition + (newSeparatorCount - oldSeparatorCount);\n el.setSelectionRange(newPosition, newPosition);\n }, 0);\n }\n\n private countSeparators(value: string): number {\n const regex = new RegExp(this.escapeRegExp(this.thousandSeparator()), 'g');\n return (value.match(regex) || []).length;\n }\n\n private isDecimalPartFull(value: string, position: number): boolean {\n const decimalPos = value.indexOf(this.decimalSeparator());\n return (\n decimalPos !== -1 &&\n position > decimalPos &&\n value.substring(decimalPos + 1).length >= this.decimals()\n );\n }\n\n private escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -6,9 +6,9 @@ class NgbHoverCard {
6
6
  constructor() {
7
7
  this.popoverPortal = ngbPopoverPortal();
8
8
  this.el = inject(ElementRef);
9
- this.ngbHoverCard = input.required();
10
- this.options = input();
11
- this.delay = input(400, { transform: numberAttribute });
9
+ this.ngbHoverCard = input.required(...(ngDevMode ? [{ debugName: "ngbHoverCard" }] : []));
10
+ this.options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
11
+ this.delay = input(400, ...(ngDevMode ? [{ debugName: "delay", transform: numberAttribute }] : [{ transform: numberAttribute }]));
12
12
  this.close = null;
13
13
  }
14
14
  open() {
@@ -52,10 +52,10 @@ class NgbHoverCard {
52
52
  this.outTimer = null;
53
53
  }, this.delay());
54
54
  }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbHoverCard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
56
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbHoverCard, isStandalone: true, selector: "[ngbHoverCard]", inputs: { ngbHoverCard: { classPropertyName: "ngbHoverCard", publicName: "ngbHoverCard", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "open()", "mouseleave": "closePopup()" } }, exportAs: ["ngbHoverCard"], ngImport: i0 }); }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbHoverCard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
56
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbHoverCard, isStandalone: true, selector: "[ngbHoverCard]", inputs: { ngbHoverCard: { classPropertyName: "ngbHoverCard", publicName: "ngbHoverCard", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "open()", "mouseleave": "closePopup()" } }, exportAs: ["ngbHoverCard"], ngImport: i0 }); }
57
57
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbHoverCard, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbHoverCard, decorators: [{
59
59
  type: Directive,
60
60
  args: [{
61
61
  selector: '[ngbHoverCard]',
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-hover-card.mjs","sources":["../../../projects/adk/hover-card/hover-card.ts","../../../projects/adk/hover-card/public-api.ts","../../../projects/adk/hover-card/ngbase-adk-hover-card.ts"],"sourcesContent":["import { Directive, ElementRef, TemplateRef, inject, input, numberAttribute } from '@angular/core';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { PopoverOptions, ngbPopoverPortal } from '@ngbase/adk/popover';\n\n@Directive({\n selector: '[ngbHoverCard]',\n exportAs: 'ngbHoverCard',\n host: {\n '(mouseenter)': 'open()',\n '(mouseleave)': 'closePopup()',\n },\n})\nexport class NgbHoverCard<T = any> {\n private popoverPortal = ngbPopoverPortal();\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbHoverCard = input.required<TemplateRef<T>>();\n readonly options = input<PopoverOptions>();\n readonly delay = input(400, { transform: numberAttribute });\n\n private close: DialogRef | null = null;\n private inTimer: any;\n private outTimer: any;\n\n open() {\n // if the user is hovering over the popover, we don't want to open a new one\n if (this.outTimer) {\n this.resetOut();\n return;\n }\n\n // we need to delay the opening of the popover to ensure that the user is hovering over the popover\n this.inTimer = setTimeout(() => {\n const options = this.options() ?? {};\n const { diaRef, events } = this.popoverPortal.open(this.ngbHoverCard(), {\n target: this.el.nativeElement,\n position: 'top',\n backdrop: false,\n ...options,\n });\n this.close = diaRef;\n events.subscribe(e => {\n if (e.type === 'mouseleave') {\n this.closePopup();\n } else {\n this.resetOut();\n }\n });\n }, this.delay());\n }\n\n private resetOut() {\n clearTimeout(this.outTimer);\n this.outTimer = null;\n }\n\n closePopup() {\n clearTimeout(this.inTimer);\n this.inTimer = null;\n if (!this.close) return;\n this.outTimer = setTimeout(() => {\n this.close?.close();\n this.close = null;\n this.outTimer = null;\n }, this.delay());\n }\n}\n","/*\n * Public API Surface of hover-card\n */\n\nexport * from './hover-card';\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-hover-card.mjs","sources":["../../../projects/adk/hover-card/hover-card.ts","../../../projects/adk/hover-card/public-api.ts","../../../projects/adk/hover-card/ngbase-adk-hover-card.ts"],"sourcesContent":["import { Directive, ElementRef, TemplateRef, inject, input, numberAttribute } from '@angular/core';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { PopoverOptions, ngbPopoverPortal } from '@ngbase/adk/popover';\n\n@Directive({\n selector: '[ngbHoverCard]',\n exportAs: 'ngbHoverCard',\n host: {\n '(mouseenter)': 'open()',\n '(mouseleave)': 'closePopup()',\n },\n})\nexport class NgbHoverCard<T = any> {\n private popoverPortal = ngbPopoverPortal();\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbHoverCard = input.required<TemplateRef<T>>();\n readonly options = input<PopoverOptions>();\n readonly delay = input(400, { transform: numberAttribute });\n\n private close: DialogRef | null = null;\n private inTimer: any;\n private outTimer: any;\n\n open() {\n // if the user is hovering over the popover, we don't want to open a new one\n if (this.outTimer) {\n this.resetOut();\n return;\n }\n\n // we need to delay the opening of the popover to ensure that the user is hovering over the popover\n this.inTimer = setTimeout(() => {\n const options = this.options() ?? {};\n const { diaRef, events } = this.popoverPortal.open(this.ngbHoverCard(), {\n target: this.el.nativeElement,\n position: 'top',\n backdrop: false,\n ...options,\n });\n this.close = diaRef;\n events.subscribe(e => {\n if (e.type === 'mouseleave') {\n this.closePopup();\n } else {\n this.resetOut();\n }\n });\n }, this.delay());\n }\n\n private resetOut() {\n clearTimeout(this.outTimer);\n this.outTimer = null;\n }\n\n closePopup() {\n clearTimeout(this.inTimer);\n this.inTimer = null;\n if (!this.close) return;\n this.outTimer = setTimeout(() => {\n this.close?.close();\n this.close = null;\n this.outTimer = null;\n }, this.delay());\n }\n}\n","/*\n * Public API Surface of hover-card\n */\n\nexport * from './hover-card';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -47,10 +47,10 @@ class IconService {
47
47
  }
48
48
  return pendingRequest;
49
49
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
51
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IconService, providedIn: 'root' }); }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
51
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: IconService, providedIn: 'root' }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IconService, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: IconService, decorators: [{
54
54
  type: Injectable,
55
55
  args: [{ providedIn: 'root' }]
56
56
  }] });
@@ -59,20 +59,20 @@ class NgbIcon {
59
59
  constructor() {
60
60
  this.service = inject(IconService);
61
61
  this.sanitizer = inject(DomSanitizer);
62
- this.name = input.required();
62
+ this.name = input.required(...(ngDevMode ? [{ debugName: "name" }] : []));
63
63
  this.icon = resource({
64
- request: this.name,
65
- loader: ({ request }) => this.service.getIcon(request),
64
+ params: this.name,
65
+ loader: ({ params: request }) => this.service.getIcon(request),
66
66
  });
67
67
  this.svg = computed(() => {
68
68
  const txt = this.icon.value() || '';
69
69
  return this.sanitizer.bypassSecurityTrustHtml(txt);
70
- });
70
+ }, ...(ngDevMode ? [{ debugName: "svg" }] : []));
71
71
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbIcon, isStandalone: true, selector: "[ngbIcon]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "innerHTML": "svg()" } }, ngImport: i0 }); }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbIcon, isStandalone: true, selector: "[ngbIcon]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "innerHTML": "svg()" } }, ngImport: i0 }); }
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbIcon, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbIcon, decorators: [{
76
76
  type: Directive,
77
77
  args: [{
78
78
  selector: '[ngbIcon]',
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-icon.mjs","sources":["../../../projects/adk/icon/icon.service.ts","../../../projects/adk/icon/icon.ts","../../../projects/adk/icon/ngbase-adk-icon.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\nexport type IconLoaderFn = (name: string) => Promise<string>;\n\nexport const ICON_LOADER = new InjectionToken<IconLoaderFn>('ICON_LOADER', {\n providedIn: 'root',\n factory: iconLoader,\n});\n\nfunction iconLoader(): IconLoaderFn {\n const http = inject(HttpClient, { optional: true });\n return async (name: string) => {\n try {\n if (http) {\n const icon = await firstValueFrom(\n http?.get(`/icons/${name}.svg`, { responseType: 'text' }),\n );\n return icon;\n }\n } catch {}\n return '';\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IconService {\n readonly loader = inject(ICON_LOADER);\n readonly icons = new Map<string, string>();\n private readonly pendingRequests = new Map<string, Promise<string>>();\n\n async getIcon(name: string): Promise<string> {\n const cachedIcon = this.icons.get(name);\n\n if (cachedIcon) {\n return cachedIcon;\n }\n\n let pendingRequest = this.pendingRequests.get(name);\n if (!pendingRequest) {\n pendingRequest = this.loader(name);\n this.pendingRequests.set(name, pendingRequest);\n\n try {\n const icon = await pendingRequest;\n this.icons.set(name, icon);\n return icon;\n } finally {\n this.pendingRequests.delete(name);\n }\n }\n\n return pendingRequest;\n }\n}\n","import { computed, Directive, inject, input, resource } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IconService } from './icon.service';\n\n@Directive({\n selector: '[ngbIcon]',\n host: {\n '[innerHTML]': 'svg()',\n },\n})\nexport class NgbIcon {\n readonly service = inject(IconService);\n readonly sanitizer = inject(DomSanitizer);\n\n readonly name = input.required<string>();\n\n private readonly icon = resource({\n request: this.name,\n loader: ({ request }) => this.service.getIcon(request),\n });\n\n readonly svg = computed(() => {\n const txt = this.icon.value() || '';\n return this.sanitizer.bypassSecurityTrustHtml(txt);\n });\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-icon.mjs","sources":["../../../projects/adk/icon/icon.service.ts","../../../projects/adk/icon/icon.ts","../../../projects/adk/icon/ngbase-adk-icon.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\nexport type IconLoaderFn = (name: string) => Promise<string>;\n\nexport const ICON_LOADER = new InjectionToken<IconLoaderFn>('ICON_LOADER', {\n providedIn: 'root',\n factory: iconLoader,\n});\n\nfunction iconLoader(): IconLoaderFn {\n const http = inject(HttpClient, { optional: true });\n return async (name: string) => {\n try {\n if (http) {\n const icon = await firstValueFrom(\n http?.get(`/icons/${name}.svg`, { responseType: 'text' }),\n );\n return icon;\n }\n } catch {}\n return '';\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IconService {\n readonly loader = inject(ICON_LOADER);\n readonly icons = new Map<string, string>();\n private readonly pendingRequests = new Map<string, Promise<string>>();\n\n async getIcon(name: string): Promise<string> {\n const cachedIcon = this.icons.get(name);\n\n if (cachedIcon) {\n return cachedIcon;\n }\n\n let pendingRequest = this.pendingRequests.get(name);\n if (!pendingRequest) {\n pendingRequest = this.loader(name);\n this.pendingRequests.set(name, pendingRequest);\n\n try {\n const icon = await pendingRequest;\n this.icons.set(name, icon);\n return icon;\n } finally {\n this.pendingRequests.delete(name);\n }\n }\n\n return pendingRequest;\n }\n}\n","import { computed, Directive, inject, input, resource } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IconService } from './icon.service';\n\n@Directive({\n selector: '[ngbIcon]',\n host: {\n '[innerHTML]': 'svg()',\n },\n})\nexport class NgbIcon {\n readonly service = inject(IconService);\n readonly sanitizer = inject(DomSanitizer);\n\n readonly name = input.required<string>();\n\n private readonly icon = resource({\n params: this.name,\n loader: ({ params: request }) => this.service.getIcon(request),\n });\n\n readonly svg = computed(() => {\n const txt = this.icon.value() || '';\n return this.sanitizer.bypassSecurityTrustHtml(txt);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}