@agorapulse/ui-components 14.0.5 → 14.0.6

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 (307) hide show
  1. package/{src/lib/add-comment → add-comment}/add-comment.component.d.ts +1 -1
  2. package/add-comment/index.d.ts +5 -0
  3. package/add-comment/public_api.d.ts +1 -0
  4. package/agorapulse-ui-components-14.0.6.tgz +0 -0
  5. package/{src/lib/avatar → avatar}/avatar.component.d.ts +1 -1
  6. package/avatar/index.d.ts +5 -0
  7. package/avatar/public_api.d.ts +1 -0
  8. package/{src/lib/confirm-modal → confirm-modal}/confirm-modal-texts.model.d.ts +0 -0
  9. package/{src/lib/confirm-modal → confirm-modal}/confirm-modal.component.d.ts +2 -2
  10. package/confirm-modal/index.d.ts +5 -0
  11. package/confirm-modal/public_api.d.ts +2 -0
  12. package/{src/lib/datepicker → datepicker}/datepicker.component.d.ts +2 -2
  13. package/datepicker/index.d.ts +5 -0
  14. package/datepicker/public_api.d.ts +1 -0
  15. package/{src/lib/directives → directives}/autosize-textarea.directive.d.ts +1 -1
  16. package/{src/lib/directives → directives}/default-image.directive.d.ts +1 -1
  17. package/{src/lib/directives → directives}/ellipsis.directive.d.ts +1 -1
  18. package/{src/lib/directives → directives}/equal-validator.directive.d.ts +1 -1
  19. package/{src/lib/directives → directives}/frozen-gif.directive.d.ts +1 -1
  20. package/directives/index.d.ts +5 -0
  21. package/{src/lib/directives → directives}/multi-style-text.directive.d.ts +1 -1
  22. package/directives/public_api.d.ts +7 -0
  23. package/{src/lib/directives → directives}/truncate-tooltip.directive.d.ts +2 -3
  24. package/{src/lib/dots-stepper → dots-stepper}/dots-stepper.component.d.ts +1 -1
  25. package/dots-stepper/index.d.ts +5 -0
  26. package/dots-stepper/public_api.d.ts +1 -0
  27. package/esm2020/add-comment/add-comment.component.mjs +70 -0
  28. package/esm2020/add-comment/agorapulse-ui-components-add-comment.mjs +5 -0
  29. package/esm2020/add-comment/public_api.mjs +2 -0
  30. package/esm2020/avatar/agorapulse-ui-components-avatar.mjs +5 -0
  31. package/esm2020/avatar/avatar.component.mjs +138 -0
  32. package/esm2020/avatar/public_api.mjs +2 -0
  33. package/esm2020/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +5 -0
  34. package/esm2020/confirm-modal/confirm-modal-texts.model.mjs +2 -0
  35. package/esm2020/confirm-modal/confirm-modal.component.mjs +61 -0
  36. package/esm2020/confirm-modal/public_api.mjs +3 -0
  37. package/esm2020/datepicker/agorapulse-ui-components-datepicker.mjs +5 -0
  38. package/esm2020/datepicker/datepicker.component.mjs +225 -0
  39. package/esm2020/datepicker/public_api.mjs +2 -0
  40. package/esm2020/directives/agorapulse-ui-components-directives.mjs +5 -0
  41. package/esm2020/directives/autosize-textarea.directive.mjs +44 -0
  42. package/esm2020/directives/default-image.directive.mjs +32 -0
  43. package/esm2020/directives/ellipsis.directive.mjs +86 -0
  44. package/esm2020/directives/equal-validator.directive.mjs +66 -0
  45. package/esm2020/directives/frozen-gif.directive.mjs +116 -0
  46. package/esm2020/directives/multi-style-text.directive.mjs +136 -0
  47. package/esm2020/directives/public_api.mjs +8 -0
  48. package/esm2020/directives/truncate-tooltip.directive.mjs +33 -0
  49. package/esm2020/dots-stepper/agorapulse-ui-components-dots-stepper.mjs +5 -0
  50. package/esm2020/dots-stepper/dots-stepper.component.mjs +43 -0
  51. package/esm2020/dots-stepper/public_api.mjs +2 -0
  52. package/esm2020/index.mjs +27 -33
  53. package/esm2020/infobox/agorapulse-ui-components-infobox.mjs +5 -0
  54. package/esm2020/infobox/infobox.component.mjs +30 -0
  55. package/esm2020/infobox/public_api.mjs +2 -0
  56. package/esm2020/labels/agorapulse-ui-components-labels.mjs +5 -0
  57. package/esm2020/labels/label-list.component.mjs +101 -0
  58. package/esm2020/labels/label.component.mjs +56 -0
  59. package/esm2020/labels/public_api.mjs +3 -0
  60. package/esm2020/labels-selector/agorapulse-ui-components-labels-selector.mjs +5 -0
  61. package/esm2020/labels-selector/labels-selector.component.mjs +95 -0
  62. package/esm2020/labels-selector/public_api.mjs +2 -0
  63. package/esm2020/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +5 -0
  64. package/esm2020/media-display-overlay/media-display-overlay-dialog.component.mjs +88 -0
  65. package/esm2020/media-display-overlay/public_api.mjs +2 -0
  66. package/esm2020/modal/agorapulse-ui-components-modal.mjs +5 -0
  67. package/esm2020/modal/modal.component.mjs +99 -0
  68. package/esm2020/modal/public_api.mjs +2 -0
  69. package/esm2020/notification/agorapulse-ui-components-notification.mjs +5 -0
  70. package/esm2020/notification/notification.component.mjs +17 -0
  71. package/esm2020/notification/public_api.mjs +2 -0
  72. package/esm2020/paginator/agorapulse-ui-components-paginator.mjs +5 -0
  73. package/esm2020/paginator/paginator-button/paginator-button.component.mjs +24 -0
  74. package/esm2020/paginator/paginator.component.mjs +56 -0
  75. package/esm2020/paginator/public_api.mjs +3 -0
  76. package/esm2020/password-input/agorapulse-ui-components-password-input.mjs +5 -0
  77. package/esm2020/password-input/password-input.component.mjs +70 -0
  78. package/esm2020/password-input/public_api.mjs +2 -0
  79. package/esm2020/popmenu/agorapulse-ui-components-popmenu.mjs +5 -0
  80. package/esm2020/popmenu/options.mjs +17 -0
  81. package/esm2020/popmenu/popmenu-options.interface.mjs +2 -0
  82. package/esm2020/popmenu/popmenu-options.service.mjs +7 -0
  83. package/esm2020/popmenu/popmenu.component.mjs +368 -0
  84. package/esm2020/popmenu/popmenu.directive.mjs +241 -0
  85. package/esm2020/popmenu/popmenu.module.mjs +35 -0
  86. package/esm2020/{src/lib/popmenu/index.mjs → popmenu/public_api.mjs} +1 -1
  87. package/esm2020/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +5 -0
  88. package/esm2020/slide-toggle/public_api.mjs +2 -0
  89. package/esm2020/slide-toggle/slide-toggle.component.mjs +65 -0
  90. package/esm2020/snackbar/agorapulse-ui-components-snackbar.mjs +5 -0
  91. package/esm2020/snackbar/public_api.mjs +2 -0
  92. package/esm2020/snackbar/snackbar.component.mjs +22 -0
  93. package/esm2020/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +5 -0
  94. package/esm2020/snackbars-thread/component/snackbars-thread.component.mjs +71 -0
  95. package/esm2020/snackbars-thread/model/snackbars-thread.model.mjs +41 -0
  96. package/esm2020/snackbars-thread/public_api.mjs +4 -0
  97. package/esm2020/snackbars-thread/service/snackbars-thread.service.mjs +41 -0
  98. package/esm2020/snackbars-thread/utils/const/snackbars-thread.const.mjs +13 -0
  99. package/esm2020/src/lib/agorapulse-ui-components.module.mjs +60 -87
  100. package/esm2020/stepper/agorapulse-ui-components-stepper.mjs +5 -0
  101. package/esm2020/stepper/public_api.mjs +3 -0
  102. package/esm2020/stepper/step.model.mjs +2 -0
  103. package/esm2020/stepper/stepper.component.mjs +37 -0
  104. package/esm2020/text-measurement/agorapulse-ui-components-text-measurement.mjs +5 -0
  105. package/esm2020/text-measurement/public_api.mjs +2 -0
  106. package/esm2020/text-measurement/text-measurement.service.mjs +28 -0
  107. package/esm2020/tooltip-neo/agorapulse-ui-components-tooltip-neo.mjs +5 -0
  108. package/esm2020/tooltip-neo/public_api.mjs +4 -0
  109. package/esm2020/tooltip-neo/tooltip-neo.component.mjs +44 -0
  110. package/esm2020/tooltip-neo/tooltip-neo.const.mjs +67 -0
  111. package/esm2020/tooltip-neo/tooltip-neo.directive.mjs +156 -0
  112. package/esm2020/tooltip-neo/tooltip-neo.model.mjs +2 -0
  113. package/esm2020/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.service.mjs +1 -1
  114. package/fesm2015/agorapulse-ui-components-add-comment.mjs +77 -0
  115. package/fesm2015/agorapulse-ui-components-add-comment.mjs.map +1 -0
  116. package/fesm2015/agorapulse-ui-components-avatar.mjs +146 -0
  117. package/fesm2015/agorapulse-ui-components-avatar.mjs.map +1 -0
  118. package/fesm2015/agorapulse-ui-components-confirm-modal.mjs +68 -0
  119. package/fesm2015/agorapulse-ui-components-confirm-modal.mjs.map +1 -0
  120. package/fesm2015/agorapulse-ui-components-datepicker.mjs +235 -0
  121. package/fesm2015/agorapulse-ui-components-datepicker.mjs.map +1 -0
  122. package/fesm2015/agorapulse-ui-components-directives.mjs +509 -0
  123. package/fesm2015/agorapulse-ui-components-directives.mjs.map +1 -0
  124. package/fesm2015/agorapulse-ui-components-dots-stepper.mjs +50 -0
  125. package/fesm2015/agorapulse-ui-components-dots-stepper.mjs.map +1 -0
  126. package/fesm2015/agorapulse-ui-components-infobox.mjs +37 -0
  127. package/fesm2015/agorapulse-ui-components-infobox.mjs.map +1 -0
  128. package/fesm2015/agorapulse-ui-components-labels-selector.mjs +103 -0
  129. package/fesm2015/agorapulse-ui-components-labels-selector.mjs.map +1 -0
  130. package/fesm2015/agorapulse-ui-components-labels.mjs +160 -0
  131. package/fesm2015/agorapulse-ui-components-labels.mjs.map +1 -0
  132. package/fesm2015/agorapulse-ui-components-media-display-overlay.mjs +97 -0
  133. package/fesm2015/agorapulse-ui-components-media-display-overlay.mjs.map +1 -0
  134. package/fesm2015/agorapulse-ui-components-modal.mjs +106 -0
  135. package/fesm2015/agorapulse-ui-components-modal.mjs.map +1 -0
  136. package/fesm2015/agorapulse-ui-components-notification.mjs +24 -0
  137. package/fesm2015/agorapulse-ui-components-notification.mjs.map +1 -0
  138. package/fesm2015/agorapulse-ui-components-paginator.mjs +82 -0
  139. package/fesm2015/agorapulse-ui-components-paginator.mjs.map +1 -0
  140. package/fesm2015/agorapulse-ui-components-password-input.mjs +77 -0
  141. package/fesm2015/agorapulse-ui-components-password-input.mjs.map +1 -0
  142. package/fesm2015/agorapulse-ui-components-popmenu.mjs +666 -0
  143. package/fesm2015/agorapulse-ui-components-popmenu.mjs.map +1 -0
  144. package/fesm2015/agorapulse-ui-components-slide-toggle.mjs +72 -0
  145. package/fesm2015/agorapulse-ui-components-slide-toggle.mjs.map +1 -0
  146. package/fesm2015/agorapulse-ui-components-snackbar.mjs +31 -0
  147. package/fesm2015/agorapulse-ui-components-snackbar.mjs.map +1 -0
  148. package/fesm2015/agorapulse-ui-components-snackbars-thread.mjs +169 -0
  149. package/fesm2015/agorapulse-ui-components-snackbars-thread.mjs.map +1 -0
  150. package/fesm2015/agorapulse-ui-components-stepper.mjs +45 -0
  151. package/fesm2015/agorapulse-ui-components-stepper.mjs.map +1 -0
  152. package/fesm2015/agorapulse-ui-components-text-measurement.mjs +35 -0
  153. package/fesm2015/agorapulse-ui-components-text-measurement.mjs.map +1 -0
  154. package/fesm2015/agorapulse-ui-components-tooltip-neo.mjs +283 -0
  155. package/fesm2015/agorapulse-ui-components-tooltip-neo.mjs.map +1 -0
  156. package/fesm2015/agorapulse-ui-components.mjs +82 -2824
  157. package/fesm2015/agorapulse-ui-components.mjs.map +1 -1
  158. package/fesm2020/agorapulse-ui-components-add-comment.mjs +77 -0
  159. package/fesm2020/agorapulse-ui-components-add-comment.mjs.map +1 -0
  160. package/fesm2020/agorapulse-ui-components-avatar.mjs +145 -0
  161. package/fesm2020/agorapulse-ui-components-avatar.mjs.map +1 -0
  162. package/fesm2020/agorapulse-ui-components-confirm-modal.mjs +68 -0
  163. package/fesm2020/agorapulse-ui-components-confirm-modal.mjs.map +1 -0
  164. package/fesm2020/agorapulse-ui-components-datepicker.mjs +232 -0
  165. package/fesm2020/agorapulse-ui-components-datepicker.mjs.map +1 -0
  166. package/fesm2020/agorapulse-ui-components-directives.mjs +507 -0
  167. package/fesm2020/agorapulse-ui-components-directives.mjs.map +1 -0
  168. package/fesm2020/agorapulse-ui-components-dots-stepper.mjs +50 -0
  169. package/fesm2020/agorapulse-ui-components-dots-stepper.mjs.map +1 -0
  170. package/fesm2020/agorapulse-ui-components-infobox.mjs +37 -0
  171. package/fesm2020/agorapulse-ui-components-infobox.mjs.map +1 -0
  172. package/fesm2020/agorapulse-ui-components-labels-selector.mjs +102 -0
  173. package/fesm2020/agorapulse-ui-components-labels-selector.mjs.map +1 -0
  174. package/fesm2020/agorapulse-ui-components-labels.mjs +160 -0
  175. package/fesm2020/agorapulse-ui-components-labels.mjs.map +1 -0
  176. package/fesm2020/agorapulse-ui-components-media-display-overlay.mjs +95 -0
  177. package/fesm2020/agorapulse-ui-components-media-display-overlay.mjs.map +1 -0
  178. package/fesm2020/agorapulse-ui-components-modal.mjs +106 -0
  179. package/fesm2020/agorapulse-ui-components-modal.mjs.map +1 -0
  180. package/fesm2020/agorapulse-ui-components-notification.mjs +24 -0
  181. package/fesm2020/agorapulse-ui-components-notification.mjs.map +1 -0
  182. package/fesm2020/agorapulse-ui-components-paginator.mjs +82 -0
  183. package/fesm2020/agorapulse-ui-components-paginator.mjs.map +1 -0
  184. package/fesm2020/agorapulse-ui-components-password-input.mjs +77 -0
  185. package/fesm2020/agorapulse-ui-components-password-input.mjs.map +1 -0
  186. package/fesm2020/agorapulse-ui-components-popmenu.mjs +664 -0
  187. package/fesm2020/agorapulse-ui-components-popmenu.mjs.map +1 -0
  188. package/fesm2020/agorapulse-ui-components-slide-toggle.mjs +72 -0
  189. package/fesm2020/agorapulse-ui-components-slide-toggle.mjs.map +1 -0
  190. package/fesm2020/agorapulse-ui-components-snackbar.mjs +29 -0
  191. package/fesm2020/agorapulse-ui-components-snackbar.mjs.map +1 -0
  192. package/fesm2020/agorapulse-ui-components-snackbars-thread.mjs +169 -0
  193. package/fesm2020/agorapulse-ui-components-snackbars-thread.mjs.map +1 -0
  194. package/fesm2020/agorapulse-ui-components-stepper.mjs +44 -0
  195. package/fesm2020/agorapulse-ui-components-stepper.mjs.map +1 -0
  196. package/fesm2020/agorapulse-ui-components-text-measurement.mjs +35 -0
  197. package/fesm2020/agorapulse-ui-components-text-measurement.mjs.map +1 -0
  198. package/fesm2020/agorapulse-ui-components-tooltip-neo.mjs +282 -0
  199. package/fesm2020/agorapulse-ui-components-tooltip-neo.mjs.map +1 -0
  200. package/fesm2020/agorapulse-ui-components.mjs +79 -2807
  201. package/fesm2020/agorapulse-ui-components.mjs.map +1 -1
  202. package/index.d.ts +28 -34
  203. package/infobox/index.d.ts +5 -0
  204. package/{src/lib/infobox → infobox}/infobox.component.d.ts +1 -1
  205. package/infobox/public_api.d.ts +1 -0
  206. package/labels/index.d.ts +5 -0
  207. package/{src/lib/labels → labels}/label-list.component.d.ts +2 -2
  208. package/{src/lib/labels → labels}/label.component.d.ts +2 -2
  209. package/labels/public_api.d.ts +2 -0
  210. package/labels-selector/index.d.ts +5 -0
  211. package/{src/lib/labels-selector → labels-selector}/labels-selector.component.d.ts +2 -2
  212. package/labels-selector/public_api.d.ts +1 -0
  213. package/media-display-overlay/index.d.ts +5 -0
  214. package/{src/lib/media-display-overlay → media-display-overlay}/media-display-overlay-dialog.component.d.ts +1 -1
  215. package/media-display-overlay/public_api.d.ts +1 -0
  216. package/modal/index.d.ts +5 -0
  217. package/{src/lib/modal → modal}/modal.component.d.ts +3 -4
  218. package/modal/public_api.d.ts +1 -0
  219. package/notification/index.d.ts +5 -0
  220. package/{src/lib/notification → notification}/notification.component.d.ts +1 -1
  221. package/notification/public_api.d.ts +1 -0
  222. package/package.json +169 -1
  223. package/paginator/index.d.ts +5 -0
  224. package/{src/lib/paginator → paginator}/paginator-button/paginator-button.component.d.ts +1 -1
  225. package/{src/lib/paginator → paginator}/paginator.component.d.ts +1 -1
  226. package/paginator/public_api.d.ts +2 -0
  227. package/password-input/index.d.ts +5 -0
  228. package/{src/lib/password-input → password-input}/password-input.component.d.ts +1 -1
  229. package/password-input/public_api.d.ts +1 -0
  230. package/popmenu/index.d.ts +5 -0
  231. package/{src/lib/popmenu → popmenu}/options.d.ts +0 -0
  232. package/{src/lib/popmenu → popmenu}/popmenu-options.interface.d.ts +0 -0
  233. package/{src/lib/popmenu → popmenu}/popmenu-options.service.d.ts +0 -0
  234. package/{src/lib/popmenu → popmenu}/popmenu.component.d.ts +1 -1
  235. package/{src/lib/popmenu → popmenu}/popmenu.directive.d.ts +1 -1
  236. package/{src/lib/popmenu → popmenu}/popmenu.module.d.ts +1 -4
  237. package/{src/lib/popmenu/index.d.ts → popmenu/public_api.d.ts} +0 -0
  238. package/slide-toggle/index.d.ts +5 -0
  239. package/slide-toggle/public_api.d.ts +1 -0
  240. package/{src/lib/slide-toggle → slide-toggle}/slide-toggle.component.d.ts +1 -1
  241. package/snackbar/index.d.ts +5 -0
  242. package/snackbar/public_api.d.ts +1 -0
  243. package/{src/lib/snackbar → snackbar}/snackbar.component.d.ts +1 -1
  244. package/{src/lib/snackbars-thread → snackbars-thread}/component/snackbars-thread.component.d.ts +1 -1
  245. package/snackbars-thread/index.d.ts +5 -0
  246. package/{src/lib/snackbars-thread → snackbars-thread}/model/snackbars-thread.model.d.ts +1 -1
  247. package/snackbars-thread/public_api.d.ts +3 -0
  248. package/{src/lib/snackbars-thread → snackbars-thread}/service/snackbars-thread.service.d.ts +0 -0
  249. package/{src/lib/snackbars-thread → snackbars-thread}/utils/const/snackbars-thread.const.d.ts +0 -0
  250. package/src/lib/agorapulse-ui-components.module.d.ts +24 -38
  251. package/stepper/index.d.ts +5 -0
  252. package/stepper/public_api.d.ts +2 -0
  253. package/{src/lib/stepper → stepper}/step.model.d.ts +0 -0
  254. package/{src/lib/stepper → stepper}/stepper.component.d.ts +1 -1
  255. package/text-measurement/index.d.ts +5 -0
  256. package/text-measurement/public_api.d.ts +1 -0
  257. package/{src/lib/text-measurement → text-measurement}/text-measurement.service.d.ts +0 -0
  258. package/tooltip-neo/index.d.ts +5 -0
  259. package/tooltip-neo/public_api.d.ts +3 -0
  260. package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.component.d.ts +1 -1
  261. package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.const.d.ts +0 -0
  262. package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.directive.d.ts +2 -2
  263. package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.model.d.ts +0 -0
  264. package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.service.d.ts +0 -0
  265. package/agorapulse-ui-components-14.0.5.tgz +0 -0
  266. package/esm2020/src/lib/add-comment/add-comment.component.mjs +0 -64
  267. package/esm2020/src/lib/avatar/avatar.component.mjs +0 -137
  268. package/esm2020/src/lib/confirm-modal/confirm-modal-texts.model.mjs +0 -2
  269. package/esm2020/src/lib/confirm-modal/confirm-modal.component.mjs +0 -61
  270. package/esm2020/src/lib/datepicker/datepicker.component.mjs +0 -219
  271. package/esm2020/src/lib/directives/autosize-textarea.directive.mjs +0 -43
  272. package/esm2020/src/lib/directives/default-image.directive.mjs +0 -31
  273. package/esm2020/src/lib/directives/ellipsis.directive.mjs +0 -85
  274. package/esm2020/src/lib/directives/equal-validator.directive.mjs +0 -65
  275. package/esm2020/src/lib/directives/frozen-gif.directive.mjs +0 -115
  276. package/esm2020/src/lib/directives/multi-style-text.directive.mjs +0 -135
  277. package/esm2020/src/lib/directives/truncate-tooltip.directive.mjs +0 -33
  278. package/esm2020/src/lib/dots-stepper/dots-stepper.component.mjs +0 -43
  279. package/esm2020/src/lib/infobox/infobox.component.mjs +0 -24
  280. package/esm2020/src/lib/labels/label-list.component.mjs +0 -98
  281. package/esm2020/src/lib/labels/label.component.mjs +0 -53
  282. package/esm2020/src/lib/labels-selector/labels-selector.component.mjs +0 -92
  283. package/esm2020/src/lib/media-display-overlay/media-display-overlay-dialog.component.mjs +0 -87
  284. package/esm2020/src/lib/modal/modal.component.mjs +0 -96
  285. package/esm2020/src/lib/notification/notification.component.mjs +0 -17
  286. package/esm2020/src/lib/paginator/paginator-button/paginator-button.component.mjs +0 -23
  287. package/esm2020/src/lib/paginator/paginator.component.mjs +0 -54
  288. package/esm2020/src/lib/password-input/password-input.component.mjs +0 -69
  289. package/esm2020/src/lib/popmenu/options.mjs +0 -17
  290. package/esm2020/src/lib/popmenu/popmenu-options.interface.mjs +0 -2
  291. package/esm2020/src/lib/popmenu/popmenu-options.service.mjs +0 -7
  292. package/esm2020/src/lib/popmenu/popmenu.component.mjs +0 -357
  293. package/esm2020/src/lib/popmenu/popmenu.directive.mjs +0 -240
  294. package/esm2020/src/lib/popmenu/popmenu.module.mjs +0 -47
  295. package/esm2020/src/lib/slide-toggle/slide-toggle.component.mjs +0 -67
  296. package/esm2020/src/lib/snackbar/snackbar.component.mjs +0 -21
  297. package/esm2020/src/lib/snackbars-thread/component/snackbars-thread.component.mjs +0 -70
  298. package/esm2020/src/lib/snackbars-thread/model/snackbars-thread.model.mjs +0 -41
  299. package/esm2020/src/lib/snackbars-thread/service/snackbars-thread.service.mjs +0 -41
  300. package/esm2020/src/lib/snackbars-thread/utils/const/snackbars-thread.const.mjs +0 -13
  301. package/esm2020/src/lib/stepper/step.model.mjs +0 -2
  302. package/esm2020/src/lib/stepper/stepper.component.mjs +0 -36
  303. package/esm2020/src/lib/text-measurement/text-measurement.service.mjs +0 -28
  304. package/esm2020/src/lib/tooltip-neo/tooltip-neo.component.mjs +0 -44
  305. package/esm2020/src/lib/tooltip-neo/tooltip-neo.const.mjs +0 -67
  306. package/esm2020/src/lib/tooltip-neo/tooltip-neo.directive.mjs +0 -137
  307. package/esm2020/src/lib/tooltip-neo/tooltip-neo.model.mjs +0 -2
