@spartan-ng/brain 0.0.1-alpha.373 → 0.0.1-alpha.379

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 (398) hide show
  1. package/accordion/README.md +3 -0
  2. package/accordion/index.d.ts +13 -0
  3. package/accordion/lib/brn-accordion-content.component.d.ts +15 -0
  4. package/accordion/lib/brn-accordion.directive.d.ts +47 -0
  5. package/alert-dialog/README.md +3 -0
  6. package/alert-dialog/index.d.ts +25 -0
  7. package/alert-dialog/lib/brn-alert-dialog-content.directive.d.ts +6 -0
  8. package/alert-dialog/lib/brn-alert-dialog-description.directive.d.ts +6 -0
  9. package/alert-dialog/lib/brn-alert-dialog-overlay.component.d.ts +6 -0
  10. package/alert-dialog/lib/brn-alert-dialog-title.directive.d.ts +6 -0
  11. package/alert-dialog/lib/brn-alert-dialog-trigger.directive.d.ts +8 -0
  12. package/alert-dialog/lib/brn-alert-dialog.component.d.ts +7 -0
  13. package/avatar/README.md +3 -0
  14. package/avatar/index.d.ts +17 -0
  15. package/avatar/lib/brn-avatar.component.d.ts +7 -0
  16. package/avatar/lib/fallback/brn-avatar-fallback.directive.d.ts +11 -0
  17. package/avatar/lib/fallback/index.d.ts +1 -0
  18. package/avatar/lib/image/brn-avatar-image.directive.d.ts +9 -0
  19. package/avatar/lib/image/index.d.ts +1 -0
  20. package/avatar/lib/util/hex-color-for.d.ts +1 -0
  21. package/avatar/lib/util/index.d.ts +3 -0
  22. package/avatar/lib/util/initials.pipe.d.ts +7 -0
  23. package/avatar/lib/util/is-bright.d.ts +1 -0
  24. package/calendar/README.md +3 -0
  25. package/calendar/index.d.ts +36 -0
  26. package/calendar/lib/brn-calendar-cell-button.directive.d.ts +59 -0
  27. package/calendar/lib/brn-calendar-cell.directive.d.ts +5 -0
  28. package/calendar/lib/brn-calendar-grid.directive.d.ts +7 -0
  29. package/calendar/lib/brn-calendar-header.directive.d.ts +7 -0
  30. package/calendar/lib/brn-calendar-next-button.directive.d.ts +13 -0
  31. package/calendar/lib/brn-calendar-previous-button.directive.d.ts +13 -0
  32. package/calendar/lib/brn-calendar-week.directive.d.ts +25 -0
  33. package/calendar/lib/brn-calendar-weekday.directive.d.ts +25 -0
  34. package/calendar/lib/brn-calendar.directive.d.ts +55 -0
  35. package/calendar/lib/brn-calendar.token.d.ts +8 -0
  36. package/calendar/lib/i18n/calendar-i18n.d.ts +17 -0
  37. package/checkbox/lib/brn-checkbox.component.d.ts +1 -1
  38. package/collapsible/README.md +3 -0
  39. package/collapsible/index.d.ts +16 -0
  40. package/collapsible/lib/brn-collapsible-content.component.d.ts +19 -0
  41. package/collapsible/lib/brn-collapsible-trigger.directive.d.ts +12 -0
  42. package/collapsible/lib/brn-collapsible.component.d.ts +11 -0
  43. package/command/README.md +3 -0
  44. package/command/index.d.ts +33 -0
  45. package/command/lib/brn-command-empty.directive.d.ts +6 -0
  46. package/command/lib/brn-command-group.component.d.ts +6 -0
  47. package/command/lib/brn-command-input.directive.d.ts +6 -0
  48. package/command/lib/brn-command-item.directive.d.ts +6 -0
  49. package/command/lib/brn-command-list.component.d.ts +6 -0
  50. package/command/lib/brn-command-loader.directive.d.ts +6 -0
  51. package/command/lib/brn-command-separator.component.d.ts +6 -0
  52. package/command/lib/brn-command.component.d.ts +6 -0
  53. package/date-time/README.md +3 -0
  54. package/date-time/index.d.ts +2 -0
  55. package/date-time/lib/date-adapter.d.ts +176 -0
  56. package/date-time/lib/native-date-adapter.d.ts +103 -0
  57. package/date-time-luxon/README.md +3 -0
  58. package/date-time-luxon/index.d.ts +1 -0
  59. package/date-time-luxon/lib/date-adapter.d.ts +29 -0
  60. package/dialog/README.md +3 -0
  61. package/dialog/index.d.ts +33 -0
  62. package/dialog/lib/brn-dialog-close.directive.d.ts +10 -0
  63. package/dialog/lib/brn-dialog-content.directive.d.ts +12 -0
  64. package/dialog/lib/brn-dialog-description.directive.d.ts +8 -0
  65. package/dialog/lib/brn-dialog-options.d.ts +26 -0
  66. package/dialog/lib/brn-dialog-overlay.component.d.ts +8 -0
  67. package/dialog/lib/brn-dialog-ref.d.ts +24 -0
  68. package/dialog/lib/brn-dialog-state.d.ts +1 -0
  69. package/dialog/lib/brn-dialog-title.directive.d.ts +8 -0
  70. package/dialog/lib/brn-dialog-trigger.directive.d.ts +16 -0
  71. package/dialog/lib/brn-dialog-utils.d.ts +1 -0
  72. package/dialog/lib/brn-dialog.component.d.ts +56 -0
  73. package/dialog/lib/brn-dialog.service.d.ts +22 -0
  74. package/esm2022/accordion/index.mjs +31 -0
  75. package/esm2022/accordion/lib/brn-accordion-content.component.mjs +50 -0
  76. package/esm2022/accordion/lib/brn-accordion.directive.mjs +180 -0
  77. package/esm2022/accordion/spartan-ng-brain-accordion.mjs +5 -0
  78. package/esm2022/alert-dialog/index.mjs +45 -0
  79. package/esm2022/alert-dialog/lib/brn-alert-dialog-content.directive.mjs +17 -0
  80. package/esm2022/alert-dialog/lib/brn-alert-dialog-description.directive.mjs +18 -0
  81. package/esm2022/alert-dialog/lib/brn-alert-dialog-overlay.component.mjs +20 -0
  82. package/esm2022/alert-dialog/lib/brn-alert-dialog-title.directive.mjs +18 -0
  83. package/esm2022/alert-dialog/lib/brn-alert-dialog-trigger.directive.mjs +27 -0
  84. package/esm2022/alert-dialog/lib/brn-alert-dialog.component.mjs +40 -0
  85. package/esm2022/alert-dialog/spartan-ng-brain-alert-dialog.mjs +5 -0
  86. package/esm2022/avatar/index.mjs +23 -0
  87. package/esm2022/avatar/lib/brn-avatar.component.mjs +31 -0
  88. package/esm2022/avatar/lib/fallback/brn-avatar-fallback.directive.mjs +21 -0
  89. package/esm2022/avatar/lib/fallback/index.mjs +2 -0
  90. package/esm2022/avatar/lib/image/brn-avatar-image.directive.mjs +29 -0
  91. package/esm2022/avatar/lib/image/index.mjs +2 -0
  92. package/esm2022/avatar/lib/util/hex-color-for.mjs +22 -0
  93. package/esm2022/avatar/lib/util/index.mjs +4 -0
  94. package/esm2022/avatar/lib/util/initials.pipe.mjs +27 -0
  95. package/esm2022/avatar/lib/util/is-bright.mjs +12 -0
  96. package/esm2022/avatar/spartan-ng-brain-avatar.mjs +5 -0
  97. package/esm2022/calendar/index.mjs +62 -0
  98. package/esm2022/calendar/lib/brn-calendar-cell-button.directive.mjs +160 -0
  99. package/esm2022/calendar/lib/brn-calendar-cell.directive.mjs +17 -0
  100. package/esm2022/calendar/lib/brn-calendar-grid.directive.mjs +21 -0
  101. package/esm2022/calendar/lib/brn-calendar-header.directive.mjs +22 -0
  102. package/esm2022/calendar/lib/brn-calendar-next-button.directive.mjs +42 -0
  103. package/esm2022/calendar/lib/brn-calendar-previous-button.directive.mjs +42 -0
  104. package/esm2022/calendar/lib/brn-calendar-week.directive.mjs +64 -0
  105. package/esm2022/calendar/lib/brn-calendar-weekday.directive.mjs +48 -0
  106. package/esm2022/calendar/lib/brn-calendar.directive.mjs +154 -0
  107. package/esm2022/calendar/lib/brn-calendar.token.mjs +12 -0
  108. package/esm2022/calendar/lib/i18n/calendar-i18n.mjs +33 -0
  109. package/esm2022/calendar/spartan-ng-brain-calendar.mjs +5 -0
  110. package/esm2022/checkbox/lib/brn-checkbox.component.mjs +1 -1
  111. package/esm2022/collapsible/index.mjs +30 -0
  112. package/esm2022/collapsible/lib/brn-collapsible-content.component.mjs +61 -0
  113. package/esm2022/collapsible/lib/brn-collapsible-trigger.directive.mjs +35 -0
  114. package/esm2022/collapsible/lib/brn-collapsible.component.mjs +33 -0
  115. package/esm2022/collapsible/spartan-ng-brain-collapsible.mjs +5 -0
  116. package/esm2022/command/index.mjs +64 -0
  117. package/esm2022/command/lib/brn-command-empty.directive.mjs +29 -0
  118. package/esm2022/command/lib/brn-command-group.component.mjs +45 -0
  119. package/esm2022/command/lib/brn-command-input.directive.mjs +29 -0
  120. package/esm2022/command/lib/brn-command-item.directive.mjs +36 -0
  121. package/esm2022/command/lib/brn-command-list.component.mjs +35 -0
  122. package/esm2022/command/lib/brn-command-loader.directive.mjs +29 -0
  123. package/esm2022/command/lib/brn-command-separator.component.mjs +30 -0
  124. package/esm2022/command/lib/brn-command.component.mjs +21 -0
  125. package/esm2022/command/spartan-ng-brain-command.mjs +5 -0
  126. package/esm2022/date-time/index.mjs +3 -0
  127. package/esm2022/date-time/lib/date-adapter.mjs +16 -0
  128. package/esm2022/date-time/lib/native-date-adapter.mjs +155 -0
  129. package/esm2022/date-time/spartan-ng-brain-date-time.mjs +5 -0
  130. package/esm2022/date-time-luxon/index.mjs +2 -0
  131. package/esm2022/date-time-luxon/lib/date-adapter.mjs +85 -0
  132. package/esm2022/date-time-luxon/spartan-ng-brain-date-time-luxon.mjs +5 -0
  133. package/esm2022/dialog/index.mjs +55 -0
  134. package/esm2022/dialog/lib/brn-dialog-close.directive.mjs +29 -0
  135. package/esm2022/dialog/lib/brn-dialog-content.directive.mjs +41 -0
  136. package/esm2022/dialog/lib/brn-dialog-description.directive.mjs +25 -0
  137. package/esm2022/dialog/lib/brn-dialog-options.mjs +19 -0
  138. package/esm2022/dialog/lib/brn-dialog-overlay.component.mjs +29 -0
  139. package/esm2022/dialog/lib/brn-dialog-ref.mjs +53 -0
  140. package/esm2022/dialog/lib/brn-dialog-state.mjs +2 -0
  141. package/esm2022/dialog/lib/brn-dialog-title.directive.mjs +25 -0
  142. package/esm2022/dialog/lib/brn-dialog-trigger.directive.mjs +39 -0
  143. package/esm2022/dialog/lib/brn-dialog-utils.mjs +12 -0
  144. package/esm2022/dialog/lib/brn-dialog.component.mjs +208 -0
  145. package/esm2022/dialog/lib/brn-dialog.service.mjs +127 -0
  146. package/esm2022/dialog/spartan-ng-brain-dialog.mjs +5 -0
  147. package/esm2022/form-field/index.mjs +2 -0
  148. package/esm2022/form-field/lib/brn-form-field-control.mjs +14 -0
  149. package/esm2022/form-field/spartan-ng-brain-form-field.mjs +5 -0
  150. package/esm2022/forms/index.mjs +4 -0
  151. package/esm2022/forms/lib/control-value-accessor.mjs +2 -0
  152. package/esm2022/forms/lib/error-options.mjs +26 -0
  153. package/esm2022/forms/lib/error-state-tracker.mjs +29 -0
  154. package/esm2022/forms/spartan-ng-brain-forms.mjs +5 -0
  155. package/esm2022/hover-card/index.mjs +29 -0
  156. package/esm2022/hover-card/lib/brn-hover-card-content.service.mjs +205 -0
  157. package/esm2022/hover-card/lib/brn-hover-card.component.mjs +34 -0
  158. package/esm2022/hover-card/lib/createHoverObservable.mjs +19 -0
  159. package/esm2022/hover-card/spartan-ng-brain-hover-card.mjs +5 -0
  160. package/esm2022/label/index.mjs +17 -0
  161. package/esm2022/label/lib/brn-label.directive.mjs +49 -0
  162. package/esm2022/label/spartan-ng-brain-label.mjs +5 -0
  163. package/esm2022/menu/index.mjs +100 -0
  164. package/esm2022/menu/lib/brn-context-menu-trigger.directive.mjs +40 -0
  165. package/esm2022/menu/lib/brn-menu-align.mjs +15 -0
  166. package/esm2022/menu/lib/brn-menu-bar.directive.mjs +17 -0
  167. package/esm2022/menu/lib/brn-menu-group.directive.mjs +17 -0
  168. package/esm2022/menu/lib/brn-menu-item-checkbox.directive.mjs +30 -0
  169. package/esm2022/menu/lib/brn-menu-item-radio.directive.mjs +30 -0
  170. package/esm2022/menu/lib/brn-menu-item.directive.mjs +27 -0
  171. package/esm2022/menu/lib/brn-menu-trigger.directive.mjs +36 -0
  172. package/esm2022/menu/lib/brn-menu.directive.mjs +50 -0
  173. package/esm2022/menu/spartan-ng-brain-menu.mjs +5 -0
  174. package/esm2022/popover/index.mjs +35 -0
  175. package/esm2022/popover/lib/brn-popover-close.directive.mjs +15 -0
  176. package/esm2022/popover/lib/brn-popover-content.directive.mjs +17 -0
  177. package/esm2022/popover/lib/brn-popover-trigger.directive.mjs +37 -0
  178. package/esm2022/popover/lib/brn-popover.component.mjs +81 -0
  179. package/esm2022/popover/spartan-ng-brain-popover.mjs +5 -0
  180. package/esm2022/progress/index.mjs +21 -0
  181. package/esm2022/progress/lib/brn-progress-indicator.component.mjs +22 -0
  182. package/esm2022/progress/lib/brn-progress.component.mjs +61 -0
  183. package/esm2022/progress/lib/brn-progress.token.mjs +9 -0
  184. package/esm2022/progress/spartan-ng-brain-progress.mjs +5 -0
  185. package/esm2022/radio-group/index.mjs +20 -0
  186. package/esm2022/radio-group/lib/brn-radio-group.component.mjs +90 -0
  187. package/esm2022/radio-group/lib/brn-radio-group.token.mjs +9 -0
  188. package/esm2022/radio-group/lib/brn-radio.component.mjs +185 -0
  189. package/esm2022/radio-group/spartan-ng-brain-radio-group.mjs +5 -0
  190. package/esm2022/select/index.mjs +56 -0
  191. package/esm2022/select/lib/brn-select-content.component.mjs +204 -0
  192. package/esm2022/select/lib/brn-select-group.directive.mjs +19 -0
  193. package/esm2022/select/lib/brn-select-label.directive.mjs +23 -0
  194. package/esm2022/select/lib/brn-select-option.directive.mjs +65 -0
  195. package/esm2022/select/lib/brn-select-value.component.mjs +46 -0
  196. package/esm2022/select/lib/brn-select.component.mjs +358 -0
  197. package/esm2022/select/lib/brn-select.service.mjs +197 -0
  198. package/esm2022/select/spartan-ng-brain-select.mjs +5 -0
  199. package/esm2022/separator/index.mjs +17 -0
  200. package/esm2022/separator/lib/brn-separator.component.mjs +24 -0
  201. package/esm2022/separator/spartan-ng-brain-separator.mjs +5 -0
  202. package/esm2022/sheet/index.mjs +50 -0
  203. package/esm2022/sheet/lib/brn-sheet-close.directive.mjs +15 -0
  204. package/esm2022/sheet/lib/brn-sheet-content.directive.mjs +25 -0
  205. package/esm2022/sheet/lib/brn-sheet-description.directive.mjs +18 -0
  206. package/esm2022/sheet/lib/brn-sheet-overlay.component.mjs +20 -0
  207. package/esm2022/sheet/lib/brn-sheet-title.directive.mjs +18 -0
  208. package/esm2022/sheet/lib/brn-sheet-trigger.directive.mjs +26 -0
  209. package/esm2022/sheet/lib/brn-sheet.component.mjs +55 -0
  210. package/esm2022/sheet/spartan-ng-brain-sheet.mjs +5 -0
  211. package/esm2022/slider/index.mjs +13 -0
  212. package/esm2022/slider/lib/brn-slider-thumb.directive.mjs +41 -0
  213. package/esm2022/slider/lib/brn-slider-tick-mark.directive.mjs +37 -0
  214. package/esm2022/slider/lib/brn-slider-track-active-fill.directive.mjs +29 -0
  215. package/esm2022/slider/lib/brn-slider-track.directive.mjs +290 -0
  216. package/esm2022/slider/spartan-ng-brain-slider.mjs +5 -0
  217. package/esm2022/switch/index.mjs +20 -0
  218. package/esm2022/switch/lib/brn-switch-thumb.component.mjs +16 -0
  219. package/esm2022/switch/lib/brn-switch.component.mjs +236 -0
  220. package/esm2022/switch/spartan-ng-brain-switch.mjs +5 -0
  221. package/esm2022/table/index.mjs +47 -0
  222. package/esm2022/table/lib/brn-cell-def.directive.mjs +22 -0
  223. package/esm2022/table/lib/brn-column-def.component.mjs +82 -0
  224. package/esm2022/table/lib/brn-column-manager.mjs +61 -0
  225. package/esm2022/table/lib/brn-footer-def.directive.mjs +22 -0
  226. package/esm2022/table/lib/brn-header-def.directive.mjs +22 -0
  227. package/esm2022/table/lib/brn-paginator.directive.mjs +109 -0
  228. package/esm2022/table/lib/brn-table.component.mjs +169 -0
  229. package/esm2022/table/spartan-ng-brain-table.mjs +5 -0
  230. package/esm2022/tabs/index.mjs +32 -0
  231. package/esm2022/tabs/lib/brn-tabs-list.directive.mjs +65 -0
  232. package/esm2022/tabs/lib/brn-tabs-paginated-list.directive.mjs +525 -0
  233. package/esm2022/tabs/lib/brn-tabs-trigger.directive.mjs +134 -0
  234. package/esm2022/tabs/spartan-ng-brain-tabs.mjs +5 -0
  235. package/esm2022/toggle/index.mjs +31 -0
  236. package/esm2022/toggle/lib/brn-toggle-group.component.mjs +159 -0
  237. package/esm2022/toggle/lib/brn-toggle-group.token.mjs +9 -0
  238. package/esm2022/toggle/lib/brn-toggle.directive.mjs +65 -0
  239. package/esm2022/toggle/spartan-ng-brain-toggle.mjs +5 -0
  240. package/esm2022/tooltip/index.mjs +35 -0
  241. package/esm2022/tooltip/lib/brn-tooltip-content.component.mjs +228 -0
  242. package/esm2022/tooltip/lib/brn-tooltip-content.directive.mjs +22 -0
  243. package/esm2022/tooltip/lib/brn-tooltip-trigger.directive.mjs +689 -0
  244. package/esm2022/tooltip/lib/brn-tooltip.directive.mjs +15 -0
  245. package/esm2022/tooltip/spartan-ng-brain-tooltip.mjs +5 -0
  246. package/fesm2022/spartan-ng-brain-accordion.mjs +259 -0
  247. package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -0
  248. package/fesm2022/spartan-ng-brain-alert-dialog.mjs +162 -0
  249. package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -0
  250. package/fesm2022/spartan-ng-brain-avatar.mjs +156 -0
  251. package/fesm2022/spartan-ng-brain-avatar.mjs.map +1 -0
  252. package/fesm2022/spartan-ng-brain-calendar.mjs +629 -0
  253. package/fesm2022/spartan-ng-brain-calendar.mjs.map +1 -0
  254. package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
  255. package/fesm2022/spartan-ng-brain-collapsible.mjs +152 -0
  256. package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -0
  257. package/fesm2022/spartan-ng-brain-command.mjs +284 -0
  258. package/fesm2022/spartan-ng-brain-command.mjs.map +1 -0
  259. package/fesm2022/spartan-ng-brain-date-time-luxon.mjs +92 -0
  260. package/fesm2022/spartan-ng-brain-date-time-luxon.mjs.map +1 -0
  261. package/fesm2022/spartan-ng-brain-date-time.mjs +177 -0
  262. package/fesm2022/spartan-ng-brain-date-time.mjs.map +1 -0
  263. package/fesm2022/spartan-ng-brain-dialog.mjs +617 -0
  264. package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -0
  265. package/fesm2022/spartan-ng-brain-form-field.mjs +21 -0
  266. package/fesm2022/spartan-ng-brain-form-field.mjs.map +1 -0
  267. package/fesm2022/spartan-ng-brain-forms.mjs +61 -0
  268. package/fesm2022/spartan-ng-brain-forms.mjs.map +1 -0
  269. package/fesm2022/spartan-ng-brain-hover-card.mjs +274 -0
  270. package/fesm2022/spartan-ng-brain-hover-card.mjs.map +1 -0
  271. package/fesm2022/spartan-ng-brain-label.mjs +69 -0
  272. package/fesm2022/spartan-ng-brain-label.mjs.map +1 -0
  273. package/fesm2022/spartan-ng-brain-menu.mjs +316 -0
  274. package/fesm2022/spartan-ng-brain-menu.mjs.map +1 -0
  275. package/fesm2022/spartan-ng-brain-popover.mjs +173 -0
  276. package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -0
  277. package/fesm2022/spartan-ng-brain-progress.mjs +108 -0
  278. package/fesm2022/spartan-ng-brain-progress.mjs.map +1 -0
  279. package/fesm2022/spartan-ng-brain-radio-group.mjs +299 -0
  280. package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -0
  281. package/fesm2022/spartan-ng-brain-select.mjs +928 -0
  282. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -0
  283. package/fesm2022/spartan-ng-brain-separator.mjs +44 -0
  284. package/fesm2022/spartan-ng-brain-separator.mjs.map +1 -0
  285. package/fesm2022/spartan-ng-brain-sheet.mjs +197 -0
  286. package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -0
  287. package/fesm2022/spartan-ng-brain-slider.mjs +399 -0
  288. package/fesm2022/spartan-ng-brain-slider.mjs.map +1 -0
  289. package/fesm2022/spartan-ng-brain-switch.mjs +271 -0
  290. package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -0
  291. package/fesm2022/spartan-ng-brain-table.mjs +506 -0
  292. package/fesm2022/spartan-ng-brain-table.mjs.map +1 -0
  293. package/fesm2022/spartan-ng-brain-tabs.mjs +748 -0
  294. package/fesm2022/spartan-ng-brain-tabs.mjs.map +1 -0
  295. package/fesm2022/spartan-ng-brain-toggle.mjs +260 -0
  296. package/fesm2022/spartan-ng-brain-toggle.mjs.map +1 -0
  297. package/fesm2022/spartan-ng-brain-tooltip.mjs +975 -0
  298. package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -0
  299. package/form-field/README.md +3 -0
  300. package/form-field/index.d.ts +1 -0
  301. package/form-field/lib/brn-form-field-control.d.ts +11 -0
  302. package/forms/README.md +3 -0
  303. package/forms/index.d.ts +3 -0
  304. package/forms/lib/control-value-accessor.d.ts +2 -0
  305. package/forms/lib/error-options.d.ts +14 -0
  306. package/forms/lib/error-state-tracker.d.ts +15 -0
  307. package/hover-card/README.md +3 -0
  308. package/hover-card/index.d.ts +14 -0
  309. package/hover-card/lib/brn-hover-card-content.service.d.ts +65 -0
  310. package/hover-card/lib/brn-hover-card.component.d.ts +9 -0
  311. package/hover-card/lib/createHoverObservable.d.ts +4 -0
  312. package/label/README.md +3 -0
  313. package/label/index.d.ts +8 -0
  314. package/label/lib/brn-label.directive.d.ts +15 -0
  315. package/menu/README.md +3 -0
  316. package/menu/index.d.ts +49 -0
  317. package/menu/lib/brn-context-menu-trigger.directive.d.ts +13 -0
  318. package/menu/lib/brn-menu-align.d.ts +3 -0
  319. package/menu/lib/brn-menu-bar.directive.d.ts +6 -0
  320. package/menu/lib/brn-menu-group.directive.d.ts +6 -0
  321. package/menu/lib/brn-menu-item-checkbox.directive.d.ts +11 -0
  322. package/menu/lib/brn-menu-item-radio.directive.d.ts +11 -0
  323. package/menu/lib/brn-menu-item.directive.d.ts +10 -0
  324. package/menu/lib/brn-menu-trigger.directive.d.ts +10 -0
  325. package/menu/lib/brn-menu.directive.d.ts +11 -0
  326. package/package.json +182 -9
  327. package/popover/README.md +3 -0
  328. package/popover/index.d.ts +19 -0
  329. package/popover/lib/brn-popover-close.directive.d.ts +6 -0
  330. package/popover/lib/brn-popover-content.directive.d.ts +6 -0
  331. package/popover/lib/brn-popover-trigger.directive.d.ts +10 -0
  332. package/popover/lib/brn-popover.component.d.ts +14 -0
  333. package/progress/README.md +3 -0
  334. package/progress/index.d.ts +14 -0
  335. package/progress/lib/brn-progress-indicator.component.d.ts +6 -0
  336. package/progress/lib/brn-progress.component.d.ts +15 -0
  337. package/progress/lib/brn-progress.token.d.ts +4 -0
  338. package/radio-group/README.md +3 -0
  339. package/radio-group/index.d.ts +13 -0
  340. package/radio-group/lib/brn-radio-group.component.d.ts +57 -0
  341. package/radio-group/lib/brn-radio-group.token.d.ts +4 -0
  342. package/radio-group/lib/brn-radio.component.d.ts +58 -0
  343. package/select/README.md +3 -0
  344. package/select/index.d.ts +28 -0
  345. package/select/lib/brn-select-content.component.d.ts +50 -0
  346. package/select/lib/brn-select-group.directive.d.ts +6 -0
  347. package/select/lib/brn-select-label.directive.d.ts +9 -0
  348. package/select/lib/brn-select-option.directive.d.ts +25 -0
  349. package/select/lib/brn-select-value.component.d.ts +11 -0
  350. package/select/lib/brn-select.component.d.ts +82 -0
  351. package/select/lib/brn-select.service.d.ts +67 -0
  352. package/separator/README.md +3 -0
  353. package/separator/index.d.ts +8 -0
  354. package/separator/lib/brn-separator.component.d.ts +11 -0
  355. package/sheet/README.md +3 -0
  356. package/sheet/index.d.ts +28 -0
  357. package/sheet/lib/brn-sheet-close.directive.d.ts +6 -0
  358. package/sheet/lib/brn-sheet-content.directive.d.ts +8 -0
  359. package/sheet/lib/brn-sheet-description.directive.d.ts +6 -0
  360. package/sheet/lib/brn-sheet-overlay.component.d.ts +6 -0
  361. package/sheet/lib/brn-sheet-title.directive.d.ts +6 -0
  362. package/sheet/lib/brn-sheet-trigger.directive.d.ts +9 -0
  363. package/sheet/lib/brn-sheet.component.d.ts +9 -0
  364. package/slider/README.md +3 -0
  365. package/slider/index.d.ts +7 -0
  366. package/slider/lib/brn-slider-thumb.directive.d.ts +17 -0
  367. package/slider/lib/brn-slider-tick-mark.directive.d.ts +15 -0
  368. package/slider/lib/brn-slider-track-active-fill.directive.d.ts +10 -0
  369. package/slider/lib/brn-slider-track.directive.d.ts +139 -0
  370. package/switch/README.md +3 -0
  371. package/switch/index.d.ts +13 -0
  372. package/switch/lib/brn-switch-thumb.component.d.ts +5 -0
  373. package/switch/lib/brn-switch.component.d.ts +58 -0
  374. package/table/README.md +3 -0
  375. package/table/index.d.ts +26 -0
  376. package/table/lib/brn-cell-def.directive.d.ts +9 -0
  377. package/table/lib/brn-column-def.component.d.ts +18 -0
  378. package/table/lib/brn-column-manager.d.ts +26 -0
  379. package/table/lib/brn-footer-def.directive.d.ts +9 -0
  380. package/table/lib/brn-header-def.directive.d.ts +9 -0
  381. package/table/lib/brn-paginator.directive.d.ts +41 -0
  382. package/table/lib/brn-table.component.d.ts +37 -0
  383. package/tabs/README.md +3 -0
  384. package/tabs/index.d.ts +14 -0
  385. package/tabs/lib/brn-tabs-list.directive.d.ts +17 -0
  386. package/tabs/lib/brn-tabs-paginated-list.directive.d.ts +196 -0
  387. package/tabs/lib/brn-tabs-trigger.directive.d.ts +61 -0
  388. package/toggle/README.md +3 -0
  389. package/toggle/index.d.ts +15 -0
  390. package/toggle/lib/brn-toggle-group.component.d.ts +68 -0
  391. package/toggle/lib/brn-toggle-group.token.d.ts +4 -0
  392. package/toggle/lib/brn-toggle.directive.d.ts +25 -0
  393. package/tooltip/README.md +3 -0
  394. package/tooltip/index.d.ts +19 -0
  395. package/tooltip/lib/brn-tooltip-content.component.d.ts +73 -0
  396. package/tooltip/lib/brn-tooltip-content.directive.d.ts +8 -0
  397. package/tooltip/lib/brn-tooltip-trigger.directive.d.ts +177 -0
  398. package/tooltip/lib/brn-tooltip.directive.d.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spartan-ng-brain-dialog.mjs","sources":["../../../../libs/brain/dialog/src/lib/brn-dialog-utils.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-ref.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-close.directive.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-options.ts","../../../../libs/brain/dialog/src/lib/brn-dialog.service.ts","../../../../libs/brain/dialog/src/lib/brn-dialog.component.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-content.directive.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-description.directive.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-overlay.component.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-title.directive.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-trigger.directive.ts","../../../../libs/brain/dialog/src/index.ts","../../../../libs/brain/dialog/src/spartan-ng-brain-dialog.ts"],"sourcesContent":["// brn-dialog-utils.ts\n\nexport const cssClassesToArray = (classes: string | string[] | undefined | null, defaultClass = ''): string[] => {\n\tif (typeof classes === 'string') {\n\t\tconst splitClasses = classes.trim().split(' ');\n\t\tif (splitClasses.length === 0) {\n\t\t\treturn [defaultClass];\n\t\t}\n\t\treturn splitClasses;\n\t}\n\treturn classes ?? [];\n};\n","import type { DialogRef } from '@angular/cdk/dialog';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport { Observable, Subject, take } from 'rxjs';\nimport type { BrnDialogOptions } from './brn-dialog-options';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { cssClassesToArray } from './brn-dialog-utils';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class BrnDialogRef<DialogResult = any> {\n\tprivate readonly _closing$ = new Subject<void>();\n\tpublic readonly closing$ = this._closing$.asObservable();\n\n\tpublic readonly closed$: Observable<DialogResult | undefined>;\n\n\tprivate _previousTimeout: ReturnType<typeof setTimeout> | undefined;\n\n\tpublic get open() {\n\t\treturn this.state() === 'open';\n\t}\n\n\tconstructor(\n\t\tprivate readonly _cdkDialogRef: DialogRef<DialogResult>,\n\t\tprivate readonly _open: WritableSignal<boolean>,\n\t\tpublic readonly state: Signal<BrnDialogState>,\n\t\tpublic readonly dialogId: number,\n\t\tprivate readonly _options?: BrnDialogOptions,\n\t) {\n\t\tthis.closed$ = this._cdkDialogRef.closed.pipe(take(1));\n\t}\n\n\tpublic close(result?: DialogResult, delay: number = this._options?.closeDelay ?? 0) {\n\t\tif (!this.open || this._options?.disableClose) return;\n\n\t\tthis._closing$.next();\n\t\tthis._open.set(false);\n\n\t\tif (this._previousTimeout) {\n\t\t\tclearTimeout(this._previousTimeout);\n\t\t}\n\n\t\tthis._previousTimeout = setTimeout(() => {\n\t\t\tthis._cdkDialogRef.close(result);\n\t\t}, delay);\n\t}\n\n\tpublic setPanelClass(paneClass: string | null | undefined) {\n\t\tthis._cdkDialogRef.config.panelClass = cssClassesToArray(paneClass);\n\t}\n\n\tpublic setOverlayClass(overlayClass: string | null | undefined) {\n\t\tthis._cdkDialogRef.config.backdropClass = cssClassesToArray(overlayClass);\n\t}\n\n\tpublic setAriaDescribedBy(ariaDescribedBy: string | null | undefined) {\n\t\tthis._cdkDialogRef.config.ariaDescribedBy = ariaDescribedBy;\n\t}\n\n\tpublic setAriaLabelledBy(ariaLabelledBy: string | null | undefined) {\n\t\tthis._cdkDialogRef.config.ariaLabelledBy = ariaLabelledBy;\n\t}\n\n\tpublic setAriaLabel(ariaLabel: string | null | undefined) {\n\t\tthis._cdkDialogRef.config.ariaLabel = ariaLabel;\n\t}\n}\n","import { type NumberInput, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Directive, Input, inject } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: 'button[brnDialogClose]',\n\tstandalone: true,\n\thost: {\n\t\t'(click)': 'close()',\n\t},\n})\nexport class BrnDialogCloseDirective {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tprivate _delay: number | undefined;\n\n\t@Input()\n\tpublic set delay(value: NumberInput) {\n\t\tthis._delay = coerceNumberProperty(value);\n\t}\n\n\tpublic close() {\n\t\tthis._brnDialogRef.close(undefined, this._delay);\n\t}\n}\n","import type { AutoFocusTarget } from '@angular/cdk/dialog';\nimport type {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategyOrigin,\n\tPositionStrategy,\n\tScrollStrategy,\n} from '@angular/cdk/overlay';\nimport type { ElementRef, StaticProvider } from '@angular/core';\n\nexport type BrnDialogOptions = {\n\tid: string;\n\trole: 'dialog' | 'alertdialog';\n\thasBackdrop: boolean;\n\tpanelClass: string | string[];\n\tbackdropClass: string | string[];\n\tpositionStrategy: PositionStrategy | null | undefined;\n\tscrollStrategy: ScrollStrategy | null | undefined;\n\trestoreFocus: boolean | string | ElementRef;\n\tcloseDelay: number;\n\tcloseOnOutsidePointerEvents: boolean;\n\tcloseOnBackdropClick: boolean;\n\tattachTo: FlexibleConnectedPositionStrategyOrigin | null | undefined;\n\tattachPositions: ConnectedPosition[];\n\tautoFocus: AutoFocusTarget | string;\n\tdisableClose: boolean;\n\tariaDescribedBy: string | null | undefined;\n\tariaLabelledBy: string | null | undefined;\n\tariaLabel: string | null | undefined;\n\tariaModal: boolean;\n\tproviders?: StaticProvider[] | (() => StaticProvider[]);\n};\n\nexport const DEFAULT_BRN_DIALOG_OPTIONS: Readonly<Partial<BrnDialogOptions>> = {\n\trole: 'dialog',\n\tattachPositions: [],\n\tattachTo: null,\n\tautoFocus: 'first-tabbable',\n\tbackdropClass: '',\n\tcloseDelay: 0,\n\tcloseOnBackdropClick: true,\n\tcloseOnOutsidePointerEvents: false,\n\thasBackdrop: true,\n\tpanelClass: '',\n\tpositionStrategy: null,\n\trestoreFocus: true,\n\tscrollStrategy: null,\n\tdisableClose: false,\n\tariaLabel: undefined,\n\tariaModal: true,\n};\n","import { DIALOG_DATA, Dialog } from '@angular/cdk/dialog';\nimport { type ComponentType, OverlayPositionBuilder, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport {\n\ttype EffectRef,\n\ttype InjectOptions,\n\tInjectable,\n\tInjector,\n\tRendererFactory2,\n\ttype StaticProvider,\n\ttype TemplateRef,\n\ttype ViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n\tsignal,\n} from '@angular/core';\nimport { Subject, filter, takeUntil } from 'rxjs';\nimport type { BrnDialogOptions } from './brn-dialog-options';\nimport { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { cssClassesToArray } from './brn-dialog-utils';\n\nlet dialogSequence = 0;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BrnDialogContext<T> = T & { close: (result?: any) => void };\n\n/** @deprecated `injectBrnDialogCtx` will no longer be supported once components are stable. Use `injectBrnDialogContext` instead. */\nexport const injectBrnDialogCtx = <T>(): BrnDialogContext<T> => {\n\treturn inject(DIALOG_DATA);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const injectBrnDialogContext = <DialogContext = any>(options: InjectOptions = {}) => {\n\treturn inject(DIALOG_DATA, options) as DialogContext;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class BrnDialogService {\n\tprivate readonly _cdkDialog = inject(Dialog);\n\tprivate readonly _rendererFactory = inject(RendererFactory2);\n\tprivate readonly _renderer = this._rendererFactory.createRenderer(null, null);\n\tprivate readonly _positionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _sso = inject(ScrollStrategyOptions);\n\tprivate readonly _injector = inject(Injector);\n\n\tpublic open<DialogContext>(\n\t\tcontent: ComponentType<unknown> | TemplateRef<unknown>,\n\t\tvcr?: ViewContainerRef,\n\t\tcontext?: DialogContext,\n\t\toptions?: Partial<BrnDialogOptions>,\n\t) {\n\t\tif (options?.id && this._cdkDialog.getDialogById(options.id)) {\n\t\t\tthrow new Error(`Dialog with ID: ${options.id} already exists`);\n\t\t}\n\n\t\tconst positionStrategy =\n\t\t\toptions?.positionStrategy ??\n\t\t\t(options?.attachTo && options?.attachPositions && options?.attachPositions?.length > 0\n\t\t\t\t? this._positionBuilder?.flexibleConnectedTo(options.attachTo).withPositions(options.attachPositions ?? [])\n\t\t\t\t: this._positionBuilder.global().centerHorizontally().centerVertically());\n\n\t\tlet brnDialogRef!: BrnDialogRef;\n\t\tlet effectRef!: EffectRef;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst contextOrData: BrnDialogContext<any> = {\n\t\t\t...context,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tclose: (result: any = undefined) => brnDialogRef.close(result, options?.closeDelay),\n\t\t};\n\n\t\tconst destroyed$ = new Subject<void>();\n\t\tconst open = signal<boolean>(true);\n\t\tconst state = computed<BrnDialogState>(() => (open() ? 'open' : 'closed'));\n\t\tconst dialogId = dialogSequence++;\n\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t// @ts-ignore\n\t\tconst cdkDialogRef = this._cdkDialog.open(content, {\n\t\t\tid: options?.id ?? `brn-dialog-${dialogId}`,\n\t\t\trole: options?.role,\n\t\t\tviewContainerRef: vcr,\n\t\t\ttemplateContext: () => ({\n\t\t\t\t$implicit: contextOrData,\n\t\t\t}),\n\t\t\tdata: contextOrData,\n\t\t\thasBackdrop: options?.hasBackdrop,\n\t\t\tpanelClass: cssClassesToArray(options?.panelClass),\n\t\t\tbackdropClass: cssClassesToArray(options?.backdropClass, 'bg-transparent'),\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy: options?.scrollStrategy ?? this._sso?.block(),\n\t\t\trestoreFocus: options?.restoreFocus,\n\t\t\tdisableClose: true,\n\t\t\tautoFocus: options?.autoFocus ?? 'first-tabbable',\n\t\t\tariaDescribedBy: options?.ariaDescribedBy ?? `brn-dialog-description-${dialogId}`,\n\t\t\tariaLabelledBy: options?.ariaLabelledBy ?? `brn-dialog-title-${dialogId}`,\n\t\t\tariaLabel: options?.ariaLabel,\n\t\t\tariaModal: options?.ariaModal,\n\t\t\tproviders: (cdkDialogRef) => {\n\t\t\t\tbrnDialogRef = new BrnDialogRef(cdkDialogRef, open, state, dialogId, options as BrnDialogOptions);\n\n\t\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\t\teffectRef = effect(() => {\n\t\t\t\t\t\tif (overlay) {\n\t\t\t\t\t\t\tthis._renderer.setAttribute(overlay, 'data-state', state());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (backdrop) {\n\t\t\t\t\t\t\tthis._renderer.setAttribute(backdrop, 'data-state', state());\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tconst providers: StaticProvider[] = [\n\t\t\t\t\t{\n\t\t\t\t\t\tprovide: BrnDialogRef,\n\t\t\t\t\t\tuseValue: brnDialogRef,\n\t\t\t\t\t},\n\t\t\t\t];\n\n\t\t\t\tif (options?.providers) {\n\t\t\t\t\tif (typeof options.providers === 'function') {\n\t\t\t\t\t\tproviders.push(...options.providers());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Array.isArray(options.providers)) {\n\t\t\t\t\t\tproviders.push(...options.providers);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn providers;\n\t\t\t},\n\t\t});\n\n\t\tconst overlay = cdkDialogRef.overlayRef.overlayElement;\n\t\tconst backdrop = cdkDialogRef.overlayRef.backdropElement;\n\n\t\tif (options?.closeOnOutsidePointerEvents) {\n\t\t\tcdkDialogRef.outsidePointerEvents.pipe(takeUntil(destroyed$)).subscribe(() => {\n\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t});\n\t\t}\n\n\t\tif (options?.closeOnBackdropClick) {\n\t\t\tcdkDialogRef.backdropClick.pipe(takeUntil(destroyed$)).subscribe(() => {\n\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t});\n\t\t}\n\n\t\tif (!options?.disableClose) {\n\t\t\tcdkDialogRef.keydownEvents\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter((e) => e.key === 'Escape'),\n\t\t\t\t\ttakeUntil(destroyed$),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t\t});\n\t\t}\n\n\t\tcdkDialogRef.closed.pipe(takeUntil(destroyed$)).subscribe(() => {\n\t\t\teffectRef?.destroy();\n\t\t\tdestroyed$.next();\n\t\t});\n\n\t\treturn brnDialogRef;\n\t}\n}\n","import type { AutoFocusTarget } from '@angular/cdk/dialog';\nimport {\n\ttype ConnectedPosition,\n\ttype FlexibleConnectedPositionStrategyOrigin,\n\tOverlayPositionBuilder,\n\ttype PositionStrategy,\n\ttype ScrollStrategy,\n\tScrollStrategyOptions,\n} from '@angular/cdk/overlay';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\ttype EffectRef,\n\ttype ElementRef,\n\tEventEmitter,\n\tInjector,\n\tInput,\n\tOutput,\n\ttype TemplateRef,\n\tViewContainerRef,\n\tViewEncapsulation,\n\tbooleanAttribute,\n\tcomputed,\n\teffect,\n\tinject,\n\tnumberAttribute,\n\trunInInjectionContext,\n\tsignal,\n} from '@angular/core';\nimport { take } from 'rxjs';\nimport { type BrnDialogOptions, DEFAULT_BRN_DIALOG_OPTIONS } from './brn-dialog-options';\nimport type { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { BrnDialogService } from './brn-dialog.service';\n\n@Component({\n\tselector: 'brn-dialog',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\texportAs: 'brnDialog',\n})\nexport class BrnDialogComponent {\n\tprivate readonly _dialogService = inject(BrnDialogService);\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tpublic readonly positionBuilder = inject(OverlayPositionBuilder);\n\tpublic readonly ssos = inject(ScrollStrategyOptions);\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate _context = {};\n\tprotected _options: Partial<BrnDialogOptions> = {\n\t\t...DEFAULT_BRN_DIALOG_OPTIONS,\n\t};\n\n\tprivate _contentTemplate: TemplateRef<unknown> | undefined;\n\tprivate readonly _dialogRef = signal<BrnDialogRef | undefined>(undefined);\n\tprivate _dialogStateEffectRef?: EffectRef;\n\n\tpublic readonly state = computed(() => this._dialogRef()?.state() ?? 'closed');\n\n\t@Output()\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpublic readonly closed = new EventEmitter<any>();\n\n\t@Output()\n\tpublic readonly stateChanged = new EventEmitter<BrnDialogState>();\n\n\t// eslint-disable-next-line @angular-eslint/no-input-rename\n\t@Input('state')\n\tpublic set newState(state: BrnDialogState) {\n\t\tif (state === 'open') {\n\t\t\tthis.open();\n\t\t}\n\t\tif (state === 'closed') {\n\t\t\tthis.close(this._options.closeDelay);\n\t\t}\n\t}\n\n\t@Input()\n\tpublic set role(role: 'dialog' | 'alertdialog') {\n\t\tthis._options.role = role;\n\t}\n\n\t@Input({ transform: booleanAttribute })\n\tpublic set hasBackdrop(hasBackdrop: boolean) {\n\t\tthis._options.hasBackdrop = hasBackdrop;\n\t}\n\n\t@Input()\n\tpublic set positionStrategy(positionStrategy: PositionStrategy) {\n\t\tthis._options.positionStrategy = positionStrategy;\n\t}\n\n\t@Input()\n\tpublic set scrollStrategy(scrollStrategy: ScrollStrategy | 'close' | 'reposition') {\n\t\tif (scrollStrategy === 'close') {\n\t\t\tthis._options.scrollStrategy = this.ssos.close();\n\t\t} else if (scrollStrategy === 'reposition') {\n\t\t\tthis._options.scrollStrategy = this.ssos.reposition();\n\t\t} else {\n\t\t\tthis._options.scrollStrategy = scrollStrategy;\n\t\t}\n\t}\n\n\t@Input()\n\tpublic set restoreFocus(restoreFocus: boolean | string | ElementRef) {\n\t\tthis._options.restoreFocus = restoreFocus;\n\t}\n\n\t@Input({ transform: booleanAttribute })\n\tpublic set closeOnOutsidePointerEvents(closeOnOutsidePointerEvents: boolean) {\n\t\tthis._options.closeOnOutsidePointerEvents = closeOnOutsidePointerEvents;\n\t}\n\n\t@Input({ transform: booleanAttribute })\n\tpublic set closeOnBackdropClick(closeOnBackdropClick: boolean) {\n\t\tthis._options.closeOnBackdropClick = closeOnBackdropClick;\n\t}\n\n\t@Input()\n\tpublic set attachTo(attachTo: FlexibleConnectedPositionStrategyOrigin | null | undefined) {\n\t\tthis._options.attachTo = attachTo;\n\t}\n\n\t@Input()\n\tpublic set attachPositions(attachPositions: ConnectedPosition[]) {\n\t\tthis._options.attachPositions = attachPositions;\n\t}\n\n\t@Input()\n\tpublic set autoFocus(autoFocus: AutoFocusTarget | string) {\n\t\tthis._options.autoFocus = autoFocus;\n\t}\n\n\t@Input({ transform: numberAttribute })\n\tpublic set closeDelay(closeDelay: number) {\n\t\tthis._options.closeDelay = closeDelay;\n\t}\n\n\t@Input({ transform: booleanAttribute })\n\tpublic set disableClose(disableClose: boolean) {\n\t\tthis._options.disableClose = disableClose;\n\t}\n\n\t/* eslint-disable-next-line @angular-eslint/no-input-rename */\n\t@Input('aria-describedby')\n\tpublic set ariaDescribedBy(ariaDescribedBy: string | null | undefined) {\n\t\tthis.setAriaDescribedBy(ariaDescribedBy);\n\t}\n\n\t/* eslint-disable-next-line @angular-eslint/no-input-rename */\n\t@Input('aria-labelledby')\n\tpublic set ariaLabelledBy(ariaLabelledBy: string | null | undefined) {\n\t\tthis.setAriaLabelledBy(ariaLabelledBy);\n\t}\n\n\t@Input('aria-label')\n\tpublic set ariaLabel(ariaLabel: string | null | undefined) {\n\t\tthis.setAriaLabel(ariaLabel);\n\t}\n\n\t@Input({\n\t\talias: 'aria-modal',\n\t\ttransform: booleanAttribute,\n\t})\n\tpublic set ariaModal(isModal: boolean) {\n\t\tthis.setAriaModal(isModal);\n\t}\n\n\tpublic open<DialogContext>() {\n\t\tif (!this._contentTemplate || this._dialogRef()) return;\n\n\t\tthis._dialogStateEffectRef?.destroy();\n\n\t\tconst dialogRef = this._dialogService.open<DialogContext>(\n\t\t\tthis._contentTemplate,\n\t\t\tthis._vcr,\n\t\t\tthis._context as DialogContext,\n\t\t\tthis._options,\n\t\t);\n\n\t\tthis._dialogRef.set(dialogRef);\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._dialogStateEffectRef = effect(() => this.stateChanged.emit(dialogRef.state()));\n\t\t});\n\n\t\tdialogRef.closed$.pipe(take(1)).subscribe((result) => {\n\t\t\tthis._dialogRef.set(undefined);\n\t\t\tthis.closed.emit(result);\n\t\t});\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpublic close(result: any, delay?: number) {\n\t\tthis._dialogRef()?.close(result, delay ?? this._options.closeDelay);\n\t}\n\n\tpublic registerTemplate(template: TemplateRef<unknown>) {\n\t\tthis._contentTemplate = template;\n\t}\n\n\tpublic setOverlayClass(overlayClass: string | null | undefined) {\n\t\tthis._options.backdropClass = overlayClass ?? '';\n\t\tthis._dialogRef()?.setOverlayClass(overlayClass);\n\t}\n\n\tpublic setPanelClass(panelClass: string | null | undefined) {\n\t\tthis._options.panelClass = panelClass ?? '';\n\t\tthis._dialogRef()?.setPanelClass(panelClass);\n\t}\n\n\tpublic setContext(context: unknown) {\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t// @ts-expect-error\n\t\tthis._context = { ...this._context, ...context };\n\t}\n\n\tpublic setAriaDescribedBy(ariaDescribedBy: string | null | undefined) {\n\t\tthis._options = { ...this._options, ariaDescribedBy };\n\t\tthis._dialogRef()?.setAriaDescribedBy(ariaDescribedBy);\n\t}\n\n\tpublic setAriaLabelledBy(ariaLabelledBy: string | null | undefined) {\n\t\tthis._options = { ...this._options, ariaLabelledBy };\n\t\tthis._dialogRef()?.setAriaLabelledBy(ariaLabelledBy);\n\t}\n\n\tpublic setAriaLabel(ariaLabel: string | null | undefined) {\n\t\tthis._options = { ...this._options, ariaLabel };\n\t\tthis._dialogRef()?.setAriaLabel(ariaLabel);\n\t}\n\n\tpublic setAriaModal(ariaModal: boolean) {\n\t\tthis._options = { ...this._options, ariaModal };\n\t}\n}\n","import { Directive, Input, TemplateRef, computed, inject } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/ui-core';\nimport { BrnDialogRef } from './brn-dialog-ref';\nimport { BrnDialogComponent } from './brn-dialog.component';\n\n@Directive({\n\tselector: '[brnDialogContent]',\n\tstandalone: true,\n\tproviders: [provideExposesStateProviderExisting(() => BrnDialogContentDirective)],\n})\nexport class BrnDialogContentDirective<T> {\n\tprivate readonly _brnDialog = inject(BrnDialogComponent, { optional: true });\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef, { optional: true });\n\tprivate readonly _template = inject(TemplateRef);\n\tpublic readonly state = computed(() => this._brnDialog?.state() ?? this._brnDialogRef?.state() ?? 'closed');\n\n\t@Input()\n\tpublic set class(newClass: string | null | undefined) {\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.setPanelClass(newClass);\n\t}\n\n\t@Input()\n\tpublic set context(context: T) {\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.setContext(context);\n\t}\n\n\tconstructor() {\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.registerTemplate(this._template);\n\t}\n}\n","import { Directive, effect, inject, signal } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: '[brnDialogDescription]',\n\tstandalone: true,\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnDialogDescriptionDirective {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tprotected _id = signal(`brn-dialog-description-${this._brnDialogRef?.dialogId}`);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._brnDialogRef.setAriaDescribedBy(this._id());\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/ui-core';\nimport { BrnDialogComponent } from './brn-dialog.component';\n\n@Component({\n\tselector: 'brn-dialog-overlay',\n\tstandalone: true,\n\ttemplate: '',\n\tproviders: [provideCustomClassSettableExisting(() => BrnDialogOverlayComponent)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class BrnDialogOverlayComponent {\n\tprivate readonly _brnDialog = inject(BrnDialogComponent);\n\n\t@Input()\n\tpublic set class(newClass: string | null | undefined) {\n\t\tthis._brnDialog.setOverlayClass(newClass);\n\t}\n\n\tsetClassToCustomElement(newClass: string) {\n\t\tthis._brnDialog.setOverlayClass(newClass);\n\t}\n}\n","import { Directive, effect, inject, signal } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: '[brnDialogTitle]',\n\tstandalone: true,\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnDialogTitleDirective {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tprotected _id = signal(`brn-dialog-title-${this._brnDialogRef?.dialogId}`);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._brnDialogRef.setAriaLabelledBy(this._id());\n\t\t});\n\t}\n}\n","import { Directive, Input, type Signal, inject, input, signal } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { BrnDialogComponent } from './brn-dialog.component';\n\nlet idSequence = 0;\n\n@Directive({\n\tselector: 'button[brnDialogTrigger],button[brnDialogTriggerFor]',\n\tstandalone: true,\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'(click)': 'open()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId',\n\t},\n\texportAs: 'brnDialogTrigger',\n})\nexport class BrnDialogTriggerDirective {\n\tprotected _brnDialog = inject(BrnDialogComponent, { optional: true });\n\tprotected readonly _brnDialogRef = inject(BrnDialogRef, { optional: true });\n\n\tpublic readonly id = input(`brn-dialog-trigger-${idSequence++}`);\n\n\tpublic readonly state: Signal<BrnDialogState> = this._brnDialogRef?.state ?? signal('closed');\n\tpublic readonly dialogId = `brn-dialog-${this._brnDialogRef?.dialogId ?? idSequence++}`;\n\n\t@Input()\n\tpublic set brnDialogTriggerFor(brnDialog: BrnDialogComponent) {\n\t\tthis._brnDialog = brnDialog;\n\t}\n\n\topen() {\n\t\tthis._brnDialog?.open();\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnDialogCloseDirective } from './lib/brn-dialog-close.directive';\nimport { BrnDialogContentDirective } from './lib/brn-dialog-content.directive';\nimport { BrnDialogDescriptionDirective } from './lib/brn-dialog-description.directive';\nimport { BrnDialogOverlayComponent } from './lib/brn-dialog-overlay.component';\nimport { BrnDialogTitleDirective } from './lib/brn-dialog-title.directive';\nimport { BrnDialogTriggerDirective } from './lib/brn-dialog-trigger.directive';\nimport { BrnDialogComponent } from './lib/brn-dialog.component';\n\nexport * from './lib/brn-dialog-close.directive';\nexport * from './lib/brn-dialog-content.directive';\nexport * from './lib/brn-dialog-description.directive';\nexport * from './lib/brn-dialog-options';\nexport * from './lib/brn-dialog-overlay.component';\nexport * from './lib/brn-dialog-ref';\nexport * from './lib/brn-dialog-state';\nexport * from './lib/brn-dialog-title.directive';\nexport * from './lib/brn-dialog-trigger.directive';\nexport * from './lib/brn-dialog-utils';\nexport * from './lib/brn-dialog.component';\nexport * from './lib/brn-dialog.service';\n\nexport const BrnDialogImports = [\n\tBrnDialogComponent,\n\tBrnDialogOverlayComponent,\n\tBrnDialogTriggerDirective,\n\tBrnDialogCloseDirective,\n\tBrnDialogContentDirective,\n\tBrnDialogTitleDirective,\n\tBrnDialogDescriptionDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnDialogImports],\n\texports: [...BrnDialogImports],\n})\nexport class BrnDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import * as i0 from '@angular/core';
