@kirbydesign/designsystem 5.2.2 → 6.0.0-rc.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 (716) hide show
  1. package/bundles/kirbydesign-designsystem-testing-base.umd.js +1988 -1259
  2. package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
  3. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js +34 -16
  4. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js.map +1 -1
  5. package/bundles/kirbydesign-designsystem-testing-jest.umd.js +34 -16
  6. package/bundles/kirbydesign-designsystem-testing-jest.umd.js.map +1 -1
  7. package/bundles/kirbydesign-designsystem.umd.js +10025 -9233
  8. package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
  9. package/esm2015/kirbydesign-designsystem.js +1 -115
  10. package/esm2015/lib/components/accordion/accordion-item.component.js +31 -20
  11. package/esm2015/lib/components/accordion/accordion.directive.js +11 -7
  12. package/esm2015/lib/components/app/app.component.js +23 -18
  13. package/esm2015/lib/components/app/app.module.js +13 -8
  14. package/esm2015/lib/components/avatar/avatar.component.js +31 -19
  15. package/esm2015/lib/components/button/button.component.js +63 -34
  16. package/esm2015/lib/components/calendar/calendar.component.js +59 -35
  17. package/esm2015/lib/components/calendar/helpers/calendar.helper.js +8 -8
  18. package/esm2015/lib/components/card/card-footer/card-footer.component.js +14 -11
  19. package/esm2015/lib/components/card/card-header/card-header.component.js +26 -15
  20. package/esm2015/lib/components/card/card.component.js +34 -25
  21. package/esm2015/lib/components/chart/chart-js/chart-js.service.js +48 -34
  22. package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js +1 -3
  23. package/esm2015/lib/components/chart/chart.component.js +36 -39
  24. package/esm2015/lib/components/chart/chart.module.js +13 -8
  25. package/esm2015/lib/components/chart/chart.types.js +1 -1
  26. package/esm2015/lib/components/chart/configs/chart-config.service.js +7 -4
  27. package/esm2015/lib/components/chart/configs/interaction-functions-extensions.config.js +8 -10
  28. package/esm2015/lib/components/chart/configs/shared.utils.js +1 -1
  29. package/esm2015/lib/components/chart/configs/type.config.js +1 -3
  30. package/esm2015/lib/components/chart/index.js +2 -1
  31. package/esm2015/lib/components/chart-deprecated/chart-deprecated-helper.js +7 -4
  32. package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.js +56 -38
  33. package/esm2015/lib/components/chart-deprecated/options/areaspline.js +7 -9
  34. package/esm2015/lib/components/chart-deprecated/options/donut.js +5 -7
  35. package/esm2015/lib/components/chart-deprecated/options/timeseries.js +8 -10
  36. package/esm2015/lib/components/checkbox/checkbox.component.js +47 -21
  37. package/esm2015/lib/components/chip/chip.component.js +24 -13
  38. package/esm2015/lib/components/divider/divider.component.js +16 -12
  39. package/esm2015/lib/components/dropdown/dropdown.component.js +154 -61
  40. package/esm2015/lib/components/dropdown/keyboard-handler.service.js +9 -7
  41. package/esm2015/lib/components/empty-state/empty-state.component.js +27 -16
  42. package/esm2015/lib/components/fab-sheet/fab-sheet.component.js +37 -23
  43. package/esm2015/lib/components/flag/flag.component.js +21 -17
  44. package/esm2015/lib/components/form-field/directives/date/date-input.directive.js +16 -15
  45. package/esm2015/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.js +41 -28
  46. package/esm2015/lib/components/form-field/form-field-message/form-field-message.component.js +17 -13
  47. package/esm2015/lib/components/form-field/form-field.component.js +39 -26
  48. package/esm2015/lib/components/form-field/input/input.component.js +65 -23
  49. package/esm2015/lib/components/form-field/input-counter/input-counter.component.js +14 -11
  50. package/esm2015/lib/components/form-field/textarea/textarea.component.js +51 -20
  51. package/esm2015/lib/components/grid/breakpoint-helper.service.js +9 -9
  52. package/esm2015/lib/components/grid/grid.component.js +21 -18
  53. package/esm2015/lib/components/icon/icon-registry.service.js +11 -19
  54. package/esm2015/lib/components/icon/icon-settings.js +2 -3
  55. package/esm2015/lib/components/icon/icon.component.js +27 -20
  56. package/esm2015/lib/components/icon/icon.module.js +13 -8
  57. package/esm2015/lib/components/icon/index.js +1 -2
  58. package/esm2015/lib/components/icon/kirby-icon-settings.js +2 -4
  59. package/esm2015/lib/components/index.js +11 -10
  60. package/esm2015/lib/components/item/item.component.js +33 -16
  61. package/esm2015/lib/components/item/item.module.js +13 -8
  62. package/esm2015/lib/components/item/label/label.component.js +18 -12
  63. package/esm2015/lib/components/item-group/item-group.component.js +15 -11
  64. package/esm2015/lib/components/item-sliding/item-sliding.component.js +19 -12
  65. package/esm2015/lib/components/list/directives/infinite-scroll.directive.js +18 -17
  66. package/esm2015/lib/components/list/directives/list-item-color.directive.js +17 -11
  67. package/esm2015/lib/components/list/helpers/list-helper.js +7 -4
  68. package/esm2015/lib/components/list/index.js +2 -3
  69. package/esm2015/lib/components/list/list-experimental/list-experimental.component.js +20 -13
  70. package/esm2015/lib/components/list/list-header/list-header.component.js +14 -11
  71. package/esm2015/lib/components/list/list-item/list-item.component.js +38 -24
  72. package/esm2015/lib/components/list/list-section-header/list-section-header.component.js +15 -14
  73. package/esm2015/lib/components/list/list.component.js +81 -40
  74. package/esm2015/lib/components/list/list.directive.js +34 -45
  75. package/esm2015/lib/components/list/list.module.js +33 -12
  76. package/esm2015/lib/components/list/pipes/group-by.pipe.js +10 -6
  77. package/esm2015/lib/components/loading-overlay/loading-overlay.component.js +20 -13
  78. package/esm2015/lib/components/loading-overlay/loading-overlay.service.js +9 -13
  79. package/esm2015/lib/components/modal/action-sheet/action-sheet.component.js +32 -18
  80. package/esm2015/lib/components/modal/alert/alert.component.js +38 -26
  81. package/esm2015/lib/components/modal/alert/config/alert-config.js +1 -1
  82. package/esm2015/lib/components/modal/footer/modal-footer.component.js +25 -13
  83. package/esm2015/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.js +25 -21
  84. package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.js +1 -1
  85. package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.js +124 -56
  86. package/esm2015/lib/components/modal/services/action-sheet.helper.js +8 -8
  87. package/esm2015/lib/components/modal/services/alert.helper.js +10 -20
  88. package/esm2015/lib/components/modal/services/modal-animation-builder.service.js +7 -10
  89. package/esm2015/lib/components/modal/services/modal-navigation.service.js +8 -13
  90. package/esm2015/lib/components/modal/services/modal.controller.js +17 -16
  91. package/esm2015/lib/components/modal/services/modal.helper.js +10 -10
  92. package/esm2015/lib/components/page/index.js +2 -1
  93. package/esm2015/lib/components/page/page-footer/page-footer.component.js +21 -18
  94. package/esm2015/lib/components/page/page.component.js +187 -118
  95. package/esm2015/lib/components/page/page.module.js +60 -32
  96. package/esm2015/lib/components/popover/popover.component.js +27 -23
  97. package/esm2015/lib/components/progress-circle/progress-circle-ring.component.js +29 -17
  98. package/esm2015/lib/components/progress-circle/progress-circle.component.js +30 -21
  99. package/esm2015/lib/components/radio/radio-group/radio-group.component.js +60 -34
  100. package/esm2015/lib/components/radio/radio.component.js +36 -17
  101. package/esm2015/lib/components/range/range.component.js +51 -29
  102. package/esm2015/lib/components/reorder-list/reorder-list.component.js +32 -21
  103. package/esm2015/lib/components/router-outlet/router-outlet.component.js +18 -12
  104. package/esm2015/lib/components/router-outlet/router-outlet.module.js +13 -8
  105. package/esm2015/lib/components/section-header/section-header.component.js +15 -9
  106. package/esm2015/lib/components/segmented-control/segment-item.js +1 -1
  107. package/esm2015/lib/components/segmented-control/segmented-control.component.js +38 -29
  108. package/esm2015/lib/components/shared/component-loader.directive.js +15 -16
  109. package/esm2015/lib/components/shared/resize-observer/resize-observer.factory.js +7 -5
  110. package/esm2015/lib/components/shared/resize-observer/resize-observer.service.js +7 -10
  111. package/esm2015/lib/components/slide-button/slide-button.component.js +22 -19
  112. package/esm2015/lib/components/slides/slides.component.js +42 -20
  113. package/esm2015/lib/components/spinner/index.js +3 -0
  114. package/esm2015/lib/components/spinner/spinner.component.js +14 -11
  115. package/esm2015/lib/components/spinner/spinner.module.js +14 -9
  116. package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.js +9 -3
  117. package/esm2015/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.js +25 -20
  118. package/esm2015/lib/components/tabs/tab-button/tab-button.component.js +21 -18
  119. package/esm2015/lib/components/tabs/tabs.component.js +20 -16
  120. package/esm2015/lib/components/tabs/tabs.module.js +14 -9
  121. package/esm2015/lib/components/tabs/tabs.service.js +9 -7
  122. package/esm2015/lib/components/toast/config/toast-config.js +1 -1
  123. package/esm2015/lib/components/toast/services/toast.controller.js +8 -8
  124. package/esm2015/lib/components/toast/services/toast.helper.js +8 -12
  125. package/esm2015/lib/components/toggle/toggle.component.js +21 -14
  126. package/esm2015/lib/components/toggle-button/index.js +3 -0
  127. package/esm2015/lib/components/toggle-button/toggle-button.component.js +20 -13
  128. package/esm2015/lib/components/toggle-button/toggle-button.module.js +13 -8
  129. package/esm2015/lib/components/web-component-proxies.component.js +13 -15
  130. package/esm2015/lib/directives/element-as-button/element-as-button.directive.js +26 -17
  131. package/esm2015/lib/directives/fit-heading/fit-heading.directive.js +16 -17
  132. package/esm2015/lib/directives/fit-heading/fit-heading.module.js +12 -7
  133. package/esm2015/lib/directives/index.js +3 -1
  134. package/esm2015/lib/directives/key-handler/key-handler.directive.js +14 -14
  135. package/esm2015/lib/directives/modal-router-link/modal-router-link.directive.js +20 -15
  136. package/esm2015/lib/directives/theme-color/theme-color.directive.js +55 -24
  137. package/esm2015/lib/helpers/element-has-ancestor.js +1 -1
  138. package/esm2015/lib/helpers/line-clamp-helper.js +7 -8
  139. package/esm2015/lib/helpers/platform.service.js +9 -11
  140. package/esm2015/lib/index.js +1 -5
  141. package/esm2015/lib/kirby.module.js +166 -25
  142. package/esm2015/lib/types/window-ref.js +9 -7
  143. package/esm2015/testing-base/kirbydesign-designsystem-testing-base.js +1 -59
  144. package/esm2015/testing-base/lib/components/index.js +56 -0
  145. package/esm2015/testing-base/lib/components/mock.accordion-item.component.js +26 -18
  146. package/esm2015/testing-base/lib/components/mock.action-sheet.component.js +38 -24
  147. package/esm2015/testing-base/lib/components/mock.app.component.js +22 -14
  148. package/esm2015/testing-base/lib/components/mock.avatar.component.js +37 -24
  149. package/esm2015/testing-base/lib/components/mock.button.component.js +36 -24
  150. package/esm2015/testing-base/lib/components/mock.calendar.component.js +54 -31
  151. package/esm2015/testing-base/lib/components/mock.card-footer.component.js +22 -14
  152. package/esm2015/testing-base/lib/components/mock.card-header.component.js +30 -20
  153. package/esm2015/testing-base/lib/components/mock.card.component.js +34 -22
  154. package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.js +38 -24
  155. package/esm2015/testing-base/lib/components/mock.chart.component.js +38 -25
  156. package/esm2015/testing-base/lib/components/mock.checkbox.component.js +36 -23
  157. package/esm2015/testing-base/lib/components/mock.chip.component.js +26 -18
  158. package/esm2015/testing-base/lib/components/mock.divider.component.js +24 -17
  159. package/esm2015/testing-base/lib/components/mock.dropdown.component.js +49 -30
  160. package/esm2015/testing-base/lib/components/mock.empty-state.component.js +30 -20
  161. package/esm2015/testing-base/lib/components/mock.fab-sheet.component.js +26 -18
  162. package/esm2015/testing-base/lib/components/mock.flag.component.js +26 -18
  163. package/esm2015/testing-base/lib/components/mock.form-field-message.component.js +26 -18
  164. package/esm2015/testing-base/lib/components/mock.form-field.component.js +26 -18
  165. package/esm2015/testing-base/lib/components/mock.grid.component.js +26 -18
  166. package/esm2015/testing-base/lib/components/mock.icon.component.js +29 -20
  167. package/esm2015/testing-base/lib/components/mock.input-counter.component.js +24 -17
  168. package/esm2015/testing-base/lib/components/mock.input.component.js +42 -27
  169. package/esm2015/testing-base/lib/components/mock.item-group.component.js +22 -14
  170. package/esm2015/testing-base/lib/components/mock.item-sliding.component.js +26 -18
  171. package/esm2015/testing-base/lib/components/mock.item.component.js +33 -22
  172. package/esm2015/testing-base/lib/components/mock.label.component.js +24 -17
  173. package/esm2015/testing-base/lib/components/mock.list-experimental.component.js +22 -14
  174. package/esm2015/testing-base/lib/components/mock.list-header.component.js +22 -14
  175. package/esm2015/testing-base/lib/components/mock.list-item.component.js +40 -25
  176. package/esm2015/testing-base/lib/components/mock.list-section-header.component.js +24 -17
  177. package/esm2015/testing-base/lib/components/mock.list.component.js +50 -30
  178. package/esm2015/testing-base/lib/components/mock.loading-overlay.component.js +26 -18
  179. package/esm2015/testing-base/lib/components/mock.modal-footer.component.js +26 -18
  180. package/esm2015/testing-base/lib/components/mock.page-footer.component.js +24 -17
  181. package/esm2015/testing-base/lib/components/mock.page.component.js +228 -125
  182. package/esm2015/testing-base/lib/components/mock.popover.component.js +29 -20
  183. package/esm2015/testing-base/lib/components/mock.progress-circle.component.js +28 -19
  184. package/esm2015/testing-base/lib/components/mock.radio-group.component.js +38 -24
  185. package/esm2015/testing-base/lib/components/mock.radio.component.js +30 -20
  186. package/esm2015/testing-base/lib/components/mock.range.component.js +44 -27
  187. package/esm2015/testing-base/lib/components/mock.reorder-list.component.js +32 -21
  188. package/esm2015/testing-base/lib/components/mock.router-outlet.component.js +24 -17
  189. package/esm2015/testing-base/lib/components/mock.section-header.component.js +22 -14
  190. package/esm2015/testing-base/lib/components/mock.segmented-control.component.js +35 -23
  191. package/esm2015/testing-base/lib/components/mock.slide-button.component.js +30 -20
  192. package/esm2015/testing-base/lib/components/mock.slides.component.js +51 -0
  193. package/esm2015/testing-base/lib/components/mock.spinner.component.js +22 -14
  194. package/esm2015/testing-base/lib/components/mock.tab-button.component.js +26 -18
  195. package/esm2015/testing-base/lib/components/mock.tabs.component.js +22 -14
  196. package/esm2015/testing-base/lib/components/mock.textarea.component.js +35 -23
  197. package/esm2015/testing-base/lib/components/mock.toggle-button.component.js +26 -18
  198. package/esm2015/testing-base/lib/components/mock.toggle.component.js +28 -19
  199. package/esm2015/testing-base/lib/components/mock.web-component-proxies.component.js +33 -0
  200. package/esm2015/testing-base/lib/directives/index.js +4 -0
  201. package/esm2015/testing-base/lib/directives/mock.accordion.directive.js +22 -13
  202. package/esm2015/testing-base/lib/directives/mock.fit-heading.directive.js +24 -15
  203. package/esm2015/testing-base/lib/directives/mock.theme-color.directive.js +24 -16
  204. package/esm2015/testing-base/lib/index.js +4 -0
  205. package/esm2015/testing-base/lib/kirby-testing-base.module.js +69 -7
  206. package/esm2015/testing-base/lib/mock-components.js +5 -2
  207. package/esm2015/testing-base/public_api.js +2 -2
  208. package/esm2015/testing-jasmine/kirbydesign-designsystem-testing-jasmine.js +1 -2
  209. package/esm2015/testing-jasmine/lib/kirby-testing.module.js +14 -8
  210. package/esm2015/testing-jasmine/lib/mock-providers.js +1 -1
  211. package/esm2015/testing-jest/kirbydesign-designsystem-testing-jest.js +1 -2
  212. package/esm2015/testing-jest/lib/kirby-testing.module.js +14 -8
  213. package/esm2015/testing-jest/lib/mock-providers.js +1 -1
  214. package/fesm2015/kirbydesign-designsystem-testing-base.js +1859 -1163
  215. package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
  216. package/fesm2015/kirbydesign-designsystem-testing-jasmine.js +13 -8
  217. package/fesm2015/kirbydesign-designsystem-testing-jasmine.js.map +1 -1
  218. package/fesm2015/kirbydesign-designsystem-testing-jest.js +13 -8
  219. package/fesm2015/kirbydesign-designsystem-testing-jest.js.map +1 -1
  220. package/fesm2015/kirbydesign-designsystem.js +5261 -4353
  221. package/fesm2015/kirbydesign-designsystem.js.map +1 -1
  222. package/icons/svg/more.svg +5 -7
  223. package/kirbydesign-designsystem.d.ts +1 -114
  224. package/lib/components/accordion/accordion-item.component.d.ts +3 -0
  225. package/lib/components/accordion/accordion.directive.d.ts +3 -0
  226. package/lib/components/app/app.component.d.ts +3 -0
  227. package/lib/components/app/app.module.d.ts +7 -0
  228. package/lib/components/avatar/avatar.component.d.ts +5 -2
  229. package/lib/components/button/button.component.d.ts +5 -2
  230. package/lib/components/calendar/calendar.component.d.ts +3 -0
  231. package/lib/components/calendar/helpers/calendar.helper.d.ts +3 -0
  232. package/lib/components/card/card-footer/card-footer.component.d.ts +3 -0
  233. package/lib/components/card/card-header/card-header.component.d.ts +3 -0
  234. package/lib/components/card/card.component.d.ts +3 -0
  235. package/lib/components/chart/chart-js/chart-js.service.d.ts +7 -3
  236. package/lib/components/chart/chart.component.d.ts +5 -5
  237. package/lib/components/chart/chart.module.d.ts +5 -0
  238. package/lib/components/chart/chart.types.d.ts +1 -0
  239. package/lib/components/chart/configs/chart-config.service.d.ts +4 -1
  240. package/lib/components/chart/index.d.ts +1 -0
  241. package/lib/components/chart-deprecated/chart-deprecated-helper.d.ts +3 -0
  242. package/lib/components/chart-deprecated/chart-deprecated.component.d.ts +3 -0
  243. package/lib/components/checkbox/checkbox.component.d.ts +3 -0
  244. package/lib/components/chip/chip.component.d.ts +3 -0
  245. package/lib/components/divider/divider.component.d.ts +3 -0
  246. package/lib/components/dropdown/dropdown.component.d.ts +5 -2
  247. package/lib/components/dropdown/keyboard-handler.service.d.ts +3 -0
  248. package/lib/components/empty-state/empty-state.component.d.ts +3 -0
  249. package/lib/components/fab-sheet/fab-sheet.component.d.ts +3 -0
  250. package/lib/components/flag/flag.component.d.ts +3 -0
  251. package/lib/components/form-field/directives/date/date-input.directive.d.ts +3 -0
  252. package/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.d.ts +3 -0
  253. package/lib/components/form-field/form-field-message/form-field-message.component.d.ts +3 -0
  254. package/lib/components/form-field/form-field.component.d.ts +3 -0
  255. package/lib/components/form-field/input/input.component.d.ts +4 -1
  256. package/lib/components/form-field/input-counter/input-counter.component.d.ts +5 -2
  257. package/lib/components/form-field/textarea/textarea.component.d.ts +3 -0
  258. package/lib/components/grid/breakpoint-helper.service.d.ts +3 -0
  259. package/lib/components/grid/grid.component.d.ts +3 -0
  260. package/lib/components/icon/icon-registry.service.d.ts +4 -2
  261. package/lib/components/icon/icon-settings.d.ts +0 -2
  262. package/lib/components/icon/icon.component.d.ts +4 -1
  263. package/lib/components/icon/icon.module.d.ts +6 -0
  264. package/lib/components/icon/index.d.ts +1 -1
  265. package/lib/components/index.d.ts +10 -9
  266. package/lib/components/item/item.component.d.ts +4 -1
  267. package/lib/components/item/item.module.d.ts +9 -0
  268. package/lib/components/item/label/label.component.d.ts +3 -0
  269. package/lib/components/item-group/item-group.component.d.ts +3 -0
  270. package/lib/components/item-sliding/item-sliding.component.d.ts +3 -0
  271. package/lib/components/list/directives/infinite-scroll.directive.d.ts +3 -0
  272. package/lib/components/list/directives/list-item-color.directive.d.ts +3 -0
  273. package/lib/components/list/helpers/list-helper.d.ts +3 -0
  274. package/lib/components/list/index.d.ts +1 -2
  275. package/lib/components/list/list-experimental/list-experimental.component.d.ts +3 -0
  276. package/lib/components/list/list-header/list-header.component.d.ts +3 -0
  277. package/lib/components/list/list-item/list-item.component.d.ts +3 -0
  278. package/lib/components/list/list-section-header/list-section-header.component.d.ts +3 -0
  279. package/lib/components/list/list.component.d.ts +3 -0
  280. package/lib/components/list/list.directive.d.ts +9 -6
  281. package/lib/components/list/list.module.d.ts +16 -0
  282. package/lib/components/list/pipes/group-by.pipe.d.ts +3 -0
  283. package/lib/components/loading-overlay/loading-overlay.component.d.ts +3 -0
  284. package/lib/components/loading-overlay/loading-overlay.service.d.ts +3 -0
  285. package/lib/components/modal/action-sheet/action-sheet.component.d.ts +3 -0
  286. package/lib/components/modal/alert/alert.component.d.ts +5 -2
  287. package/lib/components/modal/alert/config/alert-config.d.ts +0 -8
  288. package/lib/components/modal/footer/modal-footer.component.d.ts +3 -0
  289. package/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +3 -0
  290. package/lib/components/modal/modal-wrapper/config/modal-config.d.ts +1 -8
  291. package/lib/components/modal/modal-wrapper/modal-wrapper.component.d.ts +5 -0
  292. package/lib/components/modal/services/action-sheet.helper.d.ts +3 -0
  293. package/lib/components/modal/services/alert.helper.d.ts +4 -2
  294. package/lib/components/modal/services/modal-animation-builder.service.d.ts +3 -0
  295. package/lib/components/modal/services/modal-navigation.service.d.ts +3 -0
  296. package/lib/components/modal/services/modal.controller.d.ts +3 -0
  297. package/lib/components/modal/services/modal.helper.d.ts +3 -0
  298. package/lib/components/page/index.d.ts +1 -0
  299. package/lib/components/page/page-footer/page-footer.component.d.ts +3 -0
  300. package/lib/components/page/page.component.d.ts +26 -0
  301. package/lib/components/page/page.module.d.ts +10 -0
  302. package/lib/components/popover/popover.component.d.ts +4 -1
  303. package/lib/components/progress-circle/progress-circle-ring.component.d.ts +3 -0
  304. package/lib/components/progress-circle/progress-circle.component.d.ts +3 -0
  305. package/lib/components/radio/radio-group/radio-group.component.d.ts +3 -0
  306. package/lib/components/radio/radio.component.d.ts +3 -0
  307. package/lib/components/range/range.component.d.ts +3 -0
  308. package/lib/components/reorder-list/reorder-list.component.d.ts +3 -0
  309. package/lib/components/router-outlet/router-outlet.component.d.ts +3 -0
  310. package/lib/components/router-outlet/router-outlet.module.d.ts +7 -0
  311. package/lib/components/section-header/section-header.component.d.ts +3 -0
  312. package/lib/components/segmented-control/segment-item.d.ts +0 -4
  313. package/lib/components/segmented-control/segmented-control.component.d.ts +4 -1
  314. package/lib/components/shared/component-loader.directive.d.ts +3 -0
  315. package/lib/components/shared/resize-observer/resize-observer.factory.d.ts +3 -0
  316. package/lib/components/shared/resize-observer/resize-observer.service.d.ts +3 -0
  317. package/lib/components/slide-button/slide-button.component.d.ts +3 -0
  318. package/lib/components/slides/slides.component.d.ts +5 -0
  319. package/lib/components/spinner/index.d.ts +2 -0
  320. package/lib/components/spinner/spinner.component.d.ts +3 -0
  321. package/lib/components/spinner/spinner.module.d.ts +6 -0
  322. package/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.d.ts +3 -0
  323. package/lib/components/tabs/tab-button/tab-button.component.d.ts +3 -0
  324. package/lib/components/tabs/tabs.component.d.ts +3 -0
  325. package/lib/components/tabs/tabs.module.d.ts +9 -0
  326. package/lib/components/tabs/tabs.service.d.ts +3 -0
  327. package/lib/components/toast/config/toast-config.d.ts +1 -4
  328. package/lib/components/toast/services/toast.controller.d.ts +3 -0
  329. package/lib/components/toast/services/toast.helper.d.ts +3 -0
  330. package/lib/components/toggle/toggle.component.d.ts +3 -0
  331. package/lib/components/toggle-button/index.d.ts +2 -0
  332. package/lib/components/toggle-button/toggle-button.component.d.ts +3 -0
  333. package/lib/components/toggle-button/toggle-button.module.d.ts +6 -0
  334. package/lib/components/web-component-proxies.component.d.ts +3 -0
  335. package/lib/custom-elements-initializer.d.ts +1 -1
  336. package/lib/directives/element-as-button/element-as-button.directive.d.ts +3 -0
  337. package/lib/directives/fit-heading/fit-heading.directive.d.ts +3 -0
  338. package/lib/directives/fit-heading/fit-heading.module.d.ts +5 -0
  339. package/lib/directives/index.d.ts +2 -0
  340. package/lib/directives/key-handler/key-handler.directive.d.ts +3 -0
  341. package/lib/directives/modal-router-link/modal-router-link.directive.d.ts +3 -0
  342. package/lib/directives/theme-color/theme-color.directive.d.ts +3 -0
  343. package/lib/helpers/line-clamp-helper.d.ts +3 -0
  344. package/lib/helpers/platform.service.d.ts +3 -0
  345. package/lib/index.d.ts +0 -1
  346. package/lib/kirby.module.d.ts +69 -0
  347. package/lib/types/window-ref.d.ts +3 -0
  348. package/package.json +3 -4
  349. package/polyfills/intersection-observer-polyfill-loader.js +12 -12
  350. package/polyfills/resize-observer-polyfill-loader.js +1 -1
  351. package/readme.md +0 -16
  352. package/scss/_trigger-publish.scss +1 -0
  353. package/scss/_trigger.scss +1 -0
  354. package/scss/awesome-stylesheet.scss +1 -0
  355. package/scss/base/_awesome-partial.scss +1 -0
  356. package/scss/base/_index.scss +1 -0
  357. package/scss/base/_interaction-states.scss +1 -0
  358. package/scss/base/_link.scss +1 -0
  359. package/scss/base/index.scss +1 -0
  360. package/scss/interaction-state/_active.scss +1 -0
  361. package/scss/interaction-state/_focus.scss +1 -0
  362. package/scss/interaction-state/_hover.scss +1 -0
  363. package/scss/interaction-state/_index.scss +1 -0
  364. package/scss/interaction-state/_interaction-state.utilities.scss +1 -0
  365. package/scss/interaction-state/_layer.scss +1 -0
  366. package/scss/interaction-state/_state-layer.scss +1 -0
  367. package/scss/interaction-state/_utilities.scss +1 -0
  368. package/scss/interaction-state/ionic/_active.scss +1 -0
  369. package/scss/interaction-state/ionic/_hover.scss +1 -0
  370. package/scss/interaction-state/ionic/_index.scss +1 -0
  371. package/scss/interaction-states/_hover.scss +1 -0
  372. package/scss/interaction-states/_index.scss +1 -0
  373. package/scss/opt-out/_index.scss +1 -0
  374. package/scss/opt-out/_link.scss +1 -0
  375. package/testing-base/kirbydesign-designsystem-testing-base.d.ts +1 -58
  376. package/testing-base/lib/components/index.d.ts +55 -0
  377. package/testing-base/lib/components/mock.accordion-item.component.d.ts +3 -0
  378. package/testing-base/lib/components/mock.action-sheet.component.d.ts +3 -0
  379. package/testing-base/lib/components/mock.app.component.d.ts +3 -0
  380. package/testing-base/lib/components/mock.avatar.component.d.ts +4 -1
  381. package/testing-base/lib/components/mock.button.component.d.ts +4 -1
  382. package/testing-base/lib/components/mock.calendar.component.d.ts +4 -0
  383. package/testing-base/lib/components/mock.card-footer.component.d.ts +3 -0
  384. package/testing-base/lib/components/mock.card-header.component.d.ts +3 -0
  385. package/testing-base/lib/components/mock.card.component.d.ts +3 -0
  386. package/testing-base/lib/components/mock.chart-deprecated.component.d.ts +3 -0
  387. package/testing-base/lib/components/mock.chart.component.d.ts +5 -3
  388. package/testing-base/lib/components/mock.checkbox.component.d.ts +3 -0
  389. package/testing-base/lib/components/mock.chip.component.d.ts +3 -0
  390. package/testing-base/lib/components/mock.divider.component.d.ts +3 -0
  391. package/testing-base/lib/components/mock.dropdown.component.d.ts +4 -1
  392. package/testing-base/lib/components/mock.empty-state.component.d.ts +3 -0
  393. package/testing-base/lib/components/mock.fab-sheet.component.d.ts +3 -0
  394. package/testing-base/lib/components/mock.flag.component.d.ts +3 -0
  395. package/testing-base/lib/components/mock.form-field-message.component.d.ts +3 -0
  396. package/testing-base/lib/components/mock.form-field.component.d.ts +3 -0
  397. package/testing-base/lib/components/mock.grid.component.d.ts +3 -0
  398. package/testing-base/lib/components/mock.icon.component.d.ts +4 -1
  399. package/testing-base/lib/components/mock.input-counter.component.d.ts +3 -0
  400. package/testing-base/lib/components/mock.input.component.d.ts +4 -1
  401. package/testing-base/lib/components/mock.item-group.component.d.ts +3 -0
  402. package/testing-base/lib/components/mock.item-sliding.component.d.ts +3 -0
  403. package/testing-base/lib/components/mock.item.component.d.ts +4 -1
  404. package/testing-base/lib/components/mock.label.component.d.ts +3 -0
  405. package/testing-base/lib/components/mock.list-experimental.component.d.ts +3 -0
  406. package/testing-base/lib/components/mock.list-header.component.d.ts +3 -0
  407. package/testing-base/lib/components/mock.list-item.component.d.ts +3 -0
  408. package/testing-base/lib/components/mock.list-section-header.component.d.ts +3 -0
  409. package/testing-base/lib/components/mock.list.component.d.ts +3 -0
  410. package/testing-base/lib/components/mock.loading-overlay.component.d.ts +3 -0
  411. package/testing-base/lib/components/mock.modal-footer.component.d.ts +3 -0
  412. package/testing-base/lib/components/mock.page-footer.component.d.ts +3 -0
  413. package/testing-base/lib/components/mock.page.component.d.ts +24 -0
  414. package/testing-base/lib/components/mock.popover.component.d.ts +4 -1
  415. package/testing-base/lib/components/mock.progress-circle.component.d.ts +3 -0
  416. package/testing-base/lib/components/mock.radio-group.component.d.ts +3 -0
  417. package/testing-base/lib/components/mock.radio.component.d.ts +3 -0
  418. package/testing-base/lib/components/mock.range.component.d.ts +3 -0
  419. package/testing-base/lib/components/mock.reorder-list.component.d.ts +3 -0
  420. package/testing-base/lib/components/mock.router-outlet.component.d.ts +3 -0
  421. package/testing-base/lib/components/mock.section-header.component.d.ts +3 -0
  422. package/testing-base/lib/components/mock.segmented-control.component.d.ts +4 -1
  423. package/testing-base/lib/components/mock.slide-button.component.d.ts +3 -0
  424. package/testing-base/lib/components/mock.slides.component.d.ts +11 -0
  425. package/testing-base/lib/components/mock.spinner.component.d.ts +3 -0
  426. package/testing-base/lib/components/mock.tab-button.component.d.ts +3 -0
  427. package/testing-base/lib/components/mock.tabs.component.d.ts +3 -0
  428. package/testing-base/lib/components/mock.textarea.component.d.ts +3 -0
  429. package/testing-base/lib/components/mock.toggle-button.component.d.ts +3 -0
  430. package/testing-base/lib/components/mock.toggle.component.d.ts +3 -0
  431. package/testing-base/lib/components/mock.web-component-proxies.component.d.ts +8 -0
  432. package/testing-base/lib/directives/index.d.ts +3 -0
  433. package/testing-base/lib/directives/mock.accordion.directive.d.ts +3 -0
  434. package/testing-base/lib/directives/mock.fit-heading.directive.d.ts +3 -0
  435. package/testing-base/lib/directives/mock.theme-color.directive.d.ts +3 -0
  436. package/testing-base/lib/index.d.ts +3 -0
  437. package/testing-base/lib/kirby-testing-base.module.d.ts +61 -0
  438. package/testing-base/package.json +0 -1
  439. package/testing-base/public_api.d.ts +1 -1
  440. package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.d.ts +1 -1
  441. package/testing-jasmine/lib/kirby-testing.module.d.ts +5 -0
  442. package/testing-jasmine/package.json +0 -1
  443. package/testing-jest/kirbydesign-designsystem-testing-jest.d.ts +1 -1
  444. package/testing-jest/lib/kirby-testing.module.d.ts +5 -0
  445. package/testing-jest/package.json +0 -1
  446. package/README.md +0 -7
  447. package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +0 -2
  448. package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +0 -1
  449. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js +0 -16
  450. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js.map +0 -1
  451. package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js +0 -16
  452. package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js.map +0 -1
  453. package/bundles/kirbydesign-designsystem.umd.min.js +0 -2
  454. package/bundles/kirbydesign-designsystem.umd.min.js.map +0 -1
  455. package/esm2015/index.metadata.json +0 -1
  456. package/esm2015/kirbydesign-designsystem.metadata.json +0 -1
  457. package/esm2015/lib/components/accordion/accordion-item.component.metadata.json +0 -1
  458. package/esm2015/lib/components/accordion/accordion.directive.metadata.json +0 -1
  459. package/esm2015/lib/components/accordion/index.metadata.json +0 -1
  460. package/esm2015/lib/components/angular-component-lib/utils.metadata.json +0 -1
  461. package/esm2015/lib/components/app/app.component.metadata.json +0 -1
  462. package/esm2015/lib/components/app/app.module.metadata.json +0 -1
  463. package/esm2015/lib/components/app/index.metadata.json +0 -1
  464. package/esm2015/lib/components/avatar/avatar.component.metadata.json +0 -1
  465. package/esm2015/lib/components/button/button.component.metadata.json +0 -1
  466. package/esm2015/lib/components/calendar/calendar.component.metadata.json +0 -1
  467. package/esm2015/lib/components/calendar/helpers/calendar-cell.model.metadata.json +0 -1
  468. package/esm2015/lib/components/calendar/helpers/calendar-options.model.metadata.json +0 -1
  469. package/esm2015/lib/components/calendar/helpers/calendar.helper.metadata.json +0 -1
  470. package/esm2015/lib/components/calendar/index.metadata.json +0 -1
  471. package/esm2015/lib/components/calendar/options/calendar-year-navigator-config.metadata.json +0 -1
  472. package/esm2015/lib/components/card/card-footer/card-footer.component.metadata.json +0 -1
  473. package/esm2015/lib/components/card/card-header/card-header.component.metadata.json +0 -1
  474. package/esm2015/lib/components/card/card.component.metadata.json +0 -1
  475. package/esm2015/lib/components/card/index.metadata.json +0 -1
  476. package/esm2015/lib/components/chart/chart-js/chart-js.service.metadata.json +0 -1
  477. package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.metadata.json +0 -1
  478. package/esm2015/lib/components/chart/chart-js/configured-chart-js.metadata.json +0 -1
  479. package/esm2015/lib/components/chart/chart.component.metadata.json +0 -1
  480. package/esm2015/lib/components/chart/chart.module.metadata.json +0 -1
  481. package/esm2015/lib/components/chart/chart.types.metadata.json +0 -1
  482. package/esm2015/lib/components/chart/configs/annotations.config.metadata.json +0 -1
  483. package/esm2015/lib/components/chart/configs/chart-config.service.metadata.json +0 -1
  484. package/esm2015/lib/components/chart/configs/global-defaults.config.metadata.json +0 -1
  485. package/esm2015/lib/components/chart/configs/interaction-functions-extensions.config.metadata.json +0 -1
  486. package/esm2015/lib/components/chart/configs/shared.utils.metadata.json +0 -1
  487. package/esm2015/lib/components/chart/configs/type.config.metadata.json +0 -1
  488. package/esm2015/lib/components/chart/index.metadata.json +0 -1
  489. package/esm2015/lib/components/chart-deprecated/chart-deprecated-helper.metadata.json +0 -1
  490. package/esm2015/lib/components/chart-deprecated/chart-deprecated-type.metadata.json +0 -1
  491. package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.metadata.json +0 -1
  492. package/esm2015/lib/components/chart-deprecated/index.metadata.json +0 -1
  493. package/esm2015/lib/components/chart-deprecated/options/activitygauge.metadata.json +0 -1
  494. package/esm2015/lib/components/chart-deprecated/options/areaspline.metadata.json +0 -1
  495. package/esm2015/lib/components/chart-deprecated/options/bar.metadata.json +0 -1
  496. package/esm2015/lib/components/chart-deprecated/options/column.metadata.json +0 -1
  497. package/esm2015/lib/components/chart-deprecated/options/donut.metadata.json +0 -1
  498. package/esm2015/lib/components/chart-deprecated/options/timeseries.metadata.json +0 -1
  499. package/esm2015/lib/components/checkbox/checkbox.component.metadata.json +0 -1
  500. package/esm2015/lib/components/chip/chip.component.metadata.json +0 -1
  501. package/esm2015/lib/components/divider/divider.component.metadata.json +0 -1
  502. package/esm2015/lib/components/dropdown/dropdown.component.metadata.json +0 -1
  503. package/esm2015/lib/components/dropdown/dropdown.types.metadata.json +0 -1
  504. package/esm2015/lib/components/dropdown/keyboard-handler.service.metadata.json +0 -1
  505. package/esm2015/lib/components/empty-state/empty-state.component.metadata.json +0 -1
  506. package/esm2015/lib/components/fab-sheet/fab-sheet.component.metadata.json +0 -1
  507. package/esm2015/lib/components/flag/flag.component.metadata.json +0 -1
  508. package/esm2015/lib/components/form-field/directives/date/date-input.directive.metadata.json +0 -1
  509. package/esm2015/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.metadata.json +0 -1
  510. package/esm2015/lib/components/form-field/form-field-message/form-field-message.component.metadata.json +0 -1
  511. package/esm2015/lib/components/form-field/form-field.component.metadata.json +0 -1
  512. package/esm2015/lib/components/form-field/index.metadata.json +0 -1
  513. package/esm2015/lib/components/form-field/input/input.component.metadata.json +0 -1
  514. package/esm2015/lib/components/form-field/input-counter/input-counter.component.metadata.json +0 -1
  515. package/esm2015/lib/components/form-field/textarea/textarea.component.metadata.json +0 -1
  516. package/esm2015/lib/components/grid/breakpoint-helper.service.metadata.json +0 -1
  517. package/esm2015/lib/components/grid/grid-card-configuration.metadata.json +0 -1
  518. package/esm2015/lib/components/grid/grid.component.metadata.json +0 -1
  519. package/esm2015/lib/components/icon/icon-registry.service.metadata.json +0 -1
  520. package/esm2015/lib/components/icon/icon-settings.metadata.json +0 -1
  521. package/esm2015/lib/components/icon/icon.component.metadata.json +0 -1
  522. package/esm2015/lib/components/icon/icon.module.metadata.json +0 -1
  523. package/esm2015/lib/components/icon/index.metadata.json +0 -1
  524. package/esm2015/lib/components/icon/kirby-icon-settings.metadata.json +0 -1
  525. package/esm2015/lib/components/index.metadata.json +0 -1
  526. package/esm2015/lib/components/item/index.metadata.json +0 -1
  527. package/esm2015/lib/components/item/item.component.metadata.json +0 -1
  528. package/esm2015/lib/components/item/item.module.metadata.json +0 -1
  529. package/esm2015/lib/components/item/label/label.component.metadata.json +0 -1
  530. package/esm2015/lib/components/item-group/item-group.component.metadata.json +0 -1
  531. package/esm2015/lib/components/item-sliding/index.metadata.json +0 -1
  532. package/esm2015/lib/components/item-sliding/item-sliding.component.metadata.json +0 -1
  533. package/esm2015/lib/components/item-sliding/item-sliding.types.metadata.json +0 -1
  534. package/esm2015/lib/components/list/directives/infinite-scroll.directive.metadata.json +0 -1
  535. package/esm2015/lib/components/list/directives/list-item-color.directive.metadata.json +0 -1
  536. package/esm2015/lib/components/list/directives/scroll.model.metadata.json +0 -1
  537. package/esm2015/lib/components/list/helpers/list-helper.metadata.json +0 -1
  538. package/esm2015/lib/components/list/index.metadata.json +0 -1
  539. package/esm2015/lib/components/list/list-experimental/list-experimental.component.metadata.json +0 -1
  540. package/esm2015/lib/components/list/list-header/list-header.component.metadata.json +0 -1
  541. package/esm2015/lib/components/list/list-item/list-item.component.metadata.json +0 -1
  542. package/esm2015/lib/components/list/list-section-header/list-section-header.component.metadata.json +0 -1
  543. package/esm2015/lib/components/list/list-swipe-action.type.metadata.json +0 -1
  544. package/esm2015/lib/components/list/list.component.metadata.json +0 -1
  545. package/esm2015/lib/components/list/list.directive.metadata.json +0 -1
  546. package/esm2015/lib/components/list/list.event.metadata.json +0 -1
  547. package/esm2015/lib/components/list/list.module.metadata.json +0 -1
  548. package/esm2015/lib/components/list/pipes/group-by.pipe.metadata.json +0 -1
  549. package/esm2015/lib/components/loading-overlay/index.metadata.json +0 -1
  550. package/esm2015/lib/components/loading-overlay/loading-overlay.component.metadata.json +0 -1
  551. package/esm2015/lib/components/loading-overlay/loading-overlay.service.metadata.json +0 -1
  552. package/esm2015/lib/components/modal/action-sheet/action-sheet.component.metadata.json +0 -1
  553. package/esm2015/lib/components/modal/action-sheet/config/action-sheet-config.metadata.json +0 -1
  554. package/esm2015/lib/components/modal/action-sheet/config/action-sheet-item.metadata.json +0 -1
  555. package/esm2015/lib/components/modal/alert/alert.component.metadata.json +0 -1
  556. package/esm2015/lib/components/modal/alert/config/alert-config.metadata.json +0 -1
  557. package/esm2015/lib/components/modal/footer/modal-footer.component.metadata.json +0 -1
  558. package/esm2015/lib/components/modal/index.metadata.json +0 -1
  559. package/esm2015/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.metadata.json +0 -1
  560. package/esm2015/lib/components/modal/modal-wrapper/config/drawer-supplementary-action.metadata.json +0 -1
  561. package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.helper.metadata.json +0 -1
  562. package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.metadata.json +0 -1
  563. package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.metadata.json +0 -1
  564. package/esm2015/lib/components/modal/services/action-sheet.helper.metadata.json +0 -1
  565. package/esm2015/lib/components/modal/services/alert.helper.metadata.json +0 -1
  566. package/esm2015/lib/components/modal/services/modal-animation-builder.service.metadata.json +0 -1
  567. package/esm2015/lib/components/modal/services/modal-navigation.service.metadata.json +0 -1
  568. package/esm2015/lib/components/modal/services/modal.controller.metadata.json +0 -1
  569. package/esm2015/lib/components/modal/services/modal.helper.metadata.json +0 -1
  570. package/esm2015/lib/components/modal/services/modal.interfaces.metadata.json +0 -1
  571. package/esm2015/lib/components/page/index.metadata.json +0 -1
  572. package/esm2015/lib/components/page/page-footer/page-footer.component.metadata.json +0 -1
  573. package/esm2015/lib/components/page/page.component.metadata.json +0 -1
  574. package/esm2015/lib/components/page/page.module.metadata.json +0 -1
  575. package/esm2015/lib/components/popover/popover.component.metadata.json +0 -1
  576. package/esm2015/lib/components/progress-circle/progress-circle-ring.component.metadata.json +0 -1
  577. package/esm2015/lib/components/progress-circle/progress-circle.component.metadata.json +0 -1
  578. package/esm2015/lib/components/radio/index.metadata.json +0 -1
  579. package/esm2015/lib/components/radio/radio-group/radio-group.component.metadata.json +0 -1
  580. package/esm2015/lib/components/radio/radio.component.metadata.json +0 -1
  581. package/esm2015/lib/components/range/range.component.metadata.json +0 -1
  582. package/esm2015/lib/components/reorder-list/index.metadata.json +0 -1
  583. package/esm2015/lib/components/reorder-list/reorder-event.metadata.json +0 -1
  584. package/esm2015/lib/components/reorder-list/reorder-list.component.metadata.json +0 -1
  585. package/esm2015/lib/components/router-outlet/index.metadata.json +0 -1
  586. package/esm2015/lib/components/router-outlet/router-outlet.component.metadata.json +0 -1
  587. package/esm2015/lib/components/router-outlet/router-outlet.module.metadata.json +0 -1
  588. package/esm2015/lib/components/section-header/section-header.component.metadata.json +0 -1
  589. package/esm2015/lib/components/segmented-control/segment-item.metadata.json +0 -1
  590. package/esm2015/lib/components/segmented-control/segmented-control.component.metadata.json +0 -1
  591. package/esm2015/lib/components/shared/component-configuration.metadata.json +0 -1
  592. package/esm2015/lib/components/shared/component-loader.directive.metadata.json +0 -1
  593. package/esm2015/lib/components/shared/dynamic-component.metadata.json +0 -1
  594. package/esm2015/lib/components/shared/index.metadata.json +0 -1
  595. package/esm2015/lib/components/shared/resize-observer/resize-observer.factory.metadata.json +0 -1
  596. package/esm2015/lib/components/shared/resize-observer/resize-observer.service.metadata.json +0 -1
  597. package/esm2015/lib/components/shared/resize-observer/types/resize-observer-callback.metadata.json +0 -1
  598. package/esm2015/lib/components/shared/resize-observer/types/resize-observer-entry.metadata.json +0 -1
  599. package/esm2015/lib/components/shared/resize-observer/types/resize-observer.metadata.json +0 -1
  600. package/esm2015/lib/components/slide-button/slide-button.component.metadata.json +0 -1
  601. package/esm2015/lib/components/slides/slides.component.metadata.json +0 -1
  602. package/esm2015/lib/components/spinner/spinner.component.metadata.json +0 -1
  603. package/esm2015/lib/components/spinner/spinner.module.metadata.json +0 -1
  604. package/esm2015/lib/components/stock-chart-deprecated/index.metadata.json +0 -1
  605. package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.metadata.json +0 -1
  606. package/esm2015/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.metadata.json +0 -1
  607. package/esm2015/lib/components/tabs/index.metadata.json +0 -1
  608. package/esm2015/lib/components/tabs/tab-button/tab-button.component.metadata.json +0 -1
  609. package/esm2015/lib/components/tabs/tab-button/tab-button.events.metadata.json +0 -1
  610. package/esm2015/lib/components/tabs/tabs.component.metadata.json +0 -1
  611. package/esm2015/lib/components/tabs/tabs.module.metadata.json +0 -1
  612. package/esm2015/lib/components/tabs/tabs.service.metadata.json +0 -1
  613. package/esm2015/lib/components/toast/config/toast-config.metadata.json +0 -1
  614. package/esm2015/lib/components/toast/index.metadata.json +0 -1
  615. package/esm2015/lib/components/toast/services/toast.controller.metadata.json +0 -1
  616. package/esm2015/lib/components/toast/services/toast.helper.metadata.json +0 -1
  617. package/esm2015/lib/components/toggle/toggle.component.metadata.json +0 -1
  618. package/esm2015/lib/components/toggle-button/toggle-button.component.metadata.json +0 -1
  619. package/esm2015/lib/components/toggle-button/toggle-button.module.metadata.json +0 -1
  620. package/esm2015/lib/components/web-component-proxies.component.metadata.json +0 -1
  621. package/esm2015/lib/custom-elements-initializer.metadata.json +0 -1
  622. package/esm2015/lib/directives/element-as-button/element-as-button.directive.metadata.json +0 -1
  623. package/esm2015/lib/directives/fit-heading/fit-heading.directive.metadata.json +0 -1
  624. package/esm2015/lib/directives/fit-heading/fit-heading.module.metadata.json +0 -1
  625. package/esm2015/lib/directives/index.metadata.json +0 -1
  626. package/esm2015/lib/directives/key-handler/key-handler.directive.metadata.json +0 -1
  627. package/esm2015/lib/directives/modal-router-link/modal-router-link.directive.metadata.json +0 -1
  628. package/esm2015/lib/directives/theme-color/theme-color.directive.metadata.json +0 -1
  629. package/esm2015/lib/helpers/color-helper.metadata.json +0 -1
  630. package/esm2015/lib/helpers/deep-copy.metadata.json +0 -1
  631. package/esm2015/lib/helpers/design-token-helper.metadata.json +0 -1
  632. package/esm2015/lib/helpers/element-has-ancestor.metadata.json +0 -1
  633. package/esm2015/lib/helpers/index.metadata.json +0 -1
  634. package/esm2015/lib/helpers/line-clamp-helper.metadata.json +0 -1
  635. package/esm2015/lib/helpers/merge-deep.metadata.json +0 -1
  636. package/esm2015/lib/helpers/platform.service.metadata.json +0 -1
  637. package/esm2015/lib/helpers/string-helper.metadata.json +0 -1
  638. package/esm2015/lib/helpers/theme-color.type.metadata.json +0 -1
  639. package/esm2015/lib/helpers/unique-id-generator.helper.metadata.json +0 -1
  640. package/esm2015/lib/index.metadata.json +0 -1
  641. package/esm2015/lib/kirby.module.metadata.json +0 -1
  642. package/esm2015/lib/scss/scss-helper.metadata.json +0 -1
  643. package/esm2015/lib/types/window-ref.metadata.json +0 -1
  644. package/esm2015/testing-base/kirbydesign-designsystem-testing-base.metadata.json +0 -1
  645. package/esm2015/testing-base/lib/components/mock.accordion-item.component.metadata.json +0 -1
  646. package/esm2015/testing-base/lib/components/mock.action-sheet.component.metadata.json +0 -1
  647. package/esm2015/testing-base/lib/components/mock.app.component.metadata.json +0 -1
  648. package/esm2015/testing-base/lib/components/mock.avatar.component.metadata.json +0 -1
  649. package/esm2015/testing-base/lib/components/mock.button.component.metadata.json +0 -1
  650. package/esm2015/testing-base/lib/components/mock.calendar.component.metadata.json +0 -1
  651. package/esm2015/testing-base/lib/components/mock.card-footer.component.metadata.json +0 -1
  652. package/esm2015/testing-base/lib/components/mock.card-header.component.metadata.json +0 -1
  653. package/esm2015/testing-base/lib/components/mock.card.component.metadata.json +0 -1
  654. package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.metadata.json +0 -1
  655. package/esm2015/testing-base/lib/components/mock.chart.component.metadata.json +0 -1
  656. package/esm2015/testing-base/lib/components/mock.checkbox.component.metadata.json +0 -1
  657. package/esm2015/testing-base/lib/components/mock.chip.component.metadata.json +0 -1
  658. package/esm2015/testing-base/lib/components/mock.divider.component.metadata.json +0 -1
  659. package/esm2015/testing-base/lib/components/mock.dropdown.component.metadata.json +0 -1
  660. package/esm2015/testing-base/lib/components/mock.empty-state.component.metadata.json +0 -1
  661. package/esm2015/testing-base/lib/components/mock.fab-sheet.component.metadata.json +0 -1
  662. package/esm2015/testing-base/lib/components/mock.flag.component.metadata.json +0 -1
  663. package/esm2015/testing-base/lib/components/mock.form-field-message.component.metadata.json +0 -1
  664. package/esm2015/testing-base/lib/components/mock.form-field.component.metadata.json +0 -1
  665. package/esm2015/testing-base/lib/components/mock.grid.component.metadata.json +0 -1
  666. package/esm2015/testing-base/lib/components/mock.icon.component.metadata.json +0 -1
  667. package/esm2015/testing-base/lib/components/mock.input-counter.component.metadata.json +0 -1
  668. package/esm2015/testing-base/lib/components/mock.input.component.metadata.json +0 -1
  669. package/esm2015/testing-base/lib/components/mock.item-group.component.metadata.json +0 -1
  670. package/esm2015/testing-base/lib/components/mock.item-sliding.component.metadata.json +0 -1
  671. package/esm2015/testing-base/lib/components/mock.item.component.metadata.json +0 -1
  672. package/esm2015/testing-base/lib/components/mock.label.component.metadata.json +0 -1
  673. package/esm2015/testing-base/lib/components/mock.list-experimental.component.metadata.json +0 -1
  674. package/esm2015/testing-base/lib/components/mock.list-header.component.metadata.json +0 -1
  675. package/esm2015/testing-base/lib/components/mock.list-item.component.metadata.json +0 -1
  676. package/esm2015/testing-base/lib/components/mock.list-section-header.component.metadata.json +0 -1
  677. package/esm2015/testing-base/lib/components/mock.list.component.metadata.json +0 -1
  678. package/esm2015/testing-base/lib/components/mock.loading-overlay.component.metadata.json +0 -1
  679. package/esm2015/testing-base/lib/components/mock.modal-footer.component.metadata.json +0 -1
  680. package/esm2015/testing-base/lib/components/mock.page-footer.component.metadata.json +0 -1
  681. package/esm2015/testing-base/lib/components/mock.page.component.metadata.json +0 -1
  682. package/esm2015/testing-base/lib/components/mock.popover.component.metadata.json +0 -1
  683. package/esm2015/testing-base/lib/components/mock.progress-circle.component.metadata.json +0 -1
  684. package/esm2015/testing-base/lib/components/mock.radio-group.component.metadata.json +0 -1
  685. package/esm2015/testing-base/lib/components/mock.radio.component.metadata.json +0 -1
  686. package/esm2015/testing-base/lib/components/mock.range.component.metadata.json +0 -1
  687. package/esm2015/testing-base/lib/components/mock.reorder-list.component.metadata.json +0 -1
  688. package/esm2015/testing-base/lib/components/mock.router-outlet.component.metadata.json +0 -1
  689. package/esm2015/testing-base/lib/components/mock.section-header.component.metadata.json +0 -1
  690. package/esm2015/testing-base/lib/components/mock.segmented-control.component.metadata.json +0 -1
  691. package/esm2015/testing-base/lib/components/mock.slide-button.component.metadata.json +0 -1
  692. package/esm2015/testing-base/lib/components/mock.spinner.component.metadata.json +0 -1
  693. package/esm2015/testing-base/lib/components/mock.tab-button.component.metadata.json +0 -1
  694. package/esm2015/testing-base/lib/components/mock.tabs.component.metadata.json +0 -1
  695. package/esm2015/testing-base/lib/components/mock.textarea.component.metadata.json +0 -1
  696. package/esm2015/testing-base/lib/components/mock.toggle-button.component.metadata.json +0 -1
  697. package/esm2015/testing-base/lib/components/mock.toggle.component.metadata.json +0 -1
  698. package/esm2015/testing-base/lib/directives/mock.accordion.directive.metadata.json +0 -1
  699. package/esm2015/testing-base/lib/directives/mock.fit-heading.directive.metadata.json +0 -1
  700. package/esm2015/testing-base/lib/directives/mock.theme-color.directive.metadata.json +0 -1
  701. package/esm2015/testing-base/lib/kirby-testing-base.module.metadata.json +0 -1
  702. package/esm2015/testing-base/lib/mock-components.metadata.json +0 -1
  703. package/esm2015/testing-base/lib/mock-directives.metadata.json +0 -1
  704. package/esm2015/testing-base/public_api.metadata.json +0 -1
  705. package/esm2015/testing-jasmine/kirbydesign-designsystem-testing-jasmine.metadata.json +0 -1
  706. package/esm2015/testing-jasmine/lib/kirby-testing.module.metadata.json +0 -1
  707. package/esm2015/testing-jasmine/lib/mock-providers.metadata.json +0 -1
  708. package/esm2015/testing-jasmine/public_api.metadata.json +0 -1
  709. package/esm2015/testing-jest/kirbydesign-designsystem-testing-jest.metadata.json +0 -1
  710. package/esm2015/testing-jest/lib/kirby-testing.module.metadata.json +0 -1
  711. package/esm2015/testing-jest/lib/mock-providers.metadata.json +0 -1
  712. package/esm2015/testing-jest/public_api.metadata.json +0 -1
  713. package/kirbydesign-designsystem.metadata.json +0 -1
  714. package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +0 -1
  715. package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.metadata.json +0 -1
  716. package/testing-jest/kirbydesign-designsystem-testing-jest.metadata.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem.js","sources":["../../../../libs/designsystem/src/lib/animation/kirby-animation.ts","../../../../libs/designsystem/src/lib/components/router-outlet/router-outlet.component.ts","../../../../libs/designsystem/src/lib/components/modal/action-sheet/action-sheet.component.ts","../../../../libs/designsystem/src/lib/components/modal/services/action-sheet.helper.ts","../../../../libs/designsystem/src/lib/types/window-ref.ts","../../../../libs/designsystem/src/lib/components/modal/alert/alert.component.ts","../../../../libs/designsystem/src/lib/components/modal/services/alert.helper.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal-navigation.service.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.interfaces.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/config/modal-config.helper.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.ts","../../../../libs/designsystem/src/lib/helpers/platform.service.ts","../../../../libs/designsystem/src/lib/components/icon/icon-settings.ts","../../../../libs/designsystem/src/lib/components/icon/icon-registry.service.ts","../../../../libs/designsystem/src/lib/components/icon/kirby-icon-settings.ts","../../../../libs/designsystem/src/lib/components/icon/icon.component.ts","../../../../libs/designsystem/src/lib/components/button/button.component.ts","../../../../libs/designsystem/src/lib/components/shared/resize-observer/resize-observer.factory.ts","../../../../libs/designsystem/src/lib/components/shared/resize-observer/resize-observer.service.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/modal-wrapper.component.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal-animation-builder.service.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.helper.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.controller.ts","../../../../libs/designsystem/src/lib/components/app/app.component.ts","../../../../libs/designsystem/src/lib/components/app/app.module.ts","../../../../libs/designsystem/src/lib/components/avatar/avatar.component.ts","../../../../libs/designsystem/src/lib/components/card/card.component.ts","../../../../libs/designsystem/src/lib/components/card/card-footer/card-footer.component.ts","../../../../libs/designsystem/src/lib/components/card/card-header/card-header.component.ts","../../../../libs/designsystem/src/lib/helpers/merge-deep.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/chart-deprecated-helper.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/chart-deprecated-type.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/activitygauge.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/areaspline.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/bar.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/column.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/donut.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/timeseries.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/chart-deprecated.component.ts","../../../../libs/designsystem/src/lib/components/chart/chart.types.ts","../../../../libs/designsystem/src/lib/components/shared/component-loader.directive.ts","../../../../libs/designsystem/src/lib/helpers/deep-copy.ts","../../../../libs/designsystem/src/lib/helpers/element-has-ancestor.ts","../../../../libs/designsystem/src/lib/helpers/index.ts","../../../../libs/designsystem/src/lib/components/chart/configs/annotations.config.ts","../../../../libs/designsystem/src/lib/components/chart/configs/interaction-functions-extensions.config.ts","../../../../libs/designsystem/src/lib/components/chart/configs/type.config.ts","../../../../libs/designsystem/src/lib/components/chart/configs/chart-config.service.ts","../../../../libs/designsystem/src/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.ts","../../../../libs/designsystem/src/lib/components/chart/configs/shared.utils.ts","../../../../libs/designsystem/src/lib/components/chart/configs/global-defaults.config.ts","../../../../libs/designsystem/src/lib/components/chart/chart-js/configured-chart-js.ts","../../../../libs/designsystem/src/lib/components/chart/chart-js/chart-js.service.ts","../../../../libs/designsystem/src/lib/components/chart/chart.component.ts","../../../../libs/designsystem/src/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.ts","../../../../libs/designsystem/src/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.ts","../../../../libs/designsystem/src/lib/components/calendar/helpers/calendar.helper.ts","../../../../libs/designsystem/src/lib/components/calendar/calendar.component.ts","../../../../libs/designsystem/src/lib/components/item-sliding/item-sliding.component.ts","../../../../libs/designsystem/src/lib/helpers/unique-id-generator.helper.ts","../../../../libs/designsystem/src/lib/components/checkbox/checkbox.component.ts","../../../../libs/designsystem/src/lib/components/chip/chip.component.ts","../../../../libs/designsystem/src/lib/components/divider/divider.component.ts","../../../../libs/designsystem/src/lib/components/item/item.component.ts","../../../../libs/designsystem/src/lib/components/list/list.directive.ts","../../../../libs/designsystem/src/lib/components/popover/popover.component.ts","../../../../libs/designsystem/src/lib/components/dropdown/dropdown.types.ts","../../../../libs/designsystem/src/lib/components/dropdown/keyboard-handler.service.ts","../../../../libs/designsystem/src/lib/components/dropdown/dropdown.component.ts","../../../../libs/designsystem/src/lib/components/empty-state/empty-state.component.ts","../../../../libs/designsystem/src/lib/components/radio/radio.component.ts","../../../../libs/designsystem/src/lib/components/radio/radio-group/radio-group.component.ts","../../../../libs/designsystem/src/lib/components/form-field/input-counter/input-counter.component.ts","../../../../libs/designsystem/src/lib/components/form-field/input/input.component.ts","../../../../libs/designsystem/src/lib/components/form-field/textarea/textarea.component.ts","../../../../libs/designsystem/src/lib/components/form-field/form-field.component.ts","../../../../libs/designsystem/src/lib/components/form-field/form-field-message/form-field-message.component.ts","../../../../libs/designsystem/src/lib/components/form-field/directives/date/date-input.directive.ts","../../../../libs/designsystem/src/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.ts","../../../../libs/designsystem/src/lib/components/fab-sheet/fab-sheet.component.ts","../../../../libs/designsystem/src/lib/scss/scss-helper.ts","../../../../libs/designsystem/src/lib/components/grid/breakpoint-helper.service.ts","../../../../libs/designsystem/src/lib/components/grid/grid.component.ts","../../../../libs/designsystem/src/lib/components/grid/grid-card-configuration.ts","../../../../libs/designsystem/src/lib/components/icon/icon.module.ts","../../../../libs/designsystem/src/lib/components/item/label/label.component.ts","../../../../libs/designsystem/src/lib/components/item/item.module.ts","../../../../libs/designsystem/src/lib/components/item-group/item-group.component.ts","../../../../libs/designsystem/src/lib/components/spinner/spinner.component.ts","../../../../libs/designsystem/src/lib/components/loading-overlay/loading-overlay.service.ts","../../../../libs/designsystem/src/lib/components/loading-overlay/loading-overlay.component.ts","../../../../libs/designsystem/src/lib/components/list/directives/infinite-scroll.directive.ts","../../../../libs/designsystem/src/lib/components/list/helpers/list-helper.ts","../../../../libs/designsystem/src/lib/components/list/pipes/group-by.pipe.ts","../../../../libs/designsystem/src/lib/components/list/list.component.ts","../../../../libs/designsystem/src/lib/components/list/list-header/list-header.component.ts","../../../../libs/designsystem/src/lib/components/list/list-section-header/list-section-header.component.ts","../../../../libs/designsystem/src/lib/components/list/list-item/list-item.component.ts","../../../../libs/designsystem/src/lib/components/list/directives/list-item-color.directive.ts","../../../../libs/designsystem/src/lib/components/list/list-experimental/list-experimental.component.ts","../../../../libs/designsystem/src/lib/components/reorder-list/reorder-event.ts","../../../../libs/designsystem/src/lib/components/reorder-list/reorder-list.component.ts","../../../../libs/designsystem/src/lib/components/modal/footer/modal-footer.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tab-button/tab-button.events.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.service.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.component.ts","../../../../libs/designsystem/src/lib/components/page/page.component.ts","../../../../libs/designsystem/src/lib/components/page/page-footer/page-footer.component.ts","../../../../libs/designsystem/src/lib/helpers/line-clamp-helper.ts","../../../../libs/designsystem/src/lib/directives/fit-heading/fit-heading.directive.ts","../../../../libs/designsystem/src/lib/directives/fit-heading/fit-heading.module.ts","../../../../libs/designsystem/src/lib/components/spinner/spinner.module.ts","../../../../libs/designsystem/src/lib/components/page/page.module.ts","../../../../libs/designsystem/src/lib/components/router-outlet/router-outlet.module.ts","../../../../libs/designsystem/src/lib/components/section-header/section-header.component.ts","../../../../libs/designsystem/src/lib/components/segmented-control/segmented-control.component.ts","../../../../libs/designsystem/src/lib/components/slide-button/slide-button.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tab-button/tab-button.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.module.ts","../../../../libs/designsystem/src/lib/components/toast/services/toast.helper.ts","../../../../libs/designsystem/src/lib/components/toast/services/toast.controller.ts","../../../../libs/designsystem/src/lib/components/toggle/toggle.component.ts","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle.component.ts","../../../../libs/designsystem/src/lib/components/flag/flag.component.ts","../../../../libs/designsystem/src/lib/components/slides/slides.component.ts","../../../../libs/designsystem/src/lib/components/toggle-button/toggle-button.component.ts","../../../../libs/designsystem/src/lib/components/accordion/accordion.directive.ts","../../../../libs/designsystem/src/lib/components/accordion/accordion-item.component.ts","../../../../libs/designsystem/src/lib/components/range/range.component.ts","../../../../libs/designsystem/src/lib/directives/key-handler/key-handler.directive.ts","../../../../libs/designsystem/src/lib/directives/theme-color/theme-color.directive.ts","../../../../libs/designsystem/src/lib/components/angular-component-lib/utils.ts","../../../../libs/designsystem/src/lib/components/web-component-proxies.component.ts","../../../../libs/designsystem/src/lib/components/chart/chart.module.ts","../../../../libs/designsystem/src/lib/components/list/list.module.ts","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle-ring.component.ts","../../../../libs/designsystem/src/lib/components/toggle-button/toggle-button.module.ts","../../../../libs/designsystem/src/lib/custom-elements-initializer.ts","../../../../libs/designsystem/src/lib/directives/element-as-button/element-as-button.directive.ts","../../../../libs/designsystem/src/lib/directives/modal-router-link/modal-router-link.directive.ts","../../../../libs/designsystem/src/lib/kirby.module.ts","../../../../libs/designsystem/src/kirbydesign-designsystem.ts"],"sourcesContent":["import { DesignTokenHelper } from '@kirbydesign/core';\n\nexport namespace KirbyAnimation {\n export enum Duration {\n // Duration in milliseconds\n QUICK = parseInt(DesignTokenHelper.transitionDuration('quick')),\n SHORT = parseInt(DesignTokenHelper.transitionDuration('short')),\n LONG = parseInt(DesignTokenHelper.transitionDuration('long')),\n EXTRA_LONG = parseInt(DesignTokenHelper.transitionDuration('extraLong')),\n }\n export const Easing = DesignTokenHelper.transitionEasings();\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-router-outlet',\n templateUrl: './router-outlet.component.html',\n styleUrls: ['./router-outlet.component.scss'],\n})\nexport class RouterOutletComponent {\n @Input() main: boolean;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ActionSheetItem } from './config/action-sheet-item';\n\n@Component({\n selector: 'kirby-action-sheet',\n templateUrl: './action-sheet.component.html',\n styleUrls: ['./action-sheet.component.scss'],\n})\nexport class ActionSheetComponent {\n @Input() cancelButtonText = 'Cancel';\n @Input() hideCancel: boolean = false;\n @Input() disabled: boolean = false;\n @Input() header: string;\n @Input() subheader: string;\n @Input() items: Array<ActionSheetItem>;\n @Output() cancel = new EventEmitter();\n @Output() itemSelect: EventEmitter<ActionSheetItem> = new EventEmitter<ActionSheetItem>();\n\n onItemSelect(selection: ActionSheetItem) {\n this.itemSelect.emit(selection);\n }\n\n onCancel() {\n this.cancel.emit();\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\nimport { Subscription } from 'rxjs';\n\nimport { ActionSheetComponent } from '../action-sheet/action-sheet.component';\nimport { ActionSheetConfig } from '../action-sheet/config/action-sheet-config';\nimport { ActionSheetItem } from '../action-sheet/config/action-sheet-item';\n\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ActionSheetHelper {\n constructor(private ionicModalController: ModalController) {}\n\n public async showActionSheet(config: ActionSheetConfig): Promise<Overlay> {\n const cancel = new EventEmitter();\n const itemSelect = new EventEmitter<ActionSheetItem>();\n\n const ionModal = await this.ionicModalController.create({\n component: ActionSheetComponent,\n cssClass: ['kirby-overlay', 'kirby-action-sheet'],\n componentProps: {\n ...config,\n cancel: cancel,\n itemSelect: itemSelect,\n },\n backdropDismiss: true,\n });\n\n const cancelSubscription: Subscription = cancel.subscribe(() => ionModal.dismiss());\n const itemSelectSubscription: Subscription = itemSelect.subscribe((item) =>\n ionModal.dismiss(item)\n );\n const onDidDismiss = ionModal.onDidDismiss();\n onDidDismiss.then((_) => {\n cancelSubscription.unsubscribe();\n itemSelectSubscription.unsubscribe();\n });\n\n await ionModal.present();\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WindowRef {\n get nativeWindow(): any {\n return window;\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { WindowRef } from '../../../types/window-ref';\n\n@Component({\n selector: 'kirby-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n // tslint:disable-next-line: no-host-metadata-property\n host: { '[class.ion-page]': 'false' }, //Ensure ion-page class doesn't get applied by Ionic Modal Controller\n})\nexport class AlertComponent implements AfterViewInit {\n readonly BLUR_WRAPPER_DELAY_IN_MS = 50;\n @ViewChild('alertWrapper', { static: true }) private alertWrapper: ElementRef;\n private scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n\n title$: Observable<string>;\n @Input()\n set title(title: string | Observable<string>) {\n this.title$ = typeof title === 'string' ? of(title) : title;\n }\n\n message$: Observable<string>;\n @Input()\n set message(message: string & Observable<string>) {\n this.message$ = typeof message === 'string' ? of(message) : message;\n }\n\n @Input() iconName: string;\n @Input() iconThemeColor: string;\n @Input() okBtnText: string;\n @Input() okBtnIsDestructive: boolean;\n @Input() cancelBtnText: string;\n\n constructor(private elementRef: ElementRef<HTMLElement>, private windowRef: WindowRef) {}\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.alertWrapper.nativeElement.focus();\n this.alertWrapper.nativeElement.blur();\n }, this.BLUR_WRAPPER_DELAY_IN_MS);\n }\n\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n\n onCancel() {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n ionModalElement && ionModalElement.dismiss(false);\n }\n\n onOk() {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n ionModalElement && ionModalElement.dismiss(true);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\n\nimport { AlertConfig } from '../alert/config/alert-config';\nimport { AlertComponent } from '../alert/alert.component';\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class AlertHelper {\n constructor(private ionicModalController: ModalController) {}\n\n public async showAlert(config: AlertConfig): Promise<Overlay> {\n const ionModal = await this.ionicModalController.create({\n component: AlertComponent,\n componentProps: this.getComponentProps(config),\n cssClass: ['kirby-overlay', 'kirby-alert'],\n mode: 'ios',\n backdropDismiss: false,\n });\n\n await ionModal.present();\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n\n private getComponentProps(config: AlertConfig) {\n return {\n ...config,\n okBtnText: this.getOkBtnText(config),\n cancelBtnText: this.getCancelBtnText(config),\n okBtnIsDestructive: this.getOkBtnIsDestructive(config),\n iconName: config.icon && config.icon.name,\n iconThemeColor: config.icon && config.icon.themeColor,\n };\n }\n\n private getOkBtnText(config: AlertConfig) {\n let text: string;\n if (config.okBtnText) {\n console.warn(\n '`okBtnText` will be deprecated on next major version. Please use `okBtn` instead.'\n );\n text = config.okBtnText;\n }\n if (config.okBtn) {\n if (typeof config.okBtn === 'string') {\n text = config.okBtn;\n } else {\n text = config.okBtn.text;\n }\n }\n return text;\n }\n\n getOkBtnIsDestructive(config) {\n return typeof config.okBtn === 'object' ? config.okBtn.isDestructive : undefined;\n }\n\n private getCancelBtnText(config: AlertConfig) {\n if (config.cancelBtnText) {\n console.warn(\n '`cancelBtnText` will be deprecated on next major version. Please use `cancelBtn` instead.'\n );\n }\n return config.cancelBtn || config.cancelBtnText;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Params, Route, Router, Routes } from '@angular/router';\nimport { EMPTY, Observable } from 'rxjs';\nimport { filter, first, map, pairwise, startWith } from 'rxjs/operators';\n\nimport { ModalRouteActivation } from './modal.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalNavigationService {\n constructor(private router: Router, private route: ActivatedRoute) {}\n\n isModalRoute(url: string): boolean {\n return url.includes('(modal:');\n }\n\n private getCurrentActivatedRoute(): ActivatedRoute {\n let childRoute = this.route.root;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n return childRoute;\n }\n\n private async getModalRoutes(\n routeConfig: Routes[],\n moduleRootRoutePath?: string\n ): Promise<string[]> {\n const flattenedRoutes: Routes = [].concat(...routeConfig);\n let modalRoutes: string[] = [];\n const moduleRootPaths = await this.getModuleRootPath(flattenedRoutes, moduleRootRoutePath);\n if (moduleRootPaths) {\n modalRoutes = this.getModalRoutePaths(flattenedRoutes, moduleRootPaths);\n }\n return modalRoutes;\n }\n\n private async getModuleRootPath(routes: Routes, moduleRootRoutePath?: string): Promise<string[]> {\n if (moduleRootRoutePath) {\n const trimmedPaths = moduleRootRoutePath\n .trim()\n .split('/')\n .filter((path) => !!path);\n const rootPath = [''];\n return rootPath.concat(trimmedPaths);\n }\n\n const currentRoutePaths = await this.getCurrentRoutePaths();\n const moduleRootPaths = this.getRoutePathsWithoutChildSegments(currentRoutePaths, routes);\n return moduleRootPaths;\n }\n\n private async getCurrentRoutePaths(): Promise<string[]> {\n const rootPath = [''];\n const currentNavigation = this.router.getCurrentNavigation();\n\n if (!this.router.navigated && !currentNavigation) {\n // If router hasn't navigated yet and we are not in the middle of navigating, assume root:\n return rootPath;\n }\n\n if (currentNavigation) {\n // Wait for current navigation to finish:\n await this.navigationEndListener$.pipe(first()).toPromise();\n }\n\n let childRoute = this.route.snapshot.root;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n const currentBackdropRoutePath = childRoute.pathFromRoot.filter(\n (route) => route.outlet !== 'modal'\n );\n\n return rootPath.concat(\n ...currentBackdropRoutePath.map((route) =>\n route.url.filter((segment) => !!segment.path).map((segment) => segment.path)\n )\n );\n }\n\n private getRoutePathsWithoutChildSegments(routePaths: string[], routes: Routes): string[] {\n if (!routePaths.length) return routePaths;\n\n const matchedChildRoute = this.findChildRouteForUrl(routePaths.join('/'), routes);\n\n if (!matchedChildRoute) return routePaths;\n\n const startSlashRegex = /^\\//;\n const relativeChildRoute = matchedChildRoute.replace(startSlashRegex, '');\n const childSegmentCount = relativeChildRoute.split('/').length;\n const routePathsWithoutChildSegments = routePaths.slice(0, -childSegmentCount); // Remove child segments from end of route path array\n return routePathsWithoutChildSegments;\n }\n\n private findChildRouteForUrl(url: string, routes: Routes) {\n const moduleRelativePaths = this.getRoutePaths(routes, [''])\n .sort()\n .reverse(); // Ensure child paths are evaluated first\n let matchedChildRoute = moduleRelativePaths.find((path) => url.endsWith(path));\n if (!matchedChildRoute) {\n // No static child route found matching current route - look for child route with url params:\n const exactMatch = false;\n matchedChildRoute = moduleRelativePaths.find(\n (path) =>\n path.includes('/:') && this.pathContainsChildRouteWithUrlParams(url, path, exactMatch)\n );\n }\n return matchedChildRoute;\n }\n\n private pathContainsChildRouteWithUrlParams(\n path: string,\n childRouteWithUrlParams: string,\n exactMatch: boolean\n ) {\n const pathSegments = path.split('/');\n const startSlashRegex = /^\\//;\n let childRouteToMatch = childRouteWithUrlParams;\n if (!exactMatch) {\n const relativeChildRoute = childRouteWithUrlParams.replace(startSlashRegex, '');\n childRouteToMatch = relativeChildRoute;\n }\n const childRouteSegments = childRouteToMatch.split('/');\n // Match each child route segment against url\n // Match backwards from end to start of child route, i.e. \"url ends with child route\":\n const pathContainsChildRoute = childRouteSegments.reverse().every((childRouteSegment) => {\n const pathSegment = pathSegments.pop();\n // url params (e.g. `/:id/`) are treated as a match:\n return childRouteSegment.startsWith(':') || childRouteSegment === pathSegment;\n });\n if (exactMatch) {\n // Only match if we've reached the start of the url to match against:\n return pathSegments.length === 0 && pathContainsChildRoute;\n }\n return pathContainsChildRoute;\n }\n\n private getRoutePaths(routes: Routes, parentPath: string[]): string[] {\n return Array.isArray(routes)\n ? ([] as string[]).concat(...routes.map((route) => this.getRoutePath(route, parentPath)))\n : [];\n }\n\n private getRoutePath(route: Route, parentPath: string[]): string[] {\n const routes: string[] = [];\n if (!!route.outlet) return routes; // Don't return relative paths for outlet routes\n\n const currentPath = [...parentPath];\n if (!!route.path) {\n currentPath.push(route.path);\n routes.push(currentPath.join('/'));\n }\n\n return routes.concat(this.getRoutePaths(route.children, currentPath));\n }\n\n private getModalRoutePath(route: Route, parentPath: string[]): string[] {\n const modalOutletName = 'modal';\n if (!!route.path && route.outlet === modalOutletName) {\n const modalOutletPath = `(${modalOutletName}:${route.path})`;\n const modalRoutePath = [...parentPath, modalOutletPath].join('/');\n return [modalRoutePath];\n }\n const currentPath = [...parentPath];\n if (!!route.path) {\n currentPath.push(route.path);\n }\n return ([] as string[]).concat(...this.getModalRoutePaths(route.children, currentPath));\n }\n\n private getModalRoutePaths(routes: Routes, parentPath: string[]): string[] {\n return Array.isArray(routes)\n ? ([] as string[]).concat(...routes.map((route) => this.getModalRoutePath(route, parentPath)))\n : [];\n }\n\n private isNewModalWindow(navigationEnd: NavigationEnd): boolean {\n const currentNavigation = this.router.getCurrentNavigation();\n if (!currentNavigation || !currentNavigation.previousNavigation) {\n return true;\n }\n const previousRoutePath = (\n currentNavigation.previousNavigation.finalUrl ||\n currentNavigation.previousNavigation.extractedUrl\n ).toString();\n const wasModalRoute = this.isModalRoute(previousRoutePath);\n const isModalRoute = this.isModalRoute(navigationEnd.urlAfterRedirects);\n if (!wasModalRoute && isModalRoute) {\n return true;\n }\n\n const currentModalRouteParent = navigationEnd.urlAfterRedirects.split('/(modal:')[0];\n const previousModalRouteParent = previousRoutePath.split('/(modal:')[0];\n\n return previousModalRouteParent !== currentModalRouteParent;\n }\n\n private navigationEndListener$ = this.router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd)\n );\n\n private async waitForCurrentThenGetNavigationEndStream(): Promise<Observable<NavigationEnd>> {\n if (this.router.getCurrentNavigation()) {\n const currentNavigationEnd = await this.navigationEndListener$.pipe(first()).toPromise();\n return this.navigationEndListener$.pipe(startWith(currentNavigationEnd));\n }\n return this.navigationEndListener$;\n }\n\n private modalRouteActivatedFor(\n navigationEnd$: Observable<NavigationEnd>,\n modalRouteSet: Set<string>,\n modalRoutesContainsUrlParams: boolean\n ): Observable<ModalRouteActivation> {\n return navigationEnd$.pipe(\n filter((navigationEnd) =>\n this.modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams)\n ),\n map((navigationEnd) => ({\n route: this.getCurrentActivatedRoute(),\n isNewModal: this.isNewModalWindow(navigationEnd),\n }))\n );\n }\n\n private modalRouteDeactivatedFor(\n navigationEnd$: Observable<NavigationEnd>,\n modalRouteSet: Set<string>,\n modalRoutesContainsUrlParams: boolean\n ): Observable<boolean> {\n return navigationEnd$.pipe(\n pairwise(),\n filter(([prevNavigation, _]) =>\n this.modalRouteSetContainsPath(modalRouteSet, prevNavigation, modalRoutesContainsUrlParams)\n ), // Only emit if previous route was modal\n map(([_, currentNavigation]) => {\n const isNewModalRoute = this.isModalRoute(currentNavigation.urlAfterRedirects);\n // Deactivate modal route if new route is NOT modal OR is outside current parent route:\n return !isNewModalRoute || this.isNewModalWindow(currentNavigation);\n }),\n filter((isDeactivation) => isDeactivation)\n );\n }\n\n private modalRouteSetContainsPath(\n modalRouteSet: Set<string>,\n navigationEnd: NavigationEnd,\n modalRoutesContainsUrlParams: boolean\n ) {\n const pathname = navigationEnd.urlAfterRedirects.split('?')[0];\n let hasRoute = modalRouteSet.has(pathname);\n if (!hasRoute && modalRoutesContainsUrlParams) {\n // Use `for ... of` instead of `forEach` so we can break out of the loop if route is found:\n for (let route of modalRouteSet) {\n const exactMatch = true;\n const routeMatchesPath = this.pathContainsChildRouteWithUrlParams(\n pathname,\n route,\n exactMatch\n );\n if (routeMatchesPath) {\n hasRoute = true;\n break;\n }\n }\n }\n return hasRoute;\n }\n\n async getModalNavigation(\n routeConfig: Routes[],\n moduleRootRoutePath?: string\n ): Promise<{ activated$: Observable<ModalRouteActivation>; deactivated$: Observable<boolean> }> {\n if (Array.isArray(routeConfig)) {\n const navigationEnd$ = await this.waitForCurrentThenGetNavigationEndStream();\n const modalRoutes = await this.getModalRoutes(routeConfig, moduleRootRoutePath);\n const hasModalRoutes = modalRoutes.length > 0;\n if (hasModalRoutes) {\n const modalRoutesContainsUrlParams = modalRoutes.some((route) => route.includes('/:'));\n const modalRouteSet = new Set(modalRoutes);\n const activated$ = this.modalRouteActivatedFor(\n navigationEnd$,\n modalRouteSet,\n modalRoutesContainsUrlParams\n );\n const deactivated$ = this.modalRouteDeactivatedFor(\n navigationEnd$,\n modalRouteSet,\n modalRoutesContainsUrlParams\n );\n return { activated$, deactivated$ };\n }\n }\n return { activated$: EMPTY, deactivated$: EMPTY };\n }\n\n async navigateToModal(path: string | string[], queryParams?: Params): Promise<boolean> {\n const commands = Array.isArray(path) ? path : path.split('/');\n const childPath = commands.pop();\n const result = await this.router.navigate([...commands, { outlets: { modal: [childPath] } }], {\n queryParams,\n relativeTo: this.getCurrentActivatedRoute(),\n });\n return result;\n }\n\n async navigateWithinModal(relativePath: string, queryParams?: Params): Promise<boolean> {\n return this.router.navigate([relativePath], {\n queryParams,\n relativeTo: this.getCurrentActivatedRoute(),\n });\n }\n\n async navigateOutOfModalOutlet(): Promise<boolean> {\n let result = Promise.resolve(true);\n const currentActivatedRoute = this.getCurrentActivatedRoute();\n if (currentActivatedRoute.outlet === 'modal') {\n const parentRoute = this.getBackdropRoute(currentActivatedRoute);\n result = this.router.navigate(['./'], {\n relativeTo: parentRoute,\n });\n }\n return result;\n }\n\n private getBackdropRoute(currentActivatedRoute: ActivatedRoute) {\n let parentRoute = currentActivatedRoute.parent;\n while (parentRoute && !parentRoute.component && !!parentRoute.parent) {\n parentRoute = parentRoute.parent;\n }\n return parentRoute;\n }\n}\n","import { ActivatedRoute } from '@angular/router';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\n\nexport interface OverlayEventDetail<T = any> {\n data?: T;\n role?: string;\n}\n\nexport interface Overlay {\n dismiss: (data?: any) => Promise<boolean>;\n onWillDismiss: Promise<OverlayEventDetail>;\n onDidDismiss: Promise<OverlayEventDetail>;\n}\n\nexport interface ModalRouteActivation {\n route: ActivatedRoute;\n isNewModal: boolean;\n}\n\nexport abstract class Modal {\n didPresent: Promise<void>;\n willClose: Promise<void>;\n close: (data?: any) => Promise<void>;\n scrollToTop: (scrollDuration?: KirbyAnimation.Duration) => void;\n scrollToBottom: (scrollDuration?: KirbyAnimation.Duration) => void;\n scrollDisabled: boolean;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const COMPONENT_PROPS = new InjectionToken<string>('componentProps');\n","import { Component, ElementRef, HostListener, Injector, Input, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { WindowRef } from '../../../../types/window-ref';\nimport { Modal } from '../../services/modal.interfaces';\nimport { ModalConfig } from '../config/modal-config';\nimport { COMPONENT_PROPS } from '../config/modal-config.helper';\n\n@Component({\n selector: 'kirby-modal-compact-wrapper',\n templateUrl: './modal-compact-wrapper.component.html',\n styleUrls: ['./modal-compact-wrapper.component.scss'],\n providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }],\n // tslint:disable-next-line: no-host-metadata-property\n host: { '[class.ion-page]': 'false' }, //Ensure ion-page class doesn't get applied by Ionic Modal Controller\n})\nexport class ModalCompactWrapperComponent implements Modal, OnInit {\n scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n scrollDisabled = false;\n @Input() config: ModalConfig;\n componentPropsInjector: Injector;\n\n private ionModalElement: HTMLIonModalElement;\n private readonly ionModalDidPresent = new Subject<void>();\n private readonly ionModalWillDismiss = new Subject<void>();\n readonly didPresent = this.ionModalDidPresent.toPromise();\n readonly willClose = this.ionModalWillDismiss.toPromise();\n\n constructor(\n private injector: Injector,\n private elementRef: ElementRef<HTMLElement>,\n private windowRef: WindowRef\n ) {}\n\n ngOnInit(): void {\n this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n this.listenForIonModalDidPresent();\n this.listenForIonModalWillDismiss();\n this.componentPropsInjector = Injector.create({\n providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n parent: this.injector,\n });\n }\n\n private listenForIonModalDidPresent() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n this.ionModalDidPresent.next();\n this.ionModalDidPresent.complete();\n });\n }\n }\n\n private listenForIonModalWillDismiss() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n this.ionModalWillDismiss.next();\n this.ionModalWillDismiss.complete();\n });\n }\n }\n\n async close(data?: any): Promise<void> {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n if (ionModalElement) {\n await ionModalElement.dismiss(data);\n }\n }\n\n scrollToTop: (_?: any) => void;\n scrollToBottom: (_?: any) => void;\n\n @HostListener('window:focus')\n @HostListener('window:focusout')\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nimport { WindowRef } from '../types/window-ref';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PlatformService {\n constructor(private windowRef: WindowRef) {}\n\n isTouch() {\n const isTouchDeviceQuery = '(pointer: coarse)'; // No check for `hover: none`, as Samsung Galaxy will return false on `hover: none` media query\n return this.windowRef.nativeWindow.matchMedia(isTouchDeviceQuery).matches;\n }\n\n isPhabletOrBigger() {\n const query = `(min-width: ${DesignTokenHelper.breakpoints.medium})`;\n return this.windowRef.nativeWindow.matchMedia(query).matches;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface Icon {\n name: string;\n svg?: string;\n}\n\nexport interface IconSettings {\n icons: Icon[];\n}\n\nexport const ICON_SETTINGS = new InjectionToken<IconSettings>('IconSettings');\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { Icon, IconSettings, ICON_SETTINGS } from './icon-settings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconRegistryService {\n private iconRegistry = new Map<string, string>();\n\n constructor(@Optional() @Inject(ICON_SETTINGS) iconSettings?: IconSettings) {\n if (iconSettings) {\n this.addIcons(iconSettings.icons);\n console.warn(`Use of IconSettings is deprecated, use IconRegistryService instead`);\n }\n }\n\n public addIcon(iconName: string, svgPath: string): void {\n if (!this.iconRegistry.has(iconName)) {\n this.iconRegistry.set(iconName, svgPath);\n } else {\n console.warn(`Icon with name: \"${iconName}\" already exists`);\n }\n }\n\n public addIcons(icons: Icon[]): void {\n if (!icons) {\n console.error('Icons not defined');\n return;\n }\n icons.forEach((icon) => {\n this.addIcon(icon.name, icon.svg);\n });\n }\n\n getIcons(): Icon[] {\n return [...this.iconRegistry].map(\n (keyValPair) => ({ name: keyValPair[0], svg: keyValPair[1] } as Icon)\n );\n }\n\n getIcon(name: string): Icon {\n const svg = this.iconRegistry.get(name);\n return svg ? { name, svg } : undefined;\n }\n}\n","import { IconSettings } from './icon-settings';\n\n// tslint:disable:prettier\nexport const kirbyIconSettings: IconSettings = {\n icons: [\n { name: 'accounts-outline', svg: 'assets/kirby/icons/svg/accounts-outline.svg' },\n { name: 'accounts', svg: 'assets/kirby/icons/svg/accounts.svg' },\n { name: 'add', svg: 'assets/kirby/icons/svg/add.svg' },\n { name: 'remove', svg: 'assets/kirby/icons/svg/remove.svg' },\n { name: 'unsubscribe', svg: 'assets/kirby/icons/svg/unsubscribe.svg' },\n { name: 'arrow-back', svg: 'assets/kirby/icons/svg/arrow-back.svg' },\n { name: 'arrow-down', svg: 'assets/kirby/icons/svg/arrow-down.svg' },\n { name: 'arrow-more', svg: 'assets/kirby/icons/svg/arrow-more.svg' },\n { name: 'arrow-up', svg: 'assets/kirby/icons/svg/arrow-up.svg' },\n { name: 'attach', svg: 'assets/kirby/icons/svg/attach.svg' },\n { name: 'backspace', svg: 'assets/kirby/icons/svg/backspace.svg' },\n { name: 'calendar', svg: 'assets/kirby/icons/svg/calendar.svg' },\n { name: 'camera', svg: 'assets/kirby/icons/svg/camera.svg' },\n { name: 'checkbox-outline', svg: 'assets/kirby/icons/svg/checkbox-outline.svg' },\n { name: 'checkbox', svg: 'assets/kirby/icons/svg/checkbox.svg' },\n { name: 'checkmark-selected', svg: 'assets/kirby/icons/svg/checkmark-selected.svg' },\n { name: 'close', svg: 'assets/kirby/icons/svg/close.svg' },\n { name: 'cog', svg: 'assets/kirby/icons/svg/cog.svg' },\n { name: 'copy', svg: 'assets/kirby/icons/svg/copy.svg' },\n { name: 'flag', svg: 'assets/kirby/icons/svg/flag.svg' },\n { name: 'edit', svg: 'assets/kirby/icons/svg/edit.svg' },\n { name: 'filter', svg: 'assets/kirby/icons/svg/filter.svg' },\n { name: 'flash-off', svg: 'assets/kirby/icons/svg/flash-off.svg' },\n { name: 'flash', svg: 'assets/kirby/icons/svg/flash.svg' },\n { name: 'moneybag', svg: 'assets/kirby/icons/svg/moneybag.svg' },\n { name: 'help', svg: 'assets/kirby/icons/svg/help.svg' },\n { name: 'home', svg: 'assets/kirby/icons/svg/home.svg' },\n { name: 'inbox', svg: 'assets/kirby/icons/svg/inbox.svg' },\n { name: 'inbox-outline', svg: 'assets/kirby/icons/svg/inbox-outline.svg' },\n { name: 'information', svg: 'assets/kirby/icons/svg/information.svg' },\n { name: 'investment', svg: 'assets/kirby/icons/svg/investment.svg' },\n { name: 'kirby', svg: 'assets/kirby/icons/svg/kirby.svg' },\n { name: 'link', svg: 'assets/kirby/icons/svg/link.svg' },\n { name: 'log-out', svg: 'assets/kirby/icons/svg/log-out.svg' },\n { name: 'menu-outline', svg: 'assets/kirby/icons/svg/menu-outline.svg' },\n { name: 'menu', svg: 'assets/kirby/icons/svg/menu.svg' },\n { name: 'misc', svg: 'assets/kirby/icons/svg/misc.svg' },\n { name: 'more', svg: 'assets/kirby/icons/svg/more.svg' },\n { name: 'move', svg: 'assets/kirby/icons/svg/move.svg' },\n { name: 'payment-card', svg: 'assets/kirby/icons/svg/payment-card.svg' },\n { name: 'pension', svg: 'assets/kirby/icons/svg/pension.svg' },\n { name: 'person-outline', svg: 'assets/kirby/icons/svg/person-outline.svg' },\n { name: 'person', svg: 'assets/kirby/icons/svg/person.svg' },\n { name: 'qr', svg: 'assets/kirby/icons/svg/QR.svg' },\n { name: 'search', svg: 'assets/kirby/icons/svg/search.svg' },\n { name: 'share', svg: 'assets/kirby/icons/svg/share.svg' },\n { name: 'sort', svg: 'assets/kirby/icons/svg/sort.svg' },\n { name: 'support', svg: 'assets/kirby/icons/svg/support.svg' },\n { name: 'swap', svg: 'assets/kirby/icons/svg/swap.svg' },\n { name: 'trash', svg: 'assets/kirby/icons/svg/trash.svg' },\n { name: 'foreign-payment', svg: 'assets/kirby/icons/svg/foreign-payment.svg' },\n { name: 'clock', svg: 'assets/kirby/icons/svg/clock.svg' },\n { name: 'verify', svg: 'assets/kirby/icons/svg/verify.svg' },\n { name: 'warning', svg: 'assets/kirby/icons/svg/warning.svg' },\n { name: 'write-message', svg: 'assets/kirby/icons/svg/write-message.svg' },\n { name: 'reorder', svg: 'assets/kirby/icons/svg/reorder.svg' },\n ],\n};\n\nexport const defaultIcons = kirbyIconSettings.icons.map((icon) => icon.name);\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { IconRegistryService } from './icon-registry.service';\nimport { Icon } from './icon-settings';\nimport { kirbyIconSettings } from './kirby-icon-settings';\n\nexport enum IconSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n selector: 'kirby-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n // tslint:disable-next-line: no-host-metadata-property\n host: { '[class.kirby-icon]': 'true' },\n})\nexport class IconComponent implements OnChanges {\n defaultIcon: Icon = this.findIcon(kirbyIconSettings.icons, 'cog');\n private _icon = (this.icon = this.defaultIcon);\n @HostBinding('class')\n @Input()\n size: IconSize;\n\n @Input() name: string;\n @Input() customName: string;\n\n get icon(): Icon {\n return this._icon;\n }\n\n set icon(icon: Icon) {\n // If icon are not found, set default icon\n if (!icon && (this.name || this.customName)) {\n this.warnAboutMissingIcon();\n\n icon = this.defaultIcon;\n\n // If default icon are not found\n if (!icon) {\n console.warn('Default icon was not found.');\n return;\n }\n }\n\n // Set icon if it's found\n if (icon) {\n this._icon = icon;\n }\n }\n\n private warnAboutMissingIcon(): void {\n if (this.customName) {\n console.warn(`Custom icon with name \"${this.customName}\" was not found. \n Do you have a typo in 'customName' or\n forgot to configure the custom icon through the 'IconRegistryService'?`);\n } else {\n console.warn(`Built-in icon with name \"${this.name}\" was not found. \n Do you have a typo in 'name' or\n did you mean to use a custom icon? If so, please use: \n <kirby-icon customName=\"${this.name}\"></kirby-icon>`);\n }\n }\n\n constructor(private iconRegistryService: IconRegistryService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.name && changes.name.currentValue) {\n this.icon = this.findIcon(kirbyIconSettings.icons, changes.name.currentValue);\n } else if (changes.customName && changes.customName.currentValue) {\n this.icon = this.iconRegistryService.getIcon(changes.customName.currentValue);\n }\n }\n\n private findIcon(icons, name: string): Icon {\n return icons.find((icon) => icon.name === name);\n }\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n} from '@angular/core';\n\nimport { NotificationColor } from '@kirbydesign/core';\n\nimport { IconComponent } from '../icon/icon.component';\n\nexport enum ButtonSize {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'button[kirby-button],Button[kirby-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n})\nexport class ButtonComponent implements AfterContentInit {\n @HostBinding('class.attention-level1')\n isAttentionLevel1: boolean = true; // Default\n @HostBinding('class.attention-level2')\n isAttentionLevel2: boolean;\n @HostBinding('class.attention-level3')\n isAttentionLevel3: boolean;\n @HostBinding('class.attention-level4')\n isAttentionLevel4: boolean;\n @HostBinding('class.destructive')\n destructive: boolean = false; // Default\n\n @HostBinding('class.floating')\n public get isButtonFloating(): boolean {\n return this.isFloating;\n }\n\n @HostBinding('class.icon-only')\n public get isIconOnly(): boolean {\n return !!this.icon && !this.hasText;\n }\n private _isIconLeft = false;\n @HostBinding('class.icon-left')\n public get isIconLeft() {\n return this._isIconLeft;\n }\n private _isIconRight = false;\n @HostBinding('class.icon-right')\n public get isIconRight() {\n return this._isIconRight;\n }\n\n @HostBinding('class')\n get _cssClass() {\n return [this.themeColor, this.size].filter((cssClass) => !!cssClass);\n }\n\n @Input() set attentionLevel(level: '1' | '2' | '3' | '4') {\n this.isAttentionLevel1 = level === '1';\n this.isAttentionLevel2 = level === '2';\n this.isAttentionLevel3 = level === '3';\n this.isAttentionLevel4 = level === '4';\n }\n @Input() set isDestructive(state: boolean) {\n this.destructive = state;\n }\n @Input()\n themeColor: NotificationColor;\n @Input() expand: 'full' | 'block';\n @Input() isFloating: boolean = false;\n @Input()\n size: ButtonSize = ButtonSize.MD;\n\n @ContentChild(IconComponent) icon: IconComponent;\n @ContentChild(IconComponent, { read: ElementRef })\n iconElementRef: ElementRef<HTMLElement>;\n private hasText = false;\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit(): void {\n this.hasText = !!this.elementRef.nativeElement.textContent;\n if (this.iconElementRef !== undefined && this.hasText) {\n this._isIconLeft =\n this.elementRef.nativeElement.firstChild === this.iconElementRef.nativeElement;\n this._isIconRight = !this._isIconLeft;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ResizeObserver } from './types/resize-observer';\nimport { ResizeObserverCallback } from './types/resize-observer-callback';\n\ndeclare var ResizeObserver: {\n prototype: ResizeObserver;\n new (callback: ResizeObserverCallback): ResizeObserver;\n};\n\n/**\n * Factory that creates a new ResizeObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n","import { ElementRef, Injectable, OnDestroy, NgZone } from '@angular/core';\n\nimport { ResizeObserver } from './types/resize-observer';\nimport { ResizeObserverEntry } from './types/resize-observer-entry';\nimport { ResizeObserverFactory } from './resize-observer.factory';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n // IMPORTANT: Keeps track of the existing ResizeObserver so it can be reused for performance.\n // See: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/z6ienONUb5A/F5-VcUZtBAAJ\n private observer: ResizeObserver | null;\n private observedElements = new WeakMap<Element, (entry: ResizeObserverEntry) => void>();\n\n constructor(private _resizeObserverFactory: ResizeObserverFactory, private zone: NgZone) {\n this.observer = this._resizeObserverFactory.create((entries) => this.handleResize(entries));\n }\n\n observe(\n elementOrRef: Element | ElementRef<Element>,\n action: (entry: ResizeObserverEntry) => void\n ): void {\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n if (!this.observedElements.has(element)) {\n if (this.observer) {\n // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n this.zone.runOutsideAngular(() => {\n this.observer.observe(element);\n });\n }\n this.observedElements.set(element, action);\n }\n }\n\n ngOnDestroy() {\n if (this.observer) {\n // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n this.zone.runOutsideAngular(() => {\n this.observer.disconnect();\n });\n }\n this.observedElements = null;\n }\n\n unobserve(elementOrRef: Element | ElementRef<Element>) {\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n if (this.observedElements.has(element)) {\n if (this.observer) {\n // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n this.zone.runOutsideAngular(() => {\n this.observer.unobserve(element);\n });\n }\n this.observedElements.delete(element);\n }\n }\n\n private handleResize(entries: ResizeObserverEntry[]) {\n entries.forEach((entry) => {\n const action = this.observedElements.get(entry.target);\n if (action) {\n action(entry);\n }\n });\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n HostBinding,\n HostListener,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n QueryList,\n Renderer2,\n RendererStyleFlags2,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { ActivatedRoute, RouterOutlet } from '@angular/router';\nimport { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { debounceTime, first, takeUntil } from 'rxjs/operators';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { PlatformService } from '../../../helpers/platform.service';\nimport { WindowRef } from '../../../types/window-ref';\nimport { ButtonComponent } from '../../button/button.component';\nimport { ResizeObserverService } from '../../shared/resize-observer/resize-observer.service';\nimport { ResizeObserverEntry } from '../../shared/resize-observer/types/resize-observer-entry';\nimport { Modal } from '../services/modal.interfaces';\n\nimport { ModalConfig } from './config/modal-config';\nimport { COMPONENT_PROPS } from './config/modal-config.helper';\n\n@Component({\n selector: 'kirby-modal-wrapper',\n templateUrl: './modal-wrapper.component.html',\n styleUrls: ['./modal-wrapper.component.scss'],\n providers: [{ provide: Modal, useExisting: ModalWrapperComponent }],\n})\nexport class ModalWrapperComponent implements Modal, AfterViewInit, OnInit, OnDestroy {\n static readonly KEYBOARD_HIDE_DELAY_IN_MS = 100;\n\n scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n private readonly VIEWPORT_RESIZE_DEBOUNCE_TIME = 100;\n\n set scrollDisabled(disabled: boolean) {\n this.ionContent.scrollY = !disabled;\n }\n\n @Input() config: ModalConfig;\n componentPropsInjector: Injector;\n\n @ViewChildren(ButtonComponent, { read: ElementRef }) private toolbarButtonsQuery: QueryList<\n ElementRef<HTMLButtonElement>\n >;\n @ViewChild(IonContent, { static: true }) private ionContent: IonContent;\n @ViewChild(IonContent, { static: true, read: ElementRef }) private ionContentElement: ElementRef<\n HTMLIonContentElement\n >;\n @ViewChild(IonHeader, { static: true, read: ElementRef }) private ionHeaderElement: ElementRef<\n HTMLIonHeaderElement\n >;\n @ViewChild(IonToolbar, { static: true, read: ElementRef }) private ionToolbarElement: ElementRef<\n HTMLIonToolbarElement\n >;\n @ViewChild(IonTitle, { static: true, read: ElementRef }) private ionTitleElement: ElementRef<\n HTMLIonTitleElement\n >;\n @ViewChild(RouterOutlet, { static: true }) private routerOutlet: RouterOutlet;\n\n private keyboardVisible = false;\n private toolbarButtons: HTMLButtonElement[] = [];\n private delayedClose = () => {};\n private delayedCloseTimeoutId;\n private initialViewportHeight: number;\n private viewportResized = false;\n private ionModalElement?: HTMLIonModalElement;\n private readonly ionModalDidPresent = new Subject<void>();\n readonly didPresent = this.ionModalDidPresent.toPromise();\n private readonly ionModalWillDismiss = new Subject<void>();\n readonly willClose = this.ionModalWillDismiss.toPromise();\n private viewportResize = new Subject<void>();\n private viewportResize$ = this.viewportResize\n .asObservable()\n .pipe(debounceTime(this.VIEWPORT_RESIZE_DEBOUNCE_TIME));\n private _mutationObserver: MutationObserver;\n private get mutationObserver(): MutationObserver {\n if (!this._mutationObserver) {\n this._mutationObserver = this.createEmbeddedElementsMutationObserver();\n }\n return this._mutationObserver;\n }\n private _intersectionObserver: IntersectionObserver;\n private get intersectionObserver(): IntersectionObserver {\n if (!this._intersectionObserver) {\n this._intersectionObserver = this.createModalWrapperIntersectionObserver();\n }\n return this._intersectionObserver;\n }\n private destroy$ = new Subject();\n\n @HostBinding('class.drawer')\n get _isDrawer() {\n return this.config.flavor === 'drawer';\n }\n\n willClose$ = this.ionModalWillDismiss.pipe(first());\n\n constructor(\n private injector: Injector,\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private zone: NgZone,\n private resizeObserverService: ResizeObserverService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private windowRef: WindowRef,\n private platform: PlatformService\n ) {\n this.setViewportHeight();\n this.observeViewportResize();\n }\n\n ngOnInit(): void {\n this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n this.initializeSizing();\n this.initializeModalRoute();\n this.listenForIonModalDidPresent();\n this.listenForIonModalWillDismiss();\n this.initializeResizeModalToModalWrapper();\n this.componentPropsInjector = Injector.create({\n providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n parent: this.injector,\n });\n }\n\n private initializeResizeModalToModalWrapper() {\n if (this.config.flavor === 'drawer' && this.config.interactWithBackground) {\n merge(this.ionModalDidPresent, this.viewportResize$)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n // wait for template to render\n setTimeout(() => {\n const domRect = this.elementRef.nativeElement.getBoundingClientRect();\n const document = this.windowRef.nativeWindow.document.documentElement;\n const right = document.clientWidth - domRect.right;\n this.renderer.setStyle(this.ionModalElement, 'top', `${domRect.top}px`);\n this.renderer.setStyle(this.ionModalElement, 'left', `${domRect.left}px`);\n this.renderer.setStyle(this.ionModalElement, 'right', `${right}px`);\n });\n });\n }\n }\n\n private initializeSizing() {\n if (this.config.size === 'full-height') return;\n this.patchScrollElementSize();\n this.observeHeaderResize();\n this.observeModalFullHeight();\n }\n\n private initializeModalRoute() {\n if (this.config.modalRoute) {\n this.onSiblingModalRouteActivated(this.config.siblingModalRouteActivated$);\n // Load component from modal-route inside router-outlet:\n this.routerOutlet.activateWith(this.config.modalRoute, this.componentFactoryResolver);\n }\n }\n\n private onSiblingModalRouteActivated(siblingModalRouteActivated$?: Observable<ActivatedRoute>) {\n if (!siblingModalRouteActivated$) return;\n siblingModalRouteActivated$.pipe(takeUntil(this.willClose$)).subscribe((route) => {\n if (this.routerOutlet.isActivated) {\n this.mutationObserver.disconnect();\n this.routerOutlet.deactivate();\n this.clearEmbeddedElements();\n }\n this.routerOutlet.activateWith(route, this.componentFactoryResolver);\n this.checkForEmbeddedElements();\n });\n }\n\n private patchScrollElementSize(): void {\n const supportsCssShadowParts = 'part' in HTMLElement.prototype;\n if (supportsCssShadowParts) return;\n this.ionContent.getScrollElement().then((scrollElement) => {\n this.renderer.setStyle(scrollElement, 'height', '100%');\n this.renderer.setStyle(scrollElement, 'position', 'relative');\n if (this.config.flavor === 'drawer') {\n this.renderer.setStyle(\n scrollElement,\n 'transition',\n 'padding-bottom ' + DesignTokenHelper.softKeyboardTransitionLeave\n );\n }\n });\n }\n\n private observeModalFullHeight() {\n const ionModalWrapper = this.elementRef.nativeElement.closest<HTMLElement>('.modal-wrapper');\n if (!ionModalWrapper) return;\n // Start observing when modal has finished animating:\n this.didPresent.then(() => {\n this.intersectionObserver.observe(ionModalWrapper);\n });\n }\n\n ngAfterViewInit(): void {\n if (this.toolbarButtonsQuery) {\n this.toolbarButtons = this.toolbarButtonsQuery.map((buttonRef) => buttonRef.nativeElement);\n }\n this.checkForEmbeddedElements();\n }\n\n private checkForEmbeddedElements() {\n this.moveEmbeddedElements();\n this.observeEmbeddedElements();\n }\n\n private observeHeaderResize() {\n this.resizeObserverService.observe(this.ionHeaderElement.nativeElement, (entry) => {\n const [property, pixelValue] = ['--header-height', `${entry.contentRect.height}px`];\n this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n });\n }\n\n private moveEmbeddedElements() {\n const parentElement = this.getEmbeddedComponentElement();\n if (parentElement) {\n Object.entries(this.elementToParentMap).forEach(([tagName, getNewParent]) => {\n const embeddedElement = parentElement.querySelector<HTMLElement>(tagName);\n if (embeddedElement) {\n this.moveChild(embeddedElement, getNewParent());\n }\n });\n }\n }\n\n private listenForIonModalDidPresent() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n this.ionModalDidPresent.next();\n this.ionModalDidPresent.complete();\n });\n }\n }\n\n private listenForIonModalWillDismiss() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n this.ionModalWillDismiss.next();\n this.ionModalWillDismiss.complete();\n });\n }\n }\n\n scrollToTop(scrollDuration?: KirbyAnimation.Duration) {\n this.ionContent.scrollToTop(scrollDuration || 0);\n }\n\n scrollToBottom(scrollDuration?: KirbyAnimation.Duration) {\n this.ionContent.scrollToBottom(scrollDuration || 0);\n }\n\n async close(data?: any): Promise<void> {\n if (!this.ionModalElement) {\n return;\n }\n if (!this.keyboardVisible || !this.viewportResized) {\n // No keyboard visible or viewport not resized:\n // Dismiss modal and return:\n clearTimeout(this.delayedCloseTimeoutId);\n await this.ionModalElement.dismiss(data);\n return;\n }\n\n // Keyboard visible:\n // Blur active element and wait for keyboard to hide,\n // then dismiss modal and return:\n this.blurActiveElement();\n return new Promise<void>((resolve) => {\n this.delayedClose = async () => {\n await this.ionModalElement.dismiss(data);\n resolve();\n };\n this.delayedCloseTimeoutId = setTimeout(\n this.delayedClose,\n ModalWrapperComponent.KEYBOARD_HIDE_DELAY_IN_MS\n );\n });\n }\n\n @HostListener('window:focus')\n @HostListener('window:focusout')\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n\n @HostListener('window:ionKeyboardDidShow', ['$event.detail.keyboardHeight'])\n @HostListener('window:keyboardWillShow', ['$event.keyboardHeight'])\n _onKeyboardShow(keyboardHeight: number) {\n this.setKeyboardVisibility(keyboardHeight);\n }\n\n @HostListener('window:ionKeyboardDidHide')\n @HostListener('window:keyboardWillHide')\n _onKeyboardHide() {\n this.setKeyboardVisibility(0);\n }\n\n private toggleContentMaxHeight(freeze: boolean) {\n const shouldToggleMaxHeight =\n this.config.flavor === 'modal' && this.platform.isPhabletOrBigger();\n if (!shouldToggleMaxHeight) return;\n const style = 'max-height';\n const contentElement = this.ionContentElement.nativeElement;\n this.zone.run(() => {\n if (freeze) {\n const contentHeight = contentElement.offsetHeight;\n this.renderer.setStyle(contentElement, style, `${contentHeight}px`);\n } else {\n this.renderer.removeStyle(contentElement, style);\n }\n });\n }\n\n private setKeyboardVisibility(keyboardHeight: number) {\n const keyboardAlreadyVisible = keyboardHeight > 0 && this.keyboardVisible;\n const keyboardAlreadyHidden = keyboardHeight === 0 && !this.keyboardVisible;\n if (keyboardAlreadyVisible || keyboardAlreadyHidden) return;\n this.keyboardVisible = keyboardHeight > 0;\n this.toggleContentMaxHeight(this.keyboardVisible);\n this.setKeyboardOverlap(keyboardHeight);\n }\n\n private getKeyboardOverlap(keyboardHeight: number, element: Element) {\n if (keyboardHeight <= 0 || !element) return 0;\n const distanceFromViewportBottomToElement = Math.floor(\n this.windowRef.nativeWindow.innerHeight - element.getBoundingClientRect().bottom\n );\n return Math.max(keyboardHeight - distanceFromViewportBottomToElement, 0);\n }\n\n private setCssVar(element: Element, property: string, value: string) {\n this.zone.run(() =>\n this.renderer.setStyle(element, property, value, RendererStyleFlags2.DashCase)\n );\n }\n\n private toggleCssClass(element: Element, klass: string, condition: boolean) {\n this.zone.run(() =>\n condition ? this.renderer.addClass(element, klass) : this.renderer.removeClass(element, klass)\n );\n }\n\n private setKeyboardOverlap(keyboardHeight: number) {\n this.toggleCssClass(this.elementRef.nativeElement, 'keyboard-visible', keyboardHeight > 0);\n const keyboardOverlap = this.getKeyboardOverlap(keyboardHeight, this.elementRef.nativeElement);\n let snapFooterToKeyboard = false;\n const embeddedFooterElement = this.getEmbeddedFooterElement();\n if (embeddedFooterElement) {\n this.setCssVar(embeddedFooterElement, '--keyboard-offset', `${keyboardOverlap}px`);\n snapFooterToKeyboard = embeddedFooterElement.classList.contains('snap-to-keyboard');\n }\n\n const contentElement = this.ionContentElement.nativeElement;\n const contentKeyboardOffset = snapFooterToKeyboard\n ? keyboardOverlap\n : this.getKeyboardOverlap(keyboardHeight, contentElement);\n this.setCssVar(contentElement, '--keyboard-offset', `${contentKeyboardOffset}px`);\n }\n\n onHeaderTouchStart(event: TouchEvent) {\n if (this.keyboardVisible) {\n const isToolbarButtonTouch = this.toolbarButtons.some((button) => {\n return (\n event.target instanceof HTMLElement &&\n (event.target === button || button.contains(event.target))\n );\n });\n // Prevent blur if event target is a toolbar button\n // (to allow tap event to fire):\n if (!isToolbarButtonTouch) {\n this.blurActiveElement();\n }\n }\n }\n\n @HostListener('window:resize')\n _onWindowResize() {\n this.setViewportHeight();\n }\n\n private setViewportHeight() {\n const vh = (this.windowRef.nativeWindow.innerHeight * 0.01).toFixed(2);\n this.setCssVar(this.elementRef.nativeElement, '--vh', `${vh}px`);\n }\n\n private observeViewportResize() {\n this.resizeObserverService.observe(this.windowRef.nativeWindow.document.body, (entry) =>\n this.onViewportResize(entry)\n );\n }\n\n private onViewportResize(entry: ResizeObserverEntry) {\n if (!this.initialViewportHeight) {\n // Initial observe callback, register initial height:\n this.initialViewportHeight = entry.contentRect.height;\n return;\n }\n this.viewportResized = entry.contentRect.height !== this.initialViewportHeight;\n if (!this.viewportResized) {\n // We are back to initial view port height, check for pending close func:\n if (this.delayedCloseTimeoutId) {\n clearTimeout(this.delayedCloseTimeoutId);\n this.delayedClose();\n }\n }\n this.viewportResize.next();\n }\n\n blurActiveElement() {\n const BLUR_TARGET_SELECTOR = 'input, textarea';\n if (this.keyboardVisible) {\n if (\n document.activeElement instanceof HTMLElement &&\n document.activeElement.matches(BLUR_TARGET_SELECTOR)\n ) {\n document.activeElement.blur();\n }\n }\n }\n\n private readonly elementToParentMap: { [key: string]: () => HTMLElement } = {\n 'KIRBY-MODAL-FOOTER': () => this.elementRef.nativeElement,\n 'KIRBY-PAGE-TITLE': () => this.ionTitleElement.nativeElement,\n 'KIRBY-PAGE-PROGRESS': () => this.ionToolbarElement.nativeElement,\n };\n\n private clearEmbeddedElements() {\n Object.entries(this.elementToParentMap).forEach(([tagName, getParent]) => {\n const embeddedElement = getParent().querySelector<HTMLElement>(`:scope > ${tagName}`);\n this.removeChild(embeddedElement);\n });\n }\n\n private getEmbeddedComponentElement() {\n return !!this.config.modalRoute\n ? this.ionContentElement.nativeElement.lastElementChild\n : this.ionContentElement.nativeElement.firstElementChild;\n }\n\n private getEmbeddedFooterElement() {\n return this.elementRef.nativeElement.querySelector<HTMLElement>('kirby-modal-footer');\n }\n\n private moveChild(child: Element, newParent: Element) {\n this.renderer.removeChild(child.parentElement, child);\n this.renderer.appendChild(newParent, child);\n if (child.tagName === 'KIRBY-MODAL-FOOTER') {\n this.resizeObserverService.observe(child, (entry) => {\n const [property, pixelValue] = [\n '--footer-height',\n `${Math.floor(entry.contentRect.height)}px`,\n ];\n this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n });\n }\n }\n\n private removeChild(child?: Element) {\n if (!!child) {\n this.renderer.removeChild(child.parentElement, child);\n }\n }\n\n private observeEmbeddedElements() {\n const parentElement = this.getEmbeddedComponentElement();\n this.mutationObserver.observe(parentElement, {\n childList: true, // Listen for addition or removal of child nodes\n });\n }\n\n private createEmbeddedElementsMutationObserver(): MutationObserver {\n const observedElements = Object.keys(this.elementToParentMap);\n const callback = (mutations: MutationRecord[]) => {\n const addedNodes = mutations\n .filter((mutation) => mutation.type === 'childList') // Filter for mutation to the tree of nodes\n .map((mutation) => {\n // Only check for addedNodes as removal is handled by the Angular renderer:\n return Array.from(mutation.addedNodes).filter((node) =>\n observedElements.includes(node.nodeName)\n );\n });\n\n const addedElements = Array.prototype\n .concat(...addedNodes)\n .filter((node): node is HTMLElement => node instanceof HTMLElement);\n\n addedElements.forEach((addedElement) => {\n const newParentElement = this.elementToParentMap[addedElement.nodeName]();\n // Move embedded element out of content and append to new parent:\n this.moveChild(addedElement, newParentElement);\n });\n };\n return new MutationObserver(callback);\n }\n\n private createModalWrapperIntersectionObserver(): IntersectionObserver {\n const callback: IntersectionObserverCallback = (entries) => {\n const entry = entries[0];\n const isTouchingViewport = entry.intersectionRatio < 1;\n if (isTouchingViewport) {\n this.renderer.addClass(entry.target, 'full-height');\n } else {\n this.renderer.removeClass(entry.target, 'full-height');\n }\n };\n\n // Set explicit viewport root if within iframe:\n const root = this.windowRef.nativeWindow.frameElement\n ? (this.windowRef.nativeWindow.document as any) // Cast to `any` as Typescript lib.d.ts doesnt support Document type yet\n : undefined;\n const options: IntersectionObserverInit = {\n rootMargin: '0px 0px -1px 0px', // `bottom: -1px` allows checking when the modal bottom is touching the viewport\n root,\n threshold: [0.99, 1],\n };\n\n return new IntersectionObserver(callback, options);\n }\n\n ngOnDestroy() {\n if (this.routerOutlet.isActivated) {\n this.routerOutlet.deactivate();\n }\n //clean up the observer\n this.mutationObserver.disconnect();\n delete this._mutationObserver;\n this.intersectionObserver.disconnect();\n delete this._intersectionObserver;\n if (this.resizeObserverService) {\n this.resizeObserverService.unobserve(this.windowRef.nativeWindow.document.body);\n this.resizeObserverService.unobserve(this.ionHeaderElement.nativeElement);\n this.resizeObserverService.unobserve(this.getEmbeddedFooterElement());\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Animation, AnimationBuilder, AnimationController } from '@ionic/angular';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { PlatformService } from '../../../helpers/platform.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalAnimationBuilderService {\n constructor(private animationCtrl: AnimationController, private platform: PlatformService) {}\n\n private readonly easingEnter = KirbyAnimation.Easing.modal.enter;\n private readonly easingLeave = KirbyAnimation.Easing.modal.exit;\n private readonly duration = KirbyAnimation.Duration.LONG;\n private readonly SwipeToCloseDefaults = {\n MIN_PRESENTING_SCALE: 0.93,\n };\n\n public enterAnimation(currentBackdrop?: HTMLIonBackdropElement): AnimationBuilder {\n return (baseEl: HTMLElement, presentingEl?: HTMLElement): Animation => {\n const backdropAnimation = this.animationCtrl\n .create()\n .addElement(baseEl.querySelector('ion-backdrop')!)\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .beforeStyles({\n 'pointer-events': 'none',\n })\n .afterClearStyles(['pointer-events']);\n\n const wrapperAnimation = this.animationCtrl\n .create()\n .addElement(baseEl.querySelectorAll('.modal-wrapper, .modal-shadow')!)\n .beforeStyles({ opacity: 1 })\n .fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');\n\n const baseAnimation = this.animationCtrl\n .create()\n .addElement(baseEl)\n .easing(this.easingEnter)\n .duration(this.duration)\n .addAnimation(wrapperAnimation);\n\n let currentBackdropAnimation: Animation;\n if (currentBackdrop) {\n currentBackdropAnimation = this.animationCtrl\n .create()\n .addElement(currentBackdrop)\n .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);\n }\n\n if (presentingEl) {\n const isMobile = !this.platform.isPhabletOrBigger();\n const hasCardModal =\n presentingEl.tagName === 'ION-MODAL' &&\n (presentingEl as HTMLIonModalElement).presentingElement !== undefined;\n\n const presentingAnimation = this.animationCtrl.create().beforeStyles({\n transform: 'translateY(0)',\n 'transform-origin': 'top center',\n overflow: 'hidden',\n });\n\n const bodyEl = document.body;\n\n if (isMobile) {\n /**\n * Fallback for browsers that does not support `max()` (ex: Firefox)\n * No need to worry about statusbar padding since engines like Gecko\n * are not used as the engine for standlone Cordova/Capacitor apps\n */\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n ? '30px'\n : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))\n .addElement(presentingEl)\n .keyframes([\n {\n offset: 0,\n filter: 'contrast(1)',\n transform: 'translateY(0px) scale(1)',\n borderRadius: '0px',\n },\n {\n offset: 1,\n filter: 'contrast(0.85)',\n transform: finalTransform,\n borderRadius: '10px 10px 0 0',\n },\n ]);\n baseAnimation.addAnimation(presentingAnimation);\n } else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '0', '1');\n } else {\n const toPresentingScale = hasCardModal\n ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingEl.querySelector('.modal-wrapper')!)\n .keyframes([\n { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },\n ]);\n\n const shadowAnimation = this.animationCtrl\n .create()\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingEl.querySelector('.modal-shadow')!)\n .keyframes([\n { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },\n { offset: 1, opacity: '0', transform: finalTransform },\n ]);\n\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n } else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n }\n\n return baseAnimation;\n };\n }\n\n public leaveAnimation(currentBackdrop?: HTMLIonBackdropElement): AnimationBuilder {\n return (baseEl: HTMLElement, presentingEl?: HTMLElement): Animation => {\n const backdropAnimation = this.animationCtrl\n .create()\n .addElement(baseEl.querySelector('ion-backdrop')!)\n .fromTo('opacity', 'var(--backdrop-opacity)', 0.0);\n\n const wrapperAnimation = this.animationCtrl\n .create()\n .addElement(baseEl.querySelectorAll('.modal-wrapper, .modal-shadow')!)\n .beforeStyles({ opacity: 1 })\n .fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');\n\n const baseAnimation = this.animationCtrl\n .create()\n .addElement(baseEl)\n .easing(this.easingLeave)\n .duration(this.duration)\n .addAnimation(wrapperAnimation);\n\n let currentBackdropAnimation: Animation;\n if (currentBackdrop) {\n currentBackdropAnimation = this.animationCtrl\n .create()\n .addElement(currentBackdrop)\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .afterStyles({ opacity: 'var(--backdrop-opacity)' }); //Ensures backdrop is reset to default opacity after swipe to close\n }\n\n if (presentingEl) {\n const isMobile = !this.platform.isPhabletOrBigger();\n const hasCardModal =\n presentingEl.tagName === 'ION-MODAL' &&\n (presentingEl as HTMLIonModalElement).presentingElement !== undefined;\n\n const presentingAnimation = this.animationCtrl\n .create()\n .beforeClearStyles(['transform'])\n .afterClearStyles(['transform'])\n .onFinish((currentStep) => {\n // only reset background color if this is the last card-style modal\n if (currentStep !== 1) {\n return;\n }\n\n presentingEl.style.setProperty('overflow', '');\n\n const numModals = Array.from(bodyEl.querySelectorAll('ion-modal')).filter(\n (m) => m.presentingElement !== undefined\n ).length;\n if (numModals <= 1) {\n bodyEl.style.setProperty('background-color', '');\n }\n });\n\n const bodyEl = document.body;\n\n if (isMobile) {\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n ? '30px'\n : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n\n presentingAnimation.addElement(presentingEl).keyframes([\n {\n offset: 0,\n filter: 'contrast(0.85)',\n transform: finalTransform,\n borderRadius: '10px 10px 0 0',\n },\n {\n offset: 1,\n filter: 'contrast(1)',\n transform: 'translateY(0px) scale(1)',\n borderRadius: '0px',\n },\n ]);\n\n baseAnimation.addAnimation(presentingAnimation);\n } else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '1', '0');\n } else {\n const toPresentingScale = hasCardModal\n ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n\n presentingAnimation\n .addElement(presentingEl.querySelector('.modal-wrapper')!)\n .afterStyles({\n transform: 'translate3d(0, 0, 0)',\n })\n .keyframes([\n { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },\n { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n ]);\n\n const shadowAnimation = this.animationCtrl\n .create()\n .addElement(presentingEl.querySelector('.modal-shadow')!)\n .afterStyles({\n transform: 'translateY(0) scale(1)',\n })\n .keyframes([\n { offset: 0, opacity: '0', transform: finalTransform },\n { offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },\n ]);\n\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n } else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n }\n\n return baseAnimation;\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { WindowRef } from '../../../types/window-ref';\nimport { ModalCompactWrapperComponent } from '../modal-wrapper/compact/modal-compact-wrapper.component';\nimport { ModalConfig, ModalFlavor, ModalSize } from '../modal-wrapper/config/modal-config';\nimport { ModalWrapperComponent } from '../modal-wrapper/modal-wrapper.component';\n\nimport { ModalAnimationBuilderService } from './modal-animation-builder.service';\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ModalHelper {\n // TODO: Make presentingElement an instance field when\n // forRoot()/singleton services has been solved:\n private static presentingElement: HTMLElement = undefined;\n\n constructor(\n private ionicModalController: ModalController,\n private modalAnimationBuilder: ModalAnimationBuilderService,\n private windowRef: WindowRef\n ) {}\n\n public async showModalWindow(config: ModalConfig): Promise<Overlay> {\n config.flavor = config.flavor || 'modal';\n const modalPresentingElement = await this.getPresentingElement(config.flavor);\n\n let currentBackdrop: HTMLIonBackdropElement;\n const topMostModal = await this.ionicModalController.getTop();\n if (topMostModal) {\n currentBackdrop = topMostModal.querySelector<HTMLIonBackdropElement>('ion-backdrop');\n }\n\n const enterAnimation = this.modalAnimationBuilder.enterAnimation(currentBackdrop);\n const leaveAnimation = this.modalAnimationBuilder.leaveAnimation(currentBackdrop);\n\n const defaultModalSize: ModalSize = config.flavor === 'modal' ? 'medium' : null;\n const modalSize = config.size || defaultModalSize;\n const allow_scroll_class = 'allow-background-scroll';\n\n let customCssClasses = [];\n if (config.cssClass) {\n customCssClasses = Array.isArray(config.cssClass) ? config.cssClass : [config.cssClass];\n }\n\n if (config.interactWithBackground) {\n this.windowRef.nativeWindow.document.body.classList.add(allow_scroll_class);\n }\n\n const ionModal = await this.ionicModalController.create({\n component: config.flavor === 'compact' ? ModalCompactWrapperComponent : ModalWrapperComponent,\n cssClass: [\n 'kirby-overlay',\n 'kirby-modal',\n config.flavor === 'drawer' ? 'kirby-drawer' : null,\n config.flavor === 'compact' ? 'kirby-modal-compact' : null,\n 'kirby-modal-' + modalSize,\n config.interactWithBackground ? 'interact-with-background' : null,\n ...customCssClasses,\n ],\n backdropDismiss: config.flavor === 'compact' || config.interactWithBackground ? false : true,\n showBackdrop: !config.interactWithBackground,\n componentProps: { config: config },\n swipeToClose: config.flavor != 'compact',\n presentingElement: modalPresentingElement,\n keyboardClose: false,\n enterAnimation,\n leaveAnimation,\n });\n\n if (config.interactWithBackground) {\n ionModal.onDidDismiss().then(() => {\n this.windowRef.nativeWindow.document.body.classList.remove(allow_scroll_class);\n });\n }\n\n await ionModal.present();\n\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n\n public registerPresentingElement(element: HTMLElement) {\n ModalHelper.presentingElement = element;\n }\n\n private async getPresentingElement(flavor?: ModalFlavor) {\n let modalPresentingElement: HTMLElement = undefined;\n if (!flavor || flavor === 'modal') {\n const topMostModal = await this.ionicModalController.getTop();\n if (!topMostModal) {\n modalPresentingElement = ModalHelper.presentingElement;\n } else if (\n !topMostModal.classList.contains('kirby-drawer') &&\n !topMostModal.classList.contains('kirby-modal-compact')\n ) {\n modalPresentingElement = topMostModal;\n }\n }\n return modalPresentingElement;\n }\n\n public async scrollToTop(\n noModalRegisteredErrorMessage: string,\n duration?: KirbyAnimation.Duration\n ) {\n const modal = await this.ionicModalController.getTop();\n if (!modal || !(modal.component instanceof ModalWrapperComponent)) {\n throw new Error(noModalRegisteredErrorMessage);\n }\n modal.component.scrollToTop(duration);\n }\n\n public async scrollToBottom(\n noModalRegisteredErrorMessage: string,\n duration?: KirbyAnimation.Duration\n ) {\n const modal = await this.ionicModalController.getTop();\n if (!modal || !(modal.component instanceof ModalWrapperComponent)) {\n throw new Error(noModalRegisteredErrorMessage);\n }\n modal.component.scrollToBottom(duration);\n }\n}\n","import { Inject, Injectable, OnDestroy, Optional } from '@angular/core';\nimport { ActivatedRoute, Params, Routes, ROUTES } from '@angular/router';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { ActionSheetConfig } from '../action-sheet/config/action-sheet-config';\nimport { AlertConfig } from '../alert/config/alert-config';\nimport { ModalConfig } from '../modal-wrapper/config/modal-config';\n\nimport { ActionSheetHelper } from './action-sheet.helper';\nimport { AlertHelper } from './alert.helper';\nimport { ModalNavigationService } from './modal-navigation.service';\nimport { ModalHelper } from './modal.helper';\nimport { ModalRouteActivation, Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ModalController implements OnDestroy {\n private overlays: Overlay[] = [];\n private readonly noOverlayRegisteredErrorMessage = 'No modal overlays are currently registered';\n private destroy$ = new Subject<void>();\n\n constructor(\n private modalHelper: ModalHelper,\n private actionSheetHelper: ActionSheetHelper,\n private alertHelper: AlertHelper,\n private modalNavigationService: ModalNavigationService,\n @Optional() @Inject(ROUTES) private routeConfig: Routes[]\n ) {}\n\n async initialize(moduleRootRoutePath?: string) {\n const modalNavigation = await this.modalNavigationService.getModalNavigation(\n this.routeConfig,\n moduleRootRoutePath\n );\n this.onModalRouteActivated(modalNavigation.activated$);\n this.onModalRouteDeactivated(modalNavigation.deactivated$); // TODO: Do we want to close modal when routing out of modal route? Or should the code that navigates close the window??\n }\n\n private onModalRouteActivated(modalRouteActivated$: Observable<ModalRouteActivation>) {\n const navigateOnWillClose = () => {\n this.modalNavigationService.navigateOutOfModalOutlet();\n };\n const siblingModalRouteActivated$ = modalRouteActivated$.pipe(\n filter((modalRouteActivation) => !modalRouteActivation.isNewModal),\n map((modalRouteActivation) => modalRouteActivation.route)\n );\n\n modalRouteActivated$\n .pipe(\n takeUntil(this.destroy$),\n filter(() => this.overlays.length === 0)\n )\n .subscribe(async (modalRouteActivation) => {\n if (modalRouteActivation.isNewModal) {\n await this.showModalRoute(\n modalRouteActivation.route,\n siblingModalRouteActivated$,\n navigateOnWillClose\n );\n }\n });\n }\n\n private onModalRouteDeactivated(modalRouteDeactivated$: Observable<boolean>) {\n modalRouteDeactivated$\n .pipe(\n takeUntil(this.destroy$),\n filter(() => this.overlays.length > 0) // TODO: This also fires when closing overlay - should we check for isClosing??\n )\n .subscribe(async () => {\n await this.hideAll();\n });\n }\n\n public async showModal(config: ModalConfig, onClose?: (data?: any) => void): Promise<void> {\n if (config.hasOwnProperty('dim')) {\n console.warn('ModalConfig.dim is deprecated - please remove from your configuration.');\n }\n await this.showAndRegisterOverlay(() => this.modalHelper.showModalWindow(config), onClose);\n }\n\n public async navigateToModal(path: string | string[], queryParams?: Params): Promise<boolean> {\n return this.modalNavigationService.navigateToModal(path, queryParams);\n }\n\n public async navigateWithinModal(relativePath: string, queryParams?: Params): Promise<boolean> {\n return this.modalNavigationService.navigateWithinModal(relativePath, queryParams);\n }\n\n private async showModalRoute(\n modalRoute: ActivatedRoute,\n siblingModalRouteActivated$: Observable<ActivatedRoute>,\n onWillClose: (data?: any) => void\n ): Promise<void> {\n const config: ModalConfig = {\n component: null,\n modalRoute: modalRoute,\n siblingModalRouteActivated$: siblingModalRouteActivated$,\n flavor: 'modal', // Todo: Should it be possible to specify flavor as data in RouteConfig?\n };\n await this.showAndRegisterOverlay(\n () => this.modalHelper.showModalWindow(config),\n null,\n onWillClose\n );\n }\n\n public async showActionSheet(\n config: ActionSheetConfig,\n onClose?: (data?: any) => void\n ): Promise<void> {\n await this.showAndRegisterOverlay(\n () => this.actionSheetHelper.showActionSheet(config),\n onClose\n );\n }\n\n public async showAlert(config: AlertConfig, onClose?: (result: boolean) => void): Promise<void> {\n await this.showAndRegisterOverlay(() => this.alertHelper.showAlert(config), onClose);\n }\n\n private async showAndRegisterOverlay(\n showOverlay: () => Promise<Overlay>,\n onCloseOverlay?: (data?: any) => void,\n onWillCloseOverlay?: (data?: any) => void\n ) {\n const overlay = await showOverlay();\n if (!overlay) return;\n\n this.overlays.push(overlay);\n\n if (typeof onWillCloseOverlay === 'function') {\n overlay.onWillDismiss.then((event) => onWillCloseOverlay(event.data));\n }\n\n overlay.onDidDismiss.then((event) => {\n this.overlays.pop();\n if (typeof onCloseOverlay === 'function') {\n onCloseOverlay(event.data);\n }\n });\n }\n\n public registerPresentingElement(element: HTMLElement) {\n this.modalHelper.registerPresentingElement(element);\n }\n\n public async hideTopmost(data?: any): Promise<boolean> {\n const overlay = this.overlays[this.overlays.length - 1];\n if (!overlay) {\n throw new Error(this.noOverlayRegisteredErrorMessage);\n }\n return overlay.dismiss(data);\n }\n\n /**\n * @deprecated Will be removed in next major version. Inject Modal in embedded component and use Modal.scrollToTop instead.\n */\n public scrollToTop(duration?: KirbyAnimation.Duration) {\n console.warn(\n 'ModalController.scrollToTop is deprecated - please inject Modal in embedded component and use Modal.scrollToTop instead.'\n );\n const overlay = this.overlays[this.overlays.length - 1];\n if (!overlay) {\n throw new Error(this.noOverlayRegisteredErrorMessage);\n }\n this.modalHelper.scrollToTop(this.noOverlayRegisteredErrorMessage, duration);\n }\n\n /**\n * @deprecated Will be removed in next major version. Inject Modal in embedded component and use Modal.scrollToBottom instead.\n */\n public scrollToBottom(duration?: KirbyAnimation.Duration) {\n console.warn(\n 'ModalController.scrollToBottom is deprecated - please inject Modal in embedded component and use Modal.scrollToBottom instead.'\n );\n const overlay = this.overlays[this.overlays.length - 1];\n if (!overlay) {\n throw new Error(this.noOverlayRegisteredErrorMessage);\n }\n this.modalHelper.scrollToBottom(this.noOverlayRegisteredErrorMessage, duration);\n }\n\n public async hideAll(): Promise<void> {\n await Promise.all(\n this.overlays.map(async (overlay) => {\n await overlay.dismiss();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { Component, ContentChild, ElementRef, AfterContentInit, ViewChild } from '@angular/core';\nimport { IonApp } from '@ionic/angular';\n\nimport { RouterOutletComponent } from '../router-outlet/router-outlet.component';\nimport { ModalController } from '../modal/services/modal.controller';\n\n@Component({\n selector: 'kirby-app',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent implements AfterContentInit {\n @ViewChild(IonApp, { static: true, read: ElementRef })\n private ionAppElement: ElementRef<HTMLIonAppElement>;\n\n @ContentChild(RouterOutletComponent, { static: false, read: ElementRef })\n private routerOutlet?: ElementRef<HTMLElement>;\n\n constructor(private modalController: ModalController) {}\n\n ngAfterContentInit(): void {\n if (this.routerOutlet && this.routerOutlet.nativeElement) {\n this.modalController.registerPresentingElement(this.routerOutlet.nativeElement);\n }\n\n this.ionAppElement.nativeElement.componentOnReady().then(() => this.registerInputs());\n }\n\n registerInputs() {\n // Input might be already loaded in the DOM before ion-device-hacks did.\n // At this point we need to look for all of the inputs not registered yet\n // and register them.\n // There is no Ionic event to hook into, so we'll use a timeout\n // to ensure ion-device-hacks has run:\n const ensureIonicDeviceHacksDelay = 250;\n setTimeout(() => {\n document.querySelectorAll('kirby-form-field').forEach((formField) => {\n formField.dispatchEvent(new CustomEvent('kirbyRegisterFormField'));\n });\n }, ensureIonicDeviceHacksDelay);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@ionic/angular';\n\nimport { AppComponent } from './app.component';\n\n@NgModule({\n declarations: [AppComponent],\n imports: [CommonModule, IonicModule],\n exports: [AppComponent],\n})\nexport class AppModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { BrandColor, NotificationColor } from '@kirbydesign/core';\n\nexport enum AvatarSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n selector: 'kirby-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent {\n @Input() imageSrc: string;\n @Input() altText: string;\n @Input() shadow: boolean;\n @Input() text: string;\n @Input() overlay: boolean;\n @Input() size: AvatarSize = AvatarSize.SM;\n @Input()\n themeColor: NotificationColor | BrandColor | 'medium' | 'white' | 'dark' | 'light' | 'semi-light';\n\n @HostBinding('class')\n get _cssClass() {\n return [this.themeColor, this.size].filter((cssClass) => !!cssClass);\n }\n}\n","import {\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { ResizeObserverService } from '../shared/resize-observer/resize-observer.service';\nimport { ResizeObserverEntry } from '../shared/resize-observer/types/resize-observer-entry';\n\n@Component({\n selector: 'kirby-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class CardComponent implements OnInit, OnDestroy {\n @Input() title: string;\n @Input() subtitle: string;\n\n @HostBinding('style.--kirby-card-background-image')\n _backgroundImage: string;\n\n @Input()\n set backgroundImageUrl(value: string) {\n this._backgroundImage = `url('${value}')`;\n }\n\n @Input()\n hasPadding: boolean;\n\n private sizesSortedByBreakpoint = this.sortSizesByBreakpoint({\n small: 360,\n medium: 720,\n large: 1024,\n });\n\n @Input()\n set sizes(value: { [size: string]: number }) {\n if (typeof value === 'string') {\n console.error(\n 'Sizes property cannot be a string. Please ensure the size property is bound as an expression:\\n[sizes]=\"{...}\"'\n );\n }\n this.sizesSortedByBreakpoint = this.sortSizesByBreakpoint(value);\n }\n\n @HostBinding('class.flat')\n flat: boolean = false;\n @HostBinding('class.highlighted')\n highlighted: boolean = false;\n @Input() set mode(value: 'flat' | 'highlighted') {\n this.flat = value === 'flat';\n this.highlighted = value === 'highlighted';\n }\n\n constructor(\n private elementRef: ElementRef,\n private resizeObserverService: ResizeObserverService,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.resizeObserverService.observe(this.elementRef, (entry) => this.handleResize(entry));\n }\n\n ngOnDestroy() {\n this.resizeObserverService.unobserve(this.elementRef);\n }\n\n private sortSizesByBreakpoint(sizes: { [size: string]: number }): [string, number][] {\n return Object.entries(sizes).sort(this.compareSizesByBreakpoint);\n }\n\n private compareSizesByBreakpoint(a: [string, number], b: [string, number]): number {\n return a[1] > b[1] ? 1 : b[1] > a[1] ? -1 : 0;\n }\n\n private handleResize(entry: ResizeObserverEntry) {\n const sizeAttributeName = 'size';\n const smallestBreakpointName = this.sizesSortedByBreakpoint[0][0];\n const smallestBreakpointWidth = this.sizesSortedByBreakpoint[0][1];\n if (entry.contentRect.width < smallestBreakpointWidth) {\n this.renderer.setAttribute(entry.target, sizeAttributeName, `<${smallestBreakpointName}`);\n } else {\n this.sizesSortedByBreakpoint.forEach(([size, width]) => {\n if (entry.contentRect.width >= width) {\n this.renderer.setAttribute(entry.target, sizeAttributeName, size);\n }\n });\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kirby-card-footer',\n templateUrl: './card-footer.component.html',\n styleUrls: ['./card-footer.component.scss'],\n})\nexport class CardFooterComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, HostBinding, Input } from '@angular/core';\n\nimport { NotificationColor } from '@kirbydesign/core';\n\nexport type CardFlagLevel = NotificationColor | 'info' | null;\n\n@Component({\n selector: 'kirby-card-header',\n templateUrl: './card-header.component.html',\n styleUrls: ['./card-header.component.scss'],\n})\nexport class CardHeaderComponent {\n @Input() title: string;\n @Input() subtitle: string;\n @Input() isTitleBold: boolean;\n @HostBinding('class')\n @Input()\n flagged: CardFlagLevel = null;\n}\n","/**\n * Performs a deep merge of objects and returns new object. Does not modify\n * objects (immutable).\n * It merges from into object to the left\n * eg. mergeDeep({a: 'will be overridden', b: 'some val'}, {a: 'new val'}) => {a: 'new val', b: 'some val'}\n *\n * @param originalObject object - Object to override,\n * @param overrideObject object - Object to override \"toOverride\" values with\n * @param config object - Configuration for how to merge.\n * mergeArrays determines if it should merge or override arrays\n * @returns object - New object with merged key/values\n */\nexport function mergeDeep(originalObject, overrideObject, config = { mergeArrays: false }) {\n const isObject = (obj) => obj && typeof obj === 'object';\n\n return [originalObject, overrideObject].reduce((mergedObject, obj) => {\n Object.keys(obj).forEach((key) => {\n const mergedObjectValue = mergedObject[key];\n const overrideObjectValue = obj[key];\n\n if (Array.isArray(mergedObjectValue) && Array.isArray(overrideObjectValue)) {\n mergedObject[key] = config.mergeArrays\n ? mergedObjectValue.concat(overrideObjectValue)\n : overrideObjectValue;\n } else if (isObject(mergedObjectValue) && isObject(overrideObjectValue)) {\n mergedObject[key] = mergeDeep(mergedObjectValue, overrideObjectValue);\n } else {\n mergedObject[key] = overrideObjectValue;\n }\n });\n\n return mergedObject;\n }, {});\n}\n\nexport function mergeDeepAll(...objects: Object[]): Object {\n const objectsWithoutUndefined = objects.filter((object) => object !== undefined);\n return objectsWithoutUndefined.reduce((originalObject, overrideObject) =>\n mergeDeep(originalObject, overrideObject)\n );\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { chart, Options } from 'highcharts';\nimport * as Highcharts from 'highcharts';\n\n// Docs on importing accessibility: https://www.highcharts.com/docs/chart-concepts/accessibility\n\ndeclare var require: any;\nrequire('highcharts/highcharts-more')(Highcharts);\nrequire('highcharts/modules/solid-gauge')(Highcharts);\nrequire('highcharts/modules/broken-axis')(Highcharts);\n\n@Injectable()\nexport class ChartDeprecatedHelper {\n chartContainer: ElementRef;\n\n public init(chartContainer: ElementRef) {\n this.chartContainer = chartContainer;\n }\n\n public renderChart(options: Options) {\n if (this.chartContainer && options.chart) {\n chart(this.chartContainer.nativeElement, options);\n }\n }\n}\n","export enum ChartDeprecatedType {\n PIE = 'pie',\n DONUT = 'donut',\n AREASPLINE = 'areaspline',\n TIMESERIES = 'timeseries',\n ACTIVITYGAUGE = 'activitygauge',\n BAR = 'bar',\n COLUMN = 'column',\n CUSTOM = 'custom',\n}\n","import { InjectionToken } from '@angular/core';\nimport { Options } from 'highcharts';\n\nexport const ACTIVITYGAUGE_OPTIONS = new InjectionToken<Options>('ActivityGaugeOptions');\nexport const ActivityGaugeOptions: Options = {\n chart: {\n style: {\n fontFamily: 'Roboto, sans-serif',\n fontWeight: '300',\n },\n backgroundColor: 'transparent',\n type: 'solidgauge',\n height: '110%',\n },\n accessibility: {\n description: '',\n },\n title: {\n align: 'center',\n verticalAlign: 'middle',\n text: '',\n y: 0,\n floating: false,\n style: {\n fontSize: '30px',\n color: '#fff',\n fontWeight: 'bold',\n },\n },\n subtitle: {\n text: '',\n align: 'center',\n y: 25,\n verticalAlign: 'middle',\n style: {\n color: '#fff',\n fontSize: '14px',\n fontWeight: 'normal',\n },\n },\n credits: {\n enabled: false,\n },\n tooltip: {\n enabled: false,\n animation: false,\n },\n pane: {\n startAngle: 0,\n endAngle: 360,\n background: [\n {\n backgroundColor: {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n stops: [\n [1, 'rgba(255, 255, 255, 0.3)'],\n [0, 'rgba(255, 255, 255, 0.3)'],\n ],\n },\n outerRadius: '112%',\n innerRadius: '88%',\n borderWidth: 0,\n },\n ],\n },\n yAxis: {\n min: 0,\n max: 100,\n lineWidth: 0,\n tickPositions: [],\n },\n plotOptions: {\n solidgauge: {\n dataLabels: {\n enabled: false,\n },\n linecap: 'round',\n stickyTracking: false,\n rounded: true,\n },\n },\n series: [\n {\n type: 'solidgauge',\n },\n ],\n};\n","import { InjectionToken } from '@angular/core';\nimport { Options } from 'highcharts';\n\nexport const AREASPLINE_OPTIONS = new InjectionToken<Options>('AreasplineOptions');\nexport const AreaSplineOptions: Options = {\n chart: {\n type: 'areaspline',\n borderWidth: 0,\n plotBorderWidth: 0,\n margin: 0,\n marginTop: 48,\n },\n accessibility: {\n description: '',\n },\n title: {\n text: '',\n },\n credits: {\n enabled: false,\n },\n exporting: {\n enabled: false,\n },\n tooltip: {\n enabled: true,\n animation: false,\n shape: 'square',\n borderColor: '#FFFFFF',\n shadow: false,\n backgroundColor: '#FFFFFF',\n style: {\n fontSize: '1.25rem',\n },\n formatter: function(): string {\n return String(this.y);\n },\n positioner: function() {\n return { x: this.chart.plotSizeX / 2 - this.label.width / 2, y: 0 };\n },\n },\n xAxis: {\n visible: false,\n minPadding: 0,\n maxPadding: 0,\n crosshair: {\n zIndex: 3,\n width: 1,\n color: '#177E17',\n },\n },\n yAxis: {\n visible: false,\n endOnTick: false,\n startOnTick: false,\n },\n plotOptions: {\n areaspline: {\n shadow: true,\n showInLegend: false,\n fillColor: {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 0.8 },\n stops: [\n [0, '#C9E5C9'],\n [1, '#FFFFFF'],\n ],\n },\n lineColor: '#177E17',\n lineWidth: 2,\n },\n series: {\n states: {\n hover: {\n halo: {\n size: 0,\n },\n },\n },\n marker: {\n enabled: false,\n states: {\n hover: {\n enabled: true,\n fillColor: '#177E17',\n },\n },\n },\n },\n },\n series: [\n {\n type: 'areaspline',\n },\n ],\n};\n","import { Options } from 'highcharts';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nconst getColor = DesignTokenHelper.getColor;\nconst fontSize = DesignTokenHelper.fontSize;\n\nfunction colorPoints() {\n var series = this.series;\n for (var i = 0, ie = series.length; i < ie; ++i) {\n var points = series[i].data;\n for (var j = 0, je = points.length; j < je; ++j) {\n if (points[j].graphic) {\n points[j].graphic.element.style.stroke = getColor('background-color').value;\n }\n }\n }\n}\n\nexport const barOptions: Options = {\n chart: {\n type: 'bar',\n animation: {\n duration: 150,\n },\n backgroundColor: 'transparent',\n events: {\n load: colorPoints,\n redraw: colorPoints,\n },\n },\n accessibility: {\n description: 'Bar chart',\n },\n credits: {\n enabled: false,\n },\n title: {\n text: '',\n },\n xAxis: {\n labels: {\n style: {\n fontSize: fontSize('s'),\n fontFamily: 'Roboto',\n color: getColor('black').value,\n },\n },\n min: 0,\n lineColor: 'transparent',\n },\n yAxis: {\n title: {\n text: '',\n },\n labels: {\n enabled: false,\n },\n min: 0,\n lineWidth: 0,\n minorGridLineWidth: 0,\n gridLineColor: 'transparent',\n minorTickLength: 0,\n tickLength: 0,\n maxPadding: 0,\n endOnTick: false,\n showLastLabel: false,\n showFirstLabel: false,\n },\n plotOptions: {\n bar: {\n events: {},\n },\n series: {\n color: getColor('secondary').value,\n stacking: 'normal',\n states: {\n hover: {\n enabled: false,\n },\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n tooltip: {\n enabled: false,\n },\n legend: {\n enabled: false,\n },\n};\n","import { Options } from 'highcharts';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nconst getColor = DesignTokenHelper.getColor;\nconst fontSize = DesignTokenHelper.fontSize;\n\nfunction colorPoints() {\n var series = this.series;\n for (var i = 0, ie = series.length; i < ie; ++i) {\n var points = series[i].data;\n for (var j = 0, je = points.length; j < je; ++j) {\n if (points[j].graphic) {\n points[j].graphic.element.style.stroke = getColor('secondary').value;\n }\n }\n }\n}\n\nexport const columnOptions: Options = {\n chart: {\n animation: {\n duration: 500,\n },\n backgroundColor: 'transparent',\n type: 'column',\n events: {\n load: colorPoints,\n redraw: colorPoints,\n },\n },\n title: {\n text: '',\n },\n accessibility: {\n description: 'Column chart',\n },\n xAxis: {\n labels: {\n style: {\n fontSize: fontSize('xxs'),\n fontFamily: 'Roboto',\n color: getColor('black').value,\n },\n },\n lineWidth: 0,\n minorGridLineWidth: 0,\n lineColor: 'transparent',\n minorTickLength: 0,\n tickLength: 0,\n },\n yAxis: {\n title: {\n text: '',\n },\n labels: {\n enabled: false,\n },\n min: 0,\n lineWidth: 0,\n minorGridLineWidth: 0,\n gridLineColor: 'transparent',\n minorTickLength: 0,\n tickLength: 0,\n showLastLabel: false,\n showFirstLabel: false,\n },\n credits: {\n enabled: false,\n },\n plotOptions: {\n column: {\n stacking: 'normal',\n },\n series: {\n color: getColor('secondary').value,\n zIndex: 10,\n states: {\n hover: {\n enabled: false,\n },\n inactive: {\n opacity: 1,\n },\n },\n },\n line: {\n className: 'avg-line',\n marker: {\n enabled: false,\n },\n allowPointSelect: false,\n },\n },\n tooltip: {\n enabled: false,\n },\n legend: {\n enabled: false,\n },\n};\n","import { InjectionToken } from '@angular/core';\nimport { Options } from 'highcharts';\n\nexport const DONUT_OPTIONS = new InjectionToken<Options>('DonutOptions');\nexport const DonutOptions: Options = {\n chart: {\n style: {\n fontFamily: 'Roboto',\n fontWeight: '300',\n },\n backgroundColor: 'transparent',\n type: '',\n },\n accessibility: {\n description: 'Donut chart',\n },\n title: {\n text: '',\n },\n tooltip: {\n enabled: false,\n animation: false,\n },\n legend: {\n layout: 'vertical',\n symbolRadius: 0,\n itemStyle: {\n fontSize: '.875rem',\n },\n },\n plotOptions: {\n pie: {\n colors: ['#015132', '#B2D1BF', '#AABC08', '#1FA05A', 'yellowgreen'],\n allowPointSelect: false,\n cursor: 'pointer',\n showInLegend: true,\n borderColor: null,\n dataLabels: {\n format: '{point.label}',\n enabled: true,\n connectorWidth: 0,\n distance: 5,\n style: {\n fontSize: '1rem',\n fontWeight: '200',\n },\n },\n point: {\n events: {\n legendItemClick: () => {\n // Prevent the default behavior (toggle visibility of slices when clicking on legends)\n return false;\n },\n },\n },\n states: {\n hover: {\n enabled: false,\n },\n },\n },\n series: {\n animation: true,\n dataLabels: {},\n states: {\n hover: {\n enabled: false,\n },\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n series: [\n {\n name: '',\n type: 'pie',\n },\n ],\n credits: {\n enabled: false,\n },\n exporting: {\n enabled: false,\n },\n responsive: {\n rules: [\n {\n condition: {\n minWidth: 640,\n },\n chartOptions: {\n legend: {\n layout: 'vertical',\n align: 'right',\n verticalAlign: 'middle',\n itemMarginTop: 12,\n symbolRadius: 0,\n symbolWidth: 14,\n symbolHeight: 14,\n x: -100,\n },\n },\n },\n {\n condition: {\n minWidth: 0,\n },\n chartOptions: {\n legend: {\n symbolRadius: 0,\n },\n },\n },\n ],\n },\n};\n","import { InjectionToken } from '@angular/core';\nimport { dateFormat, Options } from 'highcharts';\n\nexport const TIMESERIES_OPTIONS = new InjectionToken<Options>('TimeSeriesOptions');\nexport const TimeSeriesOptions: Options = {\n chart: {\n backgroundColor: {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 3 },\n stops: [\n [0, '#F6F6F6'],\n [1, '#808080'],\n ],\n },\n zoomType: 'x',\n type: 'timeseries',\n borderWidth: 0,\n plotBorderWidth: 0,\n margin: 0,\n marginTop: 48,\n },\n accessibility: {\n description: '',\n },\n title: {\n text: '',\n },\n subtitle: {\n text: '',\n },\n tooltip: {\n shadow: false,\n formatter: function() {\n // @ts-ignore\n return dateFormat('%e. %b', new Date(this.x)) + '.' + '<br/><b>' + this.y + '</b>';\n },\n //xDateFormat: '%d/%m',\n positioner: function(_labelWidth, _labelHeight, point) {\n return { x: point.x, y: 0 };\n },\n borderWidth: 0,\n },\n xAxis: {\n visible: false,\n lineColor: '#FFFFFF',\n tickColor: '#FFFFFF',\n labels: {\n style: {\n color: 'white',\n },\n },\n opposite: true,\n crosshair: {\n zIndex: 3,\n width: 1,\n color: '#00E89A',\n },\n type: 'datetime',\n tickInterval: 1,\n },\n yAxis: {\n visible: false,\n },\n legend: {\n enabled: false,\n },\n plotOptions: {\n area: {\n fillColor: '#01352C',\n marker: {\n lineWidth: 14,\n lineColor: 'rgba(255,255,255,0.2)',\n radius: 6,\n fillColor: '#00E89A',\n },\n lineColor: '#01352C',\n lineWidth: 1,\n states: {\n hover: {\n lineWidth: 1,\n },\n },\n threshold: null,\n },\n series: {\n marker: {\n enabledThreshold: 50,\n },\n },\n },\n series: [\n {\n type: 'area',\n name: 'USD to EUR',\n },\n ],\n};\n","import { Component, ElementRef, Inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport {\n Options,\n PlotSeriesDataLabelsOptions,\n XAxisBreaksOptions,\n XAxisOptions,\n YAxisOptions,\n} from 'highcharts';\n\nimport { mergeDeep } from '../../helpers/merge-deep';\n\nimport { ChartDeprecatedHelper } from './chart-deprecated-helper';\nimport { ChartDeprecatedType } from './chart-deprecated-type';\nimport { ActivityGaugeOptions, ACTIVITYGAUGE_OPTIONS } from './options/activitygauge';\nimport { AreaSplineOptions, AREASPLINE_OPTIONS } from './options/areaspline';\nimport { barOptions } from './options/bar';\nimport { columnOptions } from './options/column';\nimport { DonutOptions, DONUT_OPTIONS } from './options/donut';\nimport { TimeSeriesOptions, TIMESERIES_OPTIONS } from './options/timeseries';\n\n@Component({\n selector: 'kirby-chart-deprecated',\n template: '',\n styleUrls: ['./chart-deprecated.component.scss'],\n providers: [\n ChartDeprecatedHelper,\n { provide: DONUT_OPTIONS, useValue: DonutOptions },\n { provide: AREASPLINE_OPTIONS, useValue: AreaSplineOptions },\n { provide: TIMESERIES_OPTIONS, useValue: TimeSeriesOptions },\n { provide: ACTIVITYGAUGE_OPTIONS, useValue: ActivityGaugeOptions },\n ],\n})\nexport class ChartDeprecatedComponent implements OnChanges {\n @Input() data = [];\n @Input() categories: string[] = [];\n @Input() breaks: Array<XAxisBreaksOptions> = [];\n @Input() height = 300;\n @Input() type: ChartDeprecatedType = ChartDeprecatedType.PIE;\n @Input() description = '';\n @Input() showDataLabels = true;\n @Input() options: Options;\n mergedOptions: Options = {\n accessibility: {},\n };\n\n constructor(\n private chartHelper: ChartDeprecatedHelper,\n private hostElement: ElementRef,\n @Inject(DONUT_OPTIONS) public donutOptions: Options,\n @Inject(AREASPLINE_OPTIONS) public areasplineOptions: Options,\n @Inject(TIMESERIES_OPTIONS) public timeSeriesOptions: Options,\n @Inject(ACTIVITYGAUGE_OPTIONS) public activitygaugeOptions: Options\n ) {\n this.chartHelper.init(this.hostElement);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.type) {\n this.setupChartType();\n }\n this.updateProperties();\n this.chartHelper.renderChart(this.mergedOptions);\n }\n\n setupChartType() {\n switch (this.type) {\n case ChartDeprecatedType.DONUT: {\n this.mergedOptions = this.donutOptions;\n this.mergedOptions.chart.type = ChartDeprecatedType.PIE;\n this.mergedOptions.plotOptions.pie.innerSize = '50%';\n break;\n }\n case ChartDeprecatedType.PIE: {\n this.mergedOptions = this.donutOptions;\n this.mergedOptions.chart.type = this.type;\n this.mergedOptions.plotOptions.pie.innerSize = '0%';\n break;\n }\n case ChartDeprecatedType.AREASPLINE: {\n this.mergedOptions = this.areasplineOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n case ChartDeprecatedType.TIMESERIES: {\n this.mergedOptions = this.timeSeriesOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n case ChartDeprecatedType.ACTIVITYGAUGE: {\n this.mergedOptions = this.activitygaugeOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n case ChartDeprecatedType.COLUMN: {\n this.mergedOptions = columnOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n case ChartDeprecatedType.BAR: {\n this.mergedOptions = barOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n }\n }\n\n updateProperties() {\n this.mergedOptions.chart.height = this.height;\n this.mergedOptions.accessibility.description = this.description;\n switch (this.mergedOptions.chart.type) {\n case ChartDeprecatedType.PIE:\n case ChartDeprecatedType.DONUT: {\n this.setPieInput();\n break;\n }\n case ChartDeprecatedType.AREASPLINE: {\n this.setSeries('areaspline');\n break;\n }\n case ChartDeprecatedType.TIMESERIES: {\n this.setTimeseriesInput();\n break;\n }\n case ChartDeprecatedType.ACTIVITYGAUGE: {\n this.setActivitygaugeInput();\n break;\n }\n case ChartDeprecatedType.COLUMN: {\n this.setColumnInput();\n break;\n }\n case ChartDeprecatedType.BAR: {\n this.setBarInput();\n break;\n }\n }\n if (!!this.options) {\n this.mergedOptions = mergeDeep(this.mergedOptions, this.options);\n }\n }\n\n private setPieInput() {\n (this.mergedOptions.plotOptions.pie\n .dataLabels as PlotSeriesDataLabelsOptions).enabled = this.showDataLabels;\n this.setSeries('pie');\n }\n\n private setBarInput() {\n const dataMaxValue = Math.max(...this.data);\n this.mergedOptions.series = [\n {\n type: 'bar',\n name: 'InvisibleClickReceiver',\n data: this.data.map((dataEntry) => dataMaxValue - dataEntry),\n edgeColor: 'rgb(255, 255, 255, 0)',\n opacity: 0,\n },\n {\n type: 'bar',\n data: this.data,\n },\n ];\n (this.mergedOptions.xAxis as XAxisOptions).categories = this.categories;\n }\n\n private setColumnInput() {\n this.mergedOptions.series = [\n {\n type: 'column',\n data: this.data,\n },\n ];\n const dataMaxValue = Math.max(...this.data);\n ((this.mergedOptions.yAxis as YAxisOptions).tickPositioner = () => {\n var positions = [0, dataMaxValue];\n return positions;\n }),\n (this.mergedOptions.series = [\n {\n type: 'column',\n name: 'InvisibleClickReceiver',\n data: this.data.map((_, idx) => dataMaxValue - this.data[idx]),\n opacity: 0,\n },\n {\n type: 'column',\n data: this.data,\n },\n ]);\n (this.mergedOptions.xAxis as XAxisOptions).categories = this.categories;\n }\n\n private setActivitygaugeInput() {\n const data = this.data[0];\n this.mergedOptions.title.text = data.title;\n this.mergedOptions.subtitle.text = data.subtitle;\n if (data.paneBackgroundColor) {\n this.mergedOptions.pane.background = [\n {\n ...this.mergedOptions.pane.background[0],\n backgroundColor: data.paneBackgroundColor,\n },\n ];\n }\n if (data.color) {\n this.mergedOptions.title.style.color = data.color;\n this.mergedOptions.subtitle.style.color = data.color;\n }\n this.mergedOptions.series = [\n {\n type: 'solidgauge',\n data: data.series,\n },\n ];\n }\n\n private setTimeseriesInput() {\n this.setSeries('area');\n this.mergedOptions.xAxis = {\n ...this.mergedOptions.xAxis,\n breaks: this.breaks,\n };\n }\n\n private setSeries(type) {\n this.mergedOptions.series = [\n {\n type,\n data: this.data,\n },\n ];\n }\n}\n","import { ChartDataset as ChartJSDataset, ChartOptions, ChartType as ChartJSType } from 'chart.js';\n\nexport type ChartHighlightedElements = number[][];\n\nexport type ChartType = 'column' | 'bar' | 'line' | 'stock';\n\nexport type ChartTypeConfig = { type: ChartJSType; options?: ChartOptions };\n\nexport type ChartTypesConfig = {\n [key in ChartType]: ChartTypeConfig;\n};\n\nexport type ChartDataLabelOptions = {\n showMin?: boolean;\n showMax?: boolean;\n showCurrent?: boolean;\n locale?: ChartLocale;\n valueSuffix?: string;\n};\n\nexport type ChartLocale = 'da-DK' | 'en-US';\n\n/* \n kirbyOptions.isStockChart is a hacky solution to this issue: \n https://github.com/kirbydesign/designsystem/issues/1967 \n*/\nexport type ChartDataset = {\n kirbyOptions?: { highlightedElements?: number[]; isStockChart?: boolean };\n} & ChartJSDataset;\n\nexport function isNumberArray(value: any): value is number[] {\n return Array.isArray(value) && value.every((item) => typeof item === 'number');\n}\n","import {\n Directive,\n Input,\n ComponentFactoryResolver,\n OnInit,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ComponentConfiguration } from './component-configuration';\nimport { DynamicComponent } from './dynamic-component';\n\n@Directive({\n selector: '[kirbyLoadComponent]',\n})\nexport class ComponentLoaderDirective implements OnInit {\n // tslint:disable-next-line:no-input-rename\n @Input('kirbyLoadComponent') configuration: ComponentConfiguration;\n @Input() cssClass: string;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.loadCard();\n }\n\n loadCard() {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(\n this.configuration.component\n );\n this.viewContainerRef.clear();\n const componentRef = this.viewContainerRef.createComponent(componentFactory);\n if (componentRef && componentRef.location && componentRef.location.nativeElement) {\n this.renderer.addClass(componentRef.location.nativeElement, this.cssClass);\n }\n (<DynamicComponent>componentRef.instance).data = this.configuration.data;\n }\n}\n","import _deepCopy from 'ts-deepcopy';\n\n/**\n * Do a deep copy of object that supports the composite data type Function\n *\n * @see https://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-deep-clone-an-object-in-javascript#answer-122704\n *\n * @param obj\n * @returns obj\n */\nexport function deepCopy<T>(obj: T): T {\n return _deepCopy<T>(obj);\n}\n","/* \n Utility function to check if a given element \n has an ancestor with a specific node name. \n\n Can be given a 'stopNodeName' to limit the search\n as to not climb all the way up through the DOM tree. \n\n Returns true when element has the ancestorNodeName \n or an ancestor has the ancestorNodeName. \n\n Returns false otherwise.\n*/\n\nexport const elementHasAncestor = (\n element: HTMLElement,\n ancestorNodeName: string,\n stopNodeName?: string\n) => {\n switch (element?.nodeName) {\n case undefined:\n case stopNodeName?.toUpperCase():\n return false;\n case ancestorNodeName.toUpperCase():\n return true;\n default:\n return elementHasAncestor(element.parentElement, ancestorNodeName, stopNodeName);\n }\n};\n","// re-export helpers from core, to preserve backwards compatability\n// of 'designsystem' library\nexport * from './element-has-ancestor';\nexport * from './color-helper';\nexport * from './design-token-helper';\nexport * from './string-helper';\nexport * from './theme-color.type';\nexport * from './platform.service';\n","import { AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\n\nimport { ColorHelper } from '../../../helpers';\n\nconst { getThemeColorHexString } = ColorHelper;\n\n/* The chart.js annotation does not allow for changing the \ndefaults it comes with. In order to have sensible defaults \nthis object is used instead and manually merged with the \nrest of the annotations object */\nconst borderColor = getThemeColorHexString('semi-dark');\nconst borderDash: [number, number] = [6, 3];\nconst borderWidth = 1;\n\nexport const CHART_ANNOTATIONS_CONFIG: AnnotationTypeRegistry = {\n line: {\n borderDash,\n borderWidth,\n borderColor,\n },\n ellipse: {\n borderDash,\n borderWidth,\n borderColor,\n backgroundColor: 'transparent',\n },\n box: {\n borderDash,\n borderWidth,\n borderColor,\n backgroundColor: 'transparent',\n },\n point: {\n backgroundColor: 'initial',\n },\n};\n","import { ActiveElement, Chart, ChartEvent, ChartOptions } from 'chart.js';\n\n/* Allows for adding functionality to interactions chart.js while \npreserving the interaction functionality the consumer of the component has \npassed by being provided as a callback. */\nexport const CHART_INTERACTION_FUNCTIONS_EXTENSIONS = {\n onHover: (\n _event: ChartEvent,\n activeElements: ActiveElement[],\n _chart: Chart,\n callback: ChartOptions['onHover']\n ) => {\n if (_chart.options.onClick) {\n _chart.canvas.style.cursor = activeElements[0] ? 'pointer' : 'default';\n }\n\n if (callback) callback(_event, activeElements, _chart);\n },\n};\n","import { ChartTypeRegistry, Color, Point, TooltipItem, TooltipLabelStyle } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport { Align } from 'chartjs-plugin-datalabels/types/options';\n\nimport { ColorHelper, DesignTokenHelper } from '../../../helpers';\nimport { ChartTypesConfig } from '../chart.types';\n\nconst { fontSize } = DesignTokenHelper;\nconst { getThemeColorHexString, getThemeColorRgbString } = ColorHelper;\n\n/**\n * A filter to read a chartpoint from a Chart.js point context (used for chartdata points). Context is provided by Chart.js.\n */\nconst getChartPointFromContext = (context: Context): Point => {\n return context.dataset.data[context.dataIndex] as Point;\n};\n\nexport const CHART_TYPES_CONFIG: ChartTypesConfig = {\n bar: {\n type: 'bar',\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'y',\n scales: {\n y: {\n grid: {\n drawBorder: false,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('s')),\n },\n },\n },\n },\n elements: {\n point: {\n radius: 0,\n },\n line: {\n borderColor: getThemeColorHexString('medium'),\n },\n },\n },\n },\n column: {\n type: 'bar',\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'x',\n scales: {\n x: {\n grid: {\n drawBorder: false,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0.2,\n borderColor: getThemeColorHexString('medium'),\n },\n point: {\n radius: 0,\n },\n },\n },\n },\n line: {\n type: 'line',\n options: {\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n grid: {\n borderColor: getThemeColorHexString('medium'),\n borderWidth: 1,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n point: {\n radius: 0,\n },\n },\n },\n },\n stock: {\n type: 'line',\n options: {\n responsive: true,\n animation: {\n duration: 0,\n },\n layout: {\n padding: {\n left: 20,\n right: 20,\n top: 30,\n bottom: 0,\n },\n },\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n grid: {\n lineWidth: 0,\n },\n ticks: {\n maxRotation: 0,\n autoSkipPadding: 120,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n y: {\n position: 'right',\n display: true,\n grid: {\n drawBorder: false,\n },\n ticks: {\n display: true,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0, // Smooth curve (0 = no smoothing)\n borderWidth: 2,\n },\n point: {\n hitRadius: 20,\n radius: 0,\n hoverRadius: 0,\n hoverBorderWidth: 0,\n },\n },\n normalized: true,\n plugins: {\n tooltip: {\n padding: 10,\n\n enabled: true,\n mode: 'index',\n intersect: false,\n backgroundColor: getThemeColorHexString('semi-light'),\n titleColor: getThemeColorHexString('semi-light-contrast'),\n bodyColor: getThemeColorHexString('semi-light-contrast'),\n caretSize: 0,\n bodySpacing: 5,\n titleSpacing: 5,\n borderColor: 'transparent',\n callbacks: {\n labelColor: (tooltipItem: TooltipItem<keyof ChartTypeRegistry>) => {\n return {\n backgroundColor: tooltipItem.dataset.borderColor,\n } as TooltipLabelStyle;\n },\n },\n },\n datalabels: {\n backgroundColor: (context: Context) => context.dataset.borderColor as Color,\n color: getThemeColorHexString('white'),\n borderRadius: 3,\n font: {\n lineHeight: 1,\n size: parseInt(fontSize('xs')),\n },\n padding: {\n top: 6,\n left: 5,\n right: 5,\n bottom: 5,\n },\n offset: 5,\n align: (context: Context): Align =>\n (getChartPointFromContext(context) as any)?.datalabel.position,\n display: (context: Context): boolean =>\n !!(getChartPointFromContext(context) as any)?.datalabel,\n formatter: (value: any): string => value.datalabel.value,\n },\n },\n },\n },\n};\n","import { Injectable } from '@angular/core';\nimport { ChartType as ChartJSType } from 'chart.js';\nimport { AnnotationType, AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\n\nimport { deepCopy } from '../../../helpers/deep-copy';\nimport { ChartType, ChartTypeConfig } from '../chart.types';\n\nimport { CHART_ANNOTATIONS_CONFIG } from './annotations.config';\nimport { CHART_INTERACTION_FUNCTIONS_EXTENSIONS } from './interaction-functions-extensions.config';\nimport { CHART_TYPES_CONFIG } from './type.config';\n\n@Injectable()\nexport class ChartConfigService {\n public getTypeConfig(chartType: ChartType): ChartTypeConfig {\n /* Deep copy to avoid Chart object modifying parts of CHART_TYPES_CONFIG \n as it copies by reference when initialized */\n return deepCopy(CHART_TYPES_CONFIG[chartType]);\n }\n\n public getAnnotationDefaults(type: AnnotationType): AnnotationTypeRegistry[AnnotationType] {\n return CHART_ANNOTATIONS_CONFIG[type];\n }\n\n public getInteractionFunctionsExtensions() {\n return CHART_INTERACTION_FUNCTIONS_EXTENSIONS;\n }\n\n /* Our types does not always map 1 to 1 to the same type \n that the chart.js chart is actually oconfigured with. Therefore this function \n for looking up the ChartJSType of a type. */\n public chartTypeToChartJSType(chartType: ChartType): ChartJSType {\n return CHART_TYPES_CONFIG[chartType]['type'] as ChartJSType;\n }\n}\n","/* \n The marker plugin is heavily inspired by https://chartjs-plugin-crosshair.netlify.app\n The project appears stale and only the vertical line feature is needed\n part of the plugin that was actually needed is implemented here. \n*/\n\nimport { Chart } from 'chart.js';\nimport { valueOrDefault } from 'chart.js/helpers';\n\nimport { ChartDataset } from '../../chart.types';\n\nvar defaultOptions = {\n line: {\n color: 'black',\n width: 1,\n dashPattern: [],\n },\n snap: {\n enabled: false,\n },\n};\n\nconst hasMarkerConfiguration = (chart: Chart) => {\n /* \n Hacky solution. Should be fixed in this issue: https://github.com/kirbydesign/designsystem/issues/1967\n */\n return chart.data.datasets.some((dataset: ChartDataset) => !!dataset?.kirbyOptions?.isStockChart);\n};\n\nexport default {\n id: 'marker',\n\n afterInit: function(chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n\n var xScaleType = chart.config.options.scales.x.type;\n\n if (\n xScaleType !== 'linear' &&\n xScaleType !== 'time' &&\n xScaleType !== 'category' &&\n xScaleType !== 'logarithmic'\n ) {\n return;\n }\n\n if (chart.options.plugins.marker === undefined) {\n chart.options.plugins.marker = defaultOptions;\n }\n\n chart.marker = {\n enabled: false,\n suppressUpdate: false,\n x: null,\n originalData: [],\n originalXRange: {},\n dragStarted: false,\n dragStartX: null,\n dragEndX: null,\n suppressTooltips: false,\n ignoreNextEvents: 0,\n };\n },\n\n getOption: function(chart, category, name) {\n return valueOrDefault(\n chart.options.plugins.marker[category]\n ? chart.options.plugins.marker[category][name]\n : undefined,\n defaultOptions[category][name]\n );\n },\n\n getXScale: function(chart) {\n return chart.data.datasets.length ? chart.scales[chart.getDatasetMeta(0).xAxisID] : null;\n },\n getYScale: function(chart) {\n return chart.scales[chart.getDatasetMeta(0).yAxisID];\n },\n\n afterEvent: function(chart, event) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n if (chart.config.options.scales.x.length == 0) {\n return;\n }\n\n let e = event.event;\n\n var xScaleType = chart.config.options.scales.x.type;\n\n if (\n xScaleType !== 'linear' &&\n xScaleType !== 'time' &&\n xScaleType !== 'category' &&\n xScaleType !== 'logarithmic'\n ) {\n return;\n }\n\n var xScale = this.getXScale(chart);\n\n if (!xScale) {\n return;\n }\n\n if (chart.marker.ignoreNextEvents > 0) {\n chart.marker.ignoreNextEvents -= 1;\n return;\n }\n\n // fix for Safari\n var buttons = e.native.buttons === undefined ? e.native.which : e.native.buttons;\n if (e.native.type === 'mouseup') {\n buttons = 0;\n }\n\n chart.marker.enabled =\n e.type !== 'mouseout' &&\n e.x > xScale.getPixelForValue(xScale.min) &&\n e.x < xScale.getPixelForValue(xScale.max);\n\n if (!chart.marker.enabled && !chart.marker.suppressUpdate) {\n if (e.x > xScale.getPixelForValue(xScale.max)) {\n // suppress future updates to prevent endless redrawing of chart\n chart.marker.suppressUpdate = true;\n chart.update('none');\n }\n chart.marker.dragStarted = false; // cancel zoom in progress\n return false;\n }\n chart.marker.suppressUpdate = false;\n\n chart.marker.x = e.x;\n\n chart.draw();\n },\n doDraw: function(chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n\n if (!chart.marker.enabled) {\n return;\n }\n\n this.drawTraceLine(chart);\n this.interpolateValues(chart);\n this.drawTracePoints(chart);\n\n return true;\n },\n beforeDraw: function(chart) {\n return this.doDraw(chart);\n },\n // Logic moved to beforeDraw in order\n // for the vertical line to be drawn\n // under tooltip and datalabels.\n // afterDraw: function(chart) {\n // return this.doDraw(chart);\n // },\n\n drawTraceLine: function(chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n var yScale = this.getYScale(chart);\n\n var lineWidth = this.getOption(chart, 'line', 'width');\n var color = this.getOption(chart, 'line', 'color');\n var dashPattern = this.getOption(chart, 'line', 'dashPattern');\n var snapEnabled = this.getOption(chart, 'snap', 'enabled');\n\n var lineX = chart.marker.x;\n\n if (snapEnabled && chart._active.length) {\n lineX = chart._active[0].element.x;\n }\n\n chart.ctx.beginPath();\n chart.ctx.setLineDash(dashPattern);\n chart.ctx.moveTo(lineX, yScale.getPixelForValue(yScale.max));\n chart.ctx.lineWidth = lineWidth;\n chart.ctx.strokeStyle = color;\n chart.ctx.lineTo(lineX, yScale.getPixelForValue(yScale.min));\n chart.ctx.stroke();\n chart.ctx.setLineDash([]);\n },\n\n drawTracePoints: function(chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n var dataset = chart.data.datasets[chartIndex];\n var meta = chart.getDatasetMeta(chartIndex);\n\n var yScale = chart.scales[meta.yAxisID];\n\n if (meta.hidden || !dataset.interpolate) {\n continue;\n }\n\n chart.ctx.beginPath();\n chart.ctx.arc(\n chart.marker.x,\n yScale.getPixelForValue(dataset.interpolatedValue),\n 3,\n 0,\n 2 * Math.PI,\n false\n );\n chart.ctx.fillStyle = 'white';\n chart.ctx.lineWidth = 2;\n chart.ctx.strokeStyle = dataset.borderColor;\n chart.ctx.fill();\n chart.ctx.stroke();\n }\n },\n\n interpolateValues: function(chart) {\n for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n var dataset = chart.data.datasets[chartIndex];\n\n var meta = chart.getDatasetMeta(chartIndex);\n\n var xScale = chart.scales[meta.xAxisID];\n var xValue = xScale.getValueForPixel(chart.marker.x);\n\n if (meta.hidden || !dataset.interpolate) {\n continue;\n }\n\n var data = dataset.data;\n var index = data.findIndex(function(o) {\n return o.x >= xValue;\n });\n var prev = data[index - 1];\n var next = data[index];\n\n if (chart.data.datasets[chartIndex].steppedLine && prev) {\n dataset.interpolatedValue = prev.y;\n } else if (prev && next) {\n var slope = (next.y - prev.y) / (next.x - prev.x);\n dataset.interpolatedValue = prev.y + (xValue - prev.x) * slope;\n } else {\n dataset.interpolatedValue = NaN;\n }\n }\n },\n};\n","import { ChartType, ScriptableContext } from 'chart.js';\n\nimport { ColorHelper } from '../../../helpers';\nimport { ChartDataset } from '../chart.types';\n\nconst { getThemeColorHexString } = ColorHelper;\n\nexport const hoverBackgroundColor = getThemeColorHexString('primary');\nexport const backgroundColor = getThemeColorHexString('secondary');\n\n// Highlight elements that are added to the highlightedElements array\nexport function scriptedBackgroundColor(context: ScriptableContext<ChartType>) {\n const dataset = context.dataset as ChartDataset;\n const highlightedElements = dataset?.kirbyOptions?.highlightedElements;\n\n if (highlightedElements && highlightedElements.includes(context.dataIndex)) {\n return hoverBackgroundColor;\n } else {\n return backgroundColor;\n }\n}\n\n// Only adds a hovercolor if an onClick handler is provided\nexport function scriptedHoverBackgroundColor(context: ScriptableContext<ChartType>) {\n if (context.chart.options.onClick) {\n return hoverBackgroundColor;\n }\n}\n","import { ColorHelper } from '../../../helpers';\n\nimport { scriptedBackgroundColor, scriptedHoverBackgroundColor } from './shared.utils';\n\nconst { getThemeColorHexString } = ColorHelper;\n\nexport const CHART_GLOBAL_DEFAULTS = {\n maintainAspectRatio: false,\n color: getThemeColorHexString('black'),\n resizeDelay: 10,\n elements: {\n bar: {\n backgroundColor: scriptedBackgroundColor,\n hoverBackgroundColor: scriptedHoverBackgroundColor,\n },\n line: {\n borderColor: scriptedBackgroundColor,\n borderWidth: 2,\n tension: 0.3,\n },\n },\n scales: {\n linear: {\n display: false,\n ticks: {\n display: false,\n },\n },\n category: {\n display: true,\n grid: {\n display: false,\n },\n },\n },\n font: {\n family: 'Roboto',\n },\n plugins: {\n legend: {\n display: false,\n },\n datalabels: {\n display: false,\n },\n tooltip: {\n enabled: false,\n },\n },\n};\n","import {\n BarController,\n BarElement,\n CategoryScale,\n Chart,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Tooltip,\n} from 'chart.js';\nimport 'chartjs-adapter-date-fns';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\nimport { mergeDeepAll } from '../../../helpers/merge-deep';\nimport MarkerPlugin from '../chart-js/chartjs-plugin-marker/chartjs-plugin-marker';\nimport { CHART_GLOBAL_DEFAULTS } from '../configs/global-defaults.config';\n\nconst CHART_SCALES = [CategoryScale, LinearScale, TimeScale];\nconst CHART_ELEMENTS = [BarElement, LineElement, PointElement];\nconst CHART_CONTROLLERS = [BarController, LineController];\nconst CHART_PLUGINS = [annotationPlugin, Filler, ChartDataLabels, Tooltip, MarkerPlugin];\n\n/* Order matters; defaults must be merged after register as \n register modifies the Chart.defaults objects */\nChart.register(Legend, ...CHART_SCALES, ...CHART_ELEMENTS, ...CHART_CONTROLLERS, ...CHART_PLUGINS);\n\n/* Chart.defaults is read only; set each key modified in \n CHART_GLOBAL_DEFAULTS manually */\nconst mergedDefaults = mergeDeepAll(Chart.defaults, CHART_GLOBAL_DEFAULTS);\nObject.entries(CHART_GLOBAL_DEFAULTS).forEach(([key]) => {\n Chart.defaults[key] = mergedDefaults[key];\n});\n\nexport { Chart };\n","import { ElementRef, Injectable } from '@angular/core';\nimport { ActiveElement, ChartConfiguration, ChartOptions, ScatterDataPoint } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\nimport { toDate } from 'date-fns';\n\nimport { mergeDeepAll } from '../../../helpers/merge-deep';\nimport {\n ChartDataLabelOptions,\n ChartDataset,\n ChartHighlightedElements,\n ChartLocale,\n ChartType,\n isNumberArray,\n} from '../chart.types';\nimport { ChartConfigService } from '../configs/chart-config.service';\n\nimport { Chart } from './configured-chart-js';\n\nconst CHART_LOCALE_DEFAULT = 'en-US';\n\n@Injectable()\nexport class ChartJSService {\n private chart: Chart;\n private dataLabelOptions: ChartDataLabelOptions;\n private highlightedElements: ChartHighlightedElements;\n private chartType: ChartType;\n private locale: ChartLocale;\n\n constructor(private chartConfigService: ChartConfigService) {}\n\n public renderChart(args: {\n targetElement: ElementRef<HTMLCanvasElement>;\n type: ChartType;\n data: ChartDataset[] | number[];\n labels?: string[] | string[][];\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n dataLabelOptions?: ChartDataLabelOptions;\n highlightedElements?: ChartHighlightedElements;\n }): void {\n const {\n targetElement,\n type,\n data,\n labels,\n customOptions,\n annotations,\n dataLabelOptions,\n highlightedElements,\n } = args;\n\n this.dataLabelOptions = dataLabelOptions || null;\n this.highlightedElements = highlightedElements || null;\n this.chartType = type;\n this.locale = dataLabelOptions?.locale || CHART_LOCALE_DEFAULT;\n\n const datasets = this.createDatasets(data);\n\n const options = this.createOptionsObject({\n customOptions,\n annotations,\n dataLabelOptions,\n });\n let config = this.createConfigurationObject(type, datasets, options, labels);\n\n this.initializeNewChart(targetElement.nativeElement, config);\n }\n\n public redrawChart() {\n this.chart.update();\n }\n\n public updateData(data: ChartDataset[] | number[]): void {\n const datasets = this.createDatasets(data);\n\n this.chart.data.datasets = datasets;\n }\n\n public updateLabels(labels: string[] | string[][]) {\n this.chart.data.labels = labels;\n }\n\n public updateType(type: ChartType, customOptions?: ChartOptions) {\n if (type === 'bar' || type === 'column') {\n /* indexAxis does not update predictably; update by replacing \n the chart entirely instead */\n this.destructivelyUpdateType(type, customOptions);\n } else {\n this.nonDestructivelyUpdateType(type, customOptions);\n }\n }\n\n public setDataLabelOptions(dataLabelOptions: ChartDataLabelOptions) {\n this.dataLabelOptions = dataLabelOptions;\n }\n\n public updateOptions(customOptions: ChartOptions, type: ChartType) {\n const annotations = this.getExistingChartAnnotations();\n this.chartType = type;\n this.chart.options = this.createOptionsObject({ customOptions, annotations });\n }\n\n public updateAnnotations(annotations: AnnotationOptions[]) {\n const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);\n this.chart.options.plugins.annotation.annotations = annotationsWithDefaults;\n }\n\n public updateHighlightedElements(highlightedElements?: ChartHighlightedElements) {\n this.highlightedElements = highlightedElements;\n const oldDatasets = this.chart.data.datasets as ChartDataset[];\n\n // Clear old datasets of highlighted elements\n oldDatasets.map((dataset) => {\n if (dataset?.kirbyOptions?.highlightedElements) {\n delete dataset.kirbyOptions.highlightedElements;\n }\n });\n\n this.chart.data.datasets = this.createDatasets(oldDatasets);\n }\n\n private getExistingChartAnnotations(): AnnotationOptions[] {\n const annotations = this.chart.options.plugins?.annotation?.annotations;\n /* In browser chart.js might return annotations as a Proxy object; force it to be an array.\n Each annotationOption in the resulting array will also be a Proxy object. \n But internally chart.js will just work with them as normal values */\n if (annotations !== undefined) {\n return Object.keys(annotations).map((key) => annotations[key]);\n } else {\n return [];\n }\n }\n\n private destructivelyUpdateType(type: ChartType, customOptions?: ChartOptions) {\n const datasets = this.chart.data.datasets as ChartDataset[];\n const labels = this.chart.data.labels;\n const annotations = this.getExistingChartAnnotations();\n\n this.chartType = type;\n const options = this.createOptionsObject({ customOptions, annotations });\n const config = this.createConfigurationObject(type, datasets, options, labels);\n const canvasElement = this.chart.canvas;\n\n this.chart.destroy();\n this.initializeNewChart(canvasElement, config);\n }\n\n private nonDestructivelyUpdateType(chartType: ChartType, customOptions?: ChartOptions) {\n const annotations = this.getExistingChartAnnotations();\n this.chartType = chartType;\n const options = this.createOptionsObject({\n customOptions,\n annotations,\n });\n\n this.chart.options = options;\n this.chart.config.type = this.chartConfigService.chartTypeToChartJSType(chartType);\n }\n\n private initializeNewChart(canvasElement: HTMLCanvasElement, config: ChartConfiguration) {\n this.chart = new Chart(canvasElement, config);\n }\n\n private createBlankLabels(datasets: ChartDataset[]): string[] {\n const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n );\n return Array(largestDataset.data.length).fill('');\n }\n\n private applyDefaultsToAnnotations(annotations: AnnotationOptions[]) {\n return annotations.map((annotation) => {\n const annotationTypeDefaults = this.chartConfigService.getAnnotationDefaults(annotation.type);\n return mergeDeepAll(annotationTypeDefaults, annotation);\n });\n }\n\n private createAnnotationPluginOptionsObject(annotations: AnnotationOptions[]) {\n const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);\n return {\n plugins: {\n annotation: {\n annotations: annotationsWithDefaults,\n },\n },\n };\n }\n\n private applyInteractionFunctionsExtensions(options: ChartOptions): ChartOptions {\n const interactionFunctionsExtensions = this.chartConfigService.getInteractionFunctionsExtensions();\n Object.entries(interactionFunctionsExtensions).forEach(([key, _]) => {\n const callback = options[key];\n options[key] = (e: Event, a: ActiveElement[], c: Chart) => {\n interactionFunctionsExtensions[key](e, a, c, callback);\n };\n });\n return options;\n }\n\n private createStockOptionsObject(dataLabelOptions: ChartDataLabelOptions) {\n return {\n locale: this.locale,\n plugins: {\n tooltip: {\n callbacks: {\n title: (tooltipItems) => {\n const date = toDate((tooltipItems[0]?.raw as any)?.x);\n if (date.valueOf()) {\n return date.toLocaleTimeString(this.locale, {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n });\n }\n },\n label: (context) => {\n // It's not possible to add spacing between color legend and text so we\n // prefix with a space.\n return ' ' + context.formattedValue + (dataLabelOptions.valueSuffix || '');\n },\n },\n },\n },\n scales: {\n y: {\n ticks: {\n callback: (value) => {\n return value + (dataLabelOptions.valueSuffix || '');\n },\n },\n },\n },\n };\n }\n\n private createOptionsObject(args: {\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n dataLabelOptions?: ChartDataLabelOptions;\n }): ChartOptions {\n const { customOptions, annotations, dataLabelOptions: chartDataLabelOptions } = args;\n\n const typeConfig = this.chartConfigService.getTypeConfig(this.chartType);\n const typeConfigOptions = typeConfig?.options;\n const annotationPluginOptions = annotations\n ? this.createAnnotationPluginOptionsObject(annotations)\n : {};\n const stockOptions: ChartOptions =\n this.chartType === 'stock' ? this.createStockOptionsObject(chartDataLabelOptions) : {};\n\n let options: ChartOptions = mergeDeepAll(\n stockOptions,\n typeConfigOptions,\n customOptions,\n annotationPluginOptions\n );\n\n return this.applyInteractionFunctionsExtensions(options);\n }\n\n private getDefaultStockLabels(datasets: ChartDataset[], locale: ChartLocale) {\n const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n );\n return largestDataset.data.map((point: ScatterDataPoint) =>\n toDate(point.x).toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n })\n );\n }\n\n private createConfigurationObject(\n type: ChartType,\n datasets: ChartDataset[],\n options: ChartOptions,\n labels?: unknown[]\n ): ChartConfiguration {\n const typeConfig = this.chartConfigService.getTypeConfig(type);\n\n const labelsToApply = (() => {\n if (type === 'stock') {\n /* \n The time scale will auto generate labels based on data. \n It should be possible to pass an empty array to get the default \n behaviour of chart.js when using stock chart. \n\n TODO: Simplify to always pass labels, if given, to chart.js.\n Would be a breaking change. See issue: \n https://github.com/kirbydesign/designsystem/issues/2085\n */\n const shouldUseTimescaleLabels =\n labels?.length === 0 && options?.scales?.x?.type === 'time';\n if (shouldUseTimescaleLabels) return labels;\n return this.getDefaultStockLabels(datasets, this.locale);\n } else if (labels?.length > 0) {\n return labels;\n } else {\n return this.createBlankLabels(datasets);\n }\n })();\n\n return mergeDeepAll(typeConfig, {\n data: {\n labels: labelsToApply,\n datasets,\n },\n options,\n }) as ChartConfiguration;\n }\n\n private addHighlightedElementsToDatasets(\n highlightedElements: ChartHighlightedElements,\n datasets: ChartDataset[]\n ) {\n highlightedElements.forEach(([datasetIndex, dataIndex]) => {\n const dataset = datasets[datasetIndex];\n if (!dataset) return;\n\n if (dataset?.kirbyOptions?.highlightedElements) {\n dataset.kirbyOptions.highlightedElements.push(dataIndex);\n } else {\n dataset.kirbyOptions = {\n ...dataset.kirbyOptions,\n highlightedElements: [dataIndex],\n };\n }\n });\n }\n private createDatasets(data: ChartDataset[] | number[]): ChartDataset[] {\n // We need to modify the datasets in order to add datalabels.\n if (\n this.dataLabelOptions?.showCurrent ||\n this.dataLabelOptions?.showMax ||\n this.dataLabelOptions?.showMin\n ) {\n data = this.addDataLabelsData(data);\n }\n let datasets = isNumberArray(data) ? [{ data }] : data;\n if (this.highlightedElements)\n this.addHighlightedElementsToDatasets(this.highlightedElements, datasets);\n\n /* \n Hacky solution. Should be fixed in this issue:\n https://github.com/kirbydesign/designsystem/issues/1967 \n */\n if (this.chartType === 'stock') {\n datasets.forEach((dataset) => {\n dataset.kirbyOptions = {\n ...dataset.kirbyOptions,\n isStockChart: true,\n };\n });\n }\n\n return datasets;\n }\n /**\n * Decorate ChartDataset with properties to allow for datalabels.\n *\n * @param data\n * @returns ChartDataset[]\n */\n public addDataLabelsData(data: ChartDataset[] | number[]): ChartDataset[] {\n if (isNumberArray(data)) {\n throw Error(\"Currently it's impossible to add dataLabels to non ScatterDataPoint datasets\");\n }\n\n const decorateDataPoint = (\n set: ChartDataset,\n axis: 'x' | 'y',\n direction: 'high' | 'low',\n position: 'bottom' | 'top' | 'left' | 'right'\n ): void => {\n const { value, pointer } = this.locateValueIndexInDataset(set, axis, direction);\n set.data[pointer] = {\n ...(set.data[pointer] as ScatterDataPoint),\n datalabel: {\n value: value + (this.dataLabelOptions.valueSuffix || ''),\n position,\n },\n } as ScatterDataPoint;\n };\n\n data.map((set) => {\n if (this.dataLabelOptions.showMin) {\n decorateDataPoint(set, 'y', 'low', 'bottom');\n }\n if (this.dataLabelOptions.showMax) {\n decorateDataPoint(set, 'y', 'high', 'top');\n }\n if (this.dataLabelOptions.showCurrent) {\n decorateDataPoint(set, 'x', 'high', 'right');\n }\n });\n return data;\n }\n\n private locateValueIndexInDataset(\n dataset: ChartDataset,\n axis: string,\n direction: 'low' | 'high'\n ): { value: number; pointer: number } {\n let pointer: number;\n let value: number;\n dataset.data.forEach((datapoint, index) => {\n if (direction == 'low' && (!value || datapoint[axis] < value)) {\n value = datapoint['y'];\n pointer = index;\n }\n if (direction == 'high' && (!value || datapoint[axis] > value)) {\n value = datapoint['y'];\n pointer = index;\n }\n });\n return { value, pointer };\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ChartOptions } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ResizeObserverFactory } from '../shared';\n\nimport { ChartJSService } from './chart-js/chart-js.service';\nimport {\n ChartDataLabelOptions,\n ChartDataset,\n ChartHighlightedElements,\n ChartType,\n} from './chart.types';\n\nconst DATA_LABELS_DEPRECATION_WARNING =\n 'Deprecation warning: The \"kirby-chart\" input property \"dataLabels\" will be removed in a future release of Kirby designsystem. Use \"labels\" instead. For more information see the following announcement: https://github.com/kirbydesign/designsystem/discussions/1980';\n\n@Component({\n selector: 'kirby-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.scss'],\n providers: [ChartJSService],\n})\nexport class ChartComponent implements AfterViewInit, OnChanges {\n @Input() type: ChartType = 'column';\n @Input() data: ChartDataset[] | number[];\n\n private _labels: string[] | string[][];\n\n get labels(): string[] | string[][] {\n return this._labels;\n }\n @Input() set labels(value: string[] | string[][]) {\n this._labels = value;\n }\n @Input() set dataLabels(value: string[] | string[][]) {\n console.warn(DATA_LABELS_DEPRECATION_WARNING);\n this._labels = value;\n }\n\n @Input() customOptions?: ChartOptions;\n @Input() dataLabelOptions?: ChartDataLabelOptions;\n @Input() annotations?: AnnotationOptions[];\n @Input() highlightedElements?: ChartHighlightedElements;\n\n @HostBinding('style.--kirby-chart-height')\n _height: string;\n @Input() set height(value: string | number) {\n this._height = typeof value === 'number' ? `${value}px` : value;\n }\n\n @ViewChild('chartCanvas')\n canvasElement: ElementRef<HTMLCanvasElement>;\n\n private chartHasBeenRendered: boolean = false;\n\n constructor(private chartJSService: ChartJSService) {}\n\n ngAfterViewInit() {\n /* \n A chart is not rendered until it has both a height and a width. \n If ChartComponent is slotted in an ionic component it will\n not have any height or width on afterViewInit. This will cause \n the animation to not be played on first draw. \n */\n const canvasElement = this.canvasElement.nativeElement;\n this.whenElementHasHeightAndWidth(canvasElement).then(() => this.renderChart());\n }\n\n private whenElementHasHeightAndWidth(element: HTMLElement): Promise<void> {\n const rectIs2D = ({ width, height }) => height > 0 && width > 0;\n\n return new Promise((resolve) => {\n const initialClientRect = element.getBoundingClientRect();\n if (rectIs2D(initialClientRect)) resolve();\n\n const resizeObserver = new ResizeObserverFactory().create(([resizeObserverEntry]) => {\n if (rectIs2D(resizeObserverEntry.contentRect)) {\n resizeObserver.unobserve(element);\n resolve();\n }\n });\n\n resizeObserver.observe(element);\n });\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (this.chartHasBeenRendered) {\n let shouldRedrawChart = false;\n\n // TODO: Remove 'dataLabels' key when the input property is removed\n const keyUpdateFnPairs = {\n data: () => this.updateData(),\n dataLabels: () => this.updateLabels(),\n labels: () => this.updateLabels(),\n type: () => this.updateType(),\n customOptions: () => this.updateCustomOptions(),\n annotations: () => this.updateAnnotations(),\n highlightedElements: () => this.updateHighlightedElements(),\n };\n\n Object.entries(simpleChanges).forEach(([key]) => {\n if (simpleChanges[key].firstChange || !keyUpdateFnPairs[key]) return;\n shouldRedrawChart = true;\n keyUpdateFnPairs[key]();\n });\n\n if (shouldRedrawChart) this.redrawChart();\n }\n }\n\n private renderChart() {\n this.chartHasBeenRendered = true;\n this.chartJSService.renderChart({\n targetElement: this.canvasElement,\n type: this.type,\n data: this.data,\n labels: this.labels,\n customOptions: this.customOptions,\n annotations: this.annotations,\n dataLabelOptions: this.dataLabelOptions,\n highlightedElements: this.highlightedElements,\n });\n }\n\n private updateData() {\n this.chartJSService.updateData(this.data);\n }\n\n private updateLabels() {\n this.chartJSService.updateLabels(this.labels);\n }\n\n private updateType() {\n this.chartJSService.updateType(this.type, this.customOptions);\n }\n\n private updateCustomOptions() {\n this.chartJSService.updateOptions(this.customOptions, this.type);\n }\n\n private updateAnnotations() {\n this.chartJSService.updateAnnotations(this.annotations);\n }\n\n private updateHighlightedElements() {\n this.chartJSService.updateHighlightedElements(this.highlightedElements);\n }\n\n private redrawChart() {\n this.chartJSService.redrawChart();\n }\n}\n","import { formatNumber } from '@angular/common';\nimport { Options } from 'highcharts';\nimport { dateFormat } from 'highcharts/highstock';\n\nimport { ColorHelper } from '@kirbydesign/core';\n\nexport interface StockChartDeprecatedDataPoint {\n x: number;\n y: number;\n id: 'min' | 'max' | '';\n}\n\nexport const stockChartDeprecatedOptions = (locale: string, height: number) => {\n const options: Options = defaultOptions(locale) as Options;\n const transparentColor = 'rgba(255,255,255,0)';\n options.chart.backgroundColor = transparentColor;\n options.chart.height = height;\n\n options.tooltip.backgroundColor = ColorHelper.getThemeColorRgbString('background-color');\n // Using a function instead of a lamdba-expression because of a reference to this.\n options.tooltip.formatter = function() {\n return (\n '<div class=\"kirby-text-xsmall\">' +\n // @ts-ignore\n dateFormat('%e. %b', new Date(this.x)) +\n '</div><br/><div class=\"kirby-text-small kirby-text-bold\">' +\n formatNumber(this.y, locale) +\n '</div>'\n );\n };\n options.plotOptions.area.fillColor = transparentColor;\n options.plotOptions.area.lineColor = ColorHelper.getThemeColorRgbString('tertiary');\n\n options.plotOptions.area.marker.lineColor = 'rgba(255,255,255,0.3)';\n options.plotOptions.area.marker.fillColor = ColorHelper.getThemeColorRgbString('primary');\n\n options.xAxis = {\n ...options.xAxis,\n crosshair: {\n color: ColorHelper.getThemeColorRgbString('primary'),\n },\n tickColor: transparentColor,\n lineColor: ColorHelper.getThemeColorRgbString('medium'),\n labels: {\n style: {\n color: ColorHelper.getThemeColorRgbString('semi-dark-tint'),\n },\n },\n };\n\n options.yAxis = {\n ...options.yAxis,\n lineColor: transparentColor,\n gridLineColor: ColorHelper.getThemeColorRgbString('medium'),\n labels: {\n style: {\n color: ColorHelper.getThemeColorRgbString('semi-dark-tint'),\n },\n },\n };\n\n /*\n // Using a function instead of a lamdba-expression because of a reference to this.\n options.plotOptions.area.events.mouseOver = function() {\n const transparentColor = 'rgba(255,255,255,0)';\n this.chart.xAxis[0].update({\n tickColor: transparentColor,\n lineColor: ColorHelper.getThemeColorRgbString('medium'),\n labels: {\n style: {\n color: ColorHelper.getThemeColorRgbString('semi-dark-tint'),\n },\n },\n });\n };\n\n // Using a function instead of a lamdba-expression because of a reference to this.\n options.plotOptions.area.events.mouseOut = function() {\n const transparentColor = 'rgba(255,255,255,0)';\n this.chart.xAxis[0].update({\n lineColor: transparentColor,\n labels: {\n style: {\n color: transparentColor,\n },\n },\n });\n };\n */\n\n return options;\n};\n\nexport const annotations = (locale: string): Highcharts.AnnotationsOptions => {\n return {\n id: 'minmax',\n zIndex: 2,\n labels: [\n {\n point: 'max',\n shape: 'rect',\n distance: 5,\n align: 'center',\n verticalAlign: 'top',\n backgroundColor: ColorHelper.getThemeColorRgbString('tertiary'),\n // Using a function instead of a lamdba-expression because of a reference to this.\n formatter: function() {\n return formatNumber(this.y, locale, '1.1-1');\n },\n },\n {\n point: 'min',\n shape: 'rect',\n distance: -28,\n align: 'center',\n verticalAlign: 'bottom',\n backgroundColor: ColorHelper.getThemeColorRgbString('tertiary'),\n // Using a function instead of a lamdba-expression because of a reference to this.\n formatter: function() {\n return formatNumber(this.y, locale, '1.1-1');\n },\n },\n ],\n labelOptions: {\n y: 0,\n allowOverlap: true,\n },\n };\n};\n\nconst defaultOptions = (locale: string) => {\n return {\n chart: {\n zoomType: 'x',\n type: 'StockChart',\n spacingTop: 30,\n //spacingRight: 55,\n },\n navigator: {\n enabled: false,\n },\n rangeSelector: {\n enabled: false,\n },\n scrollbar: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n title: {\n text: '',\n },\n subtitle: {\n text: '',\n },\n xAxis: {\n ordinal: true,\n type: 'datetime',\n lineWidth: 0.5,\n opposite: false,\n labels: {\n format: '{value:%Y-%b-%e %l:%M %p }',\n },\n },\n yAxis: {\n opposite: false,\n title: {\n text: '',\n },\n /* Doesn't work before upgrade.\n labels: {\n x: 0,\n y: 10,\n align: 'right',\n },\n */\n },\n annotations: [annotations(locale)],\n legend: {\n enabled: false,\n },\n tooltip: {\n crosshairs: {\n width: 1,\n zIndex: 2,\n },\n shadow: false,\n borderWidth: 0,\n },\n plotOptions: {\n area: {\n marker: {\n lineWidth: 16,\n radius: 7,\n },\n lineWidth: 2,\n states: {\n hover: {\n lineWidth: 2,\n },\n },\n events: {},\n threshold: null,\n },\n series: {\n marker: {\n zIndex: 100,\n enabledThreshold: 50,\n },\n },\n },\n series: [\n {\n type: 'area',\n data: [],\n },\n ],\n };\n};\n","import { Component, ElementRef, Inject, Input, LOCALE_ID } from '@angular/core';\nimport { Options } from 'highcharts';\nimport * as Highcharts from 'highcharts/highstock';\nimport AnnotationsModule from 'highcharts/modules/annotations';\n\nimport {\n annotations,\n StockChartDeprecatedDataPoint,\n} from './options/stock-chart-deprecated-options';\n\n// @ts-ignore\nAnnotationsModule(Highcharts);\n\n@Component({\n selector: 'kirby-stock-chart-deprecated',\n template: '',\n styleUrls: ['./stock-chart-deprecated.component.scss'],\n})\nexport class StockChartDeprecatedComponent {\n chartContainer: ElementRef;\n private _data: StockChartDeprecatedDataPoint[];\n @Input() set data(val: StockChartDeprecatedDataPoint[]) {\n this.onDataChanges(val);\n }\n get data() {\n return this._data;\n }\n private _options: Options;\n @Input() set options(val: Options) {\n this.onOptionsChanges(val);\n }\n get options() {\n return this._options;\n }\n private _height = 300;\n @Input() set height(height: number) {\n this._height = height;\n if (this.chart) {\n this.chart.setSize(null, height);\n }\n }\n get height() {\n return this._height;\n }\n @Input() description = '';\n @Input() showDataLabels = true;\n\n chart: Highcharts.Chart;\n\n constructor(hostElement: ElementRef, @Inject(LOCALE_ID) private locale: string) {\n this.chartContainer = hostElement;\n }\n\n onOptionsChanges(options: Options) {\n this._options = options;\n this.chart = Highcharts.stockChart(this.chartContainer.nativeElement, this._options);\n }\n\n onDataChanges(data: StockChartDeprecatedDataPoint[]) {\n this._data = data;\n\n if (this.chart != null) {\n // First delete all points in the previous series.\n this.chart.update(\n {\n series: [],\n },\n false,\n true\n );\n // Remove the annotations.\n this.chart.removeAnnotation('minmax');\n // Then update the chart with new series data.\n this.chart.update(\n {\n series: [\n {\n type: 'area',\n data: data,\n },\n ],\n },\n false,\n true\n );\n // Add the new annotations.\n this.chart.addAnnotation(annotations(this.locale), false);\n // And finally redraw the graph with all the changes.\n this.chart.redraw();\n }\n }\n}\n","import { ElementRef, Injectable } from '@angular/core';\n\nimport { WindowRef } from '../../../types/window-ref';\n\nimport { CalendarOptions } from './calendar-options.model';\n\n@Injectable()\nexport class CalendarHelper {\n private embeddedView: Window;\n private embeddedViewReady = false;\n\n constructor(private windowRef: WindowRef) {}\n\n public init(\n calendarContainer: ElementRef,\n options: CalendarOptions,\n onDaySelected: (cell: { isSelectable: boolean; date: number }) => void,\n onChangeMonth: (index: number) => void\n ) {\n if (this.hasEmbeddedView(calendarContainer)) {\n const iframe = <HTMLIFrameElement>calendarContainer.nativeElement;\n iframe.onload = () => {\n this.embeddedViewReady = true;\n this.emitOptionsToEmbeddedView(options);\n };\n this.embeddedView = iframe.contentWindow;\n\n this.windowRef.nativeWindow.addEventListener('message', (event: MessageEvent) =>\n this.handleMessageEvent(event, onDaySelected, onChangeMonth)\n );\n }\n }\n\n public update(options: CalendarOptions) {\n if (this.embeddedViewReady) {\n this.emitOptionsToEmbeddedView(options);\n }\n }\n\n public setSelectedDay(day: number) {\n if (this.embeddedViewReady) {\n this.embeddedView.postMessage(\n {\n type: 'kirbyCalendarSetSelectedDay',\n selectedDay: day,\n },\n '*'\n );\n }\n }\n\n private hasEmbeddedView(calendarContainer: ElementRef) {\n return (\n calendarContainer &&\n calendarContainer.nativeElement &&\n calendarContainer.nativeElement instanceof HTMLIFrameElement &&\n calendarContainer.nativeElement.contentWindow\n );\n }\n\n private emitOptionsToEmbeddedView(options: CalendarOptions) {\n this.embeddedView.postMessage(\n {\n type: 'kirbyCalendarInit',\n ...options,\n },\n '*'\n );\n }\n\n private handleMessageEvent(\n event: MessageEvent,\n onDaySelected: (cell: { isSelectable: boolean; date: number }) => void,\n onChangeMonth: (index: number) => void\n ) {\n if (this.validateMessage(event)) {\n switch (event.data.type) {\n case 'kirbyCalendarDaySelected':\n if (this.validateDateSelectedMessage(event)) {\n onDaySelected({ isSelectable: true, date: event.data.day });\n }\n break;\n case 'kirbyCalendarChangeMonth':\n if (this.validateNavigateMonthMessage(event)) {\n onChangeMonth(event.data.index);\n }\n break;\n }\n }\n }\n\n private validateMessage(event: MessageEvent) {\n return (\n this.embeddedView === event.source &&\n event.type === 'message' &&\n event.data &&\n event.data.type\n );\n }\n\n private validateDateSelectedMessage(event: MessageEvent) {\n return event.data.type === 'kirbyCalendarDaySelected' && event.data.day;\n }\n\n private validateNavigateMonthMessage(event: MessageEvent) {\n return event.data.type === 'kirbyCalendarChangeMonth' && typeof event.data.index === 'number';\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {\n add,\n differenceInDays,\n eachDayOfInterval,\n endOfMonth,\n endOfWeek,\n format,\n getYear,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isWeekend,\n Locale as LocaleDateFns,\n startOfDay,\n startOfMonth,\n startOfWeek,\n} from 'date-fns';\nimport { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\nimport { da, enGB, enUS } from 'date-fns/locale';\n\nimport { capitalizeFirstLetter } from '@kirbydesign/core';\n\nimport { CalendarCell } from './helpers/calendar-cell.model';\nimport { CalendarOptions } from './helpers/calendar-options.model';\nimport { CalendarHelper } from './helpers/calendar.helper';\nimport { CalendarYearNavigatorConfig } from './options/calendar-year-navigator-config';\n\nexport type Locale = LocaleDateFns;\ninterface CalendarDay {\n isCurrentMonth: boolean;\n isToday: boolean;\n isWeekend: boolean;\n isPast: boolean;\n isFuture: boolean;\n isDisabled: boolean;\n}\n\nenum TimeUnit {\n years = 'years',\n months = 'months',\n weeks = 'weeks',\n days = 'days',\n hours = 'hours',\n minutes = 'minutes',\n seconds = 'seconds',\n milliseconds = 'milliseconds',\n}\n\n@Component({\n selector: 'kirby-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n providers: [CalendarHelper],\n})\nexport class CalendarComponent implements OnInit, AfterViewInit, OnChanges {\n @ViewChild('calendarContainer', { static: false }) calendarContainer: ElementRef;\n @Output() dateChange = new EventEmitter<Date>();\n @Output() dateSelect = new EventEmitter<Date>();\n @Output() yearSelect = new EventEmitter<number>();\n @Input() timezone: 'local' | 'UTC' = 'local';\n @Input() disableWeekends = false;\n @Input() disablePastDates = false;\n @Input() disableFutureDates = false;\n @Input() alwaysEnableToday = false;\n @Input() customLocales: { [key: string]: Locale } = {};\n /* \n Experimental: Input property not documented on purpose. \n For context see: https://github.com/kirbydesign/designsystem/issues/2087\n */\n @Input() usePopover = false;\n /**\n * Configuration for the year navigator.\n *\n * Internally, calendar component:\n * - bases yearNavigatorOptions.from and yearNavigatorOptions.to on todayDate if a number is provided\n * - prioritizes minDate and maxDate over yearNavigatorOptions.from and yearNavigatorOptions.to\n */\n @Input() yearNavigatorOptions: CalendarYearNavigatorConfig;\n\n _month: CalendarCell[][];\n _weekDays: string[];\n private selectedDay: CalendarCell;\n // NOTE: Internally, all Dates\n // are normalized to point to local timezone midnight, regardless of the timezone\n // setting.\n private activeMonth: Date;\n private _selectedDate: Date;\n private _disabledDates: Date[] = [];\n private _todayDate: Date;\n private _minDate: Date;\n private _maxDate: Date;\n private locale: Locale;\n private timeZoneName: string;\n private includedLocales = { da, enGB, enUS };\n\n get selectedDate(): Date {\n return this._selectedDate;\n }\n\n @Input() set selectedDate(valueLocalOrUTC: Date) {\n const value = this.normalizeDate(valueLocalOrUTC);\n this.setActiveMonth(value);\n\n if (this.hasDateChanged(value, this._selectedDate)) {\n this.onSelectedDateChange(value);\n this._selectedDate = value;\n }\n }\n\n get disabledDates(): Date[] {\n return this._disabledDates;\n }\n\n @Input() set disabledDates(value: Date[]) {\n this._disabledDates = (value || []).map((date) => this.normalizeDate(date));\n }\n\n get todayDate(): Date {\n return this._todayDate;\n }\n\n @Input() set todayDate(value: Date) {\n this._todayDate = this.normalizeDate(value);\n }\n\n get minDate(): Date {\n return this._minDate;\n }\n\n @Input() set minDate(value: Date) {\n if (value && this.activeMonth && isBefore(this.activeMonth, value)) {\n this.setActiveMonth(value);\n }\n this._minDate = this.normalizeDate(value);\n }\n\n get maxDate(): Date {\n return this._maxDate;\n }\n\n @Input() set maxDate(value: Date) {\n if (value && this.activeMonth && isAfter(this.activeMonth, value)) {\n this.setActiveMonth(value);\n }\n this._maxDate = this.normalizeDate(value);\n }\n\n get activeMonthName(): string {\n return capitalizeFirstLetter(this.formatWithLocale(this.activeMonth, 'MMMM'));\n }\n\n get activeYear(): string {\n return this.formatWithLocale(this.activeMonth, 'yyyy');\n }\n\n /**\n * Gets navigable years for year navigator based on yearNavigatorOptions.\n */\n get navigableYears(): string[] {\n const dateOfFirstNavigableYear =\n this.minDate || this.getDateFromNavigableYear(this.yearNavigatorOptions.from);\n\n const dateOfLastNavigableYear =\n this.maxDate || this.getDateFromNavigableYear(this.yearNavigatorOptions.to);\n\n return this.getYearsBetweenDates(dateOfFirstNavigableYear, dateOfLastNavigableYear);\n }\n\n get navigatedYear(): number {\n return this.navigableYears.indexOf(this.activeYear);\n }\n\n @HostBinding('class.has-year-navigator')\n get _hasYearNavigator() {\n return !!this.yearNavigatorOptions;\n }\n\n constructor(private calendarHelper: CalendarHelper, @Inject(LOCALE_ID) locale: string) {\n this.locale = this.mapLocale(locale);\n this.timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n private formatWithLocale(date: Date, formatString: string): string {\n return format(date, formatString, {\n locale: this.locale,\n });\n }\n\n private mapLocale(locale: string): Locale {\n if (locale === 'en') {\n locale = 'enGB'; // if english locale is provided without region, we default to GB\n }\n locale = locale.replace('-', '');\n const availableLocales = { ...this.includedLocales, ...this.customLocales };\n\n return availableLocales[locale] || this.includedLocales.enGB; // Default to enGB if injected locale doesnt exist\n }\n\n ngOnInit() {\n this._weekDays = this.getWeekDays();\n this.setActiveMonth(this.selectedDate);\n }\n\n ngAfterViewInit() {\n this.calendarHelper.init(\n this.calendarContainer,\n this.getHelperOptions(),\n this._onDateSelected.bind(this),\n this.onChangeMonth.bind(this)\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.activeMonth) return;\n if (\n changes.disableWeekends ||\n changes.disablePastDates ||\n changes.disableFutureDates ||\n changes.disabledDates ||\n changes.minDate ||\n changes.maxDate ||\n changes.todayDate ||\n changes.timezone\n ) {\n this.refreshActiveMonth();\n this.calendarHelper.update(this.getHelperOptions());\n }\n }\n\n private setActiveMonth(date: Date = new Date()) {\n if (!this.activeMonth || !isSameMonth(this.activeMonth, date)) {\n this.activeMonth = startOfMonth(date);\n this.refreshActiveMonth();\n this.calendarHelper.update(this.getHelperOptions());\n }\n }\n\n // For leniency, the component will accept any Date that points to either UTC midnight\n // or to local timezone midnight although we will internally normalize the representation\n // of all received dates to point to local timezone midnight.\n // We currently log no warnings if the date doesn't match the timezone setting or\n // if it doesn't point to midnight.\n private normalizeDate(dateLocalOrUTC: Date) {\n if (!dateLocalOrUTC) return;\n\n if (startOfDay(dateLocalOrUTC).getTime() === dateLocalOrUTC.getTime()) {\n // date is local timezone midnight\n return dateLocalOrUTC;\n }\n if (\n startOfDay(utcToZonedTime(dateLocalOrUTC, this.timeZoneName)).getTime() ===\n utcToZonedTime(dateLocalOrUTC, this.timeZoneName).getTime()\n ) {\n // the date is a UTC midnight; create the equivalent local timezone midnight date\n const normalizedUTCdate = utcToZonedTime(dateLocalOrUTC, this.timeZoneName);\n return normalizedUTCdate;\n }\n // does not point to midnight so we make it\n return startOfDay(dateLocalOrUTC);\n }\n\n private getWeekDays(): string[] {\n const now = new Date();\n\n const week = eachDayOfInterval({\n start: startOfWeek(now, { locale: this.locale }),\n end: endOfWeek(now, { locale: this.locale }),\n });\n\n return week.map((date) => this.getFirstLetterOfWeekDayCapitalized(date));\n }\n\n private getFirstLetterOfWeekDayCapitalized(date: Date) {\n return this.formatWithLocale(date, 'EEEEE');\n }\n\n private hasDateChanged(newDate: Date, previousDate: Date): boolean {\n if (!newDate && !previousDate) {\n return false;\n }\n if (newDate instanceof Date && !previousDate) {\n return true;\n }\n return !isSameDay(newDate, previousDate);\n }\n\n private isDisabledDate(date: Date): boolean {\n return this.disabledDates.some((disabledDate) => {\n return isSameDay(disabledDate, date);\n });\n }\n\n refreshActiveMonth() {\n if (!this.activeMonth) return;\n\n const monthStart = startOfMonth(this.activeMonth);\n const monthEnd = endOfMonth(this.activeMonth);\n const startOfFirstWeek = startOfWeek(monthStart, { locale: this.locale });\n const endOfLastWeek = endOfWeek(monthEnd, { locale: this.locale });\n const totalDayCount = differenceInDays(endOfLastWeek, startOfFirstWeek) + 1;\n const today = this.todayDate ? startOfDay(this.todayDate) : startOfDay(new Date());\n\n const daysArray = Array.from(Array(totalDayCount).keys());\n\n const days: CalendarCell[] = daysArray.map((number) => {\n const cellDate = add(startOfFirstWeek, { [TimeUnit.days]: number });\n const day = this.getCalendarDay(cellDate, today, monthStart);\n\n const isSelectable = this.isSelectable(day, cellDate);\n const isSelected = isSameDay(this.selectedDate, cellDate);\n const cell = {\n date: cellDate.getDate(),\n isCurrentMonth: day.isCurrentMonth,\n isSelectable,\n isSelected,\n cssClasses: this.getCssClasses(day, isSelectable, isSelected),\n };\n if (isSelected) {\n this.selectedDay = cell;\n }\n return cell;\n });\n this._month = this.chunk(days, 7);\n }\n\n private getCalendarDay(date: Date, today: Date, monthStart: Date): CalendarDay {\n return {\n isToday: isSameDay(today, date),\n isPast: isBefore(date, today),\n isFuture: isAfter(date, today),\n isWeekend: isWeekend(date),\n isCurrentMonth: isSameMonth(date, monthStart),\n isDisabled: this.isDisabledDate(date),\n };\n }\n\n private isSelectable(day: CalendarDay, date: Date) {\n return (\n (this.alwaysEnableToday && day.isToday) ||\n (!day.isDisabled &&\n day.isCurrentMonth &&\n !(this.disableWeekends && day.isWeekend) &&\n !(this.disablePastDates && day.isPast) &&\n !(this.disableFutureDates && day.isFuture) &&\n !(this.minDate && isBefore(date, this.minDate)) &&\n !(this.maxDate && isAfter(date, this.maxDate)))\n );\n }\n\n private getCssClasses(day: CalendarDay, isSelectable: boolean, isSelected: boolean) {\n const cssClasses = {\n 'current-month': day.isCurrentMonth,\n weekend: day.isWeekend,\n today: day.isToday,\n selectable: isSelectable,\n selected: isSelected,\n past: day.isPast,\n disabled: day.isDisabled,\n };\n let cssClassString = 'day';\n for (const key in cssClasses) {\n if (cssClasses[key]) {\n cssClassString += ' ' + key;\n }\n }\n return cssClassString;\n }\n\n private chunk(array: any[], size: number) {\n const results = [];\n while (array.length) {\n results.push(array.splice(0, size));\n }\n return results;\n }\n\n private onSelectedDateChange(newDate: Date): void {\n if (this.selectedDay) {\n this.selectedDay.isSelected = false;\n }\n\n const newDay = this.getCell(newDate);\n if (newDay) {\n newDay.isSelected = true;\n this.selectedDay = newDay;\n }\n this.calendarHelper.setSelectedDay(newDate.getDate());\n }\n\n _onDateSelected(newDay: CalendarCell) {\n if (newDay.isSelectable && newDay.date) {\n let newDate = new Date(this.activeMonth);\n\n if (this.timezone === 'UTC') {\n newDate = zonedTimeToUtc(this.subtractTimezoneOffset(newDate), this.timeZoneName);\n }\n\n newDate.setDate(newDay.date);\n const dateToEmit = newDate;\n\n if (this.hasDateChanged(newDate, this._selectedDate)) {\n this.onSelectedDateChange(newDate);\n this._selectedDate = newDate;\n this.dateChange.emit(dateToEmit);\n }\n this.dateSelect.emit(dateToEmit);\n }\n }\n\n private onChangeMonth(direction: number) {\n this._changeMonth(direction);\n this.calendarHelper.update(this.getHelperOptions());\n }\n\n _changeMonth(index: number) {\n this.changeActiveView(index, TimeUnit.months);\n }\n\n _changeYear(year: string) {\n const yearNumeric = Number(year);\n this.changeActiveView(yearNumeric - getYear(this.activeMonth), TimeUnit.years);\n this.yearSelect.emit(yearNumeric);\n }\n\n private changeActiveView(index: number, unit: TimeUnit) {\n if (index === 0) return;\n this.activeMonth = add(this.activeMonth, { [unit]: index });\n\n this.refreshActiveMonth();\n }\n\n get _canNavigateBack(): boolean {\n const reachedPastDatesLimit =\n this.disablePastDates && isSameMonth(this.activeMonth, this.todayDate);\n\n const reachedOrExceededMinDate =\n this.minDate &&\n (isSameMonth(this.activeMonth, this.minDate) || isBefore(this.activeMonth, this.minDate));\n\n return !reachedPastDatesLimit && !reachedOrExceededMinDate;\n }\n\n get _canNavigateForward(): boolean {\n const reachedFutureDatesLimit =\n this.disableFutureDates && isSameMonth(this.activeMonth, this.todayDate);\n\n const reachedOrExceededMaxDate =\n this.maxDate &&\n (isSameMonth(this.activeMonth, this.maxDate) || isAfter(this.activeMonth, this.maxDate));\n\n return !reachedFutureDatesLimit && !reachedOrExceededMaxDate;\n }\n\n private getCell(date: Date) {\n let foundDay = null;\n if (date) {\n for (let week of this._month) {\n foundDay = week.find((day) => {\n return day.isCurrentMonth && day.date === date.getDate();\n });\n if (foundDay) {\n break;\n }\n }\n }\n return foundDay;\n }\n\n private getHelperOptions(): CalendarOptions {\n return {\n canNavigateBack: this._canNavigateBack,\n canNavigateForward: this._canNavigateForward,\n year: this.activeYear,\n monthName: this.activeMonthName,\n weekDays: this._weekDays,\n month: this._month,\n };\n }\n\n private subtractTimezoneOffset(date: Date): Date {\n const timezoneOffsetInMs = date.getTimezoneOffset() * 60 * 1000;\n return new Date(date.getTime() - timezoneOffsetInMs);\n }\n\n private getDateFromNavigableYear(navigableYear: number | Date): Date {\n if (navigableYear instanceof Date) return navigableYear;\n const today = this.todayDate || new Date();\n return new Date(today.getFullYear() + navigableYear, 0, 1);\n }\n\n private getYearsBetweenDates(startDate: Date, endDate: Date): string[] {\n // Ensure years are ordered correctly if parameters are switched:\n const [startYear, endYear] = [startDate.getFullYear(), endDate.getFullYear()].sort();\n const numberOfYears = endYear - startYear;\n return Array.from({ length: numberOfYears + 1 }, (_, i) => (startYear + i).toString());\n }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { ItemSlidingSide, ItemSwipeAction } from './item-sliding.types';\n\n@Component({\n selector: 'kirby-item-sliding',\n templateUrl: './item-sliding.component.html',\n styleUrls: ['./item-sliding.component.scss'],\n})\nexport class ItemSlidingComponent {\n @Input() swipeActions: ItemSwipeAction[];\n\n _side: 'start' | 'end' = 'start';\n @Input() set side(value: ItemSlidingSide) {\n this._side = value === 'left' ? 'start' : 'end';\n }\n\n get _hasSwipeActions(): boolean {\n // Using '>' instead of '!==';\n // will only return true when swipeActions is an array\n return this.swipeActions?.length > 0;\n }\n}\n","export class UniqueIdGenerator {\n private static registry = new Map<string, UniqueIdGenerator>();\n private id = 0;\n\n private constructor(private scope: string) {}\n\n static scopedTo(scope: string) {\n let scopedGenerator = UniqueIdGenerator.registry.get(scope);\n if (!scopedGenerator) {\n scopedGenerator = new UniqueIdGenerator(scope);\n UniqueIdGenerator.registry.set(scope, scopedGenerator);\n }\n return scopedGenerator;\n }\n\n next(): string {\n return `${this.scope}-${this.id++}`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\n\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\n\n@Component({\n selector: 'kirby-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent {\n @Input() checked: boolean = false;\n @Input() attentionLevel: '1' | '2' = '2';\n\n @HostBinding('class.has-label')\n @Input()\n text: string;\n\n @HostBinding('class')\n @Input()\n size?: 'xs' | 'sm' | 'md';\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean = false;\n\n @Input() disabled = false;\n @HostBinding('attr.disabled')\n get _isDisabled() {\n return this.disabled ? 'disabled' : null;\n }\n\n @HostBinding('class.attention-level1') get isAttentionLevel1() {\n return this.attentionLevel === '1';\n }\n @HostBinding('class.attention-level2') get isAttentionLevel2() {\n return this.attentionLevel === '2';\n }\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n onChecked(checked: boolean): void {\n this.checked = checked;\n this.checkedChange.emit(this.checked);\n }\n\n // IDs used for a11y labelling\n _labelId = UniqueIdGenerator.scopedTo('kirby-checkbox-label').next();\n}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'kirby-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n})\nexport class ChipComponent {\n @Input() text: string;\n\n @Input()\n @HostBinding('attr.aria-selected')\n @HostBinding('class.is-selected')\n isSelected: boolean;\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n})\nexport class DividerComponent {\n @Input()\n hasMargin: boolean;\n}\n","import { Component, HostBinding, Input } from '@angular/core';\n\nexport enum ItemSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n}\n\n@Component({\n selector: 'kirby-item',\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n})\nexport class ItemComponent {\n @Input() disabled: boolean;\n @HostBinding('class.selected')\n @Input()\n selected: boolean;\n @Input()\n selectable: boolean;\n @Input()\n reorderable: boolean;\n @HostBinding('class')\n @Input()\n size: ItemSize = ItemSize.MD;\n\n // Prevent default when inside kirby-dropdown to avoid blurring dropdown:\n onMouseDown(event: MouseEvent) {\n if (\n event.currentTarget instanceof HTMLElement &&\n event.currentTarget.closest('kirby-dropdown')\n ) {\n event.preventDefault();\n }\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kirbyListItem]',\n})\nexport class ListItemDirective {\n constructor() {\n console.warn(\n '*kirbyListItem directive is deprecated - please use *kirbyListItemTemplate directive instead.'\n );\n }\n}\n\n@Directive({\n selector: '[kirbyListFlexItem]',\n})\nexport class ListFlexItemDirective {\n constructor() {\n console.warn(\n '*kirbyListFlexItem directive is deprecated - please use *kirbyListItemTemplate directive instead.'\n );\n }\n}\n\n@Directive({\n selector: '[kirbyListItemTemplate]',\n})\nexport class ListItemTemplateDirective {}\n\n@Directive({\n selector: '[kirbyListHeader], [kirbyListHeaderTemplate]',\n})\nexport class ListHeaderDirective {}\n\n@Directive({\n selector: '[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]',\n})\nexport class ListSectionHeaderDirective {}\n\n@Directive({\n selector: '[kirbyListFooter], [kirbyListFooterTemplate]',\n})\nexport class ListFooterDirective {}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\n\nimport { DesignTokenHelper } from '../../helpers';\n\nexport enum HorizontalDirection {\n right = 'right',\n left = 'left',\n}\n\n@Component({\n selector: 'kirby-popover',\n template: `\n <div #wrapper class=\"wrapper\"><ng-content></ng-content></div>\n `,\n styleUrls: ['./popover.component.scss'],\n})\nexport class PopoverComponent implements AfterViewInit, OnDestroy {\n // removeEventListener same instance of event handler & options\n private readonly preventScrollEventListenerOptions = {\n passive: false,\n } as EventListenerOptions;\n\n private readonly POPOVER_BODY_PADDING = 12;\n\n private isShowing: boolean = false;\n private isFirstToLockScroll: boolean;\n private zIndex: number;\n private document: Document;\n\n @ViewChild('wrapper', { static: true, read: ElementRef })\n wrapperElement: ElementRef<HTMLDivElement>;\n\n @Input()\n popout: HorizontalDirection = HorizontalDirection.right;\n\n @Input()\n target: HTMLElement | ElementRef<HTMLElement>;\n\n @Output()\n willHide = new EventEmitter<void>();\n\n private get targetElement(): HTMLElement {\n if (this.target instanceof ElementRef) {\n return this.target.nativeElement;\n } else {\n return this.target;\n }\n }\n\n @HostListener('click')\n _backdropClick() {\n this.willHide.emit();\n this.hide();\n }\n\n @HostListener('window:resize')\n _onWindowResize() {\n if (this.isShowing) {\n this.willHide.emit();\n this.hide();\n }\n }\n\n constructor(private elementRef: ElementRef<HTMLElement>, private renderer: Renderer2) {\n this.document = elementRef.nativeElement.ownerDocument;\n }\n\n ngAfterViewInit(): void {\n this.placePopoverAboveClosestModal();\n this.renderer.removeChild(\n this.elementRef.nativeElement.parentElement,\n this.elementRef.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n private placePopoverAboveClosestModal() {\n const closestIonModal = this.elementRef.nativeElement.closest('ion-modal');\n if (closestIonModal) {\n this.zIndex = parseInt(closestIonModal.style.zIndex) + 1;\n this.elementRef.nativeElement.style.zIndex = `${this.zIndex}`;\n } else {\n this.zIndex = parseInt(DesignTokenHelper.zLayer('popover'));\n }\n }\n\n // document.removeEventListener needs the exact same event handler & options reference:\n private preventEvent(event: TouchEvent) {\n event.preventDefault();\n }\n\n private preventScroll() {\n this.isFirstToLockScroll = !this.document.body.classList.contains('backdrop-no-scroll');\n if (this.isFirstToLockScroll) {\n this.renderer.addClass(this.document.body, 'backdrop-no-scroll');\n }\n\n // preventDefault does not work with Renderer2.listen method; add event listener directly to document instead\n this.document.addEventListener(\n 'touchmove',\n this.preventEvent,\n this.preventScrollEventListenerOptions\n );\n }\n\n private releaseScroll() {\n if (this.isFirstToLockScroll) {\n this.renderer.removeClass(this.document.body, 'backdrop-no-scroll');\n }\n\n this.document.removeEventListener(\n 'touchmove',\n this.preventEvent,\n this.preventScrollEventListenerOptions\n );\n }\n\n show() {\n this.renderer.addClass(this.elementRef.nativeElement, 'is-opening');\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n\n this.preventScroll();\n this.positionWrapper();\n\n this.renderer.addClass(this.elementRef.nativeElement, 'is-open');\n this.renderer.removeClass(this.elementRef.nativeElement, 'is-opening');\n\n this.isShowing = true;\n }\n\n hide() {\n this.renderer.removeChild(this.document.body, this.elementRef.nativeElement);\n this.releaseScroll();\n\n this.renderer.removeStyle(this.targetElement, 'z-index');\n this.renderer.removeStyle(this.targetElement, 'pointer-events');\n this.isShowing = false;\n }\n\n private positionWrapper() {\n const targetDimensions = this.targetElement.getBoundingClientRect();\n\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n\n const wrapperElement = this.wrapperElement.nativeElement;\n const wrapperDimensions = wrapperElement.getBoundingClientRect();\n const viewport = wrapperElement.ownerDocument.defaultView;\n this.positionHorizontally(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n this.positionVertically(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n }\n\n private positionHorizontally(\n viewPort: Window,\n wrapperElement: HTMLDivElement,\n targetDimensions: DOMRect,\n wrapperDimensions: DOMRect\n ) {\n const viewPortWidth = viewPort.innerWidth;\n const contentWidth = wrapperDimensions.width;\n const availableSpaceRight = viewPortWidth - targetDimensions.left;\n const availableSpaceLeft = targetDimensions.right;\n const contentCanFitRightOfTarget =\n availableSpaceRight >= contentWidth + this.POPOVER_BODY_PADDING;\n const openRight = contentCanFitRightOfTarget || availableSpaceRight >= availableSpaceLeft;\n\n const [direction, oppositeDirection] =\n this.popout === HorizontalDirection.left || !openRight\n ? ['left', 'right']\n : ['right', 'left'];\n\n const pxValue =\n direction === 'left' ? viewPortWidth - targetDimensions.right : targetDimensions.left;\n\n this.renderer.removeStyle(wrapperElement, direction);\n this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n }\n\n private positionVertically(\n viewPort: Window,\n wrapperElement: HTMLDivElement,\n targetDimensions: DOMRect,\n wrapperDimensions: DOMRect\n ) {\n const viewPortHeight = viewPort.innerHeight;\n const contentHeight = wrapperDimensions.height;\n const availableSpaceDown = viewPortHeight - targetDimensions.bottom;\n const availableSpaceUp = targetDimensions.top;\n const contentCanFitBelowTarget =\n availableSpaceDown >= contentHeight + this.POPOVER_BODY_PADDING;\n\n const isAvailableSpaceBelow =\n contentCanFitBelowTarget || availableSpaceDown >= availableSpaceUp;\n const [direction, oppositeDirection] = isAvailableSpaceBelow\n ? ['bottom', 'top']\n : ['top', 'bottom'];\n\n const pxValue =\n direction === 'bottom' ? targetDimensions.bottom : viewPortHeight - targetDimensions.top;\n\n this.renderer.removeStyle(wrapperElement, direction);\n this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n\n if (direction === 'top') {\n // Ensure target is elevated above shadows in popover, i.e. content wrapped in Card:\n this.renderer.setStyle(this.targetElement, 'z-index', `${this.zIndex + 1}`);\n this.renderer.setStyle(this.targetElement, 'pointer-events', 'none');\n }\n }\n}\n","export enum OpenState {\n closed,\n opening,\n open,\n}\n\nexport enum VerticalDirection {\n up,\n down,\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KeyboardHandlerService {\n handle(event: KeyboardEvent, items: any[] | string[], selectedIndex: number) {\n let newIndex = -1;\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowLeft':\n // Select previous item:\n newIndex = selectedIndex - 1;\n break;\n case 'ArrowDown':\n case 'ArrowRight':\n if (selectedIndex === undefined) {\n // None selected, select first item:\n newIndex = 0;\n } else if (selectedIndex < items.length - 1) {\n // Select next item:\n newIndex = selectedIndex + 1;\n }\n break;\n case 'Home':\n // Select first item:\n newIndex = 0;\n break;\n case 'End':\n // Select last item:\n newIndex = items.length - 1;\n break;\n default:\n break;\n }\n return newIndex;\n }\n}\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n RendererStyleFlags2,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ButtonComponent } from '../button/button.component';\nimport { CardComponent } from '../card/card.component';\nimport { ItemComponent } from '../item/item.component';\nimport { ListItemTemplateDirective } from '../list/list.directive';\nimport { HorizontalDirection, PopoverComponent } from '../popover/popover.component';\n\nimport { OpenState, VerticalDirection } from './dropdown.types';\nimport { KeyboardHandlerService } from './keyboard-handler.service';\n\n@Component({\n selector: 'kirby-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true,\n },\n ],\n})\nexport class DropdownComponent\n implements AfterContentChecked, AfterViewInit, OnDestroy, ControlValueAccessor {\n static readonly OPEN_DELAY_IN_MS = 100;\n private state = OpenState.closed;\n private hasConfiguredSlottedItems = false;\n private horizontalDirection = HorizontalDirection.right;\n private verticalDirection = VerticalDirection.down;\n\n private _items: string[] | any[] = [];\n get items(): string[] | any[] {\n return this._items;\n }\n\n @Input() set items(value: string[] | any[]) {\n this._items = value;\n this._value = this.items[this.selectedIndex] || null;\n }\n\n private _selectedIndex: number = -1;\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n @Input() set selectedIndex(value: number) {\n if (this._selectedIndex != value) {\n this._selectedIndex = value;\n this._value = this.items[this.selectedIndex] || null;\n }\n }\n\n @Input()\n itemTextProperty = 'text';\n\n @Input()\n placeholder = 'Please select:';\n\n @Input() set popout(direction: HorizontalDirection) {\n this.horizontalDirection = direction || HorizontalDirection.right;\n }\n\n get popout() {\n return this.horizontalDirection;\n }\n\n @Input()\n attentionLevel: '1' | '2' | '3' | '4' = '3';\n readonly attentionLevelOpen = '2';\n\n @Input()\n expand?: 'block';\n\n @Input()\n disabled = false;\n\n @HostBinding('attr.disabled')\n get _isDisabled() {\n return this.disabled ? 'disabled' : null;\n }\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @Input()\n size: 'sm' | 'md' = 'md';\n\n @Input()\n tabindex = 0;\n\n @HostBinding('class.with-popover')\n @Input()\n usePopover = false;\n\n @HostBinding('attr.tabindex')\n get _tabindex() {\n return this.disabled ? -1 : this.tabindex;\n }\n\n // Prevent Ionic blur on scroll\n @HostBinding('attr.no-blur')\n get _noBlurOnScroll() {\n return true;\n }\n\n /**\n * Emitted when an item is selected (tap on mobile, click/keypress on web)\n */\n @Output() change: EventEmitter<string | any> = new EventEmitter<string | any>();\n\n private _value: string | any = null;\n get value(): string | any {\n return this._value;\n }\n\n get selectedText(): string {\n return this.getTextFromItem(this.value);\n }\n\n @HostBinding('class.expand')\n get _isBlockLevel() {\n return this.expand === 'block';\n }\n\n @HostBinding('attr.role')\n _role = 'listbox';\n\n @HostBinding('class.is-opening')\n get _isOpening(): boolean {\n return this.state === OpenState.opening;\n }\n\n @HostBinding('class.is-open')\n get isOpen(): boolean {\n return this.state === OpenState.open;\n }\n\n @HostBinding('class.popout-left')\n get _popoutLeft() {\n return this.horizontalDirection === HorizontalDirection.left;\n }\n\n @HostBinding('class.popout-up')\n get _popoutUp() {\n return this.verticalDirection === VerticalDirection.up;\n }\n\n @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n itemTemplate: TemplateRef<any>;\n @ContentChildren(ListItemTemplateDirective, { read: ElementRef })\n slottedItems: QueryList<ElementRef<HTMLElement>>;\n @ViewChild(CardComponent, { read: ElementRef })\n cardElement: ElementRef<HTMLElement>;\n @ViewChild(PopoverComponent)\n popover?: PopoverComponent;\n @ViewChild(ButtonComponent, { static: true, read: ElementRef })\n buttonElement: ElementRef<HTMLElement>;\n @ViewChildren(ItemComponent, { read: ElementRef })\n kirbyItemsDefault: QueryList<ElementRef<HTMLElement>>;\n @ContentChildren(ItemComponent, { read: ElementRef })\n kirbyItemsSlotted: QueryList<ElementRef<HTMLElement>>;\n\n private itemClickUnlisten: (() => void)[] = [];\n private intersectionObserverRef: IntersectionObserver;\n private showDropdownTimeoutId: ReturnType<typeof setTimeout>;\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef<HTMLElement>,\n private changeDetectorRef: ChangeDetectorRef,\n private keyboardHandlerService: KeyboardHandlerService\n ) {}\n\n onToggle(event: MouseEvent) {\n event.stopPropagation();\n if (!this.isOpen) {\n this.elementRef.nativeElement.focus();\n }\n this.toggle();\n }\n\n toggle() {\n if (this.disabled) {\n return;\n }\n this.isOpen ? this.close() : this.open();\n }\n\n onButtonMouseEvent(event: Event) {\n // Prevent button focus;\n event.preventDefault();\n }\n\n ngAfterContentChecked() {\n if (!this.hasConfiguredSlottedItems && this.kirbyItemsSlotted.length) {\n this.kirbyItemsSlotted.forEach((kirbyItem, index) => {\n this.renderer.setAttribute(kirbyItem.nativeElement, 'role', 'option');\n const unlisten = this.renderer.listen(kirbyItem.nativeElement, 'click', () => {\n this.onItemSelect(index);\n });\n this.itemClickUnlisten.push(unlisten);\n });\n this.hasConfiguredSlottedItems = true;\n }\n }\n\n /* Utility that makes it easier to set styles on card element \n when using popover*/\n private setPopoverCardStyle(style: string, value: string) {\n if (!this.usePopover) return;\n\n this.renderer.setStyle(\n this.cardElement.nativeElement,\n style,\n value,\n RendererStyleFlags2.DashCase\n );\n }\n\n ngAfterViewInit() {\n if (this.usePopover && this.expand === 'block') {\n const { width } = this.elementRef.nativeElement.getBoundingClientRect();\n this.setPopoverCardStyle('--kirby-card-width', `${width}px`);\n this.setPopoverCardStyle('max-width', 'initial');\n this.setPopoverCardStyle('min-width', 'initial');\n }\n this.initializeAlignment();\n }\n\n private initializeAlignment() {\n if (this.usePopover) return;\n if (!this.intersectionObserverRef) {\n const options = {\n rootMargin: '0px',\n };\n const callback: IntersectionObserverCallback = (entries) => {\n // Only apply alignment when opening:\n if (this.state !== OpenState.opening) {\n return;\n }\n\n // Cancel any pending timer to show dropdown:\n clearTimeout(this.showDropdownTimeoutId);\n const entry = entries[0];\n const isVisible = entry.boundingClientRect.width > 0;\n if (isVisible && entry.intersectionRatio < 1) {\n this.setHorizontalDirection(entry);\n this.setVerticalDirection(entry);\n }\n this.showDropdown();\n this.changeDetectorRef.detectChanges();\n };\n this.intersectionObserverRef = new IntersectionObserver(callback, options);\n this.intersectionObserverRef.observe(this.cardElement.nativeElement);\n }\n }\n\n private setHorizontalDirection(entry: IntersectionObserverEntry) {\n // If popout direction is set to right, and the entry is cut off to the right by ${entry.boundingClientRect.right - entry.intersectionRect.right}px\n // it is set to popout left instead, and vice versa for popout direction left\n if (this.horizontalDirection === HorizontalDirection.right) {\n if (entry.boundingClientRect.right > entry.rootBounds.right) {\n this.horizontalDirection = HorizontalDirection.left;\n }\n } else {\n if (entry.boundingClientRect.left < entry.rootBounds.left) {\n this.horizontalDirection = HorizontalDirection.right;\n }\n }\n }\n\n private setVerticalDirection(entry: IntersectionObserverEntry) {\n if (entry.boundingClientRect.top < 0) {\n // entry is cut off at the top by ${entry.boundingClientRect.top}px\n // open downwards:\n this.verticalDirection = VerticalDirection.down;\n }\n if (entry.boundingClientRect.bottom > entry.rootBounds.bottom) {\n // entry is cut off at the bottom by ${entry.boundingClientRect.bottom - entry.intersectionRect.bottom}px\n const containerOffsetTop = this.elementRef.nativeElement.getBoundingClientRect().top;\n const SPACING = 5; //TODO: Get from SCSS\n // Check if the card can fit on top of button:\n if (containerOffsetTop > entry.target.clientHeight + SPACING) {\n // open upwards:\n this.verticalDirection = VerticalDirection.up;\n }\n }\n }\n\n open() {\n if (this.disabled) {\n return;\n }\n if (!this.isOpen) {\n this.state = OpenState.opening;\n // ensures that the dropdown is opened in case the IntersectionObserverCallback isn't invoked\n this.showDropdownTimeoutId = setTimeout(\n () => this.showDropdown(),\n DropdownComponent.OPEN_DELAY_IN_MS\n );\n }\n }\n\n private showDropdown() {\n if (this.state === OpenState.opening) {\n this.state = OpenState.open;\n this.popover?.show();\n this.scrollItemIntoView(this.selectedIndex);\n this.changeDetectorRef.markForCheck();\n }\n }\n\n close() {\n if (this.disabled) {\n return;\n }\n if (this.isOpen) {\n this.state = OpenState.closed;\n // Reset vertical direction to default\n this.verticalDirection = VerticalDirection.down;\n this.popover?.hide();\n }\n }\n\n onItemSelect(index: number) {\n this.selectItem(index);\n this.close();\n }\n\n private _onChange: (value: any) => void = () => {};\n private _onTouched = () => {};\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n this._selectItemByValue(value);\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private selectItem(index: number) {\n if (index != this.selectedIndex) {\n this.selectedIndex = index;\n this.change.emit(this.value);\n this._onChange(this.value);\n this.scrollItemIntoView(index);\n }\n }\n\n private _selectItemByValue(value: string | any) {\n this.selectedIndex = this.items.indexOf(value);\n }\n\n getTextFromItem(item: string | any) {\n if (!item) {\n return null;\n }\n return typeof item === 'string' ? item : item[this.itemTextProperty];\n }\n\n scrollItemIntoView(index: number) {\n const kirbyItems =\n this.kirbyItemsSlotted && this.kirbyItemsSlotted.length\n ? this.kirbyItemsSlotted\n : this.kirbyItemsDefault;\n if (kirbyItems && kirbyItems.length) {\n const selectedKirbyItem = kirbyItems.toArray()[index];\n if (selectedKirbyItem && selectedKirbyItem.nativeElement) {\n const itemElement = selectedKirbyItem.nativeElement;\n const scrollContainer = this.cardElement.nativeElement;\n const itemTop = itemElement.offsetTop;\n const itemBottom = itemElement.offsetTop + itemElement.offsetHeight;\n const containerVisibleTop = scrollContainer.scrollTop;\n const containerVisibleBottom = scrollContainer.clientHeight + scrollContainer.scrollTop;\n if (itemTop < containerVisibleTop) {\n scrollContainer.scrollTop = itemTop;\n } else if (itemBottom > containerVisibleBottom) {\n scrollContainer.scrollTop = itemBottom - scrollContainer.clientHeight;\n }\n }\n }\n }\n\n @HostListener('keydown.tab', ['$event'])\n _onTab(event: KeyboardEvent) {\n if (this.isOpen) {\n event.preventDefault();\n this.close();\n }\n }\n\n @HostListener('mousedown', ['$event'])\n _onMouseDown(event: MouseEvent) {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('focus')\n _onFocus() {\n if (this.disabled) {\n this.elementRef.nativeElement.blur();\n }\n }\n\n _onPopoverWillHide() {\n this.state = OpenState.closed;\n this.elementRef.nativeElement.focus();\n }\n\n @HostListener('keydown.enter')\n @HostListener('keydown.escape')\n @HostListener('blur', ['$event'])\n _onBlur(event?: FocusEvent) {\n if (this.disabled) return;\n if (this.isOpen) {\n if (!this.cardElement.nativeElement.contains(event?.relatedTarget as HTMLElement)) {\n this.close();\n }\n }\n this._onTouched();\n }\n\n @HostListener('keydown.space', ['$event'])\n _onSpace(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.isOpen) {\n this.open();\n }\n }\n\n @HostListener('keydown.enter', ['$event'])\n _onEnter(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.toggle();\n }\n\n @HostListener('keydown.arrowup', ['$event'])\n @HostListener('keydown.arrowdown', ['$event'])\n @HostListener('keydown.arrowleft', ['$event'])\n @HostListener('keydown.arrowright', ['$event'])\n _onArrowKeys(event: KeyboardEvent) {\n if (this.disabled) return;\n // Mirror default HTML5 select behaviour - prevent left/right arrows when open:\n if (this.isOpen && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {\n return;\n }\n const newIndex = this.keyboardHandlerService.handle(event, this.items, this.selectedIndex);\n if (newIndex > -1) {\n this.selectItem(newIndex);\n }\n return false;\n }\n\n @HostListener('keydown.home', ['$event'])\n @HostListener('keydown.end', ['$event'])\n _onHomeEndKeys(event: KeyboardEvent) {\n if (this.disabled) return;\n const newIndex = this.keyboardHandlerService.handle(event, this.items, this.selectedIndex);\n if (newIndex > -1) {\n this.selectItem(newIndex);\n }\n return false;\n }\n\n ngOnDestroy(): void {\n let unlisten: () => void;\n while ((unlisten = this.itemClickUnlisten.pop()) !== undefined) {\n unlisten();\n }\n if (this.intersectionObserverRef) {\n this.intersectionObserverRef.disconnect();\n }\n }\n}\n","import { AfterContentInit, Component, ContentChildren, Input, QueryList } from '@angular/core';\n\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'kirby-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n})\nexport class EmptyStateComponent implements AfterContentInit {\n @Input() iconName: string;\n @Input() customIconName: string;\n @Input() title: string;\n @Input() subtitle: string;\n\n @ContentChildren(ButtonComponent)\n private slottedButtons: QueryList<ButtonComponent>;\n\n ngAfterContentInit() {\n this.enforceAttentionLevelRules();\n\n /* setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when changing attention \n levels of slotted buttons in this.enforceAttentionLevelRules */\n this.slottedButtons.changes.subscribe(() => {\n setTimeout(() => this.enforceAttentionLevelRules());\n });\n }\n\n /** Enforces that all slotted buttons will have their attention\n * level set to 3, except the first button if it has\n * level 1.\n */\n private enforceAttentionLevelRules() {\n this.slottedButtons.forEach((button, index) => {\n if (index === 0 && button.isAttentionLevel1) return;\n\n if (!button.isAttentionLevel3) {\n button.attentionLevel = '3';\n }\n });\n }\n}\n","import { Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';\nimport { IonRadio } from '@ionic/angular';\n\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\n\n@Component({\n selector: 'kirby-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n})\nexport class RadioComponent {\n @Input()\n value: any;\n\n @HostBinding('class.has-label')\n @Input()\n text: string;\n\n @HostBinding('class')\n @Input()\n size?: 'xs' | 'sm' | 'md';\n\n @Input()\n disabled: boolean;\n @HostBinding('attr.disabled')\n get _isDisabled() {\n return this.disabled ? 'disabled' : null;\n }\n\n get buttonTabIndex(): number {\n return this.ionRadioElement ? this.ionRadioElement.nativeElement.tabIndex : -1;\n }\n\n focus() {\n this.ionRadioElement && this.ionRadioElement.nativeElement.focus();\n }\n\n _labelId = UniqueIdGenerator.scopedTo('kirby-radio-label').next();\n\n @ViewChild(IonRadio, { read: ElementRef, static: true }) private ionRadioElement?: ElementRef<\n HTMLIonRadioElement\n >;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\nimport { Component, HostListener, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ListItemTemplateDirective } from '../../list/list.directive';\nimport { RadioComponent } from '../radio.component';\n\n@Component({\n selector: 'kirby-radio-group',\n templateUrl: './radio-group.component.html',\n styles: ['ion-radio-group { display: inherit; flex-wrap: inherit}'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RadioGroupComponent,\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioGroupComponent implements AfterContentInit, ControlValueAccessor {\n constructor(private changeDetectionRef: ChangeDetectorRef) {}\n\n // #region public properties\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input() set disabled(value: boolean) {\n this._disabled = value;\n this.setProjectedRadiosDisabledState(value);\n }\n\n @HostBinding('class.error') // Used to style radios with error state\n @Input()\n hasError: boolean = false;\n\n get items(): string[] | any[] {\n return this._items || []; // Ensure items return empty array even if set to null/undefined\n }\n\n @Input() set items(value: string[] | any[]) {\n if ((!value || !value.length) && !this.items.length) return; // Nothing changed, no items before or after\n this._items = value;\n this.refreshSelectionState();\n }\n\n @Input()\n itemTextProperty = 'text';\n\n @Input()\n itemDisabledProperty = 'disabled';\n\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n @Input() set selectedIndex(value: number) {\n if (typeof value === 'string') value = parseInt(value); // Ensure data type number, e.g. when used with template syntax without binding: <... selectedIndex=\"1\"\n if (value === undefined || value === null || value === NaN) value = -1;\n if (value === this.selectedIndex) return;\n this._selectedIndex = value;\n this._value = this.getValueFromSelectedIndex() || null;\n }\n\n get value(): string | any {\n return this._value;\n }\n\n @Input() set value(value: string | any) {\n this.setSelectedItem(value);\n }\n\n private get hasValue(): boolean {\n return this.value !== undefined && this.value !== null;\n }\n\n /**\n * Emitted when an option is selected\n */\n @Output() valueChange: EventEmitter<string | any> = new EventEmitter<string | any>();\n // #endregion public properties\n\n // #region \"protected\" properties used by template\n @ContentChild(ListItemTemplateDirective, { read: TemplateRef })\n _customItemTemplate: TemplateRef<any>;\n // #endregion \"protected\" properties used by template\n\n // #region private fields\n private _disabled = false;\n private _items: string[] | any[] = [];\n private _onChangeCallback: (value: any) => void = () => {};\n private _onTouched = () => {};\n private _selectedIndex: number = -1;\n private _value?: string | any = null;\n @ViewChildren(RadioComponent)\n private radioButtons: QueryList<RadioComponent>;\n @ContentChildren(RadioComponent, { descendants: true })\n private projectedRadioButtons: QueryList<RadioComponent>;\n\n private get hasItemsFromContentProjection(): boolean {\n return (\n !this.items.length &&\n !this._customItemTemplate &&\n this.projectedRadioButtons &&\n this.projectedRadioButtons.length > 0\n );\n }\n\n // #endregion private fields\n\n // #region public methods\n focus() {\n const findFocusable = (radios: QueryList<RadioComponent>) =>\n radios && radios.find((radio) => !isNaN(radio.buttonTabIndex) && radio.buttonTabIndex !== -1);\n const focusable = findFocusable(this.radioButtons) || findFocusable(this.projectedRadioButtons);\n focusable && focusable.focus();\n }\n\n ngAfterContentInit(): void {\n this.initSelectionStateFromProjectedContent();\n this.listenForProjectedRadiosChange();\n }\n\n registerOnChange(fn: any): void {\n this._onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectionRef.markForCheck();\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.changeDetectionRef.markForCheck();\n }\n\n // #endregion public methods\n\n // #region \"protected\" methods used by template\n _getTextFromItem(item: string | any): string {\n if (!item) return null;\n return typeof item === 'string' ? item : item[this.itemTextProperty];\n }\n\n _getDisabledStateFromItem(item: string | any): boolean {\n if (!item) return undefined;\n return typeof item === 'string' ? undefined : item[this.itemDisabledProperty];\n }\n\n get _hasItems(): boolean {\n return this.items.length > 0 || this.hasItemsFromContentProjection;\n }\n\n _onChange(value: string | any) {\n if (value === this._value) return;\n this.setSelectedItem(value);\n this.valueChange.emit(value);\n this._onChangeCallback(value);\n }\n\n @HostListener('ionBlur')\n _onRadioBlur() {\n this._onTouched();\n }\n\n // #endregion \"protected\" methods used by template\n\n // #region private methods\n private getIndexOfSelectedValue() {\n if (!this.hasValue) return -1;\n return this.hasItemsFromContentProjection\n ? this.getIndexOfProjectedRadio(this.value)\n : this.items.indexOf(this.value);\n }\n\n private getIndexOfProjectedRadio(value: string | any): number {\n let selectedIndex = -1;\n this.projectedRadioButtons &&\n this.projectedRadioButtons.find((radio, i) => {\n const found = radio.value === value;\n if (found) {\n selectedIndex = i;\n }\n return found;\n });\n return selectedIndex;\n }\n\n private getValueFromSelectedIndex(): string | any {\n if (this.selectedIndex === -1) return;\n return this.hasItemsFromContentProjection\n ? this.getValueFromProjectedRadios(this.selectedIndex)\n : this.items[this.selectedIndex];\n }\n\n private getValueFromProjectedRadios(index: number): string | any {\n const radio =\n this.projectedRadioButtons &&\n this.projectedRadioButtons.find((_, i) => {\n return i === index;\n });\n return radio && radio.value;\n }\n\n private initSelectionStateFromProjectedContent() {\n if (this.hasItemsFromContentProjection) {\n this.refreshSelectionState(); // Initialize selected index and value from projected radios\n }\n }\n\n private listenForProjectedRadiosChange() {\n this.projectedRadioButtons.changes.subscribe(() => {\n this.refreshStateFromProjectedContent();\n\n if (this.disabled) {\n // Ensure disabled state propagates when re-rendering projected radios.\n // setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when updating the DOM in QueryList.changes:\n setTimeout(() => this.setProjectedRadiosDisabledState(this.disabled));\n }\n });\n }\n\n private refreshSelectionState() {\n if (this.hasValue) {\n this._selectedIndex = this.getIndexOfSelectedValue(); // Ensure selectedIndex reflects value within items\n }\n\n const valueFromSelectedIndex = this.getValueFromSelectedIndex();\n this._value = valueFromSelectedIndex !== undefined ? valueFromSelectedIndex : null;\n }\n\n private refreshStateFromProjectedContent() {\n if (!!this._customItemTemplate) return; // Only refresh on changes to projected content, not when re-rendering custom template\n this.changeDetectionRef.markForCheck(); // Ensure changes to projected content gets checked in next change detection cycle\n this.refreshSelectionState(); // Sync selected index and value from projected radios\n }\n\n private setSelectedItem(value: string | any) {\n if (value === this._value) return; // Nothing changed\n this._value = value;\n this._selectedIndex = this.getIndexOfSelectedValue();\n }\n\n private setProjectedRadiosDisabledState(isDisabled: boolean) {\n if (!this.projectedRadioButtons || !this.projectedRadioButtons.length) return;\n this.projectedRadioButtons.forEach((radio, index) => {\n // Disable all radios when group is disabled, otherwise fall back to each item's disabled state, if defined:\n radio.disabled = isDisabled || this._getDisabledStateFromItem(this.items[index]);\n });\n }\n\n // #endregion private methods\n}\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { TextareaComponent } from './../textarea/textarea.component';\nimport { InputComponent } from '../input/input.component';\n\n@Component({\n selector: 'kirby-input-counter',\n templateUrl: './input-counter.component.html',\n styleUrls: ['./input-counter.component.scss'],\n})\nexport class InputCounterComponent implements OnInit, OnDestroy {\n @Input() listenTo: InputComponent | TextareaComponent;\n length: number;\n maxlength: number;\n private _inputChangeSubscription: Subscription;\n\n get text(): string {\n if (this.length === undefined) {\n return undefined;\n }\n const ofMaxlength = this.maxlength ? `/${this.maxlength}` : '';\n return `${this.length}${ofMaxlength}`;\n }\n\n ngOnInit(): void {\n if (this.listenTo) {\n this.length = this.listenTo.value ? this.listenTo.value.length : 0;\n this.maxlength = this.listenTo.maxlength;\n this._inputChangeSubscription = this.listenTo.kirbyChange.subscribe((value) => {\n this.length = value.length;\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this._inputChangeSubscription) {\n this._inputChangeSubscription.unsubscribe();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\nexport enum InputSize {\n medium = 'md',\n large = 'lg',\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line:component-selector\n selector: 'input[kirby-input]',\n styleUrls: ['./input.component.scss'],\n template: '',\n})\nexport class InputComponent implements OnChanges {\n private static typeToInputmodeMap = {\n number: 'decimal',\n search: 'search',\n };\n\n kirbyChange = new EventEmitter<string>();\n\n @Input() set type(value: string) {\n const mappedValue = InputComponent.typeToInputmodeMap[value];\n if (mappedValue && !this.inputmode) {\n this.inputmode = mappedValue;\n }\n }\n\n @HostBinding('class')\n @Input()\n size: InputSize = InputSize.large;\n\n /**\n * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n */\n @HostBinding('class.borderless')\n @Input()\n borderless: boolean;\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @HostBinding('attr.autocomplete')\n @Input()\n autocomplete: 'on' | 'off' = 'off';\n\n @HostBinding('attr.autocorrect')\n @Input()\n autocorrect: 'on' | 'off' = 'off';\n\n @HostBinding('attr.value')\n @Input()\n value: string;\n\n @HostBinding('attr.maxlength')\n @Input()\n maxlength: number;\n\n @HostBinding('attr.inputmode')\n @Input()\n inputmode: string;\n\n @HostListener('keyup', ['$event.target.value'])\n _onKeyUp(value: string) {\n this.kirbyChange.emit(value);\n }\n\n @HostListener('paste', ['$event.target'])\n @HostListener('cut', ['$event.target'])\n _onCutPaste(target: HTMLInputElement) {\n //Value of input element is updated after cut/paste:\n setTimeout(() => this.kirbyChange.emit(target.value));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.kirbyChange.emit(changes.value.currentValue);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n HostBinding,\n EventEmitter,\n HostListener,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line:component-selector\n selector: 'textarea[kirby-textarea]',\n styleUrls: ['./textarea.component.scss'],\n templateUrl: './textarea.component.html',\n})\nexport class TextareaComponent implements OnChanges {\n kirbyChange = new EventEmitter<string>();\n\n @Input() value: string;\n\n /**\n * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n */\n @HostBinding('class.borderless')\n @Input()\n borderless: boolean;\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @HostBinding('attr.autocomplete')\n @Input()\n autocomplete: 'on' | 'off' = 'off';\n\n @HostBinding('attr.autocorrect')\n @Input()\n autocorrect: 'on' | 'off' = 'off';\n\n @HostBinding('attr.maxlength')\n @Input()\n maxlength: number;\n\n @HostListener('keyup', ['$event.target.value'])\n _onKeyUp(value: string) {\n this.kirbyChange.emit(value);\n }\n\n @HostListener('paste', ['$event.target'])\n @HostListener('cut', ['$event.target'])\n _onCutPaste(target: HTMLInputElement) {\n //Value of textarea element is updated after cut/paste:\n setTimeout(() => this.kirbyChange.emit(target.value));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.kirbyChange.emit(changes.value.currentValue);\n }\n }\n}\n","import {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { PlatformService } from '../../helpers/platform.service';\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\nimport { WindowRef } from '../../types/window-ref';\nimport { RadioGroupComponent } from '../radio/radio-group/radio-group.component';\n\nimport { InputCounterComponent } from './input-counter/input-counter.component';\nimport { InputComponent } from './input/input.component';\nimport { TextareaComponent } from './textarea/textarea.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kirby-form-field',\n styleUrls: ['./form-field.component.scss'],\n templateUrl: './form-field.component.html',\n})\nexport class FormFieldComponent\n implements AfterContentChecked, AfterContentInit, OnInit, OnDestroy {\n private isRegistered = false;\n private element: HTMLElement;\n private inputElement: HTMLInputElement | HTMLTextAreaElement;\n private isTouch: boolean;\n _labelId = UniqueIdGenerator.scopedTo('kirby-form-field-label').next();\n\n @Input() label: string;\n @Input() message: string;\n\n @ContentChild(InputCounterComponent, { static: false }) counter: InputCounterComponent;\n @ContentChild(RadioGroupComponent) private radioGroupComponent: RadioGroupComponent;\n @ContentChild(RadioGroupComponent, { read: ElementRef }) private radioGroupElement: ElementRef<\n HTMLElement\n >;\n\n @ContentChild(InputComponent, { read: ElementRef }) input: ElementRef<HTMLInputElement>;\n @ContentChild(TextareaComponent, { read: ElementRef }) textarea: ElementRef<HTMLTextAreaElement>;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private platform: PlatformService,\n private renderer: Renderer2,\n private windowRef: WindowRef\n ) {\n this.element = elementRef.nativeElement;\n }\n\n get _wrapContentInLabel(): boolean {\n return !!this.label && (!!this.input || !!this.textarea);\n }\n\n private dispatchLoadEvent() {\n // Dispatch an `ionInputDidLoad` event to register\n // form field + input/textarea with Ionic input shims\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n this.windowRef.nativeWindow.document.dispatchEvent(\n new CustomEvent('ionInputDidLoad', {\n detail: this.element,\n })\n );\n }\n\n @HostListener('kirbyRegisterFormField')\n _onRegisterFormField() {\n this.dispatchLoadEvent();\n }\n\n onLabelClick() {\n this.radioGroupComponent && this.radioGroupComponent.focus();\n }\n\n public focus() {\n if (!this.inputElement) return;\n\n if (this.isTouch) {\n // Trigger Ionic's input shims to ensure input is scrolled into view.\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/hacks/scroll-assist.ts\n const touchStart = new TouchEvent('touchstart');\n const touchEnd = new TouchEvent('touchend');\n this.inputElement.dispatchEvent(touchStart);\n this.inputElement.dispatchEvent(touchEnd);\n } else {\n this.inputElement.focus();\n }\n }\n\n ngOnInit() {\n this.isTouch = this.platform.isTouch();\n }\n\n ngAfterContentInit(): void {\n if (this.label && this.radioGroupElement) {\n this.renderer.setAttribute(\n this.radioGroupElement.nativeElement,\n 'aria-labelledby',\n this._labelId\n );\n }\n }\n\n ngAfterContentChecked(): void {\n if (!this.inputElement) {\n this.inputElement = this.element.querySelector('input, textarea');\n }\n\n // TODO: remove \"!this.inputElement.readOnly\" when ionic has fixed input click issue\n // https://github.com/ionic-team/ionic-framework/issues/22740\n if (\n !this.isRegistered &&\n this.element.isConnected &&\n !!this.inputElement &&\n !this.inputElement.readOnly\n ) {\n // Host is connected to dom and slotted input/textarea is present:\n this.isRegistered = true;\n this.dispatchLoadEvent();\n }\n }\n\n ngOnDestroy(): void {\n // Dispatch an `ionInputDidUnload` event to unregister\n // form field + input/textarea from Ionic input shims\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n this.windowRef.nativeWindow.document.dispatchEvent(\n new CustomEvent('ionInputDidUnload', {\n detail: this.element,\n })\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kirby-form-field-message',\n styleUrls: ['./form-field-message.component.scss'],\n templateUrl: './form-field-message.component.html',\n})\nexport class FormFieldMessageComponent {\n @Input() text: string;\n @Input() position: 'left' | 'right' = 'left';\n}\n","import { FormatWidth, getLocaleDateFormat } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n LOCALE_ID,\n Renderer2,\n} from '@angular/core';\nimport 'inputmask/lib/extensions/inputmask.date.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\n@Directive({\n selector: '[kirby-input][type=\"date\"]',\n})\nexport class DateInputDirective implements AfterViewInit {\n @HostListener('input')\n onInput() {\n this.updateMask(this.elementRef.nativeElement.value);\n }\n\n private maskingElement: HTMLElement;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n @Inject(LOCALE_ID) private locale: string\n ) {\n // Remove type to avoid user-agent specific behaviour for [type=\"date\"]\n this.elementRef.nativeElement.removeAttribute('type');\n }\n\n ngAfterViewInit(): void {\n this.initMask();\n }\n\n private initMask(): void {\n const inputFormat = this.getInputFormat();\n const placeholder = this.getPlaceholder(inputFormat);\n\n // Set initial placeholder ex. dd/mm/yyyy\n this.renderer.setAttribute(this.elementRef.nativeElement, 'placeholder', placeholder);\n\n // Init InputMask\n new Inputmask('datetime', {\n inputFormat,\n placeholder,\n }).mask(this.elementRef.nativeElement);\n\n // Append input overlay, so it's possible to style typed date differntly than the date-mask\n this.appendMaskingElement();\n }\n\n // Keeps order and seperator from speficied locale\n private getInputFormat(): string {\n const localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n return localeDateFormat\n .toLowerCase()\n .replace(/d+/, 'dd')\n .replace(/m+/, 'mm')\n .replace(/y+/, 'yyyy');\n }\n\n private getPlaceholder(inputFormat: string): string {\n return this.locale === 'da' ? inputFormat.split('y').join('å') : inputFormat;\n }\n\n private appendMaskingElement(): void {\n const wrapper = this.wrapElement(this.elementRef.nativeElement);\n this.renderer.addClass(wrapper, 'date-mask-wrapper');\n\n this.maskingElement = this.renderer.createElement('div');\n this.renderer.appendChild(wrapper, this.maskingElement);\n\n this.renderer.addClass(this.maskingElement, 'date-mask');\n }\n\n private wrapElement(element: HTMLElement): HTMLElement {\n const wrapper = this.renderer.createElement('div');\n const parent = element.parentElement;\n this.renderer.insertBefore(parent, wrapper, element);\n this.renderer.appendChild(wrapper, element);\n return wrapper;\n }\n\n private updateMask(value: string): void {\n if (!this.maskingElement) return;\n const lastNumber = value.match(/.*?(\\d)[^\\d]*$/); // get last number in string\n this.maskingElement.innerHTML = value\n ? value.slice(0, value.lastIndexOf(lastNumber[1]) + 1)\n : '';\n }\n}\n","import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport 'inputmask/lib/extensions/inputmask.numeric.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\ninterface InputMask {\n unmaskedvalue: () => string;\n setValue: (val: string) => void;\n}\n\n@Directive({\n // tslint:disable-next-line\n selector: '[kirby-decimal-mask]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: DecimalMaskDirective,\n },\n ],\n})\nexport class DecimalMaskDirective implements ControlValueAccessor, OnInit {\n @Input() min: number;\n @Input() max: number;\n @Input() precision = 2;\n @Input() setMaxOnOverflow = false;\n\n @Input() set allowMinus(allowMinus: boolean) {\n this._allowMinus = allowMinus || (this.min || 0) < 0;\n }\n\n @Input() set disableGroupSeperator(disabled: string) {\n this._groupSeperatorDisabled = String(disabled) === '' || String(disabled) === 'true';\n }\n\n @Input() set maxlength(maxlength: number) {\n this._maxlength = maxlength;\n\n const maxlengthValue = parseInt('9'.repeat(maxlength));\n this.max = this.getMax(maxlengthValue);\n this.min = this.getMin(maxlengthValue);\n }\n\n groupSeparator = getLocaleNumberSymbol(this.locale, NumberSymbol.Group);\n radixPoint = getLocaleNumberSymbol(this.locale, NumberSymbol.Decimal);\n inputmask: InputMask;\n\n _allowMinus = false;\n _maxlength: number;\n _groupSeperatorDisabled: boolean;\n\n onChange = (_: string) => {};\n\n constructor(private elementRef: ElementRef, @Inject(LOCALE_ID) private locale: string) {}\n\n ngOnInit(): void {\n // Set type=\"text\", because functionality like 'setSelectionRange' are not supported on type=\"number\"\n this.elementRef.nativeElement.setAttribute('type', 'text');\n\n // Remove maxlength as this is handled by the mask\n this.elementRef.nativeElement.removeAttribute('maxlength');\n\n this.initMask();\n }\n\n writeValue(val: number): void {\n if (!this.inputmask) return;\n const formattedValue = String(val).replace('.', this.radixPoint);\n this.inputmask.setValue(formattedValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(_: any): void {}\n\n private initMask(): void {\n new Inputmask('decimal', {\n groupSeparator: this._groupSeperatorDisabled ? '' : this.groupSeparator,\n radixPoint: this.radixPoint,\n digits: this._maxlength ? 0 : this.precision,\n min: this.min,\n max: this.max,\n allowMinus: this._allowMinus,\n negationSymbol: {\n front: getLocaleNumberSymbol(this.locale, NumberSymbol.MinusSign),\n back: '',\n },\n SetMaxOnOverflow: this.setMaxOnOverflow,\n showMaskOnFocus: false,\n showMaskOnHover: false,\n placeholder: '',\n onBeforeWrite: () => {\n if (!this.inputmask) return;\n const unmaskedValue = this.inputmask.unmaskedvalue();\n this.onChange(unmaskedValue.replace(this.radixPoint, '.'));\n },\n }).mask(this.elementRef.nativeElement);\n this.inputmask = this.elementRef.nativeElement.inputmask;\n }\n\n private getMax(maxlengthValue: number): number {\n return this.max === undefined ? maxlengthValue : Math.min(this.max, maxlengthValue);\n }\n\n private getMin(maxlengthValue: number): number {\n if (!this.allowMinus) return;\n maxlengthValue = -Math.abs(maxlengthValue);\n return this.min === undefined ? maxlengthValue : -Math.abs(Math.max(this.min, maxlengthValue));\n }\n}\n","import {\n Component,\n ContentChild,\n HostBinding,\n Input,\n AfterContentInit,\n AfterViewInit,\n ViewChild,\n ElementRef,\n Renderer2,\n Inject,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { IonFab, IonFabButton, IonIcon } from '@ionic/angular';\n\nimport { ActionSheetComponent } from '../modal/action-sheet/action-sheet.component';\nimport { kirbyIconSettings } from '../icon/kirby-icon-settings';\nimport { Icon } from '../icon/icon-settings';\n\n@Component({\n selector: 'kirby-fab-sheet',\n templateUrl: './fab-sheet.component.html',\n styleUrls: ['./fab-sheet.component.scss'],\n})\nexport class FabSheetComponent implements AfterContentInit, AfterViewInit {\n @Input() disabled: boolean = false;\n @Input() horizontalAlignment: 'left' | 'center' | 'right' = 'right';\n\n private _isFabSheetOpen: boolean = false;\n @HostBinding('class.is-open')\n get isFabSheetOpen() {\n return this._isFabSheetOpen;\n }\n\n private _isBackdropVisible: boolean = false;\n @HostBinding('class.backdrop-visible')\n get isBackdropVisible() {\n return this._isBackdropVisible;\n }\n\n @ContentChild(ActionSheetComponent, { static: false }) actionSheet: ActionSheetComponent;\n\n @ViewChild(IonFabButton, { static: true, read: ElementRef }) ionFabButton: ElementRef<\n HTMLElement\n >;\n\n constructor(private renderer: Renderer2, @Inject(DOCUMENT) private document: any) {}\n\n ngAfterViewInit(): void {\n const kirbyCloseIcon = kirbyIconSettings.icons.find((icon) => icon.name === 'close');\n this.setCloseIcon(kirbyCloseIcon);\n }\n\n private setCloseIcon(kirbyCloseIcon: Icon, retryCount = 0) {\n const maxRetryCount = 20;\n const retryDelayInMs = 20;\n const fabButtonElement = this.ionFabButton.nativeElement;\n if (!fabButtonElement || !kirbyCloseIcon || retryCount >= maxRetryCount) {\n return;\n }\n if (fabButtonElement.shadowRoot && fabButtonElement.shadowRoot.innerHTML) {\n const closeIcon = fabButtonElement.shadowRoot.querySelector('.close-icon ion-icon');\n if (closeIcon) {\n const closeIconSvgLoaded = closeIcon.shadowRoot.querySelector('.icon-inner svg');\n const ionCloseIcon = (closeIcon as unknown) as IonIcon;\n if (ionCloseIcon && closeIconSvgLoaded) {\n ionCloseIcon.src = kirbyCloseIcon.svg;\n return;\n }\n }\n }\n retryCount++;\n setTimeout(() => this.setCloseIcon(kirbyCloseIcon, retryCount), retryDelayInMs);\n }\n\n ngAfterContentInit(): void {\n if (this.actionSheet) {\n this.actionSheet.hideCancel = true;\n }\n }\n\n hideActions(fab: IonFab) {\n fab.close();\n this._isFabSheetOpen = false;\n this._isBackdropVisible = false;\n this.renderer.removeClass(this.document.body, 'fab-sheet-active');\n }\n\n onFabClick(fab: IonFab) {\n this._isFabSheetOpen = !fab.activated;\n if (this._isFabSheetOpen) {\n this.renderer.addClass(this.document.body, 'fab-sheet-active');\n } else {\n this.renderer.removeClass(this.document.body, 'fab-sheet-active');\n }\n setTimeout(() => (this._isBackdropVisible = this.isFabSheetOpen));\n }\n}\n","// TODO TRM/JEO Parse from scss files instead!!1!!\nexport class ScssHelper {\n // Breakpoints\n public static BREAKPOINT_SCREEN_L = 720;\n public static BREAKPOINT_CARD_S = 320;\n public static BREAKPOINT_CARD_M = 460;\n public static BREAKPOINT_CARD_L = 820;\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BreakpointHelperService implements OnDestroy {\n currentScreenWidth: 800;\n private orientationChangedSubject = new Subject<void>();\n\n constructor() {\n this.init();\n }\n\n private init() {\n // TODO JEO: Implement Angular/CDK BreakpointObserver:\n this.orientationChangedSubject.next();\n }\n\n observe(): Observable<void> {\n return this.orientationChangedSubject.asObservable();\n }\n\n ngOnDestroy() {\n this.orientationChangedSubject.complete();\n }\n}\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ScssHelper } from '../../scss/scss-helper';\nimport { BreakpointHelperService } from './breakpoint-helper.service';\nimport { GridCardConfiguration } from './grid-card-configuration';\n\nclass GridCard {\n configuration: GridCardConfiguration;\n row: number;\n col: number;\n colSpan: number;\n\n constructor(configuration: GridCardConfiguration, row: number, col: number, colSpan: number) {\n this.configuration = configuration;\n this.row = row;\n this.col = col;\n this.colSpan = colSpan;\n }\n}\n\n@Component({\n selector: 'kirby-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n // tslint:disable-next-line\n host: { '[attr.max-columns]': 'maxColumns' },\n})\nexport class GridComponent implements OnInit, OnDestroy {\n cardConfigs: GridCardConfiguration[];\n cards: GridCard[] = [];\n private breakpointSubscription: Subscription;\n\n @Input() maxColumns: number;\n\n @Input()\n set cardConfigurations(cardConfigurations: GridCardConfiguration[]) {\n this.cardConfigs = cardConfigurations;\n // TODO TRM/JEO Remove this when breakpoint observe something something...\n this.configureGrid();\n }\n\n constructor(private breakpointHelper: BreakpointHelperService) {}\n\n configureGrid() {\n let calculatedMaxColumns = 0;\n if (this.maxColumns === undefined) {\n calculatedMaxColumns =\n this.breakpointHelper.currentScreenWidth >= ScssHelper.BREAKPOINT_SCREEN_L ? 2 : 1;\n } else {\n calculatedMaxColumns = this.maxColumns;\n }\n this.cards = [];\n let columnCounter = 0;\n let currentRow = 0;\n let currentColumn = 0;\n\n this.cardConfigs.forEach((card, index) => {\n // Cards colspan is added to the column counter\n columnCounter += card.preferredSize;\n // If only maxColumns are set to 1, just add all cards with a colspan of 1\n if (calculatedMaxColumns === 1) {\n this.cards.push(new GridCard(card, currentRow, currentColumn, 1));\n currentRow += 1;\n return;\n }\n // If we are below maxColumns, then add the card to the array\n if (columnCounter <= calculatedMaxColumns) {\n this.cards.push(new GridCard(card, currentRow, currentColumn, card.preferredSize));\n // Update currentColumn, so the next card will be placed correctly\n currentColumn += card.preferredSize;\n } else {\n // The new card didn't fit - Calculate remaining columns for previous card\n const restColumns = calculatedMaxColumns - (columnCounter - card.preferredSize);\n const prevCard = this.cards[index - 1];\n // Add the restColumns to the previous cards colspan, to make it span out\n prevCard.colSpan = restColumns + prevCard.colSpan;\n // We are now on a new row\n currentRow += 1;\n currentColumn = 0;\n this.cards.push(new GridCard(card, currentRow, currentColumn, card.preferredSize));\n // Update currentColumn to match the size of the new card and reset columnCounter\n currentColumn = card.preferredSize;\n columnCounter = card.preferredSize;\n }\n // If we on the last card, make sure it spans all the rest of the columns\n if (this.cardConfigs.length - 1 === index) {\n const restColumns = calculatedMaxColumns - columnCounter;\n const currentCard = this.cards[index];\n currentCard.colSpan += restColumns;\n }\n });\n }\n\n ngOnInit() {\n // this.breakpointSubscription = this.breakpointHelper.observe().subscribe(() => {\n // this.configureGrid();\n // });\n }\n\n ngOnDestroy() {\n if (this.breakpointSubscription) {\n this.breakpointSubscription.unsubscribe();\n }\n }\n}\n","import { Type } from '@angular/core';\n\nimport { ComponentConfiguration } from '../shared/component-configuration';\n\nexport class GridCardConfiguration implements ComponentConfiguration {\n constructor(public component: Type<any>, public data: any, public preferredSize: number) {}\n}\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [IonicModule],\n declarations: [IconComponent],\n exports: [IconComponent],\n})\nexport class IconModule {}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'kirby-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n})\nexport class LabelComponent {\n @Input()\n direction: 'vertical' | 'horizontal' = 'vertical';\n\n @HostBinding('class.horizontal')\n get _direction() {\n return this.direction === 'horizontal';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { CommonModule } from '@angular/common';\n\nimport { IconModule } from '../icon/icon.module';\nimport { ItemComponent } from './item.component';\nimport { LabelComponent } from './label/label.component';\n\n@NgModule({\n imports: [IonicModule, IconModule, CommonModule],\n declarations: [ItemComponent, LabelComponent],\n exports: [ItemComponent, LabelComponent],\n})\nexport class ItemModule {}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'kirby-item-group',\n templateUrl: './item-group.component.html',\n styleUrls: ['./item-group.component.scss'],\n})\nexport class ItemGroupComponent {\n @HostBinding('attr.role') role: string = 'group';\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kirby-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n})\nexport class SpinnerComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { ComponentFactoryResolver, Injectable, Injector } from '@angular/core';\nimport { LoadingController } from '@ionic/angular';\n\nimport { SpinnerComponent } from '../spinner/spinner.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingOverlayService {\n private ionLoading: HTMLIonLoadingElement = null;\n\n constructor(\n private loadingController: LoadingController,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector\n ) {}\n\n public async showLoadingOverlay(showBackdrop: boolean = true): Promise<void> {\n if (!this.ionLoading) {\n this.ionLoading = await this.loadingController.create({\n cssClass: 'kirby-loading-overlay',\n duration: 0,\n message: null,\n showBackdrop: showBackdrop,\n spinner: null,\n });\n\n const loadingWrapper = this.ionLoading.querySelector('.loading-wrapper');\n const kirbySpinner = document.createElement('kirby-spinner');\n const factory = this.componentFactoryResolver.resolveComponentFactory(SpinnerComponent);\n factory.create(this.injector, [], kirbySpinner);\n loadingWrapper.appendChild(kirbySpinner);\n\n await this.ionLoading.present();\n }\n }\n\n public async hideLoadingOverlay(): Promise<void> {\n if (!!this.ionLoading) {\n await this.ionLoading.dismiss();\n this.ionLoading = null;\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-loading-overlay',\n templateUrl: './loading-overlay.component.html',\n styleUrls: ['./loading-overlay.component.scss'],\n})\nexport class LoadingOverlayComponent {\n @Input() public isLoading = true;\n @Input() public showBackdrop = true;\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { WindowRef } from '../../../types/window-ref';\n\nimport { Scroll } from './scroll.model';\n\n/**\n * Specify debounce duration in ms\n */\nexport const INFINITE_SCROLL_DEBOUNCE = 100;\n\n@Directive({\n selector: '[kirbyInfiniteScroll]',\n})\nexport class InfiniteScrollDirective implements AfterViewInit, OnDestroy {\n /**\n * Event that will be triggered when the user has scrolled to\n * bottom of the element\n */\n @Output() scrollEnd = new EventEmitter<void>();\n\n /**\n * If true then {@link scrollEnd} event should NOT be emitted\n */\n @Input() disabled = false;\n\n /**\n * Emits a new value on element scroll event\n */\n scroll$: Subject<Scroll> = new Subject<Scroll>();\n\n /**\n * Completes on component destroy lifecycle event\n * used to unsubscribe from infinite observables\n */\n private ngUnsubscribe$ = new Subject<void>();\n\n /**\n * An offset from the bottom of the element to trigger {@link scrollEnd} event\n */\n private offset = 0.8;\n\n constructor(private elementRef: ElementRef, private windowRef: WindowRef, private zone: NgZone) {}\n\n ngAfterViewInit(): void {\n /**\n * Subscribe to {@link scroll$} observable and emit {@link scrollEnd} event\n * when element scroll position has surpassed the offset.\n */\n this.scroll$\n .pipe(\n takeUntil(this.ngUnsubscribe$),\n debounceTime(INFINITE_SCROLL_DEBOUNCE),\n filter(() => !this.disabled),\n filter((scroll) => {\n return (\n scroll.elementHeight * (1 - this.offset) >=\n scroll.distanceToViewBottom - scroll.viewHeight\n );\n })\n )\n .subscribe(() => {\n this.scrollEnd.emit();\n });\n\n /**\n * Subscribe to the ionScroll event on the ion-content around the list (if any)\n * and emit {@link scrollEnd} event when element scroll position has surpassed the offset.\n */\n setTimeout(() => {\n const ionContent: HTMLElement = this.elementRef.nativeElement.closest('ion-content');\n if (ionContent) {\n // we run the 'ionScroll' event outside angular, as it would trigger change detection on each scroll\n this.zone.runOutsideAngular(() => {\n fromEvent<any>(ionContent, 'ionScroll')\n .pipe(\n takeUntil(this.ngUnsubscribe$),\n debounceTime(INFINITE_SCROLL_DEBOUNCE),\n filter(() => !this.disabled),\n map(() => this.getScroll()),\n filter((scroll) => {\n return (\n scroll.elementHeight * (1 - this.offset) >=\n scroll.distanceToViewBottom - scroll.viewHeight\n );\n })\n )\n .subscribe(() => {\n // we make sure to emit the event inside angular again. As we want to show the spinner and need change detection for that.\n this.zone.run(() => this.scrollEnd.emit());\n });\n });\n }\n });\n }\n\n /**\n * On element scroll event emit next {@link scroll$} observable value\n */\n @HostListener('window:scroll')\n onScroll(): void {\n if (this.disabled) return;\n const scroll = this.getScroll();\n this.scroll$.next(scroll);\n }\n\n /**\n * trigger {@link ngUnsubscribe} complete on component destroy lifecycle hook\n */\n ngOnDestroy(): void {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n\n private getScroll(): Scroll {\n const element = this.elementRef.nativeElement as HTMLElement;\n const boundindClientRect = element.getBoundingClientRect();\n\n const distanceToViewBottom = boundindClientRect.bottom;\n const elementHeight = boundindClientRect.height;\n const viewHeight = this.windowRef.nativeWindow.innerHeight;\n\n return { distanceToViewBottom, elementHeight, viewHeight };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ListComponent } from '../list.component';\nimport { LoadOnDemandEventData } from '../list.event';\n\n@Injectable()\nexport class ListHelper {\n onLoadOnDemand(component: ListComponent, _event: LoadOnDemandEventData) {\n if (component.isLoadOnDemandEnabled && !component._isLoading) {\n component._isLoading = true;\n component.loadOnDemand.emit({\n complete: (disableLoadOnDemand: boolean) => {\n component.isLoadOnDemandEnabled = !disableLoadOnDemand;\n component._isLoading = false;\n },\n });\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'groupBy',\n})\nexport class GroupByPipe implements PipeTransform {\n transform(items: any[], getGroupName?: (item: any) => string): any[] {\n if (!items) {\n return null;\n }\n if (!getGroupName) {\n return items;\n }\n\n const groupsMap = new Map<string, any[]>();\n\n items.forEach((item: any) => {\n const itemGroup = getGroupName(item);\n const groupItems = groupsMap.get(itemGroup);\n\n if (groupItems) {\n groupItems.push(item);\n } else {\n groupsMap.set(itemGroup, [item]);\n }\n });\n\n return Array.from(groupsMap)\n .sort(([name], [otherName]) => name.localeCompare(otherName))\n .map(([name, items]) => {\n return { name, items };\n });\n }\n}\n","import {\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n} from '@angular/core';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\nimport { ItemComponent } from '../item/item.component';\n\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListHelper } from './helpers/list-helper';\nimport { BoundaryClass } from './list-item/list-item.component';\nimport { ListSwipeAction } from './list-swipe-action.type';\nimport {\n ListFooterDirective,\n ListHeaderDirective,\n ListItemTemplateDirective,\n ListSectionHeaderDirective,\n} from './list.directive';\nimport { LoadOnDemandEvent, LoadOnDemandEventData } from './list.event';\nimport { GroupByPipe } from './pipes/group-by.pipe';\n\nexport type ListShape = 'square' | 'rounded' | 'none';\n\n@Component({\n selector: 'kirby-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n providers: [ListHelper, GroupByPipe],\n})\nexport class ListComponent implements OnInit, AfterViewInit, OnChanges {\n @ViewChild('list', { static: true }) list: any;\n @ViewChild(InfiniteScrollDirective) scrollDirective: InfiniteScrollDirective;\n\n /**\n * Provide items for the list to render. Items must be provided in the order you expect them to be rendered.\n */\n @Input()\n items: any[] = [];\n\n @Input() getItemColor: (item: any) => ThemeColor;\n\n /**\n * Callback to determine name of section. Sections will be ordered alphabetically.\n */\n @Input() getSectionName: (item: any) => string;\n\n /**\n * Callback that defines how to track changes for items in the iterable.\n */\n @Input() trackBy: TrackByFunction<any>;\n\n /**\n * Text to display when no more items can be loaded (used for \"on demand\"-loading).\n */\n @Input() noMoreItemsText: string;\n\n /**\n * Determines if dividers (bottom-border on list items) should be shown or not.\n */\n @Input() showDivider = false;\n\n /**\n * Determines if list row text should turn bold on selection\n */\n @Input() markSelectedRow = false;\n\n /**\n * Determine outline shape of:\n * - list, if {@link #isSectionsEnabled} is `false`\n * - section, if {@link #isSectionsEnabled} is `true`\n *\n * `square` means **without** rounded corners, `rounded` means **with** rounded corners., `none` means **without** padding, border, box-shadow and background.\n */\n @Input() shape: ListShape = 'rounded';\n\n @HostBinding('class.shape-rounded')\n public get isShapeRounded(): boolean {\n return this.shape === 'rounded';\n }\n\n @HostBinding('class.shape-none')\n public get isShapeNone(): boolean {\n return this.shape === 'none';\n }\n\n @HostBinding('class.item-spacing')\n @Input()\n hasItemSpacing: boolean;\n\n /**\n * Determines if the loadOnDemand event should be emitted.\n * Will default to true if there is at least one subscriber to the loadOnDemand event\n */\n @Input() isLoadOnDemandEnabled: boolean;\n\n /**\n * Emitting event when more items are to be loaded.\n */\n @Output() loadOnDemand = new EventEmitter<LoadOnDemandEvent>();\n\n /**\n * Determines if list items should have swipe actions or not\n * - the order of swipe actions is used to determine edge actions,\n * as well as their order of appearance on the screen.\n */\n @Input() swipeActions: ListSwipeAction[] = [];\n\n /**\n * Emitting event when an item is selected (tapped on mobile, clicked on web)\n */\n @Output() itemSelect = new EventEmitter<any>();\n\n @Input() disableSelectionHighlight: boolean = false;\n\n @ContentChildren(ItemComponent)\n kirbyItems: ItemComponent[];\n\n @ContentChild(ListHeaderDirective, { static: false, read: TemplateRef })\n headerTemplate: TemplateRef<any>;\n\n @ContentChild(ListSectionHeaderDirective, { static: false, read: TemplateRef })\n sectionHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(ListFooterDirective, { static: false, read: TemplateRef })\n footerTemplate: TemplateRef<any>;\n\n /**\n * The first element that matches ListItemDirective.\n * As a structural directive it unfolds into a template. This is a reference to that.\n */\n @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n itemTemplate: TemplateRef<any>;\n\n @HostBinding('class.has-sections') _isSectionsEnabled: boolean;\n\n _isSelectable: boolean;\n _isLoading: boolean;\n _groupedItems: any[];\n _selectedItem: any;\n\n constructor(private listHelper: ListHelper, private groupBy: GroupByPipe) {}\n\n ngOnInit() {\n this._isSelectable = this.itemSelect.observers.length > 0;\n\n if (this.isLoadOnDemandEnabled === undefined) {\n this.isLoadOnDemandEnabled = this.loadOnDemand.observers.length > 0;\n }\n }\n\n ngAfterViewInit(): void {\n if (this._isSelectable) {\n setTimeout(() => {\n this.kirbyItems.forEach((item) => {\n item.selectable = true;\n });\n });\n }\n }\n\n ngOnChanges(): void {\n this._isSectionsEnabled = !!this.getSectionName;\n this._groupedItems = this._isSectionsEnabled\n ? this.groupBy.transform(this.items, this.getSectionName)\n : null;\n }\n\n _onLoadOnDemand(event?: LoadOnDemandEventData) {\n this.listHelper.onLoadOnDemand(this, event);\n }\n\n defaultTrackBy(index: number): any {\n return index;\n }\n\n sectionTrackBy(_: number, section: { name: string }): string {\n return section.name;\n }\n\n onItemSelect(item: any) {\n if (!this.disableSelectionHighlight) {\n this._selectedItem = item;\n }\n this.itemSelect.emit(item);\n }\n\n onSwipeActionSelect(args: any): void {\n args.swipeAction.onSelected(args.item);\n this.list.closeSlidingItems();\n args.event.stopPropagation();\n }\n\n _getBoundaryClass(index: number, section?: any[]): BoundaryClass {\n let _items = section || this.items;\n\n if (index === 0 || _items[index - 1]?.headingName) return this.headerTemplate ? null : 'first';\n\n if (index === _items.length - 1 || _items[index + 1]?.headingName)\n return this.footerTemplate ? null : 'last';\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-list-header',\n templateUrl: './list-header.component.html',\n styleUrls: ['./list-header.component.scss'],\n})\nexport class ListHeaderComponent {\n constructor() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kirby-list-section-header',\n templateUrl: './list-section-header.component.html',\n styleUrls: ['./list-section-header.component.scss'],\n})\nexport class ListSectionHeaderComponent implements OnInit {\n @Input() title: string;\n constructor() {}\n\n ngOnInit() {}\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IonItemSliding } from '@ionic/angular';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\nimport { PlatformService } from '../../../helpers/platform.service';\nimport { ListSwipeAction, ListSwipeDirection, ListSwipeEnd } from '../list-swipe-action.type';\n\nexport type BoundaryClass = 'first' | 'last';\n\n@Component({\n selector: 'kirby-list-item',\n templateUrl: './list-item.component.html',\n styleUrls: ['../list.component.scss', './list-item.component.scss'],\n})\nexport class ListItemComponent implements OnInit, AfterViewInit {\n _isSwipingEnabled = false;\n\n constructor(private platform: PlatformService) {\n this.initializeSwipeActions();\n }\n\n @ViewChild(IonItemSliding) ionItemSliding: IonItemSliding;\n\n @Input() item: any;\n\n @Input() boundaryClass: BoundaryClass;\n\n @Input() swipeActions: ListSwipeAction[] = [];\n\n @Input() itemTemplate: TemplateRef<any>;\n\n @Input() isSelected: boolean;\n\n @Input() isSelectable: boolean;\n\n @Input() getItemColor: (item: any) => ThemeColor;\n\n @Output() itemSelect = new EventEmitter<any>();\n\n _onItemSelect(item: any) {\n if (!this.isSelectable) return;\n this.itemSelect.emit(item);\n }\n\n @Output() swipeActionSelect = new EventEmitter<any>();\n\n _onSwipeActionSelect(swipeAction, item, event) {\n this.swipeActionSelect.emit({\n swipeAction,\n item,\n event,\n });\n }\n\n ngOnInit() {\n this.initializeSwipeActions();\n }\n\n ngAfterViewInit(): void {\n if (!this.itemTemplate) {\n console.warn('No item template was provided.');\n }\n }\n\n _hasSwipeActions(item: any): boolean {\n if (!Array.isArray(this.swipeActions)) {\n return false;\n }\n return this.swipeActions.some((swipeAction) => {\n if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n return false;\n }\n if (swipeAction.isDisabled === true) {\n return false;\n }\n return swipeAction.position === 'left' || swipeAction.position === 'right';\n });\n }\n\n _getSwipeActions(item: any, direction?: ListSwipeDirection): ListSwipeAction[] {\n if (!Array.isArray(this.swipeActions)) {\n return [];\n }\n return this.swipeActions.filter((swipeAction) => {\n if (this.isSwipeActionDisabled(swipeAction, item)) {\n return false;\n }\n return direction ? swipeAction.position === direction : true;\n });\n }\n\n private isSwipeActionDisabled(swipeAction: ListSwipeAction, item: any): boolean {\n if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n return true;\n }\n return swipeAction.isDisabled === true;\n }\n\n _getSwipeActionEnd(item: any): ListSwipeEnd {\n if (this._getSwipeActions(item, 'left').length) {\n return 'start';\n }\n return 'end';\n }\n\n _getSwipeActionIcon(swipeAction: ListSwipeAction, item: any): string {\n if (!swipeAction.icon) return;\n\n if (swipeAction.icon instanceof Function) {\n return swipeAction.icon(item);\n }\n return swipeAction.icon;\n }\n\n _getSwipeActionTitle(swipeAction: ListSwipeAction, item: any): string {\n if (swipeAction.title instanceof Function) {\n return swipeAction.title(item);\n }\n return swipeAction.title;\n }\n\n _getSwipeActionType(swipeAction: ListSwipeAction, item: any): ThemeColor {\n if (swipeAction.type instanceof Function) {\n return swipeAction.type(item);\n }\n return swipeAction.type;\n }\n\n private initializeSwipeActions(): void {\n if (this.swipeActions && this.swipeActions.length) {\n this._isSwipingEnabled = this.platform.isTouch();\n }\n }\n}\n","import { Directive, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\n@Directive({\n selector: '[kirbyListItemColor]',\n})\nexport class ListItemColorDirective implements OnChanges {\n @Input()\n kirbyListItemColor: (item: any) => ThemeColor;\n @Input() item: any;\n @HostBinding('class')\n color: ThemeColor;\n\n ngOnChanges(): void {\n this.color = this.getColor();\n }\n\n private getColor(): ThemeColor {\n if (!this.kirbyListItemColor || !this.item) {\n return;\n }\n\n const themeColor = this.kirbyListItemColor(this.item);\n return themeColor;\n }\n}\n","import { Component, HostListener, ViewChild } from '@angular/core';\nimport { IonList } from '@ionic/angular';\n\nimport { elementHasAncestor } from '../../../helpers/element-has-ancestor';\n\n@Component({\n selector: 'kirby-list-experimental',\n templateUrl: './list-experimental.component.html',\n styleUrls: ['./list-experimental.component.scss'],\n})\nexport class ListExperimentalComponent {\n @ViewChild(IonList, { static: true }) list: IonList;\n\n @HostListener('click', ['$event'])\n closeAllSlidingItems(e: MouseEvent) {\n if (elementHasAncestor(e.target as HTMLElement, 'ion-item-option', 'ion-list')) {\n this.list.closeSlidingItems();\n }\n }\n}\n","export class ReorderEvent {\n private origEvent: CustomEvent<any>;\n private parent?: any;\n\n constructor(ev: CustomEvent<any>, parentItem?: any) {\n this.origEvent = ev;\n this.parent = parentItem;\n this.origEvent.cancelBubble = true;\n }\n complete(listOrReorder?: boolean | any[]): Promise<any> {\n return this.origEvent.detail.complete(listOrReorder);\n }\n\n get parentItem(): any {\n return this.parent;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\n\nimport { ListItemTemplateDirective } from '../list/list.directive';\n\nimport { ReorderEvent } from './reorder-event';\n\n@Component({\n selector: 'kirby-reorder-list',\n templateUrl: './reorder-list.component.html',\n styleUrls: ['./reorder-list.component.scss'],\n})\nexport class ReorderListComponent implements OnChanges, OnDestroy {\n @Input() items: any[];\n @Input() subItemsName: string;\n @Input() getItemTextDefault: (item: any) => string;\n\n @Output() itemReorder = new EventEmitter<ReorderEvent>();\n @Output() subItemReorder = new EventEmitter<ReorderEvent>();\n\n @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n itemTemplate: TemplateRef<any>;\n @ViewChildren('reorderGroupContainer')\n reorderGroupContainer: QueryList<ElementRef>;\n\n private observer: MutationObserver;\n reorderActive: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(): void {\n if (this.items && this.items.length > 0) {\n setTimeout(() => {\n this.setupDomListener();\n });\n }\n }\n\n private setupDomListener() {\n const callback = (mutationsList: any) => {\n for (let mutation of mutationsList) {\n if (mutation.oldValue !== mutation.target['className']) {\n this.reorderActive = mutation.target['className'].includes('reorder-list-active');\n }\n }\n this.cdr.detectChanges();\n };\n this.observer = new MutationObserver(callback);\n\n this.reorderGroupContainer.forEach((div: ElementRef) => {\n this.observer.observe(div.nativeElement, {\n attributes: true,\n attributeFilter: ['class'],\n attributeOldValue: true,\n childList: false,\n subtree: true,\n });\n });\n }\n\n doReorder(ev: CustomEvent) {\n this.itemReorder.emit(new ReorderEvent(ev));\n }\n\n doSubReorder(ev: CustomEvent, parentItem: any) {\n this.subItemReorder.emit(new ReorderEvent(ev, parentItem));\n }\n\n ngOnDestroy() {\n //clean up the observer\n this.observer && this.observer.disconnect();\n delete this.observer;\n }\n}\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-modal-footer',\n templateUrl: './modal-footer.component.html',\n styleUrls: ['./modal-footer.component.scss'],\n})\nexport class ModalFooterComponent {\n @HostBinding('class.snap-to-keyboard')\n @Input()\n snapToKeyboard = false;\n\n @HostBinding('class')\n @Input()\n type: 'inline' | 'fixed' = 'fixed';\n}\n","export const selectedTabClickEvent = 'kirbySelectedTabClick';\n","import { Injectable } from '@angular/core';\nimport { IonRouterOutlet } from '@ionic/angular';\nimport { ReplaySubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabsService {\n private outletSubject$: ReplaySubject<IonRouterOutlet> = new ReplaySubject();\n public outlet$ = this.outletSubject$.asObservable();\n\n public setOutlet(outlet: IonRouterOutlet) {\n this.outletSubject$.next(outlet);\n }\n}\n\nexport { IonRouterOutlet };\n","import { AfterViewInit, Component, HostBinding, ViewChild } from '@angular/core';\nimport { IonTabs } from '@ionic/angular';\n\nimport { TabsService } from './tabs.service';\n\n@Component({\n selector: 'kirby-tab-bar',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n})\nexport class TabsComponent implements AfterViewInit {\n @HostBinding('class.tab-bar-bottom-hidden')\n tabBarBottomHidden = false;\n @ViewChild(IonTabs, { static: true }) tabs: IonTabs;\n\n constructor(private tabsService: TabsService) {}\n\n ngAfterViewInit() {\n this.tabsService.setOutlet(this.tabs.outlet);\n }\n}\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router, RouterEvent } from '@angular/router';\nimport { IonContent, IonFooter, IonHeader } from '@ionic/angular';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { KirbyAnimation } from '../../animation/kirby-animation';\nimport { FitHeadingConfig } from '../../directives/fit-heading/fit-heading.directive';\nimport { WindowRef } from '../../types/window-ref';\nimport { ModalWrapperComponent } from '../modal/modal-wrapper/modal-wrapper.component';\nimport { ModalNavigationService } from '../modal/services/modal-navigation.service';\nimport { selectedTabClickEvent } from '../tabs/tab-button/tab-button.events';\nimport { TabsComponent } from '../tabs/tabs.component';\n\ntype stickyConfig = { sticky: boolean };\ntype fixedConfig = { fixed: boolean };\n\n/**\n * Event emitted when \"pull-to-refresh\" begins.\n */\nexport interface PullToRefreshEvent {\n /**\n * Invoke this callback-method when action to perform upon \"pull-to-refresh\" completes.\n */\n complete();\n}\n\n@Directive({\n selector: '[kirbyPageTitle]',\n})\nexport class PageTitleDirective {}\n\n@Directive({\n selector: '[kirbyPageToolbarTitle]',\n})\nexport class PageToolbarTitleDirective {}\n\n@Directive({\n selector: '[kirbyPageActions]',\n})\nexport class PageActionsDirective {\n @Input('kirbyPageActions') config: stickyConfig | fixedConfig;\n private readonly stickyDefault = true;\n private readonly fixedDefault = false;\n\n constructor(public template: TemplateRef<any>) {}\n\n get isSticky(): boolean {\n return this.config ? (this.config as stickyConfig).sticky : this.stickyDefault;\n }\n\n get isFixed(): boolean {\n return this.config ? (this.config as fixedConfig).fixed : this.fixedDefault;\n }\n}\n\n@Directive({\n selector: '[kirbyPageContent]',\n})\nexport class PageContentDirective {\n @Input('kirbyPageContent') config: fixedConfig;\n\n constructor(public template: TemplateRef<any>) {}\n\n get isFixed(): boolean {\n return this.config && this.config.fixed;\n }\n}\n\n@Component({\n selector: 'kirby-page-progress',\n template: `\n <ng-content></ng-content>\n `,\n styles: [':host {display: flex}'],\n})\nexport class PageProgressComponent implements OnInit {\n // TODO: Find alternative implementation, which aligns with future page configuration / consumption\n // This implementation was chosen over expanding `moveChild` method in component wrapper with yet another scenario\n @HostBinding('attr.slot') slot = 'start';\n\n constructor(@Optional() @SkipSelf() private modalWrapper: ModalWrapperComponent) {}\n\n ngOnInit(): void {\n if (this.modalWrapper && this.modalWrapper.config.flavor === 'drawer') {\n this.slot = 'end';\n }\n }\n}\n\n@Component({\n selector: 'kirby-page-title',\n template: `\n <ng-content></ng-content>\n `,\n})\nexport class PageTitleComponent {}\n\n@Component({\n selector: 'kirby-page-content',\n template: `\n <ng-content></ng-content>\n `,\n})\nexport class PageContentComponent {}\n\n@Component({\n selector: 'kirby-page-actions',\n template: `\n <ng-content select=\"button[kirby-button]\"></ng-content>\n `,\n})\nexport class PageActionsComponent {}\n\n@Component({\n selector: 'kirby-page',\n templateUrl: './page.component.html',\n styleUrls: ['./page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageComponent\n implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked, OnChanges {\n @Input() title: string;\n @Input() toolbarTitle: string;\n @Input() titleAlignment: 'left' | 'center' | 'right' = 'left';\n @Input() defaultBackHref: string;\n @Input() hideBackButton: boolean;\n @Input() titleMaxLines: number;\n\n private _tabBarBottomHidden: boolean;\n public get tabBarBottomHidden(): boolean {\n return this._tabBarBottomHidden;\n }\n @Input()\n public set tabBarBottomHidden(value: boolean) {\n if (this.tabsComponent) {\n // as we are setting a class on tabs, we need this to happen in a separate cd cycle\n setTimeout(() => (this.tabsComponent.tabBarBottomHidden = value));\n }\n this._tabBarBottomHidden = value;\n }\n\n @Output() enter = new EventEmitter<void>();\n @Output() leave = new EventEmitter<void>();\n @Output() refresh = new EventEmitter<PullToRefreshEvent>();\n\n @ViewChild(IonContent, { static: true }) private content: IonContent;\n @ViewChild(IonContent, { static: true, read: ElementRef })\n private ionContentElement: ElementRef<HTMLIonContentElement>;\n @ViewChild(IonHeader, { static: true, read: ElementRef })\n ionHeaderElement: ElementRef<HTMLIonHeaderElement>;\n @ViewChild(IonFooter, { static: true, read: ElementRef })\n private ionFooterElement: ElementRef<HTMLIonFooterElement>;\n\n @ViewChild('pageTitle', { static: false, read: ElementRef })\n private pageTitle: ElementRef;\n\n @ViewChild('simpleTitleTemplate', { static: true, read: TemplateRef })\n private simpleTitleTemplate: TemplateRef<any>;\n @ViewChild('simpleToolbarTitleTemplate', { static: true, read: TemplateRef })\n private simpleToolbarTitleTemplate: TemplateRef<any>;\n @ContentChild(PageToolbarTitleDirective, { static: false, read: TemplateRef })\n private customToolbarTitleTemplate: TemplateRef<any>;\n @ContentChild(PageTitleDirective, { static: false, read: TemplateRef })\n customTitleTemplate: TemplateRef<any>;\n @ContentChildren(PageActionsDirective)\n customActions: QueryList<PageActionsDirective>;\n @ContentChildren(PageContentDirective)\n private customContent: QueryList<PageContentDirective>;\n\n hasPageTitle: boolean;\n hasActionsInPage: boolean;\n toolbarTitleVisible: boolean;\n toolbarFixedActionsVisible: boolean;\n toolbarStickyActionsVisible: boolean;\n\n fitHeadingConfig: FitHeadingConfig;\n\n toolbarTitleTemplate: TemplateRef<any>;\n customContentTemplate: TemplateRef<any>;\n pageActionsTemplate: TemplateRef<any>;\n fixedContentTemplate: TemplateRef<any>;\n stickyActionsTemplate: TemplateRef<any>;\n fixedActionsTemplate: TemplateRef<any>;\n private pageTitleIntersectionObserverRef: IntersectionObserver = this.pageTitleIntersectionObserver();\n private urls: string[] = [];\n private hasEntered: boolean;\n\n private ngOnDestroy$ = new Subject();\n private navigationStart$: Observable<RouterEvent> = this.router.events.pipe(\n takeUntil(this.ngOnDestroy$),\n filter((event: RouterEvent) => event instanceof NavigationStart)\n );\n\n private navigationEnd$: Observable<RouterEvent> = this.router.events.pipe(\n takeUntil(this.ngOnDestroy$),\n filter((event: RouterEvent) => event instanceof NavigationEnd)\n );\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n private windowRef: WindowRef,\n private modalNavigationService: ModalNavigationService,\n @Optional() @SkipSelf() private tabsComponent: TabsComponent\n ) {}\n\n ngOnInit(): void {\n this.removeWrapper();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.titleMaxLines) {\n this.fitHeadingConfig = {\n ...this.fitHeadingConfig,\n maxLines: changes.titleMaxLines.currentValue,\n };\n }\n }\n\n ngAfterViewInit(): void {\n this.navigationStart$.subscribe((event: NavigationStart) => {\n if (\n !this.urls.includes(event.url) &&\n !this.modalNavigationService.isModalRoute(event.url) &&\n !this.modalNavigationService.isModalRoute(this.router.url)\n ) {\n this.onLeave();\n }\n });\n\n this.navigationEnd$.subscribe((event: NavigationEnd) => {\n if (this.urls.includes(event.urlAfterRedirects)) {\n this.onEnter();\n }\n });\n\n this.windowRef.nativeWindow.addEventListener(selectedTabClickEvent, () => {\n this.content.scrollToTop(KirbyAnimation.Duration.LONG);\n });\n }\n\n ngAfterContentChecked(): void {\n if (!this.urls.includes(this.router.url)) {\n this.urls.push(this.router.url);\n this.onEnter();\n }\n\n this.initializeTitle();\n this.initializeActions();\n this.initializeContent();\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.ngOnDestroy$.next();\n this.ngOnDestroy$.complete();\n\n this.pageTitleIntersectionObserverRef.disconnect();\n this.windowRef.nativeWindow.removeEventListener(selectedTabClickEvent, () => {\n this.content.scrollToTop(KirbyAnimation.Duration.LONG);\n });\n }\n\n delegateRefreshEvent(event: any): void {\n this.refresh.emit({\n complete: event.target.complete.bind(event.target),\n });\n }\n\n private onEnter() {\n if (this.hasEntered) return;\n this.hasEntered = true;\n\n this.enter.emit();\n if (this.pageTitle) {\n this.pageTitleIntersectionObserverRef.observe(this.pageTitle.nativeElement);\n }\n }\n\n private onLeave() {\n this.leave.emit();\n if (this.pageTitle) {\n this.pageTitleIntersectionObserverRef.unobserve(this.pageTitle.nativeElement);\n }\n this.hasEntered = false;\n\n if (this.tabBarBottomHidden && this.tabsComponent) {\n this.tabsComponent.tabBarBottomHidden = false;\n }\n }\n\n private initializeTitle() {\n // Ensures initializeTitle() won't run, if already initialized\n if (this.hasPageTitle) return;\n\n this.hasPageTitle = this.title !== undefined || !!this.customTitleTemplate;\n this.toolbarTitleVisible = !this.hasPageTitle;\n\n if (this.hasPageTitle) {\n setTimeout(() => {\n this.pageTitleIntersectionObserverRef.observe(this.pageTitle.nativeElement);\n });\n }\n\n const defaultTitleTemplate = this.customTitleTemplate || this.simpleTitleTemplate;\n // tslint:disable:prettier\n // prettier-ignore\n this.toolbarTitleTemplate = this.customToolbarTitleTemplate\n ? this.customToolbarTitleTemplate\n : typeof this.toolbarTitle === 'string'\n ? this.simpleToolbarTitleTemplate\n : defaultTitleTemplate;\n }\n\n private initializeActions() {\n this.customActions.forEach((pageAction) => {\n if (pageAction.isFixed) {\n this.fixedActionsTemplate = pageAction.template;\n this.toolbarFixedActionsVisible = true;\n } else {\n this.pageActionsTemplate = pageAction.template;\n if (pageAction.isSticky) {\n this.stickyActionsTemplate = pageAction.template;\n }\n }\n });\n this.hasActionsInPage = !!this.pageActionsTemplate;\n }\n\n private initializeContent() {\n this.customContent.forEach((content) => {\n if (content.isFixed) {\n this.fixedContentTemplate = content.template;\n } else {\n this.customContentTemplate = content.template;\n }\n });\n }\n\n private removeWrapper() {\n const parent = this.elementRef.nativeElement.parentNode;\n this.renderer.removeChild(parent, this.elementRef.nativeElement);\n this.renderer.appendChild(parent, this.ionHeaderElement.nativeElement);\n this.renderer.appendChild(parent, this.ionContentElement.nativeElement);\n this.renderer.appendChild(parent, this.ionFooterElement.nativeElement);\n }\n\n private pageTitleIntersectionObserver() {\n const options = {\n rootMargin: '0px',\n };\n\n let initialized = false;\n const callback = (entries) => {\n if (initialized) {\n this.toolbarTitleVisible = !entries[0].isIntersecting;\n this.toolbarStickyActionsVisible = !entries[0].isIntersecting;\n this.changeDetectorRef.detectChanges();\n } else {\n initialized = true;\n }\n };\n return new IntersectionObserver(callback, options);\n }\n\n @HostListener('window:keyboardWillShow', ['$event'])\n _onKeyboardWillShow(info?: { keyboardHeight: number }) {\n if (info && info.keyboardHeight) {\n this.ionContentElement.nativeElement.style.setProperty(\n '--keyboard-offset',\n `${info.keyboardHeight}px`\n );\n }\n }\n\n @HostListener('window:keyboardWillHide')\n _onKeyboardWillHide() {\n this.ionContentElement.nativeElement.style.setProperty('--keyboard-offset', '0px');\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n SkipSelf,\n} from '@angular/core';\n\nimport { PageComponent } from '../page.component';\n\n@Component({\n selector: 'kirby-page-footer',\n templateUrl: './page-footer.component.html',\n styleUrls: ['./page-footer.component.scss'],\n})\nexport class PageFooterComponent implements OnDestroy {\n @Input()\n hasPadding: boolean = true;\n\n constructor(\n @Optional() @SkipSelf() private pageComponent: PageComponent,\n private hostElement: ElementRef,\n private renderer: Renderer2\n ) {\n if (!pageComponent) {\n throw new Error('Page footer must reside inside of a Kirby page');\n }\n }\n\n close() {\n this.pageComponent.tabBarBottomHidden = false;\n this.renderer.removeChild(\n this.hostElement.nativeElement.parentElement,\n this.hostElement.nativeElement,\n true\n );\n }\n\n ngOnDestroy(): void {\n this.pageComponent.tabBarBottomHidden = false;\n }\n}\n","import { Injectable, Renderer2, RendererStyleFlags2 } from '@angular/core';\n\nconst config = Object.freeze({\n className: 'kirby-line-clamp',\n lineClamp: '--line-clamp',\n lineHeight: '--line-height',\n});\n\n@Injectable()\nexport class LineClampHelper {\n constructor(private renderer: Renderer2) {}\n\n setMaxLines(element: Element, maxLines: number): void {\n this.renderer.setStyle(element, config.lineClamp, maxLines, RendererStyleFlags2.DashCase);\n this.renderer.addClass(element, config.className);\n }\n\n setLineHeight(element: Element, lineHeight: string): void {\n // Only necessary for the fallback solution to work\n this.renderer.setStyle(element, config.lineHeight, lineHeight, RendererStyleFlags2.DashCase);\n }\n\n removeLineClamp(element: Element) {\n this.renderer.removeClass(element, config.className);\n this.renderer.removeStyle(element, config.lineClamp);\n this.renderer.removeStyle(element, config.lineHeight);\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nimport { ResizeObserverService } from '../../components/shared/resize-observer/resize-observer.service';\nimport { LineClampHelper } from '../../helpers/line-clamp-helper';\n\nconst fontSize = DesignTokenHelper.fontSize;\nconst lineHeight = DesignTokenHelper.lineHeight;\n\ninterface HeadingSize {\n name: string;\n fontSize: string;\n lineHeight: string;\n}\n\nexport interface FitHeadingConfig {\n maxLines: number;\n}\n\n@Directive({\n selector: `h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]`,\n providers: [LineClampHelper],\n})\nexport class FitHeadingDirective implements OnInit, OnDestroy {\n // tslint:disable-next-line:no-input-rename\n @Input('kirbyFitHeading') config?: FitHeadingConfig;\n\n private isObservingHostElement: boolean;\n private hostElementClone: Element;\n private isScalingHeader: boolean; // used to prevent resizeObserver to trigger on font scaling by this.scaleHeader()\n\n private headingSizes: HeadingSize[] = [\n {\n name: 'h1',\n fontSize: fontSize('xl'),\n lineHeight: lineHeight('xl'),\n },\n {\n name: 'h2',\n fontSize: fontSize('l'),\n lineHeight: lineHeight('l'),\n },\n {\n name: 'h3',\n fontSize: fontSize('m'),\n lineHeight: lineHeight('m'),\n },\n ];\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private resizeObserverService: ResizeObserverService,\n private lineClampHelper: LineClampHelper\n ) {}\n\n ngOnInit(): void {\n if (this.config && this.config.maxLines) {\n this.lineClampHelper.setMaxLines(this.elementRef.nativeElement, this.config.maxLines);\n this.observeResize();\n this.isObservingHostElement = true;\n }\n }\n\n ngOnDestroy(): void {\n if (this.isObservingHostElement) {\n this.resizeObserverService.unobserve(this.elementRef);\n if (this.hostElementClone) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.hostElementClone);\n }\n }\n }\n\n private observeResize(): void {\n this.resizeObserverService.observe(this.elementRef, () => {\n /**\n * setTimeout is used here to avoid repeated size changes\n * while the first size change is still ongoing.\n * This would result in the ResizeObserver being called again,\n * giving 'ResizeObserver loop limit exceeded' types of errors.\n */\n setTimeout(() => {\n this.scaleHeader();\n }, 0);\n });\n }\n\n private scaleHeader(): void {\n if (this.isScalingHeader) return;\n\n this.isScalingHeader = true;\n\n if (!this.hostElementClone) {\n this.hostElementClone = this.generateHostElementClone();\n this.renderer.appendChild(this.elementRef.nativeElement, this.hostElementClone);\n }\n\n this.renderer.setStyle(\n this.hostElementClone,\n 'width',\n `${this.elementRef.nativeElement.clientWidth}px`\n );\n\n const fallbackSize = this.headingSizes[this.headingSizes.length - 1];\n const fittedSize = this.headingSizes.find(this.canFitHeading.bind(this)) || fallbackSize;\n\n this.setSize(this.elementRef.nativeElement, fittedSize);\n this.lineClampHelper.setLineHeight(this.elementRef.nativeElement, fittedSize.lineHeight);\n this.isScalingHeader = false;\n }\n\n private canFitHeading(size: HeadingSize) {\n this.setSize(this.hostElementClone, size);\n const lines = this.hostElementClone.clientHeight / parseInt(size.lineHeight);\n return lines <= this.config.maxLines;\n }\n\n private generateHostElementClone(): Element {\n const clone = this.elementRef.nativeElement.cloneNode(true);\n this.renderer.setStyle(clone, 'position', 'absolute');\n this.renderer.setStyle(clone, 'visibility', 'hidden');\n this.lineClampHelper.removeLineClamp(clone);\n return clone;\n }\n\n private setSize(el: Element, size: HeadingSize): void {\n this.renderer.setStyle(el, 'font-size', size.fontSize);\n this.renderer.setStyle(el, 'line-height', size.lineHeight);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FitHeadingDirective } from './fit-heading.directive';\n\n@NgModule({\n declarations: [FitHeadingDirective],\n exports: [FitHeadingDirective],\n})\nexport class FitHeadingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [SpinnerComponent],\n imports: [CommonModule],\n exports: [SpinnerComponent],\n providers: [],\n})\nexport class SpinnerModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { FitHeadingModule } from '../../directives/fit-heading/fit-heading.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\nimport { PageFooterComponent } from './page-footer/page-footer.component';\nimport {\n PageActionsComponent,\n PageActionsDirective,\n PageComponent,\n PageContentComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageToolbarTitleDirective,\n} from './page.component';\n\n@NgModule({\n declarations: [\n PageComponent,\n PageActionsComponent,\n PageActionsDirective,\n PageContentComponent,\n PageFooterComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageToolbarTitleDirective,\n ],\n imports: [CommonModule, IonicModule, FitHeadingModule, SpinnerModule],\n exports: [\n PageComponent,\n PageActionsComponent,\n PageActionsDirective,\n PageContentComponent,\n PageFooterComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageToolbarTitleDirective,\n FitHeadingModule,\n ],\n})\nexport class PageModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@ionic/angular';\n\nimport { RouterOutletComponent } from './router-outlet.component';\n\n@NgModule({\n declarations: [RouterOutletComponent],\n imports: [CommonModule, IonicModule],\n exports: [RouterOutletComponent],\n})\nexport class RouterOutletModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-section-header',\n templateUrl: './section-header.component.html',\n styleUrls: ['./section-header.component.scss'],\n})\nexport class SectionHeaderComponent {}\n","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\n\nimport { IconRegistryService } from '../icon/icon-registry.service';\n\nimport { SegmentItem, SegmentItemInternal } from './segment-item';\n\nexport enum SegmentedControlMode {\n chip = 'chip',\n compactChip = 'compactChip',\n default = 'default',\n}\n\n@Component({\n selector: 'kirby-segmented-control',\n templateUrl: './segmented-control.component.html',\n styleUrls: ['./segmented-control.component.scss'],\n // tslint:disable-next-line: no-host-metadata-property\n host: { role: 'group' },\n})\nexport class SegmentedControlComponent {\n constructor(private iconRegistryService: IconRegistryService) {}\n\n preventWrapperClick(event: Event) {\n if (event.target instanceof HTMLElement) {\n if (event.target.classList.contains('segment-btn-wrapper')) {\n event.stopImmediatePropagation();\n }\n }\n }\n\n @Input() mode: SegmentedControlMode = SegmentedControlMode.default;\n\n @HostBinding('class')\n get _modeCssClass() {\n return {\n [SegmentedControlMode.chip]: 'chip-mode',\n [SegmentedControlMode.default]: 'default-mode',\n [SegmentedControlMode.compactChip]: 'compact chip-mode',\n }[this.mode];\n }\n\n private _items: SegmentItemInternal[] = [];\n get items(): SegmentItem[] {\n return this._items;\n }\n\n @Input() set items(value: SegmentItem[]) {\n this._items = value || [];\n this._items.forEach((item) => {\n if (!item.badge) return;\n // We need to verify whether badges icon is custom or default, so we can check for it in the template\n item.badge.isCustomIcon =\n item.badge.icon !== undefined &&\n this.iconRegistryService.getIcon(item.badge.icon) !== undefined;\n });\n\n const checkedItemIndex = this.items.findIndex((item) => item.checked);\n if (checkedItemIndex > -1) {\n console.warn(\n 'SegmentItem.checked is deprecated - please remove from your `items` configuration. Use `selectedIndex` or `value` on `<kirby-segmented-control>` instead '\n );\n this._selectedIndex = checkedItemIndex;\n }\n this._value = this.items[this.selectedIndex];\n }\n\n private _selectedIndex: number = -1;\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n @Input() set selectedIndex(value: number) {\n if (value !== this._selectedIndex) {\n this._selectedIndex = value;\n this._value = this.items[this.selectedIndex];\n }\n }\n\n private _value: SegmentItem;\n get value(): SegmentItem {\n return this._value;\n }\n\n @Input() set value(value: SegmentItem) {\n this.selectedIndex = this.items.indexOf(value);\n }\n\n @HostBinding('class.sm')\n isSmallSize: boolean;\n\n @Input() set size(size: 'sm' | 'md') {\n this.isSmallSize = size === 'sm';\n }\n\n @Output() segmentSelect: EventEmitter<SegmentItem> = new EventEmitter();\n\n onSegmentSelect(selectedId: string) {\n const selectedItemIndex = this.items.findIndex((item) => selectedId === item.id);\n if (selectedItemIndex !== this.selectedIndex) {\n this.selectedIndex = selectedItemIndex;\n this.segmentSelect.emit(this.value);\n }\n }\n}\n","import {\n Component,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\n\n@Component({\n selector: 'kirby-slide-button',\n templateUrl: './slide-button.component.html',\n styleUrls: ['./slide-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlideButtonComponent implements OnDestroy {\n @Input() text = '';\n @Input() expand: 'block';\n\n @Output() slideDone = new EventEmitter();\n @Output() slidingPercentageChanged = new EventEmitter<number>();\n\n readonly slideDoneFadeTime = 500;\n readonly slideResetTime = 100;\n\n isSlideDone = false;\n pctInTens = 0;\n\n get value(): number {\n return this._value;\n }\n set value(v: number) {\n this._value = v;\n this.calculatePctInTens();\n }\n\n private _value: number = 0;\n private resetSliderIntervalTimer: any;\n private calculatePctInTens() {\n this.pctInTens = Math.ceil(this.value / 10) * 10;\n }\n\n constructor(private changeDetectionRef: ChangeDetectorRef) {}\n\n ngOnDestroy(): void {\n if (this.resetSliderIntervalTimer) {\n clearInterval(this.resetSliderIntervalTimer);\n }\n }\n\n onSliderMouseup() {\n if (this.value == 100) {\n this.handleSlideDone();\n } else {\n this.resetSliderIntervalTimer = setInterval(() => {\n if (this.value > 0) {\n this.value -= 2;\n } else {\n clearInterval(this.resetSliderIntervalTimer);\n }\n\n this.changeDetectionRef.markForCheck();\n }, 1);\n }\n }\n\n onSliderValueChange(val: string) {\n this.value = +val;\n this.slidingPercentageChanged.emit(this.value);\n }\n\n onSliderMousedown() {\n clearInterval(this.resetSliderIntervalTimer);\n }\n\n private handleSlideDone() {\n this.slideDone.emit();\n this.isSlideDone = true;\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Renderer2,\n QueryList,\n ContentChildren,\n} from '@angular/core';\n\nimport { IconComponent } from '../../icon/icon.component';\nimport { selectedTabClickEvent } from './tab-button.events';\n\n@Component({\n selector: 'kirby-tab-button',\n templateUrl: './tab-button.component.html',\n styleUrls: ['./tab-button.component.scss'],\n})\nexport class TabButtonComponent implements OnInit {\n @Input() routerLink: string;\n @Output() click = new EventEmitter<Event>();\n @ContentChildren(IconComponent) icons: QueryList<IconComponent>;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit(): void {\n this.removeWrapper();\n }\n\n onClick(event: Event, isSelected: boolean) {\n this.click.emit(event);\n\n if (isSelected) {\n const clickEvent = new CustomEvent(selectedTabClickEvent);\n dispatchEvent(clickEvent);\n }\n }\n\n private removeWrapper() {\n const parent = this.elementRef.nativeElement.parentNode;\n const button = this.elementRef.nativeElement.childNodes[0];\n this.renderer.removeChild(parent, this.elementRef.nativeElement);\n this.renderer.appendChild(parent, button);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { CommonModule } from '@angular/common';\n\nimport { TabsComponent } from './tabs.component';\nimport { TabButtonComponent } from './tab-button/tab-button.component';\nimport { IconModule } from '../icon/icon.module';\nimport { TabsService } from './tabs.service';\n\n@NgModule({\n imports: [IonicModule, IconModule, CommonModule],\n providers: [TabsService],\n declarations: [TabsComponent, TabButtonComponent],\n exports: [TabsComponent, TabButtonComponent],\n})\nexport class TabsModule {}\n","import { Injectable } from '@angular/core';\nimport { ToastController } from '@ionic/angular';\n\nimport { Overlay } from '../../modal/services/modal.interfaces';\nimport { MessageType, ToastConfig } from '../config/toast-config';\n\n@Injectable()\nexport class ToastHelper {\n static CSS_CLASS = 'kirby-toast';\n static DURATION_IN_MS = 4000;\n\n constructor(private toastController: ToastController) {}\n\n public async showToast(config: ToastConfig): Promise<Overlay> {\n const toast = await this.toastController.create({\n animated: config.animated,\n message: config.message,\n position: 'top',\n duration: config.durationInMs ? config.durationInMs : ToastHelper.DURATION_IN_MS,\n cssClass: this.getCssClass(config.messageType),\n });\n await toast.present();\n return {\n dismiss: toast.dismiss.bind(toast),\n onWillDismiss: toast.onWillDismiss(),\n onDidDismiss: toast.onDidDismiss(),\n };\n }\n\n private getCssClass(messageType: MessageType): string {\n let cssClass = ToastHelper.CSS_CLASS;\n\n if (messageType === 'danger') {\n console.warn(\n `[DEPRECATED] 'danger' message type is deprecated. Use Kirby Alerts for critical warnings. Toast will be shown as 'warning'`\n );\n\n messageType = 'warning';\n }\n\n if (messageType) {\n cssClass += ' ' + messageType;\n }\n\n return cssClass;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ToastConfig } from '../config/toast-config';\n\nimport { ToastHelper } from './toast.helper';\n\n@Injectable()\nexport class ToastController {\n constructor(private toastHelper: ToastHelper) {}\n\n public showToast(config: ToastConfig, onCloseToast?: () => void) {\n this.toastHelper.showToast(config).then((overlay) => {\n if (onCloseToast) {\n overlay.onDidDismiss.then(() => onCloseToast());\n }\n });\n }\n}\n","import { Component, Output, EventEmitter, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n})\nexport class ToggleComponent {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Output() checkedChange = new EventEmitter<boolean>();\n onCheckedChange(checked: boolean): void {\n this.checked = checked;\n this.checkedChange.emit(this.checked);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n} from '@angular/core';\n\n@Component({\n selector: 'kirby-progress-circle',\n templateUrl: './progress-circle.component.html',\n styleUrls: ['./progress-circle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCircleComponent implements AfterViewInit, OnDestroy {\n readonly SIZE_CONFIG = {\n sm: { diameter: 40, strokeWidth: 3, upperBound: 95 },\n md: { diameter: 56, strokeWidth: 4, upperBound: 96 },\n lg: { diameter: 96, strokeWidth: 6, upperBound: 97 },\n };\n\n @Input() value: number = 0;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() themeColor: 'success' | 'warning' | 'danger' = 'success';\n\n @HostBinding('class')\n get _cssSize() {\n return this.size;\n }\n\n private hasElementBeenVisible?: boolean;\n private observer: IntersectionObserver;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit(): void {\n if (!this.observer) {\n this.observer = new IntersectionObserver(this.onIntersectionChange, {\n threshold: 0.5,\n });\n this.observer.observe(this.elementRef.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n this.unobserve();\n }\n\n private onIntersectionChange = (entries: IntersectionObserverEntry[]) => {\n this.hasElementBeenVisible = entries && entries.some((entry) => entry.isIntersecting);\n if (this.hasElementBeenVisible) {\n this.unobserve();\n this.changeDetectorRef.markForCheck();\n }\n };\n\n private unobserve() {\n if (this.observer) {\n this.observer.unobserve(this.elementRef.nativeElement);\n // Safari does not support \"disconnect\", see: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#Browser_compatibility\n if (typeof this.observer.disconnect === 'function') {\n this.observer.disconnect();\n }\n }\n }\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get _diameter(): number {\n return this.SIZE_CONFIG[this.size].diameter;\n }\n\n get _shownValue() {\n // This is needed to make an animation [0 -> value] when element is shown to the user\n return this.hasElementBeenVisible ? this.value : 0;\n }\n\n get _radius() {\n return this._diameter / 2;\n }\n\n get _strokeWidth() {\n return this.SIZE_CONFIG[this.size].strokeWidth;\n }\n\n get _upperBound() {\n // This is needed to make sure that an input value close to 100 is not shown as 100\n return this.SIZE_CONFIG[this.size].upperBound;\n }\n}\n","import { Component, Input, ChangeDetectionStrategy, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'kirby-flag',\n template: `\n <ng-content></ng-content>\n `,\n styleUrls: ['./flag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlagComponent {\n @Input() size: 'xs' | 'sm' | 'md' = 'md';\n @Input() themeColor: 'success' | 'warning' | 'danger' | 'semi-light' | 'transparent' =\n 'transparent';\n\n @HostBinding('class')\n get _cssClass() {\n return [this.themeColor, this.size];\n }\n}\n","import { AfterViewInit, EventEmitter } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IonSlides } from '@ionic/angular';\n\n@Directive({\n selector: '[kirbySlide]',\n})\nexport class SlideDirective {}\n\n@Component({\n selector: 'kirby-slides',\n template: `\n <ion-slides [options]=\"slidesOptions\" #ionslides (ionSlideDidChange)=\"onSlideChanged()\">\n <ion-slide *ngFor=\"let slide of slides; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"slideTemplate; context: { $implicit: slide, index: i }\"\n ></ng-container>\n </ion-slide>\n </ion-slides>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlidesComponent implements AfterViewInit {\n @ViewChild('ionslides', { static: false }) ionSlides: IonSlides;\n @Input() slidesOptions: any;\n @Input() slides: any[];\n @Output() selectedSlide = new EventEmitter<any>();\n\n @ContentChild(SlideDirective, { static: true, read: TemplateRef })\n public slideTemplate: TemplateRef<any>;\n\n ngAfterViewInit() {\n this.slideTo(0);\n }\n\n onSlideChanged() {\n this.ionSlides.getActiveIndex().then((selectedIndex) => {\n this.selectedSlide.emit({\n slide: this.slides[selectedIndex],\n index: selectedIndex,\n });\n });\n }\n\n slideTo(index: number) {\n this.ionSlides.slideTo(index);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'kirby-toggle-button',\n templateUrl: './toggle-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleButtonComponent {\n @Input() checked: boolean;\n @Output() checkChanged = new EventEmitter<boolean>();\n\n @HostListener('click')\n onClick() {\n this.checked = !this.checked;\n this.checkChanged.emit(this.checked);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kirbyAccordion], kirby-accordion',\n exportAs: 'kirby-accordion',\n})\nexport class AccordionDirective {}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n// Counter for generating unique element ids\nlet uniqueId = 0;\n\n@Component({\n selector: 'kirby-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('isExpanded', [\n state('true', style({ height: '*', visibility: 'visible' })),\n state('false', style({ height: '0px', visibility: 'hidden' })),\n transition('true <=> false', animate('0.2s')),\n ]),\n ],\n})\nexport class AccordionItemComponent {\n @Input() title: string;\n @Input() isExpanded: boolean = false;\n\n // IDs used for a11y labelling\n _titleId = `kirby-accordion-item-title-${++uniqueId}`;\n _contentId = `kirby-accordion-item-content-${uniqueId}`;\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'kirby-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RangeComponent),\n },\n ],\n})\nexport class RangeComponent implements OnChanges, ControlValueAccessor {\n @Input() minLabel: string;\n @Input() maxLabel: string;\n @Input() debounce: number;\n @Input() max: number;\n @Input() min: number;\n @Input() pin: boolean;\n @Input() step = 1;\n @Input() ticks: boolean;\n @Input() disabled = false;\n @Input()\n set value(value: number) {\n if (value !== this.currentValue) {\n this.currentValue = value;\n this.propagateChange(this.currentValue);\n this.change.emit(this.currentValue);\n }\n }\n\n get value(): number {\n return this.currentValue;\n }\n\n @Output() change: EventEmitter<number> = new EventEmitter<number>();\n\n private currentValue: number;\n\n ngOnChanges(_: SimpleChanges) {\n if (!this.ticks) return;\n\n /*\n * Max 10 ticks are allowed\n */\n const amountOfTicks = (this.max - this.min) / this.step;\n if (amountOfTicks > 9) {\n this.step = (this.max - this.min) / 9;\n }\n\n /*\n * Set value to the nearest tick\n */\n this.value = this.getTicks().reduce((a, b) => {\n return Math.abs(b - this.value) < Math.abs(a - this.value) ? b : a;\n });\n }\n\n private getTicks() {\n const ticks = [];\n for (let value = Number(this.min); value <= Number(this.max); value += Number(this.step)) {\n ticks.push(value);\n }\n return ticks;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public _onRangeValueChange($event: any): void {\n this.writeValue($event.detail.value);\n }\n\n public onTouched = () => {};\n\n public propagateChange = (_: any) => {};\n\n public writeValue(value: any): void {\n if (value !== undefined) {\n this.value = value;\n }\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n}\n","import { Directive, HostListener, ElementRef } from '@angular/core';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: `[keyHandler]`,\n})\nexport class KeyHandlerDirective {\n constructor(private element: ElementRef) {}\n\n @HostListener('keyup', ['$event'])\n keyEvent(event: KeyboardEvent) {\n if (event.key === ' ' || event.key === 'Enter' || event.key === 'Spacebar') {\n // Prevent the default action to stop scrolling when space is pressed\n event.preventDefault();\n\n const hostElement = <HTMLElement>this.element.nativeElement;\n hostElement.click();\n }\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nimport { ColorHelper } from '@kirbydesign/core';\nimport { ThemeColor } from '@kirbydesign/core';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: `kirby-avatar[themeColor],\n kirby-card[themeColor],\n kirby-icon[themeColor],\n kirby-progress-circle-ring[themeColor],\n kirby-modal-footer[themeColor],\n kirby-empty-state[themeColor]`,\n})\nexport class ThemeColorDirective {\n private _isDefault = true;\n @HostBinding('class.default')\n get isDefault() {\n return this._isDefault;\n }\n\n private _isPrimary: boolean;\n @HostBinding('class.primary')\n get isPrimary() {\n return this._isPrimary;\n }\n\n private _isSecondary: boolean;\n @HostBinding('class.secondary')\n get isSecondary() {\n return this._isSecondary;\n }\n\n private _isTertiary: boolean;\n @HostBinding('class.tertiary')\n get isTertiary() {\n return this._isTertiary;\n }\n\n private _isSuccess: boolean;\n @HostBinding('class.success')\n get isSuccess() {\n return this._isSuccess;\n }\n\n private _isWarning: boolean;\n @HostBinding('class.warning')\n get isWarning() {\n return this._isWarning;\n }\n\n private _isDanger: boolean;\n @HostBinding('class.danger')\n get isDanger() {\n return this._isDanger;\n }\n\n private _isLight: boolean;\n @HostBinding('class.light')\n get isLight() {\n return this._isLight;\n }\n\n private _isMedium: boolean;\n @HostBinding('class.medium')\n get isMedium() {\n return this._isMedium;\n }\n\n private _isDark: boolean;\n @HostBinding('class.dark')\n get isDark() {\n return this._isDark;\n }\n\n private _isWhite: boolean;\n @HostBinding('class.white')\n get isWhite() {\n return this._isWhite;\n }\n\n private _isBrightnessWhite: boolean;\n @HostBinding('class.kirby-color-brightness-white')\n get isBrightnessWhite() {\n return this._isBrightnessWhite;\n }\n\n private _isBrightnessLight: boolean;\n @HostBinding('class.kirby-color-brightness-light')\n get isBrightnessLight() {\n return this._isBrightnessLight;\n }\n\n private _isBrightnessDark: boolean;\n @HostBinding('class.kirby-color-brightness-dark')\n get isBrightnessDark() {\n return this._isBrightnessDark;\n }\n\n @Input() set themeColor(value: ThemeColor) {\n this._isDefault = !value;\n this._isPrimary = value === 'primary';\n this._isSecondary = value === 'secondary';\n this._isTertiary = value === 'tertiary';\n this._isSuccess = value === 'success';\n this._isWarning = value === 'warning';\n this._isDanger = value === 'danger';\n this._isLight = value === 'light';\n this._isMedium = value === 'medium';\n this._isDark = value === 'dark';\n this._isWhite = value === 'white';\n const colorBrightness = ColorHelper.getColorBrightness(value);\n this._isBrightnessWhite = colorBrightness === 'white';\n this._isBrightnessLight = colorBrightness === 'light';\n this._isBrightnessDark = colorBrightness === 'dark';\n }\n}\n","import { fromEvent } from 'rxjs';\n\nexport const proxyInputs = (Cmp: any, inputs: string[]) => {\n const Prototype = Cmp.prototype;\n inputs.forEach((item) => {\n Object.defineProperty(Prototype, item, {\n get() {\n return this.el[item];\n },\n set(val: any) {\n this.z.runOutsideAngular(() => (this.el[item] = val));\n },\n });\n });\n};\n\nexport const proxyMethods = (Cmp: any, methods: string[]) => {\n const Prototype = Cmp.prototype;\n methods.forEach((methodName) => {\n Prototype[methodName] = function () {\n const args = arguments;\n return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));\n };\n });\n};\n\nexport const proxyOutputs = (instance: any, el: any, events: string[]) => {\n events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));\n};\n\n// tslint:disable-next-line: only-arrow-functions\nexport function ProxyCmp(opts: { inputs?: any; methods?: any }) {\n const decorator = function (cls: any) {\n if (opts.inputs) {\n proxyInputs(cls, opts.inputs);\n }\n if (opts.methods) {\n proxyMethods(cls, opts.methods);\n }\n return cls;\n };\n return decorator;\n}\n","/* tslint:disable */\n/* auto-generated angular directive proxies */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, NgZone } from '@angular/core';\nimport { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';\n\nimport { Components } from '@kirbydesign/core';\n\n\nexport declare interface KirbyBadge extends Components.KirbyBadge {}\n@ProxyCmp({\n inputs: ['size', 'text', 'themeColor']\n})\n@Component({\n selector: 'kirby-badge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n inputs: ['size', 'text', 'themeColor']\n})\nexport class KirbyBadge {\n protected el: HTMLElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ChartComponent } from './chart.component';\nimport { ChartConfigService } from './configs/chart-config.service';\n\n@NgModule({\n declarations: [ChartComponent],\n exports: [ChartComponent],\n providers: [ChartConfigService],\n})\nexport class ChartModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { IconModule } from '../icon/icon.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListItemColorDirective } from './directives/list-item-color.directive';\nimport { ListExperimentalComponent } from './list-experimental/list-experimental.component';\nimport { ListHeaderComponent } from './list-header/list-header.component';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { ListSectionHeaderComponent } from './list-section-header/list-section-header.component';\nimport { ListComponent } from './list.component';\nimport {\n ListFlexItemDirective,\n ListFooterDirective,\n ListHeaderDirective,\n ListItemDirective,\n ListItemTemplateDirective,\n ListSectionHeaderDirective,\n} from './list.directive';\n\nconst exportedDeclarations = [\n ListComponent,\n ListItemComponent,\n ListItemDirective,\n ListFlexItemDirective,\n ListItemTemplateDirective,\n ListSectionHeaderComponent,\n ListSectionHeaderDirective,\n ListHeaderDirective,\n ListHeaderComponent,\n ListFooterDirective,\n ListExperimentalComponent,\n];\n\nconst declarations = [\n ...exportedDeclarations,\n ListItemColorDirective,\n InfiniteScrollDirective,\n ListItemComponent,\n];\n\n@NgModule({\n declarations: declarations,\n imports: [CommonModule, IconModule, IonicModule, SpinnerModule],\n exports: exportedDeclarations,\n providers: [],\n})\nexport class ListModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-progress-circle-ring',\n templateUrl: './progress-circle-ring.component.svg',\n styleUrls: ['./progress-circle-ring.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCircleRingComponent {\n @Input() radius: number; // The desired outer radius of the SVG circle\n @Input() value: number = 0;\n @Input() themeColor: 'success' | 'warning' | 'danger' = 'success';\n @Input() strokeWidth: number;\n @Input() upperBound: number;\n\n get _offset(): number {\n const valueWithinBounds = this.value < this.upperBound || this.value > 99;\n if (valueWithinBounds) {\n return this.calculateOffset(this.value);\n } else {\n return this.calculateOffset(this.upperBound);\n }\n }\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get _diameter(): number {\n return this.radius * 2;\n }\n\n get _centerRadius(): number {\n return this.radius - this.strokeWidth / 2;\n }\n\n get _centerCircumference(): number {\n return this._centerRadius * 2 * Math.PI;\n }\n\n private calculateOffset(value: number): number {\n return this._centerCircumference - this._centerCircumference * (value / 100);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ToggleButtonComponent } from './toggle-button.component';\n\nconst DECLARATIONS = [ToggleButtonComponent];\n\n@NgModule({\n declarations: [...DECLARATIONS],\n imports: [CommonModule],\n exports: [...DECLARATIONS],\n})\nexport class ToggleButtonModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { APP_INITIALIZER } from '@angular/core';\n\nimport { defineCustomElements } from '@kirbydesign/core/loader';\n\nexport const appInitialize = (doc: Document) => {\n return () => {\n defineCustomElements(doc.defaultView);\n };\n};\n\nexport function customElementsInitializer() {\n return {\n provide: APP_INITIALIZER,\n useFactory: appInitialize,\n deps: [DOCUMENT],\n multi: true,\n };\n}\n","import { Directive, ElementRef, HostBinding, HostListener, OnInit, Optional } from '@angular/core';\n\nimport { CardComponent } from '../../components/card/card.component';\n\n@Directive({\n // tslint:disable-next-line\n selector: 'kirby-card[click]',\n})\nexport class ElementAsButtonDirective implements OnInit {\n @HostBinding('attr.role') role: string = 'button';\n @HostBinding('attr.tabindex') tabindex: number = 0;\n\n constructor(@Optional() private card: CardComponent, private clickableElement: ElementRef) {}\n\n ngOnInit(): void {\n if (this.card) {\n this.card.flat = false;\n }\n }\n\n @HostListener('keydown.space', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n _onKeydownHandler(event: KeyboardEvent) {\n this.clickableElement.nativeElement.click(event);\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { ModalNavigationService } from '../../components/modal/services/modal-navigation.service';\n\n@Directive({\n selector: `[kirbyModalRouterLink]`,\n})\nexport class ModalRouterLinkDirective {\n constructor(private modalNavigationService: ModalNavigationService) {}\n\n @Input('kirbyModalRouterLink') path: string | string[];\n // tslint:disable-next-line:no-input-rename\n @Input('kirbyModalQueryParams') queryParams?: Params;\n\n @HostListener('click')\n onClick(): boolean {\n this.modalNavigationService.navigateToModal(\n this.path,\n typeof this.queryParams !== 'string' ? this.queryParams : null\n );\n return false;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Inject, InjectionToken, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { IonicModule } from '@ionic/angular';\n\nimport { AccordionItemComponent } from './components/accordion/accordion-item.component';\nimport { AccordionDirective } from './components/accordion/accordion.directive';\nimport { AppModule } from './components/app/app.module';\nimport { AvatarComponent } from './components/avatar/avatar.component';\nimport { ButtonComponent } from './components/button/button.component';\nimport { CalendarComponent } from './components/calendar/calendar.component';\nimport { CardFooterComponent } from './components/card/card-footer/card-footer.component';\nimport { CardHeaderComponent } from './components/card/card-header/card-header.component';\nimport { CardComponent } from './components/card/card.component';\nimport { ChartDeprecatedComponent } from './components/chart-deprecated/chart-deprecated.component';\nimport { ChartModule } from './components/chart/chart.module';\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\nimport { ChipComponent } from './components/chip/chip.component';\nimport { DividerComponent } from './components/divider/divider.component';\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { FabSheetComponent } from './components/fab-sheet/fab-sheet.component';\nimport { FlagComponent } from './components/flag/flag.component';\nimport { DateInputDirective } from './components/form-field/directives/date/date-input.directive';\nimport { DecimalMaskDirective } from './components/form-field/directives/decimal-mask/decimal-mask.directive';\nimport { FormFieldMessageComponent } from './components/form-field/form-field-message/form-field-message.component';\nimport { FormFieldComponent } from './components/form-field/form-field.component';\nimport { InputCounterComponent } from './components/form-field/input-counter/input-counter.component';\nimport { InputComponent } from './components/form-field/input/input.component';\nimport { TextareaComponent } from './components/form-field/textarea/textarea.component';\nimport { BreakpointHelperService } from './components/grid/breakpoint-helper.service';\nimport { GridComponent } from './components/grid/grid.component';\nimport { IconModule } from './components/icon/icon.module';\nimport { ItemGroupComponent } from './components/item-group/item-group.component';\nimport { ItemSlidingComponent } from './components/item-sliding/item-sliding.component';\nimport { ItemModule } from './components/item/item.module';\nimport { ListModule } from './components/list/list.module';\nimport { GroupByPipe } from './components/list/pipes/group-by.pipe';\nimport { LoadingOverlayComponent } from './components/loading-overlay/loading-overlay.component';\nimport { LoadingOverlayService } from './components/loading-overlay/loading-overlay.service';\nimport { ActionSheetComponent } from './components/modal/action-sheet/action-sheet.component';\nimport { AlertComponent } from './components/modal/alert/alert.component';\nimport { ModalFooterComponent } from './components/modal/footer/modal-footer.component';\nimport { ModalCompactWrapperComponent } from './components/modal/modal-wrapper/compact/modal-compact-wrapper.component';\nimport { ModalWrapperComponent } from './components/modal/modal-wrapper/modal-wrapper.component';\nimport { ActionSheetHelper } from './components/modal/services/action-sheet.helper';\nimport { AlertHelper } from './components/modal/services/alert.helper';\nimport { ModalController } from './components/modal/services/modal.controller';\nimport { ModalHelper } from './components/modal/services/modal.helper';\nimport { PageModule } from './components/page/page.module';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { ProgressCircleRingComponent } from './components/progress-circle/progress-circle-ring.component';\nimport { ProgressCircleComponent } from './components/progress-circle/progress-circle.component';\nimport { RadioGroupComponent } from './components/radio/radio-group/radio-group.component';\nimport { RadioComponent } from './components/radio/radio.component';\nimport { RangeComponent } from './components/range/range.component';\nimport { ReorderListComponent } from './components/reorder-list/reorder-list.component';\nimport { RouterOutletModule } from './components/router-outlet/router-outlet.module';\nimport { SectionHeaderComponent } from './components/section-header/section-header.component';\nimport { SegmentedControlComponent } from './components/segmented-control/segmented-control.component';\nimport { ComponentLoaderDirective } from './components/shared/component-loader.directive';\nimport { ResizeObserverFactory } from './components/shared/resize-observer/resize-observer.factory';\nimport { ResizeObserverService } from './components/shared/resize-observer/resize-observer.service';\nimport { SlideButtonComponent } from './components/slide-button/slide-button.component';\nimport { SlideDirective, SlidesComponent } from './components/slides/slides.component';\nimport { SpinnerModule } from './components/spinner/spinner.module';\nimport { StockChartDeprecatedComponent } from './components/stock-chart-deprecated/stock-chart-deprecated.component';\nimport { TabsModule } from './components/tabs/tabs.module';\nimport { ToastController } from './components/toast/services/toast.controller';\nimport { ToastHelper } from './components/toast/services/toast.helper';\nimport { ToggleButtonModule } from './components/toggle-button/toggle-button.module';\nimport { ToggleComponent } from './components/toggle/toggle.component';\nimport { KirbyBadge as BadgeComponent } from './components/web-component-proxies.component';\nimport { customElementsInitializer } from './custom-elements-initializer';\nimport { ElementAsButtonDirective } from './directives/element-as-button/element-as-button.directive';\nimport { KeyHandlerDirective } from './directives/key-handler/key-handler.directive';\nimport { ModalRouterLinkDirective } from './directives/modal-router-link/modal-router-link.directive';\nimport { ThemeColorDirective } from './directives/theme-color/theme-color.directive';\n\nconst exportedDeclarations = [\n CardComponent,\n CardHeaderComponent,\n CardFooterComponent,\n ButtonComponent,\n ChartDeprecatedComponent,\n StockChartDeprecatedComponent,\n GridComponent,\n ComponentLoaderDirective,\n AvatarComponent,\n GroupByPipe,\n CalendarComponent,\n CheckboxComponent,\n ActionSheetComponent,\n ModalFooterComponent,\n ModalRouterLinkDirective,\n SegmentedControlComponent,\n ChipComponent,\n BadgeComponent,\n ThemeColorDirective,\n DateInputDirective,\n DecimalMaskDirective,\n SlideButtonComponent,\n ToggleComponent,\n EmptyStateComponent,\n FormFieldComponent,\n InputComponent,\n InputCounterComponent,\n TextareaComponent,\n FabSheetComponent,\n DividerComponent,\n ReorderListComponent,\n DropdownComponent,\n LoadingOverlayComponent,\n ProgressCircleComponent,\n FlagComponent,\n SlidesComponent,\n SlideDirective,\n AccordionDirective,\n AccordionItemComponent,\n ItemSlidingComponent,\n RadioComponent,\n RadioGroupComponent,\n RangeComponent,\n ElementAsButtonDirective,\n ItemGroupComponent,\n SectionHeaderComponent,\n];\n\nconst declarations = [\n ...exportedDeclarations,\n KeyHandlerDirective,\n FormFieldMessageComponent,\n AlertComponent,\n ModalWrapperComponent,\n ModalCompactWrapperComponent,\n ProgressCircleRingComponent,\n PopoverComponent,\n];\n\nconst exportedModules = [\n AppModule,\n RouterOutletModule,\n PageModule,\n TabsModule,\n IconModule,\n ItemModule,\n ToggleButtonModule,\n ListModule,\n ChartModule,\n SpinnerModule,\n];\n\nconst exports = [...exportedModules, ...exportedDeclarations];\n\nconst importedModules = [...exportedModules];\n\nconst providers = [\n ModalController,\n ActionSheetHelper,\n ModalHelper,\n AlertHelper,\n ToastHelper,\n ToastController,\n BreakpointHelperService,\n LoadingOverlayService,\n ResizeObserverFactory,\n ResizeObserverService,\n customElementsInitializer(),\n];\n\nconst entryComponents = [\n ModalWrapperComponent,\n ModalCompactWrapperComponent,\n ActionSheetComponent,\n AlertComponent,\n];\n\nconst ConfigToken = new InjectionToken<any>('USERCONFIG');\nexport interface KirbyConfig {\n moduleRootRoutePath?: string;\n}\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n IonicModule.forRoot({\n mode: 'ios',\n inputShims: true,\n scrollAssist: true,\n scrollPadding: false,\n }),\n ...importedModules,\n ],\n declarations: declarations,\n providers: providers,\n entryComponents: entryComponents,\n exports: exports,\n})\nexport class KirbyModule {\n static forChild(config?: KirbyConfig): ModuleWithProviders<KirbyModule> {\n return {\n ngModule: KirbyModule,\n providers: [\n {\n provide: ConfigToken,\n useValue: config,\n },\n ],\n };\n }\n\n constructor(\n modalController: ModalController,\n @Optional() @Inject(ConfigToken) config?: KirbyConfig\n ) {\n modalController.initialize(config && config.moduleRootRoutePath);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {AccordionItemComponent as ɵeo} from './lib/components/accordion/accordion-item.component';\nexport {AccordionDirective as ɵen} from './lib/components/accordion/accordion.directive';\nexport {ProxyCmp as ɵa} from './lib/components/angular-component-lib/utils';\nexport {AppComponent as ɵc} from './lib/components/app/app.component';\nexport {AppModule as ɵb} from './lib/components/app/app.module';\nexport {AvatarComponent as ɵdh} from './lib/components/avatar/avatar.component';\nexport {ButtonComponent as ɵbc} from './lib/components/button/button.component';\nexport {CalendarComponent as ɵdi} from './lib/components/calendar/calendar.component';\nexport {CalendarHelper as ɵdj} from './lib/components/calendar/helpers/calendar.helper';\nexport {CardFooterComponent as ɵcs} from './lib/components/card/card-footer/card-footer.component';\nexport {CardHeaderComponent as ɵcr} from './lib/components/card/card-header/card-header.component';\nexport {CardComponent as ɵcq} from './lib/components/card/card.component';\nexport {ChartDeprecatedHelper as ɵcu} from './lib/components/chart-deprecated/chart-deprecated-helper';\nexport {ChartDeprecatedComponent as ɵct} from './lib/components/chart-deprecated/chart-deprecated.component';\nexport {ACTIVITYGAUGE_OPTIONS as ɵdb,ActivityGaugeOptions as ɵdc} from './lib/components/chart-deprecated/options/activitygauge';\nexport {AREASPLINE_OPTIONS as ɵcx,AreaSplineOptions as ɵcy} from './lib/components/chart-deprecated/options/areaspline';\nexport {DONUT_OPTIONS as ɵcv,DonutOptions as ɵcw} from './lib/components/chart-deprecated/options/donut';\nexport {TIMESERIES_OPTIONS as ɵcz,TimeSeriesOptions as ɵda} from './lib/components/chart-deprecated/options/timeseries';\nexport {ChartJSService as ɵco} from './lib/components/chart/chart-js/chart-js.service';\nexport {ChartComponent as ɵcn} from './lib/components/chart/chart.component';\nexport {ChartModule as ɵcm} from './lib/components/chart/chart.module';\nexport {ChartConfigService as ɵcp} from './lib/components/chart/configs/chart-config.service';\nexport {CheckboxComponent as ɵdk} from './lib/components/checkbox/checkbox.component';\nexport {ChipComponent as ɵdp} from './lib/components/chip/chip.component';\nexport {DividerComponent as ɵed} from './lib/components/divider/divider.component';\nexport {DropdownComponent as ɵef} from './lib/components/dropdown/dropdown.component';\nexport {KeyboardHandlerService as ɵeh} from './lib/components/dropdown/keyboard-handler.service';\nexport {EmptyStateComponent as ɵdv} from './lib/components/empty-state/empty-state.component';\nexport {FabSheetComponent as ɵec} from './lib/components/fab-sheet/fab-sheet.component';\nexport {FlagComponent as ɵek} from './lib/components/flag/flag.component';\nexport {DateInputDirective as ɵdr} from './lib/components/form-field/directives/date/date-input.directive';\nexport {DecimalMaskDirective as ɵds} from './lib/components/form-field/directives/decimal-mask/decimal-mask.directive';\nexport {FormFieldMessageComponent as ɵev} from './lib/components/form-field/form-field-message/form-field-message.component';\nexport {FormFieldComponent as ɵdw} from './lib/components/form-field/form-field.component';\nexport {InputCounterComponent as ɵdx} from './lib/components/form-field/input-counter/input-counter.component';\nexport {InputComponent as ɵea} from './lib/components/form-field/input/input.component';\nexport {TextareaComponent as ɵeb} from './lib/components/form-field/textarea/textarea.component';\nexport {BreakpointHelperService as ɵdf} from './lib/components/grid/breakpoint-helper.service';\nexport {GridComponent as ɵde} from './lib/components/grid/grid.component';\nexport {IconRegistryService as ɵbe} from './lib/components/icon/icon-registry.service';\nexport {ICON_SETTINGS as ɵbg,IconSettings as ɵbf} from './lib/components/icon/icon-settings';\nexport {IconComponent as ɵbd} from './lib/components/icon/icon.component';\nexport {IconModule as ɵbp} from './lib/components/icon/icon.module';\nexport {ItemGroupComponent as ɵes} from './lib/components/item-group/item-group.component';\nexport {ItemSlidingComponent as ɵep} from './lib/components/item-sliding/item-sliding.component';\nexport {ItemComponent as ɵbs} from './lib/components/item/item.component';\nexport {ItemModule as ɵbr} from './lib/components/item/item.module';\nexport {LabelComponent as ɵbt} from './lib/components/item/label/label.component';\nexport {InfiniteScrollDirective as ɵca} from './lib/components/list/directives/infinite-scroll.directive';\nexport {ListItemColorDirective as ɵcl} from './lib/components/list/directives/list-item-color.directive';\nexport {ListHelper as ɵby} from './lib/components/list/helpers/list-helper';\nexport {ListExperimentalComponent as ɵck} from './lib/components/list/list-experimental/list-experimental.component';\nexport {ListHeaderComponent as ɵcj} from './lib/components/list/list-header/list-header.component';\nexport {ListItemComponent as ɵch} from './lib/components/list/list-item/list-item.component';\nexport {ListSectionHeaderComponent as ɵci} from './lib/components/list/list-section-header/list-section-header.component';\nexport {ListComponent as ɵbx} from './lib/components/list/list.component';\nexport {ListFlexItemDirective as ɵcc,ListFooterDirective as ɵcg,ListHeaderDirective as ɵce,ListItemDirective as ɵcb,ListItemTemplateDirective as ɵcd,ListSectionHeaderDirective as ɵcf} from './lib/components/list/list.directive';\nexport {ListModule as ɵbw} from './lib/components/list/list.module';\nexport {GroupByPipe as ɵbz} from './lib/components/list/pipes/group-by.pipe';\nexport {LoadingOverlayComponent as ɵei} from './lib/components/loading-overlay/loading-overlay.component';\nexport {LoadingOverlayService as ɵfb} from './lib/components/loading-overlay/loading-overlay.service';\nexport {ActionSheetComponent as ɵdl} from './lib/components/modal/action-sheet/action-sheet.component';\nexport {AlertComponent as ɵew} from './lib/components/modal/alert/alert.component';\nexport {ModalFooterComponent as ɵdm} from './lib/components/modal/footer/modal-footer.component';\nexport {ModalCompactWrapperComponent as ɵex} from './lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component';\nexport {ModalWrapperComponent as ɵba} from './lib/components/modal/modal-wrapper/modal-wrapper.component';\nexport {ActionSheetHelper as ɵj} from './lib/components/modal/services/action-sheet.helper';\nexport {AlertHelper as ɵk} from './lib/components/modal/services/alert.helper';\nexport {ModalAnimationBuilderService as ɵg} from './lib/components/modal/services/modal-animation-builder.service';\nexport {ModalNavigationService as ɵl} from './lib/components/modal/services/modal-navigation.service';\nexport {ModalController as ɵe} from './lib/components/modal/services/modal.controller';\nexport {ModalHelper as ɵf} from './lib/components/modal/services/modal.helper';\nexport {Modal as ɵbb} from './lib/components/modal/services/modal.interfaces';\nexport {PageFooterComponent as ɵz} from './lib/components/page/page-footer/page-footer.component';\nexport {PageActionsComponent as ɵv,PageActionsDirective as ɵq,PageComponent as ɵw,PageContentComponent as ɵu,PageContentDirective as ɵr,PageProgressComponent as ɵs,PageTitleComponent as ɵt,PageTitleDirective as ɵo,PageToolbarTitleDirective as ɵp} from './lib/components/page/page.component';\nexport {PageModule as ɵn} from './lib/components/page/page.module';\nexport {PopoverComponent as ɵeg} from './lib/components/popover/popover.component';\nexport {ProgressCircleRingComponent as ɵey} from './lib/components/progress-circle/progress-circle-ring.component';\nexport {ProgressCircleComponent as ɵej} from './lib/components/progress-circle/progress-circle.component';\nexport {RadioGroupComponent as ɵdy} from './lib/components/radio/radio-group/radio-group.component';\nexport {RadioComponent as ɵdz} from './lib/components/radio/radio.component';\nexport {RangeComponent as ɵeq} from './lib/components/range/range.component';\nexport {ReorderListComponent as ɵee} from './lib/components/reorder-list/reorder-list.component';\nexport {RouterOutletComponent as ɵd} from './lib/components/router-outlet/router-outlet.component';\nexport {RouterOutletModule as ɵm} from './lib/components/router-outlet/router-outlet.module';\nexport {SectionHeaderComponent as ɵet} from './lib/components/section-header/section-header.component';\nexport {SegmentedControlComponent as ɵdo} from './lib/components/segmented-control/segmented-control.component';\nexport {ComponentLoaderDirective as ɵdg} from './lib/components/shared/component-loader.directive';\nexport {ResizeObserverFactory as ɵbi} from './lib/components/shared/resize-observer/resize-observer.factory';\nexport {ResizeObserverService as ɵbh} from './lib/components/shared/resize-observer/resize-observer.service';\nexport {SlideButtonComponent as ɵdt} from './lib/components/slide-button/slide-button.component';\nexport {SlideDirective as ɵel,SlidesComponent as ɵem} from './lib/components/slides/slides.component';\nexport {SpinnerComponent as ɵbn} from './lib/components/spinner/spinner.component';\nexport {SpinnerModule as ɵbm} from './lib/components/spinner/spinner.module';\nexport {StockChartDeprecatedComponent as ɵdd} from './lib/components/stock-chart-deprecated/stock-chart-deprecated.component';\nexport {TabButtonComponent as ɵbq} from './lib/components/tabs/tab-button/tab-button.component';\nexport {TabsComponent as ɵx} from './lib/components/tabs/tabs.component';\nexport {TabsModule as ɵbo} from './lib/components/tabs/tabs.module';\nexport {TabsService as ɵy} from './lib/components/tabs/tabs.service';\nexport {ToastController as ɵfa} from './lib/components/toast/services/toast.controller';\nexport {ToastHelper as ɵez} from './lib/components/toast/services/toast.helper';\nexport {ToggleButtonComponent as ɵbv} from './lib/components/toggle-button/toggle-button.component';\nexport {ToggleButtonModule as ɵbu} from './lib/components/toggle-button/toggle-button.module';\nexport {ToggleComponent as ɵdu} from './lib/components/toggle/toggle.component';\nexport {appInitialize as ɵfc,customElementsInitializer as ɵfd} from './lib/custom-elements-initializer';\nexport {ElementAsButtonDirective as ɵer} from './lib/directives/element-as-button/element-as-button.directive';\nexport {FitHeadingDirective as ɵbk} from './lib/directives/fit-heading/fit-heading.directive';\nexport {FitHeadingModule as ɵbj} from './lib/directives/fit-heading/fit-heading.module';\nexport {KeyHandlerDirective as ɵeu} from './lib/directives/key-handler/key-handler.directive';\nexport {ModalRouterLinkDirective as ɵdn} from './lib/directives/modal-router-link/modal-router-link.directive';\nexport {ThemeColorDirective as ɵdq} from './lib/directives/theme-color/theme-color.directive';\nexport {LineClampHelper as ɵbl} from './lib/helpers/line-clamp-helper';\nexport {PlatformService as ɵh} from './lib/helpers/platform.service';\nexport {WindowRef as ɵi} from './lib/types/window-ref';"],"names":["ModalController","getColor","fontSize","colorPoints","getThemeColorHexString","defaultOptions","dateFormat","Highcharts","Highcharts.stockChart","ToastController","exportedDeclarations","BadgeComponent","declarations"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem.js","sources":["../../../../libs/designsystem/src/lib/animation/kirby-animation.ts","../../../../libs/designsystem/src/lib/components/accordion/accordion.directive.ts","../../../../libs/designsystem/src/lib/components/icon/icon-registry.service.ts","../../../../libs/designsystem/src/lib/components/icon/kirby-icon-settings.ts","../../../../libs/designsystem/src/lib/components/icon/icon.component.ts","../../../../libs/designsystem/src/lib/components/icon/icon.component.html","../../../../libs/designsystem/src/lib/components/accordion/accordion-item.component.ts","../../../../libs/designsystem/src/lib/components/accordion/accordion-item.component.html","../../../../libs/designsystem/src/lib/components/shared/resize-observer/resize-observer.factory.ts","../../../../libs/designsystem/src/lib/components/shared/resize-observer/resize-observer.service.ts","../../../../libs/designsystem/src/lib/components/card/card.component.ts","../../../../libs/designsystem/src/lib/components/card/card.component.html","../../../../libs/designsystem/src/lib/components/card/card-header/card-header.component.ts","../../../../libs/designsystem/src/lib/components/card/card-header/card-header.component.html","../../../../libs/designsystem/src/lib/components/button/button.component.ts","../../../../libs/designsystem/src/lib/components/button/button.component.html","../../../../libs/designsystem/src/lib/components/modal/action-sheet/action-sheet.component.ts","../../../../libs/designsystem/src/lib/components/modal/action-sheet/action-sheet.component.html","../../../../libs/designsystem/src/lib/components/modal/services/action-sheet.helper.ts","../../../../libs/designsystem/src/lib/types/window-ref.ts","../../../../libs/designsystem/src/lib/components/empty-state/empty-state.component.ts","../../../../libs/designsystem/src/lib/components/empty-state/empty-state.component.html","../../../../libs/designsystem/src/lib/directives/theme-color/theme-color.directive.ts","../../../../libs/designsystem/src/lib/components/modal/alert/alert.component.ts","../../../../libs/designsystem/src/lib/components/modal/alert/alert.component.html","../../../../libs/designsystem/src/lib/components/modal/services/alert.helper.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal-navigation.service.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.interfaces.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/config/modal-config.helper.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.html","../../../../libs/designsystem/src/lib/helpers/platform.service.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/modal-wrapper.component.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/modal-wrapper.component.html","../../../../libs/designsystem/src/lib/components/modal/services/modal-animation-builder.service.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.helper.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.controller.ts","../../../../libs/designsystem/src/lib/components/router-outlet/router-outlet.component.ts","../../../../libs/designsystem/src/lib/components/router-outlet/router-outlet.component.html","../../../../libs/designsystem/src/lib/components/app/app.component.ts","../../../../libs/designsystem/src/lib/components/app/app.component.html","../../../../libs/designsystem/src/lib/components/app/app.module.ts","../../../../libs/designsystem/src/lib/components/avatar/avatar.component.ts","../../../../libs/designsystem/src/lib/components/avatar/avatar.component.html","../../../../libs/designsystem/src/lib/components/angular-component-lib/utils.ts","../../../../libs/designsystem/src/lib/components/web-component-proxies.component.ts","../../../../libs/designsystem/src/lib/components/card/card-footer/card-footer.component.ts","../../../../libs/designsystem/src/lib/components/card/card-footer/card-footer.component.html","../../../../libs/designsystem/src/lib/helpers/merge-deep.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/chart-deprecated-helper.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/chart-deprecated-type.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/activitygauge.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/areaspline.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/bar.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/column.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/donut.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/options/timeseries.ts","../../../../libs/designsystem/src/lib/components/chart-deprecated/chart-deprecated.component.ts","../../../../libs/designsystem/src/lib/components/chart/chart.types.ts","../../../../libs/designsystem/src/lib/components/shared/component-loader.directive.ts","../../../../libs/designsystem/src/lib/helpers/deep-copy.ts","../../../../libs/designsystem/src/lib/helpers/element-has-ancestor.ts","../../../../libs/designsystem/src/lib/helpers/index.ts","../../../../libs/designsystem/src/lib/components/chart/configs/annotations.config.ts","../../../../libs/designsystem/src/lib/components/chart/configs/interaction-functions-extensions.config.ts","../../../../libs/designsystem/src/lib/components/chart/configs/type.config.ts","../../../../libs/designsystem/src/lib/components/chart/configs/chart-config.service.ts","../../../../libs/designsystem/src/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.ts","../../../../libs/designsystem/src/lib/components/chart/configs/shared.utils.ts","../../../../libs/designsystem/src/lib/components/chart/configs/global-defaults.config.ts","../../../../libs/designsystem/src/lib/components/chart/chart-js/configured-chart-js.ts","../../../../libs/designsystem/src/lib/components/chart/chart-js/chart-js.service.ts","../../../../libs/designsystem/src/lib/components/chart/chart.component.ts","../../../../libs/designsystem/src/lib/components/chart/chart.component.html","../../../../libs/designsystem/src/lib/components/chart/chart.module.ts","../../../../libs/designsystem/src/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.ts","../../../../libs/designsystem/src/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.ts","../../../../libs/designsystem/src/lib/components/calendar/helpers/calendar.helper.ts","../../../../libs/designsystem/src/lib/components/item/item.component.ts","../../../../libs/designsystem/src/lib/components/item/item.component.html","../../../../libs/designsystem/src/lib/components/list/list.directive.ts","../../../../libs/designsystem/src/lib/components/popover/popover.component.ts","../../../../libs/designsystem/src/lib/components/dropdown/dropdown.types.ts","../../../../libs/designsystem/src/lib/components/dropdown/keyboard-handler.service.ts","../../../../libs/designsystem/src/lib/components/dropdown/dropdown.component.ts","../../../../libs/designsystem/src/lib/components/dropdown/dropdown.component.html","../../../../libs/designsystem/src/lib/components/calendar/calendar.component.ts","../../../../libs/designsystem/src/lib/components/calendar/calendar.component.html","../../../../libs/designsystem/src/lib/components/item-sliding/item-sliding.component.ts","../../../../libs/designsystem/src/lib/components/item-sliding/item-sliding.component.html","../../../../libs/designsystem/src/lib/helpers/unique-id-generator.helper.ts","../../../../libs/designsystem/src/lib/components/checkbox/checkbox.component.ts","../../../../libs/designsystem/src/lib/components/checkbox/checkbox.component.html","../../../../libs/designsystem/src/lib/components/chip/chip.component.ts","../../../../libs/designsystem/src/lib/components/chip/chip.component.html","../../../../libs/designsystem/src/lib/components/divider/divider.component.ts","../../../../libs/designsystem/src/lib/components/divider/divider.component.html","../../../../libs/designsystem/src/lib/components/radio/radio.component.ts","../../../../libs/designsystem/src/lib/components/radio/radio.component.html","../../../../libs/designsystem/src/lib/components/radio/radio-group/radio-group.component.ts","../../../../libs/designsystem/src/lib/components/radio/radio-group/radio-group.component.html","../../../../libs/designsystem/src/lib/components/form-field/form-field-message/form-field-message.component.ts","../../../../libs/designsystem/src/lib/components/form-field/form-field-message/form-field-message.component.html","../../../../libs/designsystem/src/lib/components/form-field/input-counter/input-counter.component.ts","../../../../libs/designsystem/src/lib/components/form-field/input-counter/input-counter.component.html","../../../../libs/designsystem/src/lib/components/form-field/input/input.component.ts","../../../../libs/designsystem/src/lib/components/form-field/textarea/textarea.component.ts","../../../../libs/designsystem/src/lib/components/form-field/textarea/textarea.component.html","../../../../libs/designsystem/src/lib/components/form-field/form-field.component.ts","../../../../libs/designsystem/src/lib/components/form-field/form-field.component.html","../../../../libs/designsystem/src/lib/components/form-field/directives/date/date-input.directive.ts","../../../../libs/designsystem/src/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.ts","../../../../libs/designsystem/src/lib/components/fab-sheet/fab-sheet.component.ts","../../../../libs/designsystem/src/lib/components/fab-sheet/fab-sheet.component.html","../../../../libs/designsystem/src/lib/components/flag/flag.component.ts","../../../../libs/designsystem/src/lib/scss/scss-helper.ts","../../../../libs/designsystem/src/lib/components/grid/breakpoint-helper.service.ts","../../../../libs/designsystem/src/lib/components/grid/grid.component.ts","../../../../libs/designsystem/src/lib/components/grid/grid.component.html","../../../../libs/designsystem/src/lib/components/grid/grid-card-configuration.ts","../../../../libs/designsystem/src/lib/components/icon/icon.module.ts","../../../../libs/designsystem/src/lib/components/item/label/label.component.ts","../../../../libs/designsystem/src/lib/components/item/label/label.component.html","../../../../libs/designsystem/src/lib/components/item/item.module.ts","../../../../libs/designsystem/src/lib/components/item-group/item-group.component.ts","../../../../libs/designsystem/src/lib/components/item-group/item-group.component.html","../../../../libs/designsystem/src/lib/components/spinner/spinner.component.ts","../../../../libs/designsystem/src/lib/components/spinner/spinner.component.html","../../../../libs/designsystem/src/lib/components/loading-overlay/loading-overlay.service.ts","../../../../libs/designsystem/src/lib/components/loading-overlay/loading-overlay.component.ts","../../../../libs/designsystem/src/lib/components/loading-overlay/loading-overlay.component.html","../../../../libs/designsystem/src/lib/components/list/directives/infinite-scroll.directive.ts","../../../../libs/designsystem/src/lib/components/list/helpers/list-helper.ts","../../../../libs/designsystem/src/lib/components/list/pipes/group-by.pipe.ts","../../../../libs/designsystem/src/lib/components/list/directives/list-item-color.directive.ts","../../../../libs/designsystem/src/lib/components/list/list-item/list-item.component.ts","../../../../libs/designsystem/src/lib/components/list/list-item/list-item.component.html","../../../../libs/designsystem/src/lib/components/list/list.component.ts","../../../../libs/designsystem/src/lib/components/list/list.component.html","../../../../libs/designsystem/src/lib/components/list/list-header/list-header.component.ts","../../../../libs/designsystem/src/lib/components/list/list-header/list-header.component.html","../../../../libs/designsystem/src/lib/components/list/list-section-header/list-section-header.component.ts","../../../../libs/designsystem/src/lib/components/list/list-section-header/list-section-header.component.html","../../../../libs/designsystem/src/lib/components/spinner/spinner.module.ts","../../../../libs/designsystem/src/lib/components/list/list-experimental/list-experimental.component.ts","../../../../libs/designsystem/src/lib/components/list/list-experimental/list-experimental.component.html","../../../../libs/designsystem/src/lib/components/list/list.module.ts","../../../../libs/designsystem/src/lib/components/modal/footer/modal-footer.component.ts","../../../../libs/designsystem/src/lib/components/modal/footer/modal-footer.component.html","../../../../libs/designsystem/src/lib/components/tabs/tab-button/tab-button.events.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.service.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.component.html","../../../../libs/designsystem/src/lib/helpers/line-clamp-helper.ts","../../../../libs/designsystem/src/lib/directives/fit-heading/fit-heading.directive.ts","../../../../libs/designsystem/src/lib/components/page/page.component.ts","../../../../libs/designsystem/src/lib/components/page/page.component.html","../../../../libs/designsystem/src/lib/components/page/page-footer/page-footer.component.ts","../../../../libs/designsystem/src/lib/components/page/page-footer/page-footer.component.html","../../../../libs/designsystem/src/lib/directives/fit-heading/fit-heading.module.ts","../../../../libs/designsystem/src/lib/components/page/page.module.ts","../../../../libs/designsystem/src/lib/components/range/range.component.ts","../../../../libs/designsystem/src/lib/components/range/range.component.html","../../../../libs/designsystem/src/lib/components/router-outlet/router-outlet.module.ts","../../../../libs/designsystem/src/lib/components/reorder-list/reorder-event.ts","../../../../libs/designsystem/src/lib/components/reorder-list/reorder-list.component.ts","../../../../libs/designsystem/src/lib/components/reorder-list/reorder-list.component.html","../../../../libs/designsystem/src/lib/components/section-header/section-header.component.ts","../../../../libs/designsystem/src/lib/components/section-header/section-header.component.html","../../../../libs/designsystem/src/lib/components/segmented-control/segmented-control.component.ts","../../../../libs/designsystem/src/lib/components/segmented-control/segmented-control.component.html","../../../../libs/designsystem/src/lib/components/slide-button/slide-button.component.ts","../../../../libs/designsystem/src/lib/components/slide-button/slide-button.component.html","../../../../libs/designsystem/src/lib/components/slides/slides.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tab-button/tab-button.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tab-button/tab-button.component.html","../../../../libs/designsystem/src/lib/components/tabs/tabs.module.ts","../../../../libs/designsystem/src/lib/components/toast/services/toast.helper.ts","../../../../libs/designsystem/src/lib/components/toast/services/toast.controller.ts","../../../../libs/designsystem/src/lib/components/toggle/toggle.component.ts","../../../../libs/designsystem/src/lib/components/toggle/toggle.component.html","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle-ring.component.ts","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle-ring.component.svg","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle.component.ts","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle.component.html","../../../../libs/designsystem/src/lib/components/toggle-button/toggle-button.component.ts","../../../../libs/designsystem/src/lib/components/toggle-button/toggle-button.component.html","../../../../libs/designsystem/src/lib/components/toggle-button/toggle-button.module.ts","../../../../libs/designsystem/src/lib/directives/key-handler/key-handler.directive.ts","../../../../libs/designsystem/src/lib/directives/element-as-button/element-as-button.directive.ts","../../../../libs/designsystem/src/lib/directives/modal-router-link/modal-router-link.directive.ts","../../../../libs/designsystem/src/lib/custom-elements-initializer.ts","../../../../libs/designsystem/src/lib/kirby.module.ts","../../../../libs/designsystem/src/kirbydesign-designsystem.ts"],"sourcesContent":["import { DesignTokenHelper } from '@kirbydesign/core';\n\nexport namespace KirbyAnimation {\n export enum Duration {\n // Duration in milliseconds\n QUICK = parseInt(DesignTokenHelper.transitionDuration('quick')),\n SHORT = parseInt(DesignTokenHelper.transitionDuration('short')),\n LONG = parseInt(DesignTokenHelper.transitionDuration('long')),\n EXTRA_LONG = parseInt(DesignTokenHelper.transitionDuration('extraLong')),\n }\n export const Easing = DesignTokenHelper.transitionEasings();\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kirbyAccordion], kirby-accordion',\n exportAs: 'kirby-accordion',\n})\nexport class AccordionDirective {}\n","import { Injectable } from '@angular/core';\n\nimport { Icon } from './icon-settings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconRegistryService {\n private iconRegistry = new Map<string, string>();\n\n public addIcon(iconName: string, svgPath: string): void {\n if (!this.iconRegistry.has(iconName)) {\n this.iconRegistry.set(iconName, svgPath);\n } else {\n console.warn(`Icon with name: \"${iconName}\" already exists`);\n }\n }\n\n public addIcons(icons: Icon[]): void {\n if (!icons) {\n console.error('Icons not defined');\n return;\n }\n icons.forEach((icon) => {\n this.addIcon(icon.name, icon.svg);\n });\n }\n\n getIcons(): Icon[] {\n return [...this.iconRegistry].map(\n (keyValPair) => ({ name: keyValPair[0], svg: keyValPair[1] } as Icon)\n );\n }\n\n getIcon(name: string): Icon {\n const svg = this.iconRegistry.get(name);\n return svg ? { name, svg } : undefined;\n }\n}\n","import { IconSettings } from './icon-settings';\n\n// tslint:disable:prettier\nexport const kirbyIconSettings: IconSettings = {\n icons: [\n { name: 'accounts-outline', svg: 'assets/kirby/icons/svg/accounts-outline.svg' },\n { name: 'accounts', svg: 'assets/kirby/icons/svg/accounts.svg' },\n { name: 'add', svg: 'assets/kirby/icons/svg/add.svg' },\n { name: 'remove', svg: 'assets/kirby/icons/svg/remove.svg' },\n { name: 'unsubscribe', svg: 'assets/kirby/icons/svg/unsubscribe.svg' },\n { name: 'arrow-back', svg: 'assets/kirby/icons/svg/arrow-back.svg' },\n { name: 'arrow-down', svg: 'assets/kirby/icons/svg/arrow-down.svg' },\n { name: 'arrow-more', svg: 'assets/kirby/icons/svg/arrow-more.svg' },\n { name: 'arrow-up', svg: 'assets/kirby/icons/svg/arrow-up.svg' },\n { name: 'attach', svg: 'assets/kirby/icons/svg/attach.svg' },\n { name: 'backspace', svg: 'assets/kirby/icons/svg/backspace.svg' },\n { name: 'calendar', svg: 'assets/kirby/icons/svg/calendar.svg' },\n { name: 'camera', svg: 'assets/kirby/icons/svg/camera.svg' },\n { name: 'checkbox-outline', svg: 'assets/kirby/icons/svg/checkbox-outline.svg' },\n { name: 'checkbox', svg: 'assets/kirby/icons/svg/checkbox.svg' },\n { name: 'checkmark-selected', svg: 'assets/kirby/icons/svg/checkmark-selected.svg' },\n { name: 'close', svg: 'assets/kirby/icons/svg/close.svg' },\n { name: 'cog', svg: 'assets/kirby/icons/svg/cog.svg' },\n { name: 'copy', svg: 'assets/kirby/icons/svg/copy.svg' },\n { name: 'flag', svg: 'assets/kirby/icons/svg/flag.svg' },\n { name: 'edit', svg: 'assets/kirby/icons/svg/edit.svg' },\n { name: 'filter', svg: 'assets/kirby/icons/svg/filter.svg' },\n { name: 'flash-off', svg: 'assets/kirby/icons/svg/flash-off.svg' },\n { name: 'flash', svg: 'assets/kirby/icons/svg/flash.svg' },\n { name: 'moneybag', svg: 'assets/kirby/icons/svg/moneybag.svg' },\n { name: 'help', svg: 'assets/kirby/icons/svg/help.svg' },\n { name: 'home', svg: 'assets/kirby/icons/svg/home.svg' },\n { name: 'inbox', svg: 'assets/kirby/icons/svg/inbox.svg' },\n { name: 'inbox-outline', svg: 'assets/kirby/icons/svg/inbox-outline.svg' },\n { name: 'information', svg: 'assets/kirby/icons/svg/information.svg' },\n { name: 'investment', svg: 'assets/kirby/icons/svg/investment.svg' },\n { name: 'kirby', svg: 'assets/kirby/icons/svg/kirby.svg' },\n { name: 'link', svg: 'assets/kirby/icons/svg/link.svg' },\n { name: 'log-out', svg: 'assets/kirby/icons/svg/log-out.svg' },\n { name: 'menu-outline', svg: 'assets/kirby/icons/svg/menu-outline.svg' },\n { name: 'menu', svg: 'assets/kirby/icons/svg/menu.svg' },\n { name: 'misc', svg: 'assets/kirby/icons/svg/misc.svg' },\n { name: 'more', svg: 'assets/kirby/icons/svg/more.svg' },\n { name: 'move', svg: 'assets/kirby/icons/svg/move.svg' },\n { name: 'payment-card', svg: 'assets/kirby/icons/svg/payment-card.svg' },\n { name: 'pension', svg: 'assets/kirby/icons/svg/pension.svg' },\n { name: 'person-outline', svg: 'assets/kirby/icons/svg/person-outline.svg' },\n { name: 'person', svg: 'assets/kirby/icons/svg/person.svg' },\n { name: 'qr', svg: 'assets/kirby/icons/svg/QR.svg' },\n { name: 'search', svg: 'assets/kirby/icons/svg/search.svg' },\n { name: 'share', svg: 'assets/kirby/icons/svg/share.svg' },\n { name: 'sort', svg: 'assets/kirby/icons/svg/sort.svg' },\n { name: 'support', svg: 'assets/kirby/icons/svg/support.svg' },\n { name: 'swap', svg: 'assets/kirby/icons/svg/swap.svg' },\n { name: 'trash', svg: 'assets/kirby/icons/svg/trash.svg' },\n { name: 'foreign-payment', svg: 'assets/kirby/icons/svg/foreign-payment.svg' },\n { name: 'clock', svg: 'assets/kirby/icons/svg/clock.svg' },\n { name: 'verify', svg: 'assets/kirby/icons/svg/verify.svg' },\n { name: 'warning', svg: 'assets/kirby/icons/svg/warning.svg' },\n { name: 'write-message', svg: 'assets/kirby/icons/svg/write-message.svg' },\n { name: 'reorder', svg: 'assets/kirby/icons/svg/reorder.svg' },\n ],\n};\n\nexport const defaultIcons = kirbyIconSettings.icons.map((icon) => icon.name);\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\nimport { IconRegistryService } from './icon-registry.service';\nimport { Icon } from './icon-settings';\nimport { kirbyIconSettings } from './kirby-icon-settings';\n\nexport enum IconSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n selector: 'kirby-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n // tslint:disable-next-line: no-host-metadata-property\n host: { '[class.kirby-icon]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnChanges {\n defaultIcon: Icon = this.findIcon(kirbyIconSettings.icons, 'cog');\n private _icon = (this.icon = this.defaultIcon);\n @HostBinding('class')\n @Input()\n size: IconSize | `${IconSize}`;\n\n @Input() name: string;\n @Input() customName: string;\n\n get icon(): Icon {\n return this._icon;\n }\n\n set icon(icon: Icon) {\n // If icon are not found, set default icon\n if (!icon && (this.name || this.customName)) {\n this.warnAboutMissingIcon();\n\n icon = this.defaultIcon;\n\n // If default icon are not found\n if (!icon) {\n console.warn('Default icon was not found.');\n return;\n }\n }\n\n // Set icon if it's found\n if (icon) {\n this._icon = icon;\n }\n }\n\n private warnAboutMissingIcon(): void {\n if (this.customName) {\n console.warn(`Custom icon with name \"${this.customName}\" was not found. \n Do you have a typo in 'customName' or\n forgot to configure the custom icon through the 'IconRegistryService'?`);\n } else {\n console.warn(`Built-in icon with name \"${this.name}\" was not found. \n Do you have a typo in 'name' or\n did you mean to use a custom icon? If so, please use: \n <kirby-icon customName=\"${this.name}\"></kirby-icon>`);\n }\n }\n\n constructor(private iconRegistryService: IconRegistryService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.name && changes.name.currentValue) {\n this.icon = this.findIcon(kirbyIconSettings.icons, changes.name.currentValue);\n } else if (changes.customName && changes.customName.currentValue) {\n this.icon = this.iconRegistryService.getIcon(changes.customName.currentValue);\n }\n }\n\n private findIcon(icons, name: string): Icon {\n return icons.find((icon) => icon.name === name);\n }\n}\n","<ion-icon [src]=\"icon?.svg\"></ion-icon>\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n// Counter for generating unique element ids\nlet uniqueId = 0;\n\n@Component({\n selector: 'kirby-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('isExpanded', [\n state('true', style({ height: '*', visibility: 'visible' })),\n state('false', style({ height: '0px', visibility: 'hidden' })),\n transition('true <=> false', animate('0.2s')),\n ]),\n ],\n})\nexport class AccordionItemComponent {\n @Input() title: string;\n @Input() isExpanded: boolean = false;\n\n // IDs used for a11y labelling\n _titleId = `kirby-accordion-item-title-${++uniqueId}`;\n _contentId = `kirby-accordion-item-content-${uniqueId}`;\n}\n","<ng-container>\n <div\n (click)=\"isExpanded = !isExpanded\"\n class=\"header\"\n role=\"button\"\n [class.expanded]=\"isExpanded\"\n [attr.aria-expanded]=\"isExpanded\"\n [attr.aria-controls]=\"_contentId\"\n [id]=\"_titleId\"\n >\n <div class=\"title\">{{ title }}</div>\n <kirby-icon name=\"arrow-down\"></kirby-icon>\n </div>\n <div\n class=\"content\"\n role=\"region\"\n [attr.aria-labelledby]=\"_titleId\"\n [id]=\"_contentId\"\n [@isExpanded]=\"!!isExpanded\"\n >\n <div class=\"content-body\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { ResizeObserver } from './types/resize-observer';\nimport { ResizeObserverCallback } from './types/resize-observer-callback';\n\ndeclare var ResizeObserver: {\n prototype: ResizeObserver;\n new (callback: ResizeObserverCallback): ResizeObserver;\n};\n\n/**\n * Factory that creates a new ResizeObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n","import { ElementRef, Injectable, OnDestroy, NgZone } from '@angular/core';\n\nimport { ResizeObserver } from './types/resize-observer';\nimport { ResizeObserverEntry } from './types/resize-observer-entry';\nimport { ResizeObserverFactory } from './resize-observer.factory';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n // IMPORTANT: Keeps track of the existing ResizeObserver so it can be reused for performance.\n // See: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/z6ienONUb5A/F5-VcUZtBAAJ\n private observer: ResizeObserver | null;\n private observedElements = new WeakMap<Element, (entry: ResizeObserverEntry) => void>();\n\n constructor(private _resizeObserverFactory: ResizeObserverFactory, private zone: NgZone) {\n this.observer = this._resizeObserverFactory.create((entries) => this.handleResize(entries));\n }\n\n observe(\n elementOrRef: Element | ElementRef<Element>,\n action: (entry: ResizeObserverEntry) => void\n ): void {\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n if (!this.observedElements.has(element)) {\n if (this.observer) {\n // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n this.zone.runOutsideAngular(() => {\n this.observer.observe(element);\n });\n }\n this.observedElements.set(element, action);\n }\n }\n\n ngOnDestroy() {\n if (this.observer) {\n // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n this.zone.runOutsideAngular(() => {\n this.observer.disconnect();\n });\n }\n this.observedElements = null;\n }\n\n unobserve(elementOrRef: Element | ElementRef<Element>) {\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n if (this.observedElements.has(element)) {\n if (this.observer) {\n // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n this.zone.runOutsideAngular(() => {\n this.observer.unobserve(element);\n });\n }\n this.observedElements.delete(element);\n }\n }\n\n private handleResize(entries: ResizeObserverEntry[]) {\n entries.forEach((entry) => {\n const action = this.observedElements.get(entry.target);\n if (action) {\n action(entry);\n }\n });\n }\n}\n","import {\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { ResizeObserverService } from '../shared/resize-observer/resize-observer.service';\nimport { ResizeObserverEntry } from '../shared/resize-observer/types/resize-observer-entry';\n\n@Component({\n selector: 'kirby-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class CardComponent implements OnInit, OnDestroy {\n @Input() title: string;\n @Input() subtitle: string;\n\n @HostBinding('style.--kirby-card-background-image')\n _backgroundImage: string;\n\n @Input()\n set backgroundImageUrl(value: string) {\n this._backgroundImage = `url('${value}')`;\n }\n\n @Input()\n hasPadding: boolean;\n\n private sizesSortedByBreakpoint = this.sortSizesByBreakpoint({\n small: 360,\n medium: 720,\n large: 1024,\n });\n\n @Input()\n set sizes(value: { [size: string]: number }) {\n if (typeof value === 'string') {\n console.error(\n 'Sizes property cannot be a string. Please ensure the size property is bound as an expression:\\n[sizes]=\"{...}\"'\n );\n }\n this.sizesSortedByBreakpoint = this.sortSizesByBreakpoint(value);\n }\n\n @HostBinding('class.flat')\n flat: boolean = false;\n @HostBinding('class.highlighted')\n highlighted: boolean = false;\n @Input() set mode(value: 'flat' | 'highlighted') {\n this.flat = value === 'flat';\n this.highlighted = value === 'highlighted';\n }\n\n constructor(\n private elementRef: ElementRef,\n private resizeObserverService: ResizeObserverService,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.resizeObserverService.observe(this.elementRef, (entry) => this.handleResize(entry));\n }\n\n ngOnDestroy() {\n this.resizeObserverService.unobserve(this.elementRef);\n }\n\n private sortSizesByBreakpoint(sizes: { [size: string]: number }): [string, number][] {\n return Object.entries(sizes).sort(this.compareSizesByBreakpoint);\n }\n\n private compareSizesByBreakpoint(a: [string, number], b: [string, number]): number {\n return a[1] > b[1] ? 1 : b[1] > a[1] ? -1 : 0;\n }\n\n private handleResize(entry: ResizeObserverEntry) {\n const sizeAttributeName = 'size';\n const smallestBreakpointName = this.sizesSortedByBreakpoint[0][0];\n const smallestBreakpointWidth = this.sizesSortedByBreakpoint[0][1];\n if (entry.contentRect.width < smallestBreakpointWidth) {\n this.renderer.setAttribute(entry.target, sizeAttributeName, `<${smallestBreakpointName}`);\n } else {\n this.sizesSortedByBreakpoint.forEach(([size, width]) => {\n if (entry.contentRect.width >= width) {\n this.renderer.setAttribute(entry.target, sizeAttributeName, size);\n }\n });\n }\n }\n}\n","<ng-content select=\"kirby-card-header\"></ng-content>\n<div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n<ng-content select=\"kirby-card-footer\"></ng-content>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { NotificationColor } from '@kirbydesign/core';\n\nexport type CardFlagLevel = NotificationColor | 'info' | null;\n\n@Component({\n selector: 'kirby-card-header',\n templateUrl: './card-header.component.html',\n styleUrls: ['./card-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardHeaderComponent {\n @Input() title: string;\n @Input() subtitle: string;\n @Input() isTitleBold: boolean;\n @HostBinding('class')\n @Input()\n flagged: CardFlagLevel = null;\n}\n","<header>\n <h2 *ngIf=\"title\" [class.bold]=\"isTitleBold\">{{ title }}</h2>\n <h4 *ngIf=\"subtitle\">{{ subtitle }}</h4>\n <ng-content></ng-content>\n</header>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n} from '@angular/core';\n\nimport { NotificationColor } from '@kirbydesign/core';\n\nimport { IconComponent } from '../icon/icon.component';\n\nexport enum ButtonSize {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'button[kirby-button],Button[kirby-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements AfterContentInit {\n @HostBinding('class.attention-level1')\n isAttentionLevel1: boolean = true; // Default\n @HostBinding('class.attention-level2')\n isAttentionLevel2: boolean;\n @HostBinding('class.attention-level3')\n isAttentionLevel3: boolean;\n @HostBinding('class.attention-level4')\n isAttentionLevel4: boolean;\n @HostBinding('class.destructive')\n destructive: boolean = false; // Default\n\n @HostBinding('class.floating')\n public get isButtonFloating(): boolean {\n return this.isFloating;\n }\n\n @HostBinding('class.icon-only')\n public get isIconOnly(): boolean {\n return !!this.icon && !this.hasText;\n }\n private _isIconLeft = false;\n @HostBinding('class.icon-left')\n public get isIconLeft() {\n return this._isIconLeft;\n }\n private _isIconRight = false;\n @HostBinding('class.icon-right')\n public get isIconRight() {\n return this._isIconRight;\n }\n\n @HostBinding('class')\n get _cssClass() {\n return [this.themeColor, this.size].filter((cssClass) => !!cssClass);\n }\n\n @Input() set attentionLevel(level: '1' | '2' | '3' | '4') {\n this.isAttentionLevel1 = level === '1';\n this.isAttentionLevel2 = level === '2';\n this.isAttentionLevel3 = level === '3';\n this.isAttentionLevel4 = level === '4';\n }\n @Input() set isDestructive(state: boolean) {\n this.destructive = state;\n }\n @Input()\n themeColor: NotificationColor;\n @Input() expand: 'full' | 'block';\n @Input() isFloating: boolean = false;\n @Input()\n size: ButtonSize | `${ButtonSize}` = ButtonSize.MD;\n\n @ContentChild(IconComponent) icon: IconComponent;\n @ContentChild(IconComponent, { read: ElementRef })\n iconElementRef: ElementRef<HTMLElement>;\n private hasText = false;\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit(): void {\n this.hasText = !!this.elementRef.nativeElement.textContent;\n if (this.iconElementRef !== undefined && this.hasText) {\n this._isIconLeft =\n this.elementRef.nativeElement.firstChild === this.iconElementRef.nativeElement;\n this._isIconRight = !this._isIconLeft;\n }\n }\n}\n","<ng-content></ng-content>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ActionSheetItem } from './config/action-sheet-item';\n\n@Component({\n selector: 'kirby-action-sheet',\n templateUrl: './action-sheet.component.html',\n styleUrls: ['./action-sheet.component.scss'],\n})\nexport class ActionSheetComponent {\n @Input() cancelButtonText = 'Cancel';\n @Input() hideCancel: boolean = false;\n @Input() disabled: boolean = false;\n @Input() header: string;\n @Input() subheader: string;\n @Input() items: Array<ActionSheetItem>;\n @Output() cancel = new EventEmitter();\n @Output() itemSelect: EventEmitter<ActionSheetItem> = new EventEmitter<ActionSheetItem>();\n\n onItemSelect(selection: ActionSheetItem) {\n this.itemSelect.emit(selection);\n }\n\n onCancel() {\n this.cancel.emit();\n }\n}\n","<kirby-card>\n <kirby-card-header *ngIf=\"header\" [title]=\"header\" [isTitleBold]=\"true\" [subtitle]=\"subheader\">\n </kirby-card-header>\n <button\n kirby-button\n expand=\"block\"\n size=\"lg\"\n attentionLevel=\"4\"\n (click)=\"onItemSelect(item)\"\n *ngFor=\"let item of items\"\n >\n {{ item.text }}\n </button>\n</kirby-card>\n<button\n *ngIf=\"!hideCancel\"\n kirby-button\n class=\"cancel-btn\"\n size=\"lg\"\n attentionLevel=\"2\"\n (click)=\"onCancel()\"\n>\n {{ cancelButtonText }}\n</button>\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\nimport { Subscription } from 'rxjs';\n\nimport { ActionSheetComponent } from '../action-sheet/action-sheet.component';\nimport { ActionSheetConfig } from '../action-sheet/config/action-sheet-config';\nimport { ActionSheetItem } from '../action-sheet/config/action-sheet-item';\n\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ActionSheetHelper {\n constructor(private ionicModalController: ModalController) {}\n\n public async showActionSheet(config: ActionSheetConfig): Promise<Overlay> {\n const cancel = new EventEmitter();\n const itemSelect = new EventEmitter<ActionSheetItem>();\n\n const ionModal = await this.ionicModalController.create({\n component: ActionSheetComponent,\n cssClass: ['kirby-overlay', 'kirby-action-sheet'],\n componentProps: {\n ...config,\n cancel: cancel,\n itemSelect: itemSelect,\n },\n backdropDismiss: true,\n });\n\n const cancelSubscription: Subscription = cancel.subscribe(() => ionModal.dismiss());\n const itemSelectSubscription: Subscription = itemSelect.subscribe((item) =>\n ionModal.dismiss(item)\n );\n const onDidDismiss = ionModal.onDidDismiss();\n onDidDismiss.then((_) => {\n cancelSubscription.unsubscribe();\n itemSelectSubscription.unsubscribe();\n });\n\n await ionModal.present();\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WindowRef {\n get nativeWindow(): any {\n return window;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n} from '@angular/core';\n\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'kirby-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateComponent implements AfterContentInit {\n @Input() iconName: string;\n @Input() customIconName: string;\n @Input() title: string;\n @Input() subtitle: string;\n\n @ContentChildren(ButtonComponent)\n private slottedButtons: QueryList<ButtonComponent>;\n\n ngAfterContentInit() {\n this.enforceAttentionLevelRules();\n\n /* setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when changing attention \n levels of slotted buttons in this.enforceAttentionLevelRules */\n this.slottedButtons.changes.subscribe(() => {\n setTimeout(() => this.enforceAttentionLevelRules());\n });\n }\n\n /** Enforces that all slotted buttons will have their attention\n * level set to 3, except the first button if it has\n * level 1.\n */\n private enforceAttentionLevelRules() {\n this.slottedButtons.forEach((button, index) => {\n if (index === 0 && button.isAttentionLevel1) return;\n\n if (!button.isAttentionLevel3) {\n button.attentionLevel = '3';\n }\n });\n }\n}\n","<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" [customName]=\"customIconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nimport { ColorHelper } from '@kirbydesign/core';\nimport { ThemeColor } from '@kirbydesign/core';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: `kirby-avatar[themeColor],\n kirby-card[themeColor],\n kirby-icon[themeColor],\n kirby-progress-circle-ring[themeColor],\n kirby-modal-footer[themeColor],\n kirby-empty-state[themeColor]`,\n})\nexport class ThemeColorDirective {\n private _isDefault = true;\n @HostBinding('class.default')\n get isDefault() {\n return this._isDefault;\n }\n\n private _isPrimary: boolean;\n @HostBinding('class.primary')\n get isPrimary() {\n return this._isPrimary;\n }\n\n private _isSecondary: boolean;\n @HostBinding('class.secondary')\n get isSecondary() {\n return this._isSecondary;\n }\n\n private _isTertiary: boolean;\n @HostBinding('class.tertiary')\n get isTertiary() {\n return this._isTertiary;\n }\n\n private _isSuccess: boolean;\n @HostBinding('class.success')\n get isSuccess() {\n return this._isSuccess;\n }\n\n private _isWarning: boolean;\n @HostBinding('class.warning')\n get isWarning() {\n return this._isWarning;\n }\n\n private _isDanger: boolean;\n @HostBinding('class.danger')\n get isDanger() {\n return this._isDanger;\n }\n\n private _isLight: boolean;\n @HostBinding('class.light')\n get isLight() {\n return this._isLight;\n }\n\n private _isMedium: boolean;\n @HostBinding('class.medium')\n get isMedium() {\n return this._isMedium;\n }\n\n private _isDark: boolean;\n @HostBinding('class.dark')\n get isDark() {\n return this._isDark;\n }\n\n private _isWhite: boolean;\n @HostBinding('class.white')\n get isWhite() {\n return this._isWhite;\n }\n\n private _isBrightnessWhite: boolean;\n @HostBinding('class.kirby-color-brightness-white')\n get isBrightnessWhite() {\n return this._isBrightnessWhite;\n }\n\n private _isBrightnessLight: boolean;\n @HostBinding('class.kirby-color-brightness-light')\n get isBrightnessLight() {\n return this._isBrightnessLight;\n }\n\n private _isBrightnessDark: boolean;\n @HostBinding('class.kirby-color-brightness-dark')\n get isBrightnessDark() {\n return this._isBrightnessDark;\n }\n\n @Input() set themeColor(value: ThemeColor) {\n this._isDefault = !value;\n this._isPrimary = value === 'primary';\n this._isSecondary = value === 'secondary';\n this._isTertiary = value === 'tertiary';\n this._isSuccess = value === 'success';\n this._isWarning = value === 'warning';\n this._isDanger = value === 'danger';\n this._isLight = value === 'light';\n this._isMedium = value === 'medium';\n this._isDark = value === 'dark';\n this._isWhite = value === 'white';\n const colorBrightness = ColorHelper.getColorBrightness(value);\n this._isBrightnessWhite = colorBrightness === 'white';\n this._isBrightnessLight = colorBrightness === 'light';\n this._isBrightnessDark = colorBrightness === 'dark';\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { WindowRef } from '../../../types/window-ref';\n\n@Component({\n selector: 'kirby-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n // tslint:disable-next-line: no-host-metadata-property\n host: { '[class.ion-page]': 'false' }, //Ensure ion-page class doesn't get applied by Ionic Modal Controller\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertComponent implements AfterViewInit {\n readonly BLUR_WRAPPER_DELAY_IN_MS = 50;\n @ViewChild('alertWrapper', { static: true }) private alertWrapper: ElementRef;\n private scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n\n title$: Observable<string>;\n @Input()\n set title(title: string | Observable<string>) {\n this.title$ = typeof title === 'string' ? of(title) : title;\n }\n\n message$: Observable<string>;\n @Input()\n set message(message: string & Observable<string>) {\n this.message$ = typeof message === 'string' ? of(message) : message;\n }\n\n @Input() iconName: string;\n @Input() iconThemeColor: string;\n @Input() okBtn: string;\n @Input() okBtnIsDestructive: boolean;\n @Input() cancelBtn: string;\n\n constructor(private elementRef: ElementRef<HTMLElement>, private windowRef: WindowRef) {}\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.alertWrapper.nativeElement.focus();\n this.alertWrapper.nativeElement.blur();\n }, this.BLUR_WRAPPER_DELAY_IN_MS);\n }\n\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n\n onCancel() {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n ionModalElement && ionModalElement.dismiss(false);\n }\n\n onOk() {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n ionModalElement && ionModalElement.dismiss(true);\n }\n}\n","<article #alertWrapper>\n <kirby-empty-state\n [iconName]=\"iconName\"\n [themeColor]=\"iconThemeColor\"\n [title]=\"title$ | async\"\n [subtitle]=\"message$ | async\"\n ></kirby-empty-state>\n <div class=\"buttongroup\">\n <button\n kirby-button\n *ngIf=\"cancelBtn\"\n attentionLevel=\"3\"\n class=\"cancel-btn\"\n (click)=\"onCancel()\"\n >\n {{ cancelBtn }}\n </button>\n <button\n kirby-button\n [size]=\"cancelBtn ? null : 'lg'\"\n attentionLevel=\"1\"\n class=\"ok-btn\"\n [isDestructive]=\"okBtnIsDestructive\"\n (click)=\"onOk()\"\n >\n {{ okBtn }}\n </button>\n </div>\n</article>\n","import { Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\n\nimport { AlertComponent } from '../alert/alert.component';\nimport { AlertConfig } from '../alert/config/alert-config';\n\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class AlertHelper {\n constructor(private ionicModalController: ModalController) {}\n\n public async showAlert(config: AlertConfig): Promise<Overlay> {\n const ionModal = await this.ionicModalController.create({\n component: AlertComponent,\n componentProps: this.getComponentProps(config),\n cssClass: ['kirby-overlay', 'kirby-alert'],\n mode: 'ios',\n backdropDismiss: false,\n });\n\n await ionModal.present();\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n\n private getComponentProps(config: AlertConfig) {\n return {\n ...config,\n okBtn: this.getOkBtn(config),\n cancelBtn: config.cancelBtn,\n okBtnIsDestructive: this.getOkBtnIsDestructive(config),\n iconName: config.icon && config.icon.name,\n iconThemeColor: config.icon && config.icon.themeColor,\n };\n }\n\n private getOkBtn(config: AlertConfig) {\n let text: string;\n\n if (config.okBtn) {\n if (typeof config.okBtn === 'string') {\n text = config.okBtn;\n } else {\n text = config.okBtn.text;\n }\n }\n return text;\n }\n\n getOkBtnIsDestructive(config) {\n return typeof config.okBtn === 'object' ? config.okBtn.isDestructive : undefined;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Params, Route, Router, Routes } from '@angular/router';\nimport { EMPTY, Observable } from 'rxjs';\nimport { filter, first, map, pairwise, startWith } from 'rxjs/operators';\n\nimport { ModalRouteActivation } from './modal.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalNavigationService {\n constructor(private router: Router, private route: ActivatedRoute) {}\n\n isModalRoute(url: string): boolean {\n return url.includes('(modal:');\n }\n\n private getCurrentActivatedRoute(): ActivatedRoute {\n let childRoute = this.route.root;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n return childRoute;\n }\n\n private async getModalRoutes(\n routeConfig: Routes[],\n moduleRootRoutePath?: string\n ): Promise<string[]> {\n const flattenedRoutes: Routes = [].concat(...routeConfig);\n let modalRoutes: string[] = [];\n const moduleRootPaths = await this.getModuleRootPath(flattenedRoutes, moduleRootRoutePath);\n if (moduleRootPaths) {\n modalRoutes = this.getModalRoutePaths(flattenedRoutes, moduleRootPaths);\n }\n return modalRoutes;\n }\n\n private async getModuleRootPath(routes: Routes, moduleRootRoutePath?: string): Promise<string[]> {\n if (moduleRootRoutePath) {\n const trimmedPaths = moduleRootRoutePath\n .trim()\n .split('/')\n .filter((path) => !!path);\n const rootPath = [''];\n return rootPath.concat(trimmedPaths);\n }\n\n const currentRoutePaths = await this.getCurrentRoutePaths();\n const moduleRootPaths = this.getRoutePathsWithoutChildSegments(currentRoutePaths, routes);\n return moduleRootPaths;\n }\n\n private async getCurrentRoutePaths(): Promise<string[]> {\n const rootPath = [''];\n const currentNavigation = this.router.getCurrentNavigation();\n\n if (!this.router.navigated && !currentNavigation) {\n // If router hasn't navigated yet and we are not in the middle of navigating, assume root:\n return rootPath;\n }\n\n if (currentNavigation) {\n // Wait for current navigation to finish:\n await this.navigationEndListener$.pipe(first()).toPromise();\n }\n\n let childRoute = this.route.snapshot.root;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n const currentBackdropRoutePath = childRoute.pathFromRoot.filter(\n (route) => route.outlet !== 'modal'\n );\n\n return rootPath.concat(\n ...currentBackdropRoutePath.map((route) =>\n route.url.filter((segment) => !!segment.path).map((segment) => segment.path)\n )\n );\n }\n\n private getRoutePathsWithoutChildSegments(routePaths: string[], routes: Routes): string[] {\n if (!routePaths.length) return routePaths;\n\n const matchedChildRoute = this.findChildRouteForUrl(routePaths.join('/'), routes);\n\n if (!matchedChildRoute) return routePaths;\n\n const startSlashRegex = /^\\//;\n const relativeChildRoute = matchedChildRoute.replace(startSlashRegex, '');\n const childSegmentCount = relativeChildRoute.split('/').length;\n const routePathsWithoutChildSegments = routePaths.slice(0, -childSegmentCount); // Remove child segments from end of route path array\n return routePathsWithoutChildSegments;\n }\n\n private findChildRouteForUrl(url: string, routes: Routes) {\n const moduleRelativePaths = this.getRoutePaths(routes, ['']).sort().reverse(); // Ensure child paths are evaluated first\n let matchedChildRoute = moduleRelativePaths.find((path) => url.endsWith(path));\n if (!matchedChildRoute) {\n // No static child route found matching current route - look for child route with url params:\n const exactMatch = false;\n matchedChildRoute = moduleRelativePaths.find(\n (path) =>\n path.includes('/:') && this.pathContainsChildRouteWithUrlParams(url, path, exactMatch)\n );\n }\n return matchedChildRoute;\n }\n\n private pathContainsChildRouteWithUrlParams(\n path: string,\n childRouteWithUrlParams: string,\n exactMatch: boolean\n ) {\n const pathSegments = path.split('/');\n const startSlashRegex = /^\\//;\n let childRouteToMatch = childRouteWithUrlParams;\n if (!exactMatch) {\n const relativeChildRoute = childRouteWithUrlParams.replace(startSlashRegex, '');\n childRouteToMatch = relativeChildRoute;\n }\n const childRouteSegments = childRouteToMatch.split('/');\n // Match each child route segment against url\n // Match backwards from end to start of child route, i.e. \"url ends with child route\":\n const pathContainsChildRoute = childRouteSegments.reverse().every((childRouteSegment) => {\n const pathSegment = pathSegments.pop();\n // url params (e.g. `/:id/`) are treated as a match:\n return childRouteSegment.startsWith(':') || childRouteSegment === pathSegment;\n });\n if (exactMatch) {\n // Only match if we've reached the start of the url to match against:\n return pathSegments.length === 0 && pathContainsChildRoute;\n }\n return pathContainsChildRoute;\n }\n\n private getRoutePaths(routes: Routes, parentPath: string[]): string[] {\n return Array.isArray(routes)\n ? ([] as string[]).concat(...routes.map((route) => this.getRoutePath(route, parentPath)))\n : [];\n }\n\n private getRoutePath(route: Route, parentPath: string[]): string[] {\n const routes: string[] = [];\n if (!!route.outlet) return routes; // Don't return relative paths for outlet routes\n\n const currentPath = [...parentPath];\n if (!!route.path) {\n currentPath.push(route.path);\n routes.push(currentPath.join('/'));\n }\n\n return routes.concat(this.getRoutePaths(route.children, currentPath));\n }\n\n private getModalRoutePath(route: Route, parentPath: string[]): string[] {\n const modalOutletName = 'modal';\n if (!!route.path && route.outlet === modalOutletName) {\n const modalOutletPath = `(${modalOutletName}:${route.path})`;\n const modalRoutePath = [...parentPath, modalOutletPath].join('/');\n return [modalRoutePath];\n }\n const currentPath = [...parentPath];\n if (!!route.path) {\n currentPath.push(route.path);\n }\n return ([] as string[]).concat(...this.getModalRoutePaths(route.children, currentPath));\n }\n\n private getModalRoutePaths(routes: Routes, parentPath: string[]): string[] {\n return Array.isArray(routes)\n ? ([] as string[]).concat(...routes.map((route) => this.getModalRoutePath(route, parentPath)))\n : [];\n }\n\n private isNewModalWindow(navigationEnd: NavigationEnd): boolean {\n const currentNavigation = this.router.getCurrentNavigation();\n if (!currentNavigation || !currentNavigation.previousNavigation) {\n return true;\n }\n const previousRoutePath = (\n currentNavigation.previousNavigation.finalUrl ||\n currentNavigation.previousNavigation.extractedUrl\n ).toString();\n const wasModalRoute = this.isModalRoute(previousRoutePath);\n const isModalRoute = this.isModalRoute(navigationEnd.urlAfterRedirects);\n if (!wasModalRoute && isModalRoute) {\n return true;\n }\n\n const currentModalRouteParent = navigationEnd.urlAfterRedirects.split('/(modal:')[0];\n const previousModalRouteParent = previousRoutePath.split('/(modal:')[0];\n\n return previousModalRouteParent !== currentModalRouteParent;\n }\n\n private navigationEndListener$ = this.router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd)\n );\n\n private async waitForCurrentThenGetNavigationEndStream(): Promise<Observable<NavigationEnd>> {\n if (this.router.getCurrentNavigation()) {\n const currentNavigationEnd = await this.navigationEndListener$.pipe(first()).toPromise();\n return this.navigationEndListener$.pipe(startWith(currentNavigationEnd));\n }\n return this.navigationEndListener$;\n }\n\n private modalRouteActivatedFor(\n navigationEnd$: Observable<NavigationEnd>,\n modalRouteSet: Set<string>,\n modalRoutesContainsUrlParams: boolean\n ): Observable<ModalRouteActivation> {\n return navigationEnd$.pipe(\n filter((navigationEnd) =>\n this.modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams)\n ),\n map((navigationEnd) => ({\n route: this.getCurrentActivatedRoute(),\n isNewModal: this.isNewModalWindow(navigationEnd),\n }))\n );\n }\n\n private modalRouteDeactivatedFor(\n navigationEnd$: Observable<NavigationEnd>,\n modalRouteSet: Set<string>,\n modalRoutesContainsUrlParams: boolean\n ): Observable<boolean> {\n return navigationEnd$.pipe(\n pairwise(),\n filter(([prevNavigation, _]) =>\n this.modalRouteSetContainsPath(modalRouteSet, prevNavigation, modalRoutesContainsUrlParams)\n ), // Only emit if previous route was modal\n map(([_, currentNavigation]) => {\n const isNewModalRoute = this.isModalRoute(currentNavigation.urlAfterRedirects);\n // Deactivate modal route if new route is NOT modal OR is outside current parent route:\n return !isNewModalRoute || this.isNewModalWindow(currentNavigation);\n }),\n filter((isDeactivation) => isDeactivation)\n );\n }\n\n private modalRouteSetContainsPath(\n modalRouteSet: Set<string>,\n navigationEnd: NavigationEnd,\n modalRoutesContainsUrlParams: boolean\n ) {\n const pathname = navigationEnd.urlAfterRedirects.split('?')[0];\n let hasRoute = modalRouteSet.has(pathname);\n if (!hasRoute && modalRoutesContainsUrlParams) {\n // Use `for ... of` instead of `forEach` so we can break out of the loop if route is found:\n for (let route of modalRouteSet) {\n const exactMatch = true;\n const routeMatchesPath = this.pathContainsChildRouteWithUrlParams(\n pathname,\n route,\n exactMatch\n );\n if (routeMatchesPath) {\n hasRoute = true;\n break;\n }\n }\n }\n return hasRoute;\n }\n\n async getModalNavigation(\n routeConfig: Routes[],\n moduleRootRoutePath?: string\n ): Promise<{ activated$: Observable<ModalRouteActivation>; deactivated$: Observable<boolean> }> {\n if (Array.isArray(routeConfig)) {\n const navigationEnd$ = await this.waitForCurrentThenGetNavigationEndStream();\n const modalRoutes = await this.getModalRoutes(routeConfig, moduleRootRoutePath);\n const hasModalRoutes = modalRoutes.length > 0;\n if (hasModalRoutes) {\n const modalRoutesContainsUrlParams = modalRoutes.some((route) => route.includes('/:'));\n const modalRouteSet = new Set(modalRoutes);\n const activated$ = this.modalRouteActivatedFor(\n navigationEnd$,\n modalRouteSet,\n modalRoutesContainsUrlParams\n );\n const deactivated$ = this.modalRouteDeactivatedFor(\n navigationEnd$,\n modalRouteSet,\n modalRoutesContainsUrlParams\n );\n return { activated$, deactivated$ };\n }\n }\n return { activated$: EMPTY, deactivated$: EMPTY };\n }\n\n async navigateToModal(path: string | string[], queryParams?: Params): Promise<boolean> {\n const commands = Array.isArray(path) ? path : path.split('/');\n const childPath = commands.pop();\n const result = await this.router.navigate([...commands, { outlets: { modal: [childPath] } }], {\n queryParams,\n relativeTo: this.getCurrentActivatedRoute(),\n });\n return result;\n }\n\n async navigateWithinModal(relativePath: string, queryParams?: Params): Promise<boolean> {\n return this.router.navigate([relativePath], {\n queryParams,\n relativeTo: this.getCurrentActivatedRoute(),\n });\n }\n\n async navigateOutOfModalOutlet(): Promise<boolean> {\n let result = Promise.resolve(true);\n const currentActivatedRoute = this.getCurrentActivatedRoute();\n if (currentActivatedRoute.outlet === 'modal') {\n const parentRoute = this.getBackdropRoute(currentActivatedRoute);\n result = this.router.navigate(['./'], {\n relativeTo: parentRoute,\n });\n }\n return result;\n }\n\n private getBackdropRoute(currentActivatedRoute: ActivatedRoute) {\n let parentRoute = currentActivatedRoute.parent;\n while (parentRoute && !parentRoute.component && !!parentRoute.parent) {\n parentRoute = parentRoute.parent;\n }\n return parentRoute;\n }\n}\n","import { ActivatedRoute } from '@angular/router';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\n\nexport interface OverlayEventDetail<T = any> {\n data?: T;\n role?: string;\n}\n\nexport interface Overlay {\n dismiss: (data?: any) => Promise<boolean>;\n onWillDismiss: Promise<OverlayEventDetail>;\n onDidDismiss: Promise<OverlayEventDetail>;\n}\n\nexport interface ModalRouteActivation {\n route: ActivatedRoute;\n isNewModal: boolean;\n}\n\nexport abstract class Modal {\n didPresent: Promise<void>;\n willClose: Promise<void>;\n close: (data?: any) => Promise<void>;\n scrollToTop: (scrollDuration?: KirbyAnimation.Duration) => void;\n scrollToBottom: (scrollDuration?: KirbyAnimation.Duration) => void;\n scrollDisabled: boolean;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const COMPONENT_PROPS = new InjectionToken<string>('componentProps');\n","import { Component, ElementRef, HostListener, Injector, Input, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { WindowRef } from '../../../../types/window-ref';\nimport { Modal } from '../../services/modal.interfaces';\nimport { ModalConfig } from '../config/modal-config';\nimport { COMPONENT_PROPS } from '../config/modal-config.helper';\n\n@Component({\n selector: 'kirby-modal-compact-wrapper',\n templateUrl: './modal-compact-wrapper.component.html',\n styleUrls: ['./modal-compact-wrapper.component.scss'],\n providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }],\n // tslint:disable-next-line: no-host-metadata-property\n host: { '[class.ion-page]': 'false' }, //Ensure ion-page class doesn't get applied by Ionic Modal Controller\n})\nexport class ModalCompactWrapperComponent implements Modal, OnInit {\n scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n scrollDisabled = false;\n @Input() config: ModalConfig;\n componentPropsInjector: Injector;\n\n private ionModalElement: HTMLIonModalElement;\n private readonly ionModalDidPresent = new Subject<void>();\n private readonly ionModalWillDismiss = new Subject<void>();\n readonly didPresent = this.ionModalDidPresent.toPromise();\n readonly willClose = this.ionModalWillDismiss.toPromise();\n\n constructor(\n private injector: Injector,\n private elementRef: ElementRef<HTMLElement>,\n private windowRef: WindowRef\n ) {}\n\n ngOnInit(): void {\n this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n this.listenForIonModalDidPresent();\n this.listenForIonModalWillDismiss();\n this.componentPropsInjector = Injector.create({\n providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n parent: this.injector,\n });\n }\n\n private listenForIonModalDidPresent() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n this.ionModalDidPresent.next();\n this.ionModalDidPresent.complete();\n });\n }\n }\n\n private listenForIonModalWillDismiss() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n this.ionModalWillDismiss.next();\n this.ionModalWillDismiss.complete();\n });\n }\n }\n\n async close(data?: any): Promise<void> {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n if (ionModalElement) {\n await ionModalElement.dismiss(data);\n }\n }\n\n scrollToTop: (_?: any) => void;\n scrollToBottom: (_?: any) => void;\n\n @HostListener('window:focus')\n @HostListener('window:focusout')\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n}\n","<ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n></ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nimport { WindowRef } from '../types/window-ref';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PlatformService {\n constructor(private windowRef: WindowRef) {}\n\n isTouch() {\n const isTouchDeviceQuery = '(pointer: coarse)'; // No check for `hover: none`, as Samsung Galaxy will return false on `hover: none` media query\n return this.windowRef.nativeWindow.matchMedia(isTouchDeviceQuery).matches;\n }\n\n isPhabletOrBigger() {\n const query = `(min-width: ${DesignTokenHelper.breakpoints.medium})`;\n return this.windowRef.nativeWindow.matchMedia(query).matches;\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n HostBinding,\n HostListener,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n QueryList,\n Renderer2,\n RendererStyleFlags2,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { ActivatedRoute, RouterOutlet } from '@angular/router';\nimport { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { debounceTime, first, takeUntil } from 'rxjs/operators';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { PlatformService } from '../../../helpers/platform.service';\nimport { WindowRef } from '../../../types/window-ref';\nimport { ButtonComponent } from '../../button/button.component';\nimport { ResizeObserverService } from '../../shared/resize-observer/resize-observer.service';\nimport { ResizeObserverEntry } from '../../shared/resize-observer/types/resize-observer-entry';\nimport { Modal } from '../services/modal.interfaces';\n\nimport { ModalConfig } from './config/modal-config';\nimport { COMPONENT_PROPS } from './config/modal-config.helper';\n\n@Component({\n selector: 'kirby-modal-wrapper',\n templateUrl: './modal-wrapper.component.html',\n styleUrls: ['./modal-wrapper.component.scss'],\n providers: [{ provide: Modal, useExisting: ModalWrapperComponent }],\n})\nexport class ModalWrapperComponent implements Modal, AfterViewInit, OnInit, OnDestroy {\n @HostBinding('class.collapsible-title')\n get _hasCollapsibleTitle() {\n return !!this.config?.collapseTitle;\n }\n\n static readonly KEYBOARD_HIDE_DELAY_IN_MS = 100;\n\n scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n private readonly VIEWPORT_RESIZE_DEBOUNCE_TIME = 100;\n\n set scrollDisabled(disabled: boolean) {\n this.ionContent.scrollY = !disabled;\n }\n\n @Input() config: ModalConfig;\n componentPropsInjector: Injector;\n\n @ViewChildren(ButtonComponent, { read: ElementRef }) private toolbarButtonsQuery: QueryList<\n ElementRef<HTMLButtonElement>\n >;\n @ViewChild(IonContent, { static: true }) private ionContent: IonContent;\n @ViewChild(IonContent, { static: true, read: ElementRef })\n private ionContentElement: ElementRef<HTMLIonContentElement>;\n @ViewChild(IonHeader, { static: true, read: ElementRef })\n private ionHeaderElement: ElementRef<HTMLIonHeaderElement>;\n @ViewChild(IonToolbar, { static: true, read: ElementRef })\n private ionToolbarElement: ElementRef<HTMLIonToolbarElement>;\n @ViewChild(IonTitle, { static: true, read: ElementRef })\n private ionTitleElement: ElementRef<HTMLIonTitleElement>;\n @ViewChild(RouterOutlet, { static: true }) private routerOutlet: RouterOutlet;\n\n @ViewChild('contentTitle', { read: ElementRef })\n private contentTitle: ElementRef<HTMLElement>;\n\n private keyboardVisible = false;\n private toolbarButtons: HTMLButtonElement[] = [];\n private delayedClose = () => {};\n private delayedCloseTimeoutId;\n private initialViewportHeight: number;\n private viewportResized = false;\n private ionModalElement?: HTMLIonModalElement;\n private readonly ionModalDidPresent = new Subject<void>();\n readonly didPresent = this.ionModalDidPresent.toPromise();\n private readonly ionModalWillDismiss = new Subject<void>();\n readonly willClose = this.ionModalWillDismiss.toPromise();\n private viewportResize = new Subject<void>();\n private viewportResize$ = this.viewportResize\n .asObservable()\n .pipe(debounceTime(this.VIEWPORT_RESIZE_DEBOUNCE_TIME));\n private _mutationObserver: MutationObserver;\n private get mutationObserver(): MutationObserver {\n if (!this._mutationObserver) {\n this._mutationObserver = this.createEmbeddedElementsMutationObserver();\n }\n return this._mutationObserver;\n }\n private _intersectionObserver: IntersectionObserver;\n private get intersectionObserver(): IntersectionObserver {\n if (!this._intersectionObserver) {\n this._intersectionObserver = this.createModalWrapperIntersectionObserver();\n }\n return this._intersectionObserver;\n }\n private destroy$ = new Subject();\n\n @HostBinding('class.drawer')\n get _isDrawer() {\n return this.config.flavor === 'drawer';\n }\n\n willClose$ = this.ionModalWillDismiss.pipe(first());\n\n constructor(\n private injector: Injector,\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private zone: NgZone,\n private resizeObserverService: ResizeObserverService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private windowRef: WindowRef,\n private platform: PlatformService\n ) {\n this.setViewportHeight();\n this.observeViewportResize();\n }\n\n ngOnInit(): void {\n this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n this.initializeSizing();\n this.initializeModalRoute();\n this.listenForIonModalDidPresent();\n this.listenForIonModalWillDismiss();\n this.initializeResizeModalToModalWrapper();\n this.componentPropsInjector = Injector.create({\n providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n parent: this.injector,\n });\n }\n\n private initializeResizeModalToModalWrapper() {\n if (this.config.flavor === 'drawer' && this.config.interactWithBackground) {\n merge(this.ionModalDidPresent, this.viewportResize$)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n // wait for template to render\n setTimeout(() => {\n const domRect = this.elementRef.nativeElement.getBoundingClientRect();\n const document = this.windowRef.nativeWindow.document.documentElement;\n const right = document.clientWidth - domRect.right;\n this.renderer.setStyle(this.ionModalElement, 'top', `${domRect.top}px`);\n this.renderer.setStyle(this.ionModalElement, 'left', `${domRect.left}px`);\n this.renderer.setStyle(this.ionModalElement, 'right', `${right}px`);\n });\n });\n }\n }\n\n private initializeSizing() {\n if (this.config.size === 'full-height') return;\n this.patchScrollElementSize();\n this.observeHeaderResize();\n this.observeModalFullHeight();\n }\n\n private initializeModalRoute() {\n if (this.config.modalRoute) {\n this.onSiblingModalRouteActivated(this.config.siblingModalRouteActivated$);\n // Load component from modal-route inside router-outlet:\n this.routerOutlet.activateWith(this.config.modalRoute, this.componentFactoryResolver);\n }\n }\n\n private onSiblingModalRouteActivated(siblingModalRouteActivated$?: Observable<ActivatedRoute>) {\n if (!siblingModalRouteActivated$) return;\n siblingModalRouteActivated$.pipe(takeUntil(this.willClose$)).subscribe((route) => {\n if (this.routerOutlet.isActivated) {\n this.mutationObserver.disconnect();\n this.routerOutlet.deactivate();\n this.clearEmbeddedElements();\n }\n this.routerOutlet.activateWith(route, this.componentFactoryResolver);\n this.checkForEmbeddedElements();\n });\n }\n\n private patchScrollElementSize(): void {\n const supportsCssShadowParts = 'part' in HTMLElement.prototype;\n if (supportsCssShadowParts) return;\n this.ionContent.getScrollElement().then((scrollElement) => {\n this.renderer.setStyle(scrollElement, 'height', '100%');\n this.renderer.setStyle(scrollElement, 'position', 'relative');\n if (this.config.flavor === 'drawer') {\n this.renderer.setStyle(\n scrollElement,\n 'transition',\n 'padding-bottom ' + DesignTokenHelper.softKeyboardTransitionLeave\n );\n }\n });\n }\n\n private observeModalFullHeight() {\n const ionModalWrapper = this.elementRef.nativeElement.closest<HTMLElement>('.modal-wrapper');\n if (!ionModalWrapper) return;\n // Start observing when modal has finished animating:\n this.didPresent.then(() => {\n this.intersectionObserver.observe(ionModalWrapper);\n });\n }\n\n ngAfterViewInit(): void {\n if (this.toolbarButtonsQuery) {\n this.toolbarButtons = this.toolbarButtonsQuery.map((buttonRef) => buttonRef.nativeElement);\n }\n this.checkForEmbeddedElements();\n }\n\n private checkForEmbeddedElements() {\n this.moveEmbeddedElements();\n this.observeEmbeddedElements();\n }\n\n private observeHeaderResize() {\n this.resizeObserverService.observe(this.ionHeaderElement.nativeElement, (entry) => {\n const [property, pixelValue] = ['--header-height', `${entry.contentRect.height}px`];\n this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n });\n }\n\n private moveEmbeddedElements() {\n const parentElement = this.getEmbeddedComponentElement();\n if (parentElement) {\n Object.entries(this.elementToParentMap).forEach(([tagName, getNewParent]) => {\n const embeddedElement = parentElement.querySelector<HTMLElement>(tagName);\n if (embeddedElement) {\n this.moveChild(embeddedElement, getNewParent());\n }\n });\n }\n }\n\n private listenForIonModalDidPresent() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n this.ionModalDidPresent.next();\n this.ionModalDidPresent.complete();\n });\n }\n }\n\n private listenForIonModalWillDismiss() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n this.ionModalWillDismiss.next();\n this.ionModalWillDismiss.complete();\n });\n }\n }\n\n scrollToTop(scrollDuration?: KirbyAnimation.Duration) {\n this.ionContent.scrollToTop(scrollDuration || 0);\n }\n\n scrollToBottom(scrollDuration?: KirbyAnimation.Duration) {\n this.ionContent.scrollToBottom(scrollDuration || 0);\n }\n\n async close(data?: any): Promise<void> {\n if (!this.ionModalElement) {\n return;\n }\n if (!this.keyboardVisible || !this.viewportResized) {\n // No keyboard visible or viewport not resized:\n // Dismiss modal and return:\n clearTimeout(this.delayedCloseTimeoutId);\n await this.ionModalElement.dismiss(data);\n return;\n }\n\n // Keyboard visible:\n // Blur active element and wait for keyboard to hide,\n // then dismiss modal and return:\n this.blurActiveElement();\n return new Promise<void>((resolve) => {\n this.delayedClose = async () => {\n await this.ionModalElement.dismiss(data);\n resolve();\n };\n this.delayedCloseTimeoutId = setTimeout(\n this.delayedClose,\n ModalWrapperComponent.KEYBOARD_HIDE_DELAY_IN_MS\n );\n });\n }\n\n @HostListener('window:focus')\n @HostListener('window:focusout')\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n\n @HostListener('window:ionKeyboardDidShow', ['$event.detail.keyboardHeight'])\n @HostListener('window:keyboardWillShow', ['$event.keyboardHeight'])\n _onKeyboardShow(keyboardHeight: number) {\n this.setKeyboardVisibility(keyboardHeight);\n }\n\n @HostListener('window:ionKeyboardDidHide')\n @HostListener('window:keyboardWillHide')\n _onKeyboardHide() {\n this.setKeyboardVisibility(0);\n }\n\n private toggleContentMaxHeight(freeze: boolean) {\n const shouldToggleMaxHeight =\n this.config.flavor === 'modal' && this.platform.isPhabletOrBigger();\n if (!shouldToggleMaxHeight) return;\n const style = 'max-height';\n const contentElement = this.ionContentElement.nativeElement;\n this.zone.run(() => {\n if (freeze) {\n const contentHeight = contentElement.offsetHeight;\n this.renderer.setStyle(contentElement, style, `${contentHeight}px`);\n } else {\n this.renderer.removeStyle(contentElement, style);\n }\n });\n }\n\n private setKeyboardVisibility(keyboardHeight: number) {\n const keyboardAlreadyVisible = keyboardHeight > 0 && this.keyboardVisible;\n const keyboardAlreadyHidden = keyboardHeight === 0 && !this.keyboardVisible;\n if (keyboardAlreadyVisible || keyboardAlreadyHidden) return;\n this.keyboardVisible = keyboardHeight > 0;\n this.toggleContentMaxHeight(this.keyboardVisible);\n this.setKeyboardOverlap(keyboardHeight);\n }\n\n private getKeyboardOverlap(keyboardHeight: number, element: Element) {\n if (keyboardHeight <= 0 || !element) return 0;\n const distanceFromViewportBottomToElement = Math.floor(\n this.windowRef.nativeWindow.innerHeight - element.getBoundingClientRect().bottom\n );\n return Math.max(keyboardHeight - distanceFromViewportBottomToElement, 0);\n }\n\n private setCssVar(element: Element, property: string, value: string) {\n this.zone.run(() =>\n this.renderer.setStyle(element, property, value, RendererStyleFlags2.DashCase)\n );\n }\n\n private toggleCssClass(element: Element, klass: string, condition: boolean) {\n this.zone.run(() =>\n condition ? this.renderer.addClass(element, klass) : this.renderer.removeClass(element, klass)\n );\n }\n\n private setKeyboardOverlap(keyboardHeight: number) {\n this.toggleCssClass(this.elementRef.nativeElement, 'keyboard-visible', keyboardHeight > 0);\n const keyboardOverlap = this.getKeyboardOverlap(keyboardHeight, this.elementRef.nativeElement);\n let snapFooterToKeyboard = false;\n const embeddedFooterElement = this.getEmbeddedFooterElement();\n if (embeddedFooterElement) {\n this.setCssVar(embeddedFooterElement, '--keyboard-offset', `${keyboardOverlap}px`);\n snapFooterToKeyboard = embeddedFooterElement.classList.contains('snap-to-keyboard');\n }\n\n const contentElement = this.ionContentElement.nativeElement;\n const contentKeyboardOffset = snapFooterToKeyboard\n ? keyboardOverlap\n : this.getKeyboardOverlap(keyboardHeight, contentElement);\n this.setCssVar(contentElement, '--keyboard-offset', `${contentKeyboardOffset}px`);\n }\n\n onHeaderTouchStart(event: TouchEvent) {\n if (this.keyboardVisible) {\n const isToolbarButtonTouch = this.toolbarButtons.some((button) => {\n return (\n event.target instanceof HTMLElement &&\n (event.target === button || button.contains(event.target))\n );\n });\n // Prevent blur if event target is a toolbar button\n // (to allow tap event to fire):\n if (!isToolbarButtonTouch) {\n this.blurActiveElement();\n }\n }\n }\n\n @HostListener('window:resize')\n _onWindowResize() {\n this.setViewportHeight();\n }\n\n private setViewportHeight() {\n const vh = (this.windowRef.nativeWindow.innerHeight * 0.01).toFixed(2);\n this.setCssVar(this.elementRef.nativeElement, '--vh', `${vh}px`);\n }\n\n private observeViewportResize() {\n this.resizeObserverService.observe(this.windowRef.nativeWindow.document.body, (entry) =>\n this.onViewportResize(entry)\n );\n }\n\n private onViewportResize(entry: ResizeObserverEntry) {\n if (!this.initialViewportHeight) {\n // Initial observe callback, register initial height:\n this.initialViewportHeight = entry.contentRect.height;\n return;\n }\n this.viewportResized = entry.contentRect.height !== this.initialViewportHeight;\n if (!this.viewportResized) {\n // We are back to initial view port height, check for pending close func:\n if (this.delayedCloseTimeoutId) {\n clearTimeout(this.delayedCloseTimeoutId);\n this.delayedClose();\n }\n }\n this.viewportResize.next();\n }\n\n blurActiveElement() {\n const BLUR_TARGET_SELECTOR = 'input, textarea';\n if (this.keyboardVisible) {\n if (\n document.activeElement instanceof HTMLElement &&\n document.activeElement.matches(BLUR_TARGET_SELECTOR)\n ) {\n document.activeElement.blur();\n }\n }\n }\n\n private readonly elementToParentMap: { [key: string]: () => HTMLElement[] } = {\n 'KIRBY-MODAL-FOOTER': () => [this.elementRef.nativeElement],\n 'KIRBY-PAGE-TITLE': () =>\n [this.ionTitleElement.nativeElement, this.contentTitle?.nativeElement].filter(\n (element) => element !== undefined\n ),\n 'KIRBY-PAGE-PROGRESS': () => [this.ionToolbarElement.nativeElement],\n };\n\n private clearEmbeddedElements() {\n Object.entries(this.elementToParentMap).forEach(([tagName, getParents]) => {\n const newParents = getParents();\n newParents.forEach((newParent) => {\n const embeddedElement = newParent.querySelector<HTMLElement>(`:scope > ${tagName}`);\n this.removeChild(embeddedElement);\n });\n });\n }\n\n /* TODO: Rewrite to make this function independent of element order. \n See: https://github.com/kirbydesign/designsystem/issues/2096\n */\n private getEmbeddedComponentElement(): null | Element {\n const contentElementChildren = Array.from(\n this.ionContentElement.nativeElement.children\n ).reverse(); // Reverse makes it easier to retrieve the last children in the list\n\n const embeddedComponentElement = !!this.config.modalRoute\n ? contentElementChildren[0]\n : contentElementChildren[1];\n\n /* \n As ModalConfig.component has type 'any' all values are valid for component; \n explicitly handle the case where no embedded component element is found due to \n this.\n */\n if (!embeddedComponentElement) return null;\n return embeddedComponentElement;\n }\n\n private getEmbeddedFooterElement() {\n return this.elementRef.nativeElement.querySelector<HTMLElement>('kirby-modal-footer');\n }\n\n private moveChild(child: Element, newParents: Element[]) {\n this.renderer.removeChild(child.parentElement, child);\n\n newParents.forEach((newParent, index) => {\n const childToAppend = index > 0 ? child.cloneNode(true) : child;\n this.renderer.appendChild(newParent, childToAppend);\n // Append adds child as last element of parent; therefore retrieve with lastElementChild\n const childElement = newParent.lastElementChild;\n\n if (childElement.tagName === 'KIRBY-MODAL-FOOTER') {\n this.resizeObserverService.observe(childElement, (entry) => {\n const [property, pixelValue] = [\n '--footer-height',\n `${Math.floor(entry.contentRect.height)}px`,\n ];\n this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n });\n }\n });\n }\n\n private removeChild(child?: Element) {\n if (!!child) {\n this.renderer.removeChild(child.parentElement, child);\n }\n }\n\n private observeEmbeddedElements() {\n const parentElement = this.getEmbeddedComponentElement();\n if (parentElement === null) return; // Mute observe warning when parentElement is null\n\n this.mutationObserver.observe(parentElement, {\n childList: true, // Listen for addition or removal of child nodes\n });\n }\n\n private createEmbeddedElementsMutationObserver(): MutationObserver {\n const observedElements = Object.keys(this.elementToParentMap);\n const callback = (mutations: MutationRecord[]) => {\n const addedNodes = mutations\n .filter((mutation) => mutation.type === 'childList') // Filter for mutation to the tree of nodes\n .map((mutation) => {\n // Only check for addedNodes as removal is handled by the Angular renderer:\n return Array.from(mutation.addedNodes).filter((node) =>\n observedElements.includes(node.nodeName)\n );\n });\n\n const addedElements = Array.prototype\n .concat(...addedNodes)\n .filter((node): node is HTMLElement => node instanceof HTMLElement);\n\n addedElements.forEach((addedElement) => {\n const newParentElement = this.elementToParentMap[addedElement.nodeName]();\n // Move embedded element out of content and append to new parent:\n this.moveChild(addedElement, newParentElement);\n });\n };\n return new MutationObserver(callback);\n }\n\n private createModalWrapperIntersectionObserver(): IntersectionObserver {\n const callback: IntersectionObserverCallback = (entries) => {\n const entry = entries[0];\n const isTouchingViewport = entry.intersectionRatio < 1;\n if (isTouchingViewport) {\n this.renderer.addClass(entry.target, 'full-height');\n } else {\n this.renderer.removeClass(entry.target, 'full-height');\n }\n };\n\n // Set explicit viewport root if within iframe:\n const root = this.windowRef.nativeWindow.frameElement\n ? (this.windowRef.nativeWindow.document as any) // Cast to `any` as Typescript lib.d.ts doesnt support Document type yet\n : undefined;\n const options: IntersectionObserverInit = {\n rootMargin: '0px 0px -1px 0px', // `bottom: -1px` allows checking when the modal bottom is touching the viewport\n root,\n threshold: [0.99, 1],\n };\n\n return new IntersectionObserver(callback, options);\n }\n\n ngOnDestroy() {\n if (this.routerOutlet.isActivated) {\n this.routerOutlet.deactivate();\n }\n //clean up the observer\n this.mutationObserver.disconnect();\n delete this._mutationObserver;\n this.intersectionObserver.disconnect();\n delete this._intersectionObserver;\n if (this.resizeObserverService) {\n this.resizeObserverService.unobserve(this.windowRef.nativeWindow.document.body);\n this.resizeObserverService.unobserve(this.ionHeaderElement.nativeElement);\n this.resizeObserverService.unobserve(this.getEmbeddedFooterElement());\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<ion-header (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons slot=\"start\" *ngIf=\"config.flavor === 'drawer'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"config.flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\">\n <ng-container\n *ngTemplateOutlet=\"supplementaryButton; context: { btn: config.drawerSupplementaryAction }\"\n ></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"true\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"4\" size=\"sm\" (click)=\"close()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n\n<ng-template #supplementaryButton let-btn=\"btn\">\n <button kirby-button attentionLevel=\"2\" size=\"sm\" (click)=\"btn.action($event)\">\n <kirby-icon [name]=\"btn.iconName\"></kirby-icon>\n </button>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { Animation, AnimationBuilder, AnimationController } from '@ionic/angular';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { PlatformService } from '../../../helpers/platform.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalAnimationBuilderService {\n constructor(private animationCtrl: AnimationController, private platform: PlatformService) {}\n\n private readonly easingEnter = KirbyAnimation.Easing.modal.enter;\n private readonly easingLeave = KirbyAnimation.Easing.modal.exit;\n private readonly duration = KirbyAnimation.Duration.LONG;\n private readonly SwipeToCloseDefaults = {\n MIN_PRESENTING_SCALE: 0.93,\n };\n\n public enterAnimation(currentBackdrop?: HTMLIonBackdropElement): AnimationBuilder {\n return (baseEl: HTMLElement, presentingEl?: HTMLElement): Animation => {\n const backdropAnimation = this.animationCtrl\n .create()\n .addElement(baseEl.querySelector('ion-backdrop')!)\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .beforeStyles({\n 'pointer-events': 'none',\n })\n .afterClearStyles(['pointer-events']);\n\n const wrapperAnimation = this.animationCtrl\n .create()\n .addElement(baseEl.querySelectorAll('.modal-wrapper, .modal-shadow')!)\n .beforeStyles({ opacity: 1 })\n .fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');\n\n const baseAnimation = this.animationCtrl\n .create()\n .addElement(baseEl)\n .easing(this.easingEnter)\n .duration(this.duration)\n .addAnimation(wrapperAnimation);\n\n let currentBackdropAnimation: Animation;\n if (currentBackdrop) {\n currentBackdropAnimation = this.animationCtrl\n .create()\n .addElement(currentBackdrop)\n .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);\n }\n\n if (presentingEl) {\n const isMobile = !this.platform.isPhabletOrBigger();\n const hasCardModal =\n presentingEl.tagName === 'ION-MODAL' &&\n (presentingEl as HTMLIonModalElement).presentingElement !== undefined;\n\n const presentingAnimation = this.animationCtrl.create().beforeStyles({\n transform: 'translateY(0)',\n 'transform-origin': 'top center',\n overflow: 'hidden',\n });\n\n const bodyEl = document.body;\n\n if (isMobile) {\n /**\n * Fallback for browsers that does not support `max()` (ex: Firefox)\n * No need to worry about statusbar padding since engines like Gecko\n * are not used as the engine for standlone Cordova/Capacitor apps\n */\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n ? '30px'\n : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))\n .addElement(presentingEl)\n .keyframes([\n {\n offset: 0,\n filter: 'contrast(1)',\n transform: 'translateY(0px) scale(1)',\n borderRadius: '0px',\n },\n {\n offset: 1,\n filter: 'contrast(0.85)',\n transform: finalTransform,\n borderRadius: '10px 10px 0 0',\n },\n ]);\n baseAnimation.addAnimation(presentingAnimation);\n } else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '0', '1');\n } else {\n const toPresentingScale = hasCardModal\n ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingEl.querySelector('.modal-wrapper')!)\n .keyframes([\n { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },\n ]);\n\n const shadowAnimation = this.animationCtrl\n .create()\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingEl.querySelector('.modal-shadow')!)\n .keyframes([\n { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },\n { offset: 1, opacity: '0', transform: finalTransform },\n ]);\n\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n } else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n }\n\n return baseAnimation;\n };\n }\n\n public leaveAnimation(currentBackdrop?: HTMLIonBackdropElement): AnimationBuilder {\n return (baseEl: HTMLElement, presentingEl?: HTMLElement): Animation => {\n const backdropAnimation = this.animationCtrl\n .create()\n .addElement(baseEl.querySelector('ion-backdrop')!)\n .fromTo('opacity', 'var(--backdrop-opacity)', 0.0);\n\n const wrapperAnimation = this.animationCtrl\n .create()\n .addElement(baseEl.querySelectorAll('.modal-wrapper, .modal-shadow')!)\n .beforeStyles({ opacity: 1 })\n .fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');\n\n const baseAnimation = this.animationCtrl\n .create()\n .addElement(baseEl)\n .easing(this.easingLeave)\n .duration(this.duration)\n .addAnimation(wrapperAnimation);\n\n let currentBackdropAnimation: Animation;\n if (currentBackdrop) {\n currentBackdropAnimation = this.animationCtrl\n .create()\n .addElement(currentBackdrop)\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .afterStyles({ opacity: 'var(--backdrop-opacity)' }); //Ensures backdrop is reset to default opacity after swipe to close\n }\n\n if (presentingEl) {\n const isMobile = !this.platform.isPhabletOrBigger();\n const hasCardModal =\n presentingEl.tagName === 'ION-MODAL' &&\n (presentingEl as HTMLIonModalElement).presentingElement !== undefined;\n\n const presentingAnimation = this.animationCtrl\n .create()\n .beforeClearStyles(['transform'])\n .afterClearStyles(['transform'])\n .onFinish((currentStep) => {\n // only reset background color if this is the last card-style modal\n if (currentStep !== 1) {\n return;\n }\n\n presentingEl.style.setProperty('overflow', '');\n\n const numModals = Array.from(bodyEl.querySelectorAll('ion-modal')).filter(\n (m) => m.presentingElement !== undefined\n ).length;\n if (numModals <= 1) {\n bodyEl.style.setProperty('background-color', '');\n }\n });\n\n const bodyEl = document.body;\n\n if (isMobile) {\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n ? '30px'\n : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n\n presentingAnimation.addElement(presentingEl).keyframes([\n {\n offset: 0,\n filter: 'contrast(0.85)',\n transform: finalTransform,\n borderRadius: '10px 10px 0 0',\n },\n {\n offset: 1,\n filter: 'contrast(1)',\n transform: 'translateY(0px) scale(1)',\n borderRadius: '0px',\n },\n ]);\n\n baseAnimation.addAnimation(presentingAnimation);\n } else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '1', '0');\n } else {\n const toPresentingScale = hasCardModal\n ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n\n presentingAnimation\n .addElement(presentingEl.querySelector('.modal-wrapper')!)\n .afterStyles({\n transform: 'translate3d(0, 0, 0)',\n })\n .keyframes([\n { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },\n { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n ]);\n\n const shadowAnimation = this.animationCtrl\n .create()\n .addElement(presentingEl.querySelector('.modal-shadow')!)\n .afterStyles({\n transform: 'translateY(0) scale(1)',\n })\n .keyframes([\n { offset: 0, opacity: '0', transform: finalTransform },\n { offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },\n ]);\n\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n } else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n }\n\n return baseAnimation;\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { WindowRef } from '../../../types/window-ref';\nimport { ModalCompactWrapperComponent } from '../modal-wrapper/compact/modal-compact-wrapper.component';\nimport { ModalConfig, ModalFlavor, ModalSize } from '../modal-wrapper/config/modal-config';\nimport { ModalWrapperComponent } from '../modal-wrapper/modal-wrapper.component';\n\nimport { ModalAnimationBuilderService } from './modal-animation-builder.service';\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ModalHelper {\n // TODO: Make presentingElement an instance field when\n // forRoot()/singleton services has been solved:\n private static presentingElement: HTMLElement = undefined;\n\n constructor(\n private ionicModalController: ModalController,\n private modalAnimationBuilder: ModalAnimationBuilderService,\n private windowRef: WindowRef\n ) {}\n\n public async showModalWindow(config: ModalConfig): Promise<Overlay> {\n config.flavor = config.flavor || 'modal';\n const modalPresentingElement = await this.getPresentingElement(config.flavor);\n\n let currentBackdrop: HTMLIonBackdropElement;\n const topMostModal = await this.ionicModalController.getTop();\n if (topMostModal) {\n currentBackdrop = topMostModal.querySelector<HTMLIonBackdropElement>('ion-backdrop');\n }\n\n const enterAnimation = this.modalAnimationBuilder.enterAnimation(currentBackdrop);\n const leaveAnimation = this.modalAnimationBuilder.leaveAnimation(currentBackdrop);\n\n const defaultModalSize: ModalSize = config.flavor === 'modal' ? 'medium' : null;\n const modalSize = config.size || defaultModalSize;\n const allow_scroll_class = 'allow-background-scroll';\n\n let customCssClasses = [];\n if (config.cssClass) {\n customCssClasses = Array.isArray(config.cssClass) ? config.cssClass : [config.cssClass];\n }\n\n if (config.interactWithBackground) {\n this.windowRef.nativeWindow.document.body.classList.add(allow_scroll_class);\n }\n\n const ionModal = await this.ionicModalController.create({\n component: config.flavor === 'compact' ? ModalCompactWrapperComponent : ModalWrapperComponent,\n cssClass: [\n 'kirby-overlay',\n 'kirby-modal',\n config.flavor === 'drawer' ? 'kirby-drawer' : null,\n config.flavor === 'compact' ? 'kirby-modal-compact' : null,\n 'kirby-modal-' + modalSize,\n config.interactWithBackground ? 'interact-with-background' : null,\n ...customCssClasses,\n ],\n backdropDismiss: config.flavor === 'compact' || config.interactWithBackground ? false : true,\n showBackdrop: !config.interactWithBackground,\n componentProps: { config: config },\n swipeToClose: config.flavor != 'compact',\n presentingElement: modalPresentingElement,\n keyboardClose: false,\n enterAnimation,\n leaveAnimation,\n });\n\n if (config.interactWithBackground) {\n ionModal.onDidDismiss().then(() => {\n this.windowRef.nativeWindow.document.body.classList.remove(allow_scroll_class);\n });\n }\n\n await ionModal.present();\n\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n\n public registerPresentingElement(element: HTMLElement) {\n ModalHelper.presentingElement = element;\n }\n\n private async getPresentingElement(flavor?: ModalFlavor) {\n let modalPresentingElement: HTMLElement = undefined;\n if (!flavor || flavor === 'modal') {\n const topMostModal = await this.ionicModalController.getTop();\n if (!topMostModal) {\n modalPresentingElement = ModalHelper.presentingElement;\n } else if (\n !topMostModal.classList.contains('kirby-drawer') &&\n !topMostModal.classList.contains('kirby-modal-compact')\n ) {\n modalPresentingElement = topMostModal;\n }\n }\n return modalPresentingElement;\n }\n\n public async scrollToTop(\n noModalRegisteredErrorMessage: string,\n duration?: KirbyAnimation.Duration\n ) {\n const modal = await this.ionicModalController.getTop();\n if (!modal || !(modal.component instanceof ModalWrapperComponent)) {\n throw new Error(noModalRegisteredErrorMessage);\n }\n modal.component.scrollToTop(duration);\n }\n\n public async scrollToBottom(\n noModalRegisteredErrorMessage: string,\n duration?: KirbyAnimation.Duration\n ) {\n const modal = await this.ionicModalController.getTop();\n if (!modal || !(modal.component instanceof ModalWrapperComponent)) {\n throw new Error(noModalRegisteredErrorMessage);\n }\n modal.component.scrollToBottom(duration);\n }\n}\n","import { Inject, Injectable, OnDestroy, Optional } from '@angular/core';\nimport { ActivatedRoute, Params, Routes, ROUTES } from '@angular/router';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { ActionSheetConfig } from '../action-sheet/config/action-sheet-config';\nimport { AlertConfig } from '../alert/config/alert-config';\nimport { ModalConfig } from '../modal-wrapper/config/modal-config';\n\nimport { ActionSheetHelper } from './action-sheet.helper';\nimport { AlertHelper } from './alert.helper';\nimport { ModalNavigationService } from './modal-navigation.service';\nimport { ModalHelper } from './modal.helper';\nimport { ModalRouteActivation, Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ModalController implements OnDestroy {\n private overlays: Overlay[] = [];\n private readonly noOverlayRegisteredErrorMessage = 'No modal overlays are currently registered';\n private destroy$ = new Subject<void>();\n\n constructor(\n private modalHelper: ModalHelper,\n private actionSheetHelper: ActionSheetHelper,\n private alertHelper: AlertHelper,\n private modalNavigationService: ModalNavigationService,\n @Optional() @Inject(ROUTES) private routeConfig: Routes[]\n ) {}\n\n async initialize(moduleRootRoutePath?: string) {\n const modalNavigation = await this.modalNavigationService.getModalNavigation(\n this.routeConfig,\n moduleRootRoutePath\n );\n this.onModalRouteActivated(modalNavigation.activated$);\n this.onModalRouteDeactivated(modalNavigation.deactivated$); // TODO: Do we want to close modal when routing out of modal route? Or should the code that navigates close the window??\n }\n\n private onModalRouteActivated(modalRouteActivated$: Observable<ModalRouteActivation>) {\n const navigateOnWillClose = () => {\n this.modalNavigationService.navigateOutOfModalOutlet();\n };\n const siblingModalRouteActivated$ = modalRouteActivated$.pipe(\n filter((modalRouteActivation) => !modalRouteActivation.isNewModal),\n map((modalRouteActivation) => modalRouteActivation.route)\n );\n\n modalRouteActivated$\n .pipe(\n takeUntil(this.destroy$),\n filter(() => this.overlays.length === 0)\n )\n .subscribe(async (modalRouteActivation) => {\n if (modalRouteActivation.isNewModal) {\n await this.showModalRoute(\n modalRouteActivation.route,\n siblingModalRouteActivated$,\n navigateOnWillClose\n );\n }\n });\n }\n\n private onModalRouteDeactivated(modalRouteDeactivated$: Observable<boolean>) {\n modalRouteDeactivated$\n .pipe(\n takeUntil(this.destroy$),\n filter(() => this.overlays.length > 0) // TODO: This also fires when closing overlay - should we check for isClosing??\n )\n .subscribe(async () => {\n await this.hideAll();\n });\n }\n\n public async showModal(config: ModalConfig, onClose?: (data?: any) => void): Promise<void> {\n await this.showAndRegisterOverlay(() => this.modalHelper.showModalWindow(config), onClose);\n }\n\n public async navigateToModal(path: string | string[], queryParams?: Params): Promise<boolean> {\n return this.modalNavigationService.navigateToModal(path, queryParams);\n }\n\n public async navigateWithinModal(relativePath: string, queryParams?: Params): Promise<boolean> {\n return this.modalNavigationService.navigateWithinModal(relativePath, queryParams);\n }\n\n private async showModalRoute(\n modalRoute: ActivatedRoute,\n siblingModalRouteActivated$: Observable<ActivatedRoute>,\n onWillClose: (data?: any) => void\n ): Promise<void> {\n const config: ModalConfig = {\n component: null,\n modalRoute: modalRoute,\n siblingModalRouteActivated$: siblingModalRouteActivated$,\n flavor: 'modal', // Todo: Should it be possible to specify flavor as data in RouteConfig?\n };\n await this.showAndRegisterOverlay(\n () => this.modalHelper.showModalWindow(config),\n null,\n onWillClose\n );\n }\n\n public async showActionSheet(\n config: ActionSheetConfig,\n onClose?: (data?: any) => void\n ): Promise<void> {\n await this.showAndRegisterOverlay(\n () => this.actionSheetHelper.showActionSheet(config),\n onClose\n );\n }\n\n public async showAlert(config: AlertConfig, onClose?: (result: boolean) => void): Promise<void> {\n await this.showAndRegisterOverlay(() => this.alertHelper.showAlert(config), onClose);\n }\n\n private async showAndRegisterOverlay(\n showOverlay: () => Promise<Overlay>,\n onCloseOverlay?: (data?: any) => void,\n onWillCloseOverlay?: (data?: any) => void\n ) {\n const overlay = await showOverlay();\n if (!overlay) return;\n\n this.overlays.push(overlay);\n\n if (typeof onWillCloseOverlay === 'function') {\n overlay.onWillDismiss.then((event) => onWillCloseOverlay(event.data));\n }\n\n overlay.onDidDismiss.then((event) => {\n this.overlays.pop();\n if (typeof onCloseOverlay === 'function') {\n onCloseOverlay(event.data);\n }\n });\n }\n\n public registerPresentingElement(element: HTMLElement) {\n this.modalHelper.registerPresentingElement(element);\n }\n\n public async hideTopmost(data?: any): Promise<boolean> {\n const overlay = this.overlays[this.overlays.length - 1];\n if (!overlay) {\n throw new Error(this.noOverlayRegisteredErrorMessage);\n }\n return overlay.dismiss(data);\n }\n\n /**\n * @deprecated Will be removed in next major version. Inject Modal in embedded component and use Modal.scrollToTop instead.\n */\n public scrollToTop(duration?: KirbyAnimation.Duration) {\n console.warn(\n 'ModalController.scrollToTop is deprecated - please inject Modal in embedded component and use Modal.scrollToTop instead.'\n );\n const overlay = this.overlays[this.overlays.length - 1];\n if (!overlay) {\n throw new Error(this.noOverlayRegisteredErrorMessage);\n }\n this.modalHelper.scrollToTop(this.noOverlayRegisteredErrorMessage, duration);\n }\n\n /**\n * @deprecated Will be removed in next major version. Inject Modal in embedded component and use Modal.scrollToBottom instead.\n */\n public scrollToBottom(duration?: KirbyAnimation.Duration) {\n console.warn(\n 'ModalController.scrollToBottom is deprecated - please inject Modal in embedded component and use Modal.scrollToBottom instead.'\n );\n const overlay = this.overlays[this.overlays.length - 1];\n if (!overlay) {\n throw new Error(this.noOverlayRegisteredErrorMessage);\n }\n this.modalHelper.scrollToBottom(this.noOverlayRegisteredErrorMessage, duration);\n }\n\n public async hideAll(): Promise<void> {\n await Promise.all(\n this.overlays.map(async (overlay) => {\n await overlay.dismiss();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-router-outlet',\n templateUrl: './router-outlet.component.html',\n styleUrls: ['./router-outlet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RouterOutletComponent {\n @Input() main: boolean;\n}\n","<ng-container *ngIf=\"main\">\n <ion-router-outlet main></ion-router-outlet>\n</ng-container>\n<ng-container *ngIf=\"!main\">\n <ion-router-outlet></ion-router-outlet>\n</ng-container>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n ViewChild,\n} from '@angular/core';\nimport { IonApp } from '@ionic/angular';\n\nimport { ModalController } from '../modal/services/modal.controller';\nimport { RouterOutletComponent } from '../router-outlet/router-outlet.component';\n\n@Component({\n selector: 'kirby-app',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppComponent implements AfterContentInit {\n @ViewChild(IonApp, { static: true, read: ElementRef })\n private ionAppElement: ElementRef<HTMLIonAppElement>;\n\n @ContentChild(RouterOutletComponent, { static: false, read: ElementRef })\n private routerOutlet?: ElementRef<HTMLElement>;\n\n constructor(private modalController: ModalController) {}\n\n ngAfterContentInit(): void {\n if (this.routerOutlet && this.routerOutlet.nativeElement) {\n this.modalController.registerPresentingElement(this.routerOutlet.nativeElement);\n }\n\n this.ionAppElement.nativeElement.componentOnReady().then(() => this.registerInputs());\n }\n\n registerInputs() {\n // Input might be already loaded in the DOM before ion-device-hacks did.\n // At this point we need to look for all of the inputs not registered yet\n // and register them.\n // There is no Ionic event to hook into, so we'll use a timeout\n // to ensure ion-device-hacks has run:\n const ensureIonicDeviceHacksDelay = 250;\n setTimeout(() => {\n document.querySelectorAll('kirby-form-field').forEach((formField) => {\n formField.dispatchEvent(new CustomEvent('kirbyRegisterFormField'));\n });\n }, ensureIonicDeviceHacksDelay);\n }\n}\n","<ion-app>\n <ng-content></ng-content>\n</ion-app>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@ionic/angular';\n\nimport { AppComponent } from './app.component';\n\n@NgModule({\n declarations: [AppComponent],\n imports: [CommonModule, IonicModule],\n exports: [AppComponent],\n})\nexport class AppModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { BrandColor, NotificationColor } from '@kirbydesign/core';\n\nexport enum AvatarSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n selector: 'kirby-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent {\n @Input() imageSrc: string;\n @Input() altText: string;\n @Input() shadow: boolean;\n @Input() text: string;\n @Input() overlay: boolean;\n @Input() size: AvatarSize | `${AvatarSize}` = AvatarSize.SM;\n @Input()\n themeColor: NotificationColor | BrandColor | 'medium' | 'white' | 'dark' | 'light' | 'semi-light';\n\n @HostBinding('class')\n get _cssClass() {\n return [this.themeColor, this.size].filter((cssClass) => !!cssClass);\n }\n}\n","<div class=\"avatar\" [ngClass]=\"{ shadow: shadow, overlay: overlay }\">\n <img *ngIf=\"imageSrc\" [src]=\"imageSrc\" [attr.alt]=\"altText\" />\n <ng-content *ngIf=\"!text\" select=\"kirby-icon\"></ng-content>\n <span class=\"avatar-text\" *ngIf=\"text\">{{ text }}</span>\n</div>\n<ng-content select=\"kirby-badge\"></ng-content>\n","import { fromEvent } from 'rxjs';\n\nexport const proxyInputs = (Cmp: any, inputs: string[]) => {\n const Prototype = Cmp.prototype;\n inputs.forEach((item) => {\n Object.defineProperty(Prototype, item, {\n get() {\n return this.el[item];\n },\n set(val: any) {\n this.z.runOutsideAngular(() => (this.el[item] = val));\n },\n });\n });\n};\n\nexport const proxyMethods = (Cmp: any, methods: string[]) => {\n const Prototype = Cmp.prototype;\n methods.forEach((methodName) => {\n Prototype[methodName] = function () {\n const args = arguments;\n return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));\n };\n });\n};\n\nexport const proxyOutputs = (instance: any, el: any, events: string[]) => {\n events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));\n};\n\n// tslint:disable-next-line: only-arrow-functions\nexport function ProxyCmp(opts: { inputs?: any; methods?: any }) {\n const decorator = function (cls: any) {\n if (opts.inputs) {\n proxyInputs(cls, opts.inputs);\n }\n if (opts.methods) {\n proxyMethods(cls, opts.methods);\n }\n return cls;\n };\n return decorator;\n}\n","/* tslint:disable */\n/* auto-generated angular directive proxies */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, NgZone } from '@angular/core';\nimport { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';\n\nimport { Components } from '@kirbydesign/core';\n\n\nexport declare interface KirbyBadge extends Components.KirbyBadge {}\n@ProxyCmp({\n inputs: ['size', 'text', 'themeColor']\n})\n@Component({\n selector: 'kirby-badge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n inputs: ['size', 'text', 'themeColor']\n})\nexport class KirbyBadge {\n protected el: HTMLElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kirby-card-footer',\n templateUrl: './card-footer.component.html',\n styleUrls: ['./card-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardFooterComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","<footer>\n <ng-content></ng-content>\n</footer>\n","/**\n * Performs a deep merge of objects and returns new object. Does not modify\n * objects (immutable).\n * It merges from into object to the left\n * eg. mergeDeep({a: 'will be overridden', b: 'some val'}, {a: 'new val'}) => {a: 'new val', b: 'some val'}\n *\n * @param originalObject object - Object to override,\n * @param overrideObject object - Object to override \"toOverride\" values with\n * @param config object - Configuration for how to merge.\n * mergeArrays determines if it should merge or override arrays\n * @returns object - New object with merged key/values\n */\nexport function mergeDeep(originalObject, overrideObject, config = { mergeArrays: false }) {\n const isObject = (obj) => obj && typeof obj === 'object';\n\n return [originalObject, overrideObject].reduce((mergedObject, obj) => {\n Object.keys(obj).forEach((key) => {\n const mergedObjectValue = mergedObject[key];\n const overrideObjectValue = obj[key];\n\n if (Array.isArray(mergedObjectValue) && Array.isArray(overrideObjectValue)) {\n mergedObject[key] = config.mergeArrays\n ? mergedObjectValue.concat(overrideObjectValue)\n : overrideObjectValue;\n } else if (isObject(mergedObjectValue) && isObject(overrideObjectValue)) {\n mergedObject[key] = mergeDeep(mergedObjectValue, overrideObjectValue);\n } else {\n mergedObject[key] = overrideObjectValue;\n }\n });\n\n return mergedObject;\n }, {});\n}\n\nexport function mergeDeepAll(...objects: Object[]): Object {\n const objectsWithoutUndefined = objects.filter((object) => object !== undefined);\n return objectsWithoutUndefined.reduce((originalObject, overrideObject) =>\n mergeDeep(originalObject, overrideObject)\n );\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { chart, Options } from 'highcharts';\nimport * as Highcharts from 'highcharts';\n\n// Docs on importing accessibility: https://www.highcharts.com/docs/chart-concepts/accessibility\n\ndeclare var require: any;\nrequire('highcharts/highcharts-more')(Highcharts);\nrequire('highcharts/modules/solid-gauge')(Highcharts);\nrequire('highcharts/modules/broken-axis')(Highcharts);\n\n@Injectable()\nexport class ChartDeprecatedHelper {\n chartContainer: ElementRef;\n\n public init(chartContainer: ElementRef) {\n this.chartContainer = chartContainer;\n }\n\n public renderChart(options: Options) {\n if (this.chartContainer && options.chart) {\n chart(this.chartContainer.nativeElement, options);\n }\n }\n}\n","export enum ChartDeprecatedType {\n PIE = 'pie',\n DONUT = 'donut',\n AREASPLINE = 'areaspline',\n TIMESERIES = 'timeseries',\n ACTIVITYGAUGE = 'activitygauge',\n BAR = 'bar',\n COLUMN = 'column',\n CUSTOM = 'custom',\n}\n","import { InjectionToken } from '@angular/core';\nimport { Options } from 'highcharts';\n\nexport const ACTIVITYGAUGE_OPTIONS = new InjectionToken<Options>('ActivityGaugeOptions');\nexport const ActivityGaugeOptions: Options = {\n chart: {\n style: {\n fontFamily: 'Roboto, sans-serif',\n fontWeight: '300',\n },\n backgroundColor: 'transparent',\n type: 'solidgauge',\n height: '110%',\n },\n accessibility: {\n description: '',\n },\n title: {\n align: 'center',\n verticalAlign: 'middle',\n text: '',\n y: 0,\n floating: false,\n style: {\n fontSize: '30px',\n color: '#fff',\n fontWeight: 'bold',\n },\n },\n subtitle: {\n text: '',\n align: 'center',\n y: 25,\n verticalAlign: 'middle',\n style: {\n color: '#fff',\n fontSize: '14px',\n fontWeight: 'normal',\n },\n },\n credits: {\n enabled: false,\n },\n tooltip: {\n enabled: false,\n animation: false,\n },\n pane: {\n startAngle: 0,\n endAngle: 360,\n background: [\n {\n backgroundColor: {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n stops: [\n [1, 'rgba(255, 255, 255, 0.3)'],\n [0, 'rgba(255, 255, 255, 0.3)'],\n ],\n },\n outerRadius: '112%',\n innerRadius: '88%',\n borderWidth: 0,\n },\n ],\n },\n yAxis: {\n min: 0,\n max: 100,\n lineWidth: 0,\n tickPositions: [],\n },\n plotOptions: {\n solidgauge: {\n dataLabels: {\n enabled: false,\n },\n linecap: 'round',\n stickyTracking: false,\n rounded: true,\n },\n },\n series: [\n {\n type: 'solidgauge',\n },\n ],\n};\n","import { InjectionToken } from '@angular/core';\nimport { Options } from 'highcharts';\n\nexport const AREASPLINE_OPTIONS = new InjectionToken<Options>('AreasplineOptions');\nexport const AreaSplineOptions: Options = {\n chart: {\n type: 'areaspline',\n borderWidth: 0,\n plotBorderWidth: 0,\n margin: 0,\n marginTop: 48,\n },\n accessibility: {\n description: '',\n },\n title: {\n text: '',\n },\n credits: {\n enabled: false,\n },\n exporting: {\n enabled: false,\n },\n tooltip: {\n enabled: true,\n animation: false,\n shape: 'square',\n borderColor: '#FFFFFF',\n shadow: false,\n backgroundColor: '#FFFFFF',\n style: {\n fontSize: '1.25rem',\n },\n formatter: function (): string {\n return String(this.y);\n },\n positioner: function () {\n return { x: this.chart.plotSizeX / 2 - this.label.width / 2, y: 0 };\n },\n },\n xAxis: {\n visible: false,\n minPadding: 0,\n maxPadding: 0,\n crosshair: {\n zIndex: 3,\n width: 1,\n color: '#177E17',\n },\n },\n yAxis: {\n visible: false,\n endOnTick: false,\n startOnTick: false,\n },\n plotOptions: {\n areaspline: {\n shadow: true,\n showInLegend: false,\n fillColor: {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 0.8 },\n stops: [\n [0, '#C9E5C9'],\n [1, '#FFFFFF'],\n ],\n },\n lineColor: '#177E17',\n lineWidth: 2,\n },\n series: {\n states: {\n hover: {\n halo: {\n size: 0,\n },\n },\n },\n marker: {\n enabled: false,\n states: {\n hover: {\n enabled: true,\n fillColor: '#177E17',\n },\n },\n },\n },\n },\n series: [\n {\n type: 'areaspline',\n },\n ],\n};\n","import { Options } from 'highcharts';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nconst getColor = DesignTokenHelper.getColor;\nconst fontSize = DesignTokenHelper.fontSize;\n\nfunction colorPoints() {\n var series = this.series;\n for (var i = 0, ie = series.length; i < ie; ++i) {\n var points = series[i].data;\n for (var j = 0, je = points.length; j < je; ++j) {\n if (points[j].graphic) {\n points[j].graphic.element.style.stroke = getColor('background-color').value;\n }\n }\n }\n}\n\nexport const barOptions: Options = {\n chart: {\n type: 'bar',\n animation: {\n duration: 150,\n },\n backgroundColor: 'transparent',\n events: {\n load: colorPoints,\n redraw: colorPoints,\n },\n },\n accessibility: {\n description: 'Bar chart',\n },\n credits: {\n enabled: false,\n },\n title: {\n text: '',\n },\n xAxis: {\n labels: {\n style: {\n fontSize: fontSize('s'),\n fontFamily: 'Roboto',\n color: getColor('black').value,\n },\n },\n min: 0,\n lineColor: 'transparent',\n },\n yAxis: {\n title: {\n text: '',\n },\n labels: {\n enabled: false,\n },\n min: 0,\n lineWidth: 0,\n minorGridLineWidth: 0,\n gridLineColor: 'transparent',\n minorTickLength: 0,\n tickLength: 0,\n maxPadding: 0,\n endOnTick: false,\n showLastLabel: false,\n showFirstLabel: false,\n },\n plotOptions: {\n bar: {\n events: {},\n },\n series: {\n color: getColor('secondary').value,\n stacking: 'normal',\n states: {\n hover: {\n enabled: false,\n },\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n tooltip: {\n enabled: false,\n },\n legend: {\n enabled: false,\n },\n};\n","import { Options } from 'highcharts';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nconst getColor = DesignTokenHelper.getColor;\nconst fontSize = DesignTokenHelper.fontSize;\n\nfunction colorPoints() {\n var series = this.series;\n for (var i = 0, ie = series.length; i < ie; ++i) {\n var points = series[i].data;\n for (var j = 0, je = points.length; j < je; ++j) {\n if (points[j].graphic) {\n points[j].graphic.element.style.stroke = getColor('secondary').value;\n }\n }\n }\n}\n\nexport const columnOptions: Options = {\n chart: {\n animation: {\n duration: 500,\n },\n backgroundColor: 'transparent',\n type: 'column',\n events: {\n load: colorPoints,\n redraw: colorPoints,\n },\n },\n title: {\n text: '',\n },\n accessibility: {\n description: 'Column chart',\n },\n xAxis: {\n labels: {\n style: {\n fontSize: fontSize('xxs'),\n fontFamily: 'Roboto',\n color: getColor('black').value,\n },\n },\n lineWidth: 0,\n minorGridLineWidth: 0,\n lineColor: 'transparent',\n minorTickLength: 0,\n tickLength: 0,\n },\n yAxis: {\n title: {\n text: '',\n },\n labels: {\n enabled: false,\n },\n min: 0,\n lineWidth: 0,\n minorGridLineWidth: 0,\n gridLineColor: 'transparent',\n minorTickLength: 0,\n tickLength: 0,\n showLastLabel: false,\n showFirstLabel: false,\n },\n credits: {\n enabled: false,\n },\n plotOptions: {\n column: {\n stacking: 'normal',\n },\n series: {\n color: getColor('secondary').value,\n zIndex: 10,\n states: {\n hover: {\n enabled: false,\n },\n inactive: {\n opacity: 1,\n },\n },\n },\n line: {\n className: 'avg-line',\n marker: {\n enabled: false,\n },\n allowPointSelect: false,\n },\n },\n tooltip: {\n enabled: false,\n },\n legend: {\n enabled: false,\n },\n};\n","import { InjectionToken } from '@angular/core';\nimport { Options } from 'highcharts';\n\nexport const DONUT_OPTIONS = new InjectionToken<Options>('DonutOptions');\nexport const DonutOptions: Options = {\n chart: {\n style: {\n fontFamily: 'Roboto',\n fontWeight: '300',\n },\n backgroundColor: 'transparent',\n type: '',\n },\n accessibility: {\n description: 'Donut chart',\n },\n title: {\n text: '',\n },\n tooltip: {\n enabled: false,\n animation: false,\n },\n legend: {\n layout: 'vertical',\n symbolRadius: 0,\n itemStyle: {\n fontSize: '.875rem',\n },\n },\n plotOptions: {\n pie: {\n colors: ['#015132', '#B2D1BF', '#AABC08', '#1FA05A', 'yellowgreen'],\n allowPointSelect: false,\n cursor: 'pointer',\n showInLegend: true,\n borderColor: null,\n dataLabels: {\n format: '{point.label}',\n enabled: true,\n connectorWidth: 0,\n distance: 5,\n style: {\n fontSize: '1rem',\n fontWeight: '200',\n },\n },\n point: {\n events: {\n legendItemClick: () => {\n // Prevent the default behavior (toggle visibility of slices when clicking on legends)\n return false;\n },\n },\n },\n states: {\n hover: {\n enabled: false,\n },\n },\n },\n series: {\n animation: true,\n dataLabels: {},\n states: {\n hover: {\n enabled: false,\n },\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n series: [\n {\n name: '',\n type: 'pie',\n },\n ],\n credits: {\n enabled: false,\n },\n exporting: {\n enabled: false,\n },\n responsive: {\n rules: [\n {\n condition: {\n minWidth: 640,\n },\n chartOptions: {\n legend: {\n layout: 'vertical',\n align: 'right',\n verticalAlign: 'middle',\n itemMarginTop: 12,\n symbolRadius: 0,\n symbolWidth: 14,\n symbolHeight: 14,\n x: -100,\n },\n },\n },\n {\n condition: {\n minWidth: 0,\n },\n chartOptions: {\n legend: {\n symbolRadius: 0,\n },\n },\n },\n ],\n },\n};\n","import { InjectionToken } from '@angular/core';\nimport { dateFormat, Options } from 'highcharts';\n\nexport const TIMESERIES_OPTIONS = new InjectionToken<Options>('TimeSeriesOptions');\nexport const TimeSeriesOptions: Options = {\n chart: {\n backgroundColor: {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 3 },\n stops: [\n [0, '#F6F6F6'],\n [1, '#808080'],\n ],\n },\n zoomType: 'x',\n type: 'timeseries',\n borderWidth: 0,\n plotBorderWidth: 0,\n margin: 0,\n marginTop: 48,\n },\n accessibility: {\n description: '',\n },\n title: {\n text: '',\n },\n subtitle: {\n text: '',\n },\n tooltip: {\n shadow: false,\n formatter: function () {\n // @ts-ignore\n return dateFormat('%e. %b', new Date(this.x)) + '.' + '<br/><b>' + this.y + '</b>';\n },\n //xDateFormat: '%d/%m',\n positioner: function (_labelWidth, _labelHeight, point) {\n return { x: point.x, y: 0 };\n },\n borderWidth: 0,\n },\n xAxis: {\n visible: false,\n lineColor: '#FFFFFF',\n tickColor: '#FFFFFF',\n labels: {\n style: {\n color: 'white',\n },\n },\n opposite: true,\n crosshair: {\n zIndex: 3,\n width: 1,\n color: '#00E89A',\n },\n type: 'datetime',\n tickInterval: 1,\n },\n yAxis: {\n visible: false,\n },\n legend: {\n enabled: false,\n },\n plotOptions: {\n area: {\n fillColor: '#01352C',\n marker: {\n lineWidth: 14,\n lineColor: 'rgba(255,255,255,0.2)',\n radius: 6,\n fillColor: '#00E89A',\n },\n lineColor: '#01352C',\n lineWidth: 1,\n states: {\n hover: {\n lineWidth: 1,\n },\n },\n threshold: null,\n },\n series: {\n marker: {\n enabledThreshold: 50,\n },\n },\n },\n series: [\n {\n type: 'area',\n name: 'USD to EUR',\n },\n ],\n};\n","import { Component, ElementRef, Inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport {\n Options,\n PlotSeriesDataLabelsOptions,\n XAxisBreaksOptions,\n XAxisOptions,\n YAxisOptions,\n} from 'highcharts';\n\nimport { mergeDeep } from '../../helpers/merge-deep';\n\nimport { ChartDeprecatedHelper } from './chart-deprecated-helper';\nimport { ChartDeprecatedType } from './chart-deprecated-type';\nimport { ActivityGaugeOptions, ACTIVITYGAUGE_OPTIONS } from './options/activitygauge';\nimport { AreaSplineOptions, AREASPLINE_OPTIONS } from './options/areaspline';\nimport { barOptions } from './options/bar';\nimport { columnOptions } from './options/column';\nimport { DonutOptions, DONUT_OPTIONS } from './options/donut';\nimport { TimeSeriesOptions, TIMESERIES_OPTIONS } from './options/timeseries';\n\n@Component({\n selector: 'kirby-chart-deprecated',\n template: '',\n styleUrls: ['./chart-deprecated.component.scss'],\n providers: [\n ChartDeprecatedHelper,\n { provide: DONUT_OPTIONS, useValue: DonutOptions },\n { provide: AREASPLINE_OPTIONS, useValue: AreaSplineOptions },\n { provide: TIMESERIES_OPTIONS, useValue: TimeSeriesOptions },\n { provide: ACTIVITYGAUGE_OPTIONS, useValue: ActivityGaugeOptions },\n ],\n})\nexport class ChartDeprecatedComponent implements OnChanges {\n @Input() data = [];\n @Input() categories: string[] = [];\n @Input() breaks: Array<XAxisBreaksOptions> = [];\n @Input() height = 300;\n @Input() type: ChartDeprecatedType = ChartDeprecatedType.PIE;\n @Input() description = '';\n @Input() showDataLabels = true;\n @Input() options: Options;\n mergedOptions: Options = {\n accessibility: {},\n };\n\n constructor(\n private chartHelper: ChartDeprecatedHelper,\n private hostElement: ElementRef,\n @Inject(DONUT_OPTIONS) public donutOptions: Options,\n @Inject(AREASPLINE_OPTIONS) public areasplineOptions: Options,\n @Inject(TIMESERIES_OPTIONS) public timeSeriesOptions: Options,\n @Inject(ACTIVITYGAUGE_OPTIONS) public activitygaugeOptions: Options\n ) {\n this.chartHelper.init(this.hostElement);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.type) {\n this.setupChartType();\n }\n this.updateProperties();\n this.chartHelper.renderChart(this.mergedOptions);\n }\n\n setupChartType() {\n switch (this.type) {\n case ChartDeprecatedType.DONUT: {\n this.mergedOptions = this.donutOptions;\n this.mergedOptions.chart.type = ChartDeprecatedType.PIE;\n this.mergedOptions.plotOptions.pie.innerSize = '50%';\n break;\n }\n case ChartDeprecatedType.PIE: {\n this.mergedOptions = this.donutOptions;\n this.mergedOptions.chart.type = this.type;\n this.mergedOptions.plotOptions.pie.innerSize = '0%';\n break;\n }\n case ChartDeprecatedType.AREASPLINE: {\n this.mergedOptions = this.areasplineOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n case ChartDeprecatedType.TIMESERIES: {\n this.mergedOptions = this.timeSeriesOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n case ChartDeprecatedType.ACTIVITYGAUGE: {\n this.mergedOptions = this.activitygaugeOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n case ChartDeprecatedType.COLUMN: {\n this.mergedOptions = columnOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n case ChartDeprecatedType.BAR: {\n this.mergedOptions = barOptions;\n this.mergedOptions.chart.type = this.type;\n break;\n }\n }\n }\n\n updateProperties() {\n this.mergedOptions.chart.height = this.height;\n this.mergedOptions.accessibility.description = this.description;\n switch (this.mergedOptions.chart.type) {\n case ChartDeprecatedType.PIE:\n case ChartDeprecatedType.DONUT: {\n this.setPieInput();\n break;\n }\n case ChartDeprecatedType.AREASPLINE: {\n this.setSeries('areaspline');\n break;\n }\n case ChartDeprecatedType.TIMESERIES: {\n this.setTimeseriesInput();\n break;\n }\n case ChartDeprecatedType.ACTIVITYGAUGE: {\n this.setActivitygaugeInput();\n break;\n }\n case ChartDeprecatedType.COLUMN: {\n this.setColumnInput();\n break;\n }\n case ChartDeprecatedType.BAR: {\n this.setBarInput();\n break;\n }\n }\n if (!!this.options) {\n this.mergedOptions = mergeDeep(this.mergedOptions, this.options);\n }\n }\n\n private setPieInput() {\n (this.mergedOptions.plotOptions.pie.dataLabels as PlotSeriesDataLabelsOptions).enabled =\n this.showDataLabels;\n this.setSeries('pie');\n }\n\n private setBarInput() {\n const dataMaxValue = Math.max(...this.data);\n this.mergedOptions.series = [\n {\n type: 'bar',\n name: 'InvisibleClickReceiver',\n data: this.data.map((dataEntry) => dataMaxValue - dataEntry),\n edgeColor: 'rgb(255, 255, 255, 0)',\n opacity: 0,\n },\n {\n type: 'bar',\n data: this.data,\n },\n ];\n (this.mergedOptions.xAxis as XAxisOptions).categories = this.categories;\n }\n\n private setColumnInput() {\n this.mergedOptions.series = [\n {\n type: 'column',\n data: this.data,\n },\n ];\n const dataMaxValue = Math.max(...this.data);\n ((this.mergedOptions.yAxis as YAxisOptions).tickPositioner = () => {\n var positions = [0, dataMaxValue];\n return positions;\n }),\n (this.mergedOptions.series = [\n {\n type: 'column',\n name: 'InvisibleClickReceiver',\n data: this.data.map((_, idx) => dataMaxValue - this.data[idx]),\n opacity: 0,\n },\n {\n type: 'column',\n data: this.data,\n },\n ]);\n (this.mergedOptions.xAxis as XAxisOptions).categories = this.categories;\n }\n\n private setActivitygaugeInput() {\n const data = this.data[0];\n this.mergedOptions.title.text = data.title;\n this.mergedOptions.subtitle.text = data.subtitle;\n if (data.paneBackgroundColor) {\n this.mergedOptions.pane.background = [\n {\n ...this.mergedOptions.pane.background[0],\n backgroundColor: data.paneBackgroundColor,\n },\n ];\n }\n if (data.color) {\n this.mergedOptions.title.style.color = data.color;\n this.mergedOptions.subtitle.style.color = data.color;\n }\n this.mergedOptions.series = [\n {\n type: 'solidgauge',\n data: data.series,\n },\n ];\n }\n\n private setTimeseriesInput() {\n this.setSeries('area');\n this.mergedOptions.xAxis = {\n ...this.mergedOptions.xAxis,\n breaks: this.breaks,\n };\n }\n\n private setSeries(type) {\n this.mergedOptions.series = [\n {\n type,\n data: this.data,\n },\n ];\n }\n}\n","import { ChartDataset as ChartJSDataset, ChartOptions, ChartType as ChartJSType } from 'chart.js';\n\nexport type ChartHighlightedElements = number[][];\n\nexport type ChartType = 'column' | 'bar' | 'line' | 'stock';\n\nexport type ChartTypeConfig = { type: ChartJSType; options?: ChartOptions };\n\nexport type ChartTypesConfig = {\n [key in ChartType]: ChartTypeConfig;\n};\nexport type ChartLabel = string | string[]; // String[] allows for multi-line labels\n\nexport type ChartDataLabelOptions = {\n showMin?: boolean;\n showMax?: boolean;\n showCurrent?: boolean;\n locale?: ChartLocale;\n valueSuffix?: string;\n};\n\nexport type ChartLocale = 'da-DK' | 'en-US';\n\n/* \n kirbyOptions.isStockChart is a hacky solution to this issue: \n https://github.com/kirbydesign/designsystem/issues/1967 \n*/\nexport type ChartDataset = {\n kirbyOptions?: { highlightedElements?: number[]; isStockChart?: boolean };\n} & ChartJSDataset;\n\nexport function isNumberArray(value: any): value is number[] {\n return Array.isArray(value) && value.every((item) => typeof item === 'number');\n}\n","import {\n Directive,\n Input,\n ComponentFactoryResolver,\n OnInit,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ComponentConfiguration } from './component-configuration';\nimport { DynamicComponent } from './dynamic-component';\n\n@Directive({\n selector: '[kirbyLoadComponent]',\n})\nexport class ComponentLoaderDirective implements OnInit {\n // tslint:disable-next-line:no-input-rename\n @Input('kirbyLoadComponent') configuration: ComponentConfiguration;\n @Input() cssClass: string;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.loadCard();\n }\n\n loadCard() {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(\n this.configuration.component\n );\n this.viewContainerRef.clear();\n const componentRef = this.viewContainerRef.createComponent(componentFactory);\n if (componentRef && componentRef.location && componentRef.location.nativeElement) {\n this.renderer.addClass(componentRef.location.nativeElement, this.cssClass);\n }\n (<DynamicComponent>componentRef.instance).data = this.configuration.data;\n }\n}\n","import _deepCopy from 'ts-deepcopy';\n\n/**\n * Do a deep copy of object that supports the composite data type Function\n *\n * @see https://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-deep-clone-an-object-in-javascript#answer-122704\n *\n * @param obj\n * @returns obj\n */\nexport function deepCopy<T>(obj: T): T {\n return _deepCopy<T>(obj);\n}\n","/* \n Utility function to check if a given element \n has an ancestor with a specific node name. \n\n Can be given a 'stopNodeName' to limit the search\n as to not climb all the way up through the DOM tree. \n\n Returns true when element has the ancestorNodeName \n or an ancestor has the ancestorNodeName. \n\n Returns false otherwise.\n*/\n\nexport const elementHasAncestor = (\n element: HTMLElement,\n ancestorNodeName: string,\n stopNodeName?: string\n) => {\n switch (element?.nodeName) {\n case undefined:\n case stopNodeName?.toUpperCase():\n return false;\n case ancestorNodeName.toUpperCase():\n return true;\n default:\n return elementHasAncestor(element.parentElement, ancestorNodeName, stopNodeName);\n }\n};\n","// re-export helpers from core, to preserve backwards compatability\n// of 'designsystem' library\nexport * from './element-has-ancestor';\nexport * from './color-helper';\nexport * from './design-token-helper';\nexport * from './string-helper';\nexport * from './theme-color.type';\nexport * from './platform.service';\n","import { AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\n\nimport { ColorHelper } from '../../../helpers';\n\nconst { getThemeColorHexString } = ColorHelper;\n\n/* The chart.js annotation does not allow for changing the \ndefaults it comes with. In order to have sensible defaults \nthis object is used instead and manually merged with the \nrest of the annotations object */\nconst borderColor = getThemeColorHexString('semi-dark');\nconst borderDash: [number, number] = [6, 3];\nconst borderWidth = 1;\n\nexport const CHART_ANNOTATIONS_CONFIG: AnnotationTypeRegistry = {\n line: {\n borderDash,\n borderWidth,\n borderColor,\n },\n ellipse: {\n borderDash,\n borderWidth,\n borderColor,\n backgroundColor: 'transparent',\n },\n box: {\n borderDash,\n borderWidth,\n borderColor,\n backgroundColor: 'transparent',\n },\n point: {\n backgroundColor: 'initial',\n },\n};\n","import { ActiveElement, Chart, ChartEvent, ChartOptions } from 'chart.js';\n\n/* Allows for adding functionality to interactions chart.js while \npreserving the interaction functionality the consumer of the component has \npassed by being provided as a callback. */\nexport const CHART_INTERACTION_FUNCTIONS_EXTENSIONS = {\n onHover: (\n _event: ChartEvent,\n activeElements: ActiveElement[],\n _chart: Chart,\n callback: ChartOptions['onHover']\n ) => {\n if (_chart.options.onClick) {\n _chart.canvas.style.cursor = activeElements[0] ? 'pointer' : 'default';\n }\n\n if (callback) callback(_event, activeElements, _chart);\n },\n};\n","import { ChartTypeRegistry, Color, Point, TooltipItem, TooltipLabelStyle } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport { Align } from 'chartjs-plugin-datalabels/types/options';\n\nimport { ColorHelper, DesignTokenHelper } from '../../../helpers';\nimport { ChartTypesConfig } from '../chart.types';\n\nconst { fontSize } = DesignTokenHelper;\nconst { getThemeColorHexString, getThemeColorRgbString } = ColorHelper;\n\n/**\n * A filter to read a chartpoint from a Chart.js point context (used for chartdata points). Context is provided by Chart.js.\n */\nconst getChartPointFromContext = (context: Context): Point => {\n return context.dataset.data[context.dataIndex] as Point;\n};\n\nexport const CHART_TYPES_CONFIG: ChartTypesConfig = {\n bar: {\n type: 'bar',\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'y',\n scales: {\n y: {\n grid: {\n drawBorder: false,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('s')),\n },\n },\n },\n },\n elements: {\n point: {\n radius: 0,\n },\n line: {\n borderColor: getThemeColorHexString('medium'),\n },\n },\n },\n },\n column: {\n type: 'bar',\n options: {\n datasets: {\n bar: {\n barPercentage: 0.6,\n },\n line: {\n spanGaps: true,\n },\n },\n indexAxis: 'x',\n scales: {\n x: {\n grid: {\n drawBorder: false,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0.2,\n borderColor: getThemeColorHexString('medium'),\n },\n point: {\n radius: 0,\n },\n },\n },\n },\n line: {\n type: 'line',\n options: {\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n grid: {\n borderColor: getThemeColorHexString('medium'),\n borderWidth: 1,\n },\n ticks: {\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n point: {\n radius: 0,\n },\n },\n },\n },\n stock: {\n type: 'line',\n options: {\n responsive: true,\n animation: {\n duration: 0,\n },\n layout: {\n padding: {\n left: 20,\n right: 20,\n top: 30,\n bottom: 0,\n },\n },\n backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n scales: {\n x: {\n grid: {\n lineWidth: 0,\n },\n ticks: {\n maxRotation: 0,\n autoSkipPadding: 120,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n y: {\n position: 'right',\n display: true,\n grid: {\n drawBorder: false,\n },\n ticks: {\n display: true,\n font: {\n size: parseInt(fontSize('xs')),\n },\n },\n },\n },\n elements: {\n line: {\n tension: 0, // Smooth curve (0 = no smoothing)\n borderWidth: 2,\n },\n point: {\n hitRadius: 20,\n radius: 0,\n hoverRadius: 0,\n hoverBorderWidth: 0,\n },\n },\n normalized: true,\n plugins: {\n tooltip: {\n padding: 10,\n\n enabled: true,\n mode: 'index',\n intersect: false,\n backgroundColor: getThemeColorHexString('semi-light'),\n titleColor: getThemeColorHexString('semi-light-contrast'),\n bodyColor: getThemeColorHexString('semi-light-contrast'),\n caretSize: 0,\n bodySpacing: 5,\n titleSpacing: 5,\n borderColor: 'transparent',\n callbacks: {\n labelColor: (tooltipItem: TooltipItem<keyof ChartTypeRegistry>) => {\n return {\n backgroundColor: tooltipItem.dataset.borderColor,\n } as TooltipLabelStyle;\n },\n },\n },\n datalabels: {\n backgroundColor: (context: Context) => context.dataset.borderColor as Color,\n color: getThemeColorHexString('white'),\n borderRadius: 3,\n font: {\n lineHeight: 1,\n size: parseInt(fontSize('xs')),\n },\n padding: {\n top: 6,\n left: 5,\n right: 5,\n bottom: 5,\n },\n offset: 5,\n align: (context: Context): Align =>\n (getChartPointFromContext(context) as any)?.datalabel.position,\n display: (context: Context): boolean =>\n !!(getChartPointFromContext(context) as any)?.datalabel,\n formatter: (value: any): string => value.datalabel.value,\n },\n },\n },\n },\n};\n","import { Injectable } from '@angular/core';\nimport { ChartType as ChartJSType } from 'chart.js';\nimport { AnnotationType, AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\n\nimport { deepCopy } from '../../../helpers/deep-copy';\nimport { ChartType, ChartTypeConfig } from '../chart.types';\n\nimport { CHART_ANNOTATIONS_CONFIG } from './annotations.config';\nimport { CHART_INTERACTION_FUNCTIONS_EXTENSIONS } from './interaction-functions-extensions.config';\nimport { CHART_TYPES_CONFIG } from './type.config';\n\n@Injectable()\nexport class ChartConfigService {\n public getTypeConfig(chartType: ChartType): ChartTypeConfig {\n /* Deep copy to avoid Chart object modifying parts of CHART_TYPES_CONFIG \n as it copies by reference when initialized */\n return deepCopy(CHART_TYPES_CONFIG[chartType]);\n }\n\n public getAnnotationDefaults(type: AnnotationType): AnnotationTypeRegistry[AnnotationType] {\n return CHART_ANNOTATIONS_CONFIG[type];\n }\n\n public getInteractionFunctionsExtensions() {\n return CHART_INTERACTION_FUNCTIONS_EXTENSIONS;\n }\n\n /* Our types does not always map 1 to 1 to the same type \n that the chart.js chart is actually oconfigured with. Therefore this function \n for looking up the ChartJSType of a type. */\n public chartTypeToChartJSType(chartType: ChartType): ChartJSType {\n return CHART_TYPES_CONFIG[chartType]['type'] as ChartJSType;\n }\n}\n","/* \n The marker plugin is heavily inspired by https://chartjs-plugin-crosshair.netlify.app\n The project appears stale and only the vertical line feature is needed\n part of the plugin that was actually needed is implemented here. \n*/\n\nimport { Chart } from 'chart.js';\nimport { valueOrDefault } from 'chart.js/helpers';\n\nimport { ChartDataset } from '../../chart.types';\n\nvar defaultOptions = {\n line: {\n color: 'black',\n width: 1,\n dashPattern: [],\n },\n snap: {\n enabled: false,\n },\n};\n\nconst hasMarkerConfiguration = (chart: Chart) => {\n /* \n Hacky solution. Should be fixed in this issue: https://github.com/kirbydesign/designsystem/issues/1967\n */\n return chart.data.datasets.some((dataset: ChartDataset) => !!dataset?.kirbyOptions?.isStockChart);\n};\n\nexport default {\n id: 'marker',\n\n afterInit: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n\n var xScaleType = chart.config.options.scales.x.type;\n\n if (\n xScaleType !== 'linear' &&\n xScaleType !== 'time' &&\n xScaleType !== 'category' &&\n xScaleType !== 'logarithmic'\n ) {\n return;\n }\n\n if (chart.options.plugins.marker === undefined) {\n chart.options.plugins.marker = defaultOptions;\n }\n\n chart.marker = {\n enabled: false,\n suppressUpdate: false,\n x: null,\n originalData: [],\n originalXRange: {},\n dragStarted: false,\n dragStartX: null,\n dragEndX: null,\n suppressTooltips: false,\n ignoreNextEvents: 0,\n };\n },\n\n getOption: function (chart, category, name) {\n return valueOrDefault(\n chart.options.plugins.marker[category]\n ? chart.options.plugins.marker[category][name]\n : undefined,\n defaultOptions[category][name]\n );\n },\n\n getXScale: function (chart) {\n return chart.data.datasets.length ? chart.scales[chart.getDatasetMeta(0).xAxisID] : null;\n },\n getYScale: function (chart) {\n return chart.scales[chart.getDatasetMeta(0).yAxisID];\n },\n\n afterEvent: function (chart, event) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n if (chart.config.options.scales.x.length == 0) {\n return;\n }\n\n let e = event.event;\n\n var xScaleType = chart.config.options.scales.x.type;\n\n if (\n xScaleType !== 'linear' &&\n xScaleType !== 'time' &&\n xScaleType !== 'category' &&\n xScaleType !== 'logarithmic'\n ) {\n return;\n }\n\n var xScale = this.getXScale(chart);\n\n if (!xScale) {\n return;\n }\n\n if (chart.marker.ignoreNextEvents > 0) {\n chart.marker.ignoreNextEvents -= 1;\n return;\n }\n\n // fix for Safari\n var buttons = e.native.buttons === undefined ? e.native.which : e.native.buttons;\n if (e.native.type === 'mouseup') {\n buttons = 0;\n }\n\n chart.marker.enabled =\n e.type !== 'mouseout' &&\n e.x > xScale.getPixelForValue(xScale.min) &&\n e.x < xScale.getPixelForValue(xScale.max);\n\n if (!chart.marker.enabled && !chart.marker.suppressUpdate) {\n if (e.x > xScale.getPixelForValue(xScale.max)) {\n // suppress future updates to prevent endless redrawing of chart\n chart.marker.suppressUpdate = true;\n chart.update('none');\n }\n chart.marker.dragStarted = false; // cancel zoom in progress\n return false;\n }\n chart.marker.suppressUpdate = false;\n\n chart.marker.x = e.x;\n\n chart.draw();\n },\n doDraw: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n\n if (!chart.marker.enabled) {\n return;\n }\n\n this.drawTraceLine(chart);\n this.interpolateValues(chart);\n this.drawTracePoints(chart);\n\n return true;\n },\n beforeDraw: function (chart) {\n return this.doDraw(chart);\n },\n // Logic moved to beforeDraw in order\n // for the vertical line to be drawn\n // under tooltip and datalabels.\n // afterDraw: function(chart) {\n // return this.doDraw(chart);\n // },\n\n drawTraceLine: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n var yScale = this.getYScale(chart);\n\n var lineWidth = this.getOption(chart, 'line', 'width');\n var color = this.getOption(chart, 'line', 'color');\n var dashPattern = this.getOption(chart, 'line', 'dashPattern');\n var snapEnabled = this.getOption(chart, 'snap', 'enabled');\n\n var lineX = chart.marker.x;\n\n if (snapEnabled && chart._active.length) {\n lineX = chart._active[0].element.x;\n }\n\n chart.ctx.beginPath();\n chart.ctx.setLineDash(dashPattern);\n chart.ctx.moveTo(lineX, yScale.getPixelForValue(yScale.max));\n chart.ctx.lineWidth = lineWidth;\n chart.ctx.strokeStyle = color;\n chart.ctx.lineTo(lineX, yScale.getPixelForValue(yScale.min));\n chart.ctx.stroke();\n chart.ctx.setLineDash([]);\n },\n\n drawTracePoints: function (chart) {\n if (!hasMarkerConfiguration(chart)) {\n return;\n }\n for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n var dataset = chart.data.datasets[chartIndex];\n var meta = chart.getDatasetMeta(chartIndex);\n\n var yScale = chart.scales[meta.yAxisID];\n\n if (meta.hidden || !dataset.interpolate) {\n continue;\n }\n\n chart.ctx.beginPath();\n chart.ctx.arc(\n chart.marker.x,\n yScale.getPixelForValue(dataset.interpolatedValue),\n 3,\n 0,\n 2 * Math.PI,\n false\n );\n chart.ctx.fillStyle = 'white';\n chart.ctx.lineWidth = 2;\n chart.ctx.strokeStyle = dataset.borderColor;\n chart.ctx.fill();\n chart.ctx.stroke();\n }\n },\n\n interpolateValues: function (chart) {\n for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n var dataset = chart.data.datasets[chartIndex];\n\n var meta = chart.getDatasetMeta(chartIndex);\n\n var xScale = chart.scales[meta.xAxisID];\n var xValue = xScale.getValueForPixel(chart.marker.x);\n\n if (meta.hidden || !dataset.interpolate) {\n continue;\n }\n\n var data = dataset.data;\n var index = data.findIndex(function (o) {\n return o.x >= xValue;\n });\n var prev = data[index - 1];\n var next = data[index];\n\n if (chart.data.datasets[chartIndex].steppedLine && prev) {\n dataset.interpolatedValue = prev.y;\n } else if (prev && next) {\n var slope = (next.y - prev.y) / (next.x - prev.x);\n dataset.interpolatedValue = prev.y + (xValue - prev.x) * slope;\n } else {\n dataset.interpolatedValue = NaN;\n }\n }\n },\n};\n","import { ChartType, ScriptableContext } from 'chart.js';\n\nimport { ColorHelper } from '../../../helpers';\nimport { ChartDataset } from '../chart.types';\n\nconst { getThemeColorHexString } = ColorHelper;\n\nexport const hoverBackgroundColor = getThemeColorHexString('primary');\nexport const backgroundColor = getThemeColorHexString('secondary');\n\n// Highlight elements that are added to the highlightedElements array\nexport function scriptedBackgroundColor(context: ScriptableContext<ChartType>) {\n const dataset = context.dataset as ChartDataset;\n const highlightedElements = dataset?.kirbyOptions?.highlightedElements;\n\n if (highlightedElements && highlightedElements.includes(context.dataIndex)) {\n return hoverBackgroundColor;\n } else {\n return backgroundColor;\n }\n}\n\n// Only adds a hovercolor if an onClick handler is provided\nexport function scriptedHoverBackgroundColor(context: ScriptableContext<ChartType>) {\n if (context.chart.options.onClick) {\n return hoverBackgroundColor;\n }\n}\n","import { ColorHelper } from '../../../helpers';\n\nimport { scriptedBackgroundColor, scriptedHoverBackgroundColor } from './shared.utils';\n\nconst { getThemeColorHexString } = ColorHelper;\n\nexport const CHART_GLOBAL_DEFAULTS = {\n maintainAspectRatio: false,\n color: getThemeColorHexString('black'),\n resizeDelay: 10,\n elements: {\n bar: {\n backgroundColor: scriptedBackgroundColor,\n hoverBackgroundColor: scriptedHoverBackgroundColor,\n },\n line: {\n borderColor: scriptedBackgroundColor,\n borderWidth: 2,\n tension: 0.3,\n },\n },\n scales: {\n linear: {\n display: false,\n ticks: {\n display: false,\n },\n },\n category: {\n display: true,\n grid: {\n display: false,\n },\n },\n },\n font: {\n family: 'Roboto',\n },\n plugins: {\n legend: {\n display: false,\n },\n datalabels: {\n display: false,\n },\n tooltip: {\n enabled: false,\n },\n },\n};\n","import {\n BarController,\n BarElement,\n CategoryScale,\n Chart,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Tooltip,\n} from 'chart.js';\nimport 'chartjs-adapter-date-fns';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\nimport { mergeDeepAll } from '../../../helpers/merge-deep';\nimport MarkerPlugin from '../chart-js/chartjs-plugin-marker/chartjs-plugin-marker';\nimport { CHART_GLOBAL_DEFAULTS } from '../configs/global-defaults.config';\n\nconst CHART_SCALES = [CategoryScale, LinearScale, TimeScale];\nconst CHART_ELEMENTS = [BarElement, LineElement, PointElement];\nconst CHART_CONTROLLERS = [BarController, LineController];\nconst CHART_PLUGINS = [annotationPlugin, Filler, ChartDataLabels, Tooltip, MarkerPlugin];\n\n/* Order matters; defaults must be merged after register as \n register modifies the Chart.defaults objects */\nChart.register(Legend, ...CHART_SCALES, ...CHART_ELEMENTS, ...CHART_CONTROLLERS, ...CHART_PLUGINS);\n\n/* Chart.defaults is read only; set each key modified in \n CHART_GLOBAL_DEFAULTS manually */\nconst mergedDefaults = mergeDeepAll(Chart.defaults, CHART_GLOBAL_DEFAULTS);\nObject.entries(CHART_GLOBAL_DEFAULTS).forEach(([key]) => {\n Chart.defaults[key] = mergedDefaults[key];\n});\n\nexport { Chart };\n","import { ElementRef, Injectable } from '@angular/core';\nimport { ActiveElement, ChartConfiguration, ChartOptions, ScatterDataPoint } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\nimport { toDate } from 'date-fns';\n\nimport { mergeDeepAll } from '../../../helpers/merge-deep';\nimport {\n ChartDataLabelOptions,\n ChartDataset,\n ChartHighlightedElements,\n ChartLabel,\n ChartLocale,\n ChartType,\n isNumberArray,\n} from '../chart.types';\nimport { ChartConfigService } from '../configs/chart-config.service';\n\nimport { Chart } from './configured-chart-js';\n\nconst CHART_LOCALE_DEFAULT = 'en-US';\n\n@Injectable()\nexport class ChartJSService {\n private chart: Chart;\n private dataLabelOptions: ChartDataLabelOptions;\n private highlightedElements: ChartHighlightedElements;\n private chartType: ChartType;\n private locale: ChartLocale;\n\n constructor(private chartConfigService: ChartConfigService) {}\n\n public renderChart(args: {\n targetElement: ElementRef<HTMLCanvasElement>;\n type: ChartType;\n data: ChartDataset[] | number[];\n labels?: ChartLabel[];\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n dataLabelOptions?: ChartDataLabelOptions;\n highlightedElements?: ChartHighlightedElements;\n }): void {\n const {\n targetElement,\n type,\n data,\n labels,\n customOptions,\n annotations,\n dataLabelOptions,\n highlightedElements,\n } = args;\n\n this.dataLabelOptions = dataLabelOptions || null;\n this.highlightedElements = highlightedElements || null;\n this.chartType = type;\n this.locale = dataLabelOptions?.locale || CHART_LOCALE_DEFAULT;\n\n const datasets = this.createDatasets(data);\n\n const options = this.createOptionsObject({\n customOptions,\n annotations,\n dataLabelOptions,\n });\n let config = this.createConfigurationObject(type, datasets, options, labels);\n\n this.initializeNewChart(targetElement.nativeElement, config);\n }\n\n public redrawChart() {\n this.chart.update();\n }\n\n public updateData(data: ChartDataset[] | number[]): void {\n const datasets = this.createDatasets(data);\n\n this.chart.data.datasets = datasets;\n }\n\n public updateLabels(labels: ChartLabel[]) {\n /* As labels provided via the 'labels' input property always has \n highest priority - we can just set the property directly */\n this.chart.data.labels = labels;\n }\n\n public updateType(type: ChartType, customOptions?: ChartOptions) {\n if (type === 'bar' || type === 'column') {\n /* indexAxis does not update predictably; update by replacing \n the chart entirely instead */\n this.destructivelyUpdateType(type, customOptions);\n } else {\n this.nonDestructivelyUpdateType(type, customOptions);\n }\n }\n\n public setDataLabelOptions(dataLabelOptions: ChartDataLabelOptions) {\n this.dataLabelOptions = dataLabelOptions;\n }\n\n public updateOptions(customOptions: ChartOptions, type: ChartType) {\n const annotations = this.getExistingChartAnnotations();\n this.chartType = type;\n this.chart.options = this.createOptionsObject({ customOptions, annotations });\n }\n\n public updateAnnotations(annotations: AnnotationOptions[]) {\n const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);\n this.chart.options.plugins.annotation.annotations = annotationsWithDefaults;\n }\n\n public updateHighlightedElements(highlightedElements?: ChartHighlightedElements) {\n this.highlightedElements = highlightedElements;\n const oldDatasets = this.chart.data.datasets as ChartDataset[];\n\n // Clear old datasets of highlighted elements\n oldDatasets.map((dataset) => {\n if (dataset?.kirbyOptions?.highlightedElements) {\n delete dataset.kirbyOptions.highlightedElements;\n }\n });\n\n this.chart.data.datasets = this.createDatasets(oldDatasets);\n }\n\n private getExistingChartAnnotations(): AnnotationOptions[] {\n const annotations = this.chart.options.plugins?.annotation?.annotations;\n /* In browser chart.js might return annotations as a Proxy object; force it to be an array.\n Each annotationOption in the resulting array will also be a Proxy object. \n But internally chart.js will just work with them as normal values */\n if (annotations !== undefined) {\n return Object.keys(annotations).map((key) => annotations[key]);\n } else {\n return [];\n }\n }\n\n private destructivelyUpdateType(type: ChartType, customOptions?: ChartOptions) {\n const datasets = this.chart.data.datasets as ChartDataset[];\n const labels = this.chart.data.labels as ChartLabel[]; // chart.js stores labels as unknown[]; cast it to ChartLabel[]\n const annotations = this.getExistingChartAnnotations();\n\n this.chartType = type;\n const options = this.createOptionsObject({ customOptions, annotations });\n const config = this.createConfigurationObject(type, datasets, options, labels);\n const canvasElement = this.chart.canvas;\n\n this.chart.destroy();\n this.initializeNewChart(canvasElement, config);\n }\n\n private nonDestructivelyUpdateType(chartType: ChartType, customOptions?: ChartOptions) {\n const annotations = this.getExistingChartAnnotations();\n this.chartType = chartType;\n const options = this.createOptionsObject({\n customOptions,\n annotations,\n });\n\n this.chart.options = options;\n this.chart.config.type = this.chartConfigService.chartTypeToChartJSType(chartType);\n }\n\n private initializeNewChart(canvasElement: HTMLCanvasElement, config: ChartConfiguration) {\n this.chart = new Chart(canvasElement, config);\n }\n\n private createBlankLabels(datasets: ChartDataset[]): string[] {\n const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n );\n return Array(largestDataset.data.length).fill('');\n }\n\n private applyDefaultsToAnnotations(annotations: AnnotationOptions[]) {\n return annotations.map((annotation) => {\n const annotationTypeDefaults = this.chartConfigService.getAnnotationDefaults(annotation.type);\n return mergeDeepAll(annotationTypeDefaults, annotation);\n });\n }\n\n private createAnnotationPluginOptionsObject(annotations: AnnotationOptions[]) {\n const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);\n return {\n plugins: {\n annotation: {\n annotations: annotationsWithDefaults,\n },\n },\n };\n }\n\n private applyInteractionFunctionsExtensions(options: ChartOptions): ChartOptions {\n const interactionFunctionsExtensions =\n this.chartConfigService.getInteractionFunctionsExtensions();\n Object.entries(interactionFunctionsExtensions).forEach(([key, _]) => {\n const callback = options[key];\n options[key] = (e: Event, a: ActiveElement[], c: Chart) => {\n interactionFunctionsExtensions[key](e, a, c, callback);\n };\n });\n return options;\n }\n\n private createStockOptionsObject(dataLabelOptions: ChartDataLabelOptions) {\n return {\n locale: this.locale,\n plugins: {\n tooltip: {\n callbacks: {\n title: (tooltipItems) => {\n const date = toDate((tooltipItems[0]?.raw as any)?.x);\n if (date.valueOf()) {\n return date.toLocaleTimeString(this.locale, {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n });\n }\n },\n label: (context) => {\n // It's not possible to add spacing between color legend and text so we\n // prefix with a space.\n return ' ' + context.formattedValue + (dataLabelOptions.valueSuffix || '');\n },\n },\n },\n },\n scales: {\n y: {\n ticks: {\n callback: (value) => {\n return value + (dataLabelOptions.valueSuffix || '');\n },\n },\n },\n },\n };\n }\n\n private createOptionsObject(args: {\n customOptions?: ChartOptions;\n annotations?: AnnotationOptions[];\n dataLabelOptions?: ChartDataLabelOptions;\n }): ChartOptions {\n const { customOptions, annotations, dataLabelOptions: chartDataLabelOptions } = args;\n\n const typeConfig = this.chartConfigService.getTypeConfig(this.chartType);\n const typeConfigOptions = typeConfig?.options;\n const annotationPluginOptions = annotations\n ? this.createAnnotationPluginOptionsObject(annotations)\n : {};\n const stockOptions: ChartOptions =\n this.chartType === 'stock' ? this.createStockOptionsObject(chartDataLabelOptions) : {};\n\n let options: ChartOptions = mergeDeepAll(\n stockOptions,\n typeConfigOptions,\n customOptions,\n annotationPluginOptions\n );\n\n return this.applyInteractionFunctionsExtensions(options);\n }\n\n private getDefaultStockLabels(datasets: ChartDataset[], locale: ChartLocale) {\n const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n );\n return largestDataset.data.map((point: ScatterDataPoint) =>\n toDate(point.x).toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n })\n );\n }\n\n private getLabelsToApply(args: {\n datasets: ChartDataset[];\n type: ChartType;\n indexAxis: 'x' | 'y';\n labels?: ChartLabel[];\n }) {\n const { datasets, labels, type, indexAxis } = args;\n\n const datasetHasLabels = ({ data }: ChartDataset) =>\n !!data?.some(\n (datapoint) => typeof datapoint === 'object' && typeof datapoint[indexAxis] === 'string'\n );\n\n /*\n Labels can be provided by the user two ways:\n 1. As a seperate ChartLabel[] via the 'labels' input prop - this has highest priority\n 2. Together with the dataset via the 'data' input prop - here each datapoint contains \n a label for the indexAxis. \n For example: { x: 'label1', y: 1} in the case where the index axis is 'x'. \n\n If no labels are provided then default labels are used. \n */\n const labelsAreGivenAsSeperateArray = labels !== undefined;\n const labelsAreGivenTogetherWithDataset = datasets.some(datasetHasLabels);\n\n if (labelsAreGivenAsSeperateArray) {\n return labels;\n } else if (labelsAreGivenTogetherWithDataset) {\n return null;\n } else {\n /* \n Chart.js requires labels along the index axis to render anything therefore\n all other types than stock uses empty labels as default. The stock type \n displays day & month as default. \n */\n return type === 'stock'\n ? this.getDefaultStockLabels(datasets, this.locale)\n : this.createBlankLabels(datasets);\n }\n }\n\n private createConfigurationObject(\n type: ChartType,\n datasets: ChartDataset[],\n options: ChartOptions,\n labels?: ChartLabel[]\n ): ChartConfiguration {\n const typeConfig = this.chartConfigService.getTypeConfig(type);\n\n const indexAxis = typeConfig?.options?.indexAxis ?? 'x';\n const labelsToApply = this.getLabelsToApply({ labels, datasets, type, indexAxis });\n\n return mergeDeepAll(typeConfig, {\n data: {\n labels: labelsToApply,\n datasets,\n },\n options,\n }) as ChartConfiguration;\n }\n\n private addHighlightedElementsToDatasets(\n highlightedElements: ChartHighlightedElements,\n datasets: ChartDataset[]\n ) {\n highlightedElements.forEach(([datasetIndex, dataIndex]) => {\n const dataset = datasets[datasetIndex];\n if (!dataset) return;\n\n if (dataset?.kirbyOptions?.highlightedElements) {\n dataset.kirbyOptions.highlightedElements.push(dataIndex);\n } else {\n dataset.kirbyOptions = {\n ...dataset.kirbyOptions,\n highlightedElements: [dataIndex],\n };\n }\n });\n }\n private createDatasets(data: ChartDataset[] | number[]): ChartDataset[] {\n // We need to modify the datasets in order to add datalabels.\n if (\n this.dataLabelOptions?.showCurrent ||\n this.dataLabelOptions?.showMax ||\n this.dataLabelOptions?.showMin\n ) {\n data = this.addDataLabelsData(data);\n }\n let datasets = isNumberArray(data) ? [{ data }] : data;\n if (this.highlightedElements)\n this.addHighlightedElementsToDatasets(this.highlightedElements, datasets);\n\n /* \n Hacky solution. Should be fixed in this issue:\n https://github.com/kirbydesign/designsystem/issues/1967 \n */\n if (this.chartType === 'stock') {\n datasets.forEach((dataset) => {\n dataset.kirbyOptions = {\n ...dataset.kirbyOptions,\n isStockChart: true,\n };\n });\n }\n\n return datasets;\n }\n /**\n * Decorate ChartDataset with properties to allow for datalabels.\n *\n * @param data\n * @returns ChartDataset[]\n */\n public addDataLabelsData(data: ChartDataset[] | number[]): ChartDataset[] {\n if (isNumberArray(data)) {\n throw Error(\"Currently it's impossible to add dataLabels to non ScatterDataPoint datasets\");\n }\n\n const decorateDataPoint = (\n set: ChartDataset,\n axis: 'x' | 'y',\n direction: 'high' | 'low',\n position: 'bottom' | 'top' | 'left' | 'right'\n ): void => {\n const { value, pointer } = this.locateValueIndexInDataset(set, axis, direction);\n set.data[pointer] = {\n ...(set.data[pointer] as ScatterDataPoint),\n datalabel: {\n value: value + (this.dataLabelOptions.valueSuffix || ''),\n position,\n },\n } as ScatterDataPoint;\n };\n\n data.map((set) => {\n if (this.dataLabelOptions.showMin) {\n decorateDataPoint(set, 'y', 'low', 'bottom');\n }\n if (this.dataLabelOptions.showMax) {\n decorateDataPoint(set, 'y', 'high', 'top');\n }\n if (this.dataLabelOptions.showCurrent) {\n decorateDataPoint(set, 'x', 'high', 'right');\n }\n });\n return data;\n }\n\n private locateValueIndexInDataset(\n dataset: ChartDataset,\n axis: string,\n direction: 'low' | 'high'\n ): { value: number; pointer: number } {\n let pointer: number;\n let value: number;\n dataset.data.forEach((datapoint, index) => {\n if (direction == 'low' && (!value || datapoint[axis] < value)) {\n value = datapoint['y'];\n pointer = index;\n }\n if (direction == 'high' && (!value || datapoint[axis] > value)) {\n value = datapoint['y'];\n pointer = index;\n }\n });\n return { value, pointer };\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ChartOptions } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ResizeObserverFactory } from '../shared';\n\nimport { ChartJSService } from './chart-js/chart-js.service';\nimport {\n ChartDataLabelOptions,\n ChartDataset,\n ChartHighlightedElements,\n ChartLabel,\n ChartType,\n} from './chart.types';\n\n@Component({\n selector: 'kirby-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.scss'],\n providers: [ChartJSService],\n})\nexport class ChartComponent implements AfterViewInit, OnChanges {\n @Input() type: ChartType = 'column';\n @Input() data: ChartDataset[] | number[];\n\n @Input() labels: ChartLabel[];\n\n @Input() customOptions?: ChartOptions;\n @Input() dataLabelOptions?: ChartDataLabelOptions;\n @Input() annotations?: AnnotationOptions[];\n @Input() highlightedElements?: ChartHighlightedElements;\n\n @HostBinding('style.--kirby-chart-height')\n _height: string;\n @Input() set height(value: string | number) {\n this._height = typeof value === 'number' ? `${value}px` : value;\n }\n\n @ViewChild('chartCanvas')\n canvasElement: ElementRef<HTMLCanvasElement>;\n\n private chartHasBeenRendered: boolean = false;\n\n constructor(private chartJSService: ChartJSService) {}\n\n ngAfterViewInit() {\n /* \n A chart is not rendered until it has both a height and a width. \n If ChartComponent is slotted in an ionic component it will\n not have any height or width on afterViewInit. This will cause \n the animation to not be played on first draw. \n */\n const canvasElement = this.canvasElement.nativeElement;\n this.whenElementHasHeightAndWidth(canvasElement).then(() => this.renderChart());\n }\n\n private whenElementHasHeightAndWidth(element: HTMLElement): Promise<void> {\n const rectIs2D = ({ width, height }) => height > 0 && width > 0;\n\n return new Promise((resolve) => {\n const initialClientRect = element.getBoundingClientRect();\n if (rectIs2D(initialClientRect)) resolve();\n\n const resizeObserver = new ResizeObserverFactory().create(([resizeObserverEntry]) => {\n if (rectIs2D(resizeObserverEntry.contentRect)) {\n resizeObserver.unobserve(element);\n resolve();\n }\n });\n\n resizeObserver.observe(element);\n });\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (this.chartHasBeenRendered) {\n let shouldRedrawChart = false;\n\n const keyUpdateFnPairs = {\n data: () => this.updateData(),\n labels: () => this.updateLabels(),\n type: () => this.updateType(),\n customOptions: () => this.updateCustomOptions(),\n annotations: () => this.updateAnnotations(),\n highlightedElements: () => this.updateHighlightedElements(),\n };\n\n Object.entries(simpleChanges).forEach(([key]) => {\n if (simpleChanges[key].firstChange || !keyUpdateFnPairs[key]) return;\n shouldRedrawChart = true;\n keyUpdateFnPairs[key]();\n });\n\n if (shouldRedrawChart) this.redrawChart();\n }\n }\n\n private renderChart() {\n this.chartHasBeenRendered = true;\n this.chartJSService.renderChart({\n targetElement: this.canvasElement,\n type: this.type,\n data: this.data,\n labels: this.labels,\n customOptions: this.customOptions,\n annotations: this.annotations,\n dataLabelOptions: this.dataLabelOptions,\n highlightedElements: this.highlightedElements,\n });\n }\n\n private updateData() {\n this.chartJSService.updateData(this.data);\n }\n\n private updateLabels() {\n this.chartJSService.updateLabels(this.labels);\n }\n\n private updateType() {\n this.chartJSService.updateType(this.type, this.customOptions);\n }\n\n private updateCustomOptions() {\n this.chartJSService.updateOptions(this.customOptions, this.type);\n }\n\n private updateAnnotations() {\n this.chartJSService.updateAnnotations(this.annotations);\n }\n\n private updateHighlightedElements() {\n this.chartJSService.updateHighlightedElements(this.highlightedElements);\n }\n\n private redrawChart() {\n this.chartJSService.redrawChart();\n }\n}\n","<div class=\"chart-container\">\n <canvas #chartCanvas>\n <!-- Slotted content makes it possible to insert fallback content for screen readers \n https://www.chartjs.org/docs/latest/general/accessibility.html-->\n <ng-content></ng-content>\n </canvas>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { ChartComponent } from './chart.component';\nimport { ChartConfigService } from './configs/chart-config.service';\n\n@NgModule({\n declarations: [ChartComponent],\n exports: [ChartComponent],\n providers: [ChartConfigService],\n})\nexport class ChartModule {}\n","import { formatNumber } from '@angular/common';\nimport { Options } from 'highcharts';\nimport { dateFormat } from 'highcharts/highstock';\n\nimport { ColorHelper } from '@kirbydesign/core';\n\nexport interface StockChartDeprecatedDataPoint {\n x: number;\n y: number;\n id: 'min' | 'max' | '';\n}\n\nexport const stockChartDeprecatedOptions = (locale: string, height: number) => {\n const options: Options = defaultOptions(locale) as Options;\n const transparentColor = 'rgba(255,255,255,0)';\n options.chart.backgroundColor = transparentColor;\n options.chart.height = height;\n\n options.tooltip.backgroundColor = ColorHelper.getThemeColorRgbString('background-color');\n // Using a function instead of a lamdba-expression because of a reference to this.\n options.tooltip.formatter = function () {\n return (\n '<div class=\"kirby-text-xsmall\">' +\n // @ts-ignore\n dateFormat('%e. %b', new Date(this.x)) +\n '</div><br/><div class=\"kirby-text-small kirby-text-bold\">' +\n formatNumber(this.y, locale) +\n '</div>'\n );\n };\n options.plotOptions.area.fillColor = transparentColor;\n options.plotOptions.area.lineColor = ColorHelper.getThemeColorRgbString('tertiary');\n\n options.plotOptions.area.marker.lineColor = 'rgba(255,255,255,0.3)';\n options.plotOptions.area.marker.fillColor = ColorHelper.getThemeColorRgbString('primary');\n\n options.xAxis = {\n ...options.xAxis,\n crosshair: {\n color: ColorHelper.getThemeColorRgbString('primary'),\n },\n tickColor: transparentColor,\n lineColor: ColorHelper.getThemeColorRgbString('medium'),\n labels: {\n style: {\n color: ColorHelper.getThemeColorRgbString('semi-dark-tint'),\n },\n },\n };\n\n options.yAxis = {\n ...options.yAxis,\n lineColor: transparentColor,\n gridLineColor: ColorHelper.getThemeColorRgbString('medium'),\n labels: {\n style: {\n color: ColorHelper.getThemeColorRgbString('semi-dark-tint'),\n },\n },\n };\n\n /*\n // Using a function instead of a lamdba-expression because of a reference to this.\n options.plotOptions.area.events.mouseOver = function() {\n const transparentColor = 'rgba(255,255,255,0)';\n this.chart.xAxis[0].update({\n tickColor: transparentColor,\n lineColor: ColorHelper.getThemeColorRgbString('medium'),\n labels: {\n style: {\n color: ColorHelper.getThemeColorRgbString('semi-dark-tint'),\n },\n },\n });\n };\n\n // Using a function instead of a lamdba-expression because of a reference to this.\n options.plotOptions.area.events.mouseOut = function() {\n const transparentColor = 'rgba(255,255,255,0)';\n this.chart.xAxis[0].update({\n lineColor: transparentColor,\n labels: {\n style: {\n color: transparentColor,\n },\n },\n });\n };\n */\n\n return options;\n};\n\nexport const annotations = (locale: string): Highcharts.AnnotationsOptions => {\n return {\n id: 'minmax',\n zIndex: 2,\n labels: [\n {\n point: 'max',\n shape: 'rect',\n distance: 5,\n align: 'center',\n verticalAlign: 'top',\n backgroundColor: ColorHelper.getThemeColorRgbString('tertiary'),\n // Using a function instead of a lamdba-expression because of a reference to this.\n formatter: function () {\n return formatNumber(this.y, locale, '1.1-1');\n },\n },\n {\n point: 'min',\n shape: 'rect',\n distance: -28,\n align: 'center',\n verticalAlign: 'bottom',\n backgroundColor: ColorHelper.getThemeColorRgbString('tertiary'),\n // Using a function instead of a lamdba-expression because of a reference to this.\n formatter: function () {\n return formatNumber(this.y, locale, '1.1-1');\n },\n },\n ],\n labelOptions: {\n y: 0,\n allowOverlap: true,\n },\n };\n};\n\nconst defaultOptions = (locale: string) => {\n return {\n chart: {\n zoomType: 'x',\n type: 'StockChart',\n spacingTop: 30,\n //spacingRight: 55,\n },\n navigator: {\n enabled: false,\n },\n rangeSelector: {\n enabled: false,\n },\n scrollbar: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n title: {\n text: '',\n },\n subtitle: {\n text: '',\n },\n xAxis: {\n ordinal: true,\n type: 'datetime',\n lineWidth: 0.5,\n opposite: false,\n labels: {\n format: '{value:%Y-%b-%e %l:%M %p }',\n },\n },\n yAxis: {\n opposite: false,\n title: {\n text: '',\n },\n /* Doesn't work before upgrade.\n labels: {\n x: 0,\n y: 10,\n align: 'right',\n },\n */\n },\n annotations: [annotations(locale)],\n legend: {\n enabled: false,\n },\n tooltip: {\n crosshairs: {\n width: 1,\n zIndex: 2,\n },\n shadow: false,\n borderWidth: 0,\n },\n plotOptions: {\n area: {\n marker: {\n lineWidth: 16,\n radius: 7,\n },\n lineWidth: 2,\n states: {\n hover: {\n lineWidth: 2,\n },\n },\n events: {},\n threshold: null,\n },\n series: {\n marker: {\n zIndex: 100,\n enabledThreshold: 50,\n },\n },\n },\n series: [\n {\n type: 'area',\n data: [],\n },\n ],\n };\n};\n","import { Component, ElementRef, Inject, Input, LOCALE_ID } from '@angular/core';\nimport { Options } from 'highcharts';\nimport * as Highcharts from 'highcharts/highstock';\nimport AnnotationsModule from 'highcharts/modules/annotations';\n\nimport {\n annotations,\n StockChartDeprecatedDataPoint,\n} from './options/stock-chart-deprecated-options';\n\n// @ts-ignore\nAnnotationsModule(Highcharts);\n\n@Component({\n selector: 'kirby-stock-chart-deprecated',\n template: '',\n styleUrls: ['./stock-chart-deprecated.component.scss'],\n})\nexport class StockChartDeprecatedComponent {\n chartContainer: ElementRef;\n private _data: StockChartDeprecatedDataPoint[];\n @Input() set data(val: StockChartDeprecatedDataPoint[]) {\n this.onDataChanges(val);\n }\n get data() {\n return this._data;\n }\n private _options: Options;\n @Input() set options(val: Options) {\n this.onOptionsChanges(val);\n }\n get options() {\n return this._options;\n }\n private _height = 300;\n @Input() set height(height: number) {\n this._height = height;\n if (this.chart) {\n this.chart.setSize(null, height);\n }\n }\n get height() {\n return this._height;\n }\n @Input() description = '';\n @Input() showDataLabels = true;\n\n chart: Highcharts.Chart;\n\n constructor(hostElement: ElementRef, @Inject(LOCALE_ID) private locale: string) {\n this.chartContainer = hostElement;\n }\n\n onOptionsChanges(options: Options) {\n this._options = options;\n this.chart = Highcharts.stockChart(this.chartContainer.nativeElement, this._options);\n }\n\n onDataChanges(data: StockChartDeprecatedDataPoint[]) {\n this._data = data;\n\n if (this.chart != null) {\n // First delete all points in the previous series.\n this.chart.update(\n {\n series: [],\n },\n false,\n true\n );\n // Remove the annotations.\n this.chart.removeAnnotation('minmax');\n // Then update the chart with new series data.\n this.chart.update(\n {\n series: [\n {\n type: 'area',\n data: data,\n },\n ],\n },\n false,\n true\n );\n // Add the new annotations.\n this.chart.addAnnotation(annotations(this.locale), false);\n // And finally redraw the graph with all the changes.\n this.chart.redraw();\n }\n }\n}\n","import { ElementRef, Injectable } from '@angular/core';\n\nimport { WindowRef } from '../../../types/window-ref';\n\nimport { CalendarOptions } from './calendar-options.model';\n\n@Injectable()\nexport class CalendarHelper {\n private embeddedView: Window;\n private embeddedViewReady = false;\n\n constructor(private windowRef: WindowRef) {}\n\n public init(\n calendarContainer: ElementRef,\n options: CalendarOptions,\n onDaySelected: (cell: { isSelectable: boolean; date: number }) => void,\n onChangeMonth: (index: number) => void\n ) {\n if (this.hasEmbeddedView(calendarContainer)) {\n const iframe = <HTMLIFrameElement>calendarContainer.nativeElement;\n iframe.onload = () => {\n this.embeddedViewReady = true;\n this.emitOptionsToEmbeddedView(options);\n };\n this.embeddedView = iframe.contentWindow;\n\n this.windowRef.nativeWindow.addEventListener('message', (event: MessageEvent) =>\n this.handleMessageEvent(event, onDaySelected, onChangeMonth)\n );\n }\n }\n\n public update(options: CalendarOptions) {\n if (this.embeddedViewReady) {\n this.emitOptionsToEmbeddedView(options);\n }\n }\n\n public setSelectedDay(day: number) {\n if (this.embeddedViewReady) {\n this.embeddedView.postMessage(\n {\n type: 'kirbyCalendarSetSelectedDay',\n selectedDay: day,\n },\n '*'\n );\n }\n }\n\n private hasEmbeddedView(calendarContainer: ElementRef) {\n return (\n calendarContainer &&\n calendarContainer.nativeElement &&\n calendarContainer.nativeElement instanceof HTMLIFrameElement &&\n calendarContainer.nativeElement.contentWindow\n );\n }\n\n private emitOptionsToEmbeddedView(options: CalendarOptions) {\n this.embeddedView.postMessage(\n {\n type: 'kirbyCalendarInit',\n ...options,\n },\n '*'\n );\n }\n\n private handleMessageEvent(\n event: MessageEvent,\n onDaySelected: (cell: { isSelectable: boolean; date: number }) => void,\n onChangeMonth: (index: number) => void\n ) {\n if (this.validateMessage(event)) {\n switch (event.data.type) {\n case 'kirbyCalendarDaySelected':\n if (this.validateDateSelectedMessage(event)) {\n onDaySelected({ isSelectable: true, date: event.data.day });\n }\n break;\n case 'kirbyCalendarChangeMonth':\n if (this.validateNavigateMonthMessage(event)) {\n onChangeMonth(event.data.index);\n }\n break;\n }\n }\n }\n\n private validateMessage(event: MessageEvent) {\n return (\n this.embeddedView === event.source &&\n event.type === 'message' &&\n event.data &&\n event.data.type\n );\n }\n\n private validateDateSelectedMessage(event: MessageEvent) {\n return event.data.type === 'kirbyCalendarDaySelected' && event.data.day;\n }\n\n private validateNavigateMonthMessage(event: MessageEvent) {\n return event.data.type === 'kirbyCalendarChangeMonth' && typeof event.data.index === 'number';\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nexport enum ItemSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n}\n\n@Component({\n selector: 'kirby-item',\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItemComponent {\n @Input() disabled: boolean;\n @HostBinding('class.selected')\n @Input()\n selected: boolean;\n @Input()\n selectable: boolean;\n @Input()\n reorderable: boolean;\n @HostBinding('class')\n @Input()\n size: ItemSize | `${ItemSize}` = ItemSize.MD;\n\n // Prevent default when inside kirby-dropdown to avoid blurring dropdown:\n onMouseDown(event: MouseEvent) {\n if (\n event.currentTarget instanceof HTMLElement &&\n event.currentTarget.closest('kirby-dropdown')\n ) {\n event.preventDefault();\n }\n }\n}\n","<ion-item\n lines=\"none\"\n [attr.disabled]=\"disabled\"\n [attr.button]=\"selectable ? true : null\"\n [attr.tabindex]=\"selectable ? null : 0\"\n detail=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n>\n <div class=\"outside\" slot=\"start\">\n <ng-content select=\"[slot='outside']\"></ng-content>\n </div>\n <ng-content></ng-content>\n <ion-reorder slot=\"end\" *ngIf=\"reorderable\">\n <kirby-icon name=\"reorder\"></kirby-icon>\n </ion-reorder>\n</ion-item>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[kirbyListItemTemplate]',\n})\nexport class ListItemTemplateDirective {}\n\n@Directive({\n selector: '[kirbyListHeader], [kirbyListHeaderTemplate]',\n})\nexport class ListHeaderDirective {}\n\n@Directive({\n selector: '[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]',\n})\nexport class ListSectionHeaderDirective {}\n\n@Directive({\n selector: '[kirbyListFooter], [kirbyListFooterTemplate]',\n})\nexport class ListFooterDirective {}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\n\nimport { DesignTokenHelper } from '../../helpers';\n\nexport enum HorizontalDirection {\n right = 'right',\n left = 'left',\n}\n\n@Component({\n selector: 'kirby-popover',\n template: ` <div #wrapper class=\"wrapper\"><ng-content></ng-content></div> `,\n styleUrls: ['./popover.component.scss'],\n})\nexport class PopoverComponent implements AfterViewInit, OnDestroy {\n // removeEventListener same instance of event handler & options\n private readonly preventScrollEventListenerOptions = {\n passive: false,\n } as EventListenerOptions;\n\n private readonly POPOVER_BODY_PADDING = 12;\n\n private isShowing: boolean = false;\n private isFirstToLockScroll: boolean;\n private zIndex: number;\n private document: Document;\n\n @ViewChild('wrapper', { static: true, read: ElementRef })\n wrapperElement: ElementRef<HTMLDivElement>;\n\n @Input()\n popout: HorizontalDirection | `${HorizontalDirection}` = HorizontalDirection.right;\n\n @Input()\n target: HTMLElement | ElementRef<HTMLElement>;\n\n @Output()\n willHide = new EventEmitter<void>();\n\n private get targetElement(): HTMLElement {\n if (this.target instanceof ElementRef) {\n return this.target.nativeElement;\n } else {\n return this.target;\n }\n }\n\n @HostListener('click')\n _backdropClick() {\n this.willHide.emit();\n this.hide();\n }\n\n @HostListener('window:resize')\n _onWindowResize() {\n if (this.isShowing) {\n this.willHide.emit();\n this.hide();\n }\n }\n\n constructor(private elementRef: ElementRef<HTMLElement>, private renderer: Renderer2) {\n this.document = elementRef.nativeElement.ownerDocument;\n }\n\n ngAfterViewInit(): void {\n this.placePopoverAboveClosestModal();\n this.renderer.removeChild(\n this.elementRef.nativeElement.parentElement,\n this.elementRef.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n private placePopoverAboveClosestModal() {\n const closestIonModal = this.elementRef.nativeElement.closest('ion-modal');\n if (closestIonModal) {\n this.zIndex = parseInt(closestIonModal.style.zIndex) + 1;\n this.elementRef.nativeElement.style.zIndex = `${this.zIndex}`;\n } else {\n this.zIndex = parseInt(DesignTokenHelper.zLayer('popover'));\n }\n }\n\n // document.removeEventListener needs the exact same event handler & options reference:\n private preventEvent(event: TouchEvent) {\n event.preventDefault();\n }\n\n private preventScroll() {\n this.isFirstToLockScroll = !this.document.body.classList.contains('backdrop-no-scroll');\n if (this.isFirstToLockScroll) {\n this.renderer.addClass(this.document.body, 'backdrop-no-scroll');\n }\n\n // preventDefault does not work with Renderer2.listen method; add event listener directly to document instead\n this.document.addEventListener(\n 'touchmove',\n this.preventEvent,\n this.preventScrollEventListenerOptions\n );\n }\n\n private releaseScroll() {\n if (this.isFirstToLockScroll) {\n this.renderer.removeClass(this.document.body, 'backdrop-no-scroll');\n }\n\n this.document.removeEventListener(\n 'touchmove',\n this.preventEvent,\n this.preventScrollEventListenerOptions\n );\n }\n\n show() {\n this.renderer.addClass(this.elementRef.nativeElement, 'is-opening');\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n\n this.preventScroll();\n this.positionWrapper();\n\n this.renderer.addClass(this.elementRef.nativeElement, 'is-open');\n this.renderer.removeClass(this.elementRef.nativeElement, 'is-opening');\n\n this.isShowing = true;\n }\n\n hide() {\n this.renderer.removeChild(this.document.body, this.elementRef.nativeElement);\n this.releaseScroll();\n\n this.renderer.removeStyle(this.targetElement, 'z-index');\n this.renderer.removeStyle(this.targetElement, 'pointer-events');\n this.isShowing = false;\n }\n\n private positionWrapper() {\n const targetDimensions = this.targetElement.getBoundingClientRect();\n\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n\n const wrapperElement = this.wrapperElement.nativeElement;\n const wrapperDimensions = wrapperElement.getBoundingClientRect();\n const viewport = wrapperElement.ownerDocument.defaultView;\n this.positionHorizontally(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n this.positionVertically(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n }\n\n private positionHorizontally(\n viewPort: Window,\n wrapperElement: HTMLDivElement,\n targetDimensions: DOMRect,\n wrapperDimensions: DOMRect\n ) {\n const viewPortWidth = viewPort.innerWidth;\n const contentWidth = wrapperDimensions.width;\n const availableSpaceRight = viewPortWidth - targetDimensions.left;\n const availableSpaceLeft = targetDimensions.right;\n const contentCanFitRightOfTarget =\n availableSpaceRight >= contentWidth + this.POPOVER_BODY_PADDING;\n const openRight = contentCanFitRightOfTarget || availableSpaceRight >= availableSpaceLeft;\n\n const [direction, oppositeDirection] =\n this.popout === HorizontalDirection.left || !openRight\n ? ['left', 'right']\n : ['right', 'left'];\n\n const pxValue =\n direction === 'left' ? viewPortWidth - targetDimensions.right : targetDimensions.left;\n\n this.renderer.removeStyle(wrapperElement, direction);\n this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n }\n\n private positionVertically(\n viewPort: Window,\n wrapperElement: HTMLDivElement,\n targetDimensions: DOMRect,\n wrapperDimensions: DOMRect\n ) {\n const viewPortHeight = viewPort.innerHeight;\n const contentHeight = wrapperDimensions.height;\n const availableSpaceDown = viewPortHeight - targetDimensions.bottom;\n const availableSpaceUp = targetDimensions.top;\n const contentCanFitBelowTarget =\n availableSpaceDown >= contentHeight + this.POPOVER_BODY_PADDING;\n\n const isAvailableSpaceBelow =\n contentCanFitBelowTarget || availableSpaceDown >= availableSpaceUp;\n const [direction, oppositeDirection] = isAvailableSpaceBelow\n ? ['bottom', 'top']\n : ['top', 'bottom'];\n\n const pxValue =\n direction === 'bottom' ? targetDimensions.bottom : viewPortHeight - targetDimensions.top;\n\n this.renderer.removeStyle(wrapperElement, direction);\n this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n\n if (direction === 'top') {\n // Ensure target is elevated above shadows in popover, i.e. content wrapped in Card:\n this.renderer.setStyle(this.targetElement, 'z-index', `${this.zIndex + 1}`);\n this.renderer.setStyle(this.targetElement, 'pointer-events', 'none');\n }\n }\n}\n","export enum OpenState {\n closed,\n opening,\n open,\n}\n\nexport enum VerticalDirection {\n up,\n down,\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KeyboardHandlerService {\n handle(event: KeyboardEvent, items: any[] | string[], selectedIndex: number) {\n let newIndex = -1;\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowLeft':\n // Select previous item:\n newIndex = selectedIndex - 1;\n break;\n case 'ArrowDown':\n case 'ArrowRight':\n if (selectedIndex === undefined) {\n // None selected, select first item:\n newIndex = 0;\n } else if (selectedIndex < items.length - 1) {\n // Select next item:\n newIndex = selectedIndex + 1;\n }\n break;\n case 'Home':\n // Select first item:\n newIndex = 0;\n break;\n case 'End':\n // Select last item:\n newIndex = items.length - 1;\n break;\n default:\n break;\n }\n return newIndex;\n }\n}\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n RendererStyleFlags2,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ButtonComponent } from '../button/button.component';\nimport { CardComponent } from '../card/card.component';\nimport { ItemComponent } from '../item/item.component';\nimport { ListItemTemplateDirective } from '../list/list.directive';\nimport { HorizontalDirection, PopoverComponent } from '../popover/popover.component';\n\nimport { OpenState, VerticalDirection } from './dropdown.types';\nimport { KeyboardHandlerService } from './keyboard-handler.service';\n\n@Component({\n selector: 'kirby-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true,\n },\n ],\n})\nexport class DropdownComponent\n implements AfterContentChecked, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n static readonly OPEN_DELAY_IN_MS = 100;\n private state = OpenState.closed;\n private hasConfiguredSlottedItems = false;\n private horizontalDirection: HorizontalDirection | `${HorizontalDirection}` =\n HorizontalDirection.right;\n private verticalDirection: VerticalDirection | `${VerticalDirection}` = VerticalDirection.down;\n\n private _items: string[] | any[] = [];\n get items(): string[] | any[] {\n return this._items;\n }\n\n @Input() set items(value: string[] | any[]) {\n this._items = value;\n this._value = this.items[this.selectedIndex] || null;\n }\n\n private _selectedIndex: number = -1;\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n @Input() set selectedIndex(value: number) {\n if (this._selectedIndex != value) {\n this._selectedIndex = value;\n this._value = this.items[this.selectedIndex] || null;\n }\n }\n\n @Input()\n itemTextProperty = 'text';\n\n @Input()\n placeholder = 'Please select:';\n\n @Input() set popout(direction: HorizontalDirection | `${HorizontalDirection}`) {\n this.horizontalDirection = direction || HorizontalDirection.right;\n }\n\n get popout() {\n return this.horizontalDirection;\n }\n\n @Input()\n attentionLevel: '1' | '2' | '3' | '4' = '3';\n readonly attentionLevelOpen = '2';\n\n @Input()\n expand?: 'block';\n\n @Input()\n disabled = false;\n\n @HostBinding('attr.disabled')\n get _isDisabled() {\n return this.disabled ? 'disabled' : null;\n }\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @Input()\n size: 'sm' | 'md' = 'md';\n\n @Input()\n tabindex = 0;\n\n @HostBinding('class.with-popover')\n @Input()\n usePopover = false;\n\n @HostBinding('attr.tabindex')\n get _tabindex() {\n return this.disabled ? -1 : this.tabindex;\n }\n\n // Prevent Ionic blur on scroll\n @HostBinding('attr.no-blur')\n get _noBlurOnScroll() {\n return true;\n }\n\n /**\n * Emitted when an item is selected (tap on mobile, click/keypress on web)\n */\n @Output() change: EventEmitter<string | any> = new EventEmitter<string | any>();\n\n private _value: string | any = null;\n get value(): string | any {\n return this._value;\n }\n\n get selectedText(): string {\n return this.getTextFromItem(this.value);\n }\n\n @HostBinding('class.expand')\n get _isBlockLevel() {\n return this.expand === 'block';\n }\n\n @HostBinding('attr.role')\n _role = 'listbox';\n\n @HostBinding('class.is-opening')\n get _isOpening(): boolean {\n return this.state === OpenState.opening;\n }\n\n @HostBinding('class.is-open')\n get isOpen(): boolean {\n return this.state === OpenState.open;\n }\n\n @HostBinding('class.popout-left')\n get _popoutLeft() {\n return this.horizontalDirection === HorizontalDirection.left;\n }\n\n @HostBinding('class.popout-up')\n get _popoutUp() {\n return this.verticalDirection === VerticalDirection.up;\n }\n\n @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n itemTemplate: TemplateRef<any>;\n @ContentChildren(ListItemTemplateDirective, { read: ElementRef })\n slottedItems: QueryList<ElementRef<HTMLElement>>;\n @ViewChild(CardComponent, { read: ElementRef })\n cardElement: ElementRef<HTMLElement>;\n @ViewChild(PopoverComponent)\n popover?: PopoverComponent;\n @ViewChild(ButtonComponent, { static: true, read: ElementRef })\n buttonElement: ElementRef<HTMLElement>;\n @ViewChildren(ItemComponent, { read: ElementRef })\n kirbyItemsDefault: QueryList<ElementRef<HTMLElement>>;\n @ContentChildren(ItemComponent, { read: ElementRef })\n kirbyItemsSlotted: QueryList<ElementRef<HTMLElement>>;\n\n private itemClickUnlisten: (() => void)[] = [];\n private intersectionObserverRef: IntersectionObserver;\n private showDropdownTimeoutId: ReturnType<typeof setTimeout>;\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef<HTMLElement>,\n private changeDetectorRef: ChangeDetectorRef,\n private keyboardHandlerService: KeyboardHandlerService\n ) {}\n\n onToggle(event: MouseEvent) {\n event.stopPropagation();\n if (!this.isOpen) {\n this.elementRef.nativeElement.focus();\n }\n this.toggle();\n }\n\n toggle() {\n if (this.disabled) {\n return;\n }\n this.isOpen ? this.close() : this.open();\n }\n\n onButtonMouseEvent(event: Event) {\n // Prevent button focus;\n event.preventDefault();\n }\n\n ngAfterContentChecked() {\n if (!this.hasConfiguredSlottedItems && this.kirbyItemsSlotted.length) {\n this.kirbyItemsSlotted.forEach((kirbyItem, index) => {\n this.renderer.setAttribute(kirbyItem.nativeElement, 'role', 'option');\n const unlisten = this.renderer.listen(kirbyItem.nativeElement, 'click', () => {\n this.onItemSelect(index);\n });\n this.itemClickUnlisten.push(unlisten);\n });\n this.hasConfiguredSlottedItems = true;\n }\n }\n\n /* Utility that makes it easier to set styles on card element \n when using popover*/\n private setPopoverCardStyle(style: string, value: string) {\n if (!this.usePopover) return;\n\n this.renderer.setStyle(\n this.cardElement.nativeElement,\n style,\n value,\n RendererStyleFlags2.DashCase\n );\n }\n\n ngAfterViewInit() {\n if (this.usePopover && this.expand === 'block') {\n const { width } = this.elementRef.nativeElement.getBoundingClientRect();\n this.setPopoverCardStyle('--kirby-card-width', `${width}px`);\n this.setPopoverCardStyle('max-width', 'initial');\n this.setPopoverCardStyle('min-width', 'initial');\n }\n this.initializeAlignment();\n }\n\n private initializeAlignment() {\n if (this.usePopover) return;\n if (!this.intersectionObserverRef) {\n const options = {\n rootMargin: '0px',\n };\n const callback: IntersectionObserverCallback = (entries) => {\n // Only apply alignment when opening:\n if (this.state !== OpenState.opening) {\n return;\n }\n\n // Cancel any pending timer to show dropdown:\n clearTimeout(this.showDropdownTimeoutId);\n const entry = entries[0];\n const isVisible = entry.boundingClientRect.width > 0;\n if (isVisible && entry.intersectionRatio < 1) {\n this.setHorizontalDirection(entry);\n this.setVerticalDirection(entry);\n }\n this.showDropdown();\n this.changeDetectorRef.detectChanges();\n };\n this.intersectionObserverRef = new IntersectionObserver(callback, options);\n this.intersectionObserverRef.observe(this.cardElement.nativeElement);\n }\n }\n\n private setHorizontalDirection(entry: IntersectionObserverEntry) {\n // If popout direction is set to right, and the entry is cut off to the right by ${entry.boundingClientRect.right - entry.intersectionRect.right}px\n // it is set to popout left instead, and vice versa for popout direction left\n if (this.horizontalDirection === HorizontalDirection.right) {\n if (entry.boundingClientRect.right > entry.rootBounds.right) {\n this.horizontalDirection = HorizontalDirection.left;\n }\n } else {\n if (entry.boundingClientRect.left < entry.rootBounds.left) {\n this.horizontalDirection = HorizontalDirection.right;\n }\n }\n }\n\n private setVerticalDirection(entry: IntersectionObserverEntry) {\n if (entry.boundingClientRect.top < 0) {\n // entry is cut off at the top by ${entry.boundingClientRect.top}px\n // open downwards:\n this.verticalDirection = VerticalDirection.down;\n }\n if (entry.boundingClientRect.bottom > entry.rootBounds.bottom) {\n // entry is cut off at the bottom by ${entry.boundingClientRect.bottom - entry.intersectionRect.bottom}px\n const containerOffsetTop = this.elementRef.nativeElement.getBoundingClientRect().top;\n const SPACING = 5; //TODO: Get from SCSS\n // Check if the card can fit on top of button:\n if (containerOffsetTop > entry.target.clientHeight + SPACING) {\n // open upwards:\n this.verticalDirection = VerticalDirection.up;\n }\n }\n }\n\n open() {\n if (this.disabled) {\n return;\n }\n if (!this.isOpen) {\n this.state = OpenState.opening;\n // ensures that the dropdown is opened in case the IntersectionObserverCallback isn't invoked\n this.showDropdownTimeoutId = setTimeout(\n () => this.showDropdown(),\n DropdownComponent.OPEN_DELAY_IN_MS\n );\n }\n }\n\n private showDropdown() {\n if (this.state === OpenState.opening) {\n this.state = OpenState.open;\n this.popover?.show();\n this.scrollItemIntoView(this.selectedIndex);\n this.changeDetectorRef.markForCheck();\n }\n }\n\n close() {\n if (this.disabled) {\n return;\n }\n if (this.isOpen) {\n this.state = OpenState.closed;\n // Reset vertical direction to default\n this.verticalDirection = VerticalDirection.down;\n this.popover?.hide();\n }\n }\n\n onItemSelect(index: number) {\n this.selectItem(index);\n this.close();\n }\n\n private _onChange: (value: any) => void = () => {};\n private _onTouched = () => {};\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n this._selectItemByValue(value);\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private selectItem(index: number) {\n if (index != this.selectedIndex) {\n this.selectedIndex = index;\n this.change.emit(this.value);\n this._onChange(this.value);\n this.scrollItemIntoView(index);\n }\n }\n\n private _selectItemByValue(value: string | any) {\n this.selectedIndex = this.items.indexOf(value);\n }\n\n getTextFromItem(item: string | any) {\n if (!item) {\n return null;\n }\n return typeof item === 'string' ? item : item[this.itemTextProperty];\n }\n\n scrollItemIntoView(index: number) {\n const kirbyItems =\n this.kirbyItemsSlotted && this.kirbyItemsSlotted.length\n ? this.kirbyItemsSlotted\n : this.kirbyItemsDefault;\n if (kirbyItems && kirbyItems.length) {\n const selectedKirbyItem = kirbyItems.toArray()[index];\n if (selectedKirbyItem && selectedKirbyItem.nativeElement) {\n const itemElement = selectedKirbyItem.nativeElement;\n const scrollContainer = this.cardElement.nativeElement;\n const itemTop = itemElement.offsetTop;\n const itemBottom = itemElement.offsetTop + itemElement.offsetHeight;\n const containerVisibleTop = scrollContainer.scrollTop;\n const containerVisibleBottom = scrollContainer.clientHeight + scrollContainer.scrollTop;\n if (itemTop < containerVisibleTop) {\n scrollContainer.scrollTop = itemTop;\n } else if (itemBottom > containerVisibleBottom) {\n scrollContainer.scrollTop = itemBottom - scrollContainer.clientHeight;\n }\n }\n }\n }\n\n @HostListener('keydown.tab', ['$event'])\n _onTab(event: KeyboardEvent) {\n if (this.isOpen) {\n event.preventDefault();\n this.close();\n }\n }\n\n @HostListener('mousedown', ['$event'])\n _onMouseDown(event: MouseEvent) {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('focus')\n _onFocus() {\n if (this.disabled) {\n this.elementRef.nativeElement.blur();\n }\n }\n\n _onPopoverWillHide() {\n this.state = OpenState.closed;\n this.elementRef.nativeElement.focus();\n }\n\n @HostListener('keydown.enter')\n @HostListener('keydown.escape')\n @HostListener('blur', ['$event'])\n _onBlur(event?: FocusEvent) {\n if (this.disabled) return;\n if (this.isOpen) {\n if (!this.cardElement.nativeElement.contains(event?.relatedTarget as HTMLElement)) {\n this.close();\n }\n }\n this._onTouched();\n }\n\n @HostListener('keydown.space', ['$event'])\n _onSpace(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.isOpen) {\n this.open();\n }\n }\n\n @HostListener('keydown.enter', ['$event'])\n _onEnter(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.toggle();\n }\n\n @HostListener('keydown.arrowup', ['$event'])\n @HostListener('keydown.arrowdown', ['$event'])\n @HostListener('keydown.arrowleft', ['$event'])\n @HostListener('keydown.arrowright', ['$event'])\n _onArrowKeys(event: KeyboardEvent) {\n if (this.disabled) return;\n // Mirror default HTML5 select behaviour - prevent left/right arrows when open:\n if (this.isOpen && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {\n return;\n }\n const newIndex = this.keyboardHandlerService.handle(event, this.items, this.selectedIndex);\n if (newIndex > -1) {\n this.selectItem(newIndex);\n }\n return false;\n }\n\n @HostListener('keydown.home', ['$event'])\n @HostListener('keydown.end', ['$event'])\n _onHomeEndKeys(event: KeyboardEvent) {\n if (this.disabled) return;\n const newIndex = this.keyboardHandlerService.handle(event, this.items, this.selectedIndex);\n if (newIndex > -1) {\n this.selectItem(newIndex);\n }\n return false;\n }\n\n ngOnDestroy(): void {\n let unlisten: () => void;\n while ((unlisten = this.itemClickUnlisten.pop()) !== undefined) {\n unlisten();\n }\n if (this.intersectionObserverRef) {\n this.intersectionObserverRef.disconnect();\n }\n }\n}\n","<button\n kirby-button\n [size]=\"size\"\n [attentionLevel]=\"isOpen ? attentionLevelOpen : attentionLevel\"\n tabindex=\"-1\"\n (click)=\"onToggle($event)\"\n (mousedown)=\"onButtonMouseEvent($event)\"\n [disabled]=\"disabled\"\n type=\"button\"\n>\n <span class=\"text\">{{ selectedText || placeholder }}</span>\n <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n <kirby-popover [target]=\"buttonElement\" [popout]=\"popout\" (willHide)=\"_onPopoverWillHide()\">\n <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n <kirby-card>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: { $implicit: item, selected: i === selectedIndex, index: i }\n \"\n ></ng-container>\n </ng-container>\n </kirby-card>\n</ng-template>\n\n<ng-template #defaultItemTemplate let-item let-selected=\"selected\" let-index=\"index\">\n <kirby-item [selectable]=\"true\" [selected]=\"selected\" (click)=\"onItemSelect(index)\" role=\"option\">\n <!-- Tabindex fixes issue with popover dropdown not working in safari -->\n <h3 tabindex=\"0\">{{ getTextFromItem(item) }}</h3>\n <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n </kirby-item>\n</ng-template>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {\n add,\n differenceInDays,\n eachDayOfInterval,\n endOfMonth,\n endOfWeek,\n format,\n getYear,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isWeekend,\n Locale as LocaleDateFns,\n startOfDay,\n startOfMonth,\n startOfWeek,\n} from 'date-fns';\nimport { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\nimport { da, enGB, enUS } from 'date-fns/locale';\n\nimport { capitalizeFirstLetter } from '@kirbydesign/core';\n\nimport { CalendarCell } from './helpers/calendar-cell.model';\nimport { CalendarOptions } from './helpers/calendar-options.model';\nimport { CalendarHelper } from './helpers/calendar.helper';\nimport { CalendarYearNavigatorConfig } from './options/calendar-year-navigator-config';\n\nexport type Locale = LocaleDateFns;\ninterface CalendarDay {\n isCurrentMonth: boolean;\n isToday: boolean;\n isWeekend: boolean;\n isPast: boolean;\n isFuture: boolean;\n isDisabled: boolean;\n}\n\nenum TimeUnit {\n years = 'years',\n months = 'months',\n weeks = 'weeks',\n days = 'days',\n hours = 'hours',\n minutes = 'minutes',\n seconds = 'seconds',\n milliseconds = 'milliseconds',\n}\n\n@Component({\n selector: 'kirby-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n providers: [CalendarHelper],\n})\nexport class CalendarComponent implements OnInit, AfterViewInit, OnChanges {\n @ViewChild('calendarContainer', { static: false }) calendarContainer: ElementRef;\n @Output() dateChange = new EventEmitter<Date>();\n @Output() dateSelect = new EventEmitter<Date>();\n @Output() yearSelect = new EventEmitter<number>();\n @Input() timezone: 'local' | 'UTC' = 'local';\n @Input() disableWeekends = false;\n @Input() disablePastDates = false;\n @Input() disableFutureDates = false;\n @Input() alwaysEnableToday = false;\n @Input() customLocales: { [key: string]: Locale } = {};\n /* \n Experimental: Input property not documented on purpose. \n For context see: https://github.com/kirbydesign/designsystem/issues/2087\n */\n @Input() usePopover = false;\n /**\n * Configuration for the year navigator.\n *\n * Internally, calendar component:\n * - bases yearNavigatorOptions.from and yearNavigatorOptions.to on todayDate if a number is provided\n * - prioritizes minDate and maxDate over yearNavigatorOptions.from and yearNavigatorOptions.to\n */\n @Input() yearNavigatorOptions: CalendarYearNavigatorConfig;\n\n _month: CalendarCell[][];\n _weekDays: string[];\n private selectedDay: CalendarCell;\n // NOTE: Internally, all Dates\n // are normalized to point to local timezone midnight, regardless of the timezone\n // setting.\n private activeMonth: Date;\n private _selectedDate: Date;\n private _disabledDates: Date[] = [];\n private _todayDate: Date;\n private _minDate: Date;\n private _maxDate: Date;\n private locale: Locale;\n private timeZoneName: string;\n private includedLocales = { da, enGB, enUS };\n\n get selectedDate(): Date {\n return this._selectedDate;\n }\n\n @Input() set selectedDate(valueLocalOrUTC: Date) {\n const value = this.normalizeDate(valueLocalOrUTC);\n this.setActiveMonth(value);\n\n if (this.hasDateChanged(value, this._selectedDate)) {\n this.onSelectedDateChange(value);\n this._selectedDate = value;\n }\n }\n\n get disabledDates(): Date[] {\n return this._disabledDates;\n }\n\n @Input() set disabledDates(value: Date[]) {\n this._disabledDates = (value || []).map((date) => this.normalizeDate(date));\n }\n\n get todayDate(): Date {\n return this._todayDate;\n }\n\n @Input() set todayDate(value: Date) {\n this._todayDate = this.normalizeDate(value);\n }\n\n get minDate(): Date {\n return this._minDate;\n }\n\n @Input() set minDate(value: Date) {\n if (value && this.activeMonth && isBefore(this.activeMonth, value)) {\n this.setActiveMonth(value);\n }\n this._minDate = this.normalizeDate(value);\n }\n\n get maxDate(): Date {\n return this._maxDate;\n }\n\n @Input() set maxDate(value: Date) {\n if (value && this.activeMonth && isAfter(this.activeMonth, value)) {\n this.setActiveMonth(value);\n }\n this._maxDate = this.normalizeDate(value);\n }\n\n get activeMonthName(): string {\n return capitalizeFirstLetter(this.formatWithLocale(this.activeMonth, 'MMMM'));\n }\n\n get activeYear(): string {\n return this.formatWithLocale(this.activeMonth, 'yyyy');\n }\n\n /**\n * Gets navigable years for year navigator based on yearNavigatorOptions.\n */\n get navigableYears(): string[] {\n const dateOfFirstNavigableYear =\n this.minDate || this.getDateFromNavigableYear(this.yearNavigatorOptions.from);\n\n const dateOfLastNavigableYear =\n this.maxDate || this.getDateFromNavigableYear(this.yearNavigatorOptions.to);\n\n return this.getYearsBetweenDates(dateOfFirstNavigableYear, dateOfLastNavigableYear);\n }\n\n get navigatedYear(): number {\n return this.navigableYears.indexOf(this.activeYear);\n }\n\n @HostBinding('class.has-year-navigator')\n get _hasYearNavigator() {\n return !!this.yearNavigatorOptions;\n }\n\n constructor(private calendarHelper: CalendarHelper, @Inject(LOCALE_ID) locale: string) {\n this.locale = this.mapLocale(locale);\n this.timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n private formatWithLocale(date: Date, formatString: string): string {\n return format(date, formatString, {\n locale: this.locale,\n });\n }\n\n private mapLocale(locale: string): Locale {\n if (locale === 'en') {\n locale = 'enGB'; // if english locale is provided without region, we default to GB\n }\n locale = locale.replace('-', '');\n const availableLocales = { ...this.includedLocales, ...this.customLocales };\n\n return availableLocales[locale] || this.includedLocales.enGB; // Default to enGB if injected locale doesnt exist\n }\n\n ngOnInit() {\n this._weekDays = this.getWeekDays();\n this.setActiveMonth(this.selectedDate);\n }\n\n ngAfterViewInit() {\n this.calendarHelper.init(\n this.calendarContainer,\n this.getHelperOptions(),\n this._onDateSelected.bind(this),\n this.onChangeMonth.bind(this)\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.activeMonth) return;\n if (\n changes.disableWeekends ||\n changes.disablePastDates ||\n changes.disableFutureDates ||\n changes.disabledDates ||\n changes.minDate ||\n changes.maxDate ||\n changes.todayDate ||\n changes.timezone\n ) {\n this.refreshActiveMonth();\n this.calendarHelper.update(this.getHelperOptions());\n }\n }\n\n private setActiveMonth(date: Date = new Date()) {\n if (!this.activeMonth || !isSameMonth(this.activeMonth, date)) {\n this.activeMonth = startOfMonth(date);\n this.refreshActiveMonth();\n this.calendarHelper.update(this.getHelperOptions());\n }\n }\n\n // For leniency, the component will accept any Date that points to either UTC midnight\n // or to local timezone midnight although we will internally normalize the representation\n // of all received dates to point to local timezone midnight.\n // We currently log no warnings if the date doesn't match the timezone setting or\n // if it doesn't point to midnight.\n private normalizeDate(dateLocalOrUTC: Date) {\n if (!dateLocalOrUTC) return;\n\n if (startOfDay(dateLocalOrUTC).getTime() === dateLocalOrUTC.getTime()) {\n // date is local timezone midnight\n return dateLocalOrUTC;\n }\n if (\n startOfDay(utcToZonedTime(dateLocalOrUTC, this.timeZoneName)).getTime() ===\n utcToZonedTime(dateLocalOrUTC, this.timeZoneName).getTime()\n ) {\n // the date is a UTC midnight; create the equivalent local timezone midnight date\n const normalizedUTCdate = utcToZonedTime(dateLocalOrUTC, this.timeZoneName);\n return normalizedUTCdate;\n }\n // does not point to midnight so we make it\n return startOfDay(dateLocalOrUTC);\n }\n\n private getWeekDays(): string[] {\n const now = new Date();\n\n const week = eachDayOfInterval({\n start: startOfWeek(now, { locale: this.locale }),\n end: endOfWeek(now, { locale: this.locale }),\n });\n\n return week.map((date) => this.getFirstLetterOfWeekDayCapitalized(date));\n }\n\n private getFirstLetterOfWeekDayCapitalized(date: Date) {\n return this.formatWithLocale(date, 'EEEEE');\n }\n\n private hasDateChanged(newDate: Date, previousDate: Date): boolean {\n if (!newDate && !previousDate) {\n return false;\n }\n if (newDate instanceof Date && !previousDate) {\n return true;\n }\n return !isSameDay(newDate, previousDate);\n }\n\n private isDisabledDate(date: Date): boolean {\n return this.disabledDates.some((disabledDate) => {\n return isSameDay(disabledDate, date);\n });\n }\n\n refreshActiveMonth() {\n if (!this.activeMonth) return;\n\n const monthStart = startOfMonth(this.activeMonth);\n const monthEnd = endOfMonth(this.activeMonth);\n const startOfFirstWeek = startOfWeek(monthStart, { locale: this.locale });\n const endOfLastWeek = endOfWeek(monthEnd, { locale: this.locale });\n const totalDayCount = differenceInDays(endOfLastWeek, startOfFirstWeek) + 1;\n const today = this.todayDate ? startOfDay(this.todayDate) : startOfDay(new Date());\n\n const daysArray = Array.from(Array(totalDayCount).keys());\n\n const days: CalendarCell[] = daysArray.map((number) => {\n const cellDate = add(startOfFirstWeek, { [TimeUnit.days]: number });\n const day = this.getCalendarDay(cellDate, today, monthStart);\n\n const isSelectable = this.isSelectable(day, cellDate);\n const isSelected = isSameDay(this.selectedDate, cellDate);\n const cell = {\n date: cellDate.getDate(),\n isCurrentMonth: day.isCurrentMonth,\n isSelectable,\n isSelected,\n cssClasses: this.getCssClasses(day, isSelectable, isSelected),\n };\n if (isSelected) {\n this.selectedDay = cell;\n }\n return cell;\n });\n this._month = this.chunk(days, 7);\n }\n\n private getCalendarDay(date: Date, today: Date, monthStart: Date): CalendarDay {\n return {\n isToday: isSameDay(today, date),\n isPast: isBefore(date, today),\n isFuture: isAfter(date, today),\n isWeekend: isWeekend(date),\n isCurrentMonth: isSameMonth(date, monthStart),\n isDisabled: this.isDisabledDate(date),\n };\n }\n\n private isSelectable(day: CalendarDay, date: Date) {\n return (\n (this.alwaysEnableToday && day.isToday) ||\n (!day.isDisabled &&\n day.isCurrentMonth &&\n !(this.disableWeekends && day.isWeekend) &&\n !(this.disablePastDates && day.isPast) &&\n !(this.disableFutureDates && day.isFuture) &&\n !(this.minDate && isBefore(date, this.minDate)) &&\n !(this.maxDate && isAfter(date, this.maxDate)))\n );\n }\n\n private getCssClasses(day: CalendarDay, isSelectable: boolean, isSelected: boolean) {\n const cssClasses = {\n 'current-month': day.isCurrentMonth,\n weekend: day.isWeekend,\n today: day.isToday,\n selectable: isSelectable,\n selected: isSelected,\n past: day.isPast,\n disabled: day.isDisabled,\n };\n let cssClassString = 'day';\n for (const key in cssClasses) {\n if (cssClasses[key]) {\n cssClassString += ' ' + key;\n }\n }\n return cssClassString;\n }\n\n private chunk(array: any[], size: number) {\n const results = [];\n while (array.length) {\n results.push(array.splice(0, size));\n }\n return results;\n }\n\n private onSelectedDateChange(newDate: Date): void {\n if (this.selectedDay) {\n this.selectedDay.isSelected = false;\n }\n\n const newDay = this.getCell(newDate);\n if (newDay) {\n newDay.isSelected = true;\n this.selectedDay = newDay;\n }\n this.calendarHelper.setSelectedDay(newDate.getDate());\n }\n\n _onDateSelected(newDay: CalendarCell) {\n if (newDay.isSelectable && newDay.date) {\n let newDate = new Date(this.activeMonth);\n newDate.setDate(newDay.date);\n\n if (this.timezone === 'UTC') {\n newDate = zonedTimeToUtc(this.subtractTimezoneOffset(newDate), this.timeZoneName);\n }\n\n const dateToEmit = newDate;\n\n if (this.hasDateChanged(newDate, this._selectedDate)) {\n this.onSelectedDateChange(newDate);\n this._selectedDate = newDate;\n this.dateChange.emit(dateToEmit);\n }\n this.dateSelect.emit(dateToEmit);\n }\n }\n\n private onChangeMonth(direction: number) {\n this._changeMonth(direction);\n this.calendarHelper.update(this.getHelperOptions());\n }\n\n _changeMonth(index: number) {\n this.changeActiveView(index, TimeUnit.months);\n }\n\n _changeYear(year: string) {\n const yearNumeric = Number(year);\n this.changeActiveView(yearNumeric - getYear(this.activeMonth), TimeUnit.years);\n this.yearSelect.emit(yearNumeric);\n }\n\n private changeActiveView(index: number, unit: TimeUnit) {\n if (index === 0) return;\n this.activeMonth = add(this.activeMonth, { [unit]: index });\n\n this.refreshActiveMonth();\n }\n\n get _canNavigateBack(): boolean {\n const reachedPastDatesLimit =\n this.disablePastDates && isSameMonth(this.activeMonth, this.todayDate);\n\n const reachedOrExceededMinDate =\n this.minDate &&\n (isSameMonth(this.activeMonth, this.minDate) || isBefore(this.activeMonth, this.minDate));\n\n return !reachedPastDatesLimit && !reachedOrExceededMinDate;\n }\n\n get _canNavigateForward(): boolean {\n const reachedFutureDatesLimit =\n this.disableFutureDates && isSameMonth(this.activeMonth, this.todayDate);\n\n const reachedOrExceededMaxDate =\n this.maxDate &&\n (isSameMonth(this.activeMonth, this.maxDate) || isAfter(this.activeMonth, this.maxDate));\n\n return !reachedFutureDatesLimit && !reachedOrExceededMaxDate;\n }\n\n private getCell(date: Date) {\n let foundDay = null;\n if (date) {\n for (let week of this._month) {\n foundDay = week.find((day) => {\n return day.isCurrentMonth && day.date === date.getDate();\n });\n if (foundDay) {\n break;\n }\n }\n }\n return foundDay;\n }\n\n private getHelperOptions(): CalendarOptions {\n return {\n canNavigateBack: this._canNavigateBack,\n canNavigateForward: this._canNavigateForward,\n year: this.activeYear,\n monthName: this.activeMonthName,\n weekDays: this._weekDays,\n month: this._month,\n };\n }\n\n private subtractTimezoneOffset(date: Date): Date {\n const timezoneOffsetInMs = date.getTimezoneOffset() * 60 * 1000;\n return new Date(date.getTime() - timezoneOffsetInMs);\n }\n\n private getDateFromNavigableYear(navigableYear: number | Date): Date {\n if (navigableYear instanceof Date) return navigableYear;\n const today = this.todayDate || new Date();\n return new Date(today.getFullYear() + navigableYear, 0, 1);\n }\n\n private getYearsBetweenDates(startDate: Date, endDate: Date): string[] {\n // Ensure years are ordered correctly if parameters are switched:\n const [startYear, endYear] = [startDate.getFullYear(), endDate.getFullYear()].sort();\n const numberOfYears = endYear - startYear;\n return Array.from({ length: numberOfYears + 1 }, (_, i) => (startYear + i).toString());\n }\n}\n","<div class=\"header\">\n <div class=\"month-navigator\">\n <button [disabled]=\"!_canNavigateBack\" (click)=\"_changeMonth(-1)\">\n <kirby-icon name=\"arrow-back\"></kirby-icon>\n </button>\n\n <div class=\"month-and-year\">\n <span class=\"month\">{{ activeMonthName }}</span\n ><span *ngIf=\"!_hasYearNavigator\" class=\"year\">{{ activeYear }}</span>\n </div>\n\n <button [disabled]=\"!_canNavigateForward\" (click)=\"_changeMonth(1)\">\n <kirby-icon name=\"arrow-more\"></kirby-icon>\n </button>\n </div>\n <kirby-dropdown\n *ngIf=\"_hasYearNavigator\"\n [usePopover]=\"usePopover\"\n [selectedIndex]=\"navigatedYear\"\n [items]=\"navigableYears\"\n popout=\"left\"\n (change)=\"_changeYear($event)\"\n >\n </kirby-dropdown>\n</div>\n\n<table>\n <thead>\n <tr>\n <th *ngFor=\"let weekDay of _weekDays\">{{ weekDay }}</th>\n </tr>\n </thead>\n\n <tbody>\n <tr *ngFor=\"let week of _month\">\n <td *ngFor=\"let day of week\">\n <div\n (click)=\"_onDateSelected(day)\"\n class=\"{{ day.cssClasses }}\"\n [class.selected]=\"day.isSelected\"\n >\n {{ day.date }}\n </div>\n </td>\n </tr>\n </tbody>\n</table>\n\n<!-- <iframe src=\"kirby/components/calendar/calendar.webview.html\" #calendarContainer style=\"width: 320px; height: 304px; border: 0\"> -->\n","import { Component, Input } from '@angular/core';\n\nimport { ItemSlidingSide, ItemSwipeAction } from './item-sliding.types';\n\n@Component({\n selector: 'kirby-item-sliding',\n templateUrl: './item-sliding.component.html',\n styleUrls: ['./item-sliding.component.scss'],\n})\nexport class ItemSlidingComponent {\n @Input() swipeActions: ItemSwipeAction[];\n\n _side: 'start' | 'end' = 'start';\n @Input() set side(value: ItemSlidingSide) {\n this._side = value === 'left' ? 'start' : 'end';\n }\n\n get _hasSwipeActions(): boolean {\n // Using '>' instead of '!==';\n // will only return true when swipeActions is an array\n return this.swipeActions?.length > 0;\n }\n}\n","<ion-item-sliding>\n <ng-content></ng-content>\n\n <ion-item-options *ngIf=\"_hasSwipeActions\" [side]=\"_side\">\n <ng-container *ngFor=\"let swipeAction of swipeActions\">\n <ion-item-option\n *ngIf=\"!swipeAction.isDisabled\"\n [ngClass]=\"swipeAction.type\"\n (click)=\"swipeAction.onSelected()\"\n >\n <kirby-icon\n *ngIf=\"swipeAction.icon !== undefined\"\n [name]=\"swipeAction.icon\"\n slot=\"top\"\n ></kirby-icon>\n <ion-label>{{ swipeAction.title }}</ion-label>\n </ion-item-option>\n </ng-container>\n </ion-item-options>\n</ion-item-sliding>\n","export class UniqueIdGenerator {\n private static registry = new Map<string, UniqueIdGenerator>();\n private id = 0;\n\n private constructor(private scope: string) {}\n\n static scopedTo(scope: string) {\n let scopedGenerator = UniqueIdGenerator.registry.get(scope);\n if (!scopedGenerator) {\n scopedGenerator = new UniqueIdGenerator(scope);\n UniqueIdGenerator.registry.set(scope, scopedGenerator);\n }\n return scopedGenerator;\n }\n\n next(): string {\n return `${this.scope}-${this.id++}`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\n\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\n\n@Component({\n selector: 'kirby-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent {\n @Input() checked: boolean = false;\n @Input() attentionLevel: '1' | '2' = '2';\n\n @HostBinding('class.has-label')\n @Input()\n text: string;\n\n @HostBinding('class')\n @Input()\n size?: 'xs' | 'sm' | 'md';\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean = false;\n\n @Input() disabled = false;\n @HostBinding('attr.disabled')\n get _isDisabled() {\n return this.disabled ? 'disabled' : null;\n }\n\n @HostBinding('class.attention-level1') get isAttentionLevel1() {\n return this.attentionLevel === '1';\n }\n @HostBinding('class.attention-level2') get isAttentionLevel2() {\n return this.attentionLevel === '2';\n }\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n onChecked(checked: boolean): void {\n this.checked = checked;\n this.checkedChange.emit(this.checked);\n }\n\n // IDs used for a11y labelling\n _labelId = UniqueIdGenerator.scopedTo('kirby-checkbox-label').next();\n}\n","<div class=\"wrapper\">\n <ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n [attr.aria-labelledby]=\"text ? _labelId : null\"\n ></ion-checkbox>\n <span [id]=\"_labelId\" *ngIf=\"text\">{{ text }}</span>\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipComponent {\n @Input() text: string;\n\n @Input()\n @HostBinding('attr.aria-selected')\n @HostBinding('class.is-selected')\n isSelected: boolean;\n}\n","<span>{{ text }}</span>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n @Input()\n hasMargin: boolean;\n}\n","<hr [class.no-margin]=\"!hasMargin\" />\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { IonRadio } from '@ionic/angular';\n\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\n\n@Component({\n selector: 'kirby-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioComponent {\n @Input()\n value: any;\n\n @HostBinding('class.has-label')\n @Input()\n text: string;\n\n @HostBinding('class')\n @Input()\n size?: 'xs' | 'sm' | 'md';\n\n @Input()\n disabled: boolean;\n @HostBinding('attr.disabled')\n get _isDisabled() {\n return this.disabled ? 'disabled' : null;\n }\n\n get buttonTabIndex(): number {\n return this.ionRadioElement ? this.ionRadioElement.nativeElement.tabIndex : -1;\n }\n\n focus() {\n this.ionRadioElement && this.ionRadioElement.nativeElement.focus();\n }\n\n _labelId = UniqueIdGenerator.scopedTo('kirby-radio-label').next();\n\n @ViewChild(IonRadio, { read: ElementRef, static: true })\n private ionRadioElement?: ElementRef<HTMLIonRadioElement>;\n}\n","<div class=\"wrapper\">\n <ion-radio\n [value]=\"value\"\n [disabled]=\"disabled\"\n mode=\"md\"\n [attr.aria-labelledby]=\"text ? _labelId : null\"\n ></ion-radio>\n <span [id]=\"_labelId\" *ngIf=\"text\">{{ text }}</span>\n</div>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\nimport { Component, HostListener, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ListItemTemplateDirective } from '../../list/list.directive';\nimport { RadioComponent } from '../radio.component';\n\n@Component({\n selector: 'kirby-radio-group',\n templateUrl: './radio-group.component.html',\n styles: ['ion-radio-group { display: inherit; flex-wrap: inherit}'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RadioGroupComponent,\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioGroupComponent implements AfterContentInit, ControlValueAccessor {\n constructor(private changeDetectionRef: ChangeDetectorRef) {}\n\n // #region public properties\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input() set disabled(value: boolean) {\n this._disabled = value;\n this.setProjectedRadiosDisabledState(value);\n }\n\n @HostBinding('class.error') // Used to style radios with error state\n @Input()\n hasError: boolean = false;\n\n get items(): string[] | any[] {\n return this._items || []; // Ensure items return empty array even if set to null/undefined\n }\n\n @Input() set items(value: string[] | any[]) {\n if ((!value || !value.length) && !this.items.length) return; // Nothing changed, no items before or after\n this._items = value;\n this.refreshSelectionState();\n }\n\n @Input()\n itemTextProperty = 'text';\n\n @Input()\n itemDisabledProperty = 'disabled';\n\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n @Input() set selectedIndex(value: number) {\n if (typeof value === 'string') value = parseInt(value); // Ensure data type number, e.g. when used with template syntax without binding: <... selectedIndex=\"1\"\n if (value === undefined || value === null || value === NaN) value = -1;\n if (value === this.selectedIndex) return;\n this._selectedIndex = value;\n this._value = this.getValueFromSelectedIndex() || null;\n }\n\n get value(): string | any {\n return this._value;\n }\n\n @Input() set value(value: string | any) {\n this.setSelectedItem(value);\n }\n\n private get hasValue(): boolean {\n return this.value !== undefined && this.value !== null;\n }\n\n /**\n * Emitted when an option is selected\n */\n @Output() valueChange: EventEmitter<string | any> = new EventEmitter<string | any>();\n // #endregion public properties\n\n // #region \"protected\" properties used by template\n @ContentChild(ListItemTemplateDirective, { read: TemplateRef })\n _customItemTemplate: TemplateRef<any>;\n // #endregion \"protected\" properties used by template\n\n // #region private fields\n private _disabled = false;\n private _items: string[] | any[] = [];\n private _onChangeCallback: (value: any) => void = () => {};\n private _onTouched = () => {};\n private _selectedIndex: number = -1;\n private _value?: string | any = null;\n @ViewChildren(RadioComponent)\n private radioButtons: QueryList<RadioComponent>;\n @ContentChildren(RadioComponent, { descendants: true })\n private projectedRadioButtons: QueryList<RadioComponent>;\n\n private get hasItemsFromContentProjection(): boolean {\n return (\n !this.items.length &&\n !this._customItemTemplate &&\n this.projectedRadioButtons &&\n this.projectedRadioButtons.length > 0\n );\n }\n\n // #endregion private fields\n\n // #region public methods\n focus() {\n const findFocusable = (radios: QueryList<RadioComponent>) =>\n radios && radios.find((radio) => !isNaN(radio.buttonTabIndex) && radio.buttonTabIndex !== -1);\n const focusable = findFocusable(this.radioButtons) || findFocusable(this.projectedRadioButtons);\n focusable && focusable.focus();\n }\n\n ngAfterContentInit(): void {\n this.initSelectionStateFromProjectedContent();\n this.listenForProjectedRadiosChange();\n }\n\n registerOnChange(fn: any): void {\n this._onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectionRef.markForCheck();\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.changeDetectionRef.markForCheck();\n }\n\n // #endregion public methods\n\n // #region \"protected\" methods used by template\n _getTextFromItem(item: string | any): string {\n if (!item) return null;\n return typeof item === 'string' ? item : item[this.itemTextProperty];\n }\n\n _getDisabledStateFromItem(item: string | any): boolean {\n if (!item) return undefined;\n return typeof item === 'string' ? undefined : item[this.itemDisabledProperty];\n }\n\n get _hasItems(): boolean {\n return this.items.length > 0 || this.hasItemsFromContentProjection;\n }\n\n _onChange(value: string | any) {\n if (value === this._value) return;\n this.setSelectedItem(value);\n this.valueChange.emit(value);\n this._onChangeCallback(value);\n }\n\n @HostListener('ionBlur')\n _onRadioBlur() {\n this._onTouched();\n }\n\n // #endregion \"protected\" methods used by template\n\n // #region private methods\n private getIndexOfSelectedValue() {\n if (!this.hasValue) return -1;\n return this.hasItemsFromContentProjection\n ? this.getIndexOfProjectedRadio(this.value)\n : this.items.indexOf(this.value);\n }\n\n private getIndexOfProjectedRadio(value: string | any): number {\n let selectedIndex = -1;\n this.projectedRadioButtons &&\n this.projectedRadioButtons.find((radio, i) => {\n const found = radio.value === value;\n if (found) {\n selectedIndex = i;\n }\n return found;\n });\n return selectedIndex;\n }\n\n private getValueFromSelectedIndex(): string | any {\n if (this.selectedIndex === -1) return;\n return this.hasItemsFromContentProjection\n ? this.getValueFromProjectedRadios(this.selectedIndex)\n : this.items[this.selectedIndex];\n }\n\n private getValueFromProjectedRadios(index: number): string | any {\n const radio =\n this.projectedRadioButtons &&\n this.projectedRadioButtons.find((_, i) => {\n return i === index;\n });\n return radio && radio.value;\n }\n\n private initSelectionStateFromProjectedContent() {\n if (this.hasItemsFromContentProjection) {\n this.refreshSelectionState(); // Initialize selected index and value from projected radios\n }\n }\n\n private listenForProjectedRadiosChange() {\n this.projectedRadioButtons.changes.subscribe(() => {\n this.refreshStateFromProjectedContent();\n\n if (this.disabled) {\n // Ensure disabled state propagates when re-rendering projected radios.\n // setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when updating the DOM in QueryList.changes:\n setTimeout(() => this.setProjectedRadiosDisabledState(this.disabled));\n }\n });\n }\n\n private refreshSelectionState() {\n if (this.hasValue) {\n this._selectedIndex = this.getIndexOfSelectedValue(); // Ensure selectedIndex reflects value within items\n }\n\n const valueFromSelectedIndex = this.getValueFromSelectedIndex();\n this._value = valueFromSelectedIndex !== undefined ? valueFromSelectedIndex : null;\n }\n\n private refreshStateFromProjectedContent() {\n if (!!this._customItemTemplate) return; // Only refresh on changes to projected content, not when re-rendering custom template\n this.changeDetectionRef.markForCheck(); // Ensure changes to projected content gets checked in next change detection cycle\n this.refreshSelectionState(); // Sync selected index and value from projected radios\n }\n\n private setSelectedItem(value: string | any) {\n if (value === this._value) return; // Nothing changed\n this._value = value;\n this._selectedIndex = this.getIndexOfSelectedValue();\n }\n\n private setProjectedRadiosDisabledState(isDisabled: boolean) {\n if (!this.projectedRadioButtons || !this.projectedRadioButtons.length) return;\n this.projectedRadioButtons.forEach((radio, index) => {\n // Disable all radios when group is disabled, otherwise fall back to each item's disabled state, if defined:\n radio.disabled = isDisabled || this._getDisabledStateFromItem(this.items[index]);\n });\n }\n\n // #endregion private methods\n}\n","<ion-radio-group *ngIf=\"_hasItems\" [value]=\"value\" (ionChange)=\"_onChange($event.detail.value)\">\n <ng-container *ngIf=\"!items || !items.length; else itemsTemplate\">\n <ng-content></ng-content>\n </ng-container>\n</ion-radio-group>\n\n<ng-template #itemsTemplate>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n _customItemTemplate || defaultItemTemplate;\n context: { $implicit: item, selected: i === selectedIndex, index: i }\n \"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #defaultItemTemplate let-item>\n <kirby-radio\n [value]=\"item\"\n [disabled]=\"disabled || _getDisabledStateFromItem(item)\"\n [text]=\"_getTextFromItem(item)\"\n ></kirby-radio>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kirby-form-field-message',\n styleUrls: ['./form-field-message.component.scss'],\n templateUrl: './form-field-message.component.html',\n})\nexport class FormFieldMessageComponent {\n @Input() text: string;\n @Input() position: 'left' | 'right' = 'left';\n}\n","{{ text }}<ng-content></ng-content>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { InputComponent } from '../input/input.component';\n\nimport { TextareaComponent } from './../textarea/textarea.component';\n\n@Component({\n selector: 'kirby-input-counter',\n templateUrl: './input-counter.component.html',\n})\nexport class InputCounterComponent implements OnInit, OnDestroy {\n @Input() listenTo: InputComponent | TextareaComponent;\n length: number;\n maxlength: number;\n private _inputChangeSubscription: Subscription;\n\n get text(): string {\n if (this.length === undefined) {\n return undefined;\n }\n const ofMaxlength = this.maxlength ? `/${this.maxlength}` : '';\n return `${this.length}${ofMaxlength}`;\n }\n\n ngOnInit(): void {\n if (this.listenTo) {\n this.length = this.listenTo.value ? this.listenTo.value.length : 0;\n this.maxlength = this.listenTo.maxlength;\n this._inputChangeSubscription = this.listenTo.kirbyChange.subscribe((value) => {\n this.length = value.length;\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this._inputChangeSubscription) {\n this._inputChangeSubscription.unsubscribe();\n }\n }\n}\n","<kirby-form-field-message [text]=\"text\"></kirby-form-field-message>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\nexport enum InputSize {\n medium = 'md',\n large = 'lg',\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line:component-selector\n selector: 'input[kirby-input]',\n styleUrls: ['./input.component.scss'],\n template: '',\n})\nexport class InputComponent implements OnChanges {\n private static typeToInputmodeMap = {\n number: 'decimal',\n search: 'search',\n };\n\n kirbyChange = new EventEmitter<string>();\n\n @Input() set type(value: string) {\n const mappedValue = InputComponent.typeToInputmodeMap[value];\n if (mappedValue && !this.inputmode) {\n this.inputmode = mappedValue;\n }\n }\n\n @HostBinding('class')\n @Input()\n size: InputSize | `${InputSize}` = InputSize.large;\n\n /**\n * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n */\n @HostBinding('class.borderless')\n @Input()\n borderless: boolean;\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @HostBinding('attr.autocomplete')\n @Input()\n autocomplete: 'on' | 'off' = 'off';\n\n @HostBinding('attr.autocorrect')\n @Input()\n autocorrect: 'on' | 'off' = 'off';\n\n @HostBinding('attr.value')\n @Input()\n value: string;\n\n @HostBinding('attr.maxlength')\n @Input()\n maxlength: number;\n\n @HostBinding('attr.inputmode')\n @Input()\n inputmode: string;\n\n @HostListener('keyup', ['$event.target.value'])\n _onKeyUp(value: string) {\n this.kirbyChange.emit(value);\n }\n\n @HostListener('paste', ['$event.target'])\n @HostListener('cut', ['$event.target'])\n _onCutPaste(target: HTMLInputElement) {\n //Value of input element is updated after cut/paste:\n setTimeout(() => this.kirbyChange.emit(target.value));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.kirbyChange.emit(changes.value.currentValue);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n HostBinding,\n EventEmitter,\n HostListener,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line:component-selector\n selector: 'textarea[kirby-textarea]',\n styleUrls: ['./textarea.component.scss'],\n templateUrl: './textarea.component.html',\n})\nexport class TextareaComponent implements OnChanges {\n kirbyChange = new EventEmitter<string>();\n\n @Input() value: string;\n\n /**\n * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n */\n @HostBinding('class.borderless')\n @Input()\n borderless: boolean;\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @HostBinding('attr.autocomplete')\n @Input()\n autocomplete: 'on' | 'off' = 'off';\n\n @HostBinding('attr.autocorrect')\n @Input()\n autocorrect: 'on' | 'off' = 'off';\n\n @HostBinding('attr.maxlength')\n @Input()\n maxlength: number;\n\n @HostListener('keyup', ['$event.target.value'])\n _onKeyUp(value: string) {\n this.kirbyChange.emit(value);\n }\n\n @HostListener('paste', ['$event.target'])\n @HostListener('cut', ['$event.target'])\n _onCutPaste(target: HTMLInputElement) {\n //Value of textarea element is updated after cut/paste:\n setTimeout(() => this.kirbyChange.emit(target.value));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.kirbyChange.emit(changes.value.currentValue);\n }\n }\n}\n","<ng-content *ngIf=\"!value\"></ng-content>\n<ng-container *ngIf=\"value\">{{ value }}</ng-container>\n","import {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { PlatformService } from '../../helpers/platform.service';\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\nimport { WindowRef } from '../../types/window-ref';\nimport { RadioGroupComponent } from '../radio/radio-group/radio-group.component';\n\nimport { InputCounterComponent } from './input-counter/input-counter.component';\nimport { InputComponent } from './input/input.component';\nimport { TextareaComponent } from './textarea/textarea.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kirby-form-field',\n styleUrls: ['./form-field.component.scss'],\n templateUrl: './form-field.component.html',\n})\nexport class FormFieldComponent\n implements AfterContentChecked, AfterContentInit, OnInit, OnDestroy\n{\n private isRegistered = false;\n private element: HTMLElement;\n private inputElement: HTMLInputElement | HTMLTextAreaElement;\n private isTouch: boolean;\n _labelId = UniqueIdGenerator.scopedTo('kirby-form-field-label').next();\n\n @Input() label: string;\n @Input() message: string;\n\n @ContentChild(InputCounterComponent, { static: false }) counter: InputCounterComponent;\n @ContentChild(RadioGroupComponent) private radioGroupComponent: RadioGroupComponent;\n @ContentChild(RadioGroupComponent, { read: ElementRef })\n private radioGroupElement: ElementRef<HTMLElement>;\n\n @ContentChild(InputComponent, { read: ElementRef }) input: ElementRef<HTMLInputElement>;\n @ContentChild(TextareaComponent, { read: ElementRef }) textarea: ElementRef<HTMLTextAreaElement>;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private platform: PlatformService,\n private renderer: Renderer2,\n private windowRef: WindowRef\n ) {\n this.element = elementRef.nativeElement;\n }\n\n get _wrapContentInLabel(): boolean {\n return !!this.label && (!!this.input || !!this.textarea);\n }\n\n private dispatchLoadEvent() {\n // Dispatch an `ionInputDidLoad` event to register\n // form field + input/textarea with Ionic input shims\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n this.windowRef.nativeWindow.document.dispatchEvent(\n new CustomEvent('ionInputDidLoad', {\n detail: this.element,\n })\n );\n }\n\n @HostListener('kirbyRegisterFormField')\n _onRegisterFormField() {\n this.dispatchLoadEvent();\n }\n\n onLabelClick() {\n this.radioGroupComponent && this.radioGroupComponent.focus();\n }\n\n public focus() {\n if (!this.inputElement) return;\n\n if (this.isTouch) {\n // Trigger Ionic's input shims to ensure input is scrolled into view.\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/hacks/scroll-assist.ts\n const touchStart = new TouchEvent('touchstart');\n const touchEnd = new TouchEvent('touchend');\n this.inputElement.dispatchEvent(touchStart);\n this.inputElement.dispatchEvent(touchEnd);\n } else {\n this.inputElement.focus();\n }\n }\n\n ngOnInit() {\n this.isTouch = this.platform.isTouch();\n }\n\n ngAfterContentInit(): void {\n if (this.label && this.radioGroupElement) {\n this.renderer.setAttribute(\n this.radioGroupElement.nativeElement,\n 'aria-labelledby',\n this._labelId\n );\n }\n }\n\n ngAfterContentChecked(): void {\n if (!this.inputElement) {\n this.inputElement = this.element.querySelector('input, textarea');\n }\n\n // TODO: remove \"!this.inputElement.readOnly\" when ionic has fixed input click issue\n // https://github.com/ionic-team/ionic-framework/issues/22740\n if (\n !this.isRegistered &&\n this.element.isConnected &&\n !!this.inputElement &&\n !this.inputElement.readOnly\n ) {\n // Host is connected to dom and slotted input/textarea is present:\n this.isRegistered = true;\n this.dispatchLoadEvent();\n }\n }\n\n ngOnDestroy(): void {\n // Dispatch an `ionInputDidUnload` event to unregister\n // form field + input/textarea from Ionic input shims\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n this.windowRef.nativeWindow.document.dispatchEvent(\n new CustomEvent('ionInputDidUnload', {\n detail: this.element,\n })\n );\n }\n}\n","<label *ngIf=\"_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTextTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</label>\n\n<ng-container *ngIf=\"!_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</ng-container>\n\n<div *ngIf=\"message || counter\" class=\"texts\">\n <kirby-form-field-message\n *ngIf=\"message\"\n class=\"message\"\n [text]=\"message\"\n ></kirby-form-field-message>\n\n <div *ngIf=\"counter\" class=\"counter\">\n <ng-content select=\"kirby-input-counter\"></ng-content>\n </div>\n</div>\n\n<ng-template #slottedInputTemplate>\n <ng-content select=\"input[kirby-input]\"></ng-content>\n <ng-content select=\"textarea[kirby-textarea]\"></ng-content>\n <ng-content select=\"kirby-radio-group\"></ng-content>\n</ng-template>\n\n<ng-template #labelTextTemplate>\n <ng-container *ngIf=\"label\">\n <span class=\"text\">{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"label\">\n <label class=\"text\" [id]=\"_labelId\" (click)=\"onLabelClick()\">{{ label }}</label>\n </ng-container>\n</ng-template>\n","import { FormatWidth, getLocaleDateFormat } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n LOCALE_ID,\n Renderer2,\n} from '@angular/core';\nimport 'inputmask/lib/extensions/inputmask.date.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\n@Directive({\n selector: '[kirby-input][type=\"date\"]',\n})\nexport class DateInputDirective implements AfterViewInit {\n @HostListener('input')\n onInput() {\n this.updateMask(this.elementRef.nativeElement.value);\n }\n\n private maskingElement: HTMLElement;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n @Inject(LOCALE_ID) private locale: string\n ) {\n // Remove type to avoid user-agent specific behaviour for [type=\"date\"]\n this.elementRef.nativeElement.removeAttribute('type');\n }\n\n ngAfterViewInit(): void {\n this.initMask();\n }\n\n private initMask(): void {\n const inputFormat = this.getInputFormat();\n const placeholder = this.getPlaceholder(inputFormat);\n\n // Set initial placeholder ex. dd/mm/yyyy\n this.renderer.setAttribute(this.elementRef.nativeElement, 'placeholder', placeholder);\n\n // Init InputMask\n new Inputmask('datetime', {\n inputFormat,\n placeholder,\n }).mask(this.elementRef.nativeElement);\n\n // Append input overlay, so it's possible to style typed date differntly than the date-mask\n this.appendMaskingElement();\n }\n\n // Keeps order and seperator from speficied locale\n private getInputFormat(): string {\n const localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n return localeDateFormat\n .toLowerCase()\n .replace(/d+/, 'dd')\n .replace(/m+/, 'mm')\n .replace(/y+/, 'yyyy');\n }\n\n private getPlaceholder(inputFormat: string): string {\n return this.locale === 'da' ? inputFormat.split('y').join('å') : inputFormat;\n }\n\n private appendMaskingElement(): void {\n const wrapper = this.wrapElement(this.elementRef.nativeElement);\n this.renderer.addClass(wrapper, 'date-mask-wrapper');\n\n this.maskingElement = this.renderer.createElement('div');\n this.renderer.appendChild(wrapper, this.maskingElement);\n\n this.renderer.addClass(this.maskingElement, 'date-mask');\n }\n\n private wrapElement(element: HTMLElement): HTMLElement {\n const wrapper = this.renderer.createElement('div');\n const parent = element.parentElement;\n this.renderer.insertBefore(parent, wrapper, element);\n this.renderer.appendChild(wrapper, element);\n return wrapper;\n }\n\n private updateMask(value: string): void {\n if (!this.maskingElement) return;\n const lastNumber = value.match(/.*?(\\d)[^\\d]*$/); // get last number in string\n this.maskingElement.innerHTML = value\n ? value.slice(0, value.lastIndexOf(lastNumber[1]) + 1)\n : '';\n }\n}\n","import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport 'inputmask/lib/extensions/inputmask.numeric.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\ninterface InputMask {\n unmaskedvalue: () => string;\n setValue: (val: string) => void;\n}\n\n@Directive({\n // tslint:disable-next-line\n selector: '[kirby-decimal-mask]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: DecimalMaskDirective,\n },\n ],\n})\nexport class DecimalMaskDirective implements ControlValueAccessor, OnInit {\n @Input() min: number;\n @Input() max: number;\n @Input() precision = 2;\n @Input() setMaxOnOverflow = false;\n\n @Input() set allowMinus(allowMinus: boolean) {\n this._allowMinus = allowMinus || (this.min || 0) < 0;\n }\n\n @Input() set disableGroupSeperator(disabled: string) {\n this._groupSeperatorDisabled = String(disabled) === '' || String(disabled) === 'true';\n }\n\n @Input() set maxlength(maxlength: number) {\n this._maxlength = maxlength;\n\n const maxlengthValue = parseInt('9'.repeat(maxlength));\n this.max = this.getMax(maxlengthValue);\n this.min = this.getMin(maxlengthValue);\n }\n\n groupSeparator = getLocaleNumberSymbol(this.locale, NumberSymbol.Group);\n radixPoint = getLocaleNumberSymbol(this.locale, NumberSymbol.Decimal);\n inputmask: InputMask;\n\n _allowMinus = false;\n _maxlength: number;\n _groupSeperatorDisabled: boolean;\n\n onChange = (_: string) => {};\n\n constructor(private elementRef: ElementRef, @Inject(LOCALE_ID) private locale: string) {}\n\n ngOnInit(): void {\n // Set type=\"text\", because functionality like 'setSelectionRange' are not supported on type=\"number\"\n this.elementRef.nativeElement.setAttribute('type', 'text');\n\n // Remove maxlength as this is handled by the mask\n this.elementRef.nativeElement.removeAttribute('maxlength');\n\n this.initMask();\n }\n\n writeValue(val: number): void {\n if (!this.inputmask) return;\n const formattedValue = String(val).replace('.', this.radixPoint);\n this.inputmask.setValue(formattedValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(_: any): void {}\n\n private initMask(): void {\n new Inputmask('decimal', {\n groupSeparator: this._groupSeperatorDisabled ? '' : this.groupSeparator,\n radixPoint: this.radixPoint,\n digits: this._maxlength ? 0 : this.precision,\n min: this.min,\n max: this.max,\n allowMinus: this._allowMinus,\n negationSymbol: {\n front: getLocaleNumberSymbol(this.locale, NumberSymbol.MinusSign),\n back: '',\n },\n SetMaxOnOverflow: this.setMaxOnOverflow,\n showMaskOnFocus: false,\n showMaskOnHover: false,\n placeholder: '',\n onBeforeWrite: () => {\n if (!this.inputmask) return;\n const unmaskedValue = this.inputmask.unmaskedvalue();\n this.onChange(unmaskedValue.replace(this.radixPoint, '.'));\n },\n }).mask(this.elementRef.nativeElement);\n this.inputmask = this.elementRef.nativeElement.inputmask;\n }\n\n private getMax(maxlengthValue: number): number {\n return this.max === undefined ? maxlengthValue : Math.min(this.max, maxlengthValue);\n }\n\n private getMin(maxlengthValue: number): number {\n if (!this.allowMinus) return;\n maxlengthValue = -Math.abs(maxlengthValue);\n return this.min === undefined ? maxlengthValue : -Math.abs(Math.max(this.min, maxlengthValue));\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { IonFab, IonFabButton, IonIcon } from '@ionic/angular';\n\nimport { Icon } from '../icon/icon-settings';\nimport { kirbyIconSettings } from '../icon/kirby-icon-settings';\nimport { ActionSheetComponent } from '../modal/action-sheet/action-sheet.component';\n\n@Component({\n selector: 'kirby-fab-sheet',\n templateUrl: './fab-sheet.component.html',\n styleUrls: ['./fab-sheet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FabSheetComponent implements AfterContentInit, AfterViewInit {\n @Input() disabled: boolean = false;\n @Input() horizontalAlignment: 'left' | 'center' | 'right' = 'right';\n\n private _isFabSheetOpen: boolean = false;\n @HostBinding('class.is-open')\n get isFabSheetOpen() {\n return this._isFabSheetOpen;\n }\n\n private _isBackdropVisible: boolean = false;\n @HostBinding('class.backdrop-visible')\n get isBackdropVisible() {\n return this._isBackdropVisible;\n }\n\n @ContentChild(ActionSheetComponent, { static: false }) actionSheet: ActionSheetComponent;\n\n @ViewChild(IonFabButton, { static: true, read: ElementRef })\n ionFabButton: ElementRef<HTMLElement>;\n\n constructor(private renderer: Renderer2, @Inject(DOCUMENT) private document: any) {}\n\n ngAfterViewInit(): void {\n const kirbyCloseIcon = kirbyIconSettings.icons.find((icon) => icon.name === 'close');\n this.setCloseIcon(kirbyCloseIcon);\n }\n\n private setCloseIcon(kirbyCloseIcon: Icon, retryCount = 0) {\n const maxRetryCount = 20;\n const retryDelayInMs = 20;\n const fabButtonElement = this.ionFabButton.nativeElement;\n if (!fabButtonElement || !kirbyCloseIcon || retryCount >= maxRetryCount) {\n return;\n }\n if (fabButtonElement.shadowRoot && fabButtonElement.shadowRoot.innerHTML) {\n const closeIcon = fabButtonElement.shadowRoot.querySelector('.close-icon ion-icon');\n if (closeIcon) {\n const closeIconSvgLoaded = closeIcon.shadowRoot.querySelector('.icon-inner svg');\n // prettier-ignore\n const ionCloseIcon = (closeIcon as unknown) as IonIcon;\n if (ionCloseIcon && closeIconSvgLoaded) {\n ionCloseIcon.src = kirbyCloseIcon.svg;\n return;\n }\n }\n }\n retryCount++;\n setTimeout(() => this.setCloseIcon(kirbyCloseIcon, retryCount), retryDelayInMs);\n }\n\n ngAfterContentInit(): void {\n if (this.actionSheet) {\n this.actionSheet.hideCancel = true;\n }\n }\n\n hideActions(fab: IonFab) {\n fab.close();\n this._isFabSheetOpen = false;\n this._isBackdropVisible = false;\n this.renderer.removeClass(this.document.body, 'fab-sheet-active');\n }\n\n onFabClick(fab: IonFab) {\n this._isFabSheetOpen = !fab.activated;\n if (this._isFabSheetOpen) {\n this.renderer.addClass(this.document.body, 'fab-sheet-active');\n } else {\n this.renderer.removeClass(this.document.body, 'fab-sheet-active');\n }\n setTimeout(() => (this._isBackdropVisible = this.isFabSheetOpen));\n }\n}\n","<ion-backdrop\n *ngIf=\"actionSheet && isFabSheetOpen\"\n (ionBackdropTap)=\"hideActions(fab)\"\n (click)=\"hideActions(fab)\"\n></ion-backdrop>\n<ion-fab #fab (click)=\"disabled || onFabClick(fab)\">\n <ion-fab-button [disabled]=\"disabled\" [attr.disabled]=\"disabled ? true : null\" tabindex=\"-1\">\n <ng-content select=\"kirby-icon\"></ng-content>\n </ion-fab-button>\n <ion-fab-list *ngIf=\"actionSheet\" side=\"top\" class=\"{{ horizontalAlignment }}\">\n <ng-content select=\"kirby-action-sheet\"></ng-content>\n </ion-fab-list>\n</ion-fab>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-flag',\n template: ` <ng-content></ng-content> `,\n styleUrls: ['./flag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlagComponent {\n @Input() size: 'xs' | 'sm' | 'md' = 'md';\n @Input() themeColor: 'success' | 'warning' | 'danger' | 'semi-light' | 'transparent' =\n 'transparent';\n\n @HostBinding('class')\n get _cssClass() {\n return [this.themeColor, this.size];\n }\n}\n","// TODO TRM/JEO Parse from scss files instead!!1!!\nexport class ScssHelper {\n // Breakpoints\n public static BREAKPOINT_SCREEN_L = 720;\n public static BREAKPOINT_CARD_S = 320;\n public static BREAKPOINT_CARD_M = 460;\n public static BREAKPOINT_CARD_L = 820;\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BreakpointHelperService implements OnDestroy {\n currentScreenWidth: 800;\n private orientationChangedSubject = new Subject<void>();\n\n constructor() {\n this.init();\n }\n\n private init() {\n // TODO JEO: Implement Angular/CDK BreakpointObserver:\n this.orientationChangedSubject.next();\n }\n\n observe(): Observable<void> {\n return this.orientationChangedSubject.asObservable();\n }\n\n ngOnDestroy() {\n this.orientationChangedSubject.complete();\n }\n}\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ScssHelper } from '../../scss/scss-helper';\nimport { BreakpointHelperService } from './breakpoint-helper.service';\nimport { GridCardConfiguration } from './grid-card-configuration';\n\nclass GridCard {\n configuration: GridCardConfiguration;\n row: number;\n col: number;\n colSpan: number;\n\n constructor(configuration: GridCardConfiguration, row: number, col: number, colSpan: number) {\n this.configuration = configuration;\n this.row = row;\n this.col = col;\n this.colSpan = colSpan;\n }\n}\n\n@Component({\n selector: 'kirby-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n // tslint:disable-next-line\n host: { '[attr.max-columns]': 'maxColumns' },\n})\nexport class GridComponent implements OnInit, OnDestroy {\n cardConfigs: GridCardConfiguration[];\n cards: GridCard[] = [];\n private breakpointSubscription: Subscription;\n\n @Input() maxColumns: number;\n\n @Input()\n set cardConfigurations(cardConfigurations: GridCardConfiguration[]) {\n this.cardConfigs = cardConfigurations;\n // TODO TRM/JEO Remove this when breakpoint observe something something...\n this.configureGrid();\n }\n\n constructor(private breakpointHelper: BreakpointHelperService) {}\n\n configureGrid() {\n let calculatedMaxColumns = 0;\n if (this.maxColumns === undefined) {\n calculatedMaxColumns =\n this.breakpointHelper.currentScreenWidth >= ScssHelper.BREAKPOINT_SCREEN_L ? 2 : 1;\n } else {\n calculatedMaxColumns = this.maxColumns;\n }\n this.cards = [];\n let columnCounter = 0;\n let currentRow = 0;\n let currentColumn = 0;\n\n this.cardConfigs.forEach((card, index) => {\n // Cards colspan is added to the column counter\n columnCounter += card.preferredSize;\n // If only maxColumns are set to 1, just add all cards with a colspan of 1\n if (calculatedMaxColumns === 1) {\n this.cards.push(new GridCard(card, currentRow, currentColumn, 1));\n currentRow += 1;\n return;\n }\n // If we are below maxColumns, then add the card to the array\n if (columnCounter <= calculatedMaxColumns) {\n this.cards.push(new GridCard(card, currentRow, currentColumn, card.preferredSize));\n // Update currentColumn, so the next card will be placed correctly\n currentColumn += card.preferredSize;\n } else {\n // The new card didn't fit - Calculate remaining columns for previous card\n const restColumns = calculatedMaxColumns - (columnCounter - card.preferredSize);\n const prevCard = this.cards[index - 1];\n // Add the restColumns to the previous cards colspan, to make it span out\n prevCard.colSpan = restColumns + prevCard.colSpan;\n // We are now on a new row\n currentRow += 1;\n currentColumn = 0;\n this.cards.push(new GridCard(card, currentRow, currentColumn, card.preferredSize));\n // Update currentColumn to match the size of the new card and reset columnCounter\n currentColumn = card.preferredSize;\n columnCounter = card.preferredSize;\n }\n // If we on the last card, make sure it spans all the rest of the columns\n if (this.cardConfigs.length - 1 === index) {\n const restColumns = calculatedMaxColumns - columnCounter;\n const currentCard = this.cards[index];\n currentCard.colSpan += restColumns;\n }\n });\n }\n\n ngOnInit() {\n // this.breakpointSubscription = this.breakpointHelper.observe().subscribe(() => {\n // this.configureGrid();\n // });\n }\n\n ngOnDestroy() {\n if (this.breakpointSubscription) {\n this.breakpointSubscription.unsubscribe();\n }\n }\n}\n","<ng-container *ngFor=\"let card of cards\">\n <ng-template\n [kirbyLoadComponent]=\"card.configuration\"\n [cssClass]=\"'grid-item--col-' + card.colSpan\"\n ></ng-template>\n</ng-container>\n","import { Type } from '@angular/core';\n\nimport { ComponentConfiguration } from '../shared/component-configuration';\n\nexport class GridCardConfiguration implements ComponentConfiguration {\n constructor(public component: Type<any>, public data: any, public preferredSize: number) {}\n}\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [IonicModule],\n declarations: [IconComponent],\n exports: [IconComponent],\n})\nexport class IconModule {}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'kirby-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n})\nexport class LabelComponent {\n @Input()\n direction: 'vertical' | 'horizontal' = 'vertical';\n\n @HostBinding('class.horizontal')\n get _direction() {\n return this.direction === 'horizontal';\n }\n}\n","<ion-label>\n <ng-content></ng-content>\n</ion-label>\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { CommonModule } from '@angular/common';\n\nimport { IconModule } from '../icon/icon.module';\nimport { ItemComponent } from './item.component';\nimport { LabelComponent } from './label/label.component';\n\n@NgModule({\n imports: [IonicModule, IconModule, CommonModule],\n declarations: [ItemComponent, LabelComponent],\n exports: [ItemComponent, LabelComponent],\n})\nexport class ItemModule {}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'kirby-item-group',\n templateUrl: './item-group.component.html',\n styleUrls: ['./item-group.component.scss'],\n})\nexport class ItemGroupComponent {\n @HostBinding('attr.role') role: string = 'group';\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kirby-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpinnerComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","<div class=\"spinner\">\n <div class=\"inner-circle\"></div>\n <div class=\"outer-circle\"></div>\n</div>\n","import { ComponentFactoryResolver, Injectable, Injector } from '@angular/core';\nimport { LoadingController } from '@ionic/angular';\n\nimport { SpinnerComponent } from '../spinner/spinner.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingOverlayService {\n private ionLoading: HTMLIonLoadingElement = null;\n\n constructor(\n private loadingController: LoadingController,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector\n ) {}\n\n public async showLoadingOverlay(showBackdrop: boolean = true): Promise<void> {\n if (!this.ionLoading) {\n this.ionLoading = await this.loadingController.create({\n cssClass: 'kirby-loading-overlay',\n duration: 0,\n message: null,\n showBackdrop: showBackdrop,\n spinner: null,\n });\n\n const loadingWrapper = this.ionLoading.querySelector('.loading-wrapper');\n const kirbySpinner = document.createElement('kirby-spinner');\n const factory = this.componentFactoryResolver.resolveComponentFactory(SpinnerComponent);\n factory.create(this.injector, [], kirbySpinner);\n loadingWrapper.appendChild(kirbySpinner);\n\n await this.ionLoading.present();\n }\n }\n\n public async hideLoadingOverlay(): Promise<void> {\n if (!!this.ionLoading) {\n await this.ionLoading.dismiss();\n this.ionLoading = null;\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-loading-overlay',\n templateUrl: './loading-overlay.component.html',\n styleUrls: ['./loading-overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingOverlayComponent {\n @Input() public isLoading = true;\n @Input() public showBackdrop = true;\n}\n","<div class=\"overlay-wrapper\">\n <div *ngIf=\"isLoading\" [class.backdrop]=\"showBackdrop\" class=\"spinner-wrapper\">\n <kirby-spinner class=\"spinner\"></kirby-spinner>\n </div>\n <div class=\"content-wrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { WindowRef } from '../../../types/window-ref';\n\nimport { Scroll } from './scroll.model';\n\n/**\n * Specify debounce duration in ms\n */\nexport const INFINITE_SCROLL_DEBOUNCE = 100;\n\n@Directive({\n selector: '[kirbyInfiniteScroll]',\n})\nexport class InfiniteScrollDirective implements AfterViewInit, OnDestroy {\n /**\n * Event that will be triggered when the user has scrolled to\n * bottom of the element\n */\n @Output() scrollEnd = new EventEmitter<void>();\n\n /**\n * If true then {@link scrollEnd} event should NOT be emitted\n */\n @Input() disabled = false;\n\n /**\n * Emits a new value on element scroll event\n */\n scroll$: Subject<Scroll> = new Subject<Scroll>();\n\n /**\n * Completes on component destroy lifecycle event\n * used to unsubscribe from infinite observables\n */\n private ngUnsubscribe$ = new Subject<void>();\n\n /**\n * An offset from the bottom of the element to trigger {@link scrollEnd} event\n */\n private offset = 0.8;\n\n constructor(private elementRef: ElementRef, private windowRef: WindowRef, private zone: NgZone) {}\n\n ngAfterViewInit(): void {\n /**\n * Subscribe to {@link scroll$} observable and emit {@link scrollEnd} event\n * when element scroll position has surpassed the offset.\n */\n this.scroll$\n .pipe(\n takeUntil(this.ngUnsubscribe$),\n debounceTime(INFINITE_SCROLL_DEBOUNCE),\n filter(() => !this.disabled),\n filter((scroll) => {\n return (\n scroll.elementHeight * (1 - this.offset) >=\n scroll.distanceToViewBottom - scroll.viewHeight\n );\n })\n )\n .subscribe(() => {\n this.scrollEnd.emit();\n });\n\n /**\n * Subscribe to the ionScroll event on the ion-content around the list (if any)\n * and emit {@link scrollEnd} event when element scroll position has surpassed the offset.\n */\n setTimeout(() => {\n const ionContent: HTMLElement = this.elementRef.nativeElement.closest('ion-content');\n if (ionContent) {\n // we run the 'ionScroll' event outside angular, as it would trigger change detection on each scroll\n this.zone.runOutsideAngular(() => {\n fromEvent<any>(ionContent, 'ionScroll')\n .pipe(\n takeUntil(this.ngUnsubscribe$),\n debounceTime(INFINITE_SCROLL_DEBOUNCE),\n filter(() => !this.disabled),\n map(() => this.getScroll()),\n filter((scroll) => {\n return (\n scroll.elementHeight * (1 - this.offset) >=\n scroll.distanceToViewBottom - scroll.viewHeight\n );\n })\n )\n .subscribe(() => {\n // we make sure to emit the event inside angular again. As we want to show the spinner and need change detection for that.\n this.zone.run(() => this.scrollEnd.emit());\n });\n });\n }\n });\n }\n\n /**\n * On element scroll event emit next {@link scroll$} observable value\n */\n @HostListener('window:scroll')\n onScroll(): void {\n if (this.disabled) return;\n const scroll = this.getScroll();\n this.scroll$.next(scroll);\n }\n\n /**\n * trigger {@link ngUnsubscribe} complete on component destroy lifecycle hook\n */\n ngOnDestroy(): void {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n\n private getScroll(): Scroll {\n const element = this.elementRef.nativeElement as HTMLElement;\n const boundindClientRect = element.getBoundingClientRect();\n\n const distanceToViewBottom = boundindClientRect.bottom;\n const elementHeight = boundindClientRect.height;\n const viewHeight = this.windowRef.nativeWindow.innerHeight;\n\n return { distanceToViewBottom, elementHeight, viewHeight };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ListComponent } from '../list.component';\nimport { LoadOnDemandEventData } from '../list.event';\n\n@Injectable()\nexport class ListHelper {\n onLoadOnDemand(component: ListComponent, _event: LoadOnDemandEventData) {\n if (component.isLoadOnDemandEnabled && !component._isLoading) {\n component._isLoading = true;\n component.loadOnDemand.emit({\n complete: (disableLoadOnDemand: boolean) => {\n component.isLoadOnDemandEnabled = !disableLoadOnDemand;\n component._isLoading = false;\n },\n });\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'groupBy',\n})\nexport class GroupByPipe implements PipeTransform {\n transform(items: any[], getGroupName?: (item: any) => string): any[] {\n if (!items) {\n return null;\n }\n if (!getGroupName) {\n return items;\n }\n\n const groupsMap = new Map<string, any[]>();\n\n items.forEach((item: any) => {\n const itemGroup = getGroupName(item);\n const groupItems = groupsMap.get(itemGroup);\n\n if (groupItems) {\n groupItems.push(item);\n } else {\n groupsMap.set(itemGroup, [item]);\n }\n });\n\n return Array.from(groupsMap)\n .sort(([name], [otherName]) => name.localeCompare(otherName))\n .map(([name, items]) => {\n return { name, items };\n });\n }\n}\n","import { Directive, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\n@Directive({\n selector: '[kirbyListItemColor]',\n})\nexport class ListItemColorDirective implements OnChanges {\n @Input()\n kirbyListItemColor: (item: any) => ThemeColor;\n @Input() item: any;\n @HostBinding('class')\n color: ThemeColor;\n\n ngOnChanges(): void {\n this.color = this.getColor();\n }\n\n private getColor(): ThemeColor {\n if (!this.kirbyListItemColor || !this.item) {\n return;\n }\n\n const themeColor = this.kirbyListItemColor(this.item);\n return themeColor;\n }\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IonItemSliding } from '@ionic/angular';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\nimport { PlatformService } from '../../../helpers/platform.service';\nimport { ListSwipeAction, ListSwipeDirection, ListSwipeEnd } from '../list-swipe-action.type';\n\nexport type BoundaryClass = 'first' | 'last';\n\n@Component({\n selector: 'kirby-list-item',\n templateUrl: './list-item.component.html',\n styleUrls: ['../list.component.scss', './list-item.component.scss'],\n})\nexport class ListItemComponent implements OnInit, AfterViewInit {\n _isSwipingEnabled = false;\n\n constructor(private platform: PlatformService) {\n this.initializeSwipeActions();\n }\n\n @ViewChild(IonItemSliding) ionItemSliding: IonItemSliding;\n\n @Input() item: any;\n\n @Input() boundaryClass: BoundaryClass;\n\n @Input() swipeActions: ListSwipeAction[] = [];\n\n @Input() itemTemplate: TemplateRef<any>;\n\n @Input() isSelected: boolean;\n\n @Input() isSelectable: boolean;\n\n @Input() getItemColor: (item: any) => ThemeColor;\n\n @Output() itemSelect = new EventEmitter<any>();\n\n _onItemSelect(item: any) {\n if (!this.isSelectable) return;\n this.itemSelect.emit(item);\n }\n\n @Output() swipeActionSelect = new EventEmitter<any>();\n\n _onSwipeActionSelect(swipeAction, item, event) {\n this.swipeActionSelect.emit({\n swipeAction,\n item,\n event,\n });\n }\n\n ngOnInit() {\n this.initializeSwipeActions();\n }\n\n ngAfterViewInit(): void {\n if (!this.itemTemplate) {\n console.warn('No item template was provided.');\n }\n }\n\n _hasSwipeActions(item: any): boolean {\n if (!Array.isArray(this.swipeActions)) {\n return false;\n }\n return this.swipeActions.some((swipeAction) => {\n if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n return false;\n }\n if (swipeAction.isDisabled === true) {\n return false;\n }\n return swipeAction.position === 'left' || swipeAction.position === 'right';\n });\n }\n\n _getSwipeActions(item: any, direction?: ListSwipeDirection): ListSwipeAction[] {\n if (!Array.isArray(this.swipeActions)) {\n return [];\n }\n return this.swipeActions.filter((swipeAction) => {\n if (this.isSwipeActionDisabled(swipeAction, item)) {\n return false;\n }\n return direction ? swipeAction.position === direction : true;\n });\n }\n\n private isSwipeActionDisabled(swipeAction: ListSwipeAction, item: any): boolean {\n if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n return true;\n }\n return swipeAction.isDisabled === true;\n }\n\n _getSwipeActionEnd(item: any): ListSwipeEnd {\n if (this._getSwipeActions(item, 'left').length) {\n return 'start';\n }\n return 'end';\n }\n\n _getSwipeActionIcon(swipeAction: ListSwipeAction, item: any): string {\n if (!swipeAction.icon) return;\n\n if (swipeAction.icon instanceof Function) {\n return swipeAction.icon(item);\n }\n return swipeAction.icon;\n }\n\n _getSwipeActionTitle(swipeAction: ListSwipeAction, item: any): string {\n if (swipeAction.title instanceof Function) {\n return swipeAction.title(item);\n }\n return swipeAction.title;\n }\n\n _getSwipeActionType(swipeAction: ListSwipeAction, item: any): ThemeColor {\n if (swipeAction.type instanceof Function) {\n return swipeAction.type(item);\n }\n return swipeAction.type;\n }\n\n private initializeSwipeActions(): void {\n if (this.swipeActions && this.swipeActions.length) {\n this._isSwipingEnabled = this.platform.isTouch();\n }\n }\n}\n","<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n <ion-item-options *ngIf=\"_hasSwipeActions(item)\" [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n <ng-container *ngFor=\"let swipeAction of _getSwipeActions(item)\">\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n <kirby-icon\n *ngIf=\"_getSwipeActionIcon(swipeAction, item)\"\n size=\"sm\"\n [name]=\"_getSwipeActionIcon(swipeAction, item)\"\n >\n </kirby-icon>\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n </ng-container>\n </div>\n </ion-item-options>\n</ng-template>\n","import {\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n} from '@angular/core';\n\nimport { ThemeColor } from '@kirbydesign/core';\n\nimport { ItemComponent } from '../item/item.component';\n\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListHelper } from './helpers/list-helper';\nimport { BoundaryClass } from './list-item/list-item.component';\nimport { ListSwipeAction } from './list-swipe-action.type';\nimport {\n ListFooterDirective,\n ListHeaderDirective,\n ListItemTemplateDirective,\n ListSectionHeaderDirective,\n} from './list.directive';\nimport { LoadOnDemandEvent, LoadOnDemandEventData } from './list.event';\nimport { GroupByPipe } from './pipes/group-by.pipe';\n\nexport type ListShape = 'square' | 'rounded' | 'none';\n\n@Component({\n selector: 'kirby-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n providers: [ListHelper, GroupByPipe],\n})\nexport class ListComponent implements OnInit, AfterViewInit, OnChanges {\n @ViewChild('list', { static: true }) list: any;\n @ViewChild(InfiniteScrollDirective) scrollDirective: InfiniteScrollDirective;\n\n /**\n * Provide items for the list to render. Items must be provided in the order you expect them to be rendered.\n */\n @Input()\n items: any[] = [];\n\n @Input() getItemColor: (item: any) => ThemeColor;\n\n /**\n * Callback to determine name of section. Sections will be ordered alphabetically.\n */\n @Input() getSectionName: (item: any) => string;\n\n /**\n * Callback that defines how to track changes for items in the iterable.\n */\n @Input() trackBy: TrackByFunction<any>;\n\n /**\n * Text to display when no more items can be loaded (used for \"on demand\"-loading).\n */\n @Input() noMoreItemsText: string;\n\n /**\n * Determines if dividers (bottom-border on list items) should be shown or not.\n */\n @Input() showDivider = false;\n\n /**\n * Determines if list row text should turn bold on selection\n */\n @Input() markSelectedRow = false;\n\n /**\n * Determine outline shape of:\n * - list, if {@link #isSectionsEnabled} is `false`\n * - section, if {@link #isSectionsEnabled} is `true`\n *\n * `square` means **without** rounded corners, `rounded` means **with** rounded corners., `none` means **without** padding, border, box-shadow and background.\n */\n @Input() shape: ListShape = 'rounded';\n\n @HostBinding('class.shape-rounded')\n public get isShapeRounded(): boolean {\n return this.shape === 'rounded';\n }\n\n @HostBinding('class.shape-none')\n public get isShapeNone(): boolean {\n return this.shape === 'none';\n }\n\n @HostBinding('class.item-spacing')\n @Input()\n hasItemSpacing: boolean;\n\n /**\n * Determines if the loadOnDemand event should be emitted.\n * Will default to true if there is at least one subscriber to the loadOnDemand event\n */\n @Input() isLoadOnDemandEnabled: boolean;\n\n /**\n * Emitting event when more items are to be loaded.\n */\n @Output() loadOnDemand = new EventEmitter<LoadOnDemandEvent>();\n\n /**\n * Determines if list items should have swipe actions or not\n * - the order of swipe actions is used to determine edge actions,\n * as well as their order of appearance on the screen.\n */\n @Input() swipeActions: ListSwipeAction[] = [];\n\n /**\n * Emitting event when an item is selected (tapped on mobile, clicked on web)\n */\n @Output() itemSelect = new EventEmitter<any>();\n\n @Input() disableSelectionHighlight: boolean = false;\n\n @ContentChildren(ItemComponent)\n kirbyItems: ItemComponent[];\n\n @ContentChild(ListHeaderDirective, { static: false, read: TemplateRef })\n headerTemplate: TemplateRef<any>;\n\n @ContentChild(ListSectionHeaderDirective, { static: false, read: TemplateRef })\n sectionHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(ListFooterDirective, { static: false, read: TemplateRef })\n footerTemplate: TemplateRef<any>;\n\n /**\n * The first element that matches ListItemDirective.\n * As a structural directive it unfolds into a template. This is a reference to that.\n */\n @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n itemTemplate: TemplateRef<any>;\n\n @HostBinding('class.has-sections') _isSectionsEnabled: boolean;\n\n _isSelectable: boolean;\n _isLoading: boolean;\n _groupedItems: any[];\n _selectedItem: any;\n\n constructor(private listHelper: ListHelper, private groupBy: GroupByPipe) {}\n\n ngOnInit() {\n this._isSelectable = this.itemSelect.observers.length > 0;\n\n if (this.isLoadOnDemandEnabled === undefined) {\n this.isLoadOnDemandEnabled = this.loadOnDemand.observers.length > 0;\n }\n }\n\n ngAfterViewInit(): void {\n if (this._isSelectable) {\n setTimeout(() => {\n this.kirbyItems.forEach((item) => {\n item.selectable = true;\n });\n });\n }\n }\n\n ngOnChanges(): void {\n this._isSectionsEnabled = !!this.getSectionName;\n this._groupedItems = this._isSectionsEnabled\n ? this.groupBy.transform(this.items, this.getSectionName)\n : null;\n }\n\n _onLoadOnDemand(event?: LoadOnDemandEventData) {\n this.listHelper.onLoadOnDemand(this, event);\n }\n\n defaultTrackBy(index: number): any {\n return index;\n }\n\n sectionTrackBy(_: number, section: { name: string }): string {\n return section.name;\n }\n\n onItemSelect(item: any) {\n if (!this.disableSelectionHighlight) {\n this._selectedItem = item;\n }\n this.itemSelect.emit(item);\n }\n\n onSwipeActionSelect(args: any): void {\n args.swipeAction.onSelected(args.item);\n this.list.closeSlidingItems();\n args.event.stopPropagation();\n }\n\n _getBoundaryClass(index: number, section?: any[]): BoundaryClass {\n let _items = section || this.items;\n\n if (index === 0 || _items[index - 1]?.headingName) return this.headerTemplate ? null : 'first';\n\n if (index === _items.length - 1 || _items[index + 1]?.headingName)\n return this.footerTemplate ? null : 'last';\n }\n}\n","<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n>\n <ion-list-header *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n <div *ngIf=\"footerTemplate\" class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</ion-list>\n\n<p *ngIf=\"!isLoadOnDemandEnabled && noMoreItemsText\" class=\"no-more-items\">\n {{ noMoreItemsText }}\n</p>\n<div *ngIf=\"_isLoading\" class=\"loading\">\n <kirby-spinner></kirby-spinner>\n</div>\n\n<ng-template #groupedListTemplate>\n <ion-item-group *ngFor=\"let section of _groupedItems; trackBy: sectionTrackBy\">\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n\n <div class=\"list-items\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n </ion-item-group>\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n <kirby-list-item\n *ngFor=\"let item of items; let i = index; trackBy: trackBy || defaultTrackBy\"\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n >\n </kirby-list-item>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-list-header',\n templateUrl: './list-header.component.html',\n styleUrls: ['./list-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListHeaderComponent {\n constructor() {}\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kirby-list-section-header',\n templateUrl: './list-section-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListSectionHeaderComponent implements OnInit {\n @Input() title: string;\n constructor() {}\n\n ngOnInit() {}\n}\n","<div class=\"header\">\n <span class=\"kirby-text-small\">{{ title }}</span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [SpinnerComponent],\n imports: [CommonModule],\n exports: [SpinnerComponent],\n providers: [],\n})\nexport class SpinnerModule {}\n","import { ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@angular/core';\nimport { IonList } from '@ionic/angular';\n\nimport { elementHasAncestor } from '../../../helpers/element-has-ancestor';\n\n@Component({\n selector: 'kirby-list-experimental',\n templateUrl: './list-experimental.component.html',\n styleUrls: ['./list-experimental.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListExperimentalComponent {\n @ViewChild(IonList, { static: true }) list: IonList;\n\n @HostListener('click', ['$event'])\n closeAllSlidingItems(e: MouseEvent) {\n if (elementHasAncestor(e.target as HTMLElement, 'ion-item-option', 'ion-list')) {\n this.list.closeSlidingItems();\n }\n }\n}\n","<ng-content select=\"[outside]\"></ng-content>\n<div class=\"rounded shadow first-item-padding last-item-padding\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { IconModule } from '../icon/icon.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListItemColorDirective } from './directives/list-item-color.directive';\nimport { ListExperimentalComponent } from './list-experimental/list-experimental.component';\nimport { ListHeaderComponent } from './list-header/list-header.component';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { ListSectionHeaderComponent } from './list-section-header/list-section-header.component';\nimport { ListComponent } from './list.component';\nimport {\n ListFooterDirective,\n ListHeaderDirective,\n ListItemTemplateDirective,\n ListSectionHeaderDirective,\n} from './list.directive';\n\nconst exportedDeclarations = [\n ListComponent,\n ListItemComponent,\n ListItemTemplateDirective,\n ListSectionHeaderComponent,\n ListSectionHeaderDirective,\n ListHeaderDirective,\n ListHeaderComponent,\n ListFooterDirective,\n ListExperimentalComponent,\n];\n\nconst declarations = [\n ...exportedDeclarations,\n ListItemColorDirective,\n InfiniteScrollDirective,\n ListItemComponent,\n];\n\n@NgModule({\n declarations: declarations,\n imports: [CommonModule, IconModule, IonicModule, SpinnerModule],\n exports: exportedDeclarations,\n providers: [],\n})\nexport class ListModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-modal-footer',\n templateUrl: './modal-footer.component.html',\n styleUrls: ['./modal-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalFooterComponent {\n @HostBinding('class.snap-to-keyboard')\n @Input()\n snapToKeyboard = false;\n\n @HostBinding('class')\n @Input()\n type: 'inline' | 'fixed' = 'fixed';\n}\n","<ion-footer>\n <ng-content></ng-content>\n</ion-footer>\n","export const selectedTabClickEvent = 'kirbySelectedTabClick';\n","import { Injectable } from '@angular/core';\nimport { IonRouterOutlet } from '@ionic/angular';\nimport { ReplaySubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabsService {\n private outletSubject$: ReplaySubject<IonRouterOutlet> = new ReplaySubject();\n public outlet$ = this.outletSubject$.asObservable();\n\n public setOutlet(outlet: IonRouterOutlet) {\n this.outletSubject$.next(outlet);\n }\n}\n\nexport { IonRouterOutlet };\n","import { AfterViewInit, Component, HostBinding, ViewChild } from '@angular/core';\nimport { IonTabs } from '@ionic/angular';\n\nimport { TabsService } from './tabs.service';\n\n@Component({\n selector: 'kirby-tab-bar',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n})\nexport class TabsComponent implements AfterViewInit {\n @HostBinding('class.tab-bar-bottom-hidden')\n tabBarBottomHidden = false;\n @ViewChild(IonTabs, { static: true }) tabs: IonTabs;\n\n constructor(private tabsService: TabsService) {}\n\n ngAfterViewInit() {\n this.tabsService.setOutlet(this.tabs.outlet);\n }\n}\n","<ion-tabs>\n <ion-tab-bar [class.bottom-hidden]=\"tabBarBottomHidden\">\n <ng-content></ng-content>\n </ion-tab-bar>\n</ion-tabs>\n","import { Injectable, Renderer2, RendererStyleFlags2 } from '@angular/core';\n\nconst config = Object.freeze({\n className: 'kirby-line-clamp',\n lineClamp: '--line-clamp',\n lineHeight: '--line-height',\n});\n\n@Injectable()\nexport class LineClampHelper {\n constructor(private renderer: Renderer2) {}\n\n setMaxLines(element: Element, maxLines: number): void {\n this.renderer.setStyle(element, config.lineClamp, maxLines, RendererStyleFlags2.DashCase);\n this.renderer.addClass(element, config.className);\n }\n\n setLineHeight(element: Element, lineHeight: string): void {\n // Only necessary for the fallback solution to work\n this.renderer.setStyle(element, config.lineHeight, lineHeight, RendererStyleFlags2.DashCase);\n }\n\n removeLineClamp(element: Element) {\n this.renderer.removeClass(element, config.className);\n this.renderer.removeStyle(element, config.lineClamp);\n this.renderer.removeStyle(element, config.lineHeight);\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { DesignTokenHelper } from '@kirbydesign/core';\n\nimport { ResizeObserverService } from '../../components/shared/resize-observer/resize-observer.service';\nimport { LineClampHelper } from '../../helpers/line-clamp-helper';\n\nconst fontSize = DesignTokenHelper.fontSize;\nconst lineHeight = DesignTokenHelper.lineHeight;\n\ninterface HeadingSize {\n name: string;\n fontSize: string;\n lineHeight: string;\n}\n\nexport interface FitHeadingConfig {\n maxLines: number;\n}\n\n@Directive({\n selector: `h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]`,\n providers: [LineClampHelper],\n})\nexport class FitHeadingDirective implements OnInit, OnDestroy {\n // tslint:disable-next-line:no-input-rename\n @Input('kirbyFitHeading') config?: FitHeadingConfig;\n\n private isObservingHostElement: boolean;\n private hostElementClone: Element;\n private isScalingHeader: boolean; // used to prevent resizeObserver to trigger on font scaling by this.scaleHeader()\n\n private headingSizes: HeadingSize[] = [\n {\n name: 'h1',\n fontSize: fontSize('xl'),\n lineHeight: lineHeight('xl'),\n },\n {\n name: 'h2',\n fontSize: fontSize('l'),\n lineHeight: lineHeight('l'),\n },\n {\n name: 'h3',\n fontSize: fontSize('m'),\n lineHeight: lineHeight('m'),\n },\n ];\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private resizeObserverService: ResizeObserverService,\n private lineClampHelper: LineClampHelper\n ) {}\n\n ngOnInit(): void {\n if (this.config && this.config.maxLines) {\n this.lineClampHelper.setMaxLines(this.elementRef.nativeElement, this.config.maxLines);\n this.observeResize();\n this.isObservingHostElement = true;\n }\n }\n\n ngOnDestroy(): void {\n if (this.isObservingHostElement) {\n this.resizeObserverService.unobserve(this.elementRef);\n if (this.hostElementClone) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.hostElementClone);\n }\n }\n }\n\n private observeResize(): void {\n this.resizeObserverService.observe(this.elementRef, () => {\n /**\n * setTimeout is used here to avoid repeated size changes\n * while the first size change is still ongoing.\n * This would result in the ResizeObserver being called again,\n * giving 'ResizeObserver loop limit exceeded' types of errors.\n */\n setTimeout(() => {\n this.scaleHeader();\n }, 0);\n });\n }\n\n private scaleHeader(): void {\n if (this.isScalingHeader) return;\n\n this.isScalingHeader = true;\n\n if (!this.hostElementClone) {\n this.hostElementClone = this.generateHostElementClone();\n this.renderer.appendChild(this.elementRef.nativeElement, this.hostElementClone);\n }\n\n this.renderer.setStyle(\n this.hostElementClone,\n 'width',\n `${this.elementRef.nativeElement.clientWidth}px`\n );\n\n const fallbackSize = this.headingSizes[this.headingSizes.length - 1];\n const fittedSize = this.headingSizes.find(this.canFitHeading.bind(this)) || fallbackSize;\n\n this.setSize(this.elementRef.nativeElement, fittedSize);\n this.lineClampHelper.setLineHeight(this.elementRef.nativeElement, fittedSize.lineHeight);\n this.isScalingHeader = false;\n }\n\n private canFitHeading(size: HeadingSize) {\n this.setSize(this.hostElementClone, size);\n const lines = this.hostElementClone.clientHeight / parseInt(size.lineHeight);\n return lines <= this.config.maxLines;\n }\n\n private generateHostElementClone(): Element {\n const clone = this.elementRef.nativeElement.cloneNode(true);\n this.renderer.setStyle(clone, 'position', 'absolute');\n this.renderer.setStyle(clone, 'visibility', 'hidden');\n this.lineClampHelper.removeLineClamp(clone);\n return clone;\n }\n\n private setSize(el: Element, size: HeadingSize): void {\n this.renderer.setStyle(el, 'font-size', size.fontSize);\n this.renderer.setStyle(el, 'line-height', size.lineHeight);\n }\n}\n","import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router, RouterEvent } from '@angular/router';\nimport { IonContent, IonFooter, IonHeader } from '@ionic/angular';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { KirbyAnimation } from '../../animation/kirby-animation';\nimport { FitHeadingConfig } from '../../directives/fit-heading/fit-heading.directive';\nimport { WindowRef } from '../../types/window-ref';\nimport { ModalWrapperComponent } from '../modal/modal-wrapper/modal-wrapper.component';\nimport { ModalNavigationService } from '../modal/services/modal-navigation.service';\nimport { selectedTabClickEvent } from '../tabs/tab-button/tab-button.events';\nimport { TabsComponent } from '../tabs/tabs.component';\n\ntype stickyConfig = { sticky: boolean };\ntype fixedConfig = { fixed: boolean };\n\n/**\n * Event emitted when \"pull-to-refresh\" begins.\n */\nexport interface PullToRefreshEvent {\n /**\n * Invoke this callback-method when action to perform upon \"pull-to-refresh\" completes.\n */\n complete();\n}\n\n@Directive({\n selector: '[kirbyPageTitle]',\n})\nexport class PageTitleDirective {}\n\n@Directive({\n selector: '[kirbyPageSubtitle]',\n})\nexport class PageSubtitleDirective {}\n\n@Directive({\n selector: '[kirbyPageToolbarTitle]',\n})\nexport class PageToolbarTitleDirective {}\n\n@Directive({\n selector: '[kirbyPageActions]',\n})\nexport class PageActionsDirective {\n @Input('kirbyPageActions') config: stickyConfig | fixedConfig;\n private readonly stickyDefault = true;\n private readonly fixedDefault = false;\n\n constructor(public template: TemplateRef<any>) {}\n\n get isSticky(): boolean {\n return this.config ? (this.config as stickyConfig).sticky : this.stickyDefault;\n }\n\n get isFixed(): boolean {\n return this.config ? (this.config as fixedConfig).fixed : this.fixedDefault;\n }\n}\n\n@Directive({\n selector: '[kirbyPageContent]',\n})\nexport class PageContentDirective {\n @Input('kirbyPageContent') config: fixedConfig;\n\n constructor(public template: TemplateRef<any>) {}\n\n get isFixed(): boolean {\n return this.config && this.config.fixed;\n }\n}\n\n@Component({\n selector: 'kirby-page-progress',\n template: ` <ng-content></ng-content> `,\n styles: [':host {display: flex}'],\n})\nexport class PageProgressComponent implements OnInit {\n // TODO: Find alternative implementation, which aligns with future page configuration / consumption\n // This implementation was chosen over expanding `moveChild` method in component wrapper with yet another scenario\n @HostBinding('attr.slot') slot = 'start';\n\n constructor(@Optional() @SkipSelf() private modalWrapper: ModalWrapperComponent) {}\n\n ngOnInit(): void {\n if (this.modalWrapper && this.modalWrapper.config.flavor === 'drawer') {\n this.slot = 'end';\n }\n }\n}\n\n@Component({\n selector: 'kirby-page-title',\n template: ` <ng-content></ng-content> `,\n})\nexport class PageTitleComponent {}\n\n@Component({\n selector: 'kirby-page-content',\n template: ` <ng-content></ng-content> `,\n})\nexport class PageContentComponent {}\n\n@Component({\n selector: 'kirby-page-actions',\n template: ` <ng-content select=\"button[kirby-button]\"></ng-content> `,\n})\nexport class PageActionsComponent {}\n\n@Component({\n selector: 'kirby-page',\n templateUrl: './page.component.html',\n styleUrls: ['./page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageComponent\n implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked, OnChanges\n{\n @Input() title: string;\n @Input() subtitle: string;\n @Input() toolbarTitle: string;\n @Input() titleAlignment: 'left' | 'center' | 'right' = 'left';\n @Input() defaultBackHref: string;\n @Input() hideBackButton: boolean;\n @Input() titleMaxLines: number;\n\n private _tabBarBottomHidden: boolean;\n public get tabBarBottomHidden(): boolean {\n return this._tabBarBottomHidden;\n }\n @Input()\n public set tabBarBottomHidden(value: boolean) {\n if (this.tabsComponent) {\n // as we are setting a class on tabs, we need this to happen in a separate cd cycle\n setTimeout(() => (this.tabsComponent.tabBarBottomHidden = value));\n }\n this._tabBarBottomHidden = value;\n }\n\n @Output() enter = new EventEmitter<void>();\n @Output() leave = new EventEmitter<void>();\n @Output() refresh = new EventEmitter<PullToRefreshEvent>();\n\n @ViewChild(IonContent, { static: true }) private content: IonContent;\n @ViewChild(IonContent, { static: true, read: ElementRef })\n private ionContentElement: ElementRef<HTMLIonContentElement>;\n @ViewChild(IonHeader, { static: true, read: ElementRef })\n ionHeaderElement: ElementRef<HTMLIonHeaderElement>;\n @ViewChild(IonFooter, { static: true, read: ElementRef })\n private ionFooterElement: ElementRef<HTMLIonFooterElement>;\n\n @ViewChild('pageTitle', { static: false, read: ElementRef })\n private pageTitle: ElementRef;\n\n @ViewChild('simpleTitleTemplate', { static: true, read: TemplateRef })\n private simpleTitleTemplate: TemplateRef<any>;\n @ViewChild('simpleToolbarTitleTemplate', { static: true, read: TemplateRef })\n private simpleToolbarTitleTemplate: TemplateRef<any>;\n @ContentChild(PageToolbarTitleDirective, { static: false, read: TemplateRef })\n private customToolbarTitleTemplate: TemplateRef<any>;\n @ContentChild(PageTitleDirective, { static: false, read: TemplateRef })\n customTitleTemplate: TemplateRef<any>;\n @ContentChild(PageSubtitleDirective, { static: false, read: TemplateRef })\n customSubtitleTemplate: TemplateRef<any>;\n @ContentChildren(PageActionsDirective)\n customActions: QueryList<PageActionsDirective>;\n @ContentChildren(PageContentDirective)\n private customContent: QueryList<PageContentDirective>;\n\n hasPageTitle: boolean;\n hasPageSubtitle: boolean;\n hasActionsInPage: boolean;\n toolbarTitleVisible: boolean;\n toolbarFixedActionsVisible: boolean;\n toolbarStickyActionsVisible: boolean;\n\n fitHeadingConfig: FitHeadingConfig;\n\n toolbarTitleTemplate: TemplateRef<any>;\n customContentTemplate: TemplateRef<any>;\n pageActionsTemplate: TemplateRef<any>;\n fixedContentTemplate: TemplateRef<any>;\n stickyActionsTemplate: TemplateRef<any>;\n fixedActionsTemplate: TemplateRef<any>;\n private pageTitleIntersectionObserverRef: IntersectionObserver =\n this.pageTitleIntersectionObserver();\n private urls: string[] = [];\n private hasEntered: boolean;\n\n private ngOnDestroy$ = new Subject();\n private navigationStart$: Observable<RouterEvent> = this.router.events.pipe(\n takeUntil(this.ngOnDestroy$),\n filter((event: RouterEvent) => event instanceof NavigationStart)\n );\n\n private navigationEnd$: Observable<RouterEvent> = this.router.events.pipe(\n takeUntil(this.ngOnDestroy$),\n filter((event: RouterEvent) => event instanceof NavigationEnd)\n );\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n private windowRef: WindowRef,\n private modalNavigationService: ModalNavigationService,\n @Optional() @SkipSelf() private tabsComponent: TabsComponent\n ) {}\n\n ngOnInit(): void {\n this.removeWrapper();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.titleMaxLines) {\n this.fitHeadingConfig = {\n ...this.fitHeadingConfig,\n maxLines: changes.titleMaxLines.currentValue,\n };\n }\n if (changes.subtitle && !changes.subtitle.isFirstChange) {\n this.subtitle = changes.title.currentValue;\n this.hasPageSubtitle = this.subtitle !== undefined;\n }\n }\n\n ngAfterViewInit(): void {\n this.navigationStart$.subscribe((event: NavigationStart) => {\n if (\n !this.urls.includes(event.url) &&\n !this.modalNavigationService.isModalRoute(event.url) &&\n !this.modalNavigationService.isModalRoute(this.router.url)\n ) {\n this.onLeave();\n }\n });\n\n this.navigationEnd$.subscribe((event: NavigationEnd) => {\n if (this.urls.includes(event.urlAfterRedirects)) {\n this.onEnter();\n }\n });\n\n this.windowRef.nativeWindow.addEventListener(selectedTabClickEvent, () => {\n this.content.scrollToTop(KirbyAnimation.Duration.LONG);\n });\n }\n\n ngAfterContentChecked(): void {\n if (!this.urls.includes(this.router.url)) {\n this.urls.push(this.router.url);\n this.onEnter();\n }\n\n this.initializeTitle();\n this.initializeActions();\n this.initializeContent();\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.ngOnDestroy$.next();\n this.ngOnDestroy$.complete();\n\n this.pageTitleIntersectionObserverRef.disconnect();\n this.windowRef.nativeWindow.removeEventListener(selectedTabClickEvent, () => {\n this.content.scrollToTop(KirbyAnimation.Duration.LONG);\n });\n }\n\n delegateRefreshEvent(event: any): void {\n this.refresh.emit({\n complete: event.target.complete.bind(event.target),\n });\n }\n\n private onEnter() {\n if (this.hasEntered) return;\n this.hasEntered = true;\n\n this.enter.emit();\n if (this.pageTitle) {\n this.pageTitleIntersectionObserverRef.observe(this.pageTitle.nativeElement);\n }\n }\n\n private onLeave() {\n this.leave.emit();\n if (this.pageTitle) {\n this.pageTitleIntersectionObserverRef.unobserve(this.pageTitle.nativeElement);\n }\n this.hasEntered = false;\n\n if (this.tabBarBottomHidden && this.tabsComponent) {\n this.tabsComponent.tabBarBottomHidden = false;\n }\n }\n\n private initializeTitle() {\n // Ensures initializeTitle() won't run, if already initialized\n if (this.hasPageTitle) return;\n this.hasPageTitle = this.title !== undefined || !!this.customTitleTemplate;\n this.toolbarTitleVisible = !this.hasPageTitle;\n this.hasPageSubtitle = this.subtitle !== undefined || !!this.customSubtitleTemplate;\n\n if (this.hasPageTitle) {\n setTimeout(() => {\n this.pageTitleIntersectionObserverRef.observe(this.pageTitle.nativeElement);\n });\n }\n\n const defaultTitleTemplate = this.customTitleTemplate || this.simpleTitleTemplate;\n // tslint:disable:prettier\n // prettier-ignore\n this.toolbarTitleTemplate = this.customToolbarTitleTemplate\n ? this.customToolbarTitleTemplate\n : typeof this.toolbarTitle === 'string'\n ? this.simpleToolbarTitleTemplate\n : defaultTitleTemplate;\n }\n\n private initializeActions() {\n this.customActions.forEach((pageAction) => {\n if (pageAction.isFixed) {\n this.fixedActionsTemplate = pageAction.template;\n this.toolbarFixedActionsVisible = true;\n } else {\n this.pageActionsTemplate = pageAction.template;\n if (pageAction.isSticky) {\n this.stickyActionsTemplate = pageAction.template;\n }\n }\n });\n this.hasActionsInPage = !!this.pageActionsTemplate;\n }\n\n private initializeContent() {\n this.customContent.forEach((content) => {\n if (content.isFixed) {\n this.fixedContentTemplate = content.template;\n } else {\n this.customContentTemplate = content.template;\n }\n });\n }\n\n private removeWrapper() {\n const parent = this.elementRef.nativeElement.parentNode;\n this.renderer.removeChild(parent, this.elementRef.nativeElement);\n this.renderer.appendChild(parent, this.ionHeaderElement.nativeElement);\n this.renderer.appendChild(parent, this.ionContentElement.nativeElement);\n this.renderer.appendChild(parent, this.ionFooterElement.nativeElement);\n }\n\n private pageTitleIntersectionObserver() {\n const options = {\n rootMargin: '0px',\n };\n\n let initialized = false;\n const callback = (entries) => {\n if (initialized) {\n this.toolbarTitleVisible = !entries[0].isIntersecting;\n this.toolbarStickyActionsVisible = !entries[0].isIntersecting;\n this.changeDetectorRef.detectChanges();\n } else {\n initialized = true;\n }\n };\n return new IntersectionObserver(callback, options);\n }\n\n @HostListener('window:keyboardWillShow', ['$event'])\n _onKeyboardWillShow(info?: { keyboardHeight: number }) {\n if (info && info.keyboardHeight) {\n this.ionContentElement.nativeElement.style.setProperty(\n '--keyboard-offset',\n `${info.keyboardHeight}px`\n );\n }\n }\n\n @HostListener('window:keyboardWillHide')\n _onKeyboardWillHide() {\n this.ionContentElement.nativeElement.style.setProperty('--keyboard-offset', '0px');\n }\n}\n","<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n SkipSelf,\n} from '@angular/core';\n\nimport { PageComponent } from '../page.component';\n\n@Component({\n selector: 'kirby-page-footer',\n templateUrl: './page-footer.component.html',\n styleUrls: ['./page-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageFooterComponent implements OnDestroy {\n @Input()\n hasPadding: boolean = true;\n\n constructor(\n @Optional() @SkipSelf() private pageComponent: PageComponent,\n private hostElement: ElementRef,\n private renderer: Renderer2\n ) {\n if (!pageComponent) {\n throw new Error('Page footer must reside inside of a Kirby page');\n }\n }\n\n close() {\n this.pageComponent.tabBarBottomHidden = false;\n this.renderer.removeChild(\n this.hostElement.nativeElement.parentElement,\n this.hostElement.nativeElement,\n true\n );\n }\n\n ngOnDestroy(): void {\n this.pageComponent.tabBarBottomHidden = false;\n }\n}\n","<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { FitHeadingDirective } from './fit-heading.directive';\n\n@NgModule({\n declarations: [FitHeadingDirective],\n exports: [FitHeadingDirective],\n})\nexport class FitHeadingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { FitHeadingModule } from '../../directives/fit-heading/fit-heading.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\nimport { PageFooterComponent } from './page-footer/page-footer.component';\nimport {\n PageActionsComponent,\n PageActionsDirective,\n PageComponent,\n PageContentComponent,\n PageContentDirective,\n PageProgressComponent,\n PageSubtitleDirective,\n PageTitleComponent,\n PageTitleDirective,\n PageToolbarTitleDirective,\n} from './page.component';\n\n@NgModule({\n declarations: [\n PageComponent,\n PageActionsComponent,\n PageActionsDirective,\n PageContentComponent,\n PageFooterComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageSubtitleDirective,\n PageToolbarTitleDirective,\n ],\n imports: [CommonModule, IonicModule, FitHeadingModule, SpinnerModule],\n exports: [\n PageComponent,\n PageActionsComponent,\n PageActionsDirective,\n PageContentComponent,\n PageFooterComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageSubtitleDirective,\n PageToolbarTitleDirective,\n FitHeadingModule,\n ],\n})\nexport class PageModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'kirby-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RangeComponent),\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeComponent implements OnChanges, ControlValueAccessor {\n @Input() minLabel: string;\n @Input() maxLabel: string;\n @Input() debounce: number;\n @Input() max: number;\n @Input() min: number;\n @Input() pin: boolean;\n @Input() step = 1;\n @Input() ticks: boolean;\n @Input() disabled = false;\n @Input()\n set value(value: number) {\n if (value !== this.currentValue) {\n this.currentValue = value;\n this.propagateChange(this.currentValue);\n this.change.emit(this.currentValue);\n }\n }\n\n get value(): number {\n return this.currentValue;\n }\n\n @Output() change: EventEmitter<number> = new EventEmitter<number>();\n\n private currentValue: number;\n\n ngOnChanges(_: SimpleChanges) {\n if (!this.ticks) return;\n\n /*\n * Max 10 ticks are allowed\n */\n const amountOfTicks = (this.max - this.min) / this.step;\n if (amountOfTicks > 9) {\n this.step = (this.max - this.min) / 9;\n }\n\n /*\n * Set value to the nearest tick\n */\n this.value = this.getTicks().reduce((a, b) => {\n return Math.abs(b - this.value) < Math.abs(a - this.value) ? b : a;\n });\n }\n\n private getTicks() {\n const ticks = [];\n for (let value = Number(this.min); value <= Number(this.max); value += Number(this.step)) {\n ticks.push(value);\n }\n return ticks;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public _onRangeValueChange($event: any): void {\n this.writeValue($event.detail.value);\n }\n\n public onTouched = () => {};\n\n public propagateChange = (_: any) => {};\n\n public writeValue(value: any): void {\n if (value !== undefined) {\n this.value = value;\n }\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n}\n","<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n>\n</ion-range>\n\n<label *ngIf=\"minLabel\" class=\"min-label\">{{ minLabel }}</label>\n<label *ngIf=\"maxLabel\" class=\"max-label\">{{ maxLabel }}</label>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@ionic/angular';\n\nimport { RouterOutletComponent } from './router-outlet.component';\n\n@NgModule({\n declarations: [RouterOutletComponent],\n imports: [CommonModule, IonicModule],\n exports: [RouterOutletComponent],\n})\nexport class RouterOutletModule {}\n","export class ReorderEvent {\n private origEvent: CustomEvent<any>;\n private parent?: any;\n\n constructor(ev: CustomEvent<any>, parentItem?: any) {\n this.origEvent = ev;\n this.parent = parentItem;\n this.origEvent.cancelBubble = true;\n }\n complete(listOrReorder?: boolean | any[]): Promise<any> {\n return this.origEvent.detail.complete(listOrReorder);\n }\n\n get parentItem(): any {\n return this.parent;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\n\nimport { ListItemTemplateDirective } from '../list/list.directive';\n\nimport { ReorderEvent } from './reorder-event';\n\n@Component({\n selector: 'kirby-reorder-list',\n templateUrl: './reorder-list.component.html',\n styleUrls: ['./reorder-list.component.scss'],\n})\nexport class ReorderListComponent implements OnChanges, OnDestroy {\n @Input() items: any[];\n @Input() subItemsName: string;\n @Input() getItemTextDefault: (item: any) => string;\n\n @Output() itemReorder = new EventEmitter<ReorderEvent>();\n @Output() subItemReorder = new EventEmitter<ReorderEvent>();\n\n @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n itemTemplate: TemplateRef<any>;\n @ViewChildren('reorderGroupContainer')\n reorderGroupContainer: QueryList<ElementRef>;\n\n private observer: MutationObserver;\n reorderActive: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(): void {\n if (this.items && this.items.length > 0) {\n setTimeout(() => {\n this.setupDomListener();\n });\n }\n }\n\n private setupDomListener() {\n const callback = (mutationsList: any) => {\n for (let mutation of mutationsList) {\n if (mutation.oldValue !== mutation.target['className']) {\n this.reorderActive = mutation.target['className'].includes('reorder-list-active');\n }\n }\n this.cdr.detectChanges();\n };\n this.observer = new MutationObserver(callback);\n\n this.reorderGroupContainer.forEach((div: ElementRef) => {\n this.observer.observe(div.nativeElement, {\n attributes: true,\n attributeFilter: ['class'],\n attributeOldValue: true,\n childList: false,\n subtree: true,\n });\n });\n }\n\n doReorder(ev: CustomEvent) {\n this.itemReorder.emit(new ReorderEvent(ev));\n }\n\n doSubReorder(ev: CustomEvent, parentItem: any) {\n this.subItemReorder.emit(new ReorderEvent(ev, parentItem));\n }\n\n ngOnDestroy() {\n //clean up the observer\n this.observer && this.observer.disconnect();\n delete this.observer;\n }\n}\n","<ion-backdrop *ngIf=\"reorderActive\" [tappable]=\"false\" [visible]=\"true\" [stopPropagation]=\"false\">\n</ion-backdrop>\n<ion-reorder-group (ionItemReorder)=\"doReorder($event)\" disabled=\"false\">\n <div *ngFor=\"let reorderItem of items\" class=\"outer-group\">\n <kirby-card>\n <ng-container\n *ngTemplateOutlet=\"itemTemplate || defaultItemTemplate; context: { $implicit: reorderItem }\"\n >\n </ng-container>\n <div *ngIf=\"reorderItem[subItemsName]\" #reorderGroupContainer>\n <ion-reorder-group (ionItemReorder)=\"doSubReorder($event, reorderItem)\" disabled=\"false\">\n <div *ngFor=\"let subItem of reorderItem[subItemsName]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: { $implicit: subItem, isSubItem: true }\n \"\n ></ng-container>\n </div>\n </ion-reorder-group>\n </div>\n </kirby-card>\n </div>\n</ion-reorder-group>\n\n<ng-template #defaultItemTemplate let-item let-isSubItem>\n <kirby-item [reorderable]=\"true\">\n <h3>{{ getItemTextDefault(item) }}</h3>\n </kirby-item>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'kirby-section-header',\n templateUrl: './section-header.component.html',\n styleUrls: ['./section-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SectionHeaderComponent {}\n","<ion-item-divider>\n <ng-content></ng-content>\n</ion-item-divider>\n","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\n\nimport { IconRegistryService } from '../icon/icon-registry.service';\n\nimport { SegmentItem, SegmentItemInternal } from './segment-item';\n\nexport enum SegmentedControlMode {\n chip = 'chip',\n compactChip = 'compactChip',\n default = 'default',\n}\n\n@Component({\n selector: 'kirby-segmented-control',\n templateUrl: './segmented-control.component.html',\n styleUrls: ['./segmented-control.component.scss'],\n // tslint:disable-next-line: no-host-metadata-property\n host: { role: 'group' },\n})\nexport class SegmentedControlComponent {\n constructor(private iconRegistryService: IconRegistryService) {}\n\n preventWrapperClick(event: Event) {\n if (event.target instanceof HTMLElement) {\n if (event.target.classList.contains('segment-btn-wrapper')) {\n event.stopImmediatePropagation();\n }\n }\n }\n\n @Input() mode: SegmentedControlMode | `${SegmentedControlMode}` = SegmentedControlMode.default;\n\n @HostBinding('class')\n get _modeCssClass() {\n return {\n [SegmentedControlMode.chip]: 'chip-mode',\n [SegmentedControlMode.default]: 'default-mode',\n [SegmentedControlMode.compactChip]: 'compact chip-mode',\n }[this.mode];\n }\n\n private _items: SegmentItemInternal[] = [];\n get items(): SegmentItem[] {\n return this._items;\n }\n\n @Input() set items(value: SegmentItem[]) {\n this._items = value || [];\n this._items.forEach((item) => {\n if (!item.badge) return;\n // We need to verify whether badges icon is custom or default, so we can check for it in the template\n item.badge.isCustomIcon =\n item.badge.icon !== undefined &&\n this.iconRegistryService.getIcon(item.badge.icon) !== undefined;\n });\n this._value = this.items[this.selectedIndex];\n }\n\n private _selectedIndex: number = -1;\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n @Input() set selectedIndex(value: number) {\n if (value !== this._selectedIndex) {\n this._selectedIndex = value;\n this._value = this.items[this.selectedIndex];\n }\n }\n\n private _value: SegmentItem;\n get value(): SegmentItem {\n return this._value;\n }\n\n @Input() set value(value: SegmentItem) {\n this.selectedIndex = this.items.indexOf(value);\n }\n\n @HostBinding('class.sm')\n isSmallSize: boolean;\n\n @Input() set size(size: 'sm' | 'md') {\n this.isSmallSize = size === 'sm';\n }\n\n @Output() segmentSelect: EventEmitter<SegmentItem> = new EventEmitter();\n\n onSegmentSelect(selectedId: string) {\n const selectedItemIndex = this.items.findIndex((item) => selectedId === item.id);\n if (selectedItemIndex !== this.selectedIndex) {\n this.selectedIndex = selectedItemIndex;\n this.segmentSelect.emit(this.value);\n }\n }\n}\n","<ion-segment\n *ngIf=\"mode === 'default'\"\n [value]=\"value?.id\"\n (ionChange)=\"onSegmentSelect($event.detail.value)\"\n (click)=\"preventWrapperClick($event)\"\n>\n <div *ngFor=\"let item of items\" class=\"segment-btn-wrapper\">\n <ion-segment-button [value]=\"item.id\">{{ item.text }}</ion-segment-button>\n <kirby-badge\n *ngIf=\"item.badge\"\n role=\"text\"\n [attr.aria-label]=\"item.badge.description\"\n [themeColor]=\"item.badge.themeColor\"\n >\n <ng-container *ngIf=\"item.badge.icon; else badgeContent\">\n <kirby-icon\n *ngIf=\"item.badge.isCustomIcon; else defaultIconName\"\n [customName]=\"item.badge.icon\"\n ></kirby-icon>\n <ng-template #defaultIconName>\n <kirby-icon [name]=\"item.badge.icon\"></kirby-icon>\n </ng-template>\n </ng-container>\n <ng-template #badgeContent>\n {{ item.badge.content }}\n </ng-template>\n </kirby-badge>\n </div>\n</ion-segment>\n\n<ng-container *ngIf=\"mode === 'chip' || mode === 'compactChip'\">\n <kirby-chip\n *ngFor=\"let item of items; let index = index\"\n [text]=\"item.text\"\n [isSelected]=\"index === selectedIndex\"\n (click)=\"onSegmentSelect(item.id)\"\n role=\"button\"\n ></kirby-chip>\n</ng-container>\n","import {\n Component,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\n\n@Component({\n selector: 'kirby-slide-button',\n templateUrl: './slide-button.component.html',\n styleUrls: ['./slide-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlideButtonComponent implements OnDestroy {\n @Input() text = '';\n @Input() expand: 'block';\n\n @Output() slideDone = new EventEmitter();\n @Output() slidingPercentageChanged = new EventEmitter<number>();\n\n readonly slideDoneFadeTime = 500;\n readonly slideResetTime = 100;\n\n isSlideDone = false;\n pctInTens = 0;\n\n get value(): number {\n return this._value;\n }\n set value(v: number) {\n this._value = v;\n this.calculatePctInTens();\n }\n\n private _value: number = 0;\n private resetSliderIntervalTimer: any;\n private calculatePctInTens() {\n this.pctInTens = Math.ceil(this.value / 10) * 10;\n }\n\n constructor(private changeDetectionRef: ChangeDetectorRef) {}\n\n ngOnDestroy(): void {\n if (this.resetSliderIntervalTimer) {\n clearInterval(this.resetSliderIntervalTimer);\n }\n }\n\n onSliderMouseup() {\n if (this.value == 100) {\n this.handleSlideDone();\n } else {\n this.resetSliderIntervalTimer = setInterval(() => {\n if (this.value > 0) {\n this.value -= 2;\n } else {\n clearInterval(this.resetSliderIntervalTimer);\n }\n\n this.changeDetectionRef.markForCheck();\n }, 1);\n }\n }\n\n onSliderValueChange(val: string) {\n this.value = +val;\n this.slidingPercentageChanged.emit(this.value);\n }\n\n onSliderMousedown() {\n clearInterval(this.resetSliderIntervalTimer);\n }\n\n private handleSlideDone() {\n this.slideDone.emit();\n this.isSlideDone = true;\n }\n}\n","<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n","import { AfterViewInit, EventEmitter } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IonSlides } from '@ionic/angular';\n\n@Directive({\n selector: '[kirbySlide]',\n})\nexport class SlideDirective {}\n\n@Component({\n selector: 'kirby-slides',\n template: `\n <ion-slides [options]=\"slidesOptions\" #ionslides (ionSlideDidChange)=\"onSlideChanged()\">\n <ion-slide *ngFor=\"let slide of slides; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"slideTemplate; context: { $implicit: slide, index: i }\"\n ></ng-container>\n </ion-slide>\n </ion-slides>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlidesComponent implements AfterViewInit {\n @ViewChild('ionslides', { static: false }) ionSlides: IonSlides;\n @Input() slidesOptions: any;\n @Input() slides: any[];\n @Output() selectedSlide = new EventEmitter<any>();\n\n @ContentChild(SlideDirective, { static: true, read: TemplateRef })\n public slideTemplate: TemplateRef<any>;\n\n ngAfterViewInit() {\n this.slideTo(0);\n }\n\n onSlideChanged() {\n this.ionSlides.getActiveIndex().then((selectedIndex) => {\n this.selectedSlide.emit({\n slide: this.slides[selectedIndex],\n index: selectedIndex,\n });\n });\n }\n\n slideTo(index: number) {\n this.ionSlides.slideTo(index);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Renderer2,\n QueryList,\n ContentChildren,\n} from '@angular/core';\n\nimport { IconComponent } from '../../icon/icon.component';\nimport { selectedTabClickEvent } from './tab-button.events';\n\n@Component({\n selector: 'kirby-tab-button',\n templateUrl: './tab-button.component.html',\n styleUrls: ['./tab-button.component.scss'],\n})\nexport class TabButtonComponent implements OnInit {\n @Input() routerLink: string;\n @Output() click = new EventEmitter<Event>();\n @ContentChildren(IconComponent) icons: QueryList<IconComponent>;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit(): void {\n this.removeWrapper();\n }\n\n onClick(event: Event, isSelected: boolean) {\n this.click.emit(event);\n\n if (isSelected) {\n const clickEvent = new CustomEvent(selectedTabClickEvent);\n dispatchEvent(clickEvent);\n }\n }\n\n private removeWrapper() {\n const parent = this.elementRef.nativeElement.parentNode;\n const button = this.elementRef.nativeElement.childNodes[0];\n this.renderer.removeChild(parent, this.elementRef.nativeElement);\n this.renderer.appendChild(parent, button);\n }\n}\n","<ion-tab-button #ionTabButton [tab]=\"routerLink\" (click)=\"onClick($event, ionTabButton.selected)\">\n <div class=\"icon-container\" *ngIf=\"icons.length\">\n <ng-content\n *ngIf=\"icons.length === 1 || !ionTabButton.selected\"\n select=\"kirby-icon[:not([selected-tab])]\"\n ></ng-content>\n <ng-content *ngIf=\"ionTabButton.selected\" select=\"kirby-icon[selected-tab]\"></ng-content>\n <ng-content select=\"kirby-badge\"></ng-content>\n </div>\n <ion-label>\n <ng-content></ng-content>\n </ion-label>\n</ion-tab-button>\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { CommonModule } from '@angular/common';\n\nimport { TabsComponent } from './tabs.component';\nimport { TabButtonComponent } from './tab-button/tab-button.component';\nimport { IconModule } from '../icon/icon.module';\nimport { TabsService } from './tabs.service';\n\n@NgModule({\n imports: [IonicModule, IconModule, CommonModule],\n providers: [TabsService],\n declarations: [TabsComponent, TabButtonComponent],\n exports: [TabsComponent, TabButtonComponent],\n})\nexport class TabsModule {}\n","import { Injectable } from '@angular/core';\nimport { ToastController } from '@ionic/angular';\n\nimport { Overlay } from '../../modal/services/modal.interfaces';\nimport { MessageType, ToastConfig } from '../config/toast-config';\n\n@Injectable()\nexport class ToastHelper {\n static CSS_CLASS = 'kirby-toast';\n static DURATION_IN_MS = 4000;\n\n constructor(private toastController: ToastController) {}\n\n public async showToast(config: ToastConfig): Promise<Overlay> {\n const toast = await this.toastController.create({\n animated: config.animated,\n message: config.message,\n position: 'top',\n duration: config.durationInMs ? config.durationInMs : ToastHelper.DURATION_IN_MS,\n cssClass: this.getCssClass(config.messageType),\n });\n await toast.present();\n return {\n dismiss: toast.dismiss.bind(toast),\n onWillDismiss: toast.onWillDismiss(),\n onDidDismiss: toast.onDidDismiss(),\n };\n }\n\n private getCssClass(messageType: MessageType): string {\n let cssClass = ToastHelper.CSS_CLASS;\n\n if (messageType) {\n cssClass += ' ' + messageType;\n }\n\n return cssClass;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ToastConfig } from '../config/toast-config';\n\nimport { ToastHelper } from './toast.helper';\n\n@Injectable()\nexport class ToastController {\n constructor(private toastHelper: ToastHelper) {}\n\n public showToast(config: ToastConfig, onCloseToast?: () => void) {\n this.toastHelper.showToast(config).then((overlay) => {\n if (onCloseToast) {\n overlay.onDidDismiss.then(() => onCloseToast());\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'kirby-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleComponent {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Output() checkedChange = new EventEmitter<boolean>();\n onCheckedChange(checked: boolean): void {\n this.checked = checked;\n this.checkedChange.emit(this.checked);\n }\n}\n","<ion-toggle\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'kirby-progress-circle-ring',\n templateUrl: './progress-circle-ring.component.svg',\n styleUrls: ['./progress-circle-ring.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCircleRingComponent {\n @Input() radius: number; // The desired outer radius of the SVG circle\n @Input() value: number = 0;\n @Input() themeColor: 'success' | 'warning' | 'danger' = 'success';\n @Input() strokeWidth: number;\n @Input() upperBound: number;\n\n get _offset(): number {\n const valueWithinBounds = this.value < this.upperBound || this.value > 99;\n if (valueWithinBounds) {\n return this.calculateOffset(this.value);\n } else {\n return this.calculateOffset(this.upperBound);\n }\n }\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get _diameter(): number {\n return this.radius * 2;\n }\n\n get _centerRadius(): number {\n return this.radius - this.strokeWidth / 2;\n }\n\n get _centerCircumference(): number {\n return this._centerRadius * 2 * Math.PI;\n }\n\n private calculateOffset(value: number): number {\n return this._centerCircumference - this._centerCircumference * (value / 100);\n }\n}\n","<svg [attr.width]=\"_diameter\" [attr.height]=\"_diameter\">\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"circle\"\n fill=\"transparent\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n />\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"progress\"\n fill=\"transparent\"\n stroke-linecap=\"round\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.stroke-dashoffset]=\"_offset\"\n [attr.stroke-dasharray]=\"_centerCircumference\"\n />\n</svg>","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n} from '@angular/core';\n\n@Component({\n selector: 'kirby-progress-circle',\n templateUrl: './progress-circle.component.html',\n styleUrls: ['./progress-circle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCircleComponent implements AfterViewInit, OnDestroy {\n readonly SIZE_CONFIG = {\n sm: { diameter: 40, strokeWidth: 3, upperBound: 95 },\n md: { diameter: 56, strokeWidth: 4, upperBound: 96 },\n lg: { diameter: 96, strokeWidth: 6, upperBound: 97 },\n };\n\n @Input() value: number = 0;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() themeColor: 'success' | 'warning' | 'danger' = 'success';\n\n @HostBinding('class')\n get _cssSize() {\n return this.size;\n }\n\n private hasElementBeenVisible?: boolean;\n private observer: IntersectionObserver;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit(): void {\n if (!this.observer) {\n this.observer = new IntersectionObserver(this.onIntersectionChange, {\n threshold: 0.5,\n });\n this.observer.observe(this.elementRef.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n this.unobserve();\n }\n\n private onIntersectionChange = (entries: IntersectionObserverEntry[]) => {\n this.hasElementBeenVisible = entries && entries.some((entry) => entry.isIntersecting);\n if (this.hasElementBeenVisible) {\n this.unobserve();\n this.changeDetectorRef.markForCheck();\n }\n };\n\n private unobserve() {\n if (this.observer) {\n this.observer.unobserve(this.elementRef.nativeElement);\n // Safari does not support \"disconnect\", see: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#Browser_compatibility\n if (typeof this.observer.disconnect === 'function') {\n this.observer.disconnect();\n }\n }\n }\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get _diameter(): number {\n return this.SIZE_CONFIG[this.size].diameter;\n }\n\n get _shownValue() {\n // This is needed to make an animation [0 -> value] when element is shown to the user\n return this.hasElementBeenVisible ? this.value : 0;\n }\n\n get _radius() {\n return this._diameter / 2;\n }\n\n get _strokeWidth() {\n return this.SIZE_CONFIG[this.size].strokeWidth;\n }\n\n get _upperBound() {\n // This is needed to make sure that an input value close to 100 is not shown as 100\n return this.SIZE_CONFIG[this.size].upperBound;\n }\n}\n","<div class=\"transcluded-content\">\n <ng-content></ng-content>\n</div>\n<kirby-progress-circle-ring\n [themeColor]=\"themeColor\"\n [value]=\"_shownValue\"\n [radius]=\"_radius\"\n [strokeWidth]=\"_strokeWidth\"\n [upperBound]=\"_upperBound\"\n>\n</kirby-progress-circle-ring>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'kirby-toggle-button',\n templateUrl: './toggle-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleButtonComponent {\n @Input() checked: boolean;\n @Output() checkChanged = new EventEmitter<boolean>();\n\n @HostListener('click')\n onClick() {\n this.checked = !this.checked;\n this.checkChanged.emit(this.checked);\n }\n}\n","<ng-container *ngIf=\"!checked\">\n <ng-content select=\"button[kirby-button][unchecked]\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"checked\">\n <ng-content select=\"button[kirby-button][checked]\"></ng-content>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ToggleButtonComponent } from './toggle-button.component';\n\nconst DECLARATIONS = [ToggleButtonComponent];\n\n@NgModule({\n declarations: [...DECLARATIONS],\n imports: [CommonModule],\n exports: [...DECLARATIONS],\n})\nexport class ToggleButtonModule {}\n","import { Directive, HostListener, ElementRef } from '@angular/core';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: `[keyHandler]`,\n})\nexport class KeyHandlerDirective {\n constructor(private element: ElementRef) {}\n\n @HostListener('keyup', ['$event'])\n keyEvent(event: KeyboardEvent) {\n if (event.key === ' ' || event.key === 'Enter' || event.key === 'Spacebar') {\n // Prevent the default action to stop scrolling when space is pressed\n event.preventDefault();\n\n const hostElement = <HTMLElement>this.element.nativeElement;\n hostElement.click();\n }\n }\n}\n","import { Directive, ElementRef, HostBinding, HostListener, OnInit, Optional } from '@angular/core';\n\nimport { CardComponent } from '../../components/card/card.component';\n\n@Directive({\n // tslint:disable-next-line\n selector: 'kirby-card[click]',\n})\nexport class ElementAsButtonDirective implements OnInit {\n @HostBinding('attr.role') role: string = 'button';\n @HostBinding('attr.tabindex') tabindex: number = 0;\n\n constructor(@Optional() private card: CardComponent, private clickableElement: ElementRef) {}\n\n ngOnInit(): void {\n if (this.card) {\n this.card.flat = false;\n }\n }\n\n @HostListener('keydown.space', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n _onKeydownHandler(event: KeyboardEvent) {\n this.clickableElement.nativeElement.click(event);\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { ModalNavigationService } from '../../components/modal/services/modal-navigation.service';\n\n@Directive({\n selector: `[kirbyModalRouterLink]`,\n})\nexport class ModalRouterLinkDirective {\n constructor(private modalNavigationService: ModalNavigationService) {}\n\n @Input('kirbyModalRouterLink') path: string | string[];\n // tslint:disable-next-line:no-input-rename\n @Input('kirbyModalQueryParams') queryParams?: Params;\n\n @HostListener('click')\n onClick(): boolean {\n this.modalNavigationService.navigateToModal(\n this.path,\n typeof this.queryParams !== 'string' ? this.queryParams : null\n );\n return false;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { APP_INITIALIZER } from '@angular/core';\n\nimport { defineCustomElements } from '@kirbydesign/core/loader';\n\nexport const appInitialize = (doc: Document) => {\n return () => {\n defineCustomElements(doc.defaultView);\n };\n};\n\nexport function customElementsInitializer() {\n return {\n provide: APP_INITIALIZER,\n useFactory: appInitialize,\n deps: [DOCUMENT],\n multi: true,\n };\n}\n","import { CommonModule } from '@angular/common';\nimport { Inject, InjectionToken, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { IonicModule } from '@ionic/angular';\n\nimport { AccordionItemComponent } from './components/accordion/accordion-item.component';\nimport { AccordionDirective } from './components/accordion/accordion.directive';\nimport { AppModule } from './components/app/app.module';\nimport { AvatarComponent } from './components/avatar/avatar.component';\nimport { ButtonComponent } from './components/button/button.component';\nimport { CalendarComponent } from './components/calendar/calendar.component';\nimport { CardFooterComponent } from './components/card/card-footer/card-footer.component';\nimport { CardHeaderComponent } from './components/card/card-header/card-header.component';\nimport { CardComponent } from './components/card/card.component';\nimport { ChartDeprecatedComponent } from './components/chart-deprecated/chart-deprecated.component';\nimport { ChartModule } from './components/chart/chart.module';\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\nimport { ChipComponent } from './components/chip/chip.component';\nimport { DividerComponent } from './components/divider/divider.component';\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { FabSheetComponent } from './components/fab-sheet/fab-sheet.component';\nimport { FlagComponent } from './components/flag/flag.component';\nimport { DateInputDirective } from './components/form-field/directives/date/date-input.directive';\nimport { DecimalMaskDirective } from './components/form-field/directives/decimal-mask/decimal-mask.directive';\nimport { FormFieldMessageComponent } from './components/form-field/form-field-message/form-field-message.component';\nimport { FormFieldComponent } from './components/form-field/form-field.component';\nimport { InputCounterComponent } from './components/form-field/input-counter/input-counter.component';\nimport { InputComponent } from './components/form-field/input/input.component';\nimport { TextareaComponent } from './components/form-field/textarea/textarea.component';\nimport { BreakpointHelperService } from './components/grid/breakpoint-helper.service';\nimport { GridComponent } from './components/grid/grid.component';\nimport { IconModule } from './components/icon/icon.module';\nimport { ItemGroupComponent } from './components/item-group/item-group.component';\nimport { ItemSlidingComponent } from './components/item-sliding/item-sliding.component';\nimport { ItemModule } from './components/item/item.module';\nimport { ListModule } from './components/list/list.module';\nimport { GroupByPipe } from './components/list/pipes/group-by.pipe';\nimport { LoadingOverlayComponent } from './components/loading-overlay/loading-overlay.component';\nimport { LoadingOverlayService } from './components/loading-overlay/loading-overlay.service';\nimport { ActionSheetComponent } from './components/modal/action-sheet/action-sheet.component';\nimport { AlertComponent } from './components/modal/alert/alert.component';\nimport { ModalFooterComponent } from './components/modal/footer/modal-footer.component';\nimport { ModalCompactWrapperComponent } from './components/modal/modal-wrapper/compact/modal-compact-wrapper.component';\nimport { ModalWrapperComponent } from './components/modal/modal-wrapper/modal-wrapper.component';\nimport { ActionSheetHelper } from './components/modal/services/action-sheet.helper';\nimport { AlertHelper } from './components/modal/services/alert.helper';\nimport { ModalController } from './components/modal/services/modal.controller';\nimport { ModalHelper } from './components/modal/services/modal.helper';\nimport { PageModule } from './components/page/page.module';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { ProgressCircleRingComponent } from './components/progress-circle/progress-circle-ring.component';\nimport { ProgressCircleComponent } from './components/progress-circle/progress-circle.component';\nimport { RadioGroupComponent } from './components/radio/radio-group/radio-group.component';\nimport { RadioComponent } from './components/radio/radio.component';\nimport { RangeComponent } from './components/range/range.component';\nimport { ReorderListComponent } from './components/reorder-list/reorder-list.component';\nimport { RouterOutletModule } from './components/router-outlet/router-outlet.module';\nimport { SectionHeaderComponent } from './components/section-header/section-header.component';\nimport { SegmentedControlComponent } from './components/segmented-control/segmented-control.component';\nimport { ComponentLoaderDirective } from './components/shared/component-loader.directive';\nimport { ResizeObserverFactory } from './components/shared/resize-observer/resize-observer.factory';\nimport { ResizeObserverService } from './components/shared/resize-observer/resize-observer.service';\nimport { SlideButtonComponent } from './components/slide-button/slide-button.component';\nimport { SlideDirective, SlidesComponent } from './components/slides/slides.component';\nimport { SpinnerModule } from './components/spinner/spinner.module';\nimport { StockChartDeprecatedComponent } from './components/stock-chart-deprecated/stock-chart-deprecated.component';\nimport { TabsModule } from './components/tabs/tabs.module';\nimport { ToastController } from './components/toast/services/toast.controller';\nimport { ToastHelper } from './components/toast/services/toast.helper';\nimport { ToggleButtonModule } from './components/toggle-button/toggle-button.module';\nimport { ToggleComponent } from './components/toggle/toggle.component';\nimport { KirbyBadge as BadgeComponent } from './components/web-component-proxies.component';\nimport { customElementsInitializer } from './custom-elements-initializer';\nimport { ElementAsButtonDirective } from './directives/element-as-button/element-as-button.directive';\nimport { KeyHandlerDirective } from './directives/key-handler/key-handler.directive';\nimport { ModalRouterLinkDirective } from './directives/modal-router-link/modal-router-link.directive';\nimport { ThemeColorDirective } from './directives/theme-color/theme-color.directive';\n\nconst exportedDeclarations = [\n CardComponent,\n CardHeaderComponent,\n CardFooterComponent,\n ButtonComponent,\n ChartDeprecatedComponent,\n StockChartDeprecatedComponent,\n GridComponent,\n ComponentLoaderDirective,\n AvatarComponent,\n GroupByPipe,\n CalendarComponent,\n CheckboxComponent,\n ActionSheetComponent,\n ModalFooterComponent,\n ModalRouterLinkDirective,\n SegmentedControlComponent,\n ChipComponent,\n BadgeComponent,\n ThemeColorDirective,\n DateInputDirective,\n DecimalMaskDirective,\n SlideButtonComponent,\n ToggleComponent,\n EmptyStateComponent,\n FormFieldComponent,\n InputComponent,\n InputCounterComponent,\n TextareaComponent,\n FabSheetComponent,\n DividerComponent,\n ReorderListComponent,\n DropdownComponent,\n LoadingOverlayComponent,\n ProgressCircleComponent,\n FlagComponent,\n SlidesComponent,\n SlideDirective,\n AccordionDirective,\n AccordionItemComponent,\n ItemSlidingComponent,\n RadioComponent,\n RadioGroupComponent,\n RangeComponent,\n ElementAsButtonDirective,\n ItemGroupComponent,\n SectionHeaderComponent,\n];\n\nconst declarations = [\n ...exportedDeclarations,\n KeyHandlerDirective,\n FormFieldMessageComponent,\n AlertComponent,\n ModalWrapperComponent,\n ModalCompactWrapperComponent,\n ProgressCircleRingComponent,\n PopoverComponent,\n];\n\nconst exportedModules = [\n AppModule,\n RouterOutletModule,\n PageModule,\n TabsModule,\n IconModule,\n ItemModule,\n ToggleButtonModule,\n ListModule,\n ChartModule,\n SpinnerModule,\n];\n\nconst exports = [...exportedModules, ...exportedDeclarations];\n\nconst importedModules = [...exportedModules];\n\nconst providers = [\n ModalController,\n ActionSheetHelper,\n ModalHelper,\n AlertHelper,\n ToastHelper,\n ToastController,\n BreakpointHelperService,\n LoadingOverlayService,\n ResizeObserverFactory,\n ResizeObserverService,\n customElementsInitializer(),\n];\n\nconst entryComponents = [\n ModalWrapperComponent,\n ModalCompactWrapperComponent,\n ActionSheetComponent,\n AlertComponent,\n];\n\nconst ConfigToken = new InjectionToken<any>('USERCONFIG');\nexport interface KirbyConfig {\n moduleRootRoutePath?: string;\n}\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n IonicModule.forRoot({\n mode: 'ios',\n inputShims: true,\n scrollAssist: true,\n scrollPadding: false,\n }),\n ...importedModules,\n ],\n declarations: declarations,\n providers: providers,\n entryComponents: entryComponents,\n exports: exports,\n})\nexport class KirbyModule {\n static forChild(config?: KirbyConfig): ModuleWithProviders<KirbyModule> {\n return {\n ngModule: KirbyModule,\n providers: [\n {\n provide: ConfigToken,\n useValue: config,\n },\n ],\n };\n }\n\n constructor(\n modalController: ModalController,\n @Optional() @Inject(ConfigToken) config?: KirbyConfig\n ) {\n modalController.initialize(config && config.moduleRootRoutePath);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.IconRegistryService","i2","i1.IconComponent","i1.ResizeObserverFactory","i1.ResizeObserverService","i1","i1.CardComponent","i2.CardHeaderComponent","i3.ButtonComponent","i4","i1.WindowRef","i2.EmptyStateComponent","i4.ThemeColorDirective","i5","__awaiter","i2.WindowRef","i3.PlatformService","i5.ButtonComponent","i6.IconComponent","i7","i8","i2.PlatformService","i2.ModalAnimationBuilderService","i3.WindowRef","i1.ModalController","getColor","fontSize","colorPoints","getThemeColorHexString","defaultOptions","i1.ChartConfigService","i1.ChartJSService","dateFormat","Highcharts","i2.IconComponent","i3","i1.KeyboardHandlerService","i2.ButtonComponent","i3.IconComponent","i4.PopoverComponent","i5.CardComponent","i6.ItemComponent","i3.DropdownComponent","i2.RadioComponent","i1.FormFieldMessageComponent","i1.PlatformService","i3.FormFieldMessageComponent","i1.BreakpointHelperService","i3.ComponentLoaderDirective","i1.SpinnerComponent","i4.ListItemColorDirective","i1.ListHelper","i2.GroupByPipe","i4.SpinnerComponent","i5.ListItemComponent","i6.InfiniteScrollDirective","exportedDeclarations","declarations","i1.TabsService","i2.LineClampHelper","i1.ModalWrapperComponent","i4.ModalNavigationService","i5.TabsComponent","i6","i7.SpinnerComponent","i9.FitHeadingDirective","i1.PageComponent","i2.CardComponent","i3.ItemComponent","i3.KirbyBadge","i4.IconComponent","i5.ChipComponent","i1.ToastHelper","i1.ProgressCircleRingComponent","i2.ThemeColorDirective","i1.ModalNavigationService","BadgeComponent"],"mappings":"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"}