@ngbase/adk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/README.md +57 -0
  2. package/a11y/accessibility-group.d.ts +49 -0
  3. package/a11y/accessibility-item.d.ts +49 -0
  4. package/a11y/accessibility.service.d.ts +17 -0
  5. package/a11y/autofocus.d.ts +12 -0
  6. package/a11y/focus-trap.d.ts +15 -0
  7. package/a11y/index.d.ts +5 -0
  8. package/a11y/public-api.d.ts +4 -0
  9. package/accordion/accordion-content.d.ts +8 -0
  10. package/accordion/accordion-group.d.ts +10 -0
  11. package/accordion/accordion-header.d.ts +7 -0
  12. package/accordion/accordion-item.d.ts +10 -0
  13. package/accordion/index.d.ts +5 -0
  14. package/accordion/public-api.d.ts +4 -0
  15. package/autocomplete/autocomplete-input.d.ts +21 -0
  16. package/autocomplete/autocomplete.d.ts +25 -0
  17. package/autocomplete/index.d.ts +5 -0
  18. package/autocomplete/public-api.d.ts +2 -0
  19. package/avatar/avatar.d.ts +22 -0
  20. package/avatar/index.d.ts +5 -0
  21. package/avatar/public-api.d.ts +1 -0
  22. package/bidi/direction.service.d.ts +14 -0
  23. package/bidi/index.d.ts +5 -0
  24. package/bidi/public-api.d.ts +1 -0
  25. package/breadcrumb/breadcrumb-link.d.ts +7 -0
  26. package/breadcrumb/breadcrumb-separator.d.ts +10 -0
  27. package/breadcrumb/breadcrumb.d.ts +12 -0
  28. package/breadcrumb/breadcrumbs.d.ts +7 -0
  29. package/breadcrumb/index.d.ts +5 -0
  30. package/breadcrumb/public-api.d.ts +4 -0
  31. package/cache/cache-config.d.ts +22 -0
  32. package/cache/cache.d.ts +17 -0
  33. package/cache/cache.interecptor.d.ts +2 -0
  34. package/cache/index.d.ts +5 -0
  35. package/cache/public-api.d.ts +3 -0
  36. package/carousel/carousel-item.d.ts +7 -0
  37. package/carousel/carousel-next.d.ts +8 -0
  38. package/carousel/carousel.d.ts +61 -0
  39. package/carousel/index.d.ts +5 -0
  40. package/carousel/public-api.d.ts +3 -0
  41. package/checkbox/checkbox.d.ts +22 -0
  42. package/checkbox/index.d.ts +5 -0
  43. package/checkbox/public-api.d.ts +1 -0
  44. package/chip/chip-group.d.ts +7 -0
  45. package/chip/chip.d.ts +19 -0
  46. package/chip/index.d.ts +5 -0
  47. package/chip/public-api.d.ts +2 -0
  48. package/clipboard/clipboard.d.ts +7 -0
  49. package/clipboard/index.d.ts +5 -0
  50. package/clipboard/public-api.d.ts +1 -0
  51. package/collections/SelectionModel.d.ts +14 -0
  52. package/collections/index.d.ts +5 -0
  53. package/collections/public-api.d.ts +1 -0
  54. package/color-picker/color-input.d.ts +16 -0
  55. package/color-picker/color-picker-trigger.d.ts +30 -0
  56. package/color-picker/color-picker.d.ts +72 -0
  57. package/color-picker/index.d.ts +5 -0
  58. package/color-picker/public-api.d.ts +3 -0
  59. package/color-picker/utils.d.ts +21 -0
  60. package/cookies/cookie.service.d.ts +32 -0
  61. package/cookies/index.d.ts +5 -0
  62. package/cookies/public-api.d.ts +1 -0
  63. package/datepicker/calendar.d.ts +121 -0
  64. package/datepicker/datepicker-trigger.d.ts +49 -0
  65. package/datepicker/datepicker.d.ts +54 -0
  66. package/datepicker/index.d.ts +5 -0
  67. package/datepicker/native-date-adapter.d.ts +33 -0
  68. package/datepicker/public-api.d.ts +5 -0
  69. package/datepicker/time.d.ts +42 -0
  70. package/dialog/dialog.animation.d.ts +3 -0
  71. package/dialog/dialog.d.ts +49 -0
  72. package/dialog/dialog.service.d.ts +7 -0
  73. package/dialog/index.d.ts +5 -0
  74. package/dialog/public-api.d.ts +3 -0
  75. package/drag/drag-drop.d.ts +37 -0
  76. package/drag/drag-move.d.ts +17 -0
  77. package/drag/drag.d.ts +53 -0
  78. package/drag/index.d.ts +5 -0
  79. package/drag/public-api.d.ts +3 -0
  80. package/fesm2022/ngbase-adk-a11y.mjs +617 -0
  81. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -0
  82. package/fesm2022/ngbase-adk-accordion.mjs +117 -0
  83. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -0
  84. package/fesm2022/ngbase-adk-autocomplete.mjs +150 -0
  85. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -0
  86. package/fesm2022/ngbase-adk-avatar.mjs +69 -0
  87. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -0
  88. package/fesm2022/ngbase-adk-bidi.mjs +42 -0
  89. package/fesm2022/ngbase-adk-bidi.mjs.map +1 -0
  90. package/fesm2022/ngbase-adk-breadcrumb.mjs +103 -0
  91. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -0
  92. package/fesm2022/ngbase-adk-cache.mjs +127 -0
  93. package/fesm2022/ngbase-adk-cache.mjs.map +1 -0
  94. package/fesm2022/ngbase-adk-carousel.mjs +337 -0
  95. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -0
  96. package/fesm2022/ngbase-adk-checkbox.mjs +78 -0
  97. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -0
  98. package/fesm2022/ngbase-adk-chip.mjs +60 -0
  99. package/fesm2022/ngbase-adk-chip.mjs.map +1 -0
  100. package/fesm2022/ngbase-adk-clipboard.mjs +41 -0
  101. package/fesm2022/ngbase-adk-clipboard.mjs.map +1 -0
  102. package/fesm2022/ngbase-adk-collections.mjs +39 -0
  103. package/fesm2022/ngbase-adk-collections.mjs.map +1 -0
  104. package/fesm2022/ngbase-adk-color-picker.mjs +580 -0
  105. package/fesm2022/ngbase-adk-color-picker.mjs.map +1 -0
  106. package/fesm2022/ngbase-adk-cookies.mjs +81 -0
  107. package/fesm2022/ngbase-adk-cookies.mjs.map +1 -0
  108. package/fesm2022/ngbase-adk-datepicker.mjs +1130 -0
  109. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -0
  110. package/fesm2022/ngbase-adk-dialog.mjs +223 -0
  111. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -0
  112. package/fesm2022/ngbase-adk-drag.mjs +406 -0
  113. package/fesm2022/ngbase-adk-drag.mjs.map +1 -0
  114. package/fesm2022/ngbase-adk-form-field.mjs +364 -0
  115. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -0
  116. package/fesm2022/ngbase-adk-hover-card.mjs +79 -0
  117. package/fesm2022/ngbase-adk-hover-card.mjs.map +1 -0
  118. package/fesm2022/ngbase-adk-icon.mjs +90 -0
  119. package/fesm2022/ngbase-adk-icon.mjs.map +1 -0
  120. package/fesm2022/ngbase-adk-inline-edit.mjs +127 -0
  121. package/fesm2022/ngbase-adk-inline-edit.mjs.map +1 -0
  122. package/fesm2022/ngbase-adk-jwt.mjs +90 -0
  123. package/fesm2022/ngbase-adk-jwt.mjs.map +1 -0
  124. package/fesm2022/ngbase-adk-keys.mjs +219 -0
  125. package/fesm2022/ngbase-adk-keys.mjs.map +1 -0
  126. package/fesm2022/ngbase-adk-layout.mjs +100 -0
  127. package/fesm2022/ngbase-adk-layout.mjs.map +1 -0
  128. package/fesm2022/ngbase-adk-list.mjs +110 -0
  129. package/fesm2022/ngbase-adk-list.mjs.map +1 -0
  130. package/fesm2022/ngbase-adk-mask.mjs +234 -0
  131. package/fesm2022/ngbase-adk-mask.mjs.map +1 -0
  132. package/fesm2022/ngbase-adk-menu.mjs +546 -0
  133. package/fesm2022/ngbase-adk-menu.mjs.map +1 -0
  134. package/fesm2022/ngbase-adk-network.mjs +90 -0
  135. package/fesm2022/ngbase-adk-network.mjs.map +1 -0
  136. package/fesm2022/ngbase-adk-pagination.mjs +187 -0
  137. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -0
  138. package/fesm2022/ngbase-adk-popover.mjs +953 -0
  139. package/fesm2022/ngbase-adk-popover.mjs.map +1 -0
  140. package/fesm2022/ngbase-adk-portal.mjs +279 -0
  141. package/fesm2022/ngbase-adk-portal.mjs.map +1 -0
  142. package/fesm2022/ngbase-adk-progress.mjs +57 -0
  143. package/fesm2022/ngbase-adk-progress.mjs.map +1 -0
  144. package/fesm2022/ngbase-adk-radio.mjs +129 -0
  145. package/fesm2022/ngbase-adk-radio.mjs.map +1 -0
  146. package/fesm2022/ngbase-adk-resizable.mjs +367 -0
  147. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -0
  148. package/fesm2022/ngbase-adk-scroll-area.mjs +232 -0
  149. package/fesm2022/ngbase-adk-scroll-area.mjs.map +1 -0
  150. package/fesm2022/ngbase-adk-select.mjs +599 -0
  151. package/fesm2022/ngbase-adk-select.mjs.map +1 -0
  152. package/fesm2022/ngbase-adk-selectable.mjs +79 -0
  153. package/fesm2022/ngbase-adk-selectable.mjs.map +1 -0
  154. package/fesm2022/ngbase-adk-sidenav.mjs +209 -0
  155. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -0
  156. package/fesm2022/ngbase-adk-slider.mjs +337 -0
  157. package/fesm2022/ngbase-adk-slider.mjs.map +1 -0
  158. package/fesm2022/ngbase-adk-sonner.mjs +176 -0
  159. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -0
  160. package/fesm2022/ngbase-adk-stepper.mjs +211 -0
  161. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -0
  162. package/fesm2022/ngbase-adk-switch.mjs +115 -0
  163. package/fesm2022/ngbase-adk-switch.mjs.map +1 -0
  164. package/fesm2022/ngbase-adk-table.mjs +348 -0
  165. package/fesm2022/ngbase-adk-table.mjs.map +1 -0
  166. package/fesm2022/ngbase-adk-tabs.mjs +386 -0
  167. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -0
  168. package/fesm2022/ngbase-adk-test.mjs +267 -0
  169. package/fesm2022/ngbase-adk-test.mjs.map +1 -0
  170. package/fesm2022/ngbase-adk-toggle-group.mjs +114 -0
  171. package/fesm2022/ngbase-adk-toggle-group.mjs.map +1 -0
  172. package/fesm2022/ngbase-adk-toggle.mjs +48 -0
  173. package/fesm2022/ngbase-adk-toggle.mjs.map +1 -0
  174. package/fesm2022/ngbase-adk-tooltip.mjs +237 -0
  175. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -0
  176. package/fesm2022/ngbase-adk-tour.mjs +312 -0
  177. package/fesm2022/ngbase-adk-tour.mjs.map +1 -0
  178. package/fesm2022/ngbase-adk-translate.mjs +162 -0
  179. package/fesm2022/ngbase-adk-translate.mjs.map +1 -0
  180. package/fesm2022/ngbase-adk-tree.mjs +301 -0
  181. package/fesm2022/ngbase-adk-tree.mjs.map +1 -0
  182. package/fesm2022/ngbase-adk-utils.mjs +228 -0
  183. package/fesm2022/ngbase-adk-utils.mjs.map +1 -0
  184. package/fesm2022/ngbase-adk-virtualizer.mjs +198 -0
  185. package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -0
  186. package/fesm2022/ngbase-adk.mjs +6 -0
  187. package/fesm2022/ngbase-adk.mjs.map +1 -0
  188. package/form-field/auto-height.d.ts +9 -0
  189. package/form-field/error.d.ts +18 -0
  190. package/form-field/form-field.d.ts +14 -0
  191. package/form-field/index.d.ts +5 -0
  192. package/form-field/input.d.ts +16 -0
  193. package/form-field/label.d.ts +7 -0
  194. package/form-field/otp.d.ts +48 -0
  195. package/form-field/public-api.d.ts +6 -0
  196. package/hover-card/hover-card.d.ts +18 -0
  197. package/hover-card/index.d.ts +5 -0
  198. package/hover-card/public-api.d.ts +1 -0
  199. package/icon/icon.d.ts +12 -0
  200. package/icon/icon.service.d.ts +12 -0
  201. package/icon/index.d.ts +5 -0
  202. package/icon/public-api.d.ts +2 -0
  203. package/index.d.ts +5 -0
  204. package/inline-edit/index.d.ts +5 -0
  205. package/inline-edit/inline-edit.d.ts +47 -0
  206. package/inline-edit/public-api.d.ts +1 -0
  207. package/jwt/index.d.ts +5 -0
  208. package/jwt/jwt.service.d.ts +27 -0
  209. package/jwt/public-api.d.ts +1 -0
  210. package/keys/index.d.ts +5 -0
  211. package/keys/keys.service.d.ts +13 -0
  212. package/keys/public-api.d.ts +2 -0
  213. package/keys/shortcuts.service.d.ts +38 -0
  214. package/layout/index.d.ts +5 -0
  215. package/layout/layout.d.ts +16 -0
  216. package/layout/public-api.d.ts +1 -0
  217. package/list/index.d.ts +5 -0
  218. package/list/list.d.ts +20 -0
  219. package/list/list.directive.d.ts +12 -0
  220. package/list/public-api.d.ts +2 -0
  221. package/mask/index.d.ts +5 -0
  222. package/mask/mask-pipe.d.ts +7 -0
  223. package/mask/mask.d.ts +25 -0
  224. package/mask/public-api.d.ts +2 -0
  225. package/menu/context-menu.d.ts +21 -0
  226. package/menu/index.d.ts +5 -0
  227. package/menu/mention.d.ts +18 -0
  228. package/menu/menu-trigger.d.ts +34 -0
  229. package/menu/menu.d.ts +52 -0
  230. package/menu/navigation-menu.d.ts +19 -0
  231. package/menu/public-api.d.ts +5 -0
  232. package/network/index.d.ts +5 -0
  233. package/network/network.interceptor.d.ts +6 -0
  234. package/network/network.service.d.ts +18 -0
  235. package/network/public-api.d.ts +2 -0
  236. package/package.json +247 -0
  237. package/pagination/index.d.ts +5 -0
  238. package/pagination/pagination.d.ts +28 -0
  239. package/pagination/public-api.d.ts +1 -0
  240. package/popover/base-popover.service.d.ts +16 -0
  241. package/popover/index.d.ts +5 -0
  242. package/popover/popover-trigger.d.ts +21 -0
  243. package/popover/popover.d.ts +50 -0
  244. package/popover/popover.service.d.ts +42 -0
  245. package/popover/public-api.d.ts +5 -0
  246. package/popover/utils.d.ts +85 -0
  247. package/portal/dialog-ref.d.ts +71 -0
  248. package/portal/index.d.ts +5 -0
  249. package/portal/portal-base.service.d.ts +19 -0
  250. package/portal/portal-close.directive.d.ts +8 -0
  251. package/portal/portal.component.d.ts +7 -0
  252. package/portal/portal.service.d.ts +16 -0
  253. package/portal/public-api.d.ts +5 -0
  254. package/progress/index.d.ts +5 -0
  255. package/progress/progress.d.ts +13 -0
  256. package/progress/public-api.d.ts +1 -0
  257. package/public-api.d.ts +2 -0
  258. package/radio/index.d.ts +5 -0
  259. package/radio/public-api.d.ts +2 -0
  260. package/radio/radio-group.d.ts +19 -0
  261. package/radio/radio.d.ts +22 -0
  262. package/resizable/index.d.ts +5 -0
  263. package/resizable/public-api.d.ts +2 -0
  264. package/resizable/resizable-group.d.ts +22 -0
  265. package/resizable/resizable.d.ts +50 -0
  266. package/scroll-area/index.d.ts +5 -0
  267. package/scroll-area/public-api.d.ts +1 -0
  268. package/scroll-area/scroll-area.d.ts +56 -0
  269. package/select/index.d.ts +5 -0
  270. package/select/list-selection.d.ts +7 -0
  271. package/select/option-group.d.ts +7 -0
  272. package/select/option.d.ts +25 -0
  273. package/select/public-api.d.ts +6 -0
  274. package/select/select-base.d.ts +64 -0
  275. package/select/select-input.d.ts +23 -0
  276. package/select/select.d.ts +50 -0
  277. package/selectable/index.d.ts +5 -0
  278. package/selectable/public-api.d.ts +2 -0
  279. package/selectable/selectable-item.d.ts +12 -0
  280. package/selectable/selectable.d.ts +19 -0
  281. package/sidenav/index.d.ts +5 -0
  282. package/sidenav/public-api.d.ts +3 -0
  283. package/sidenav/sidenav-header.d.ts +31 -0
  284. package/sidenav/sidenav.d.ts +23 -0
  285. package/sidenav/sidenav.service.d.ts +18 -0
  286. package/slider/index.d.ts +5 -0
  287. package/slider/public-api.d.ts +1 -0
  288. package/slider/slider.d.ts +73 -0
  289. package/sonner/index.d.ts +5 -0
  290. package/sonner/public-api.d.ts +2 -0
  291. package/sonner/sonner.d.ts +24 -0
  292. package/sonner/sonner.service.d.ts +21 -0
  293. package/stepper/animation.d.ts +1 -0
  294. package/stepper/index.d.ts +5 -0
  295. package/stepper/public-api.d.ts +3 -0
  296. package/stepper/step.d.ts +24 -0
  297. package/stepper/stepper.d.ts +26 -0
  298. package/switch/index.d.ts +5 -0
  299. package/switch/public-api.d.ts +1 -0
  300. package/switch/switch.d.ts +44 -0
  301. package/table/body-cell.d.ts +11 -0
  302. package/table/body-row.d.ts +21 -0
  303. package/table/column.d.ts +10 -0
  304. package/table/head-cell.d.ts +12 -0
  305. package/table/head-row.d.ts +21 -0
  306. package/table/index.d.ts +5 -0
  307. package/table/public-api.d.ts +8 -0
  308. package/table/table.d.ts +32 -0
  309. package/tabs/index.d.ts +5 -0
  310. package/tabs/public-api.d.ts +2 -0
  311. package/tabs/tab-group.d.ts +52 -0
  312. package/tabs/tab.d.ts +31 -0
  313. package/test/index.d.ts +5 -0
  314. package/test/public-api.d.ts +1 -0
  315. package/test/utils.d.ts +62 -0
  316. package/toggle/index.d.ts +5 -0
  317. package/toggle/public-api.d.ts +1 -0
  318. package/toggle/toggle.d.ts +13 -0
  319. package/toggle-group/index.d.ts +5 -0
  320. package/toggle-group/public-api.d.ts +2 -0
  321. package/toggle-group/toggle-group.d.ts +25 -0
  322. package/toggle-group/toggle-item.d.ts +14 -0
  323. package/tooltip/index.d.ts +5 -0
  324. package/tooltip/public-api.d.ts +2 -0
  325. package/tooltip/tooltip.d.ts +20 -0
  326. package/tooltip/tooltip.directive.d.ts +34 -0
  327. package/tooltip/tooltip.service.d.ts +26 -0
  328. package/tour/animation.d.ts +2 -0
  329. package/tour/index.d.ts +5 -0
  330. package/tour/public-api.d.ts +5 -0
  331. package/tour/tour-base.d.ts +21 -0
  332. package/tour/tour-step.d.ts +11 -0
  333. package/tour/tour.d.ts +9 -0
  334. package/tour/tour.service.d.ts +30 -0
  335. package/translate/config.d.ts +16 -0
  336. package/translate/index.d.ts +5 -0
  337. package/translate/public-api.d.ts +3 -0
  338. package/translate/translate.d.ts +11 -0
  339. package/translate/translate.service.d.ts +31 -0
  340. package/tree/index.d.ts +5 -0
  341. package/tree/public-api.d.ts +3 -0
  342. package/tree/tree-node.d.ts +28 -0
  343. package/tree/tree-toggle.d.ts +16 -0
  344. package/tree/tree.d.ts +55 -0
  345. package/utils/animation.d.ts +3 -0
  346. package/utils/disposals.d.ts +7 -0
  347. package/utils/index.d.ts +5 -0
  348. package/utils/number-only.d.ts +22 -0
  349. package/utils/public-api.d.ts +6 -0
  350. package/utils/range.pipe.d.ts +7 -0
  351. package/utils/ssr.d.ts +2 -0
  352. package/utils/utils.d.ts +27 -0
  353. package/virtualizer/index.d.ts +5 -0
  354. package/virtualizer/public-api.d.ts +1 -0
  355. package/virtualizer/virtualizer.d.ts +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngbase-adk-popover.mjs","sources":["../../../projects/adk/popover/base-popover.service.ts","../../../projects/adk/popover/utils.ts","../../../projects/adk/popover/popover.ts","../../../projects/adk/popover/popover.service.ts","../../../projects/adk/popover/popover-trigger.ts","../../../projects/adk/popover/public-api.ts","../../../projects/adk/popover/ngbase-adk-popover.ts"],"sourcesContent":["import { Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { NgbPopover } from './popover';\nimport { PopoverOptions } from './popover.service';\n\nexport function basePopoverPortal<T>(component: Type<T>) {\n const NAME = 'popover';\n const base = basePortal(NAME, component);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions) {\n const { diaRef, parent, replace, childSignal } = base.open(\n component,\n (comp, opt) => {\n const compInst = comp.instance as NgbPopover;\n compInst.setOptions(opt as PopoverOptions);\n },\n options,\n );\n\n return {\n diaRef,\n events: (parent.instance as NgbPopover).events,\n parent: parent.instance,\n replace,\n childSignal,\n };\n }\n\n function closeAll() {\n base.closeAll();\n }\n return { open, closeAll };\n}\n","import { PopoverOptions, PopoverPosition } from './popover.service';\n\nconst positionSwap: Record<PopoverPosition, PopoverPosition> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n tl: 'bl',\n tr: 'br',\n bl: 'tl',\n br: 'tr',\n};\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport enum Position {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n TopLeft = 'tl',\n TopRight = 'tr',\n BottomLeft = 'bl',\n BottomRight = 'br',\n}\nexport interface ConfigObj {\n top: number;\n left: number;\n width: number;\n height: number;\n elWidth: number;\n elHeight: number;\n offset: number;\n priority: PopoverPosition;\n position: PopoverPosition;\n windowWidth: number;\n windowHeight: number;\n scrollWidth: number;\n}\n\nexport interface OverflowData {\n top: boolean;\n bottom: boolean;\n left: boolean;\n right: boolean;\n leftSide: boolean;\n rightSide: boolean;\n any: boolean;\n preferredHorizontal: 'left' | 'right' | undefined;\n preferredVertical: 'top' | 'bottom' | undefined;\n overflowAmount: {\n top: number;\n bottom: number;\n left: number;\n right: number;\n leftSide: number;\n rightSide: number;\n };\n}\n// Enums and Interfaces\n\nexport interface PositionResult {\n top: number;\n left: number;\n bottom?: number;\n right?: number;\n position: Position;\n maxHeight?: number;\n maxWidth?: number;\n}\n\nexport class PopoverPositioner {\n private overflow!: OverflowData;\n private elRect!: Rect;\n private offset = this.config.offset || 5;\n constructor(\n private config: PopoverOptions,\n private windowDimensions: { width: number; height: number },\n private scrollWidth: number,\n ) {}\n\n public calculatePosition(): PositionResult {\n const targetRect = this.getTargetRect();\n const elRect = this.getElementRect();\n this.elRect = elRect;\n const initialPosition = this.getInitialPosition(\n targetRect,\n elRect,\n (this.config.position as Position) || Position.Bottom,\n );\n const adjustedPosition = this.adjustForOverflow(initialPosition, targetRect, elRect);\n return this.finalizePosition(adjustedPosition, elRect);\n }\n\n private getTargetRect(): Rect {\n if (this.config.client) {\n const { x, y, w, h } = this.config.client;\n return { top: y, left: x, width: w, height: h };\n }\n const { top, left, width, height } = this.config.target.getBoundingClientRect();\n // return { top, left, width, height: Math.min(height, this.windowDimensions.height - top) };\n return { top, left, width, height };\n }\n\n private getElementRect(): Rect {\n const el = this.config.el!;\n return {\n top: 0,\n left: 0,\n width: el.clientWidth,\n height: el.clientHeight,\n };\n }\n\n private getInitialPosition(targetRect: Rect, elRect: Rect, position: Position): PositionResult {\n const coords = this.getCoordinatesForPosition(position, targetRect, elRect, this.offset);\n // coords.left = Math.max(0, coords.left);\n // coords.top = Math.max(0, coords.top);\n return { ...coords, position };\n }\n\n private getCoordinatesForPosition(\n position: Position,\n targetRect: Rect,\n elRect: Rect,\n offset: number,\n ): { top: number; left: number } {\n switch (position) {\n case Position.Top:\n return {\n top: targetRect.top - elRect.height - offset,\n left: targetRect.left + (targetRect.width - elRect.width) / 2,\n };\n case Position.Bottom:\n return {\n top: targetRect.top + targetRect.height + offset,\n left: targetRect.left + (targetRect.width - elRect.width) / 2,\n };\n case Position.Left:\n return { top: targetRect.top, left: targetRect.left - elRect.width - offset };\n case Position.Right:\n return { top: targetRect.top, left: targetRect.left + targetRect.width + offset };\n case Position.TopLeft:\n return { top: targetRect.top - elRect.height - offset, left: targetRect.left };\n case Position.TopRight:\n return {\n top: targetRect.top - elRect.height - offset,\n left: targetRect.left - (elRect.width - targetRect.width),\n };\n case Position.BottomLeft:\n return { top: targetRect.top + targetRect.height + offset, left: targetRect.left };\n case Position.BottomRight:\n return {\n top: targetRect.top + targetRect.height + offset,\n left: targetRect.left - (elRect.width - targetRect.width),\n };\n }\n }\n\n private adjustForOverflow(\n position: PositionResult,\n targetRect: Rect,\n elRect: Rect,\n ): PositionResult {\n const overflow = this.checkOverflow(position, elRect, targetRect);\n this.overflow = overflow;\n if (overflow.any) {\n const newPosition = this.getAlternativePosition(position.position, overflow);\n return this.getInitialPosition(targetRect, elRect, newPosition);\n }\n return position;\n }\n\n private checkOverflow(position: PositionResult, elRect: Rect, targetRect: Rect): OverflowData {\n // Calculate available space on all sides\n const topSpace = position.top;\n const bottomSpace = this.windowDimensions.height - position.top;\n const leftSpace = position.left;\n const rightSpace = this.windowDimensions.width - position.left;\n // Calculate overflow amounts (negative means no overflow)\n const topOverflow = -(targetRect.top - elRect.height);\n const bottomOverflow =\n targetRect.top + targetRect.height + elRect.height - this.windowDimensions.height;\n // const leftOverflow = -(position.left - (elRect.width - targetRect.width));\n const leftOverflow = -(targetRect.left + targetRect.width - elRect.width);\n const leftSideOverflow = -(targetRect.left - elRect.width);\n const rightOverflow = targetRect.left + elRect.width - this.windowDimensions.width;\n const rightSideOverflow = -(targetRect.left + targetRect.width - elRect.width);\n\n const isTop = topOverflow > 0;\n const isBottom = bottomOverflow > 0;\n const isLeft = leftOverflow > 0;\n const isRight = rightOverflow > 0;\n const isLeftSide = leftSideOverflow > 0;\n const isRightSide = rightSideOverflow > 0;\n\n let preferredHorizontal: 'left' | 'right' | undefined;\n let preferredVertical: 'top' | 'bottom' | undefined;\n // If both left and right overflow, determine which side has more space\n if (isLeft || isRight) {\n preferredHorizontal = leftOverflow > rightOverflow ? 'right' : 'left';\n } else if (isLeftSide || isRightSide) {\n preferredHorizontal = leftSideOverflow > rightSideOverflow ? 'right' : 'left';\n }\n\n // If both top and bottom overflow, determine which side has more space\n if (isTop || isBottom) {\n preferredVertical = topOverflow > bottomOverflow ? 'bottom' : 'top';\n }\n return {\n top: isTop,\n bottom: isBottom,\n left: isLeft,\n right: isRight,\n leftSide: isLeftSide,\n rightSide: isRightSide,\n any: isTop || isBottom || isLeft || isRight || isLeftSide || isRightSide,\n preferredHorizontal,\n preferredVertical,\n overflowAmount: {\n top: topOverflow,\n bottom: bottomOverflow,\n left: leftOverflow,\n right: rightOverflow,\n leftSide: leftSideOverflow,\n rightSide: rightSideOverflow,\n },\n };\n }\n\n getAlternativePosition(position: Position, overflow: OverflowData): Position {\n // if (overflow.top) {\n // if (position === Position.Top) {\n // return Position.Bottom;\n // }\n // }\n // if (\n // (overflow.preferredVertical === 'top' || !overflow.bottom) &&\n // (overflow.preferredHorizontal === 'left' || !overflow.right)\n // ) {\n // return Position.BottomRight;\n // }\n // if (\n // (overflow.preferredVertical === 'top' || !overflow.bottom) &&\n // (overflow.preferredHorizontal === 'right' || !overflow.left)\n // ) {\n // return Position.BottomLeft;\n // }\n // if (\n // (overflow.preferredVertical === 'bottom' || !overflow.top) &&\n // (overflow.preferredHorizontal === 'left' || !overflow.right)\n // ) {\n // return Position.TopRight;\n // }\n // if (\n // (overflow.preferredVertical === 'bottom' || !overflow.top) &&\n // (overflow.preferredHorizontal === 'right' || !overflow.left)\n // ) {\n // return Position.TopLeft;\n // }\n // if (overflow.bottom) {\n // if (position.includes('bottom')) {\n // return positionSwap[position] as Position;\n // } else if (position.includes('bl') && overflow.preferredVertical === 'top') {\n // return overflow.right && overflow.preferredHorizontal !== 'right'\n // ? Position.TopRight\n // : Position.TopLeft;\n // } else if (position.includes('bl') && overflow.preferredVertical === 'bottom') {\n // return overflow.right && overflow.preferredHorizontal !== 'right'\n // ? Position.BottomRight\n // : Position.BottomLeft;\n // }\n // }\n // if (overflow.left) {\n // if (position === Position.Left) {\n // return Position.Right;\n // }\n // if (overflow.preferredHorizontal === 'left' || !overflow.right) {\n // return overflow.bottom ? Position.TopLeft : Position.BottomLeft;\n // }\n // if (overflow.preferredHorizontal === 'right') {\n // return overflow.bottom ? Position.TopRight : Position.BottomRight;\n // }\n // }\n // if (overflow.right) {\n // if (position.includes('right')) {\n // return !overflow.left\n // ? Position.Left\n // : overflow.bottom && !overflow.left\n // ? (positionSwap[position] as Position)\n // : overflow.left && overflow.bottom\n // ? Position.Top\n // : Position.BottomRight;\n // } else if (position.includes('bl')) {\n // return overflow.bottom ? Position.TopRight : Position.BottomRight;\n // }\n // }\n // return position;\n if (!overflow.any) {\n return position;\n }\n\n // Simple mapping for opposite positions\n const opposites = {\n [Position.Top]: Position.Bottom,\n [Position.Bottom]: Position.Top,\n [Position.Left]: Position.Right,\n [Position.Right]: Position.Left,\n [Position.TopLeft]: Position.BottomRight,\n [Position.TopRight]: Position.BottomLeft,\n [Position.BottomLeft]: Position.TopRight,\n [Position.BottomRight]: Position.TopLeft,\n };\n\n // For cardinal positions (Top, Bottom, Left, Right)\n if ([Position.Top, Position.Bottom].includes(position)) {\n return (overflow.preferredVertical as any) || opposites[position];\n }\n\n if ([Position.Left, Position.Right].includes(position)) {\n return (overflow.preferredHorizontal as any) || opposites[position];\n }\n\n // For corner positions\n const isTop = position.includes('t');\n const isLeft = position.includes('l');\n\n const vertical = overflow.preferredVertical === 'top' ? 't' : 'b';\n const horizontal = overflow.preferredHorizontal === 'left' ? 'r' : 'l';\n\n // If current position overflows, use the preferred directions\n if (\n (isTop && overflow.top) ||\n (!isTop && overflow.bottom) ||\n (isLeft && overflow.left) ||\n (!isLeft && overflow.right) ||\n (horizontal === 'r' && overflow.right) ||\n (horizontal === 'l' && overflow.left)\n ) {\n switch (vertical + horizontal) {\n case 'tl':\n return Position.TopLeft;\n case 'tr':\n return Position.TopRight;\n case 'bl':\n return Position.BottomLeft;\n case 'br':\n return Position.BottomRight;\n default:\n return opposites[position];\n }\n }\n\n return position;\n }\n\n private finalizePosition(position: PositionResult, elRect: Rect): PositionResult {\n const { top, left } = position;\n const bottom = position.position.startsWith('t')\n ? this.windowDimensions.height - (top + elRect.height)\n : undefined;\n // this is required if tooltip is going outside of the screen horizontally\n // this has to be done only if the position is top or bottom\n let right: number | undefined;\n right =\n left + elRect.width > this.windowDimensions.width\n ? 0\n : position.position.endsWith('r')\n ? this.windowDimensions.width - (left + elRect.width) - this.scrollWidth\n : undefined;\n\n let overallOffset = this.getOverallOffset(position);\n let maxHeight: number | undefined;\n if (\n position.position.startsWith('t') &&\n this.overflow.overflowAmount.top > -overallOffset.vertical\n ) {\n maxHeight = this.elRect.height - this.overflow.overflowAmount.top - overallOffset.vertical;\n } else if (\n position.position.startsWith('b') &&\n this.overflow.overflowAmount.bottom > -overallOffset.vertical\n ) {\n maxHeight = this.elRect.height - this.overflow.overflowAmount.bottom - overallOffset.vertical;\n }\n\n let maxWidth: number | undefined;\n if (\n position.position.endsWith('l') &&\n this.overflow.overflowAmount.right > -overallOffset.horizontal\n ) {\n maxWidth = this.elRect.width - this.overflow.overflowAmount.right - overallOffset.horizontal;\n } else if (\n position.position.endsWith('r') &&\n this.overflow.overflowAmount.left > -overallOffset.horizontal\n ) {\n maxWidth = this.elRect.width - this.overflow.overflowAmount.left - overallOffset.horizontal;\n }\n return {\n // top: Math.max(0, Math.min(top, this.windowDimensions.height - (maxHeight || elRect.height))),\n top: Math.max(0, top),\n bottom,\n left: right ? 0 : Math.max(overallOffset.horizontal, left),\n right: right ? Math.max(overallOffset.horizontal, right) : undefined,\n position: position.position,\n maxHeight,\n maxWidth,\n };\n }\n\n private getOverallOffset(position: PositionResult) {\n const overallOffset = this.config.sideOffset ?? 0;\n const isHorizontal = position.position === 'left' || position.position === 'right';\n return {\n horizontal: overallOffset + (isHorizontal ? this.offset : 0),\n vertical: overallOffset + (isHorizontal ? 0 : this.offset),\n };\n }\n}\n\n// Main function to use the class\nexport function tooltipPosition(\n config: PopoverOptions,\n windowDimensions = {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n scrollWidth = window.innerWidth - document.documentElement.clientWidth,\n): PositionResult {\n const positioner = new PopoverPositioner(config, windowDimensions, scrollWidth);\n return positioner.calculatePosition();\n}\n\n// export function tooltipPosition(config: OverlayConfig): {\n// top: number;\n// left: number;\n// bottom?: number;\n// right?: number;\n// position: DialogPosition;\n// } {\n// const { target, el, position: priority = 'bottom', offset = 5, client: clientXY = null } = config;\n// let position: DialogPosition = priority;\n// let { top, left, width, height } = target.getBoundingClientRect();\n// if (clientXY) {\n// top = clientXY.y;\n// left = clientXY.x;\n// width = clientXY.w;\n// height = clientXY.h;\n// }\n// const { clientWidth: elWidth, clientHeight: elHeight } = el!;\n\n// // we need to check whether the height of the target element is greater than the height then we need to adjust the height\n// if (height > window.innerHeight) {\n// height = window.innerHeight - top;\n// }\n\n// return tooltipPositionInternal({\n// top,\n// left,\n// width,\n// height,\n// elWidth,\n// elHeight,\n// offset,\n// priority,\n// position,\n// windowWidth: window.innerWidth,\n// windowHeight: window.innerHeight,\n// scrollWidth: window.innerWidth - document.documentElement.clientWidth,\n// });\n// }\n\n// export function tooltipPositionInternal(data: ConfigObj): {\n// top: number;\n// bottom?: number;\n// left: number;\n// right?: number;\n// position: DialogPosition;\n// } {\n// let { elHeight, position, windowHeight, windowWidth, offset, elWidth, scrollWidth } = data;\n\n// position = positionSwapBasedOnOverflow(data);\n\n// let { top: topPos, left: leftPos } = getTooltipCoordinates(position, data);\n\n// if (topPos <= 0) {\n// topPos = offset;\n// } else if (topPos + elHeight > windowHeight) {\n// topPos = windowHeight - elHeight - offset;\n// } else if (leftPos < 0) {\n// leftPos = 0;\n// }\n\n// const bottomPos = position.startsWith('t') ? windowHeight - (topPos + elHeight) : undefined;\n// const rightPos =\n// leftPos + elWidth > windowWidth\n// ? 0\n// : position.endsWith('r')\n// ? windowWidth - (leftPos + elWidth) - scrollWidth\n// : undefined;\n\n// return {\n// top: topPos,\n// bottom: bottomPos,\n// left: rightPos ? 0 : leftPos,\n// position,\n// right: rightPos,\n// };\n// }\n\n// function getTooltipCoordinates(\n// position: DialogPosition,\n// data: ConfigObj,\n// ): { top: number; left: number } {\n// const { top, left, width, height, elWidth, elHeight, offset } = data;\n// switch (position) {\n// case 'top':\n// return {\n// top: top - elHeight - offset,\n// left: left + (width - elWidth) / 2,\n// };\n// case 'bottom':\n// return { top: top + height + offset, left: left + (width - elWidth) / 2 };\n// case 'left':\n// return { top, left: left - elWidth - offset };\n// case 'right':\n// return { top, left: left + width + offset };\n// case 'tl':\n// return { top: top - elHeight - offset, left };\n// case 'tr':\n// return { top: top - elHeight - offset, left: left - (elWidth - width) };\n// case 'bl':\n// return { top: top + height + offset, left };\n// case 'br':\n// return { top: top + height + offset, left: left - (elWidth - width) };\n// default:\n// return {\n// top: top - elHeight - offset,\n// left: left + (width - elWidth) / 2,\n// };\n// }\n// }\n\n// // function to check the overflow sides for target and element\n// export function checkOverflow(data: ConfigObj) {\n// const isTop = data.top - data.elHeight < 0;\n// const isBottom = data.top + data.height + data.elHeight > data.windowHeight;\n// const isLeft = data.left - data.elWidth < 0;\n// const isRight = data.left + data.width + data.elWidth > data.windowWidth;\n\n// return { top: isTop, bottom: isBottom, left: isLeft, right: isRight };\n// }\n\n// // position swap based on the overflow and priority\n// function positionSwapBasedOnOverflow(data: ConfigObj): DialogPosition {\n// const {\n// bottom: bottomOverflow,\n// left: leftOverflow,\n// right: rightOverflow,\n// top: topOverflow,\n// } = checkOverflow(data);\n// const { priority } = data;\n\n// let position = priority;\n// if (topOverflow) {\n// if (position.includes('top')) {\n// position = positionSwap[position];\n// }\n// }\n// if (bottomOverflow) {\n// if (position.includes('bottom')) {\n// position = positionSwap[position];\n// } else if (position.includes('bl')) {\n// position = rightOverflow ? 'tr' : 'tl';\n// }\n// }\n// if (leftOverflow) {\n// if (position.includes('left')) {\n// position = positionSwap[position];\n// }\n// }\n// if (rightOverflow) {\n// if (position.includes('right')) {\n// position = !leftOverflow\n// ? 'left'\n// : bottomOverflow && !leftOverflow\n// ? positionSwap[position]\n// : leftOverflow && bottomOverflow\n// ? 'top'\n// : 'br';\n// } else if (position.includes('bl')) {\n// position = bottomOverflow ? 'tr' : 'br';\n// }\n// }\n// return position;\n// }\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n ViewContainerRef,\n afterNextRender,\n effect,\n inject,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FocusTrap } from '@ngbase/adk/a11y';\nimport { BaseDialog, NgbPortalClose } from '@ngbase/adk/portal';\nimport { createHostAnimation, disposals } from '@ngbase/adk/utils';\nimport { EMPTY, Observable, fromEvent, map, startWith, switchMap } from 'rxjs';\nimport { PopoverOptions, PopoverPosition } from './popover.service';\nimport { tooltipPosition } from './utils';\n\n@Directive({\n selector: '[ngbPopoverBackdrop]',\n hostDirectives: [FocusTrap],\n host: {\n '[style.clipPath]': 'popover.options().clipPath?.()',\n '[class]': 'popover.options().backdropClassName',\n '(click)': '!popover.options().disableClose && popover.close()',\n },\n})\nexport class NgbPopoverBackdrop {\n readonly popover = inject(NgbPopover);\n readonly focusTrap = inject(FocusTrap);\n\n constructor() {\n this.focusTrap._focusTrap = linkedSignal(() => this.popover.options().focusTrap ?? true);\n }\n}\n\n@Directive({\n selector: '[ngbPopoverMain]',\n host: {\n '[class]': 'popover.options().className',\n },\n})\nexport class NgbPopoverMain {\n readonly popover = inject(NgbPopover);\n}\n\n@Component({\n selector: 'ngb-popover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgbPopoverBackdrop, NgbPopoverMain],\n template: ` <style>\n .popover-anchor {\n --action-angle: 180deg;\n --action-left: 50%;\n --action-top: -1rem;\n }\n .popover-anchor::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n border-top: 0.8rem solid;\n @apply border-foreground;\n border-left: 0.5rem solid transparent;\n border-right: 0.5rem solid transparent;\n top: var(--action-top);\n left: var(--action-left);\n transform: translateX(-50%) rotate(var(--action-angle, 180deg));\n }\n </style>\n <div\n ngbPopoverMain\n [@slideInOutAnimation]\n class=\"{{\n 'menu-container pointer-events-auto fixed z-10 flex flex-col rounded-base border bg-foreground shadow-md ' +\n (options().anchor ? 'popover-anchor ' : 'overflow-auto ')\n }}\"\n >\n <div class=\"flex flex-1 flex-col overflow-auto\">\n <ng-container #myDialog />\n </div>\n </div>\n @if (options().backdrop) {\n <div\n ngbPopoverBackdrop\n class=\"popover-backdrop pointer-events-auto fixed top-0 h-full w-full\"\n ></div>\n }`,\n host: {\n class:\n 'fixed top-0 left-0 w-full h-full pointer-events-none z-p flex items-center justify-center',\n '[@parentAnimation]': '',\n '(@parentAnimation.done)': 'animationDone()',\n },\n animations: [\n createHostAnimation(['@slideInOutAnimation']),\n trigger('slideInOutAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n state('0', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n transition('* => *', animate('100ms ease-out')),\n ]),\n ],\n})\nexport class NgbPopover extends BaseDialog {\n private readonly disposals = disposals();\n\n readonly myDialog = viewChild.required('myDialog', { read: ViewContainerRef });\n readonly container = viewChild.required<NgbPopoverMain, ElementRef<HTMLElement>>(NgbPopoverMain, {\n read: ElementRef,\n });\n readonly backdropElement = viewChild<NgbPopoverBackdrop, ElementRef<HTMLElement>>(\n NgbPopoverBackdrop,\n { read: ElementRef },\n );\n\n readonly options = signal<PopoverOptions>({} as PopoverOptions);\n private lastPosition: PopoverPosition = 'top';\n readonly scrolled = signal(0);\n\n readonly events: Observable<{ type: string; value: any }> = this._afterViewSource.pipe(\n switchMap(e => {\n const el = this.container()!.nativeElement;\n const mouseenter = fromEvent(el, 'mouseenter');\n const mouseleave = fromEvent(el, 'mouseleave');\n const event = mouseenter.pipe(\n switchMap(e =>\n mouseleave.pipe(\n map(x => ({ type: 'mouseleave', value: x })),\n startWith({ type: 'mouseenter', value: e }),\n ),\n ),\n );\n return e ? event : EMPTY;\n }),\n );\n\n constructor() {\n super();\n\n const dialog = effect(() => {\n this._afterViewSource.next(this.myDialog()!);\n dialog.destroy();\n });\n\n effect(cleanup => {\n const el = this.container()!.nativeElement;\n const options = this.options();\n const target = this.getTarget();\n if (options.anchor) {\n options.offset = 16;\n }\n this.lastPosition = options.position || 'bottom';\n // this.schedulePopoverUpdate(target, el);\n if (options.smoothScroll) {\n // target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 50')),\n // debounceTime(50),\n // take(1),\n // )\n // .subscribe(() => {});\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 10')),\n // debounceTime(10),\n // take(1),\n // )\n // .subscribe(() => {\n // this.scrolled.update((x) => x + 1);\n // this.schedulePopoverUpdate(target, el);\n // });\n scrollToElement(target).then(() => {\n this.scrolled.update(x => x + 1);\n this.schedulePopoverUpdate(target, el, options);\n });\n } else {\n this.schedulePopoverUpdate(target, el, options);\n }\n\n // TODO: remove this once we have multi cleanup support\n if (!options.backdrop) {\n window.addEventListener('scroll', this.scheduleUpdateDimension);\n cleanup(() => window.removeEventListener('scroll', this.scheduleUpdateDimension));\n }\n\n // observe the target element position change\n const resizeObserver = new ResizeObserver(() => {\n // console.log('resizeObserver');\n this.schedulePopoverUpdate(target, el, options);\n });\n resizeObserver.observe(target);\n cleanup(() => resizeObserver.disconnect());\n });\n }\n\n override getTarget(): HTMLElement {\n return this.target() || this.options().target;\n }\n\n private scheduleUpdateDimension = () => {\n this.disposals.afterNextRender(() => this.updateDimension());\n };\n\n private schedulePopoverUpdate(target: HTMLElement, el: HTMLElement, options: PopoverOptions) {\n // this.options().target = target;\n // if (options.backdrop) {\n // this.onOpen();\n // }\n if (options.width === 'target') {\n // update the width of the container to be the same as the target\n el.style.width = `${target.offsetWidth}px`;\n } else if (options.width === 'free') {\n el.style.minWidth = `${target.offsetWidth}px`;\n } else if (options.width) {\n el.style.width = options.width;\n }\n if (options.height) {\n el.style.height = options.height;\n }\n if (options.maxHeight) {\n el.style.maxHeight = options.maxHeight;\n }\n\n this.scheduleUpdateDimension();\n }\n\n private updateDimension() {\n const el = this.container()!.nativeElement;\n const target = this.getTarget();\n if (!target) {\n return;\n }\n const { top, bottom, left, right, position, maxHeight, maxWidth } = tooltipPosition({\n target,\n el,\n position: this.lastPosition,\n client: this.options().client,\n offset: this.options().offset,\n sideOffset: this.options().sideOffset,\n });\n // change the anchor position\n if (this.options().anchor) {\n this.updateAnchorPosition(position, el, target);\n }\n this.lastPosition = position;\n // we need to update the values directly instead of signal to avoid too many CD checks\n if (bottom) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else if (top) {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n el.style.left = '';\n } else {\n el.style.left = `${left}px`;\n el.style.right = '';\n }\n\n if (maxHeight) {\n el.style.maxHeight = `${maxHeight}px`;\n }\n if (maxWidth) {\n el.style.maxWidth = `${maxWidth}px`;\n }\n }\n\n private updateAnchorPosition(position: PopoverPosition, el: HTMLElement, target: HTMLElement) {\n let deg = '0deg';\n let anchorTop = '50%';\n let anchorLeft = '50%';\n const anchorWidth = 12.8;\n\n const thHeight = target.offsetHeight / 2;\n const thWidth = target.offsetWidth / 2;\n\n switch (position) {\n case 'top':\n case 'tl':\n case 'tr':\n anchorTop = '100%';\n break;\n case 'left':\n deg = '270deg';\n anchorLeft = `calc(100% + ${anchorWidth / 2}px)`;\n anchorTop = thHeight > el.clientHeight ? '50%' : `calc(${thHeight}px)`;\n break;\n case 'right':\n deg = '90deg';\n anchorLeft = `-${anchorWidth / 2}px`;\n anchorTop = thHeight > el.clientHeight ? '50%' : `calc(${thHeight}px)`;\n break;\n case 'bottom':\n case 'bl':\n case 'br':\n deg = '180deg';\n anchorTop = '-1rem';\n anchorLeft = thWidth > el.clientWidth ? '50%' : `calc(100% - ${thWidth}px)`;\n break;\n }\n\n el.style.setProperty('--action-angle', deg);\n el.style.setProperty('--action-left', anchorLeft);\n el.style.setProperty('--action-top', anchorTop);\n // console.log('updateAnchorPosition', position, deg);\n }\n\n override setOptions(options: PopoverOptions): void {\n // console.log('setOptions', options);\n this.options.set(options);\n }\n}\n\nfunction scrollToElement(target: HTMLElement) {\n return new Promise(resolve => {\n let lastPos: number;\n let currentPos = null;\n let samePosCount = 0;\n\n const checkIfScrollComplete = () => {\n currentPos = window.pageYOffset || document.documentElement.scrollTop;\n\n if (lastPos !== null && currentPos === lastPos) {\n samePosCount++;\n if (samePosCount > 2) {\n resolve(true);\n return;\n }\n } else {\n samePosCount = 0;\n lastPos = currentPos;\n }\n\n requestAnimationFrame(checkIfScrollComplete);\n };\n // scroll only if the target is not in the view\n // window.scrollTo({\n // top: target.offsetTop - 50,\n // behavior: 'smooth',\n // });\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n requestAnimationFrame(checkIfScrollComplete);\n });\n}\n\n@Directive({\n selector: '[ngbPopoverClose]',\n hostDirectives: [{ directive: NgbPortalClose, inputs: ['ngbPortalClose: ngbPopoverClose'] }],\n})\nexport class NgbPopoverClose {}\n\nexport function providePopover(popover: typeof NgbPopover) {\n return { provide: NgbPopover, useExisting: popover };\n}\n","import { inject, InjectionToken, Signal, Type, WritableSignal } from '@angular/core';\nimport { DialogInput, DialogOptions, DialogRef } from '@ngbase/adk/portal';\nimport { Observable } from 'rxjs';\nimport { basePopoverPortal } from './base-popover.service';\nimport { NgbPopover } from './popover';\n\nexport type PopoverPosition = 'top' | 'bottom' | 'left' | 'right' | 'tl' | 'tr' | 'bl' | 'br';\n\nexport class PopoverOptions extends DialogOptions {\n target!: HTMLElement;\n el?: HTMLElement;\n position?: PopoverPosition;\n offset?: number;\n sideOffset?: number;\n client?: { x: number; y: number; w: number; h: number } | null;\n className?: string;\n backdropClassName?: string;\n clipPath?: Signal<string>;\n anchor?: boolean;\n smoothScroll?: boolean;\n}\n\nexport interface PopoverOpen<T> {\n diaRef: DialogRef<any>;\n events: Observable<{ type: string; value: any }>;\n parent: NgbPopover;\n replace: ((component: DialogInput<T>) => void) | undefined;\n childSignal: WritableSignal<any>;\n}\n\nconst POPOVER_TOKEN = new InjectionToken<Type<NgbPopover>>('POPOVER_TOKEN');\n\nexport type PopoverType = ReturnType<typeof ngbPopoverPortal>;\n\nexport function ngbPopoverPortal() {\n const popover = inject(POPOVER_TOKEN, { optional: true }) ?? NgbPopover;\n const base = basePopoverPortal(popover);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions): PopoverOpen<T> {\n return base.open(component, options);\n }\n\n return { open, closeAll: base.closeAll };\n}\n\nexport const registerNgbPopover = (popover: Type<NgbPopover>) => {\n return { provide: POPOVER_TOKEN, useValue: popover };\n};\n","import { Directive, ElementRef, TemplateRef, inject, input } from '@angular/core';\nimport { PopoverPosition, ngbPopoverPortal } from './popover.service';\n\n@Directive({\n selector: '[ngbPopoverTrigger]',\n exportAs: 'ngbPopoverTrigger',\n host: {\n '(click)': 'open()',\n },\n})\nexport class NgbPopoverTrigger {\n readonly popoverPortal = ngbPopoverPortal();\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbPopoverTrigger = input.required<TemplateRef<any>>();\n readonly ngbPopoverTriggerData = input();\n readonly options = input<{ position?: PopoverPosition; anchor?: boolean }>();\n\n private closeFn: VoidFunction = () => {};\n\n open() {\n const options = this.options();\n const { diaRef } = this.popoverPortal.open(this.ngbPopoverTrigger(), {\n target: this.el.nativeElement,\n anchor: options?.anchor,\n position: options?.position || 'top',\n data: this.ngbPopoverTriggerData(),\n });\n this.closeFn = diaRef.close;\n }\n\n close() {\n this.closeFn();\n }\n}\n","/*\n * Public API Surface of popover\n */\n\nexport * from './popover.service';\nexport * from './popover';\nexport * from './popover-trigger';\nexport * from './base-popover.service';\nexport { tooltipPosition } from './utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,279 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ElementRef, signal, InjectionToken, Injector, input, Directive, viewChild, ViewContainerRef, Component, ChangeDetectionStrategy, ApplicationRef, EnvironmentInjector, createComponent, Injectable, TemplateRef } from '@angular/core';