@@ -0,0 +1,507 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive, HostListener, Input, EventEmitter, Output, forwardRef, Attribute } from '@angular/core';
3
+ import { NG_VALIDATORS } from '@angular/forms';
4
+ import { fromEvent } from 'rxjs';
5
+ import * as i1 from '@agorapulse/ui-components/tooltip-neo';
6
+
7
+ /**
8
+ * expand textarea to fit content. Doesn't shrink.
9
+ */
10
+ class AutosizeTextareaDirective {
11
+ constructor(element) {
12
+ this.element = element;
13
+ }
14
+ onInput() {
15
+ this.resize();
16
+ }
17
+ ngAfterContentChecked() {
18
+ this.resize();
19
+ }
20
+ resize() {
21
+ const style = this.element.nativeElement.style;
22
+ const scrollHeight = this.element.nativeElement.scrollHeight;
23
+ const actualHeight = this.element.nativeElement.offsetHeight;
24
+ if (AutosizeTextareaDirective.maxHeight < scrollHeight) {
25
+ // we arrived at the max
26
+ style.overflow = 'auto';
27
+ style.height = `${AutosizeTextareaDirective.maxHeight}px`;
28
+ }
29
+ else if (actualHeight < scrollHeight) {
30
+ style.overflow = 'hidden';
31
+ style.height = `${scrollHeight}px`;
32
+ }
33
+ }
34
+ }
35
+ AutosizeTextareaDirective.maxHeight = 200;
36
+ AutosizeTextareaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AutosizeTextareaDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
37
+ AutosizeTextareaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: AutosizeTextareaDirective, isStandalone: true, selector: "textarea[apAutosize]", host: { listeners: { "input": "onInput()" } }, ngImport: i0 });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AutosizeTextareaDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: 'textarea[apAutosize]',
42
+ standalone: true
43
+ }]
44
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onInput: [{
45
+ type: HostListener,
46
+ args: ['input']
47
+ }] } });
48
+
49
+ class DefaultImageDirective {
50
+ updateUrl() {
51
+ if (this.default) {
52
+ this.src = this.default;
53
+ }
54
+ else {
55
+ this.src = 'assets/lib-ui-components/img/default-avatar.png';
56
+ }
57
+ }
58
+ }
59
+ DefaultImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DefaultImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
60
+ DefaultImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: DefaultImageDirective, isStandalone: true, selector: "img[default]", inputs: { src: "src", default: "default" }, host: { listeners: { "error": "updateUrl()" }, properties: { "src": "src" } }, ngImport: i0 });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DefaultImageDirective, decorators: [{
62
+ type: Directive,
63
+ args: [{
64
+ // eslint-disable-next-line @angular-eslint/directive-selector
65
+ selector: 'img[default]',
66
+ standalone: true,
67
+ // eslint-disable-next-line @angular-eslint/no-host-metadata-property
68
+ host: {
69
+ '(error)': 'updateUrl()',
70
+ '[src]': 'src'
71
+ }
72
+ }]
73
+ }], propDecorators: { src: [{
74
+ type: Input
75
+ }], default: [{
76
+ type: Input
77
+ }] } });
78
+
79
+ /**
80
+ * Removes excess text from element until it fits in elements
81
+ * and appends a ellipsis symbol to end of text. This requires that
82
+ * the elements height be fixed
83
+ *
84
+ * @example
85
+ * ```html
86
+ * <p apEllipsis>Ullamco esse laborum</p>
87
+ * ```
88
+ *
89
+ */
90
+ class EllipsisDirective {
91
+ constructor(el) {
92
+ this.el = el;
93
+ this.apEllipsisClip = false;
94
+ this.apEllipsisChar = '...';
95
+ this.apEllipsisClickable = false;
96
+ this.apEllipsisRemovedElementsCount = new EventEmitter();
97
+ this.apEllipsisRemovedText = new EventEmitter();
98
+ }
99
+ get hasOverflow() {
100
+ const el = this.el.nativeElement;
101
+ return (el.scrollHeight > el.offsetHeight) || (el.scrollWidth > el.offsetWidth);
102
+ }
103
+ ngAfterContentChecked() {
104
+ this.clipText();
105
+ }
106
+ clipText() {
107
+ const el = this.el.nativeElement;
108
+ let text = el.innerText;
109
+ let removedText = '';
110
+ if (this.apEllipsisIndex > -1) {
111
+ removedText = text.substring(this.apEllipsisIndex, text.length - 1) + removedText;
112
+ text = text.substring(0, this.apEllipsisIndex);
113
+ el.innerText = `${text}${this.apEllipsisChar}`;
114
+ if (this.apEllipsisClickable) {
115
+ el.addEventListener('click', () => {
116
+ el.innerText = `${text}${removedText}`;
117
+ });
118
+ }
119
+ }
120
+ else {
121
+ while (this.hasOverflow && text.length > 0) {
122
+ removedText = text[text.length - 1] + removedText;
123
+ text = text.substring(0, text.length - 1);
124
+ el.innerText = `${text}${this.apEllipsisChar}`;
125
+ }
126
+ }
127
+ if (this.apEllipsisSeparator) {
128
+ const removedElementsCount = removedText.split(this.apEllipsisSeparator)
129
+ .filter(element => !!element && element.length > 0).length;
130
+ if (removedElementsCount > 0) {
131
+ this.apEllipsisRemovedElementsCount.emit(removedElementsCount);
132
+ }
133
+ }
134
+ if (removedText && removedText.length > 0) {
135
+ this.apEllipsisRemovedText.emit(removedText);
136
+ }
137
+ }
138
+ }
139
+ EllipsisDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: EllipsisDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
140
+ EllipsisDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: EllipsisDirective, isStandalone: true, selector: "[apEllipsis]", inputs: { apEllipsisSeparator: "apEllipsisSeparator", apEllipsisClip: "apEllipsisClip", apEllipsisIndex: "apEllipsisIndex", apEllipsisChar: "apEllipsisChar", apEllipsisClickable: "apEllipsisClickable" }, outputs: { apEllipsisRemovedElementsCount: "apEllipsisRemovedElementsCount", apEllipsisRemovedText: "apEllipsisRemovedText" }, ngImport: i0 });
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: EllipsisDirective, decorators: [{
142
+ type: Directive,
143
+ args: [{
144
+ selector: '[apEllipsis]',
145
+ standalone: true,
146
+ }]
147
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { apEllipsisSeparator: [{
148
+ type: Input
149
+ }], apEllipsisClip: [{
150
+ type: Input
151
+ }], apEllipsisIndex: [{
152
+ type: Input
153
+ }], apEllipsisChar: [{
154
+ type: Input
155
+ }], apEllipsisClickable: [{
156
+ type: Input
157
+ }], apEllipsisRemovedElementsCount: [{
158
+ type: Output
159
+ }], apEllipsisRemovedText: [{
160
+ type: Output
161
+ }] } });
162
+
163
+ // Based on https://scotch.io/tutorials/how-to-implement-a-custom-validator-directive-confirm-password-in-angular-2
164
+ class EqualValidatorDirective {
165
+ constructor(validateEqual, validateEqualReference) {
166
+ this.validateEqual = validateEqual;
167
+ this.validateEqualReference = validateEqualReference;
168
+ }
169
+ validate(self) {
170
+ const other = self.root.get(this.validateEqual);
171
+ if (other) {
172
+ if (this.isReference()) {
173
+ if (self.value === other.value) {
174
+ delete other.errors['validateEqual'];
175
+ if (!Object.keys(other.errors).length) {
176
+ other.setErrors(null);
177
+ }
178
+ }
179
+ else {
180
+ other.setErrors({ validateEqual: false });
181
+ }
182
+ }
183
+ else if (self.value !== other.value) {
184
+ return { validateEqual: false };
185
+ }
186
+ }
187
+ return null;
188
+ }
189
+ isReference() {
190
+ if (!this.validateEqualReference) {
191
+ return false;
192
+ }
193
+ return this.validateEqualReference === 'true';
194
+ }
195
+ }
196
+ EqualValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: EqualValidatorDirective, deps: [{ token: 'validateEqual', attribute: true }, { token: 'validateEqualReference', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
197
+ EqualValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: EqualValidatorDirective, isStandalone: true, selector: "[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]", providers: [
198
+ {
199
+ provide: NG_VALIDATORS,
200
+ useExisting: forwardRef(() => EqualValidatorDirective),
201
+ multi: true
202
+ }
203
+ ], ngImport: i0 });
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: EqualValidatorDirective, decorators: [{
205
+ type: Directive,
206
+ args: [{
207
+ // eslint-disable-next-line @angular-eslint/directive-selector
208
+ selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',
209
+ providers: [
210
+ {
211
+ provide: NG_VALIDATORS,
212
+ useExisting: forwardRef(() => EqualValidatorDirective),
213
+ multi: true
214
+ }
215
+ ],
216
+ standalone: true,
217
+ }]
218
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
219
+ type: Attribute,
220
+ args: ['validateEqual']
221
+ }] }, { type: undefined, decorators: [{
222
+ type: Attribute,
223
+ args: ['validateEqualReference']
224
+ }] }]; } });
225
+
226
+ class GifService {
227
+ static isGif(src) {
228
+ return src && src.split('?')[0].endsWith('.gif');
229
+ }
230
+ }
231
+ /**
232
+ * If the image is a GIF then replace the img element by a canvas containing a frozen gif.
233
+ * Note 1: if the image is displayed under a condition, the condition must be applied on the parent of the image, so the
234
+ * new canvas element will have the same condition.
235
+ * Note 2: the image must not have the properties "display" and "visibility" in its style. Since they are used to frozen
236
+ * the GIF. You need to apply this properties on the parent element.
237
+ * Note 3: If the GIF is frozen, all the event are propagated to the image. However, all events are dispatched
238
+ * with an Event instance. Ex: click event is not dispatched with a MouseEvent instance.
239
+ */
240
+ class FrozenGifDirective {
241
+ constructor(elementRef) {
242
+ this.elementRef = elementRef;
243
+ this.apFrozen = true;
244
+ // Add all the events that need to be propagated.
245
+ this.apGifEvents = ['click'];
246
+ const element = this.elementRef.nativeElement;
247
+ if (!(element instanceof HTMLImageElement)) {
248
+ return;
249
+ }
250
+ this.element = element;
251
+ }
252
+ ngOnChanges(changes) {
253
+ let freeze = false;
254
+ if (changes.src) {
255
+ freeze = true;
256
+ }
257
+ if (changes.frozen) {
258
+ if (changes.frozen.currentValue) {
259
+ freeze = true;
260
+ }
261
+ else {
262
+ this.unfreeze();
263
+ }
264
+ }
265
+ if (freeze) {
266
+ this.freeze();
267
+ }
268
+ }
269
+ freeze() {
270
+ if (!GifService.isGif(this.src) || !this.apFrozen) {
271
+ this.unfreeze();
272
+ return;
273
+ }
274
+ // hack to avoid displaying the GIF before replacing it by the canvas
275
+ this.element.style.visibility = 'hidden';
276
+ this.element.addEventListener('load', () => this.addCanvas());
277
+ }
278
+ addCanvas() {
279
+ if (this.canvas) {
280
+ this.canvas.remove();
281
+ }
282
+ this.canvas = document.createElement('canvas');
283
+ this.canvas.width = this.element.width;
284
+ this.canvas.height = this.element.height;
285
+ this.canvas.getContext('2d').drawImage(this.element, 0, 0, this.canvas.width, this.canvas.height);
286
+ for (let i = 0; i < this.element.attributes.length; i++) {
287
+ const attr = this.element.attributes[i];
288
+ if (attr.name === 'id') { // avoid two elements with the same id
289
+ this.canvas.setAttribute('id', attr.value + '_frozenGif');
290
+ }
291
+ else if (attr.name === 'style' && attr.value.includes('visibility: hidden;') || attr.value.includes('display: none;')) {
292
+ // remove the added 'visibility: hidden' and 'display: none'
293
+ const styleValue = attr.value;
294
+ this.canvas.setAttribute('style', styleValue.replace('visibility: hidden;', '').replace('display: none;', ''));
295
+ }
296
+ else if (attr.name !== '"') { // test for invalid attributes
297
+ this.canvas.setAttribute(attr.name, attr.value);
298
+ }
299
+ }
300
+ this.addEvents();
301
+ this.element.parentNode.insertBefore(this.canvas, this.element);
302
+ this.element.style.display = 'none';
303
+ }
304
+ addEvents() {
305
+ this.apGifEvents.forEach((eventName) => {
306
+ this.canvas.addEventListener(eventName, (ev) => this.element.dispatchEvent(
307
+ // wm: find a way to dispatch the right event type
308
+ new Event(ev.type, ev)));
309
+ });
310
+ }
311
+ unfreeze() {
312
+ if (this.canvas) {
313
+ this.canvas.remove();
314
+ this.canvas = null;
315
+ }
316
+ this.element.style.visibility = 'inherit';
317
+ this.element.style.display = 'inherit';
318
+ }
319
+ }
320
+ FrozenGifDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FrozenGifDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
321
+ FrozenGifDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: FrozenGifDirective, isStandalone: true, selector: "img[apFrozenGif]", inputs: { src: "src", apFrozen: "apFrozen", apGifEvents: "apGifEvents" }, host: { properties: { "src": "src" } }, usesOnChanges: true, ngImport: i0 });
322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FrozenGifDirective, decorators: [{
323
+ type: Directive,
324
+ args: [{
325
+ selector: 'img[apFrozenGif]',
326
+ // eslint-disable-next-line @angular-eslint/no-host-metadata-property
327
+ host: {
328
+ '[src]': 'src'
329
+ },
330
+ standalone: true,
331
+ }]
332
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { src: [{
333
+ type: Input
334
+ }], apFrozen: [{
335
+ type: Input
336
+ }], apGifEvents: [{
337
+ type: Input
338
+ }] } });
339
+
340
+ const PART_START = '<ng-container data-mst="';
341
+ const PARSE_MIDDLE = '">';
342
+ const PARSE_END = '</ng-container>';
343
+ const DATA_SEPARATOR = ',';
344
+ const OPTIONAL_EVENTS_SEPARATOR = ';';
345
+ /**
346
+ * This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.
347
+ * The specific tags must this schema: <ng-container data-mst="STYLING-CLASSES">TEXT</ng-container>.
348
+ * Example: 'Lorem <ng-container data-mst="my-style">ipsum</ng-container> dolor sit amet'.
349
+ */
350
+ class MultiStyleTextDirective {
351
+ constructor(elRef, renderer) {
352
+ this.elRef = elRef;
353
+ this.renderer = renderer;
354
+ this.childrenCreated = [];
355
+ this.partEvent = new EventEmitter();
356
+ }
357
+ set multiStyleText(fullText) {
358
+ // First remove previously added children (on update).
359
+ for (const child of this.childrenCreated) {
360
+ this.renderer.removeChild(this.elRef.nativeElement, child);
361
+ }
362
+ if (fullText && fullText.length > 0) {
363
+ MultiStyleTextDirective.parse(fullText).forEach((part) => {
364
+ if (part.clazz || part.clickName) {
365
+ // Parsed item with styling classes and/or event listening.
366
+ const span = this.renderer.createElement('span');
367
+ const text = this.renderer.createText(part.content);
368
+ this.renderer.appendChild(span, text);
369
+ if (part.clazz) {
370
+ part.clazz.forEach(clazz => this.renderer.addClass(span, clazz));
371
+ }
372
+ if (part.clickName) {
373
+ this.renderer.listen(span, 'click', () => this.partEvent.emit(part.clickName));
374
+ }
375
+ this.renderer.appendChild(this.elRef.nativeElement, span);
376
+ this.childrenCreated.push(span);
377
+ }
378
+ else {
379
+ // Specific of part without styling classes (could be used to get event listening only)
380
+ const text = this.renderer.createText(part.content);
381
+ this.renderer.appendChild(this.elRef.nativeElement, text);
382
+ this.childrenCreated.push(text);
383
+ }
384
+ });
385
+ }
386
+ }
387
+ static parse(toParse) {
388
+ const parts = [];
389
+ let startIndex = toParse.indexOf(PART_START);
390
+ while (startIndex >= 0) {
391
+ if (startIndex > 0) {
392
+ // Optional text before first parsed part.
393
+ parts.push({ content: toParse.substring(0, startIndex) });
394
+ }
395
+ const elem = this.cutFirstGroup(toParse.substring(startIndex));
396
+ if (elem === 'invalid') {
397
+ return [];
398
+ }
399
+ else if (elem) {
400
+ parts.push({
401
+ content: elem.content,
402
+ clazz: elem.classes,
403
+ clickName: elem.clickName
404
+ });
405
+ toParse = elem.rest;
406
+ startIndex = toParse.indexOf(PART_START);
407
+ }
408
+ else {
409
+ parts.push({ content: toParse });
410
+ }
411
+ }
412
+ // Very end
413
+ if (toParse.length > 0) {
414
+ parts.push({ content: toParse });
415
+ }
416
+ return parts;
417
+ }
418
+ static cutFirstGroup(toCut) {
419
+ if (!toCut.startsWith(PART_START)) {
420
+ // String doesn't start with expected parser start.
421
+ return null;
422
+ }
423
+ const afterParserStart = toCut.substring(PART_START.length);
424
+ let index = afterParserStart.indexOf(PARSE_MIDDLE);
425
+ if (index <= 0) {
426
+ console.error('Not able to parse invalid string: ' + toCut);
427
+ return 'invalid';
428
+ }
429
+ const data = afterParserStart.substring(0, index);
430
+ let classes;
431
+ let clickName;
432
+ const eventsPartSeparatorIndex = data.indexOf(OPTIONAL_EVENTS_SEPARATOR);
433
+ if (eventsPartSeparatorIndex > 0) {
434
+ // Case the data contains events part with dedicated separator
435
+ classes = data.substring(0, eventsPartSeparatorIndex);
436
+ clickName = data.substring(eventsPartSeparatorIndex + 1);
437
+ }
438
+ else {
439
+ // Otherwise, only design classes are provided
440
+ classes = data;
441
+ clickName = undefined;
442
+ }
443
+ let rest = afterParserStart.substring(index + PARSE_MIDDLE.length);
444
+ index = rest.indexOf(PARSE_END);
445
+ if (index <= 0) {
446
+ console.error('Not able to parse invalid string: ' + toCut);
447
+ return 'invalid';
448
+ }
449
+ const content = rest.substring(0, index);
450
+ rest = rest.substring(index + PARSE_END.length);
451
+ return {
452
+ content,
453
+ classes: classes.split(DATA_SEPARATOR),
454
+ clickName,
455
+ rest
456
+ };
457
+ }
458
+ }
459
+ MultiStyleTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MultiStyleTextDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
460
+ MultiStyleTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: MultiStyleTextDirective, isStandalone: true, selector: "[multiStyleText]", inputs: { multiStyleText: "multiStyleText" }, outputs: { partEvent: "partEvent" }, ngImport: i0 });
461
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MultiStyleTextDirective, decorators: [{
462
+ type: Directive,
463
+ args: [{
464
+ // eslint-disable-next-line @angular-eslint/directive-selector
465
+ selector: '[multiStyleText]',
466
+ standalone: true,
467
+ }]
468
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { multiStyleText: [{
469
+ type: Input
470
+ }], partEvent: [{
471
+ type: Output
472
+ }] } });
473
+
474
+ // Angular
475
+ class TruncateTooltipDirective {
476
+ constructor(tooltipNeo, elementRef) {
477
+ this.tooltipNeo = tooltipNeo;
478
+ this.elementRef = elementRef;
479
+ }
480
+ updateTruncateState() {
481
+ const element = this.elementRef.nativeElement;
482
+ const truncated = element.scrollWidth > element.clientWidth;
483
+ this.tooltipNeo.apTooltipNeo = truncated ? this.truncateTooltip : '';
484
+ }
485
+ ngOnInit() {
486
+ this.elementRefMouseOver$ = fromEvent(this.elementRef.nativeElement, 'mouseover')
487
+ .subscribe(() => this.updateTruncateState());
488
+ }
489
+ ngOnDestroy() {
490
+ this.elementRefMouseOver$.unsubscribe();
491
+ }
492
+ }
493
+ TruncateTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TruncateTooltipDirective, deps: [{ token: i1.TooltipNeoDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
494
+ TruncateTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TruncateTooltipDirective, isStandalone: true, selector: "[apTooltipNeo][truncateTooltip]", inputs: { truncateTooltip: "truncateTooltip" }, ngImport: i0 });
495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TruncateTooltipDirective, decorators: [{
496
+ type: Directive,
497
+ args: [{ selector: '[apTooltipNeo][truncateTooltip]', standalone: true, }]
498
+ }], ctorParameters: function () { return [{ type: i1.TooltipNeoDirective }, { type: i0.ElementRef }]; }, propDecorators: { truncateTooltip: [{
499
+ type: Input
500
+ }] } });
501
+
502
+ /**
503
+ * Generated bundle index. Do not edit.
504
+ */
505
+
506
+ export { AutosizeTextareaDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, GifService, MultiStyleTextDirective, TruncateTooltipDirective };
507
+ //# sourceMappingURL=agorapulse-ui-components-directives.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agorapulse-ui-components-directives.mjs","sources":["../../../libs/ui-components/directives/src/autosize-textarea.directive.ts","../../../libs/ui-components/directives/src/default-image.directive.ts","../../../libs/ui-components/directives/src/ellipsis.directive.ts","../../../libs/ui-components/directives/src/equal-validator.directive.ts","../../../libs/ui-components/directives/src/frozen-gif.directive.ts","../../../libs/ui-components/directives/src/multi-style-text.directive.ts","../../../libs/ui-components/directives/src/truncate-tooltip.directive.ts","../../../libs/ui-components/directives/src/agorapulse-ui-components-directives.ts"],"sourcesContent":["import { AfterContentChecked, Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: 'textarea[apAutosize]',\n standalone: true\n})\n/**\n * expand textarea to fit content. Doesn't shrink.\n */\nexport class AutosizeTextareaDirective implements AfterContentChecked {\n\n static maxHeight: number = 200;\n\n constructor(public element: ElementRef) {}\n\n @HostListener('input')\n public onInput() {\n this.resize();\n }\n\n public ngAfterContentChecked() {\n this.resize();\n }\n\n public resize() {\n const style = this.element.nativeElement.style;\n const scrollHeight = this.element.nativeElement.scrollHeight;\n const actualHeight = this.element.nativeElement.offsetHeight;\n if (AutosizeTextareaDirective.maxHeight < scrollHeight) {\n // we arrived at the max\n style.overflow = 'auto';\n style.height = `${AutosizeTextareaDirective.maxHeight}px`;\n } else if (actualHeight < scrollHeight) {\n style.overflow = 'hidden';\n style.height = `${scrollHeight}px`;\n }\n }\n\n}\n","import {Directive, Input} from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'img[default]',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(error)': 'updateUrl()',\n '[src]': 'src'\n }\n})\nexport class DefaultImageDirective {\n @Input() src: string;\n @Input() default: string;\n\n updateUrl() {\n if (this.default) {\n this.src = this.default;\n } else {\n this.src = 'assets/lib-ui-components/img/default-avatar.png';\n }\n }\n}\n","import {AfterContentChecked, Directive, ElementRef, EventEmitter, Input, Output,} from '@angular/core';\n\n/**\n * Removes excess text from element until it fits in elements\n * and appends a ellipsis symbol to end of text. This requires that\n * the elements height be fixed\n *\n * @example\n * ```html\n * <p apEllipsis>Ullamco esse laborum</p>\n * ```\n *\n */\n@Directive({\n selector: '[apEllipsis]',\n standalone: true,\n})\nexport class EllipsisDirective implements AfterContentChecked {\n\n @Input() apEllipsisSeparator: string;\n @Input() apEllipsisClip: boolean = false;\n @Input() apEllipsisIndex: number;\n @Input() apEllipsisChar: string = '...';\n @Input() apEllipsisClickable: boolean = false;\n\n @Output() apEllipsisRemovedElementsCount = new EventEmitter<number>();\n @Output() apEllipsisRemovedText = new EventEmitter<string>();\n\n private get hasOverflow(): boolean {\n const el: HTMLElement = this.el.nativeElement;\n return (el.scrollHeight > el.offsetHeight) || (el.scrollWidth > el.offsetWidth);\n }\n\n constructor(private el: ElementRef) { }\n\n ngAfterContentChecked() {\n this.clipText();\n }\n\n private clipText(): void {\n const el: HTMLElement = this.el.nativeElement;\n let text = el.innerText;\n let removedText = '';\n if (this.apEllipsisIndex > -1) {\n removedText = text.substring(this.apEllipsisIndex, text.length - 1) + removedText;\n text = text.substring(0, this.apEllipsisIndex);\n el.innerText = `${text}${this.apEllipsisChar}`;\n\n if (this.apEllipsisClickable) {\n el.addEventListener('click', () => {\n el.innerText = `${text}${removedText}`;\n });\n }\n } else {\n while (this.hasOverflow && text.length > 0) {\n removedText = text[text.length - 1] + removedText;\n text = text.substring(0, text.length - 1);\n el.innerText = `${text}${this.apEllipsisChar}`;\n }\n }\n\n if (this.apEllipsisSeparator) {\n const removedElementsCount = removedText.split(this.apEllipsisSeparator)\n .filter(element => !!element && element.length > 0).length;\n if (removedElementsCount > 0) {\n this.apEllipsisRemovedElementsCount.emit(removedElementsCount);\n }\n }\n if (removedText && removedText.length > 0) {\n this.apEllipsisRemovedText.emit(removedText);\n }\n }\n}\n","// Based on https://scotch.io/tutorials/how-to-implement-a-custom-validator-directive-confirm-password-in-angular-2\nimport { Directive, forwardRef, Attribute } from '@angular/core';\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => EqualValidatorDirective),\n multi: true\n }\n ],\n standalone: true,\n})\nexport class EqualValidatorDirective implements Validator {\n\n constructor(@Attribute('validateEqual') public validateEqual: string,\n @Attribute('validateEqualReference') public validateEqualReference: string) {}\n\n validate(self: AbstractControl): { [key: string]: any } {\n const other = self.root.get(this.validateEqual);\n if (other) {\n if (this.isReference()) {\n if (self.value === other.value) {\n delete other.errors['validateEqual'];\n if (!Object.keys(other.errors).length) {\n other.setErrors(null);\n }\n } else {\n other.setErrors({ validateEqual: false });\n }\n } else if (self.value !== other.value) {\n return { validateEqual: false };\n }\n }\n return null;\n }\n\n private isReference(): boolean {\n if (!this.validateEqualReference) {\n return false;\n }\n return this.validateEqualReference === 'true';\n }\n\n}\n","import {Directive, ElementRef, HostBinding, Input, OnChanges} from '@angular/core';\n\nexport class GifService {\n static isGif(src: string) {\n return src && src.split('?')[0].endsWith('.gif');\n }\n}\n\n/**\n * If the image is a GIF then replace the img element by a canvas containing a frozen gif.\n * Note 1: if the image is displayed under a condition, the condition must be applied on the parent of the image, so the\n * new canvas element will have the same condition.\n * Note 2: the image must not have the properties \"display\" and \"visibility\" in its style. Since they are used to frozen\n * the GIF. You need to apply this properties on the parent element.\n * Note 3: If the GIF is frozen, all the event are propagated to the image. However, all events are dispatched\n * with an Event instance. Ex: click event is not dispatched with a MouseEvent instance.\n */\n\n@Directive({\n selector: 'img[apFrozenGif]',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[src]': 'src'\n },\n standalone: true,\n})\nexport class FrozenGifDirective implements OnChanges {\n @Input() src: string;\n @Input() apFrozen = true;\n // Add all the events that need to be propagated.\n @Input() apGifEvents: string[] = ['click'];\n\n private readonly element: HTMLImageElement;\n private canvas: HTMLCanvasElement;\n\n constructor(private elementRef: ElementRef) {\n const element = this.elementRef.nativeElement;\n if (!(element instanceof HTMLImageElement)) {\n return;\n }\n\n this.element = element;\n }\n\n ngOnChanges(changes: any): void {\n let freeze = false;\n if (changes.src) {\n freeze = true;\n }\n if (changes.frozen) {\n if (changes.frozen.currentValue) {\n freeze = true;\n } else {\n this.unfreeze();\n }\n }\n\n if (freeze) {\n this.freeze();\n }\n\n }\n\n private freeze() {\n if (!GifService.isGif(this.src) || !this.apFrozen) {\n this.unfreeze();\n return;\n }\n\n // hack to avoid displaying the GIF before replacing it by the canvas\n this.element.style.visibility = 'hidden';\n this.element.addEventListener('load', () => this.addCanvas());\n }\n\n private addCanvas() {\n if (this.canvas) {\n this.canvas.remove();\n }\n\n this.canvas = document.createElement('canvas');\n this.canvas.width = this.element.width;\n this.canvas.height = this.element.height;\n this.canvas.getContext('2d').drawImage(this.element, 0, 0, this.canvas.width, this.canvas.height);\n for (let i = 0; i < this.element.attributes.length; i++) {\n const attr = this.element.attributes[i];\n if (attr.name === 'id') { // avoid two elements with the same id\n this.canvas.setAttribute('id', attr.value + '_frozenGif');\n } else if (attr.name === 'style' && attr.value.includes('visibility: hidden;') || attr.value.includes('display: none;')) {\n // remove the added 'visibility: hidden' and 'display: none'\n const styleValue = attr.value;\n this.canvas.setAttribute('style', styleValue.replace('visibility: hidden;', '').replace('display: none;', ''));\n } else if (attr.name !== '\"') { // test for invalid attributes\n this.canvas.setAttribute(attr.name, attr.value);\n }\n }\n\n this.addEvents();\n\n this.element.parentNode.insertBefore(this.canvas, this.element);\n this.element.style.display = 'none';\n }\n\n private addEvents() {\n this.apGifEvents.forEach((eventName: string) => {\n this.canvas.addEventListener(eventName, (ev: Event) => this.element.dispatchEvent(\n // wm: find a way to dispatch the right event type\n new Event(ev.type, ev)\n ));\n });\n }\n\n private unfreeze() {\n if (this.canvas) {\n this.canvas.remove();\n this.canvas = null;\n }\n this.element.style.visibility = 'inherit';\n this.element.style.display = 'inherit';\n }\n}\n","import {Directive, Input, Renderer2, ElementRef, Output, EventEmitter} from '@angular/core';\n\nconst PART_START = '<ng-container data-mst=\"';\nconst PARSE_MIDDLE = '\">';\nconst PARSE_END = '</ng-container>';\nconst DATA_SEPARATOR = ',';\nconst OPTIONAL_EVENTS_SEPARATOR = ';';\n\ninterface Part {\n content: string;\n clazz?: string[]; // Not defined on sterile text\n clickName?: string; // Not defined on sterile text\n}\n\n/**\n * This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.\n * The specific tags must this schema: <ng-container data-mst=\"STYLING-CLASSES\">TEXT</ng-container>.\n * Example: 'Lorem <ng-container data-mst=\"my-style\">ipsum</ng-container> dolor sit amet'.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[multiStyleText]',\n standalone: true,\n})\nexport class MultiStyleTextDirective {\n\n private childrenCreated: any[] = [];\n\n @Input() set multiStyleText(fullText: string) {\n // First remove previously added children (on update).\n for (const child of this.childrenCreated) {\n this.renderer.removeChild(this.elRef.nativeElement, child);\n }\n\n if (fullText && fullText.length > 0) {\n MultiStyleTextDirective.parse(fullText).forEach((part: Part) => {\n if (part.clazz || part.clickName) {\n // Parsed item with styling classes and/or event listening.\n const span = this.renderer.createElement('span');\n const text = this.renderer.createText(part.content);\n this.renderer.appendChild(span, text);\n if (part.clazz) {\n part.clazz.forEach(clazz => this.renderer.addClass(span, clazz));\n }\n if (part.clickName) {\n this.renderer.listen(span, 'click', () => this.partEvent.emit(part.clickName));\n }\n this.renderer.appendChild(this.elRef.nativeElement, span);\n this.childrenCreated.push(span);\n } else {\n // Specific of part without styling classes (could be used to get event listening only)\n const text = this.renderer.createText(part.content);\n this.renderer.appendChild(this.elRef.nativeElement, text);\n this.childrenCreated.push(text);\n }\n });\n }\n }\n\n @Output() partEvent = new EventEmitter<string>();\n\n public constructor(\n private elRef: ElementRef,\n private renderer: Renderer2\n ) {\n }\n\n private static parse(toParse: string): Part[] {\n const parts: Part[] = [];\n let startIndex = toParse.indexOf(PART_START);\n while (startIndex >= 0) {\n if (startIndex > 0) {\n // Optional text before first parsed part.\n parts.push({content: toParse.substring(0, startIndex)});\n }\n const elem = this.cutFirstGroup(toParse.substring(startIndex));\n if (elem === 'invalid') {\n return [];\n } else if (elem) {\n parts.push({\n content: elem.content,\n clazz: elem.classes,\n clickName: elem.clickName\n });\n toParse = elem.rest;\n startIndex = toParse.indexOf(PART_START);\n } else {\n parts.push({content: toParse});\n }\n }\n // Very end\n if (toParse.length > 0) {\n parts.push({content: toParse});\n }\n return parts;\n }\n\n private static cutFirstGroup(toCut: string): {content: string, classes: string[], clickName: string, rest: string} | 'invalid' | null {\n if (!toCut.startsWith(PART_START)) {\n // String doesn't start with expected parser start.\n return null;\n }\n\n const afterParserStart = toCut.substring(PART_START.length);\n let index = afterParserStart.indexOf(PARSE_MIDDLE);\n if (index <= 0) {\n console.error('Not able to parse invalid string: ' + toCut);\n return 'invalid';\n }\n const data = afterParserStart.substring(0, index);\n let classes;\n let clickName;\n const eventsPartSeparatorIndex = data.indexOf(OPTIONAL_EVENTS_SEPARATOR);\n if (eventsPartSeparatorIndex > 0) {\n // Case the data contains events part with dedicated separator\n classes = data.substring(0, eventsPartSeparatorIndex);\n clickName = data.substring(eventsPartSeparatorIndex + 1);\n } else {\n // Otherwise, only design classes are provided\n classes = data;\n clickName = undefined;\n }\n let rest = afterParserStart.substring(index + PARSE_MIDDLE.length);\n index = rest.indexOf(PARSE_END);\n if (index <= 0) {\n console.error('Not able to parse invalid string: ' + toCut);\n return 'invalid';\n }\n const content = rest.substring(0, index);\n rest = rest.substring(index + PARSE_END.length);\n\n return {\n content,\n classes: classes.split(DATA_SEPARATOR),\n clickName,\n rest\n };\n }\n}\n","// Agorapulse\nimport {TooltipNeoDirective, TooltipNeoParams} from '@agorapulse/ui-components/tooltip-neo';\n// Angular\nimport {Directive, ElementRef, Input, OnDestroy, OnInit} from '@angular/core';\n// Third-parties\nimport {fromEvent, Subscription} from \"rxjs\";\n\n@Directive({selector: '[apTooltipNeo][truncateTooltip]', standalone: true,})\nexport class TruncateTooltipDirective implements OnInit, OnDestroy {\n\n @Input() truncateTooltip: string | TooltipNeoParams;\n\n private elementRefMouseOver$: Subscription;\n\n constructor(\n private tooltipNeo: TooltipNeoDirective,\n private elementRef: ElementRef<HTMLElement>\n ) {\n }\n\n private updateTruncateState(): void {\n const element = this.elementRef.nativeElement;\n const truncated = element.scrollWidth > element.clientWidth;\n this.tooltipNeo.apTooltipNeo = truncated ? this.truncateTooltip : '';\n }\n\n ngOnInit(): void {\n this.elementRefMouseOver$ = fromEvent(this.elementRef.nativeElement, 'mouseover')\n .subscribe(() => this.updateTruncateState());\n }\n\n ngOnDestroy(): void {\n this.elementRefMouseOver$.unsubscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}