@festo-ui/angular 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/README.md +5 -1
  2. package/css/bundle.css +1 -0
  3. package/css/image-gallery.css +1 -0
  4. package/css/popover.css +1 -0
  5. package/esm2020/festo-ui-angular.mjs +5 -0
  6. package/esm2020/index.mjs +20 -0
  7. package/esm2020/lib/components/accordion/accordion-header/accordion-header.component.mjs +11 -0
  8. package/esm2020/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.mjs +15 -0
  9. package/esm2020/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.mjs +28 -0
  10. package/esm2020/lib/components/accordion/accordion-item/accordion-item.component.mjs +143 -0
  11. package/esm2020/lib/components/accordion/accordion.component.mjs +59 -0
  12. package/esm2020/lib/components/accordion/index.mjs +6 -0
  13. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +23 -0
  14. package/esm2020/lib/components/buttons/button/button.component.mjs +41 -0
  15. package/esm2020/lib/components/buttons/link-button/link-button.component.mjs +33 -0
  16. package/esm2020/lib/components/chips/chip/chip.component.mjs +37 -0
  17. package/esm2020/lib/components/chips/chip-container/chip-container.component.mjs +16 -0
  18. package/esm2020/lib/components/click-outside.directive.mjs +28 -0
  19. package/esm2020/lib/components/components.module.mjs +223 -0
  20. package/esm2020/lib/components/image-gallery/image-gallery.component.mjs +58 -0
  21. package/esm2020/lib/components/image-gallery/image-gallery.module.mjs +21 -0
  22. package/esm2020/lib/components/loading-indicator/loading-indicator.component.mjs +16 -0
  23. package/esm2020/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.mjs +27 -0
  24. package/esm2020/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.mjs +43 -0
  25. package/esm2020/lib/components/mobile-flyout/mobile-flyout.component.mjs +41 -0
  26. package/esm2020/lib/components/modals/alert/alert.component.mjs +52 -0
  27. package/esm2020/lib/components/modals/confirm/confirm.component.mjs +53 -0
  28. package/esm2020/lib/components/modals/custom-modal/custom-modal.component.mjs +70 -0
  29. package/esm2020/lib/components/modals/index.mjs +2 -0
  30. package/esm2020/lib/components/modals/modal.service.mjs +121 -0
  31. package/esm2020/lib/components/modals/modals.module.mjs +31 -0
  32. package/esm2020/lib/components/modals/prompt/prompt.component.mjs +102 -0
  33. package/esm2020/lib/components/pagination/pagination.component.mjs +55 -0
  34. package/esm2020/lib/components/popovers/legend/legend.component.mjs +42 -0
  35. package/esm2020/lib/components/popovers/legend/legend.directive.mjs +31 -0
  36. package/esm2020/lib/components/popovers/popover/popover.component.mjs +31 -0
  37. package/esm2020/lib/components/popovers/popover-content/popover-content.component.mjs +82 -0
  38. package/esm2020/lib/components/popovers/popover-content/popover-content.directive.mjs +39 -0
  39. package/esm2020/lib/components/popovers/popover-menu/popover-menu.component.mjs +68 -0
  40. package/esm2020/lib/components/popovers/popover-ref.mjs +25 -0
  41. package/esm2020/lib/components/popovers/popover.defaults.mjs +60 -0
  42. package/esm2020/lib/components/popovers/popover.models.mjs +23 -0
  43. package/esm2020/lib/components/popovers/popover.service.mjs +123 -0
  44. package/esm2020/lib/components/popovers/tooltip/tooltip.directive.mjs +100 -0
  45. package/esm2020/lib/components/progress/progress.component.mjs +20 -0
  46. package/esm2020/lib/components/scroll/index.mjs +2 -0
  47. package/esm2020/lib/components/scroll/scrollable.directive.mjs +72 -0
  48. package/esm2020/lib/components/search-input/safe-html.pipe.mjs +21 -0
  49. package/esm2020/lib/components/search-input/search-input.component.mjs +172 -0
  50. package/esm2020/lib/components/snackbar/snackbar-container.component.mjs +21 -0
  51. package/esm2020/lib/components/snackbar/snackbar-container.directive.mjs +83 -0
  52. package/esm2020/lib/components/snackbar/snackbar.component.mjs +79 -0
  53. package/esm2020/lib/components/snackbar/snackbar.models.mjs +2 -0
  54. package/esm2020/lib/components/snackbar/snackbar.module.mjs +26 -0
  55. package/esm2020/lib/components/snackbar/snackbar.service.mjs +23 -0
  56. package/esm2020/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.mjs +19 -0
  57. package/esm2020/lib/components/stepper-horizontal/stepper-horizontal.component.mjs +51 -0
  58. package/esm2020/lib/components/stepper-vertical/step-vertical/step-vertical.component.mjs +56 -0
  59. package/esm2020/lib/components/stepper-vertical/stepper-vertical.component.mjs +54 -0
  60. package/esm2020/lib/components/table-header-cell/table-header-cell.directive.mjs +58 -0
  61. package/esm2020/lib/components/tabs/tab-pane/tab-pane.component.mjs +31 -0
  62. package/esm2020/lib/components/tabs/tabs.component.mjs +353 -0
  63. package/esm2020/lib/content/content.module.mjs +20 -0
  64. package/esm2020/lib/content/icon/icon.component.mjs +17 -0
  65. package/esm2020/lib/festo-angular.module.mjs +65 -0
  66. package/esm2020/lib/forms/checkbox/checkbox.component.mjs +149 -0
  67. package/esm2020/lib/forms/color-indicator/color-indicator.component.mjs +68 -0
  68. package/esm2020/lib/forms/color-picker/color-helper.mjs +121 -0
  69. package/esm2020/lib/forms/color-picker/color-picker.component.mjs +273 -0
  70. package/esm2020/lib/forms/container-host.mjs +27 -0
  71. package/esm2020/lib/forms/date-picker/date-picker.component.mjs +199 -0
  72. package/esm2020/lib/forms/date-range-picker/date-range-picker.component.mjs +224 -0
  73. package/esm2020/lib/forms/forms.module.mjs +146 -0
  74. package/esm2020/lib/forms/radio/radio.component.mjs +346 -0
  75. package/esm2020/lib/forms/segment/segment-control/segment-control.component.mjs +57 -0
  76. package/esm2020/lib/forms/segment/segment.component.mjs +109 -0
  77. package/esm2020/lib/forms/select/chip-text.pipe.mjs +34 -0
  78. package/esm2020/lib/forms/select/select-option/select-option.component.mjs +22 -0
  79. package/esm2020/lib/forms/select/select.component.mjs +257 -0
  80. package/esm2020/lib/forms/slider/slider.component.mjs +110 -0
  81. package/esm2020/lib/forms/switch/switch.component.mjs +120 -0
  82. package/esm2020/lib/forms/text-area/text-area.component.mjs +180 -0
  83. package/esm2020/lib/forms/text-editor/text-editor.component.mjs +286 -0
  84. package/esm2020/lib/forms/text-input/text-input.component.mjs +183 -0
  85. package/esm2020/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.mjs +89 -0
  86. package/esm2020/lib/forms/time-picker/time-picker.component.mjs +188 -0
  87. package/esm2020/lib/forms/unique-selection-dispatcher.mjs +39 -0
  88. package/esm2020/lib/forms/value-accessor-base.mjs +41 -0
  89. package/esm2020/lib/layout/layout.module.mjs +18 -0
  90. package/esm2020/lib/wrappers/flatpickr/flatpickr.component.mjs +59 -0
  91. package/fesm2015/festo-ui-angular.mjs +6117 -0
  92. package/fesm2015/festo-ui-angular.mjs.map +1 -0
  93. package/fesm2020/festo-ui-angular.mjs +6101 -0
  94. package/fesm2020/festo-ui-angular.mjs.map +1 -0
  95. package/index.d.ts +1 -0
  96. package/lib/components/accordion/accordion-header/accordion-header.component.d.ts +5 -0
  97. package/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.d.ts +6 -0
  98. package/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.d.ts +15 -0
  99. package/lib/components/accordion/accordion-item/accordion-item.component.d.ts +34 -0
  100. package/lib/components/accordion/accordion.component.d.ts +24 -0
  101. package/lib/components/accordion/index.d.ts +5 -0
  102. package/lib/components/components.module.d.ts +40 -20
  103. package/lib/components/image-gallery/image-gallery.component.d.ts +33 -0
  104. package/lib/components/image-gallery/image-gallery.module.d.ts +10 -0
  105. package/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.d.ts +10 -0
  106. package/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.d.ts +15 -0
  107. package/lib/components/mobile-flyout/mobile-flyout.component.d.ts +11 -0
  108. package/lib/components/modals/confirm/confirm.component.d.ts +1 -3
  109. package/lib/components/modals/custom-modal/custom-modal.component.d.ts +21 -0
  110. package/lib/components/modals/modal.service.d.ts +2 -0
  111. package/lib/components/modals/modals.module.d.ts +8 -5
  112. package/lib/components/popovers/tooltip/tooltip.directive.d.ts +5 -3
  113. package/lib/components/search-input/safe-html.pipe.d.ts +10 -0
  114. package/lib/components/search-input/search-input.component.d.ts +22 -5
  115. package/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.d.ts +7 -0
  116. package/lib/components/stepper-horizontal/stepper-horizontal.component.d.ts +14 -0
  117. package/lib/components/stepper-vertical/step-vertical/step-vertical.component.d.ts +18 -0
  118. package/lib/components/stepper-vertical/stepper-vertical.component.d.ts +14 -0
  119. package/lib/festo-angular.module.d.ts +2 -1
  120. package/package.json +41 -19
  121. package/scss/base/components/accordion/accordion-header/accordion-header.component.scss +12 -0
  122. package/scss/base/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.scss +109 -0
  123. package/scss/base/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.scss +9 -0
  124. package/scss/base/components/accordion/accordion-item/accordion-item.component.scss +71 -0
  125. package/scss/base/components/accordion/accordion.component.scss +6 -0
  126. package/scss/base/components/breadcrumb/breadcrumb.component.scss +0 -1
  127. package/scss/base/components/buttons/button/button.component.scss +6 -1
  128. package/scss/base/components/image-gallery/image-gallery.component.scss +0 -0
  129. package/scss/base/components/image-gallery/styles.scss +5 -0
  130. package/scss/base/components/modals/prompt/prompt.component.scss +0 -1
  131. package/scss/base/components/popovers/legend/legend.component.scss +2 -2
  132. package/scss/base/components/popovers/popover/styles.scss +2 -3
  133. package/scss/base/components/popovers/popover-content/popover-content.component.scss +1 -1
  134. package/scss/base/components/scroll/scroll-story-helper.scss +1 -3
  135. package/scss/base/components/search-input/search-input.component.scss +4 -0
  136. package/scss/base/components/snackbar/snackbar.component.scss +1 -1
  137. package/scss/base/components/stepper-horizontal/step-horizontal/step-horizontal.component.scss +23 -0
  138. package/scss/base/components/stepper-vertical/step-vertical/step-vertical.component.scss +6 -0
  139. package/scss/base/forms/color-indicator/color-indicator.component.scss +1 -1
  140. package/scss/base/forms/color-picker/color-picker.component.scss +15 -15
  141. package/scss/base/forms/date-picker/date-picker.component.scss +1 -1
  142. package/scss/base/forms/date-range-picker/date-range-picker.component.scss +1 -1
  143. package/scss/base/forms/text-area/text-area.component.scss +4 -4
  144. package/scss/base/forms/text-editor/text-editor.component.scss +8 -10
  145. package/scss/base/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.scss +1 -1
  146. package/bundles/festo-ui-angular.umd.js +0 -6429
  147. package/bundles/festo-ui-angular.umd.js.map +0 -1
  148. package/esm2015/festo-ui-angular.js +0 -5
  149. package/esm2015/festo-ui-angular.js.map +0 -1
  150. package/esm2015/index.js +0 -18
  151. package/esm2015/index.js.map +0 -1
  152. package/esm2015/lib/components/breadcrumb/breadcrumb.component.js +0 -27
  153. package/esm2015/lib/components/breadcrumb/breadcrumb.component.js.map +0 -1
  154. package/esm2015/lib/components/buttons/button/button.component.js +0 -46
  155. package/esm2015/lib/components/buttons/button/button.component.js.map +0 -1
  156. package/esm2015/lib/components/buttons/link-button/link-button.component.js +0 -38
  157. package/esm2015/lib/components/buttons/link-button/link-button.component.js.map +0 -1
  158. package/esm2015/lib/components/chips/chip/chip.component.js +0 -42
  159. package/esm2015/lib/components/chips/chip/chip.component.js.map +0 -1
  160. package/esm2015/lib/components/chips/chip-container/chip-container.component.js +0 -21
  161. package/esm2015/lib/components/chips/chip-container/chip-container.component.js.map +0 -1
  162. package/esm2015/lib/components/click-outside.directive.js +0 -28
  163. package/esm2015/lib/components/click-outside.directive.js.map +0 -1
  164. package/esm2015/lib/components/components.module.js +0 -155
  165. package/esm2015/lib/components/components.module.js.map +0 -1
  166. package/esm2015/lib/components/loading-indicator/loading-indicator.component.js +0 -21
  167. package/esm2015/lib/components/loading-indicator/loading-indicator.component.js.map +0 -1
  168. package/esm2015/lib/components/modals/alert/alert.component.js +0 -57
  169. package/esm2015/lib/components/modals/alert/alert.component.js.map +0 -1
  170. package/esm2015/lib/components/modals/confirm/confirm.component.js +0 -73
  171. package/esm2015/lib/components/modals/confirm/confirm.component.js.map +0 -1
  172. package/esm2015/lib/components/modals/index.js +0 -2
  173. package/esm2015/lib/components/modals/index.js.map +0 -1
  174. package/esm2015/lib/components/modals/modal.service.js +0 -91
  175. package/esm2015/lib/components/modals/modal.service.js.map +0 -1
  176. package/esm2015/lib/components/modals/modals.module.js +0 -28
  177. package/esm2015/lib/components/modals/modals.module.js.map +0 -1
  178. package/esm2015/lib/components/modals/prompt/prompt.component.js +0 -110
  179. package/esm2015/lib/components/modals/prompt/prompt.component.js.map +0 -1
  180. package/esm2015/lib/components/pagination/pagination.component.js +0 -60
  181. package/esm2015/lib/components/pagination/pagination.component.js.map +0 -1
  182. package/esm2015/lib/components/popovers/legend/legend.component.js +0 -46
  183. package/esm2015/lib/components/popovers/legend/legend.component.js.map +0 -1
  184. package/esm2015/lib/components/popovers/legend/legend.directive.js +0 -31
  185. package/esm2015/lib/components/popovers/legend/legend.directive.js.map +0 -1
  186. package/esm2015/lib/components/popovers/popover/popover.component.js +0 -35
  187. package/esm2015/lib/components/popovers/popover/popover.component.js.map +0 -1
  188. package/esm2015/lib/components/popovers/popover-content/popover-content.component.js +0 -86
  189. package/esm2015/lib/components/popovers/popover-content/popover-content.component.js.map +0 -1
  190. package/esm2015/lib/components/popovers/popover-content/popover-content.directive.js +0 -39
  191. package/esm2015/lib/components/popovers/popover-content/popover-content.directive.js.map +0 -1
  192. package/esm2015/lib/components/popovers/popover-menu/popover-menu.component.js +0 -72
  193. package/esm2015/lib/components/popovers/popover-menu/popover-menu.component.js.map +0 -1
  194. package/esm2015/lib/components/popovers/popover-ref.js +0 -25
  195. package/esm2015/lib/components/popovers/popover-ref.js.map +0 -1
  196. package/esm2015/lib/components/popovers/popover.defaults.js +0 -60
  197. package/esm2015/lib/components/popovers/popover.defaults.js.map +0 -1
  198. package/esm2015/lib/components/popovers/popover.models.js +0 -23
  199. package/esm2015/lib/components/popovers/popover.models.js.map +0 -1
  200. package/esm2015/lib/components/popovers/popover.service.js +0 -117
  201. package/esm2015/lib/components/popovers/popover.service.js.map +0 -1
  202. package/esm2015/lib/components/popovers/tooltip/tooltip.directive.js +0 -96
  203. package/esm2015/lib/components/popovers/tooltip/tooltip.directive.js.map +0 -1
  204. package/esm2015/lib/components/progress/progress.component.js +0 -23
  205. package/esm2015/lib/components/progress/progress.component.js.map +0 -1
  206. package/esm2015/lib/components/scroll/index.js +0 -2
  207. package/esm2015/lib/components/scroll/index.js.map +0 -1
  208. package/esm2015/lib/components/scroll/scrollable.directive.js +0 -73
  209. package/esm2015/lib/components/scroll/scrollable.directive.js.map +0 -1
  210. package/esm2015/lib/components/search-input/search-input.component.js +0 -155
  211. package/esm2015/lib/components/search-input/search-input.component.js.map +0 -1
  212. package/esm2015/lib/components/snackbar/snackbar-container.component.js +0 -26
  213. package/esm2015/lib/components/snackbar/snackbar-container.component.js.map +0 -1
  214. package/esm2015/lib/components/snackbar/snackbar-container.directive.js +0 -83
  215. package/esm2015/lib/components/snackbar/snackbar-container.directive.js.map +0 -1
  216. package/esm2015/lib/components/snackbar/snackbar.component.js +0 -85
  217. package/esm2015/lib/components/snackbar/snackbar.component.js.map +0 -1
  218. package/esm2015/lib/components/snackbar/snackbar.models.js +0 -2
  219. package/esm2015/lib/components/snackbar/snackbar.models.js.map +0 -1
  220. package/esm2015/lib/components/snackbar/snackbar.module.js +0 -26
  221. package/esm2015/lib/components/snackbar/snackbar.module.js.map +0 -1
  222. package/esm2015/lib/components/snackbar/snackbar.service.js +0 -23
  223. package/esm2015/lib/components/snackbar/snackbar.service.js.map +0 -1
  224. package/esm2015/lib/components/stepper/stepper.component.js +0 -28
  225. package/esm2015/lib/components/stepper/stepper.component.js.map +0 -1
  226. package/esm2015/lib/components/table-header-cell/table-header-cell.directive.js +0 -58
  227. package/esm2015/lib/components/table-header-cell/table-header-cell.directive.js.map +0 -1
  228. package/esm2015/lib/components/tabs/tab-pane/tab-pane.component.js +0 -35
  229. package/esm2015/lib/components/tabs/tab-pane/tab-pane.component.js.map +0 -1
  230. package/esm2015/lib/components/tabs/tabs.component.js +0 -362
  231. package/esm2015/lib/components/tabs/tabs.component.js.map +0 -1
  232. package/esm2015/lib/content/content.module.js +0 -24
  233. package/esm2015/lib/content/content.module.js.map +0 -1
  234. package/esm2015/lib/content/icon/icon.component.js +0 -23
  235. package/esm2015/lib/content/icon/icon.component.js.map +0 -1
  236. package/esm2015/lib/festo-angular.module.js +0 -58
  237. package/esm2015/lib/festo-angular.module.js.map +0 -1
  238. package/esm2015/lib/forms/checkbox/checkbox.component.js +0 -156
  239. package/esm2015/lib/forms/checkbox/checkbox.component.js.map +0 -1
  240. package/esm2015/lib/forms/color-indicator/color-indicator.component.js +0 -72
  241. package/esm2015/lib/forms/color-indicator/color-indicator.component.js.map +0 -1
  242. package/esm2015/lib/forms/color-picker/color-helper.js +0 -121
  243. package/esm2015/lib/forms/color-picker/color-helper.js.map +0 -1
  244. package/esm2015/lib/forms/color-picker/color-picker.component.js +0 -280
  245. package/esm2015/lib/forms/color-picker/color-picker.component.js.map +0 -1
  246. package/esm2015/lib/forms/container-host.js +0 -27
  247. package/esm2015/lib/forms/container-host.js.map +0 -1
  248. package/esm2015/lib/forms/date-picker/date-picker.component.js +0 -205
  249. package/esm2015/lib/forms/date-picker/date-picker.component.js.map +0 -1
  250. package/esm2015/lib/forms/date-range-picker/date-range-picker.component.js +0 -230
  251. package/esm2015/lib/forms/date-range-picker/date-range-picker.component.js.map +0 -1
  252. package/esm2015/lib/forms/forms.module.js +0 -146
  253. package/esm2015/lib/forms/forms.module.js.map +0 -1
  254. package/esm2015/lib/forms/radio/radio.component.js +0 -353
  255. package/esm2015/lib/forms/radio/radio.component.js.map +0 -1
  256. package/esm2015/lib/forms/segment/segment-control/segment-control.component.js +0 -58
  257. package/esm2015/lib/forms/segment/segment-control/segment-control.component.js.map +0 -1
  258. package/esm2015/lib/forms/segment/segment.component.js +0 -116
  259. package/esm2015/lib/forms/segment/segment.component.js.map +0 -1
  260. package/esm2015/lib/forms/select/chip-text.pipe.js +0 -34
  261. package/esm2015/lib/forms/select/chip-text.pipe.js.map +0 -1
  262. package/esm2015/lib/forms/select/select-option/select-option.component.js +0 -29
  263. package/esm2015/lib/forms/select/select-option/select-option.component.js.map +0 -1
  264. package/esm2015/lib/forms/select/select.component.js +0 -265
  265. package/esm2015/lib/forms/select/select.component.js.map +0 -1
  266. package/esm2015/lib/forms/slider/slider.component.js +0 -116
  267. package/esm2015/lib/forms/slider/slider.component.js.map +0 -1
  268. package/esm2015/lib/forms/switch/switch.component.js +0 -127
  269. package/esm2015/lib/forms/switch/switch.component.js.map +0 -1
  270. package/esm2015/lib/forms/text-area/text-area.component.js +0 -186
  271. package/esm2015/lib/forms/text-area/text-area.component.js.map +0 -1
  272. package/esm2015/lib/forms/text-editor/text-editor.component.js +0 -294
  273. package/esm2015/lib/forms/text-editor/text-editor.component.js.map +0 -1
  274. package/esm2015/lib/forms/text-input/text-input.component.js +0 -189
  275. package/esm2015/lib/forms/text-input/text-input.component.js.map +0 -1
  276. package/esm2015/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.js +0 -103
  277. package/esm2015/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.js.map +0 -1
  278. package/esm2015/lib/forms/time-picker/time-picker.component.js +0 -194
  279. package/esm2015/lib/forms/time-picker/time-picker.component.js.map +0 -1
  280. package/esm2015/lib/forms/unique-selection-dispatcher.js +0 -39
  281. package/esm2015/lib/forms/unique-selection-dispatcher.js.map +0 -1
  282. package/esm2015/lib/forms/value-accessor-base.js +0 -41
  283. package/esm2015/lib/forms/value-accessor-base.js.map +0 -1
  284. package/esm2015/lib/layout/layout.module.js +0 -18
  285. package/esm2015/lib/layout/layout.module.js.map +0 -1
  286. package/esm2015/lib/wrappers/flatpickr/flatpickr.component.js +0 -63
  287. package/esm2015/lib/wrappers/flatpickr/flatpickr.component.js.map +0 -1
  288. package/fesm2015/festo-ui-angular.js +0 -5596
  289. package/fesm2015/festo-ui-angular.js.map +0 -1
  290. package/lib/components/stepper/stepper.component.d.ts +0 -30
  291. package/scss/base/components/stepper/stepper.component.scss +0 -118
  292. package/scss/styles.scss +0 -2056