3
+ import { DOCUMENT } from '@angular/common';
4
+ import { BehaviorSubject, filter, Subject, first } from 'rxjs';
5
+ import { keyMap } from '@ngbase/adk/keys';
6
+
7
+ class BaseDialog {
8
+ constructor() {
9
+ this.dialogRef = inject(DialogRef);
10
+ this.document = inject(DOCUMENT);
11
+ this.el = inject(ElementRef);
12
+ this._afterViewSource = new BehaviorSubject(null);
13
+ this.afterView = this._afterViewSource.asObservable().pipe(filter(Boolean));
14
+ this.target = signal(null);
15
+ // counter is required because we have start and end animation
16
+ // so we need to wait for both to finish before destroying the dialog
17
+ this.count = 0;
18
+ this.isFirst = true;
19
+ this.currentActiveElement = new WeakRef(this.document.activeElement);
20
+ this.animationDone = () => {
21
+ this.count++;
22
+ if (this.count === 2) {
23
+ this.onClose();
24
+ }
25
+ };
26
+ this.onClose = () => {
27
+ if (this.isFirst) {
28
+ this.document.body.style.paddingRight = '';
29
+ this.document.body.style.overflow = '';
30
+ }
31
+ const target = this.dialogRef.options.afterFocusEl || this.getTarget() || this.currentActiveElement.deref();
32
+ target?.focus();
33
+ };
34
+ this.onOpen();
35
+ }
36
+ setOptions(_) { }
37
+ close() {
38
+ this.dialogRef.close();
39
+ }
40
+ onOpen() {
41
+ // make the body not scrollable and add padding to the right
42
+ // calculate the padding based on the scrollbar width
43
+ this.isFirst = this.document.body.style.overflow !== 'hidden';
44
+ if (this.isFirst) {
45
+ const padding = window.innerWidth - this.document.body.clientWidth;
46
+ this.document.body.style.paddingRight = `${padding}px`;
47
+ this.document.body.style.overflow = 'hidden';
48
+ }
49
+ }
50
+ getTarget() {
51
+ return this.target();
52
+ }
53
+ }
54
+ class DialogRef {
55
+ constructor(options, destroyParent, closeAllFn, animation = true) {
56
+ this.options = options;
57
+ this.destroyParent = destroyParent;
58
+ this.closeAllFn = closeAllFn;
59
+ this.animation = animation;
60
+ this.data = this.options.data;
61
+ this.backdropSub = null;
62
+ this.onDestroySource = new Subject();
63
+ this.onDestroy = this.onDestroySource.asObservable().pipe(first());
64
+ this.afterClosedSource = new Subject();
65
+ this.afterClosed = this.afterClosedSource.asObservable().pipe(first());
66
+ this.events = new Subject();
67
+ this.close = (data) => {
68
+ this.afterClosedSource.next(data);
69
+ // if (!this.animation) {
70
+ this.destroy();
71
+ // }
72
+ };
73
+ }
74
+ closeAll() {
75
+ this.closeAllFn();
76
+ }
77
+ destroy() {
78
+ this.backdropSub?.unsubscribe();
79
+ this.afterClosedSource.complete();
80
+ this.onDestroySource.next(false);
81
+ this.destroyParent();
82
+ // console.log('destroyed parent');
83
+ }
84
+ }
85
+ class DialogTestingRef {
86
+ close() { }
87
+ }
88
+ class DialogOptions {
89
+ constructor() {
90
+ this.backdrop = true;
91
+ this.backdropColor = true;
92
+ this.hideOverlay = false;
93
+ this.classNames = [];
94
+ this.overrideLowerDialog = false;
95
+ this.disableClose = false;
96
+ this.focusTrap = true;
97
+ }
98
+ }
99
+ const DIALOG_INJ = new InjectionToken('dialogInj');
100
+ function createInj(parent, data, diaRef) {
101
+ return Injector.create({
102
+ providers: [
103
+ { provide: DIALOG_INJ, useValue: data },
104
+ { provide: DialogRef, useValue: diaRef },
105
+ ],
106
+ parent,
107
+ name: 'dialogInj',
108
+ });
109
+ }
110
+ const DialogTestProviders = [
111
+ { provide: DIALOG_INJ, useValue: {} },
112
+ { provide: DialogRef, useValue: null },
113
+ ];
114
+
115
+ class NgbPortalClose {
116
+ constructor() {
117
+ this.dialogRef = inject(DialogRef);
118
+ this.ngbPortalClose = input();
119
+ }
120
+ close() {
121
+ this.dialogRef.close(this.ngbPortalClose());
122
+ }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbPortalClose, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
124
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbPortalClose, isStandalone: true, selector: "[ngbPortalClose]", inputs: { ngbPortalClose: { classPropertyName: "ngbPortalClose", publicName: "ngbPortalClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "close()" } }, ngImport: i0 }); }
125
+ }
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbPortalClose, decorators: [{
127
+ type: Directive,
128
+ args: [{
129
+ selector: '[ngbPortalClose]',
130
+ host: {
131
+ '(click)': 'close()',
132
+ },
133
+ }]
134
+ }] });
135
+
136
+ class Portal {
137
+ constructor() {
138
+ this.myDialog = viewChild('myDialog', { read: ViewContainerRef });
139
+ }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: Portal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.0", type: Portal, isStandalone: true, selector: "ngb-portal", viewQueries: [{ propertyName: "myDialog", first: true, predicate: ["myDialog"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `<ng-container #myDialog />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: Portal, decorators: [{
144
+ type: Component,
145
+ args: [{
146
+ selector: 'ngb-portal',
147
+ template: `<ng-container #myDialog />`,
148
+ changeDetection: ChangeDetectionStrategy.OnPush,
149
+ }]
150
+ }] });
151
+
152
+ class PortalService {
153
+ constructor() {
154
+ this.document = inject(DOCUMENT);
155
+ this.appRef = inject(ApplicationRef);
156
+ this.environmentInjector = inject(EnvironmentInjector);
157
+ this.trackElements = new Map();
158
+ }
159
+ componentCreator() {
160
+ this.mainContainer ??= this.appendComponentToBody(Portal);
161
+ return this.mainContainer.instance.myDialog();
162
+ }
163
+ appendComponentToBody(component) {
164
+ // 1. Create a component reference from the component
165
+ const componentRef = createComponent(component, {
166
+ environmentInjector: this.environmentInjector,
167
+ });
168
+ // 2. append the component to the body
169
+ this.document.body.appendChild(componentRef.location.nativeElement);
170
+ // 3. Attach component to the appRef so that it's inside the ng component tree
171
+ this.appRef.attachView(componentRef.hostView);
172
+ return componentRef;
173
+ }
174
+ create(component, injector, container) {
175
+ const d = this.componentCreator().createComponent(component, { injector });
176
+ if (!this.trackElements.has(container)) {
177
+ this.trackElements.set(container, []);
178
+ }
179
+ this.trackElements.get(container).push(d);
180
+ return d;
181
+ }
182
+ delete(container, component) {
183
+ component.destroy();
184
+ const elements = this.trackElements.get(container);
185
+ if (elements) {
186
+ const index = elements.indexOf(component);
187
+ elements.splice(index, 1);
188
+ }
189
+ }
190
+ clear(container) {
191
+ if (this.trackElements.has(container)) {
192
+ const elements = this.trackElements.get(container);
193
+ elements?.forEach(c => c.destroy());
194
+ this.trackElements.delete(container);
195
+ }
196
+ }
197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: PortalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
198
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: PortalService, providedIn: 'root' }); }
199
+ }
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: PortalService, decorators: [{
201
+ type: Injectable,
202
+ args: [{ providedIn: 'root' }]
203
+ }] });
204
+
205
+ function basePortal(name, baseComponent) {
206
+ const NAME = name;
207
+ const portal = inject(PortalService);
208
+ const injector = inject(Injector);
209
+ function updateBaseComponent(component) {
210
+ baseComponent = component;
211
+ }
212
+ function open(component, callback, opt, animation = true, parentComponent) {
213
+ const options = { ...new DialogOptions(), ...opt };
214
+ const diaRef = new DialogRef(options, destroy, closeAll, animation);
215
+ const childInjector = createInj(injector, options.data, diaRef);
216
+ const parent = portal.create(parentComponent || baseComponent, childInjector, NAME);
217
+ // set options
218
+ callback?.(parent, options);
219
+ // close on backdrop click
220
+ let sub;
221
+ const childSignal = signal(undefined);
222
+ if (component === undefined) {
223
+ return { diaRef, parent, instance: null, childSignal };
224
+ }
225
+ // close on esc
226
+ if (!options.disableClose) {
227
+ sub = keyMap('esc', () => diaRef.close(), { injector, stop: true });
228
+ }
229
+ function destroy() {
230
+ portal.delete(NAME, parent);
231
+ sub?.();
232
+ }
233
+ let vwRef;
234
+ let child;
235
+ const parentInstance = parent.instance;
236
+ parentInstance.afterView.pipe(first()).subscribe(vcRef => {
237
+ vwRef = vcRef;
238
+ createChild(component, vcRef);
239
+ // diaRef.onDestroy.subscribe(() => child.destroy());
240
+ diaRef.events.next('created');
241
+ childSignal.set(child);
242
+ });
243
+ function replace(component) {
244
+ if (vwRef) {
245
+ vwRef.clear();
246
+ createChild(component, vwRef);
247
+ }
248
+ }
249
+ function createChild(component, vcRef) {
250
+ // for template type
251
+ if (component instanceof TemplateRef) {
252
+ child = vcRef.createEmbeddedView(component, { $implicit: options.data }, { injector: parent.injector });
253
+ diaRef.events.next('created');
254
+ return;
255
+ }
256
+ // for component type
257
+ child = vcRef.createComponent(component, {
258
+ injector: parent.injector,
259
+ });
260
+ }
261
+ // parent.instance.
262
+ return { diaRef, parent, replace, childSignal };
263
+ }
264
+ function closeAll() {
265
+ portal.clear(NAME);
266
+ }
267
+ return { open, closeAll, updateBaseComponent };
268
+ }
269
+
270
+ /*
271
+ * Public API Surface of portal
272
+ */
273
+
274
+ /**
275
+ * Generated bundle index. Do not edit.
276
+ */
277
+
278
+ export { BaseDialog, DIALOG_INJ, DialogOptions, DialogRef, NgbPortalClose, Portal, PortalService, basePortal, createInj };
279
+ //# sourceMappingURL=ngbase-adk-portal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngbase-adk-portal.mjs","sources":["../../../projects/adk/portal/dialog-ref.ts","../../../projects/adk/portal/portal-close.directive.ts","../../../projects/adk/portal/portal.component.ts","../../../projects/adk/portal/portal.service.ts","../../../projects/adk/portal/portal-base.service.ts","../../../projects/adk/portal/public-api.ts","../../../projects/adk/portal/ngbase-adk-portal.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n ElementRef,\n InjectionToken,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, filter, first } from 'rxjs';\n\nexport type DialogInput<T = any> = Type<T> | TemplateRef<any>;\n\nexport abstract class BaseDialog {\n dialogRef = inject(DialogRef);\n document = inject(DOCUMENT);\n el = inject(ElementRef);\n\n _afterViewSource = new BehaviorSubject<ViewContainerRef | null>(null);\n afterView = this._afterViewSource.asObservable().pipe(filter(Boolean));\n\n target = signal<HTMLElement | null>(null);\n\n // counter is required because we have start and end animation\n // so we need to wait for both to finish before destroying the dialog\n count = 0;\n private isFirst = true;\n private currentActiveElement = new WeakRef(this.document.activeElement as HTMLElement);\n\n constructor() {\n this.onOpen();\n }\n\n setOptions(_: DialogOptions): void {}\n\n close() {\n this.dialogRef.close();\n }\n\n animationDone = () => {\n this.count++;\n if (this.count === 2) {\n this.onClose();\n }\n };\n\n private onOpen() {\n // make the body not scrollable and add padding to the right\n // calculate the padding based on the scrollbar width\n this.isFirst = this.document.body.style.overflow !== 'hidden';\n if (this.isFirst) {\n const padding = window.innerWidth - this.document.body.clientWidth;\n this.document.body.style.paddingRight = `${padding}px`;\n this.document.body.style.overflow = 'hidden';\n }\n }\n\n getTarget(): HTMLElement {\n return this.target()!;\n }\n\n onClose = () => {\n if (this.isFirst) {\n this.document.body.style.paddingRight = '';\n this.document.body.style.overflow = '';\n }\n const target =\n this.dialogRef.options.afterFocusEl || this.getTarget() || this.currentActiveElement.deref();\n target?.focus();\n };\n}\n\nexport class DialogRef<T = any> {\n data = this.options.data;\n private backdropSub: Subscription | null = null;\n\n private onDestroySource = new Subject();\n onDestroy = this.onDestroySource.asObservable().pipe(first());\n\n private afterClosedSource = new Subject<any>();\n afterClosed = this.afterClosedSource.asObservable().pipe(first());\n\n events = new Subject<'created'>();\n\n constructor(\n public options: DialogOptions<T>,\n private destroyParent: VoidFunction,\n private closeAllFn: VoidFunction,\n private animation = true,\n ) {}\n\n close = (data?: any) => {\n this.afterClosedSource.next(data);\n // if (!this.animation) {\n this.destroy();\n // }\n };\n\n closeAll() {\n this.closeAllFn();\n }\n\n destroy() {\n this.backdropSub?.unsubscribe();\n this.afterClosedSource.complete();\n this.onDestroySource.next(false);\n this.destroyParent();\n // console.log('destroyed parent');\n }\n}\n\nexport class DialogTestingRef {\n close() {}\n}\n\nexport class DialogOptions<T = any> {\n backdrop? = true;\n backdropColor? = true;\n hideOverlay? = false;\n data?: T;\n // isSidePopup? = false;\n title?: string;\n fullWindow?: boolean;\n minWidth?: string;\n minHeight?: string;\n width?: string;\n height?: string;\n maxWidth?: string;\n maxHeight?: string;\n classNames?: string[] = [];\n header?: boolean;\n overrideLowerDialog?: boolean = false;\n disableClose? = false;\n ayId?: string;\n focusTrap? = true;\n afterFocusEl?: HTMLElement;\n}\n\nexport const DIALOG_INJ = new InjectionToken('dialogInj');\n\nexport function createInj(parent: Injector, data: any, diaRef: DialogRef) {\n return Injector.create({\n providers: [\n { provide: DIALOG_INJ, useValue: data },\n { provide: DialogRef, useValue: diaRef },\n ],\n parent,\n name: 'dialogInj',\n });\n}\n\nexport const DialogTestProviders = [\n { provide: DIALOG_INJ, useValue: {} },\n { provide: DialogRef, useValue: null },\n];\n","import { Directive, inject, input } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\n\n@Directive({\n selector: '[ngbPortalClose]',\n host: {\n '(click)': 'close()',\n },\n})\nexport class NgbPortalClose {\n private readonly dialogRef = inject(DialogRef);\n readonly ngbPortalClose = input();\n\n close() {\n this.dialogRef.close(this.ngbPortalClose());\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewContainerRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ngb-portal',\n template: `<ng-container #myDialog />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Portal {\n myDialog = viewChild('myDialog', { read: ViewContainerRef });\n}\n","import {\n Injectable,\n Injector,\n ApplicationRef,\n Type,\n ComponentRef,\n inject,\n EnvironmentInjector,\n createComponent,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Portal } from './portal.component';\n\n@Injectable({ providedIn: 'root' })\nexport class PortalService {\n private mainContainer?: ComponentRef<Portal>;\n private document = inject(DOCUMENT);\n private appRef = inject(ApplicationRef);\n private environmentInjector = inject(EnvironmentInjector);\n\n private trackElements = new Map<string, ComponentRef<any>[]>();\n\n private componentCreator() {\n this.mainContainer ??= this.appendComponentToBody(Portal);\n return this.mainContainer!.instance.myDialog()!;\n }\n\n appendComponentToBody<T>(component: Type<T>) {\n // 1. Create a component reference from the component\n const componentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n });\n\n // 2. append the component to the body\n this.document.body.appendChild(componentRef.location.nativeElement);\n\n // 3. Attach component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(componentRef.hostView);\n return componentRef;\n }\n\n create<T>(component: Type<T>, injector: Injector, container: string) {\n const d = this.componentCreator().createComponent(component, { injector });\n if (!this.trackElements.has(container)) {\n this.trackElements.set(container, []);\n }\n this.trackElements.get(container)!.push(d);\n return d;\n }\n\n delete<T>(container: string, component: ComponentRef<T>) {\n component.destroy();\n const elements = this.trackElements.get(container);\n if (elements) {\n const index = elements.indexOf(component);\n elements.splice(index, 1);\n }\n }\n\n clear(container: string) {\n if (this.trackElements.has(container)) {\n const elements = this.trackElements.get(container);\n elements?.forEach(c => c.destroy());\n this.trackElements.delete(container);\n }\n }\n}\n","import {\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { keyMap } from '@ngbase/adk/keys';\nimport { first } from 'rxjs';\nimport { BaseDialog, DialogInput, DialogOptions, DialogRef, createInj } from './dialog-ref';\nimport { PortalService } from './portal.service';\n\nexport function basePortal<U>(name: string, baseComponent: Type<U>) {\n const NAME = name;\n const portal = inject(PortalService);\n const injector = inject(Injector);\n\n function updateBaseComponent(component: Type<U>) {\n baseComponent = component;\n }\n\n function open<T>(\n component?: DialogInput<T>,\n callback?: (comp: ComponentRef<U>, opt: DialogOptions) => void,\n opt?: DialogOptions,\n animation = true,\n parentComponent?: Type<U>,\n ) {\n const options = { ...new DialogOptions(), ...opt };\n const diaRef = new DialogRef(options, destroy, closeAll, animation);\n const childInjector = createInj(injector, options.data, diaRef);\n const parent = portal.create(parentComponent || baseComponent, childInjector, NAME);\n\n // set options\n callback?.(parent, options);\n\n // close on backdrop click\n let sub: () => void | undefined;\n const childSignal = signal<any>(undefined);\n\n if (component === undefined) {\n return { diaRef, parent, instance: null, childSignal };\n }\n\n // close on esc\n if (!options.disableClose) {\n sub = keyMap('esc', () => diaRef.close(), { injector, stop: true });\n }\n\n function destroy() {\n portal.delete(NAME, parent);\n sub?.();\n }\n\n let vwRef: ViewContainerRef;\n let child: ComponentRef<any> | EmbeddedViewRef<any>;\n const parentInstance = parent.instance as BaseDialog;\n\n parentInstance.afterView.pipe(first()).subscribe(vcRef => {\n vwRef = vcRef;\n createChild(component, vcRef);\n\n // diaRef.onDestroy.subscribe(() => child.destroy());\n diaRef.events.next('created');\n childSignal.set(child);\n });\n\n function replace(component: DialogInput<T>) {\n if (vwRef) {\n vwRef.clear();\n createChild(component, vwRef);\n }\n }\n\n function createChild(component: DialogInput<any>, vcRef: ViewContainerRef) {\n // for template type\n if (component instanceof TemplateRef) {\n child = vcRef.createEmbeddedView(\n component,\n { $implicit: options.data },\n { injector: parent.injector },\n );\n diaRef.events.next('created');\n return;\n }\n // for component type\n child = vcRef.createComponent(component, {\n injector: parent.injector,\n });\n }\n // parent.instance.\n\n return { diaRef, parent, replace, childSignal };\n }\n\n function closeAll() {\n portal.clear(NAME);\n }\n return { open, closeAll, updateBaseComponent };\n}\n","/*\n * Public API Surface of portal\n */\n\nexport * from './portal-close.directive';\nexport {\n BaseDialog,\n DIALOG_INJ,\n type DialogInput,\n DialogOptions,\n DialogRef,\n createInj,\n} from './dialog-ref';\nexport * from './portal-base.service';\nexport * from './portal.component';\nexport * from './portal.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Directive, input, computed } from '@angular/core';
3
+ import { injectDirectionality } from '@ngbase/adk/bidi';
4
+
5
+ class NgbProgressBar {
6
+ constructor() {
7
+ this.progress = inject(NgbProgress);
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbProgressBar, isStandalone: true, selector: "[ngbProgressBar]", host: { properties: { "style.transform": "'translateX(' + progress.total() + '%)'" } }, ngImport: i0 }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbProgressBar, decorators: [{
13
+ type: Directive,
14
+ args: [{
15
+ selector: '[ngbProgressBar]',
16
+ host: {
17
+ '[style.transform]': `'translateX(' + progress.total() + '%)'`,
18
+ },
19
+ }]
20
+ }] });
21
+ class NgbProgress {
22
+ constructor() {
23
+ this.value = input(0);
24
+ this.dir = injectDirectionality();
25
+ this.total = computed(() => {
26
+ const percentage = Math.min(100, Math.max(0, this.value()));
27
+ return this.dir.isRtl() ? 100 - percentage : percentage - 100;
28
+ });
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbProgress, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
31
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbProgress, isStandalone: true, selector: "[ngbProgress]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar" }, properties: { "attr.aria-valuenow": "value()", "attr.aria-valuemin": "0", "attr.aria-valuemax": "100" }, styleAttribute: "overflow: hidden" }, exportAs: ["ngbProgress"], ngImport: i0 }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbProgress, decorators: [{
34
+ type: Directive,
35
+ args: [{
36
+ selector: '[ngbProgress]',
37
+ exportAs: 'ngbProgress',
38
+ host: {
39
+ style: `overflow: hidden`,
40
+ role: 'progressbar',
41
+ '[attr.aria-valuenow]': 'value()',
42
+ '[attr.aria-valuemin]': '0',
43
+ '[attr.aria-valuemax]': '100',
44
+ },
45
+ }]
46
+ }] });
47
+
48
+ /*
49
+ * Public API Surface of progress
50
+ */
51
+
52
+ /**
53
+ * Generated bundle index. Do not edit.
54
+ */
55
+
56
+ export { NgbProgress, NgbProgressBar };
57
+ //# sourceMappingURL=ngbase-adk-progress.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngbase-adk-progress.mjs","sources":["../../../projects/adk/progress/progress.ts","../../../projects/adk/progress/public-api.ts","../../../projects/adk/progress/ngbase-adk-progress.ts"],"sourcesContent":["import { computed, Directive, inject, input } from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\n\n@Directive({\n selector: '[ngbProgressBar]',\n host: {\n '[style.transform]': `'translateX(' + progress.total() + '%)'`,\n },\n})\nexport class NgbProgressBar {\n readonly progress = inject(NgbProgress);\n}\n\n@Directive({\n selector: '[ngbProgress]',\n exportAs: 'ngbProgress',\n host: {\n style: `overflow: hidden`,\n role: 'progressbar',\n '[attr.aria-valuenow]': 'value()',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n },\n})\nexport class NgbProgress {\n readonly value = input(0);\n readonly dir = injectDirectionality();\n\n readonly total = computed(() => {\n const percentage = Math.min(100, Math.max(0, this.value()));\n return this.dir.isRtl() ? 100 - percentage : percentage - 100;\n });\n}\n","/*\n * Public API Surface of progress\n */\n\nexport { NgbProgress, NgbProgressBar } from './progress';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MASa,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;AAOW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AACxC;8GAFY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,CAAyC,uCAAA,CAAA;AAC/D,qBAAA;AACF,iBAAA;;MAgBY,WAAW,CAAA;AAXxB,IAAA,WAAA,GAAA;AAYW,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;QAChB,IAAG,CAAA,GAAA,GAAG,oBAAoB,EAAE;AAE5B,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3D,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,UAAU,GAAG,UAAU,GAAG,GAAG;AAC/D,SAAC,CAAC;AACH;8GARY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,GAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAXvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,CAAkB,gBAAA,CAAA;AACzB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,sBAAsB,EAAE,SAAS;AACjC,wBAAA,sBAAsB,EAAE,GAAG;AAC3B,wBAAA,sBAAsB,EAAE,KAAK;AAC9B,qBAAA;AACF,iBAAA;;;ACvBD;;AAEG;;ACFH;;AAEG;;;;"}