@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,41 @@
1
+ import { Component, ContentChildren, QueryList } from '@angular/core';
2
+ import { MobileFlyoutPageComponent } from './mobile-flyout-page/mobile-flyout-page.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../click-outside.directive";
5
+ export class MobileFlyoutComponent {
6
+ constructor() {
7
+ this.isOpen = false;
8
+ }
9
+ ngAfterContentInit() {
10
+ if (!this.pageComponents) {
11
+ return;
12
+ }
13
+ // register click-callbacks and open the first element
14
+ this.pageComponents.forEach((s, i) => {
15
+ s.onNavigateCallback = pageName => this.onNavigate(pageName);
16
+ s.isfirstelement = i === 0;
17
+ s.visible = i === 0;
18
+ });
19
+ }
20
+ onNavigate(pageName) {
21
+ // handle clicks on router links
22
+ if (!pageName) {
23
+ this.isOpen = false;
24
+ }
25
+ // handle page-navigation clicks
26
+ const nextPage = this.pageComponents.find(p => p.name === pageName);
27
+ if (nextPage) {
28
+ nextPage.visible = true;
29
+ }
30
+ }
31
+ }
32
+ MobileFlyoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MobileFlyoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
+ MobileFlyoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: MobileFlyoutComponent, selector: "fng-mobile-flyout", queries: [{ propertyName: "pageComponents", predicate: MobileFlyoutPageComponent }], ngImport: i0, template: "<div class=\"fwe-mobile-flyout\" (clickOutside)=\"isOpen = false\" fngClickOutside>\n <button [class.fwe-burger-button]=\"!isOpen\" [class.fwe-close-button]=\"isOpen\" (click)=\"isOpen = !isOpen\"></button>\n\n <div class=\"fwe-mobile-flyout-container\" [class.fwe-opened]=\"isOpen\">\n <ng-content></ng-content>\n </div>\n</div>\n", directives: [{ type: i1.ClickOutsideDirective, selector: "[fngClickOutside]", outputs: ["clickOutside"] }] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MobileFlyoutComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'fng-mobile-flyout', template: "<div class=\"fwe-mobile-flyout\" (clickOutside)=\"isOpen = false\" fngClickOutside>\n <button [class.fwe-burger-button]=\"!isOpen\" [class.fwe-close-button]=\"isOpen\" (click)=\"isOpen = !isOpen\"></button>\n\n <div class=\"fwe-mobile-flyout-container\" [class.fwe-opened]=\"isOpen\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
37
+ }], propDecorators: { pageComponents: [{
38
+ type: ContentChildren,
39
+ args: [MobileFlyoutPageComponent]
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWZseW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL21vYmlsZS1mbHlvdXQvbW9iaWxlLWZseW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL21vYmlsZS1mbHlvdXQvbW9iaWxlLWZseW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7QUFNOUYsTUFBTSxPQUFPLHFCQUFxQjtJQUpsQztRQU9FLFdBQU0sR0FBRyxLQUFLLENBQUM7S0EyQmhCO0lBekJDLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFFRCxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFnQjtRQUN6QixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNwRSxJQUFJLFFBQVEsRUFBRTtZQUNaLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7a0hBN0JVLHFCQUFxQjtzR0FBckIscUJBQXFCLHdGQUNmLHlCQUF5Qiw2QkNSNUMsbVZBT0E7MkZEQWEscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLG1CQUFtQjs4QkFJZSxjQUFjO3NCQUF6RCxlQUFlO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vYmlsZUZseW91dFBhZ2VDb21wb25lbnQgfSBmcm9tICcuL21vYmlsZS1mbHlvdXQtcGFnZS9tb2JpbGUtZmx5b3V0LXBhZ2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm5nLW1vYmlsZS1mbHlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9iaWxlLWZseW91dC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTW9iaWxlRmx5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBDb250ZW50Q2hpbGRyZW4oTW9iaWxlRmx5b3V0UGFnZUNvbXBvbmVudCkgcGFnZUNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8TW9iaWxlRmx5b3V0UGFnZUNvbXBvbmVudD47XG5cbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wYWdlQ29tcG9uZW50cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHJlZ2lzdGVyIGNsaWNrLWNhbGxiYWNrcyBhbmQgb3BlbiB0aGUgZmlyc3QgZWxlbWVudFxuICAgIHRoaXMucGFnZUNvbXBvbmVudHMuZm9yRWFjaCgocywgaSkgPT4ge1xuICAgICAgcy5vbk5hdmlnYXRlQ2FsbGJhY2sgPSBwYWdlTmFtZSA9PiB0aGlzLm9uTmF2aWdhdGUocGFnZU5hbWUpO1xuICAgICAgcy5pc2ZpcnN0ZWxlbWVudCA9IGkgPT09IDA7XG4gICAgICBzLnZpc2libGUgPSBpID09PSAwO1xuICAgIH0pO1xuICB9XG5cbiAgb25OYXZpZ2F0ZShwYWdlTmFtZTogc3RyaW5nKSB7XG4gICAgLy8gaGFuZGxlIGNsaWNrcyBvbiByb3V0ZXIgbGlua3NcbiAgICBpZiAoIXBhZ2VOYW1lKSB7XG4gICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGhhbmRsZSBwYWdlLW5hdmlnYXRpb24gY2xpY2tzXG4gICAgY29uc3QgbmV4dFBhZ2UgPSB0aGlzLnBhZ2VDb21wb25lbnRzLmZpbmQocCA9PiBwLm5hbWUgPT09IHBhZ2VOYW1lKTtcbiAgICBpZiAobmV4dFBhZ2UpIHtcbiAgICAgIG5leHRQYWdlLnZpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZ3ZS1tb2JpbGUtZmx5b3V0XCIgKGNsaWNrT3V0c2lkZSk9XCJpc09wZW4gPSBmYWxzZVwiIGZuZ0NsaWNrT3V0c2lkZT5cbiAgPGJ1dHRvbiBbY2xhc3MuZndlLWJ1cmdlci1idXR0b25dPVwiIWlzT3BlblwiIFtjbGFzcy5md2UtY2xvc2UtYnV0dG9uXT1cImlzT3BlblwiIChjbGljayk9XCJpc09wZW4gPSAhaXNPcGVuXCI+PC9idXR0b24+XG5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2JpbGUtZmx5b3V0LWNvbnRhaW5lclwiIFtjbGFzcy5md2Utb3BlbmVkXT1cImlzT3BlblwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class AlertComponent {
5
+ constructor() {
6
+ this.close = new EventEmitter();
7
+ this.cancel = new EventEmitter();
8
+ this.ok = new EventEmitter();
9
+ }
10
+ onKeyUp(event) {
11
+ event.preventDefault();
12
+ event.stopPropagation();
13
+ if (event.key === 'Esc' || event.key === 'Escape') {
14
+ this.onClose();
15
+ }
16
+ }
17
+ ngAfterViewInit() {
18
+ if (this.closeBtn) {
19
+ this.closeBtn.nativeElement.focus();
20
+ }
21
+ }
22
+ onClose() {
23
+ this.close.emit();
24
+ }
25
+ onOk() {
26
+ this.ok.emit();
27
+ }
28
+ onCancel() {
29
+ this.cancel.emit();
30
+ }
31
+ }
32
+ AlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
+ AlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AlertComponent, selector: "fng-alert", inputs: { data: "data" }, outputs: { close: "close", cancel: "cancel", ok: "ok" }, host: { listeners: { "window:keyup": "onKeyUp($event)" } }, viewQueries: [{ propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true }], ngImport: i0, template: "<div\n class=\"fwe-modal\"\n [ngClass]=\"{\n 'fwe-modal--with-indicator-bar': data?.strong === true,\n 'fwe-modal--warning': data?.alertType === 'warning',\n 'fwe-modal--error': data?.alertType === 'error',\n 'fwe-modal--info': data?.alertType === 'info'\n }\"\n>\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">\n <i\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-warning': data?.alertType === 'warning',\n 'fwe-icon-status-failure': data?.alertType === 'error',\n 'fwe-icon-status-check-status': data?.alertType === 'info'\n }\"\n ></i\n >{{ data?.subtitle }}\n </h2>\n <h1 class=\"fwe-modal-h1\">\n <i\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-warning': data?.alertType === 'warning',\n 'fwe-icon-status-failure': data?.alertType === 'error',\n 'fwe-icon-status-check-status': data?.alertType === 'info'\n }\"\n ></i\n >{{ data?.title }}\n </h1>\n </div>\n <div class=\"fwe-modal-body\">\n <p>{{ data?.body }}</p>\n </div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button\n *ngIf=\"data?.cancel\"\n type=\"button\"\n aria-label=\"Cancel\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-link]=\"data?.strong\"\n (click)=\"onCancel()\"\n >\n {{ data?.cancel }}\n </button>\n <button\n *ngIf=\"data?.ok\"\n type=\"button\"\n aria-label=\"Ok\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-hero]=\"!data?.strong\"\n (click)=\"onOk()\"\n >\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AlertComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'fng-alert', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fwe-modal\"\n [ngClass]=\"{\n 'fwe-modal--with-indicator-bar': data?.strong === true,\n 'fwe-modal--warning': data?.alertType === 'warning',\n 'fwe-modal--error': data?.alertType === 'error',\n 'fwe-modal--info': data?.alertType === 'info'\n }\"\n>\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">\n <i\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-warning': data?.alertType === 'warning',\n 'fwe-icon-status-failure': data?.alertType === 'error',\n 'fwe-icon-status-check-status': data?.alertType === 'info'\n }\"\n ></i\n >{{ data?.subtitle }}\n </h2>\n <h1 class=\"fwe-modal-h1\">\n <i\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-warning': data?.alertType === 'warning',\n 'fwe-icon-status-failure': data?.alertType === 'error',\n 'fwe-icon-status-check-status': data?.alertType === 'info'\n }\"\n ></i\n >{{ data?.title }}\n </h1>\n </div>\n <div class=\"fwe-modal-body\">\n <p>{{ data?.body }}</p>\n </div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button\n *ngIf=\"data?.cancel\"\n type=\"button\"\n aria-label=\"Cancel\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-link]=\"data?.strong\"\n (click)=\"onCancel()\"\n >\n {{ data?.cancel }}\n </button>\n <button\n *ngIf=\"data?.ok\"\n type=\"button\"\n aria-label=\"Ok\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-hero]=\"!data?.strong\"\n (click)=\"onOk()\"\n >\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""] }]
37
+ }], propDecorators: { data: [{
38
+ type: Input
39
+ }], close: [{
40
+ type: Output
41
+ }], cancel: [{
42
+ type: Output
43
+ }], ok: [{
44
+ type: Output
45
+ }], closeBtn: [{
46
+ type: ViewChild,
47
+ args: ['closeBtn']
48
+ }], onKeyUp: [{
49
+ type: HostListener,
50
+ args: ['window:keyup', ['$event']]
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbHMvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbHMvYWxlcnQvYWxlcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7OztBQW1CdkIsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFRWSxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNqQyxPQUFFLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztLQStCeEM7SUExQkMsT0FBTyxDQUFDLEtBQW9CO1FBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUNqRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQTZCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEQ7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDOzsyR0FsQ1UsY0FBYzsrRkFBZCxjQUFjLHNTQzdCM0IsdWxFQW1FQTsyRkR0Q2EsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXLGlCQUdOLGlCQUFpQixDQUFDLElBQUk7OEJBRzVCLElBQUk7c0JBQVosS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLEVBQUU7c0JBQVgsTUFBTTtnQkFFZ0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUdyQixPQUFPO3NCQUROLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFsZXJ0RGF0YSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGFsZXJ0VHlwZTogJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJztcbiAgY2FuY2VsPzogc3RyaW5nO1xuICBvaz86IHN0cmluZztcbiAgc3Ryb25nPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm5nLWFsZXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE1vZGFsPEFsZXJ0RGF0YSwgYW55PiB7XG4gIEBJbnB1dCgpIGRhdGE6IEFsZXJ0RGF0YTtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9rID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY2xvc2VCdG4nKSBjbG9zZUJ0bjogRWxlbWVudFJlZjtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAnLCBbJyRldmVudCddKVxuICBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2MnIHx8IGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5jbG9zZUJ0bikge1xuICAgICAgKHRoaXMuY2xvc2VCdG4ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgb25PaygpIHtcbiAgICB0aGlzLm9rLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImZ3ZS1tb2RhbFwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZndlLW1vZGFsLS13aXRoLWluZGljYXRvci1iYXInOiBkYXRhPy5zdHJvbmcgPT09IHRydWUsXG4gICAgJ2Z3ZS1tb2RhbC0td2FybmluZyc6IGRhdGE/LmFsZXJ0VHlwZSA9PT0gJ3dhcm5pbmcnLFxuICAgICdmd2UtbW9kYWwtLWVycm9yJzogZGF0YT8uYWxlcnRUeXBlID09PSAnZXJyb3InLFxuICAgICdmd2UtbW9kYWwtLWluZm8nOiBkYXRhPy5hbGVydFR5cGUgPT09ICdpbmZvJ1xuICB9XCJcbj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1jbG9zZVwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiICNjbG9zZUJ0biBjbGFzcz1cImZ3ZS1idG4gZndlLWJ0bi1saW5rIGZ3ZS1kYXJrXCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi1jbG9zZS1zbWFsbFwiPjwvaT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZndlLXNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtaGVhZGVyXCI+XG4gICAgPGgyICpuZ0lmPVwiZGF0YT8uc3VidGl0bGVcIiBjbGFzcz1cImZ3ZS1tb2RhbC1oMlwiPlxuICAgICAgPGlcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdmd2UtaWNvbic6IHRydWUsXG4gICAgICAgICAgJ2Z3ZS1pY29uLXN0YXR1cy13YXJuaW5nJzogZGF0YT8uYWxlcnRUeXBlID09PSAnd2FybmluZycsXG4gICAgICAgICAgJ2Z3ZS1pY29uLXN0YXR1cy1mYWlsdXJlJzogZGF0YT8uYWxlcnRUeXBlID09PSAnZXJyb3InLFxuICAgICAgICAgICdmd2UtaWNvbi1zdGF0dXMtY2hlY2stc3RhdHVzJzogZGF0YT8uYWxlcnRUeXBlID09PSAnaW5mbydcbiAgICAgICAgfVwiXG4gICAgICA+PC9pXG4gICAgICA+e3sgZGF0YT8uc3VidGl0bGUgfX1cbiAgICA8L2gyPlxuICAgIDxoMSBjbGFzcz1cImZ3ZS1tb2RhbC1oMVwiPlxuICAgICAgPGlcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdmd2UtaWNvbic6IHRydWUsXG4gICAgICAgICAgJ2Z3ZS1pY29uLXN0YXR1cy13YXJuaW5nJzogZGF0YT8uYWxlcnRUeXBlID09PSAnd2FybmluZycsXG4gICAgICAgICAgJ2Z3ZS1pY29uLXN0YXR1cy1mYWlsdXJlJzogZGF0YT8uYWxlcnRUeXBlID09PSAnZXJyb3InLFxuICAgICAgICAgICdmd2UtaWNvbi1zdGF0dXMtY2hlY2stc3RhdHVzJzogZGF0YT8uYWxlcnRUeXBlID09PSAnaW5mbydcbiAgICAgICAgfVwiXG4gICAgICA+PC9pXG4gICAgICA+e3sgZGF0YT8udGl0bGUgfX1cbiAgICA8L2gxPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1ib2R5XCI+XG4gICAgPHA+e3sgZGF0YT8uYm9keSB9fTwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtZm9vdGVyXCIgKm5nSWY9XCJkYXRhPy5jYW5jZWwgfHwgZGF0YT8ub2tcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsLWJ1dHRvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJkYXRhPy5jYW5jZWxcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNhbmNlbFwiXG4gICAgICAgIGNsYXNzPVwiZndlLWJ0biBmd2UtYnRuLWxnXCJcbiAgICAgICAgW2NsYXNzLmZ3ZS1idG4tbGlua109XCJkYXRhPy5zdHJvbmdcIlxuICAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGRhdGE/LmNhbmNlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGF0YT8ub2tcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIk9rXCJcbiAgICAgICAgY2xhc3M9XCJmd2UtYnRuIGZ3ZS1idG4tbGdcIlxuICAgICAgICBbY2xhc3MuZndlLWJ0bi1oZXJvXT1cIiFkYXRhPy5zdHJvbmdcIlxuICAgICAgICAoY2xpY2spPVwib25PaygpXCJcbiAgICAgID5cbiAgICAgICAge3sgZGF0YT8ub2sgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,53 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class ConfirmComponent {
5
+ constructor(cd) {
6
+ this.cd = cd;
7
+ this.close = new EventEmitter();
8
+ this.cancel = new EventEmitter();
9
+ this.ok = new EventEmitter();
10
+ }
11
+ onKeyUp(event) {
12
+ event.preventDefault();
13
+ event.stopPropagation();
14
+ if (event.key === 'Esc' || event.key === 'Escape') {
15
+ this.onClose();
16
+ }
17
+ }
18
+ ngAfterViewInit() {
19
+ if (this.closeBtn) {
20
+ this.closeBtn.nativeElement.focus();
21
+ }
22
+ }
23
+ onClose() {
24
+ this.close.emit();
25
+ }
26
+ onOk() {
27
+ this.ok.emit();
28
+ }
29
+ onCancel() {
30
+ this.cancel.emit();
31
+ }
32
+ }
33
+ ConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ConfirmComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
34
+ ConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ConfirmComponent, selector: "fng-confirm", inputs: { data: "data" }, outputs: { close: "close", cancel: "cancel", ok: "ok" }, host: { listeners: { "window:keyup": "onKeyUp($event)" } }, viewQueries: [{ propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true }], ngImport: i0, template: "<div class=\"fwe-modal\" [ngClass]=\"{ 'fwe-modal--large': data?.large }\">\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">{{ data?.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data?.title }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <p>{{ data?.body }}</p>\n </div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data?.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data?.cancel }}\n </button>\n <button *ngIf=\"data?.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg fwe-btn-hero\" (click)=\"onOk()\">\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ConfirmComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'fng-confirm', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"fwe-modal\" [ngClass]=\"{ 'fwe-modal--large': data?.large }\">\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">{{ data?.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data?.title }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <p>{{ data?.body }}</p>\n </div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data?.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data?.cancel }}\n </button>\n <button *ngIf=\"data?.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg fwe-btn-hero\" (click)=\"onOk()\">\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""] }]
38
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
39
+ type: Input
40
+ }], close: [{
41
+ type: Output
42
+ }], cancel: [{
43
+ type: Output
44
+ }], ok: [{
45
+ type: Output
46
+ }], closeBtn: [{
47
+ type: ViewChild,
48
+ args: ['closeBtn']
49
+ }], onKeyUp: [{
50
+ type: HostListener,
51
+ args: ['window:keyup', ['$event']]
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL21vZGFscy9jb25maXJtL2NvbmZpcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbHMvY29uZmlybS9jb25maXJtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7OztBQW9CdkIsTUFBTSxPQUFPLGdCQUFnQjtJQWtCM0IsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFoQi9CLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLE9BQUUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBY0ssQ0FBQztJQVQ3QyxPQUFPLENBQUMsS0FBb0I7UUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ2pELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFJRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBNkIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7OzZHQXBDVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQix3U0NoQzdCLHdtQ0F5QkE7MkZET2EsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTt3R0FHNUIsSUFBSTtzQkFBWixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csRUFBRTtzQkFBWCxNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBR3JCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1EYXRhIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgc3VidGl0bGU/OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgY2FuY2VsPzogc3RyaW5nO1xuICBvaz86IHN0cmluZztcbiAgbGFyZ2U/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmbmctY29uZmlybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlybS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDb25maXJtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgTW9kYWw8Q29uZmlybURhdGEsIGFueT4ge1xuICBASW5wdXQoKSBkYXRhOiBDb25maXJtRGF0YTtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9rID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY2xvc2VCdG4nKSBjbG9zZUJ0bjogRWxlbWVudFJlZjtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAnLCBbJyRldmVudCddKVxuICBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2MnIHx8IGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5jbG9zZUJ0bikge1xuICAgICAgKHRoaXMuY2xvc2VCdG4ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgb25PaygpIHtcbiAgICB0aGlzLm9rLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbFwiIFtuZ0NsYXNzXT1cInsgJ2Z3ZS1tb2RhbC0tbGFyZ2UnOiBkYXRhPy5sYXJnZSB9XCI+XG4gIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtY2xvc2VcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAjY2xvc2VCdG4gY2xhc3M9XCJmd2UtYnRuIGZ3ZS1idG4tbGluayBmd2UtZGFya1wiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZndlLWljb24gZndlLWljb24tY2xvc2Utc21hbGxcIj48L2k+XG4gICAgICA8c3BhbiBjbGFzcz1cImZ3ZS1zci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsLWhlYWRlclwiPlxuICAgIDxoMiAqbmdJZj1cImRhdGE/LnN1YnRpdGxlXCIgY2xhc3M9XCJmd2UtbW9kYWwtaDJcIj57eyBkYXRhPy5zdWJ0aXRsZSB9fTwvaDI+XG4gICAgPGgxIGNsYXNzPVwiZndlLW1vZGFsLWgxXCI+e3sgZGF0YT8udGl0bGUgfX08L2gxPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1ib2R5XCI+XG4gICAgPHA+e3sgZGF0YT8uYm9keSB9fTwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtZm9vdGVyXCIgKm5nSWY9XCJkYXRhPy5jYW5jZWwgfHwgZGF0YT8ub2tcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsLWJ1dHRvbnNcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhPy5jYW5jZWxcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNhbmNlbFwiIGNsYXNzPVwiZndlLWJ0biBmd2UtYnRuLWxnXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgICAge3sgZGF0YT8uY2FuY2VsIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhPy5va1wiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiT2tcIiBjbGFzcz1cImZ3ZS1idG4gZndlLWJ0bi1sZyBmd2UtYnRuLWhlcm9cIiAoY2xpY2spPVwib25PaygpXCI+XG4gICAgICAgIHt7IGRhdGE/Lm9rIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,70 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../buttons/button/button.component";
4
+ import * as i2 from "@angular/common";
5
+ export class CustomModalComponent {
6
+ constructor() {
7
+ this.closeOnBackdrop = false;
8
+ this.large = false;
9
+ this.visible = false;
10
+ this.visibleChange = new EventEmitter(false);
11
+ this.header = '';
12
+ this.subheader = '';
13
+ this.acknowledgeLabel = 'Ok';
14
+ this.acknowledge = new EventEmitter();
15
+ this.cancelLabel = 'Cancel';
16
+ this.cancel = new EventEmitter();
17
+ }
18
+ closeModal() {
19
+ this.visible = false;
20
+ if (this.visibleChange) {
21
+ this.visibleChange.emit(false);
22
+ }
23
+ }
24
+ onCancel() {
25
+ this.closeModal();
26
+ if (this.cancel) {
27
+ this.cancel.emit();
28
+ }
29
+ }
30
+ onAcknowledge() {
31
+ if (this.acknowledge) {
32
+ this.acknowledge.emit();
33
+ }
34
+ }
35
+ onClickOutside() {
36
+ if (this.closeOnBackdrop) {
37
+ this.onCancel();
38
+ }
39
+ }
40
+ onClickInside(event) {
41
+ event.stopPropagation();
42
+ }
43
+ }
44
+ CustomModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CustomModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
+ CustomModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CustomModalComponent, selector: "fng-custom-modal", inputs: { closeOnBackdrop: "closeOnBackdrop", large: "large", visible: "visible", header: "header", subheader: "subheader", acknowledgeLabel: "acknowledgeLabel", cancelLabel: "cancelLabel" }, outputs: { visibleChange: "visibleChange", acknowledge: "acknowledge", cancel: "cancel" }, ngImport: i0, template: "<div class=\"fwe-modal-backdrop\" *ngIf=\"visible\" (mousedown)=\"onClickOutside()\">\n <div class=\"fwe-modal\" [class.fwe-modal--large]=\"large\" (mousedown)=\"onClickInside($event)\">\n <div class=\"fwe-modal-close\">\n <button class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onCancel()\">\n <i class=\"fwe-icon fwe-icon-2x fwe-icon-close-small\"></i>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 class=\"fwe-modal-h2\" *ngIf=\"subheader?.length\">{{ subheader }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ header }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <ng-content></ng-content>\n </div>\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n <fng-button [large]=\"true\" (click)=\"onCancel()\">{{ cancelLabel }}</fng-button>\n <fng-button [large]=\"true\" (click)=\"onAcknowledge()\" [primary]=\"true\">{{ acknowledgeLabel }}</fng-button>\n </div>\n </div>\n </div>\n</div>\n", components: [{ type: i1.ButtonComponent, selector: "fng-button", inputs: ["text", "icon", "disabled", "primary", "iconOnly", "large"], outputs: ["fngClick"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CustomModalComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'fng-custom-modal', template: "<div class=\"fwe-modal-backdrop\" *ngIf=\"visible\" (mousedown)=\"onClickOutside()\">\n <div class=\"fwe-modal\" [class.fwe-modal--large]=\"large\" (mousedown)=\"onClickInside($event)\">\n <div class=\"fwe-modal-close\">\n <button class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onCancel()\">\n <i class=\"fwe-icon fwe-icon-2x fwe-icon-close-small\"></i>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 class=\"fwe-modal-h2\" *ngIf=\"subheader?.length\">{{ subheader }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ header }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <ng-content></ng-content>\n </div>\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n <fng-button [large]=\"true\" (click)=\"onCancel()\">{{ cancelLabel }}</fng-button>\n <fng-button [large]=\"true\" (click)=\"onAcknowledge()\" [primary]=\"true\">{{ acknowledgeLabel }}</fng-button>\n </div>\n </div>\n </div>\n</div>\n" }]
49
+ }], propDecorators: { closeOnBackdrop: [{
50
+ type: Input
51
+ }], large: [{
52
+ type: Input
53
+ }], visible: [{
54
+ type: Input
55
+ }], visibleChange: [{
56
+ type: Output
57
+ }], header: [{
58
+ type: Input
59
+ }], subheader: [{
60
+ type: Input
61
+ }], acknowledgeLabel: [{
62
+ type: Input
63
+ }], acknowledge: [{
64
+ type: Output
65
+ }], cancelLabel: [{
66
+ type: Input
67
+ }], cancel: [{
68
+ type: Output
69
+ }] } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWxzL2N1c3RvbS1tb2RhbC9jdXN0b20tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbHMvY3VzdG9tLW1vZGFsL2N1c3RvbS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTXZFLE1BQU0sT0FBTyxvQkFBb0I7SUFKakM7UUFLVyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVsRCxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFFdkIscUJBQWdCLEdBQVcsSUFBSSxDQUFDO1FBQy9CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV4QyxnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUM5QixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQStCN0M7SUE3QkMsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFpQjtRQUM3QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7aUhBM0NVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLG1WQ05qQywrK0JBc0JBOzJGRGhCYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCOzhCQUluQixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZuZy1jdXN0b20tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21Nb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNsb3NlT25CYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXJnZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPihmYWxzZSk7XG5cbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc3ViaGVhZGVyOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBhY2tub3dsZWRnZUxhYmVsOiBzdHJpbmcgPSAnT2snO1xuICBAT3V0cHV0KCkgYWNrbm93bGVkZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgY2FuY2VsTGFiZWw6IHN0cmluZyA9ICdDYW5jZWwnO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNsb3NlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMudmlzaWJsZUNoYW5nZSkge1xuICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgIGlmICh0aGlzLmNhbmNlbCkge1xuICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQWNrbm93bGVkZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2UpIHtcbiAgICAgIHRoaXMuYWNrbm93bGVkZ2UuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tPdXRzaWRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT25CYWNrZHJvcCkge1xuICAgICAgdGhpcy5vbkNhbmNlbCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tJbnNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1iYWNrZHJvcFwiICpuZ0lmPVwidmlzaWJsZVwiIChtb3VzZWRvd24pPVwib25DbGlja091dHNpZGUoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsXCIgW2NsYXNzLmZ3ZS1tb2RhbC0tbGFyZ2VdPVwibGFyZ2VcIiAobW91c2Vkb3duKT1cIm9uQ2xpY2tJbnNpZGUoJGV2ZW50KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtY2xvc2VcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmd2UtYnRuIGZ3ZS1idG4tbGluayBmd2UtZGFya1wiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZndlLWljb24gZndlLWljb24tMnggZndlLWljb24tY2xvc2Utc21hbGxcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsLWhlYWRlclwiPlxuICAgICAgPGgyIGNsYXNzPVwiZndlLW1vZGFsLWgyXCIgKm5nSWY9XCJzdWJoZWFkZXI/Lmxlbmd0aFwiPnt7IHN1YmhlYWRlciB9fTwvaDI+XG4gICAgICA8aDEgY2xhc3M9XCJmd2UtbW9kYWwtaDFcIj57eyBoZWFkZXIgfX08L2gxPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtYm9keVwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtZm9vdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsLWJ1dHRvbnNcIj5cbiAgICAgICAgPGZuZy1idXR0b24gW2xhcmdlXT1cInRydWVcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPnt7IGNhbmNlbExhYmVsIH19PC9mbmctYnV0dG9uPlxuICAgICAgICA8Zm5nLWJ1dHRvbiBbbGFyZ2VdPVwidHJ1ZVwiIChjbGljayk9XCJvbkFja25vd2xlZGdlKClcIiBbcHJpbWFyeV09XCJ0cnVlXCI+e3sgYWNrbm93bGVkZ2VMYWJlbCB9fTwvZm5nLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL21vZGFscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmV4cG9ydCB0eXBlIE1vZGFsVXNlckFjdGlvbiA9ICdvaycgfCAnY2FuY2VsJyB8ICdjbG9zZScgfCAnYmFja2Ryb3AnIHwgJ25hdmlnYXRlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWw8VERhdGEsIFRSZXN1bHQ+IGV4dGVuZHMgUGFydGlhbDxPbkNoYW5nZXM+IHtcbiAgZGF0YTogVERhdGE7XG4gIGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgY2FuY2VsOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgb2s6IEV2ZW50RW1pdHRlcjxUUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2RhbE9wdGlvbnMge1xuICBoYXNCYWNrZHJvcD86IGJvb2xlYW47XG4gIHNob3VsZENsb3NlT25CYWNrZHJvcD86IGJvb2xlYW47XG4gIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG4gIHBvc2l0aW9uU3RyYXRlZ3k/OiBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5O1xuICBvdmVybGF5Q2xhc3M/OiBzdHJpbmc7XG4gIGNsb3NlT25OYXZpZ2F0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2RhbFJlc3VsdDxUUmVzdWx0PiB7XG4gIHVzZXJBY3Rpb246IE1vZGFsVXNlckFjdGlvbjtcbiAgcmVzdWx0PzogVFJlc3VsdDtcbn1cbiJdfQ==
@@ -0,0 +1,121 @@
1
+ import { Injectable, SimpleChange } from '@angular/core';
2
+ import { NavigationStart, Router } from '@angular/router';
3
+ import { Overlay } from '@angular/cdk/overlay';
4
+ import { ComponentPortal } from '@angular/cdk/portal';
5
+ import { filter, takeUntil } from 'rxjs/operators';
6
+ import { AlertComponent } from './alert/alert.component';
7
+ import { ConfirmComponent } from './confirm/confirm.component';
8
+ import { Subject } from 'rxjs';
9
+ import { PromptComponent } from './prompt/prompt.component';
10
+ import { ImageGalleryComponent } from '../image-gallery/image-gallery.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/cdk/overlay";
13
+ import * as i2 from "@angular/router";
14
+ export class ModalService {
15
+ constructor(overlay, router) {
16
+ this.overlay = overlay;
17
+ this.router = router;
18
+ }
19
+ alert(data, options) {
20
+ return this.open(data, AlertComponent, {
21
+ backdropClass: 'fwe-modal-backdrop',
22
+ hasBackdrop: true,
23
+ shouldCloseOnBackdrop: true,
24
+ ...options
25
+ });
26
+ }
27
+ confirm(data, options) {
28
+ options = options || {
29
+ backdropClass: 'fwe-modal-backdrop',
30
+ hasBackdrop: true,
31
+ shouldCloseOnBackdrop: true,
32
+ ...options
33
+ };
34
+ return this.open(data, ConfirmComponent, options);
35
+ }
36
+ prompt(data, options) {
37
+ options = options || {
38
+ backdropClass: 'fwe-modal-backdrop',
39
+ hasBackdrop: true,
40
+ shouldCloseOnBackdrop: true,
41
+ ...options
42
+ };
43
+ return this.open(data, PromptComponent, options);
44
+ }
45
+ openImageGallery(data) {
46
+ const options = {
47
+ backdropClass: 'fwe-modal-backdrop',
48
+ hasBackdrop: true,
49
+ shouldCloseOnBackdrop: true
50
+ };
51
+ return this.open(data, ImageGalleryComponent, options);
52
+ }
53
+ open(data, modal, options) {
54
+ return new Promise((resolve, reject) => {
55
+ const complete = new Subject();
56
+ const positionStrategy = options.positionStrategy || this.overlay.position().global().centerHorizontally().centerVertically();
57
+ const scrollStrategy = this.overlay.scrollStrategies.block();
58
+ const overlayRef = this.overlay.create({
59
+ panelClass: options.overlayClass,
60
+ positionStrategy,
61
+ scrollStrategy,
62
+ backdropClass: 'fwe-modal-backdrop',
63
+ hasBackdrop: true,
64
+ ...options
65
+ });
66
+ if (options.closeOnNavigation) {
67
+ this.router.events
68
+ .pipe(filter(e => e instanceof NavigationStart), takeUntil(complete))
69
+ .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'navigated' })));
70
+ }
71
+ if (options.shouldCloseOnBackdrop) {
72
+ overlayRef
73
+ .backdropClick()
74
+ .pipe(takeUntil(complete))
75
+ .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'backdrop' })));
76
+ }
77
+ const modalPortal = new ComponentPortal(modal);
78
+ const componentRef = overlayRef.attach(modalPortal);
79
+ if (componentRef != null && componentRef.instance != null) {
80
+ componentRef.instance.data = data;
81
+ if (componentRef.instance.close != null) {
82
+ componentRef.instance.close
83
+ .pipe(takeUntil(complete))
84
+ .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'close' })));
85
+ }
86
+ if (componentRef.instance.cancel != null) {
87
+ componentRef.instance.cancel
88
+ .pipe(takeUntil(complete))
89
+ .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'cancel' })));
90
+ }
91
+ if (componentRef.instance.ok != null) {
92
+ componentRef.instance.ok
93
+ .pipe(takeUntil(complete))
94
+ .subscribe(result => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'ok', result })));
95
+ }
96
+ if (componentRef.instance.ngOnChanges != null) {
97
+ componentRef.instance.ngOnChanges({ data: new SimpleChange(null, data, true) });
98
+ }
99
+ }
100
+ else {
101
+ this.dispose(overlayRef, complete).then(() => reject(new Error('Could not attach component to overlay.')));
102
+ }
103
+ });
104
+ }
105
+ dispose(overlayRef, complete) {
106
+ return new Promise(resolve => {
107
+ complete.next(true);
108
+ complete.complete();
109
+ complete.unsubscribe();
110
+ overlayRef.dispose();
111
+ resolve();
112
+ });
113
+ }
114
+ }
115
+ ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalService, deps: [{ token: i1.Overlay }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ ModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalService, providedIn: 'root' });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalService, decorators: [{
118
+ type: Injectable,
119
+ args: [{ providedIn: 'root' }]
120
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i2.Router }]; } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWxzL21vZGFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25ELE9BQU8sRUFBRSxjQUFjLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQW9CLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFHbkcsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBc0IsT0FBZ0IsRUFBVSxNQUFjO1FBQXhDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUVsRSxLQUFLLENBQUMsSUFBZSxFQUFFLE9BQXNCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBaUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRSxhQUFhLEVBQUUsb0JBQW9CO1lBQ25DLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFpQixFQUFFLE9BQXNCO1FBQy9DLE9BQU8sR0FBRyxPQUFPLElBQUk7WUFDbkIsYUFBYSxFQUFFLG9CQUFvQjtZQUNuQyxXQUFXLEVBQUUsSUFBSTtZQUNqQixxQkFBcUIsRUFBRSxJQUFJO1lBQzNCLEdBQUcsT0FBTztTQUNYLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQXFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQWdCLEVBQUUsT0FBc0I7UUFDN0MsT0FBTyxHQUFHLE9BQU8sSUFBSTtZQUNuQixhQUFhLEVBQUUsb0JBQW9CO1lBQ25DLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsR0FBRyxPQUFPO1NBQ1gsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBbUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBc0I7UUFDckMsTUFBTSxPQUFPLEdBQWlCO1lBQzVCLGFBQWEsRUFBRSxvQkFBb0I7WUFDbkMsV0FBVyxFQUFFLElBQUk7WUFDakIscUJBQXFCLEVBQUUsSUFBSTtTQUM1QixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUErQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVELElBQUksQ0FDRixJQUFXLEVBQ1gsS0FBNEIsRUFDNUIsT0FBcUI7UUFFckIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1lBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlILE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLFVBQVUsRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDaEMsZ0JBQWdCO2dCQUNoQixjQUFjO2dCQUNkLGFBQWEsRUFBRSxvQkFBb0I7Z0JBQ25DLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixHQUFHLE9BQU87YUFDWCxDQUFDLENBQUM7WUFFSCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO3FCQUNmLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksZUFBZSxDQUFDLEVBQ3pDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FDcEI7cUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekc7WUFFRCxJQUFJLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtnQkFDakMsVUFBVTtxQkFDUCxhQUFhLEVBQUU7cUJBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDekIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEc7WUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3BELElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxZQUFZLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtnQkFDekQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNsQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtvQkFDdkMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLO3lCQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3lCQUN6QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDckc7Z0JBQ0QsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUU7b0JBQ3hDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTTt5QkFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQzt5QkFDekIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RHO2dCQUNELElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFO29CQUNwQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUU7eUJBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7eUJBQ3pCLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RztnQkFDRCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRTtvQkFDN0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2pGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1RztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE9BQU8sQ0FBQyxVQUFzQixFQUFFLFFBQTBCO1FBQ2hFLE9BQU8sSUFBSSxPQUFPLENBQU8sT0FBTyxDQUFDLEVBQUU7WUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7eUdBL0dVLFlBQVk7NkdBQVosWUFBWSxjQURDLE1BQU07MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTW9kYWwsIE1vZGFsT3B0aW9ucywgTW9kYWxSZXN1bHQgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IEFsZXJ0Q29tcG9uZW50LCBBbGVydERhdGEgfSBmcm9tICcuL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtQ29tcG9uZW50LCBDb25maXJtRGF0YSB9IGZyb20gJy4vY29uZmlybS9jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9tcHRDb21wb25lbnQsIFByb21wdERhdGEgfSBmcm9tICcuL3Byb21wdC9wcm9tcHQuY29tcG9uZW50JztcbmltcG9ydCB7IEltYWdlR2FsbGVyeUNvbXBvbmVudCwgSW1hZ2VHYWxsZXJ5RGF0YSB9IGZyb20gJy4uL2ltYWdlLWdhbGxlcnkvaW1hZ2UtZ2FsbGVyeS5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxuXG4gIGFsZXJ0KGRhdGE6IEFsZXJ0RGF0YSwgb3B0aW9ucz86IE1vZGFsT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm9wZW48QWxlcnREYXRhLCBhbnksIEFsZXJ0Q29tcG9uZW50PihkYXRhLCBBbGVydENvbXBvbmVudCwge1xuICAgICAgYmFja2Ryb3BDbGFzczogJ2Z3ZS1tb2RhbC1iYWNrZHJvcCcsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIHNob3VsZENsb3NlT25CYWNrZHJvcDogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIGNvbmZpcm0oZGF0YTogQ29uZmlybURhdGEsIG9wdGlvbnM/OiBNb2RhbE9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7XG4gICAgICBiYWNrZHJvcENsYXNzOiAnZndlLW1vZGFsLWJhY2tkcm9wJyxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgc2hvdWxkQ2xvc2VPbkJhY2tkcm9wOiB0cnVlLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMub3BlbjxDb25maXJtRGF0YSwgYW55LCBDb25maXJtQ29tcG9uZW50PihkYXRhLCBDb25maXJtQ29tcG9uZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb21wdChkYXRhOiBQcm9tcHREYXRhLCBvcHRpb25zPzogTW9kYWxPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge1xuICAgICAgYmFja2Ryb3BDbGFzczogJ2Z3ZS1tb2RhbC1iYWNrZHJvcCcsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIHNob3VsZENsb3NlT25CYWNrZHJvcDogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLm9wZW48UHJvbXB0RGF0YSwgYW55LCBQcm9tcHRDb21wb25lbnQ+KGRhdGEsIFByb21wdENvbXBvbmVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBvcGVuSW1hZ2VHYWxsZXJ5KGRhdGE6IEltYWdlR2FsbGVyeURhdGEpIHtcbiAgICBjb25zdCBvcHRpb25zOiBNb2RhbE9wdGlvbnMgPSB7XG4gICAgICBiYWNrZHJvcENsYXNzOiAnZndlLW1vZGFsLWJhY2tkcm9wJyxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgc2hvdWxkQ2xvc2VPbkJhY2tkcm9wOiB0cnVlXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5vcGVuPEltYWdlR2FsbGVyeURhdGEsIGFueSwgSW1hZ2VHYWxsZXJ5Q29tcG9uZW50PihkYXRhLCBJbWFnZUdhbGxlcnlDb21wb25lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgb3BlbjxURGF0YSwgVFJlc3VsdCwgVE1vZGFsIGV4dGVuZHMgTW9kYWw8VERhdGEsIFRSZXN1bHQ+PihcbiAgICBkYXRhOiBURGF0YSxcbiAgICBtb2RhbDogQ29tcG9uZW50VHlwZTxUTW9kYWw+LFxuICAgIG9wdGlvbnM6IE1vZGFsT3B0aW9uc1xuICApOiBQcm9taXNlPE1vZGFsUmVzdWx0PFRSZXN1bHQ+PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBsZXRlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSBvcHRpb25zLnBvc2l0aW9uU3RyYXRlZ3kgfHwgdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpO1xuICAgICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBwYW5lbENsYXNzOiBvcHRpb25zLm92ZXJsYXlDbGFzcyxcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdmd2UtbW9kYWwtYmFja2Ryb3AnLFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChvcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uKSB7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCksXG4gICAgICAgICAgICB0YWtlVW50aWwoY29tcGxldGUpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kaXNwb3NlKG92ZXJsYXlSZWYsIGNvbXBsZXRlKS50aGVuKCgpID0+IHJlc29sdmUoeyB1c2VyQWN0aW9uOiAnbmF2aWdhdGVkJyB9KSkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5zaG91bGRDbG9zZU9uQmFja2Ryb3ApIHtcbiAgICAgICAgb3ZlcmxheVJlZlxuICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwoY29tcGxldGUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kaXNwb3NlKG92ZXJsYXlSZWYsIGNvbXBsZXRlKS50aGVuKCgpID0+IHJlc29sdmUoeyB1c2VyQWN0aW9uOiAnYmFja2Ryb3AnIH0pKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1vZGFsUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChtb2RhbCk7XG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBvdmVybGF5UmVmLmF0dGFjaChtb2RhbFBvcnRhbCk7XG4gICAgICBpZiAoY29tcG9uZW50UmVmICE9IG51bGwgJiYgY29tcG9uZW50UmVmLmluc3RhbmNlICE9IG51bGwpIHtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmRhdGEgPSBkYXRhO1xuICAgICAgICBpZiAoY29tcG9uZW50UmVmLmluc3RhbmNlLmNsb3NlICE9IG51bGwpIHtcbiAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY2xvc2VcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChjb21wbGV0ZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGlzcG9zZShvdmVybGF5UmVmLCBjb21wbGV0ZSkudGhlbigoKSA9PiByZXNvbHZlKHsgdXNlckFjdGlvbjogJ2Nsb3NlJyB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb25lbnRSZWYuaW5zdGFuY2UuY2FuY2VsICE9IG51bGwpIHtcbiAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY2FuY2VsXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwoY29tcGxldGUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRpc3Bvc2Uob3ZlcmxheVJlZiwgY29tcGxldGUpLnRoZW4oKCkgPT4gcmVzb2x2ZSh7IHVzZXJBY3Rpb246ICdjYW5jZWwnIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vayAhPSBudWxsKSB7XG4gICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm9rXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwoY29tcGxldGUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5kaXNwb3NlKG92ZXJsYXlSZWYsIGNvbXBsZXRlKS50aGVuKCgpID0+IHJlc29sdmUoeyB1c2VyQWN0aW9uOiAnb2snLCByZXN1bHQgfSkpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9uZW50UmVmLmluc3RhbmNlLm5nT25DaGFuZ2VzICE9IG51bGwpIHtcbiAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubmdPbkNoYW5nZXMoeyBkYXRhOiBuZXcgU2ltcGxlQ2hhbmdlKG51bGwsIGRhdGEsIHRydWUpIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3Bvc2Uob3ZlcmxheVJlZiwgY29tcGxldGUpLnRoZW4oKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignQ291bGQgbm90IGF0dGFjaCBjb21wb25lbnQgdG8gb3ZlcmxheS4nKSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwb3NlKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIGNvbXBsZXRlOiBTdWJqZWN0PGJvb2xlYW4+KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgY29tcGxldGUubmV4dCh0cnVlKTtcbiAgICAgIGNvbXBsZXRlLmNvbXBsZXRlKCk7XG4gICAgICBjb21wbGV0ZS51bnN1YnNjcmliZSgpO1xuICAgICAgb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { RouterModule } from '@angular/router';
4
+ import { OverlayModule } from '@angular/cdk/overlay';
5
+ import { FestoAngularFormsModule } from '../../forms/forms.module';
6
+ import { AlertComponent } from './alert/alert.component';
7
+ import { ConfirmComponent } from './confirm/confirm.component';
8
+ import { PromptComponent } from './prompt/prompt.component';
9
+ import { CustomModalComponent } from './custom-modal/custom-modal.component';
10
+ import { FestoAngularComponentsModule } from '../components.module';
11
+ import * as i0 from "@angular/core";
12
+ export * from './index';
13
+ export * from './alert/alert.component';
14
+ export * from './confirm/confirm.component';
15
+ export * from './prompt/prompt.component';
16
+ export * from './custom-modal/custom-modal.component';
17
+ export class FestoAngularModalsModule {
18
+ }
19
+ FestoAngularModalsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FestoAngularModalsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
+ FestoAngularModalsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FestoAngularModalsModule, declarations: [AlertComponent, ConfirmComponent, PromptComponent, CustomModalComponent], imports: [CommonModule, RouterModule, OverlayModule, FestoAngularFormsModule, FestoAngularComponentsModule], exports: [AlertComponent, ConfirmComponent, PromptComponent, CustomModalComponent] });
21
+ FestoAngularModalsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FestoAngularModalsModule, providers: [], imports: [[CommonModule, RouterModule, OverlayModule, FestoAngularFormsModule, FestoAngularComponentsModule]] });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FestoAngularModalsModule, decorators: [{
23
+ type: NgModule,
24
+ args: [{
25
+ declarations: [AlertComponent, ConfirmComponent, PromptComponent, CustomModalComponent],
26
+ imports: [CommonModule, RouterModule, OverlayModule, FestoAngularFormsModule, FestoAngularComponentsModule],
27
+ exports: [AlertComponent, ConfirmComponent, PromptComponent, CustomModalComponent],
28
+ providers: []
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWxzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWxzL21vZGFscy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUVwRSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVDQUF1QyxDQUFDO0FBUXRELE1BQU0sT0FBTyx3QkFBd0I7O3FIQUF4Qix3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFMcEIsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsYUFDNUUsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsNEJBQTRCLGFBQ2hHLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsb0JBQW9CO3NIQUd0RSx3QkFBd0IsYUFGeEIsRUFBRSxZQUZKLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsNEJBQTRCLENBQUM7MkZBSWhHLHdCQUF3QjtrQkFOcEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixDQUFDO29CQUN2RixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSx1QkFBdUIsRUFBRSw0QkFBNEIsQ0FBQztvQkFDM0csT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztvQkFDbEYsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5pbXBvcnQgeyBGZXN0b0FuZ3VsYXJGb3Jtc01vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm1zL2Zvcm1zLm1vZHVsZSc7XG5pbXBvcnQgeyBBbGVydENvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQvYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvbXB0Q29tcG9uZW50IH0gZnJvbSAnLi9wcm9tcHQvcHJvbXB0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLW1vZGFsL2N1c3RvbS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmVzdG9Bbmd1bGFyQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJy4uL2NvbXBvbmVudHMubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9tcHQvcHJvbXB0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2N1c3RvbS1tb2RhbC9jdXN0b20tbW9kYWwuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQWxlcnRDb21wb25lbnQsIENvbmZpcm1Db21wb25lbnQsIFByb21wdENvbXBvbmVudCwgQ3VzdG9tTW9kYWxDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIE92ZXJsYXlNb2R1bGUsIEZlc3RvQW5ndWxhckZvcm1zTW9kdWxlLCBGZXN0b0FuZ3VsYXJDb21wb25lbnRzTW9kdWxlXSxcbiAgZXhwb3J0czogW0FsZXJ0Q29tcG9uZW50LCBDb25maXJtQ29tcG9uZW50LCBQcm9tcHRDb21wb25lbnQsIEN1c3RvbU1vZGFsQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBGZXN0b0FuZ3VsYXJNb2RhbHNNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,102 @@
1
+ import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { FormBuilder } from '@angular/forms';
3
+ import { Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "../../../forms/text-input/text-input.component";
8
+ import * as i3 from "@angular/common";
9
+ export class PromptComponent {
10
+ constructor(formBuilder) {
11
+ this.formBuilder = formBuilder;
12
+ this.close = new EventEmitter();
13
+ this.cancel = new EventEmitter();
14
+ this.ok = new EventEmitter();
15
+ this.error = '';
16
+ this.complete = new Subject();
17
+ }
18
+ get text() {
19
+ return this.form?.get('text')?.value;
20
+ }
21
+ get valid() {
22
+ return this.form?.get('text')?.valid;
23
+ }
24
+ onKeyUp(event) {
25
+ event.preventDefault();
26
+ event.stopPropagation();
27
+ if (event.key === 'Esc' || event.key === 'Escape') {
28
+ this.onClose();
29
+ }
30
+ }
31
+ ngOnInit() {
32
+ const text = this.data?.value || '';
33
+ this.form = this.formBuilder.group({
34
+ text: this.formBuilder.control(text, this.data?.validatorOrOpts, this.data?.asyncValidator)
35
+ });
36
+ if (text) {
37
+ this.form.get('text').markAsDirty();
38
+ }
39
+ this.form
40
+ .get('text')
41
+ .statusChanges.pipe(takeUntil(this.complete))
42
+ .subscribe(sc => {
43
+ if (sc === 'INVALID') {
44
+ this.handleErrors();
45
+ }
46
+ else {
47
+ this.error = '';
48
+ }
49
+ });
50
+ }
51
+ ngAfterViewInit() {
52
+ if (this.closeBtn) {
53
+ this.closeBtn.nativeElement.focus();
54
+ }
55
+ }
56
+ ngOnDestroy() {
57
+ this.complete.next(true);
58
+ this.complete.unsubscribe();
59
+ }
60
+ onClose() {
61
+ this.close.emit();
62
+ }
63
+ onOk() {
64
+ if (this.valid) {
65
+ this.ok.emit(this.text);
66
+ }
67
+ }
68
+ onCancel() {
69
+ this.cancel.emit();
70
+ }
71
+ handleErrors() {
72
+ const e = this.form.get('text').errors;
73
+ const key = Object.keys(e)[0];
74
+ if (this.data.errors != null && this.data.errors[key]) {
75
+ this.error = this.data.errors[key];
76
+ }
77
+ else {
78
+ this.error = 'Prompt input is invalid.';
79
+ }
80
+ }
81
+ }
82
+ PromptComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PromptComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
83
+ PromptComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PromptComponent, selector: "fng-prompt", inputs: { data: "data" }, outputs: { close: "close", cancel: "cancel", ok: "ok" }, host: { listeners: { "window:keyup": "onKeyUp($event)" } }, viewQueries: [{ propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true }], ngImport: i0, template: "<div class=\"fwe-modal\">\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">{{ data?.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data?.title }}</h1>\n </div>\n <form [formGroup]=\"form\" class=\"fwe-modal-body\">\n <fng-text-input formControlName=\"text\" [label]=\"data?.label\" [hint]=\"data?.hint\" type=\"text\" [error]=\"error\"></fng-text-input>\n </form>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data?.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data?.cancel }}\n </button>\n <button *ngIf=\"data?.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onOk()\">\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""], components: [{ type: i2.TextInputComponent, selector: "fng-text-input", inputs: ["label", "type", "readonly", "step", "min", "max", "tabindex", "placeholder", "name", "disabled", "value", "required", "error", "hint"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], encapsulation: i0.ViewEncapsulation.None });
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PromptComponent, decorators: [{
85
+ type: Component,
86
+ args: [{ selector: 'fng-prompt', encapsulation: ViewEncapsulation.None, template: "<div class=\"fwe-modal\">\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">{{ data?.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data?.title }}</h1>\n </div>\n <form [formGroup]=\"form\" class=\"fwe-modal-body\">\n <fng-text-input formControlName=\"text\" [label]=\"data?.label\" [hint]=\"data?.hint\" type=\"text\" [error]=\"error\"></fng-text-input>\n </form>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data?.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data?.cancel }}\n </button>\n <button *ngIf=\"data?.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onOk()\">\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""] }]
87
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { data: [{
88
+ type: Input
89
+ }], close: [{
90
+ type: Output
91
+ }], cancel: [{
92
+ type: Output
93
+ }], ok: [{
94
+ type: Output
95
+ }], closeBtn: [{
96
+ type: ViewChild,
97
+ args: ['closeBtn']
98
+ }], onKeyUp: [{
99
+ type: HostListener,
100
+ args: ['window:keyup', ['$event']]
101
+ }] } });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWxzL3Byb21wdC9wcm9tcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbHMvcHJvbXB0L3Byb21wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTRDLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUF1QjNDLE1BQU0sT0FBTyxlQUFlO0lBcUIxQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQW5CbEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDaEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakMsT0FBRSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFLdkMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQVVILGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVKLENBQUM7SUFWaEQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFD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QUNFLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSTtrR0FHNUIsSUFBSTtzQkFBWixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csRUFBRTtzQkFBWCxNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBa0JyQixPQUFPO3NCQUROLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2xPcHRpb25zLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICcuLi9pbmRleCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvbXB0RGF0YSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBlcnJvcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBjYW5jZWw/OiBzdHJpbmc7XG4gIG9rPzogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZztcbiAgdmFsaWRhdG9yT3JPcHRzPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgQWJzdHJhY3RDb250cm9sT3B0aW9ucyB8IG51bGw7XG4gIGFzeW5jVmFsaWRhdG9yPzogQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXSB8IG51bGw7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZuZy1wcm9tcHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvbXB0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvbXB0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUHJvbXB0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE1vZGFsPFByb21wdERhdGEsIGFueT4ge1xuICBASW5wdXQoKSBkYXRhOiBQcm9tcHREYXRhO1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAVmlld0NoaWxkKCdjbG9zZUJ0bicpIGNsb3NlQnRuOiBFbGVtZW50UmVmO1xuXG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgZXJyb3IgPSAnJztcblxuICBnZXQgdGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm0/LmdldCgndGV4dCcpPy52YWx1ZTtcbiAgfVxuXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5nZXQoJ3RleHQnKT8udmFsaWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbXBsZXRlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge31cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAnLCBbJyRldmVudCddKVxuICBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2MnIHx8IGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLmRhdGE/LnZhbHVlIHx8ICcnO1xuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICB0ZXh0OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGV4dCwgdGhpcy5kYXRhPy52YWxpZGF0b3JPck9wdHMsIHRoaXMuZGF0YT8uYXN5bmNWYWxpZGF0b3IpXG4gICAgfSk7XG5cbiAgICBpZiAodGV4dCkge1xuICAgICAgdGhpcy5mb3JtLmdldCgndGV4dCcpLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtXG4gICAgICAuZ2V0KCd0ZXh0JylcbiAgICAgIC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcGxldGUpKVxuICAgICAgLnN1YnNjcmliZShzYyA9PiB7XG4gICAgICAgIGlmIChzYyA9PT0gJ0lOVkFMSUQnKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmNsb3NlQnRuKSB7XG4gICAgICAodGhpcy5jbG9zZUJ0bi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29tcGxldGUubmV4dCh0cnVlKTtcbiAgICB0aGlzLmNvbXBsZXRlLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgb25PaygpIHtcbiAgICBpZiAodGhpcy52YWxpZCkge1xuICAgICAgdGhpcy5vay5lbWl0KHRoaXMudGV4dCk7XG4gICAgfVxuICB9XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcnMoKSB7XG4gICAgY29uc3QgZSA9IHRoaXMuZm9ybS5nZXQoJ3RleHQnKS5lcnJvcnM7XG4gICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoZSlbMF07XG4gICAgaWYgKHRoaXMuZGF0YS5lcnJvcnMgIT0gbnVsbCAmJiB0aGlzLmRhdGEuZXJyb3JzW2tleV0pIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLmRhdGEuZXJyb3JzW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnUHJvbXB0IGlucHV0IGlzIGludmFsaWQuJztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmd2UtbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tb2RhbC1jbG9zZVwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiICNjbG9zZUJ0biBjbGFzcz1cImZ3ZS1idG4gZndlLWJ0bi1saW5rIGZ3ZS1kYXJrXCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi1jbG9zZS1zbWFsbFwiPjwvaT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZndlLXNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtaGVhZGVyXCI+XG4gICAgPGgyICpuZ0lmPVwiZGF0YT8uc3VidGl0bGVcIiBjbGFzcz1cImZ3ZS1tb2RhbC1oMlwiPnt7IGRhdGE/LnN1YnRpdGxlIH19PC9oMj5cbiAgICA8aDEgY2xhc3M9XCJmd2UtbW9kYWwtaDFcIj57eyBkYXRhPy50aXRsZSB9fTwvaDE+XG4gIDwvZGl2PlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZ3ZS1tb2RhbC1ib2R5XCI+XG4gICAgPGZuZy10ZXh0LWlucHV0IGZvcm1Db250cm9sTmFtZT1cInRleHRcIiBbbGFiZWxdPVwiZGF0YT8ubGFiZWxcIiBbaGludF09XCJkYXRhPy5oaW50XCIgdHlwZT1cInRleHRcIiBbZXJyb3JdPVwiZXJyb3JcIj48L2ZuZy10ZXh0LWlucHV0PlxuICA8L2Zvcm0+XG4gIDxkaXYgY2xhc3M9XCJmd2UtbW9kYWwtZm9vdGVyXCIgKm5nSWY9XCJkYXRhPy5jYW5jZWwgfHwgZGF0YT8ub2tcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLW1vZGFsLWJ1dHRvbnNcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhPy5jYW5jZWxcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNhbmNlbFwiIGNsYXNzPVwiZndlLWJ0biBmd2UtYnRuLWxnXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgICAge3sgZGF0YT8uY2FuY2VsIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhPy5va1wiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiT2tcIiBjbGFzcz1cImZ3ZS1idG4gZndlLWJ0bi1oZXJvIGZ3ZS1idG4tbGdcIiAoY2xpY2spPVwib25PaygpXCI+XG4gICAgICAgIHt7IGRhdGE/Lm9rIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==