@@ -0,0 +1,123 @@
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
3
+ import { ComponentPortal } from '@angular/cdk/portal';
4
+ import { PopoverRef } from './popover-ref';
5
+ import { PopoverComponent } from './popover/popover.component';
6
+ import { defaultPositions, defaultClasses } from './popover.defaults';
7
+ import { PopoverTypes, PopoverPosition } from './popover.models';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/cdk/overlay";
10
+ export class PopoverService {
11
+ constructor(overlay, injector) {
12
+ this.overlay = overlay;
13
+ this.injector = injector;
14
+ this.options = {
15
+ type: PopoverTypes.Tooltip,
16
+ width: null,
17
+ height: null,
18
+ maxWidth: null,
19
+ maxHeight: null,
20
+ minWidth: null,
21
+ minHeight: null,
22
+ hasBackdrop: false,
23
+ backdropClass: 'fng-popover-backdrop',
24
+ positions: null
25
+ };
26
+ }
27
+ get defaultOptions() {
28
+ return this.options;
29
+ }
30
+ open({ origin, content, data, options }) {
31
+ if (null == options) {
32
+ options = this.defaultOptions;
33
+ }
34
+ const overlayConfig = this.getOverlayConfig({ origin, options });
35
+ const overlayRef = this.overlay.create(overlayConfig);
36
+ const popoverRef = new PopoverRef(overlayRef, content, data);
37
+ const injector = this.createInjector(popoverRef, this.injector);
38
+ overlayRef.attach(new ComponentPortal(PopoverComponent, null, injector));
39
+ return popoverRef;
40
+ }
41
+ getOverlayConfig({ origin, options }) {
42
+ const type = null != options.type ? options.type : this.defaultOptions.type;
43
+ const positions = null != options.positions ? options.positions : this.defaultOptions.positions;
44
+ return new OverlayConfig({
45
+ width: null != options.width ? options.width : this.defaultOptions.width,
46
+ height: null != options.height ? options.height : this.defaultOptions.height,
47
+ maxWidth: null != options.maxWidth ? options.maxWidth : this.defaultOptions.maxWidth,
48
+ maxHeight: null != options.maxHeight ? options.maxHeight : this.defaultOptions.maxHeight,
49
+ minWidth: null != options.minWidth ? options.minWidth : this.defaultOptions.minWidth,
50
+ minHeight: null != options.minHeight ? options.minHeight : this.defaultOptions.minHeight,
51
+ positionStrategy: this.getOverlayPosition(origin, type, positions),
52
+ scrollStrategy: null != this.overlay && null != this.overlay.scrollStrategies ? this.overlay.scrollStrategies.block() : {},
53
+ hasBackdrop: null != options.hasBackdrop ? options.hasBackdrop : this.defaultOptions.hasBackdrop,
54
+ backdropClass: null != options.backdropClass ? options.backdropClass : this.defaultOptions.backdropClass
55
+ });
56
+ }
57
+ getOverlayPosition(origin, type, positions) {
58
+ const positionStrategy = this.overlay
59
+ .position()
60
+ .flexibleConnectedTo(origin)
61
+ .withPositions(null != positions ? this.getPositions(type, positions) : this.getDefaultPositions(type))
62
+ .withFlexibleDimensions(false)
63
+ .withViewportMargin(16)
64
+ .withPush(false);
65
+ return positionStrategy;
66
+ }
67
+ createInjector(popoverRef, injector) {
68
+ return Injector.create({
69
+ parent: injector,
70
+ providers: [{ provide: PopoverRef, useValue: popoverRef }]
71
+ });
72
+ }
73
+ getDefaultPositions(type) {
74
+ const pairs = [];
75
+ let positions = [];
76
+ const fn = (t, p) => p.map(position => {
77
+ pairs.push({
78
+ ...defaultPositions[position],
79
+ panelClass: [defaultClasses[t], defaultClasses[position]]
80
+ });
81
+ });
82
+ switch (type) {
83
+ case PopoverTypes.Tooltip:
84
+ positions = [PopoverPosition.Bottom, PopoverPosition.Top];
85
+ fn(PopoverTypes.Tooltip, positions);
86
+ break;
87
+ case PopoverTypes.Menu:
88
+ positions = [PopoverPosition.Right, PopoverPosition.Left];
89
+ fn(PopoverTypes.Menu, positions);
90
+ break;
91
+ case PopoverTypes.Legend:
92
+ positions = [PopoverPosition.Bottom];
93
+ fn(PopoverTypes.Legend, positions);
94
+ break;
95
+ case PopoverTypes.Content:
96
+ positions = [PopoverPosition.Bottom];
97
+ fn(PopoverTypes.Content, positions);
98
+ break;
99
+ default:
100
+ break;
101
+ }
102
+ return pairs;
103
+ }
104
+ getPositions(type, positions) {
105
+ const pairs = [];
106
+ positions.map(position => {
107
+ pairs.push({
108
+ ...defaultPositions[position],
109
+ panelClass: [defaultClasses[type], defaultClasses[position]]
110
+ });
111
+ });
112
+ return pairs;
113
+ }
114
+ }
115
+ PopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverService, deps: [{ token: i1.Overlay }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ PopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverService, providedIn: 'root' });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverService, decorators: [{
118
+ type: Injectable,
119
+ args: [{
120
+ providedIn: 'root'
121
+ }]
122
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }]; } });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9wb3BvdmVycy9wb3BvdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUNMLE9BQU8sRUFFUCxhQUFhLEVBR2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFpQyxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUtoRyxNQUFNLE9BQU8sY0FBYztJQWtCekIsWUFBb0IsT0FBZ0IsRUFBVSxRQUFrQjtRQUE1QyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWpCdkQsWUFBTyxHQUFtQjtZQUNqQyxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU87WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxJQUFJO1lBQ2QsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLEtBQUs7WUFDbEIsYUFBYSxFQUFFLHNCQUFzQjtZQUNyQyxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO0lBTWlFLENBQUM7SUFKcEUsSUFBSSxjQUFjO1FBQ2hCLE9B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LFlBQVksQ0FBQyxJQUFrQixFQUFFLFNBQTRCO1FBQ25FLE1BQU0sS0FBSyxHQUE2QixFQUFFLENBQUM7UUFDM0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNULEdBQUcsZ0JBQWdCLENBQUMsUUFBa0IsQ0FBQztnQkFDdkMsVUFBVSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM3RCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7MkdBbEhVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgT3ZlcmxheSxcbiAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgT3ZlcmxheUNvbmZpZyxcbiAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICBOb29wU2Nyb2xsU3RyYXRlZ3lcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbmltcG9ydCB7IFBvcG92ZXJSZWYgfSBmcm9tICcuL3BvcG92ZXItcmVmJztcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZGVmYXVsdFBvc2l0aW9ucywgZGVmYXVsdENsYXNzZXMgfSBmcm9tICcuL3BvcG92ZXIuZGVmYXVsdHMnO1xuaW1wb3J0IHsgUG9wb3ZlclBhcmFtcywgUG9wb3Zlck9wdGlvbnMsIFBvcG92ZXJUeXBlcywgUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi9wb3BvdmVyLm1vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgb3B0aW9uczogUG9wb3Zlck9wdGlvbnMgPSB7XG4gICAgdHlwZTogUG9wb3ZlclR5cGVzLlRvb2x0aXAsXG4gICAgd2lkdGg6IG51bGwsXG4gICAgaGVpZ2h0OiBudWxsLFxuICAgIG1heFdpZHRoOiBudWxsLFxuICAgIG1heEhlaWdodDogbnVsbCxcbiAgICBtaW5XaWR0aDogbnVsbCxcbiAgICBtaW5IZWlnaHQ6IG51bGwsXG4gICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgIGJhY2tkcm9wQ2xhc3M6ICdmbmctcG9wb3Zlci1iYWNrZHJvcCcsXG4gICAgcG9zaXRpb25zOiBudWxsXG4gIH07XG5cbiAgZ2V0IGRlZmF1bHRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG9wZW48VD4oeyBvcmlnaW4sIGNvbnRlbnQsIGRhdGEsIG9wdGlvbnMgfTogUG9wb3ZlclBhcmFtczxUPik6IFBvcG92ZXJSZWY8VD4ge1xuICAgIGlmIChudWxsID09IG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSB0aGlzLmRlZmF1bHRPcHRpb25zO1xuICAgIH1cbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKHsgb3JpZ2luLCBvcHRpb25zIH0pO1xuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuICAgIGNvbnN0IHBvcG92ZXJSZWYgPSBuZXcgUG9wb3ZlclJlZjxUPihvdmVybGF5UmVmLCBjb250ZW50LCBkYXRhKTtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY3JlYXRlSW5qZWN0b3IocG9wb3ZlclJlZiwgdGhpcy5pbmplY3Rvcik7XG5cbiAgICBvdmVybGF5UmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKFBvcG92ZXJDb21wb25lbnQsIG51bGwsIGluamVjdG9yKSk7XG5cbiAgICByZXR1cm4gcG9wb3ZlclJlZjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyh7IG9yaWdpbiwgb3B0aW9ucyB9OiB7IG9yaWdpbjogSFRNTEVsZW1lbnQ7IG9wdGlvbnM6IFBvcG92ZXJPcHRpb25zIH0pOiBPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCB0eXBlID0gbnVsbCAhPSBvcHRpb25zLnR5cGUgPyBvcHRpb25zLnR5cGUgOiB0aGlzLmRlZmF1bHRPcHRpb25zLnR5cGU7XG4gICAgY29uc3QgcG9zaXRpb25zID0gbnVsbCAhPSBvcHRpb25zLnBvc2l0aW9ucyA/IG9wdGlvbnMucG9zaXRpb25zIDogdGhpcy5kZWZhdWx0T3B0aW9ucy5wb3NpdGlvbnM7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHdpZHRoOiBudWxsICE9IG9wdGlvbnMud2lkdGggPyBvcHRpb25zLndpZHRoIDogdGhpcy5kZWZhdWx0T3B0aW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogbnVsbCAhPSBvcHRpb25zLmhlaWdodCA/IG9wdGlvbnMuaGVpZ2h0IDogdGhpcy5kZWZhdWx0T3B0aW9ucy5oZWlnaHQsXG4gICAgICBtYXhXaWR0aDogbnVsbCAhPSBvcHRpb25zLm1heFdpZHRoID8gb3B0aW9ucy5tYXhXaWR0aCA6IHRoaXMuZGVmYXVsdE9wdGlvbnMubWF4V2lkdGgsXG4gICAgICBtYXhIZWlnaHQ6IG51bGwgIT0gb3B0aW9ucy5tYXhIZWlnaHQgPyBvcHRpb25zLm1heEhlaWdodCA6IHRoaXMuZGVmYXVsdE9wdGlvbnMubWF4SGVpZ2h0LFxuICAgICAgbWluV2lkdGg6IG51bGwgIT0gb3B0aW9ucy5taW5XaWR0aCA/IG9wdGlvbnMubWluV2lkdGggOiB0aGlzLmRlZmF1bHRPcHRpb25zLm1pbldpZHRoLFxuICAgICAgbWluSGVpZ2h0OiBudWxsICE9IG9wdGlvbnMubWluSGVpZ2h0ID8gb3B0aW9ucy5taW5IZWlnaHQgOiB0aGlzLmRlZmF1bHRPcHRpb25zLm1pbkhlaWdodCxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuZ2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbiwgdHlwZSwgcG9zaXRpb25zKSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OlxuICAgICAgICBudWxsICE9IHRoaXMub3ZlcmxheSAmJiBudWxsICE9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzID8gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSA6ICh7fSBhcyBOb29wU2Nyb2xsU3RyYXRlZ3kpLFxuICAgICAgaGFzQmFja2Ryb3A6IG51bGwgIT0gb3B0aW9ucy5oYXNCYWNrZHJvcCA/IG9wdGlvbnMuaGFzQmFja2Ryb3AgOiB0aGlzLmRlZmF1bHRPcHRpb25zLmhhc0JhY2tkcm9wLFxuICAgICAgYmFja2Ryb3BDbGFzczogbnVsbCAhPSBvcHRpb25zLmJhY2tkcm9wQ2xhc3MgPyBvcHRpb25zLmJhY2tkcm9wQ2xhc3MgOiB0aGlzLmRlZmF1bHRPcHRpb25zLmJhY2tkcm9wQ2xhc3NcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbjogSFRNTEVsZW1lbnQsIHR5cGU6IFBvcG92ZXJUeXBlcywgcG9zaXRpb25zOiBQb3BvdmVyUG9zaXRpb25bXSk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKG51bGwgIT0gcG9zaXRpb25zID8gdGhpcy5nZXRQb3NpdGlvbnModHlwZSwgcG9zaXRpb25zKSA6IHRoaXMuZ2V0RGVmYXVsdFBvc2l0aW9ucyh0eXBlKSlcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgLndpdGhWaWV3cG9ydE1hcmdpbigxNilcbiAgICAgIC53aXRoUHVzaChmYWxzZSk7XG5cbiAgICByZXR1cm4gcG9zaXRpb25TdHJhdGVneTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5qZWN0b3IocG9wb3ZlclJlZjogUG9wb3ZlclJlZiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IGluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBQb3BvdmVyUmVmLCB1c2VWYWx1ZTogcG9wb3ZlclJlZiB9XVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0UG9zaXRpb25zKHR5cGU6IFBvcG92ZXJUeXBlcyk6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSB7XG4gICAgY29uc3QgcGFpcnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtdO1xuICAgIGxldCBwb3NpdGlvbnMgPSBbXTtcbiAgICBjb25zdCBmbiA9ICh0OiBQb3BvdmVyVHlwZXMsIHA6IFBvcG92ZXJQb3NpdGlvbltdKSA9PlxuICAgICAgcC5tYXAocG9zaXRpb24gPT4ge1xuICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAuLi5kZWZhdWx0UG9zaXRpb25zW3Bvc2l0aW9uIGFzIHN0cmluZ10sXG4gICAgICAgICAgcGFuZWxDbGFzczogW2RlZmF1bHRDbGFzc2VzW3RdLCBkZWZhdWx0Q2xhc3Nlc1twb3NpdGlvbl1dXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFBvcG92ZXJUeXBlcy5Ub29sdGlwOlxuICAgICAgICBwb3NpdGlvbnMgPSBbUG9wb3ZlclBvc2l0aW9uLkJvdHRvbSwgUG9wb3ZlclBvc2l0aW9uLlRvcF07XG4gICAgICAgIGZuKFBvcG92ZXJUeXBlcy5Ub29sdGlwLCBwb3NpdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUG9wb3ZlclR5cGVzLk1lbnU6XG4gICAgICAgIHBvc2l0aW9ucyA9IFtQb3BvdmVyUG9zaXRpb24uUmlnaHQsIFBvcG92ZXJQb3NpdGlvbi5MZWZ0XTtcbiAgICAgICAgZm4oUG9wb3ZlclR5cGVzLk1lbnUsIHBvc2l0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQb3BvdmVyVHlwZXMuTGVnZW5kOlxuICAgICAgICBwb3NpdGlvbnMgPSBbUG9wb3ZlclBvc2l0aW9uLkJvdHRvbV07XG4gICAgICAgIGZuKFBvcG92ZXJUeXBlcy5MZWdlbmQsIHBvc2l0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQb3BvdmVyVHlwZXMuQ29udGVudDpcbiAgICAgICAgcG9zaXRpb25zID0gW1BvcG92ZXJQb3NpdGlvbi5Cb3R0b21dO1xuICAgICAgICBmbihQb3BvdmVyVHlwZXMuQ29udGVudCwgcG9zaXRpb25zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHBhaXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb3NpdGlvbnModHlwZTogUG9wb3ZlclR5cGVzLCBwb3NpdGlvbnM6IFBvcG92ZXJQb3NpdGlvbltdKTogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdIHtcbiAgICBjb25zdCBwYWlyczogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdID0gW107XG4gICAgcG9zaXRpb25zLm1hcChwb3NpdGlvbiA9PiB7XG4gICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgLi4uZGVmYXVsdFBvc2l0aW9uc1twb3NpdGlvbiBhcyBzdHJpbmddLFxuICAgICAgICBwYW5lbENsYXNzOiBbZGVmYXVsdENsYXNzZXNbdHlwZV0sIGRlZmF1bHRDbGFzc2VzW3Bvc2l0aW9uXV1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhaXJzO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,100 @@
1
+ import { Directive, ElementRef, HostListener, Input } from '@angular/core';
2
+ import { PopoverPosition } from './../popover.models';
3
+ import { PopoverTypes } from '../popover.models';
4
+ import { PopoverService } from '../popover.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../popover.service";
7
+ export class TooltipDirective {
8
+ constructor(elmenetRef, popoverService) {
9
+ this.elmenetRef = elmenetRef;
10
+ this.popoverService = popoverService;
11
+ this.text = '';
12
+ this.isVisible = false;
13
+ this.positions = [];
14
+ this.options = {
15
+ maxWidth: 400,
16
+ delay: 0
17
+ };
18
+ this.innerIsVisible = false;
19
+ this.timeoutHandle = null;
20
+ }
21
+ ngOnChanges(changes) {
22
+ this.origin = this.elmenetRef.nativeElement;
23
+ if (changes?.isVisible?.currentValue === true) {
24
+ if (this.innerIsVisible === false) {
25
+ this.open();
26
+ }
27
+ }
28
+ if (changes?.isVisible?.currentValue === false) {
29
+ if (this.innerIsVisible === true) {
30
+ this.close();
31
+ }
32
+ }
33
+ }
34
+ ngOnDestroy() {
35
+ this.hide();
36
+ }
37
+ show() {
38
+ if (this.options?.delay > 0) {
39
+ this.timeoutHandle = setTimeout(() => {
40
+ this.open();
41
+ }, +this.options?.delay);
42
+ }
43
+ else {
44
+ this.open();
45
+ }
46
+ }
47
+ hide() {
48
+ if (this.timeoutHandle != null) {
49
+ clearTimeout(this.timeoutHandle);
50
+ }
51
+ this.close();
52
+ }
53
+ open() {
54
+ if (this.innerIsVisible === false) {
55
+ this.popoverRef = this.popoverService.open({
56
+ content: this.text,
57
+ origin: this.origin,
58
+ options: {
59
+ type: PopoverTypes.Tooltip,
60
+ maxWidth: this.options.maxWidth,
61
+ // using a set here removes duplicate positions and ensures that at least the bottom position will be used
62
+ positions: [...new Set([...this.positions, PopoverPosition.Bottom])]
63
+ }
64
+ });
65
+ this.innerIsVisible = true;
66
+ }
67
+ }
68
+ close() {
69
+ if (this.popoverRef != null) {
70
+ this.popoverRef.close();
71
+ }
72
+ this.innerIsVisible = false;
73
+ }
74
+ }
75
+ TooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i1.PopoverService }], target: i0.ɵɵFactoryTarget.Directive });
76
+ TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: TooltipDirective, selector: "[fngTooltip]", inputs: { text: ["fngTooltip", "text"], isVisible: ["fngTooltipVisible", "isVisible"], positions: ["fngTooltipPositions", "positions"], options: "options" }, host: { listeners: { "mouseenter": "show()", "mouseleave": "hide()" } }, usesOnChanges: true, ngImport: i0 });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TooltipDirective, decorators: [{
78
+ type: Directive,
79
+ args: [{
80
+ selector: '[fngTooltip]'
81
+ }]
82
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PopoverService }]; }, propDecorators: { text: [{
83
+ type: Input,
84
+ args: ['fngTooltip']
85
+ }], isVisible: [{
86
+ type: Input,
87
+ args: ['fngTooltipVisible']
88
+ }], positions: [{
89
+ type: Input,
90
+ args: ['fngTooltipPositions']
91
+ }], options: [{
92
+ type: Input
93
+ }], show: [{
94
+ type: HostListener,
95
+ args: ['mouseenter']
96
+ }], hide: [{
97
+ type: HostListener,
98
+ args: ['mouseleave']
99
+ }] } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3BvcG92ZXJzL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQVVwRCxNQUFNLE9BQU8sZ0JBQWdCO0lBYTNCLFlBQW9CLFVBQXNCLEVBQVUsY0FBOEI7UUFBOUQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVo3RCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ0gsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQXNCLEVBQUUsQ0FBQztRQUN2RCxZQUFPLEdBQW1CO1lBQ2pDLFFBQVEsRUFBRSxHQUFHO1lBQ2IsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO1FBR00sbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFFd0QsQ0FBQztJQUV0RixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUU1QyxJQUFJLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxLQUFLLElBQUksRUFBRTtZQUM3QyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDYjtTQUNGO1FBQ0QsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksS0FBSyxLQUFLLEVBQUU7WUFDOUMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtnQkFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUdELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDMUI7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUdELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO1lBQzlCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRU8sSUFBSTtRQUNWLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDekMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNsQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU87b0JBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7b0JBQy9CLDBHQUEwRztvQkFDMUcsU0FBUyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDckU7YUFDRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQzs7NkdBMUVVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBSDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCOzhIQUVzQixJQUFJO3NCQUF4QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ1MsU0FBUztzQkFBcEMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0ksU0FBUztzQkFBdEMsS0FBSzt1QkFBQyxxQkFBcUI7Z0JBQ25CLE9BQU87c0JBQWYsS0FBSztnQkErQk4sSUFBSTtzQkFESCxZQUFZO3VCQUFDLFlBQVk7Z0JBWTFCLElBQUk7c0JBREgsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb3BvdmVyUG9zaXRpb24gfSBmcm9tICcuLy4uL3BvcG92ZXIubW9kZWxzJztcbmltcG9ydCB7IFBvcG92ZXJSZWYgfSBmcm9tICcuLi9wb3BvdmVyLXJlZic7XG5pbXBvcnQgeyBQb3BvdmVyVHlwZXMgfSBmcm9tICcuLi9wb3BvdmVyLm1vZGVscyc7XG5pbXBvcnQgeyBQb3BvdmVyU2VydmljZSB9IGZyb20gJy4uL3BvcG92ZXIuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbHRpcE9wdGlvbnMge1xuICBtYXhXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgZGVsYXk/OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmbmdUb29sdGlwXSdcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCdmbmdUb29sdGlwJykgdGV4dCA9ICcnO1xuICBASW5wdXQoJ2ZuZ1Rvb2x0aXBWaXNpYmxlJykgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgnZm5nVG9vbHRpcFBvc2l0aW9ucycpIHBvc2l0aW9uczogUG9wb3ZlclBvc2l0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgb3B0aW9uczogVG9vbHRpcE9wdGlvbnMgPSB7XG4gICAgbWF4V2lkdGg6IDQwMCxcbiAgICBkZWxheTogMFxuICB9O1xuICBwcml2YXRlIG9yaWdpbjogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgcG9wb3ZlclJlZjogUG9wb3ZlclJlZjtcbiAgcHJpdmF0ZSBpbm5lcklzVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIHRpbWVvdXRIYW5kbGUgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxtZW5ldFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBwb3BvdmVyU2VydmljZTogUG9wb3ZlclNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMub3JpZ2luID0gdGhpcy5lbG1lbmV0UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAoY2hhbmdlcz8uaXNWaXNpYmxlPy5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcbiAgICAgIGlmICh0aGlzLmlubmVySXNWaXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXM/LmlzVmlzaWJsZT8uY3VycmVudFZhbHVlID09PSBmYWxzZSkge1xuICAgICAgaWYgKHRoaXMuaW5uZXJJc1Zpc2libGUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIHNob3coKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucz8uZGVsYXkgPiAwKSB7XG4gICAgICB0aGlzLnRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICB9LCArdGhpcy5vcHRpb25zPy5kZWxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBoaWRlKCkge1xuICAgIGlmICh0aGlzLnRpbWVvdXRIYW5kbGUgIT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dEhhbmRsZSk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbigpIHtcbiAgICBpZiAodGhpcy5pbm5lcklzVmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMucG9wb3ZlclJlZiA9IHRoaXMucG9wb3ZlclNlcnZpY2Uub3Blbih7XG4gICAgICAgIGNvbnRlbnQ6IHRoaXMudGV4dCxcbiAgICAgICAgb3JpZ2luOiB0aGlzLm9yaWdpbixcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHR5cGU6IFBvcG92ZXJUeXBlcy5Ub29sdGlwLFxuICAgICAgICAgIG1heFdpZHRoOiB0aGlzLm9wdGlvbnMubWF4V2lkdGgsXG4gICAgICAgICAgLy8gdXNpbmcgYSBzZXQgaGVyZSByZW1vdmVzIGR1cGxpY2F0ZSBwb3NpdGlvbnMgYW5kIGVuc3VyZXMgdGhhdCBhdCBsZWFzdCB0aGUgYm90dG9tIHBvc2l0aW9uIHdpbGwgYmUgdXNlZFxuICAgICAgICAgIHBvc2l0aW9uczogWy4uLm5ldyBTZXQoWy4uLnRoaXMucG9zaXRpb25zLCBQb3BvdmVyUG9zaXRpb24uQm90dG9tXSldXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbm5lcklzVmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5wb3BvdmVyUmVmICE9IG51bGwpIHtcbiAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cbiAgICB0aGlzLmlubmVySXNWaXNpYmxlID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ProgressComponent {
4
+ constructor() {
5
+ this.background = 'white';
6
+ }
7
+ }
8
+ ProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ ProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ProgressComponent, selector: "fng-progress", inputs: { progress: "progress", error: "error", background: "background" }, ngImport: i0, template: "<div class=\"fwe-progress\">\n <div\n class=\"fwe-progress-bar\"\n role=\"progressbar\"\n [style.width.%]=\"progress\"\n [class.fwe-bg-red]=\"error\"\n [class.fwe-progress-bar-black]=\"background === 'black'\"\n [class.fwe-progress-bar-background]=\"background === 'background'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n</div>\n" });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ProgressComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'fng-progress', template: "<div class=\"fwe-progress\">\n <div\n class=\"fwe-progress-bar\"\n role=\"progressbar\"\n [style.width.%]=\"progress\"\n [class.fwe-bg-red]=\"error\"\n [class.fwe-progress-bar-black]=\"background === 'black'\"\n [class.fwe-progress-bar-background]=\"background === 'background'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n</div>\n" }]
13
+ }], propDecorators: { progress: [{
14
+ type: Input
15
+ }], error: [{
16
+ type: Input
17
+ }], background: [{
18
+ type: Input
19
+ }] } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9wcm9ncmVzcy9wcm9ncmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3Byb2dyZXNzL3Byb2dyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1qRCxNQUFNLE9BQU8saUJBQWlCO0lBSjlCO1FBT1csZUFBVSxHQUFxQyxPQUFPLENBQUM7S0FDakU7OzhHQUpZLGlCQUFpQjtrR0FBakIsaUJBQWlCLGdJQ045Qiw0WkFhQTsyRkRQYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsY0FBYzs4QkFJZixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmbmctcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHJvZ3Jlc3M6IG51bWJlcjtcbiAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJhY2tncm91bmQ6ICd3aGl0ZScgfCAnYmFja2dyb3VuZCcgfCAnYmxhY2snID0gJ3doaXRlJztcbn1cbiIsIjxkaXYgY2xhc3M9XCJmd2UtcHJvZ3Jlc3NcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZndlLXByb2dyZXNzLWJhclwiXG4gICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICBbc3R5bGUud2lkdGguJV09XCJwcm9ncmVzc1wiXG4gICAgW2NsYXNzLmZ3ZS1iZy1yZWRdPVwiZXJyb3JcIlxuICAgIFtjbGFzcy5md2UtcHJvZ3Jlc3MtYmFyLWJsYWNrXT1cImJhY2tncm91bmQgPT09ICdibGFjaydcIlxuICAgIFtjbGFzcy5md2UtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRdPVwiYmFja2dyb3VuZCA9PT0gJ2JhY2tncm91bmQnXCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInByb2dyZXNzXCJcbiAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './scrollable.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3Njcm9sbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY3JvbGxhYmxlLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';
2
+ import SimpleBar from 'simplebar';
3
+ import * as i0 from "@angular/core";
4
+ export class ScrollableDirective {
5
+ constructor(el, ngZone, renderer) {
6
+ this.el = el;
7
+ this.ngZone = ngZone;
8
+ this.renderer = renderer;
9
+ this.scrollbarMinSize = 25;
10
+ this.isScrolling = false;
11
+ }
12
+ ngOnChanges(changes) {
13
+ if (changes?.viewReady.currentValue === true) {
14
+ this.initScrollbar();
15
+ this.initResizeObserver();
16
+ }
17
+ }
18
+ ngOnDestroy() {
19
+ this.resizeObserver?.disconnect();
20
+ }
21
+ initScrollbar() {
22
+ const el = this.el.nativeElement;
23
+ // yes, we explict want to run outside angular to avoid unnecessary change detection cycles
24
+ this.ngZone.runOutsideAngular(() => {
25
+ this.sb = new SimpleBar(el, { scrollbarMinSize: this.scrollbarMinSize });
26
+ this.sb.getScrollElement().addEventListener('scroll', this.delay(() => {
27
+ // triggered on scroll stop
28
+ this.isScrolling = false;
29
+ }), false);
30
+ });
31
+ this.updateMaxWidth();
32
+ }
33
+ initResizeObserver() {
34
+ const el = this.el.nativeElement;
35
+ this.resizeObserver = new ResizeObserver(() => {
36
+ this.updateMaxWidth();
37
+ });
38
+ this.resizeObserver.observe(el);
39
+ }
40
+ updateMaxWidth() {
41
+ const el = this.el.nativeElement;
42
+ const wrapper = el.querySelector('.simplebar-content-wrapper');
43
+ const width = el.getBoundingClientRect().width;
44
+ this.renderer.setStyle(wrapper, 'max-width', width + 'px');
45
+ }
46
+ delay(callback) {
47
+ let timer;
48
+ return () => {
49
+ if (!this.isScrolling) {
50
+ // triggered on scroll start
51
+ this.isScrolling = true;
52
+ }
53
+ window.clearTimeout(timer);
54
+ timer = window.setTimeout(callback, 50);
55
+ };
56
+ }
57
+ }
58
+ ScrollableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
59
+ ScrollableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: ScrollableDirective, selector: "[fngScrollable]", inputs: { scrollbarMinSize: ["fngScrollableScrollbarMinSize", "scrollbarMinSize"], viewReady: ["fngScrollableViewReady", "viewReady"] }, usesOnChanges: true, ngImport: i0 });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ScrollableDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{
63
+ selector: '[fngScrollable]'
64
+ }]
65
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { scrollbarMinSize: [{
66
+ type: Input,
67
+ args: ['fngScrollableScrollbarMinSize']
68
+ }], viewReady: [{
69
+ type: Input,
70
+ args: ['fngScrollableViewReady']
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3Njcm9sbC9zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBNEIsS0FBSyxFQUFpQixNQUFNLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQzs7QUFTbEMsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixZQUFvQixFQUFjLEVBQVUsTUFBYyxFQUFVLFFBQW1CO1FBQW5FLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVAvQyxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFJOUQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFHOEQsQ0FBQztJQUUzRixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLEVBQUUsU0FBUyxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sRUFBRSxHQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUM5QywyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDekMsUUFBUSxFQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNkLDJCQUEyQjtnQkFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxDQUNOLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sRUFBRSxHQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUM1QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLEVBQUUsR0FBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQWE7UUFDekIsSUFBSSxLQUFhLENBQUM7UUFDbEIsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDckIsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUN6QjtZQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztJQUNKLENBQUM7O2dIQWhFVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCOzhJQUV5QyxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsK0JBQStCO2dCQUNMLFNBQVM7c0JBQXpDLEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIElucHV0LCBBZnRlclZpZXdJbml0LCBOZ1pvbmUsIFJlbmRlcmVyMiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgU2ltcGxlQmFyIGZyb20gJ3NpbXBsZWJhcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nyb2xsYWJsZUF3YXJlIGV4dGVuZHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHNjcm9sbGFibGVWaWV3UmVhZHk6IGJvb2xlYW47XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmbmdTY3JvbGxhYmxlXSdcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCdmbmdTY3JvbGxhYmxlU2Nyb2xsYmFyTWluU2l6ZScpIHNjcm9sbGJhck1pblNpemU6IG51bWJlciA9IDI1O1xuICBASW5wdXQoJ2ZuZ1Njcm9sbGFibGVWaWV3UmVhZHknKSB2aWV3UmVhZHk6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBzYjogU2ltcGxlQmFyO1xuICBwcml2YXRlIGlzU2Nyb2xsaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXM/LnZpZXdSZWFkeS5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuaW5pdFNjcm9sbGJhcigpO1xuICAgICAgdGhpcy5pbml0UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTY3JvbGxiYXIoKSB7XG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIC8vIHllcywgd2UgZXhwbGljdCB3YW50IHRvIHJ1biBvdXRzaWRlIGFuZ3VsYXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgY2hhbmdlIGRldGVjdGlvbiBjeWNsZXNcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNiID0gbmV3IFNpbXBsZUJhcihlbCwgeyBzY3JvbGxiYXJNaW5TaXplOiB0aGlzLnNjcm9sbGJhck1pblNpemUgfSk7XG4gICAgICB0aGlzLnNiLmdldFNjcm9sbEVsZW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnc2Nyb2xsJyxcbiAgICAgICAgdGhpcy5kZWxheSgoKSA9PiB7XG4gICAgICAgICAgLy8gdHJpZ2dlcmVkIG9uIHNjcm9sbCBzdG9wXG4gICAgICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVNYXhXaWR0aCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmVzaXplT2JzZXJ2ZXIoKSB7XG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVNYXhXaWR0aCgpO1xuICAgIH0pO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1heFdpZHRoKCkge1xuICAgIGNvbnN0IGVsOiBIVE1MRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB3cmFwcGVyID0gZWwucXVlcnlTZWxlY3RvcignLnNpbXBsZWJhci1jb250ZW50LXdyYXBwZXInKTtcbiAgICBjb25zdCB3aWR0aCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUod3JhcHBlciwgJ21heC13aWR0aCcsIHdpZHRoICsgJ3B4Jyk7XG4gIH1cblxuICBwcml2YXRlIGRlbGF5KGNhbGxiYWNrOiBhbnkpIHtcbiAgICBsZXQgdGltZXI6IG51bWJlcjtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzU2Nyb2xsaW5nKSB7XG4gICAgICAgIC8vIHRyaWdnZXJlZCBvbiBzY3JvbGwgc3RhcnRcbiAgICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgNTApO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/platform-browser";
5
+ export class SafeHtmlPipe {
6
+ constructor(sanitizer) {
7
+ this.sanitizer = sanitizer;
8
+ }
9
+ transform(value) {
10
+ return this.sanitizer.bypassSecurityTrustHtml(value);
11
+ }
12
+ }
13
+ SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
14
+ SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SafeHtmlPipe, name: "safeHtml" });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SafeHtmlPipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{
18
+ name: 'safeHtml'
19
+ }]
20
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1pbnB1dC9zYWZlLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7OztBQUtuRSxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUFzQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUUxQyxTQUFTLENBQUMsS0FBVTtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7eUdBTFUsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdzYWZlSHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2FmZUh0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,172 @@
1
+ import { Component, Input, ViewChild, ElementRef, ViewEncapsulation, Output, EventEmitter, HostListener } from '@angular/core';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../click-outside.directive";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "./safe-html.pipe";
7
+ export class SearchSuggestion {
8
+ /**
9
+ * Creates a basic Suggestion from a string. The first query match is highlighted by bold tags.
10
+ * @param suggestionString The suggested string (should contain the whole query)
11
+ * @param query The current query. This string will be highlighted.
12
+ * @returns a html-string.
13
+ */
14
+ static basicSuggestion(suggestionString, query) {
15
+ const i = suggestionString.toLocaleLowerCase().indexOf(query.toLocaleLowerCase());
16
+ let template = suggestionString;
17
+ if (i != -1) {
18
+ const boldStart = i;
19
+ const boldEnd = i + query.length;
20
+ const part1 = suggestionString.substring(0, boldStart);
21
+ const part2 = suggestionString.substring(boldStart, boldEnd);
22
+ const part3 = suggestionString.substring(boldEnd, suggestionString.length);
23
+ template = part1 + '<b>' + part2 + '</b>' + part3;
24
+ }
25
+ return { value: suggestionString, template };
26
+ }
27
+ }
28
+ /**
29
+ * A custom form element for search inputs.
30
+ */
31
+ export class SearchInputComponent {
32
+ constructor() {
33
+ /**
34
+ * the querrry was changed, update the suggetion list
35
+ */
36
+ this.fngChange = new EventEmitter();
37
+ /**
38
+ * Start search on this event
39
+ */
40
+ this.fngSearch = new EventEmitter();
41
+ /**
42
+ * The search input label.
43
+ */
44
+ this.label = '';
45
+ this.innerDisabled = false;
46
+ this.innerValue = '';
47
+ this.innerSuggestions = [];
48
+ this.hideSuggestionList = false;
49
+ // This is the index of the selected element in dhe suggestion list.
50
+ this.selectedSuggestionIndex = -1;
51
+ }
52
+ /**
53
+ * When true the control's disabled attribute is set
54
+ * and it gets addeed the .disabled css class.
55
+ */
56
+ get disabled() {
57
+ return this.innerDisabled;
58
+ }
59
+ set disabled(value) {
60
+ this.innerDisabled = coerceBooleanProperty(value);
61
+ }
62
+ /**
63
+ * The getter for value.
64
+ */
65
+ get value() {
66
+ return this.innerValue;
67
+ }
68
+ /**
69
+ * The setter for value.
70
+ */
71
+ set value(value) {
72
+ if (value != null) {
73
+ value = '' + value;
74
+ }
75
+ this.innerValue = value;
76
+ }
77
+ /**
78
+ * The list of suggestions
79
+ */
80
+ set suggestions(value) {
81
+ this.selectedSuggestionIndex = -1;
82
+ this.innerSuggestions = value;
83
+ }
84
+ /**
85
+ * The list of suggestions capped by 10 entries
86
+ */
87
+ get cappedSuggestions() {
88
+ return this.innerSuggestions.slice(0, 10);
89
+ }
90
+ keyhandler(event) {
91
+ if (!this.cappedSuggestions || !this.cappedSuggestions.length) {
92
+ return;
93
+ }
94
+ // navigate inside the suggestion list
95
+ if (event.key === 'ArrowUp') {
96
+ if (this.selectedSuggestionIndex > 0) {
97
+ this.selectedSuggestionIndex--;
98
+ }
99
+ else {
100
+ this.selectedSuggestionIndex = this.cappedSuggestions.length - 1;
101
+ }
102
+ this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;
103
+ }
104
+ if (event.key === 'ArrowDown') {
105
+ if (this.selectedSuggestionIndex >= this.cappedSuggestions.length - 1) {
106
+ this.selectedSuggestionIndex = 0;
107
+ }
108
+ else {
109
+ this.selectedSuggestionIndex++;
110
+ }
111
+ this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;
112
+ }
113
+ }
114
+ onClickOutside() {
115
+ this.hideSuggestionList = true;
116
+ }
117
+ onFocus() {
118
+ this.hideSuggestionList = false;
119
+ }
120
+ onInput(event) {
121
+ this.selectedSuggestionIndex = -1;
122
+ this.value = event.target.value;
123
+ this.fngChange.emit(this.value);
124
+ }
125
+ // also triggert on "Enter" and "Escape"
126
+ onSearch(event) {
127
+ event.stopPropagation();
128
+ this.selectedSuggestionIndex = -1;
129
+ this.fngSearch.emit(this.value);
130
+ this.hideSuggestionList = true;
131
+ this.inputRef.nativeElement.blur();
132
+ }
133
+ onSuggestionClick(suggestion) {
134
+ this.selectedSuggestionIndex = -1;
135
+ this.value = suggestion.value;
136
+ this.fngSearch.emit(this.value);
137
+ this.hideSuggestionList = true;
138
+ this.inputRef.nativeElement.blur();
139
+ }
140
+ clearQuery() {
141
+ this.selectedSuggestionIndex = -1;
142
+ this.value = '';
143
+ this.fngSearch.emit(this.value);
144
+ this.hideSuggestionList = true;
145
+ this.inputRef.nativeElement.blur();
146
+ }
147
+ }
148
+ SearchInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
149
+ SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SearchInputComponent, selector: "fng-search-input", inputs: { label: "label", disabled: "disabled", value: "value", suggestions: "suggestions" }, outputs: { fngChange: "fngChange", fngSearch: "fngSearch" }, host: { listeners: { "document:keydown": "keyhandler($event)" } }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div class=\"fwe-search-input fwe-w-100\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\n <input\n class=\"fwe-w-100\"\n #inputElement\n [attr.disabled]=\"disabled ? '' : null\"\n [placeholder]=\"label\"\n (focus)=\"onFocus()\"\n type=\"search\"\n (input)=\"onInput($event)\"\n (search)=\"onSearch($event)\"\n [value]=\"innerValue\"\n />\n <div class=\"fwe-search-icon\"></div>\n <div class=\"fwe-clear-icon\" (click)=\"clearQuery()\"></div>\n <div class=\"fwe-search-suggestions\" *ngIf=\"innerSuggestions?.length && !hideSuggestionList\">\n <div\n *ngFor=\"let suggestion of cappedSuggestions; let i = index\"\n (click)=\"onSuggestionClick(suggestion)\"\n [class.fwe-selected]=\"selectedSuggestionIndex === i\"\n class=\"fwe-search-suggestion\"\n >\n <div [innerHTML]=\"suggestion.template | safeHtml\"></div>\n </div>\n <div class=\"fwe-ml-xxs\" *ngIf=\"innerSuggestions.length > 10\">...</div>\n </div>\n</div>\n", styles: [".fwe-w-100{width:100%}.fwe-search-suggestion{height:40px}\n"], directives: [{ type: i1.ClickOutsideDirective, selector: "[fngClickOutside]", outputs: ["clickOutside"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "safeHtml": i3.SafeHtmlPipe }, encapsulation: i0.ViewEncapsulation.None });
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SearchInputComponent, decorators: [{
151
+ type: Component,
152
+ args: [{ selector: 'fng-search-input', encapsulation: ViewEncapsulation.None, template: "<div class=\"fwe-search-input fwe-w-100\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\n <input\n class=\"fwe-w-100\"\n #inputElement\n [attr.disabled]=\"disabled ? '' : null\"\n [placeholder]=\"label\"\n (focus)=\"onFocus()\"\n type=\"search\"\n (input)=\"onInput($event)\"\n (search)=\"onSearch($event)\"\n [value]=\"innerValue\"\n />\n <div class=\"fwe-search-icon\"></div>\n <div class=\"fwe-clear-icon\" (click)=\"clearQuery()\"></div>\n <div class=\"fwe-search-suggestions\" *ngIf=\"innerSuggestions?.length && !hideSuggestionList\">\n <div\n *ngFor=\"let suggestion of cappedSuggestions; let i = index\"\n (click)=\"onSuggestionClick(suggestion)\"\n [class.fwe-selected]=\"selectedSuggestionIndex === i\"\n class=\"fwe-search-suggestion\"\n >\n <div [innerHTML]=\"suggestion.template | safeHtml\"></div>\n </div>\n <div class=\"fwe-ml-xxs\" *ngIf=\"innerSuggestions.length > 10\">...</div>\n </div>\n</div>\n", styles: [".fwe-w-100{width:100%}.fwe-search-suggestion{height:40px}\n"] }]
153
+ }], propDecorators: { inputRef: [{
154
+ type: ViewChild,
155
+ args: ['inputElement']
156
+ }], fngChange: [{
157
+ type: Output
158
+ }], fngSearch: [{
159
+ type: Output
160
+ }], label: [{
161
+ type: Input
162
+ }], disabled: [{
163
+ type: Input
164
+ }], value: [{
165
+ type: Input
166
+ }], suggestions: [{
167
+ type: Input
168
+ }], keyhandler: [{
169
+ type: HostListener,
170
+ args: ['document:keydown', ['$event']]
171
+ }] } });
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFFOUQsTUFBTSxPQUFPLGdCQUFnQjtJQVczQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsZ0JBQXdCLEVBQUUsS0FBYTtRQUM1RCxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLElBQUksUUFBUSxHQUFHLGdCQUFnQixDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1gsTUFBTyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLENB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QUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQzs7aUhBM0lVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGdZQzVDakMsbStCQTBCQTsyRkRrQmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJOzhCQUlyQyxRQUFRO3NCQURQLFNBQVM7dUJBQUMsY0FBYztnQkFPaEIsU0FBUztzQkFEakIsTUFBTTtnQkFPRSxTQUFTO3NCQURqQixNQUFNO2dCQU1FLEtBQUs7c0JBQWIsS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBc0JGLEtBQUs7c0JBRFIsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUs7Z0JBb0JOLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgVmlld0VuY2Fwc3VsYXRpb24sIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmV4cG9ydCBjbGFzcyBTZWFyY2hTdWdnZXN0aW9uIHtcbiAgLyoqXG4gICAqIGEgaHRtbC1zdHJpbmcuIGUuZy46ICc8Yj4gaGVsbG8gPC9iPidcbiAgICovXG4gIHRlbXBsYXRlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgVmFsdWUgd2lsbCBiZSB1c2VkIGFzIG5ldyBxdWVyeSB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIHN1Z2dlc3Rpb24uXG4gICAqL1xuICB2YWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgYmFzaWMgU3VnZ2VzdGlvbiBmcm9tIGEgc3RyaW5nLiBUaGUgZmlyc3QgcXVlcnkgbWF0Y2ggaXMgaGlnaGxpZ2h0ZWQgYnkgYm9sZCB0YWdzLlxuICAgKiBAcGFyYW0gc3VnZ2VzdGlvblN0cmluZyBUaGUgc3VnZ2VzdGVkIHN0cmluZyAoc2hvdWxkIGNvbnRhaW4gdGhlIHdob2xlIHF1ZXJ5KVxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIGN1cnJlbnQgcXVlcnkuIFRoaXMgc3RyaW5nIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIEByZXR1cm5zIGEgaHRtbC1zdHJpbmcuXG4gICAqL1xuICBzdGF0aWMgYmFzaWNTdWdnZXN0aW9uKHN1Z2dlc3Rpb25TdHJpbmc6IHN0cmluZywgcXVlcnk6IHN0cmluZyk6IFNlYXJjaFN1Z2dlc3Rpb24ge1xuICAgIGNvbnN0IGkgPSBzdWdnZXN0aW9uU3RyaW5nLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcbiAgICBsZXQgdGVtcGxhdGUgPSBzdWdnZXN0aW9uU3RyaW5nO1xuICAgIGlmIChpICE9IC0xKSB7XG4gICAgICBjb25zdCAgYm9sZFN0YXJ0ID0gaTtcbiAgICAgIGNvbnN0IGJvbGRFbmQgPSBpICsgcXVlcnkubGVuZ3RoO1xuICAgICAgY29uc3QgcGFydDEgPSBzdWdnZXN0aW9uU3RyaW5nLnN1YnN0cmluZygwLCBib2xkU3RhcnQpO1xuICAgICAgY29uc3QgcGFydDIgPSBzdWdnZXN0aW9uU3RyaW5nLnN1YnN0cmluZyhib2xkU3RhcnQsIGJvbGRFbmQpO1xuICAgICAgY29uc3QgcGFydDMgPSBzdWdnZXN0aW9uU3RyaW5nLnN1YnN0cmluZyhib2xkRW5kLCBzdWdnZXN0aW9uU3RyaW5nLmxlbmd0aCk7XG4gICAgICB0ZW1wbGF0ZSA9IHBhcnQxICsgJzxiPicgKyBwYXJ0MiArICc8L2I+JyArIHBhcnQzO1xuICAgIH1cbiAgICByZXR1cm4geyB2YWx1ZTogc3VnZ2VzdGlvblN0cmluZywgdGVtcGxhdGUgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgY3VzdG9tIGZvcm0gZWxlbWVudCBmb3Igc2VhcmNoIGlucHV0cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm5nLXNlYXJjaC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hJbnB1dENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpXG4gIGlucHV0UmVmITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAvKipcbiAgICogdGhlIHF1ZXJycnkgd2FzIGNoYW5nZWQsIHVwZGF0ZSB0aGUgc3VnZ2V0aW9uIGxpc3RcbiAgICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBmbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogU3RhcnQgc2VhcmNoIG9uIHRoaXMgZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBmbmdTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogVGhlIHNlYXJjaCBpbnB1dCBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogV2hlbiB0cnVlIHRoZSBjb250cm9sJ3MgZGlzYWJsZWQgYXR0cmlidXRlIGlzIHNldFxuICAgKiBhbmQgaXQgZ2V0cyBhZGRlZWQgdGhlIC5kaXNhYmxlZCBjc3MgY2xhc3MuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJEaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlubmVyRGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByb3RlY3RlZCBpbm5lckRpc2FibGVkID0gZmFsc2U7XG5cbiAgaW5uZXJWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBnZXR0ZXIgZm9yIHZhbHVlLlxuICAgKi9cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGVyIGZvciB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzdWdnZXN0aW9ucyh2YWx1ZTogU2VhcmNoU3VnZ2VzdGlvbltdKSB7XG4gICAgdGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA9IC0xO1xuICAgIHRoaXMuaW5uZXJTdWdnZXN0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHN1Z2dlc3Rpb25zIGNhcHBlZCBieSAxMCBlbnRyaWVzXG4gICAqL1xuICBnZXQgY2FwcGVkU3VnZ2VzdGlvbnMoKTogU2VhcmNoU3VnZ2VzdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lclN1Z2dlc3Rpb25zLnNsaWNlKDAsIDEwKTtcbiAgfVxuXG4gIGlubmVyU3VnZ2VzdGlvbnM6IFNlYXJjaFN1Z2dlc3Rpb25bXSA9IFtdO1xuICBoaWRlU3VnZ2VzdGlvbkxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBUaGlzIGlzIHRoZSBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgZWxlbWVudCBpbiBkaGUgc3VnZ2VzdGlvbiBsaXN0LlxuICBzZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA9IC0xO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBrZXloYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmNhcHBlZFN1Z2dlc3Rpb25zIHx8ICF0aGlzLmNhcHBlZFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIG5hdmlnYXRlIGluc2lkZSB0aGUgc3VnZ2VzdGlvbiBsaXN0XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleC0tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA9IHRoaXMuY2FwcGVkU3VnZ2VzdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNhcHBlZFN1Z2dlc3Rpb25zW3RoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXhdLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA+PSB0aGlzLmNhcHBlZFN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4Kys7XG4gICAgICB9XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5jYXBwZWRTdWdnZXN0aW9uc1t0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4XS52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrT3V0c2lkZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVTdWdnZXN0aW9uTGlzdCA9IHRydWU7XG4gIH1cblxuICBvbkZvY3VzKCkge1xuICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb25MaXN0ID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4ID0gLTE7XG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmZuZ0NoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLy8gYWxzbyB0cmlnZ2VydCBvbiBcIkVudGVyXCIgYW5kIFwiRXNjYXBlXCJcbiAgb25TZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXggPSAtMTtcbiAgICB0aGlzLmZuZ1NlYXJjaC5lbWl0KHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb25MaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICB9XG5cbiAgb25TdWdnZXN0aW9uQ2xpY2soc3VnZ2VzdGlvbjogU2VhcmNoU3VnZ2VzdGlvbikge1xuICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXggPSAtMTtcbiAgICB0aGlzLnZhbHVlID0gc3VnZ2VzdGlvbi52YWx1ZTtcbiAgICB0aGlzLmZuZ1NlYXJjaC5lbWl0KHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb25MaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICB9XG5cbiAgY2xlYXJRdWVyeSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4ID0gLTE7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIHRoaXMuZm5nU2VhcmNoLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5oaWRlU3VnZ2VzdGlvbkxpc3QgPSB0cnVlO1xuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmd2Utc2VhcmNoLWlucHV0IGZ3ZS13LTEwMFwiIChjbGlja091dHNpZGUpPVwib25DbGlja091dHNpZGUoKVwiIGZuZ0NsaWNrT3V0c2lkZT5cbiAgPGlucHV0XG4gICAgY2xhc3M9XCJmd2Utdy0xMDBcIlxuICAgICNpbnB1dEVsZW1lbnRcbiAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsXCJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAoc2VhcmNoKT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAgIFt2YWx1ZV09XCJpbm5lclZhbHVlXCJcbiAgLz5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1zZWFyY2gtaWNvblwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZndlLWNsZWFyLWljb25cIiAoY2xpY2spPVwiY2xlYXJRdWVyeSgpXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmd2Utc2VhcmNoLXN1Z2dlc3Rpb25zXCIgKm5nSWY9XCJpbm5lclN1Z2dlc3Rpb25zPy5sZW5ndGggJiYgIWhpZGVTdWdnZXN0aW9uTGlzdFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBzdWdnZXN0aW9uIG9mIGNhcHBlZFN1Z2dlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIChjbGljayk9XCJvblN1Z2dlc3Rpb25DbGljayhzdWdnZXN0aW9uKVwiXG4gICAgICBbY2xhc3MuZndlLXNlbGVjdGVkXT1cInNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4ID09PSBpXCJcbiAgICAgIGNsYXNzPVwiZndlLXNlYXJjaC1zdWdnZXN0aW9uXCJcbiAgICA+XG4gICAgICA8ZGl2IFtpbm5lckhUTUxdPVwic3VnZ2VzdGlvbi50ZW1wbGF0ZSB8IHNhZmVIdG1sXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1tbC14eHNcIiAqbmdJZj1cImlubmVyU3VnZ2VzdGlvbnMubGVuZ3RoID4gMTBcIj4uLi48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./snackbar-container.directive";
4
+ export class SnackbarContainerComponent {
5
+ constructor() {
6
+ this.config = {
7
+ darkBackground: true,
8
+ disappearAfter: 5000,
9
+ closeOnAction: true
10
+ };
11
+ }
12
+ }
13
+ SnackbarContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SnackbarContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ SnackbarContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SnackbarContainerComponent, selector: "fng-snackbar-container", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"fwe-snackbar-container\">\n <div [fngSnackbarContainer]=\"config\"></div>\n</div>\n", styles: [".fwe-snackbar-container{pointer-events:none}\n"], directives: [{ type: i1.SnackbarContainerDirective, selector: "[fngSnackbarContainer]", inputs: ["fngSnackbarContainer"] }], encapsulation: i0.ViewEncapsulation.None });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SnackbarContainerComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: 'fng-snackbar-container', encapsulation: ViewEncapsulation.None, template: "<div class=\"fwe-snackbar-container\">\n <div [fngSnackbarContainer]=\"config\"></div>\n</div>\n", styles: [".fwe-snackbar-container{pointer-events:none}\n"] }]
18
+ }], propDecorators: { config: [{
19
+ type: Input
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXItY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXItY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTcEUsTUFBTSxPQUFPLDBCQUEwQjtJQU52QztRQU9XLFdBQU0sR0FBbUI7WUFDaEMsY0FBYyxFQUFFLElBQUk7WUFDcEIsY0FBYyxFQUFFLElBQUk7WUFDcEIsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQztLQUNIOzt1SEFOWSwwQkFBMEI7MkdBQTFCLDBCQUEwQiw0RkNUdkMsbUdBR0E7MkZETWEsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNFLHdCQUF3QixpQkFHbkIsaUJBQWlCLENBQUMsSUFBSTs4QkFHNUIsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNuYWNrYmFyQ29uZmlnIH0gZnJvbSAnLi9zbmFja2Jhci5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmbmctc25hY2tiYXItY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NuYWNrYmFyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NuYWNrYmFyLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNuYWNrYmFyQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY29uZmlnOiBTbmFja2JhckNvbmZpZyA9IHtcbiAgICBkYXJrQmFja2dyb3VuZDogdHJ1ZSxcbiAgICBkaXNhcHBlYXJBZnRlcjogNTAwMCxcbiAgICBjbG9zZU9uQWN0aW9uOiB0cnVlXG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZndlLXNuYWNrYmFyLWNvbnRhaW5lclwiPlxuICA8ZGl2IFtmbmdTbmFja2JhckNvbnRhaW5lcl09XCJjb25maWdcIj48L2Rpdj5cbjwvZGl2PlxuIl19