2
+ import { signal, Directive } from '@angular/core';
3
+
4
+ class BrnFormFieldControl {
5
+ /** Gets the AbstractControlDirective for this control. */
6
+ ngControl = null;
7
+ /** Whether the control is in an error state. */
8
+ errorState = signal(false);
9
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnFormFieldControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
10
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: BrnFormFieldControl, ngImport: i0 });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnFormFieldControl, decorators: [{
13
+ type: Directive
14
+ }] });
15
+
16
+ /**
17
+ * Generated bundle index. Do not edit.
18
+ */
19
+
20
+ export { BrnFormFieldControl };
21
+ //# sourceMappingURL=spartan-ng-brain-form-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spartan-ng-brain-form-field.mjs","sources":["../../../../libs/brain/form-field/src/lib/brn-form-field-control.ts","../../../../libs/brain/form-field/src/spartan-ng-brain-form-field.ts"],"sourcesContent":["import { Directive, type Signal, signal } from '@angular/core';\nimport type { AbstractControlDirective, NgControl } from '@angular/forms';\n\n@Directive()\nexport class BrnFormFieldControl {\n\t/** Gets the AbstractControlDirective for this control. */\n\tpublic readonly ngControl: NgControl | AbstractControlDirective | null = null;\n\n\t/** Whether the control is in an error state. */\n\tpublic readonly errorState: Signal<boolean> = signal(false);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAIa,mBAAmB,CAAA;;IAEf,SAAS,GAAgD,IAAI;;AAG7D,IAAA,UAAU,GAAoB,MAAM,CAAC,KAAK,CAAC;0HAL/C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAnB,mBAAmB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACHD;;AAEG;;;;"}
@@ -0,0 +1,61 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, signal } from '@angular/core';
3
+
4
+ /** Error state matcher that matches when a control is invalid and dirty. */
5
+ class ShowOnDirtyErrorStateMatcher {
6
+ isInvalid(control, form) {
7
+ return !!(control && control.invalid && (control.dirty || (form && form.submitted)));
8
+ }
9
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ShowOnDirtyErrorStateMatcher });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, decorators: [{
13
+ type: Injectable
14
+ }] });
15
+ /** Provider that defines how form controls behave with regards to displaying error messages. */
16
+ class ErrorStateMatcher {
17
+ isInvalid(control, form) {
18
+ return !!(control && control.invalid && (control.touched || (form && form.submitted)));
19
+ }
20
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
21
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ErrorStateMatcher, decorators: [{
24
+ type: Injectable,
25
+ args: [{ providedIn: 'root' }]
26
+ }] });
27
+
28
+ class ErrorStateTracker {
29
+ _defaultMatcher;
30
+ ngControl;
31
+ _parentFormGroup;
32
+ _parentForm;
33
+ /** Whether the tracker is currently in an error state. */
34
+ errorState = signal(false);
35
+ /** User-defined matcher for the error state. */
36
+ matcher = null;
37
+ constructor(_defaultMatcher, ngControl, _parentFormGroup, _parentForm) {
38
+ this._defaultMatcher = _defaultMatcher;
39
+ this.ngControl = ngControl;
40
+ this._parentFormGroup = _parentFormGroup;
41
+ this._parentForm = _parentForm;
42
+ }
43
+ /** Updates the error state based on the provided error state matcher. */
44
+ updateErrorState() {
45
+ const oldState = this.errorState();
46
+ const parent = this._parentFormGroup || this._parentForm;
47
+ const matcher = this.matcher || this._defaultMatcher;
48
+ const control = this.ngControl ? this.ngControl.control : null;
49
+ const newState = matcher?.isInvalid(control, parent) ?? false;
50
+ if (newState !== oldState) {
51
+ this.errorState.set(newState);
52
+ }
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Generated bundle index. Do not edit.
58
+ */
59
+
60
+ export { ErrorStateMatcher, ErrorStateTracker, ShowOnDirtyErrorStateMatcher };
61
+ //# sourceMappingURL=spartan-ng-brain-forms.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spartan-ng-brain-forms.mjs","sources":["../../../../libs/brain/forms/src/lib/error-options.ts","../../../../libs/brain/forms/src/lib/error-state-tracker.ts","../../../../libs/brain/forms/src/spartan-ng-brain-forms.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n\tisInvalid(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n\t\treturn !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n\t}\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n\tisInvalid(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n\t\treturn !!(control && control.invalid && (control.touched || (form && form.submitted)));\n\t}\n}\n","import { signal } from '@angular/core';\nimport type { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport type { ErrorStateMatcher } from './error-options';\n\nexport class ErrorStateTracker {\n\t/** Whether the tracker is currently in an error state. */\n\tpublic readonly errorState = signal(false);\n\n\t/** User-defined matcher for the error state. */\n\tpublic matcher: ErrorStateMatcher | null = null;\n\n\tconstructor(\n\t\tprivate readonly _defaultMatcher: ErrorStateMatcher | null,\n\t\tpublic ngControl: NgControl | null,\n\t\tprivate readonly _parentFormGroup: FormGroupDirective | null,\n\t\tprivate readonly _parentForm: NgForm | null,\n\t) {}\n\n\t/** Updates the error state based on the provided error state matcher. */\n\tupdateErrorState() {\n\t\tconst oldState = this.errorState();\n\t\tconst parent = this._parentFormGroup || this._parentForm;\n\t\tconst matcher = this.matcher || this._defaultMatcher;\n\t\tconst control = this.ngControl ? (this.ngControl.control as AbstractControl) : null;\n\t\tconst newState = matcher?.isInvalid(control, parent) ?? false;\n\n\t\tif (newState !== oldState) {\n\t\t\tthis.errorState.set(newState);\n\t\t}\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAGA;MAEa,4BAA4B,CAAA;IACxC,SAAS,CAAC,OAA+B,EAAE,IAAwC,EAAA;QAClF,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;0HAFzE,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAA5B,4BAA4B,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;AAOD;MAEa,iBAAiB,CAAA;IAC7B,SAAS,CAAC,OAA+B,EAAE,IAAwC,EAAA;QAClF,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;0HAF3E,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,uBAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCRrB,iBAAiB,CAAA;AAQX,IAAA,eAAA;AACV,IAAA,SAAA;AACU,IAAA,gBAAA;AACA,IAAA,WAAA;;AATF,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;;IAGnC,OAAO,GAA6B,IAAI;AAE/C,IAAA,WAAA,CACkB,eAAyC,EACnD,SAA2B,EACjB,gBAA2C,EAC3C,WAA0B,EAAA;QAH1B,IAAe,CAAA,eAAA,GAAf,eAAe;QACzB,IAAS,CAAA,SAAA,GAAT,SAAS;QACC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW;;;IAI7B,gBAAgB,GAAA;AACf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe;AACpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC,OAA2B,GAAG,IAAI;AACnF,QAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK;AAE7D,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;;;AAG/B;;AC9BD;;AAEG;;;;"}
@@ -0,0 +1,274 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, TemplateRef, Directive, NgZone, signal, Injectable, ViewContainerRef, ElementRef, Input, Component, ContentChild, NgModule } from '@angular/core';
3
+ import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
4
+ import { TemplatePortal } from '@angular/cdk/portal';
5
+ import { toSignal } from '@angular/core/rxjs-interop';
6
+ import { brnZoneOptimized, provideExposedSideProviderExisting, provideExposesStateProviderExisting } from '@spartan-ng/ui-core';
7
+ import { merge, fromEvent, map, filter, distinctUntilChanged, takeUntil, Subject, BehaviorSubject, switchMap, of, tap, delay, share } from 'rxjs';
8
+ import { FocusMonitor } from '@angular/cdk/a11y';
9
+
10
+ function movedOut({ currentTarget, relatedTarget }) {
11
+ return !isElement(relatedTarget) || !isElement(currentTarget) || !currentTarget.contains(relatedTarget);
12
+ }
13
+ function isElement(node) {
14
+ return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;
15
+ }
16
+ const createHoverObservable = (nativeElement, zone, destroyed$) => {
17
+ return merge(fromEvent(nativeElement, 'mouseenter').pipe(map(() => true)), fromEvent(nativeElement, 'mouseleave').pipe(map(() => false)),
18
+ // Hello, Safari
19
+ fromEvent(nativeElement, 'mouseout').pipe(filter(movedOut), map(() => false)),
20
+ /**
21
+ * NOTE: onmouseout events don't trigger when objects move under mouse in Safari
22
+ * https://bugs.webkit.org/show_bug.cgi?id=4117
23
+ */
24
+ fromEvent(nativeElement, 'transitionend').pipe(map(() => nativeElement.matches(':hover')))).pipe(distinctUntilChanged(), brnZoneOptimized(zone), takeUntil(destroyed$));
25
+ };
26
+
27
+ class BrnHoverCardContentDirective {
28
+ _contentService = inject(BrnHoverCardContentService);
29
+ state = this._contentService.state;
30
+ side = this._contentService.side;
31
+ template = inject(TemplateRef);
32
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
33
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: BrnHoverCardContentDirective, isStandalone: true, selector: "[brnHoverCardContent]", providers: [
34
+ provideExposedSideProviderExisting((() => BrnHoverCardContentDirective)),
35
+ provideExposesStateProviderExisting((() => BrnHoverCardContentDirective)),
36
+ ], exportAs: ["brnHoverCardContent"], ngImport: i0 });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardContentDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: '[brnHoverCardContent]',
42
+ standalone: true,
43
+ exportAs: 'brnHoverCardContent',
44
+ providers: [
45
+ provideExposedSideProviderExisting((() => BrnHoverCardContentDirective)),
46
+ provideExposesStateProviderExisting((() => BrnHoverCardContentDirective)),
47
+ ],
48
+ }]
49
+ }] });
50
+ const topFirstPositions = [
51
+ {
52
+ originX: 'center',
53
+ originY: 'top',
54
+ overlayX: 'center',
55
+ overlayY: 'bottom',
56
+ },
57
+ {
58
+ originX: 'center',
59
+ originY: 'bottom',
60
+ overlayX: 'center',
61
+ overlayY: 'top',
62
+ },
63
+ ];
64
+ const bottomFirstPositions = [
65
+ {
66
+ originX: 'center',
67
+ originY: 'bottom',
68
+ overlayX: 'center',
69
+ overlayY: 'top',
70
+ },
71
+ {
72
+ originX: 'center',
73
+ originY: 'top',
74
+ overlayX: 'center',
75
+ overlayY: 'bottom',
76
+ },
77
+ ];
78
+ class BrnHoverCardContentService {
79
+ _overlay = inject(Overlay);
80
+ _zone = inject(NgZone);
81
+ _psBuilder = inject(OverlayPositionBuilder);
82
+ _content = signal(null);
83
+ _state = signal('closed');
84
+ _config = {};
85
+ _overlayRef;
86
+ _positionStrategy;
87
+ _destroyed$ = new Subject();
88
+ _positionChangesObservables$ = new BehaviorSubject(undefined);
89
+ _overlayHoveredObservables$ = new BehaviorSubject(undefined);
90
+ positionChanges$ = this._positionChangesObservables$.pipe(switchMap((positionChangeObservable) => (positionChangeObservable ? positionChangeObservable : of(undefined))), filter((change) => change !== undefined && change !== null));
91
+ hovered$ = this._overlayHoveredObservables$.pipe(switchMap((overlayHoveredObservable) => (overlayHoveredObservable ? overlayHoveredObservable : of(false))));
92
+ state = this._state.asReadonly();
93
+ side = toSignal(this.positionChanges$.pipe(map((change) =>
94
+ // todo: better translation or adjusting hlm to take that into account
95
+ change.connectionPair.originY === 'center'
96
+ ? change.connectionPair.originX === 'start'
97
+ ? 'left'
98
+ : 'right'
99
+ : change.connectionPair.originY)), { initialValue: 'bottom' });
100
+ setConfig(config) {
101
+ this._config = config;
102
+ if (config.attachTo) {
103
+ this._positionStrategy = this._psBuilder
104
+ .flexibleConnectedTo(config.attachTo)
105
+ .withPositions((config.attachPositions ?? config.align === 'top') ? topFirstPositions : bottomFirstPositions)
106
+ .withDefaultOffsetY(config.sideOffset ?? 0);
107
+ this._config = {
108
+ ...this._config,
109
+ positionStrategy: this._positionStrategy,
110
+ scrollStrategy: this._overlay.scrollStrategies.reposition(),
111
+ };
112
+ this._positionChangesObservables$.next(this._positionStrategy.positionChanges);
113
+ }
114
+ this._overlayRef = this._overlay.create(this._config);
115
+ }
116
+ setContent(value, vcr) {
117
+ this._content.set(new TemplatePortal(value instanceof TemplateRef ? value : value.template, vcr));
118
+ if (!this._overlayRef) {
119
+ this._overlayRef = this._overlay.create(this._config);
120
+ }
121
+ }
122
+ setState(newState) {
123
+ this._state.set(newState);
124
+ }
125
+ show() {
126
+ const content = this._content();
127
+ if (!content || !this._overlayRef)
128
+ return;
129
+ this._overlayRef?.detach();
130
+ this._overlayRef?.attach(content);
131
+ this._destroyed$ = new Subject();
132
+ this._overlayHoveredObservables$.next(createHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$));
133
+ }
134
+ hide() {
135
+ this._overlayRef?.detach();
136
+ this._destroyed$.next();
137
+ this._destroyed$.complete();
138
+ this._destroyed$ = new Subject();
139
+ }
140
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
141
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardContentService });
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardContentService, decorators: [{
144
+ type: Injectable
145
+ }] });
146
+ class BrnHoverCardTriggerDirective {
147
+ _destroy$ = new Subject();
148
+ _vcr = inject(ViewContainerRef);
149
+ _zone = inject(NgZone);
150
+ _el = inject(ElementRef);
151
+ _contentService = inject(BrnHoverCardContentService);
152
+ _focusMonitor = inject(FocusMonitor);
153
+ focused$ = this._focusMonitor.monitor(this._el).pipe(map((e) => e !== null));
154
+ hovered$ = merge(fromEvent(this._el.nativeElement, 'click').pipe(map(() => false)), createHoverObservable(this._el.nativeElement, this._zone, this._destroy$), this._contentService.hovered$, this.focused$).pipe(distinctUntilChanged());
155
+ showing$ = this.hovered$.pipe(
156
+ // we set the state to open here because we are about to open show the content
157
+ tap((visible) => visible && this._contentService.setState('open')), switchMap((visible) => {
158
+ // we are delaying based on the configure-able input
159
+ return of(visible).pipe(delay(visible ? this.showDelay : this.hideDelay));
160
+ }), switchMap((visible) => {
161
+ // don't do anything when we are in the process of showing the content
162
+ if (visible)
163
+ return of(visible);
164
+ // we set the state to closed here to trigger any animations for the element leaving
165
+ this._contentService.setState('closed');
166
+ // then delay to wait for the leaving animation to finish
167
+ return of(visible).pipe(delay(this.animationDelay));
168
+ }), distinctUntilChanged(), share(), takeUntil(this._destroy$));
169
+ showDelay = 300;
170
+ hideDelay = 500;
171
+ animationDelay = 100;
172
+ sideOffset = 5;
173
+ align = 'bottom';
174
+ set brnHoverCardTriggerFor(value) {
175
+ this._contentService.setContent(value, this._vcr);
176
+ }
177
+ ngOnInit() {
178
+ this._contentService.setConfig({ attachTo: this._el, align: this.align, sideOffset: this.sideOffset });
179
+ this.showing$.subscribe((isHovered) => {
180
+ if (isHovered) {
181
+ this._contentService.show();
182
+ }
183
+ else {
184
+ this._contentService.hide();
185
+ }
186
+ });
187
+ }
188
+ ngOnDestroy() {
189
+ this._destroy$.next();
190
+ this._destroy$.complete();
191
+ }
192
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
193
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: BrnHoverCardTriggerDirective, isStandalone: true, selector: "[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)", inputs: { showDelay: "showDelay", hideDelay: "hideDelay", animationDelay: "animationDelay", sideOffset: "sideOffset", align: "align", brnHoverCardTriggerFor: "brnHoverCardTriggerFor" }, exportAs: ["brnHoverCardTrigger"], ngImport: i0 });
194
+ }
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardTriggerDirective, decorators: [{
196
+ type: Directive,
197
+ args: [{
198
+ selector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',
199
+ standalone: true,
200
+ exportAs: 'brnHoverCardTrigger',
201
+ }]
202
+ }], propDecorators: { showDelay: [{
203
+ type: Input
204
+ }], hideDelay: [{
205
+ type: Input
206
+ }], animationDelay: [{
207
+ type: Input
208
+ }], sideOffset: [{
209
+ type: Input
210
+ }], align: [{
211
+ type: Input
212
+ }], brnHoverCardTriggerFor: [{
213
+ type: Input
214
+ }] } });
215
+
216
+ class BrnHoverCardComponent {
217
+ _trigger;
218
+ _content;
219
+ ngAfterContentInit() {
220
+ if (!this._trigger || !this._content)
221
+ return;
222
+ this._trigger.brnHoverCardTriggerFor = this._content;
223
+ }
224
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
225
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: BrnHoverCardComponent, isStandalone: true, selector: "brn-hover-card", providers: [BrnHoverCardContentService], queries: [{ propertyName: "_trigger", first: true, predicate: BrnHoverCardTriggerDirective, descendants: true, static: true }, { propertyName: "_content", first: true, predicate: BrnHoverCardContentDirective, descendants: true, static: true }], ngImport: i0, template: `
226
+ <ng-content />
227
+ `, isInline: true });
228
+ }
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardComponent, decorators: [{
230
+ type: Component,
231
+ args: [{
232
+ selector: 'brn-hover-card',
233
+ standalone: true,
234
+ providers: [BrnHoverCardContentService],
235
+ template: `
236
+ <ng-content />
237
+ `,
238
+ }]
239
+ }], propDecorators: { _trigger: [{
240
+ type: ContentChild,
241
+ args: [BrnHoverCardTriggerDirective, { static: true }]
242
+ }], _content: [{
243
+ type: ContentChild,
244
+ args: [BrnHoverCardContentDirective, { static: true }]
245
+ }] } });
246
+
247
+ const BrnHoverCardImports = [
248
+ BrnHoverCardComponent,
249
+ BrnHoverCardContentDirective,
250
+ BrnHoverCardTriggerDirective,
251
+ ];
252
+ class BrnHoverCardModule {
253
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
254
+ /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardModule, imports: [BrnHoverCardComponent,
255
+ BrnHoverCardContentDirective,
256
+ BrnHoverCardTriggerDirective], exports: [BrnHoverCardComponent,
257
+ BrnHoverCardContentDirective,
258
+ BrnHoverCardTriggerDirective] });
259
+ /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardModule });
260
+ }
261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnHoverCardModule, decorators: [{
262
+ type: NgModule,
263
+ args: [{
264
+ imports: [...BrnHoverCardImports],
265
+ exports: [...BrnHoverCardImports],
266
+ }]
267
+ }] });
268
+
269
+ /**
270
+ * Generated bundle index. Do not edit.
271
+ */
272
+
273
+ export { BrnHoverCardComponent, BrnHoverCardContentDirective, BrnHoverCardContentService, BrnHoverCardImports, BrnHoverCardModule, BrnHoverCardTriggerDirective, createHoverObservable, isElement };
274
+ //# sourceMappingURL=spartan-ng-brain-hover-card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spartan-ng-brain-hover-card.mjs","sources":["../../../../libs/brain/hover-card/src/lib/createHoverObservable.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card-content.service.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card.component.ts","../../../../libs/brain/hover-card/src/index.ts","../../../../libs/brain/hover-card/src/spartan-ng-brain-hover-card.ts"],"sourcesContent":["import type { NgZone } from '@angular/core';\nimport { brnZoneOptimized } from '@spartan-ng/ui-core';\nimport { type Observable, type Subject, distinctUntilChanged, filter, fromEvent, map, merge, takeUntil } from 'rxjs';\n\nfunction movedOut({ currentTarget, relatedTarget }: MouseEvent): boolean {\n\treturn !isElement(relatedTarget) || !isElement(currentTarget) || !currentTarget.contains(relatedTarget);\n}\n\nexport function isElement(node?: Element | EventTarget | Node | null): node is Element {\n\treturn !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport const createHoverObservable = (\n\tnativeElement: HTMLElement,\n\tzone: NgZone,\n\tdestroyed$: Subject<void>,\n): Observable<boolean> => {\n\treturn merge(\n\t\tfromEvent(nativeElement, 'mouseenter').pipe(map(() => true)),\n\t\tfromEvent(nativeElement, 'mouseleave').pipe(map(() => false)),\n\t\t// Hello, Safari\n\t\tfromEvent<MouseEvent>(nativeElement, 'mouseout').pipe(\n\t\t\tfilter(movedOut),\n\t\t\tmap(() => false),\n\t\t),\n\t\t/**\n\t\t * NOTE: onmouseout events don't trigger when objects move under mouse in Safari\n\t\t * https://bugs.webkit.org/show_bug.cgi?id=4117\n\t\t */\n\t\tfromEvent(nativeElement, 'transitionend').pipe(map(() => nativeElement.matches(':hover'))),\n\t).pipe(distinctUntilChanged(), brnZoneOptimized(zone), takeUntil(destroyed$));\n};\n","import {\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\ttype FlexibleConnectedPositionStrategy,\n\tOverlay,\n\ttype OverlayConfig,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tElementRef,\n\tInjectable,\n\tNgZone,\n\ttype Signal,\n\tTemplateRef,\n\tViewContainerRef,\n\tinject,\n\tsignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/ui-core';\nimport { BehaviorSubject, type Observable, Subject, filter, map, of, switchMap } from 'rxjs';\nimport { createHoverObservable } from './createHoverObservable';\n\n@Directive({\n\tselector: '[brnHoverCardContent]',\n\tstandalone: true,\n\texportAs: 'brnHoverCardContent',\n\tproviders: [\n\t\tprovideExposedSideProviderExisting(() => BrnHoverCardContentDirective),\n\t\tprovideExposesStateProviderExisting(() => BrnHoverCardContentDirective),\n\t],\n})\nexport class BrnHoverCardContentDirective implements ExposesState, ExposesSide {\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tpublic readonly state = this._contentService.state;\n\tpublic readonly side = this._contentService.side;\n\tpublic readonly template = inject(TemplateRef);\n}\n\n/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/core/directives/dropdown/dropdown-hover.directive.ts\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Directive, Input, type OnDestroy, type OnInit } from '@angular/core';\nimport { delay, distinctUntilChanged, fromEvent, merge, share, takeUntil, tap } from 'rxjs';\n\nexport type BrnHoverCardOptions = Partial<\n\t{\n\t\tattachTo: ElementRef;\n\t\tattachPositions: ConnectedPosition[];\n\t\talign: 'top' | 'bottom';\n\t\tsideOffset: number;\n\t} & OverlayConfig\n>;\n\nconst topFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n];\nconst bottomFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\n@Injectable()\nexport class BrnHoverCardContentService {\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\tprivate readonly _state = signal<'open' | 'closed'>('closed');\n\n\tprivate _config: BrnHoverCardOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _positionChangesObservables$ = new BehaviorSubject<\n\t\tObservable<ConnectedOverlayPositionChange> | undefined\n\t>(undefined);\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tpublic readonly positionChanges$: Observable<ConnectedOverlayPositionChange> = this._positionChangesObservables$.pipe(\n\t\tswitchMap((positionChangeObservable) => (positionChangeObservable ? positionChangeObservable : of(undefined))),\n\t\tfilter((change): change is NonNullable<ConnectedOverlayPositionChange> => change !== undefined && change !== null),\n\t);\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable ? overlayHoveredObservable : of(false))),\n\t);\n\n\tpublic readonly state = this._state.asReadonly();\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis.positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tpublic setConfig(config: BrnHoverCardOptions) {\n\t\tthis._config = config;\n\t\tif (config.attachTo) {\n\t\t\tthis._positionStrategy = this._psBuilder\n\t\t\t\t.flexibleConnectedTo(config.attachTo)\n\t\t\t\t.withPositions((config.attachPositions ?? config.align === 'top') ? topFirstPositions : bottomFirstPositions)\n\t\t\t\t.withDefaultOffsetY(config.sideOffset ?? 0);\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t\tthis._positionChangesObservables$.next(this._positionStrategy.positionChanges);\n\t\t}\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown> | BrnHoverCardContentDirective, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value instanceof TemplateRef ? value : value.template, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic setState(newState: 'open' | 'closed') {\n\t\tthis._state.set(newState);\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$),\n\t\t);\n\t}\n\n\tpublic hide() {\n\t\tthis._overlayRef?.detach();\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t}\n}\n\n@Directive({\n\tselector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',\n\tstandalone: true,\n\texportAs: 'brnHoverCardTrigger',\n})\nexport class BrnHoverCardTriggerDirective implements OnInit, OnDestroy {\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tpublic readonly focused$: Observable<boolean> = this._focusMonitor.monitor(this._el).pipe(map((e) => e !== null));\n\n\tpublic readonly hovered$: Observable<boolean> = merge(\n\t\tfromEvent(this._el.nativeElement, 'click').pipe(map(() => false)),\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$,\n\t\tthis.focused$,\n\t).pipe(distinctUntilChanged());\n\tpublic readonly showing$: Observable<boolean> = this.hovered$.pipe(\n\t\t// we set the state to open here because we are about to open show the content\n\t\ttap((visible) => visible && this._contentService.setState('open')),\n\t\tswitchMap((visible) => {\n\t\t\t// we are delaying based on the configure-able input\n\t\t\treturn of(visible).pipe(delay(visible ? this.showDelay : this.hideDelay));\n\t\t}),\n\t\tswitchMap((visible) => {\n\t\t\t// don't do anything when we are in the process of showing the content\n\t\t\tif (visible) return of(visible);\n\t\t\t// we set the state to closed here to trigger any animations for the element leaving\n\t\t\tthis._contentService.setState('closed');\n\t\t\t// then delay to wait for the leaving animation to finish\n\t\t\treturn of(visible).pipe(delay(this.animationDelay));\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\t@Input()\n\tpublic showDelay = 300;\n\t@Input()\n\tpublic hideDelay = 500;\n\t@Input()\n\tpublic animationDelay = 100;\n\t@Input()\n\tpublic sideOffset = 5;\n\n\t@Input()\n\tpublic align: 'top' | 'bottom' = 'bottom';\n\n\t@Input()\n\tpublic set brnHoverCardTriggerFor(value: TemplateRef<unknown> | BrnHoverCardContentDirective) {\n\t\tthis._contentService.setContent(value, this._vcr);\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, align: this.align, sideOffset: this.sideOffset });\n\t\tthis.showing$.subscribe((isHovered) => {\n\t\t\tif (isHovered) {\n\t\t\t\tthis._contentService.show();\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n}\n","import { type AfterContentInit, Component, ContentChild } from '@angular/core';\nimport {\n\tBrnHoverCardContentDirective,\n\tBrnHoverCardContentService,\n\tBrnHoverCardTriggerDirective,\n} from './brn-hover-card-content.service';\n\n@Component({\n\tselector: 'brn-hover-card',\n\tstandalone: true,\n\tproviders: [BrnHoverCardContentService],\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n})\nexport class BrnHoverCardComponent implements AfterContentInit {\n\t@ContentChild(BrnHoverCardTriggerDirective, { static: true })\n\tprivate readonly _trigger?: BrnHoverCardTriggerDirective;\n\t@ContentChild(BrnHoverCardContentDirective, { static: true })\n\tprivate readonly _content?: BrnHoverCardContentDirective;\n\n\tpublic ngAfterContentInit() {\n\t\tif (!this._trigger || !this._content) return;\n\t\tthis._trigger.brnHoverCardTriggerFor = this._content;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { BrnHoverCardContentDirective, BrnHoverCardTriggerDirective } from './lib/brn-hover-card-content.service';\nimport { BrnHoverCardComponent } from './lib/brn-hover-card.component';\n\nexport * from './lib/brn-hover-card-content.service';\nexport * from './lib/brn-hover-card.component';\nexport * from './lib/createHoverObservable';\n\nexport const BrnHoverCardImports = [\n\tBrnHoverCardComponent,\n\tBrnHoverCardContentDirective,\n\tBrnHoverCardTriggerDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnHoverCardImports],\n\texports: [...BrnHoverCardImports],\n})\nexport class BrnHoverCardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAIA,SAAS,QAAQ,CAAC,EAAE,aAAa,EAAE,aAAa,EAAc,EAAA;AAC7D,IAAA,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;AACxG;AAEM,SAAU,SAAS,CAAC,IAA0C,EAAA;AACnE,IAAA,OAAO,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;AAC3E;AAEa,MAAA,qBAAqB,GAAG,CACpC,aAA0B,EAC1B,IAAY,EACZ,UAAyB,KACD;AACxB,IAAA,OAAO,KAAK,CACX,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EAC5D,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;;IAE7D,SAAS,CAAa,aAAa,EAAE,UAAU,CAAC,CAAC,IAAI,CACpD,MAAM,CAAC,QAAQ,CAAC,EAChB,GAAG,CAAC,MAAM,KAAK,CAAC,CAChB;AACD;;;AAGG;AACH,IAAA,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC1F,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;AAC9E;;MCQa,4BAA4B,CAAA;AACvB,IAAA,eAAe,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACrD,IAAA,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAClC,IAAA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;0HAJlC,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAL7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,SAAA,EAAA;AACV,YAAA,kCAAkC,EAAC,MAAM,4BAA4B,EAAC;AACtE,YAAA,mCAAmC,EAAC,MAAM,4BAA4B,EAAC;AACvE,SAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEW,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBATxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;AACV,wBAAA,kCAAkC,EAAC,MAAK,4BAA6B,EAAC;AACtE,wBAAA,mCAAmC,EAAC,MAAK,4BAA6B,EAAC;AACvE,qBAAA;AACD,iBAAA;;AA2BD,MAAM,iBAAiB,GAAwB;AAC9C,IAAA;AACC,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE,QAAQ;AAClB,KAAA;AACD,IAAA;AACC,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE,KAAK;AACf,KAAA;CACD;AACD,MAAM,oBAAoB,GAAwB;AACjD,IAAA;AACC,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE,KAAK;AACf,KAAA;AACD,IAAA;AACC,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE,QAAQ;AAClB,KAAA;CACD;MAGY,0BAA0B,CAAA;AACrB,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACtB,IAAA,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAE3C,IAAA,QAAQ,GAAG,MAAM,CAAiC,IAAI,CAAC;AACvD,IAAA,MAAM,GAAG,MAAM,CAAoB,QAAQ,CAAC;IAErD,OAAO,GAAwB,EAAE;AACjC,IAAA,WAAW;AACX,IAAA,iBAAiB;AACjB,IAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;AAExB,IAAA,4BAA4B,GAAG,IAAI,eAAe,CAEjE,SAAS,CAAC;AACK,IAAA,2BAA2B,GAAG,IAAI,eAAe,CAAkC,SAAS,CAAC;IAE9F,gBAAgB,GAA+C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CACpH,SAAS,CAAC,CAAC,wBAAwB,MAAM,wBAAwB,GAAG,wBAAwB,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAC9G,MAAM,CAAC,CAAC,MAAM,KAA4D,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC,CAClH;AACe,IAAA,QAAQ,GAAwB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACpF,SAAS,CAAC,CAAC,wBAAwB,MAAM,wBAAwB,GAAG,wBAAwB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1G;AAEe,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,IAAA,IAAI,GAAgD,QAAQ,CAC3E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACzB,GAAG,CAAsE,CAAC,MAAM;;AAE/E,IAAA,MAAM,CAAC,cAAc,CAAC,OAAO,KAAK;AACjC,UAAE,MAAM,CAAC,cAAc,CAAC,OAAO,KAAK;AACnC,cAAE;AACF,cAAE;AACH,UAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAChC,CACD,EACD,EAAE,YAAY,EAAE,QAAQ,EAAE,CAC1B;AAEM,IAAA,SAAS,CAAC,MAA2B,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACpB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC5B,iBAAA,mBAAmB,CAAC,MAAM,CAAC,QAAQ;iBACnC,aAAa,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,iBAAiB,GAAG,oBAAoB;AAC3G,iBAAA,kBAAkB,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,GAAG;gBACd,GAAG,IAAI,CAAC,OAAO;gBACf,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;gBACxC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;aAC3D;YACD,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;;AAE/E,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;;IAG/C,UAAU,CAAC,KAA0D,EAAE,GAAqB,EAAA;QAClG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,cAAc,CAAU,KAAK,YAAY,WAAW,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAE1G,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAIhD,IAAA,QAAQ,CAAC,QAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;;IAGnB,IAAI,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;AAEnC,QAAA,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;AAC1B,QAAA,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC;AAEjC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAQ;QAEtC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACpC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CACjF;;IAGK,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAQ;;0HAxF3B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAA1B,0BAA0B,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;MAkGY,4BAA4B,CAAA;AACvB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAC/B,IAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/B,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACtB,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AACxB,IAAA,eAAe,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACpD,IAAA,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;IAErC,QAAQ,GAAwB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAEjG,QAAQ,GAAwB,KAAK,CACpD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,EACjE,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EACzE,IAAI,CAAC,eAAe,CAAC,QAAQ,EAC7B,IAAI,CAAC,QAAQ,CACb,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACd,IAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI;;IAEjE,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAClE,SAAS,CAAC,CAAC,OAAO,KAAI;;QAErB,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1E,KAAC,CAAC,EACF,SAAS,CAAC,CAAC,OAAO,KAAI;;AAErB,QAAA,IAAI,OAAO;AAAE,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC;;AAE/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAEvC,QAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpD,KAAC,CAAC,EACF,oBAAoB,EAAE,EACtB,KAAK,EAAE,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CACzB;IAGM,SAAS,GAAG,GAAG;IAEf,SAAS,GAAG,GAAG;IAEf,cAAc,GAAG,GAAG;IAEpB,UAAU,GAAG,CAAC;IAGd,KAAK,GAAqB,QAAQ;IAEzC,IACW,sBAAsB,CAAC,KAA0D,EAAA;QAC3F,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;;IAG3C,QAAQ,GAAA;QACd,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;YACrC,IAAI,SAAS,EAAE;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;iBACrB;AACN,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;AAE7B,SAAC,CAAC;;IAGI,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;0HAlEd,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oFAAoF;AAC9F,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,iBAAA;8BAsCO,SAAS,EAAA,CAAA;sBADf;gBAGM,SAAS,EAAA,CAAA;sBADf;gBAGM,cAAc,EAAA,CAAA;sBADpB;gBAGM,UAAU,EAAA,CAAA;sBADhB;gBAIM,KAAK,EAAA,CAAA;sBADX;gBAIU,sBAAsB,EAAA,CAAA;sBADhC;;;MCjOW,qBAAqB,CAAA;AAEhB,IAAA,QAAQ;AAER,IAAA,QAAQ;IAElB,kBAAkB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QACtC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ;;0HARzC,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EALtB,CAAC,0BAA0B,CAAC,gEAMzB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE5B,4BAA4B,EAPhC,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEW,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,0BAA0B,CAAC;AACvC,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;AACD,iBAAA;8BAGiB,QAAQ,EAAA,CAAA;sBADxB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAG3C,QAAQ,EAAA,CAAA;sBADxB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ACVhD,MAAA,mBAAmB,GAAG;IAClC,qBAAqB;IACrB,4BAA4B;IAC5B,4BAA4B;;MAOhB,kBAAkB,CAAA;0HAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAT9B,qBAAqB;YACrB,4BAA4B;AAC5B,YAAA,4BAA4B,aAF5B,qBAAqB;YACrB,4BAA4B;YAC5B,4BAA4B,CAAA,EAAA,CAAA;2HAOhB,kBAAkB,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE,CAAC,GAAG,mBAAmB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,GAAG,mBAAmB,CAAC;AACjC,iBAAA;;;ACjBD;;AAEG;;;;"}
@@ -0,0 +1,69 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, PLATFORM_ID, ElementRef, signal, Directive, NgModule } from '@angular/core';
3
+ import { isPlatformBrowser } from '@angular/common';
4
+ import { NgControl } from '@angular/forms';
5
+
6
+ let nextId = 0;
7
+ class BrnLabelDirective {
8
+ _ngControl = inject(NgControl, { optional: true });
9
+ id = input(`brn-label-${nextId++}`);
10
+ _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
11
+ _element = inject(ElementRef).nativeElement;
12
+ _changes;
13
+ _dataDisabled = signal('auto');
14
+ dataDisabled = this._dataDisabled.asReadonly();
15
+ ngOnInit() {
16
+ if (!this._isBrowser)
17
+ return;
18
+ this._changes = new MutationObserver((mutations) => {
19
+ mutations.forEach((mutation) => {
20
+ if (mutation.attributeName !== 'data-disabled')
21
+ return;
22
+ // eslint-disable-next-line
23
+ const state = mutation.target.attributes.getNamedItem(mutation.attributeName)?.value === 'true';
24
+ this._dataDisabled.set(state ?? 'auto');
25
+ });
26
+ });
27
+ this._changes?.observe(this._element, {
28
+ attributes: true,
29
+ childList: true,
30
+ characterData: true,
31
+ });
32
+ }
33
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
34
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.5", type: BrnLabelDirective, isStandalone: true, selector: "[brnLabel]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "id()", "class.ng-invalid": "this._ngControl?.invalid || null", "class.ng-dirty": "this._ngControl?.dirty || null", "class.ng-valid": "this._ngControl?.valid || null", "class.ng-touched": "this._ngControl?.touched || null" } }, ngImport: i0 });
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnLabelDirective, decorators: [{
37
+ type: Directive,
38
+ args: [{
39
+ selector: '[brnLabel]',
40
+ standalone: true,
41
+ host: {
42
+ '[id]': 'id()',
43
+ '[class.ng-invalid]': 'this._ngControl?.invalid || null',
44
+ '[class.ng-dirty]': 'this._ngControl?.dirty || null',
45
+ '[class.ng-valid]': 'this._ngControl?.valid || null',
46
+ '[class.ng-touched]': 'this._ngControl?.touched || null',
47
+ },
48
+ }]
49
+ }] });
50
+
51
+ class BrnLabelModule {
52
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
53
+ /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: BrnLabelModule, imports: [BrnLabelDirective], exports: [BrnLabelDirective] });
54
+ /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnLabelModule });
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnLabelModule, decorators: [{
57
+ type: NgModule,
58
+ args: [{
59
+ imports: [BrnLabelDirective],
60
+ exports: [BrnLabelDirective],
61
+ }]
62
+ }] });
63
+
64
+ /**
65
+ * Generated bundle index. Do not edit.
66
+ */
67
+
68
+ export { BrnLabelDirective, BrnLabelModule };
69
+ //# sourceMappingURL=spartan-ng-brain-label.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spartan-ng-brain-label.mjs","sources":["../../../../libs/brain/label/src/lib/brn-label.directive.ts","../../../../libs/brain/label/src/index.ts","../../../../libs/brain/label/src/spartan-ng-brain-label.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, type OnInit, PLATFORM_ID, inject, input, signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[brnLabel]',\n\tstandalone: true,\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'[class.ng-invalid]': 'this._ngControl?.invalid || null',\n\t\t'[class.ng-dirty]': 'this._ngControl?.dirty || null',\n\t\t'[class.ng-valid]': 'this._ngControl?.valid || null',\n\t\t'[class.ng-touched]': 'this._ngControl?.touched || null',\n\t},\n})\nexport class BrnLabelDirective implements OnInit {\n\tprotected readonly _ngControl = inject(NgControl, { optional: true });\n\n\tpublic readonly id = input<string>(`brn-label-${nextId++}`);\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _element = inject(ElementRef).nativeElement;\n\tprivate _changes?: MutationObserver;\n\tprivate readonly _dataDisabled = signal<boolean | 'auto'>('auto');\n\tpublic readonly dataDisabled = this._dataDisabled.asReadonly();\n\n\tngOnInit(): void {\n\t\tif (!this._isBrowser) return;\n\t\tthis._changes = new MutationObserver((mutations: MutationRecord[]) => {\n\t\t\tmutations.forEach((mutation: MutationRecord) => {\n\t\t\t\tif (mutation.attributeName !== 'data-disabled') return;\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tconst state = (mutation.target as any).attributes.getNamedItem(mutation.attributeName)?.value === 'true';\n\t\t\t\tthis._dataDisabled.set(state ?? 'auto');\n\t\t\t});\n\t\t});\n\t\tthis._changes?.observe(this._element, {\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tcharacterData: true,\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { BrnLabelDirective } from './lib/brn-label.directive';\n\nexport * from './lib/brn-label.directive';\n\n@NgModule({\n\timports: [BrnLabelDirective],\n\texports: [BrnLabelDirective],\n})\nexport class BrnLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}