@kirbydesign/designsystem 9.5.0 → 9.6.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 (551) hide show
  1. package/avatar/avatar.component.d.ts +4 -1
  2. package/card/card-as-button/card-as-button.directive.d.ts +2 -3
  3. package/card/card.component.d.ts +9 -2
  4. package/esm2022/accordion/accordion-item.component.mjs +4 -4
  5. package/esm2022/accordion/accordion.directive.mjs +4 -4
  6. package/esm2022/accordion/accordion.module.mjs +5 -5
  7. package/esm2022/accordion/kirbydesign-designsystem-accordion.mjs +1 -1
  8. package/esm2022/accordion/public_api.mjs +1 -1
  9. package/esm2022/action-group/action-group.component.mjs +4 -4
  10. package/esm2022/action-group/kirbydesign-designsystem-action-group.mjs +1 -1
  11. package/esm2022/action-group/public_api.mjs +1 -1
  12. package/esm2022/avatar/avatar.component.mjs +12 -6
  13. package/esm2022/avatar/kirbydesign-designsystem-avatar.mjs +1 -1
  14. package/esm2022/avatar/public_api.mjs +1 -1
  15. package/esm2022/badge/badge.component.mjs +4 -4
  16. package/esm2022/badge/kirbydesign-designsystem-badge.mjs +1 -1
  17. package/esm2022/badge/public_api.mjs +1 -1
  18. package/esm2022/button/button.component.mjs +4 -4
  19. package/esm2022/button/kirbydesign-designsystem-button.mjs +1 -1
  20. package/esm2022/button/public_api.mjs +1 -1
  21. package/esm2022/calendar/calendar.component.mjs +4 -4
  22. package/esm2022/calendar/helpers/calendar-cell.model.mjs +1 -1
  23. package/esm2022/calendar/helpers/calendar-options.model.mjs +1 -1
  24. package/esm2022/calendar/helpers/calendar.helper.mjs +4 -4
  25. package/esm2022/calendar/kirbydesign-designsystem-calendar.mjs +1 -1
  26. package/esm2022/calendar/options/calendar-year-navigator-config.mjs +1 -1
  27. package/esm2022/calendar/public_api.mjs +1 -1
  28. package/esm2022/card/card-as-button/card-as-button.directive.mjs +4 -9
  29. package/esm2022/card/card-flag-level.mjs +1 -1
  30. package/esm2022/card/card-footer/card-footer.component.mjs +5 -5
  31. package/esm2022/card/card-header/card-header.component.mjs +4 -4
  32. package/esm2022/card/card.component.mjs +27 -9
  33. package/esm2022/card/card.module.mjs +5 -5
  34. package/esm2022/card/kirbydesign-designsystem-card.mjs +1 -1
  35. package/esm2022/card/public_api.mjs +1 -1
  36. package/esm2022/chart/chart/chart.component.mjs +4 -4
  37. package/esm2022/chart/chart/index.mjs +1 -1
  38. package/esm2022/chart/chart-config/chart-bar-config/chart-bar-config.mjs +1 -1
  39. package/esm2022/chart/chart-config/chart-base-config.mjs +1 -1
  40. package/esm2022/chart/chart-config/chart-stock-config/chart-stock-config.mjs +1 -1
  41. package/esm2022/chart/chart-config/chart-stock-config/data-label-position/data-label-position.mjs +1 -1
  42. package/esm2022/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.mjs +1 -1
  43. package/esm2022/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.mjs +1 -1
  44. package/esm2022/chart/charts.module.mjs +5 -5
  45. package/esm2022/chart/kirbydesign-designsystem-chart.mjs +1 -1
  46. package/esm2022/chart/public_api.mjs +1 -1
  47. package/esm2022/chart/shared/base-chart/base-chart.component.mjs +4 -4
  48. package/esm2022/chart/shared/base-chart/index.mjs +1 -1
  49. package/esm2022/chart/shared/chart-config-service/chart-config.service.mjs +4 -4
  50. package/esm2022/chart/shared/chart-config-service/configs/annotations.config.mjs +1 -1
  51. package/esm2022/chart/shared/chart-config-service/configs/global-defaults.config.mjs +1 -1
  52. package/esm2022/chart/shared/chart-config-service/configs/interaction-functions-extensions.config.mjs +1 -1
  53. package/esm2022/chart/shared/chart-config-service/configs/type.config.mjs +1 -1
  54. package/esm2022/chart/shared/chart-config-service/index.mjs +1 -1
  55. package/esm2022/chart/shared/chart-js-service/annotations.delegate.mjs +1 -1
  56. package/esm2022/chart/shared/chart-js-service/chart-js.service.mjs +4 -4
  57. package/esm2022/chart/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.mjs +1 -1
  58. package/esm2022/chart/shared/chart-js-service/configured-chart-js.mjs +1 -1
  59. package/esm2022/chart/shared/chart-js-service/index.mjs +1 -1
  60. package/esm2022/chart/shared/chart-js-service/test-utils.mjs +1 -1
  61. package/esm2022/chart/shared/charts.types.mjs +1 -1
  62. package/esm2022/chart/shared/index.mjs +1 -1
  63. package/esm2022/chart/stock-chart/index.mjs +1 -1
  64. package/esm2022/chart/stock-chart/stock-chart-js.service.mjs +4 -4
  65. package/esm2022/chart/stock-chart/stock-chart.component.mjs +4 -4
  66. package/esm2022/checkbox/checkbox.component.mjs +4 -4
  67. package/esm2022/checkbox/kirbydesign-designsystem-checkbox.mjs +1 -1
  68. package/esm2022/checkbox/public_api.mjs +1 -1
  69. package/esm2022/data-table/data-table.module.mjs +5 -5
  70. package/esm2022/data-table/kirbydesign-designsystem-data-table.mjs +1 -1
  71. package/esm2022/data-table/public_api.mjs +1 -1
  72. package/esm2022/data-table/sortable/sortable.component.mjs +4 -4
  73. package/esm2022/data-table/table/table.component.mjs +4 -4
  74. package/esm2022/data-table/table-row/table-row.component.mjs +4 -4
  75. package/esm2022/divider/divider.component.mjs +4 -4
  76. package/esm2022/divider/kirbydesign-designsystem-divider.mjs +1 -1
  77. package/esm2022/divider/public_api.mjs +1 -1
  78. package/esm2022/dropdown/dropdown.component.mjs +5 -5
  79. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  80. package/esm2022/dropdown/dropdown.types.mjs +1 -1
  81. package/esm2022/dropdown/keyboard-handler.service.mjs +4 -4
  82. package/esm2022/dropdown/kirbydesign-designsystem-dropdown.mjs +1 -1
  83. package/esm2022/dropdown/public_api.mjs +1 -1
  84. package/esm2022/empty-state/empty-state.component.mjs +4 -4
  85. package/esm2022/empty-state/empty-state.module.mjs +5 -5
  86. package/esm2022/empty-state/kirbydesign-designsystem-empty-state.mjs +1 -1
  87. package/esm2022/empty-state/public_api.mjs +1 -1
  88. package/esm2022/fab-sheet/fab-sheet.component.mjs +4 -4
  89. package/esm2022/fab-sheet/kirbydesign-designsystem-fab-sheet.mjs +1 -1
  90. package/esm2022/fab-sheet/public_api.mjs +1 -1
  91. package/esm2022/flag/flag.component.mjs +4 -4
  92. package/esm2022/flag/kirbydesign-designsystem-flag.mjs +1 -1
  93. package/esm2022/flag/public_api.mjs +1 -1
  94. package/esm2022/form-field/directives/affix/affix.directive.mjs +4 -4
  95. package/esm2022/form-field/directives/date/date-input.directive.mjs +4 -4
  96. package/esm2022/form-field/directives/decimal-mask/decimal-mask.directive.mjs +4 -4
  97. package/esm2022/form-field/form-field-message/form-field-message.component.mjs +4 -4
  98. package/esm2022/form-field/form-field.component.mjs +4 -4
  99. package/esm2022/form-field/form-field.module.mjs +5 -5
  100. package/esm2022/form-field/input/input.component.mjs +4 -4
  101. package/esm2022/form-field/input-counter/input-counter.component.mjs +4 -4
  102. package/esm2022/form-field/kirbydesign-designsystem-form-field.mjs +1 -1
  103. package/esm2022/form-field/public_api.mjs +1 -1
  104. package/esm2022/form-field/textarea/textarea.component.mjs +4 -4
  105. package/esm2022/header/header.component.mjs +23 -16
  106. package/esm2022/header/header.module.mjs +5 -5
  107. package/esm2022/header/kirbydesign-designsystem-header.mjs +1 -1
  108. package/esm2022/header/public_api.mjs +1 -1
  109. package/esm2022/helpers/chart-config-has-type.mjs +1 -1
  110. package/esm2022/helpers/color-helper.mjs +1 -1
  111. package/esm2022/helpers/deep-copy.mjs +1 -1
  112. package/esm2022/helpers/design-token-helper.mjs +1 -1
  113. package/esm2022/helpers/element-has-ancestor.mjs +1 -1
  114. package/esm2022/helpers/ionic-element-part-helper.mjs +4 -4
  115. package/esm2022/helpers/kirby-animation.mjs +1 -1
  116. package/esm2022/helpers/kirbydesign-designsystem-helpers.mjs +1 -1
  117. package/esm2022/helpers/line-clamp-helper.mjs +4 -4
  118. package/esm2022/helpers/merge-deep.mjs +1 -1
  119. package/esm2022/helpers/platform.service.mjs +4 -4
  120. package/esm2022/helpers/public_api.mjs +1 -1
  121. package/esm2022/helpers/scss/kirbydesign-designsystem-helpers-scss.mjs +1 -1
  122. package/esm2022/helpers/scss/public_api.mjs +1 -1
  123. package/esm2022/helpers/scss/scss-helper.mjs +1 -1
  124. package/esm2022/helpers/string-helper.mjs +1 -1
  125. package/esm2022/helpers/theme-color.type.mjs +1 -1
  126. package/esm2022/helpers/unique-id-generator.helper.mjs +1 -1
  127. package/esm2022/icon/icon-registry.service.mjs +4 -4
  128. package/esm2022/icon/icon-settings.mjs +1 -1
  129. package/esm2022/icon/icon.component.mjs +4 -4
  130. package/esm2022/icon/icon.module.mjs +5 -5
  131. package/esm2022/icon/kirby-icon-settings.mjs +1 -1
  132. package/esm2022/icon/kirbydesign-designsystem-icon.mjs +1 -1
  133. package/esm2022/icon/public_api.mjs +1 -1
  134. package/esm2022/item/item.component.mjs +4 -4
  135. package/esm2022/item/item.module.mjs +5 -5
  136. package/esm2022/item/kirbydesign-designsystem-item.mjs +1 -1
  137. package/esm2022/item/label/label.component.mjs +4 -4
  138. package/esm2022/item/public_api.mjs +1 -1
  139. package/esm2022/item-group/item-group.component.mjs +4 -4
  140. package/esm2022/item-group/kirbydesign-designsystem-item-group.mjs +1 -1
  141. package/esm2022/item-group/public_api.mjs +1 -1
  142. package/esm2022/item-sliding/item-sliding.component.mjs +4 -4
  143. package/esm2022/item-sliding/item-sliding.types.mjs +1 -1
  144. package/esm2022/item-sliding/kirbydesign-designsystem-item-sliding.mjs +1 -1
  145. package/esm2022/item-sliding/public_api.mjs +1 -1
  146. package/esm2022/kirby-app/kirby-app.component.mjs +4 -4
  147. package/esm2022/kirby-app/kirby-app.module.mjs +5 -5
  148. package/esm2022/kirby-app/kirbydesign-designsystem-kirby-app.mjs +1 -1
  149. package/esm2022/kirby-app/public_api.mjs +1 -1
  150. package/esm2022/kirby-ionic-module/kirby-ionic.module.mjs +5 -5
  151. package/esm2022/kirby-ionic-module/kirbydesign-designsystem-kirby-ionic-module.mjs +1 -1
  152. package/esm2022/kirby-ionic-module/public_api.mjs +1 -1
  153. package/esm2022/kirbydesign-designsystem.mjs +1 -1
  154. package/esm2022/lib/components/index.mjs +1 -1
  155. package/esm2022/lib/components/page-local-navigation/index.mjs +1 -1
  156. package/esm2022/lib/components/page-local-navigation/page-local-navigation-item.mjs +1 -1
  157. package/esm2022/lib/components/page-local-navigation/page-local-navigation.component.mjs +4 -4
  158. package/esm2022/lib/components/segmented-control/segment-item.mjs +1 -1
  159. package/esm2022/lib/components/segmented-control/segmented-control.component.mjs +5 -5
  160. package/esm2022/lib/directives/index.mjs +1 -1
  161. package/esm2022/lib/directives/key-handler/key-handler.directive.mjs +4 -4
  162. package/esm2022/lib/directives/modal-router-link/modal-router-link.directive.mjs +4 -4
  163. package/esm2022/lib/index.mjs +1 -1
  164. package/esm2022/lib/kirby-experimental.module.mjs +5 -5
  165. package/esm2022/lib/kirby.module.mjs +5 -5
  166. package/esm2022/list/directives/index.mjs +1 -1
  167. package/esm2022/list/directives/infinite-scroll.directive.mjs +4 -4
  168. package/esm2022/list/directives/list-item-color.directive.mjs +4 -4
  169. package/esm2022/list/directives/scroll.model.mjs +1 -1
  170. package/esm2022/list/helpers/index.mjs +1 -1
  171. package/esm2022/list/helpers/list-helper.mjs +4 -4
  172. package/esm2022/list/kirbydesign-designsystem-list.mjs +1 -1
  173. package/esm2022/list/list-experimental/index.mjs +1 -1
  174. package/esm2022/list/list-experimental/list-experimental.component.mjs +4 -4
  175. package/esm2022/list/list-header/index.mjs +1 -1
  176. package/esm2022/list/list-header/list-header.component.mjs +4 -4
  177. package/esm2022/list/list-item/index.mjs +1 -1
  178. package/esm2022/list/list-item/list-item.component.mjs +5 -5
  179. package/esm2022/list/list-section-header/index.mjs +1 -1
  180. package/esm2022/list/list-section-header/list-section-header.component.mjs +4 -4
  181. package/esm2022/list/list-swipe-action.mjs +1 -1
  182. package/esm2022/list/list-swipe-action.type.mjs +1 -1
  183. package/esm2022/list/list.component.mjs +5 -5
  184. package/esm2022/list/list.directive.mjs +13 -13
  185. package/esm2022/list/list.event.mjs +1 -1
  186. package/esm2022/list/list.module.mjs +18 -12
  187. package/esm2022/list/public_api.mjs +1 -1
  188. package/esm2022/loading-overlay/kirbydesign-designsystem-loading-overlay.mjs +1 -1
  189. package/esm2022/loading-overlay/loading-overlay.component.mjs +4 -4
  190. package/esm2022/loading-overlay/loading-overlay.service.mjs +4 -4
  191. package/esm2022/loading-overlay/public_api.mjs +1 -1
  192. package/esm2022/menu/kirbydesign-designsystem-menu.mjs +1 -1
  193. package/esm2022/menu/menu.component.mjs +4 -4
  194. package/esm2022/menu/public_api.mjs +1 -1
  195. package/esm2022/modal/kirbydesign-designsystem-modal.mjs +1 -1
  196. package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +4 -4
  197. package/esm2022/modal/modal/action-sheet/config/action-sheet-config.mjs +1 -1
  198. package/esm2022/modal/modal/action-sheet/config/action-sheet-item.mjs +1 -1
  199. package/esm2022/modal/modal/action-sheet/index.mjs +1 -1
  200. package/esm2022/modal/modal/alert/alert.component.mjs +4 -4
  201. package/esm2022/modal/modal/alert/config/alert-config.mjs +1 -1
  202. package/esm2022/modal/modal/alert/index.mjs +1 -1
  203. package/esm2022/modal/modal/footer/modal-footer.component.mjs +5 -5
  204. package/esm2022/modal/modal/index.mjs +1 -1
  205. package/esm2022/modal/modal/modal-component/modal.component.mjs +12 -19
  206. package/esm2022/modal/modal/services/action-sheet.helper.mjs +4 -4
  207. package/esm2022/modal/modal/services/alert.helper.mjs +4 -4
  208. package/esm2022/modal/modal/services/can-dismiss-modal-guard.mjs +31 -0
  209. package/esm2022/modal/modal/services/can-dismiss.helper.mjs +4 -4
  210. package/esm2022/modal/modal/services/index.mjs +2 -1
  211. package/esm2022/modal/modal/services/modal-animation-builder.service.mjs +4 -4
  212. package/esm2022/modal/modal/services/modal.controller.mjs +12 -8
  213. package/esm2022/modal/modal/services/modal.helper.mjs +24 -26
  214. package/esm2022/modal/modal-navigation.service.mjs +25 -14
  215. package/esm2022/modal/modal-wrapper/compact/index.mjs +1 -1
  216. package/esm2022/modal/modal-wrapper/compact/modal-compact-wrapper.component.mjs +4 -4
  217. package/esm2022/modal/modal-wrapper/config/drawer-supplementary-action.mjs +1 -1
  218. package/esm2022/modal/modal-wrapper/config/index.mjs +1 -1
  219. package/esm2022/modal/modal-wrapper/config/modal-config.helper.mjs +1 -1
  220. package/esm2022/modal/modal-wrapper/config/modal-config.mjs +1 -1
  221. package/esm2022/modal/modal-wrapper/index.mjs +1 -1
  222. package/esm2022/modal/modal-wrapper/modal-elements-mover.delegate.mjs +1 -1
  223. package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +4 -4
  224. package/esm2022/modal/modal.interfaces.mjs +4 -4
  225. package/esm2022/modal/public_api.mjs +1 -1
  226. package/esm2022/modal/v2/footer/footer.component.mjs +4 -4
  227. package/esm2022/modal/v2/kirby-modal.module.mjs +5 -5
  228. package/esm2022/modal/v2/kirbydesign-designsystem-modal-v2.mjs +1 -1
  229. package/esm2022/modal/v2/modal/modal.component.mjs +4 -4
  230. package/esm2022/modal/v2/modal-routing/modal-routing.component.mjs +4 -4
  231. package/esm2022/modal/v2/public_api.mjs +1 -1
  232. package/esm2022/modal/v2/services/modal.controller.mjs +4 -4
  233. package/esm2022/modal/v2/wrapper/wrapper.component.mjs +4 -4
  234. package/esm2022/page/kirbydesign-designsystem-page.mjs +1 -1
  235. package/esm2022/page/page-footer/page-footer.component.mjs +4 -4
  236. package/esm2022/page/page.component.mjs +37 -34
  237. package/esm2022/page/page.module.mjs +5 -5
  238. package/esm2022/page/public_api.mjs +1 -1
  239. package/esm2022/popover/kirbydesign-designsystem-popover.mjs +1 -1
  240. package/esm2022/popover/popover.component.mjs +4 -4
  241. package/esm2022/popover/public_api.mjs +1 -1
  242. package/esm2022/progress-circle/kirbydesign-designsystem-progress-circle.mjs +1 -1
  243. package/esm2022/progress-circle/progress-circle-ring.component.mjs +4 -4
  244. package/esm2022/progress-circle/progress-circle.component.mjs +4 -4
  245. package/esm2022/progress-circle/public_api.mjs +1 -1
  246. package/esm2022/public-api.mjs +1 -1
  247. package/esm2022/radio/kirbydesign-designsystem-radio.mjs +1 -1
  248. package/esm2022/radio/public_api.mjs +1 -1
  249. package/esm2022/radio/radio-group/radio-group.component.mjs +4 -4
  250. package/esm2022/radio/radio-module.mjs +5 -5
  251. package/esm2022/radio/radio.component.mjs +4 -4
  252. package/esm2022/range/kirbydesign-designsystem-range.mjs +1 -1
  253. package/esm2022/range/public_api.mjs +1 -1
  254. package/esm2022/range/range.component.mjs +4 -4
  255. package/esm2022/reorder-list/kirbydesign-designsystem-reorder-list.mjs +1 -1
  256. package/esm2022/reorder-list/public_api.mjs +1 -1
  257. package/esm2022/reorder-list/reorder-event.mjs +1 -1
  258. package/esm2022/reorder-list/reorder-list.component.mjs +4 -4
  259. package/esm2022/router-outlet/kirbydesign-designsystem-router-outlet.mjs +1 -1
  260. package/esm2022/router-outlet/public_api.mjs +1 -1
  261. package/esm2022/router-outlet/router-outlet.component.mjs +4 -4
  262. package/esm2022/router-outlet/router-outlet.module.mjs +5 -5
  263. package/esm2022/section-header/kirbydesign-designsystem-section-header.mjs +1 -1
  264. package/esm2022/section-header/public_api.mjs +1 -1
  265. package/esm2022/section-header/section-header.component.mjs +4 -4
  266. package/esm2022/shared/component-configuration.mjs +1 -1
  267. package/esm2022/shared/component-loader.directive.mjs +4 -4
  268. package/esm2022/shared/dynamic-component.mjs +1 -1
  269. package/esm2022/shared/fit-heading/fit-heading.directive.mjs +4 -4
  270. package/esm2022/shared/fit-heading/index.mjs +1 -1
  271. package/esm2022/shared/floating/floating.directive.mjs +4 -4
  272. package/esm2022/shared/floating/kirbydesign-designsystem-shared-floating.mjs +1 -1
  273. package/esm2022/shared/floating/public_api.mjs +1 -1
  274. package/esm2022/shared/kirbydesign-designsystem-shared.mjs +1 -1
  275. package/esm2022/shared/portal/kirbydesign-designsystem-shared-portal.mjs +1 -1
  276. package/esm2022/shared/portal/portal.directive.mjs +4 -4
  277. package/esm2022/shared/portal/public_api.mjs +1 -1
  278. package/esm2022/shared/public_api.mjs +1 -1
  279. package/esm2022/shared/resize-observer/resize-observer.factory.mjs +4 -4
  280. package/esm2022/shared/resize-observer/resize-observer.service.mjs +4 -4
  281. package/esm2022/shared/theme-color/theme-color.directive.mjs +4 -4
  282. package/esm2022/slide/kirbydesign-designsystem-slide.mjs +1 -1
  283. package/esm2022/slide/public_api.mjs +1 -1
  284. package/esm2022/slide/slide-stretch-height.directive.mjs +4 -4
  285. package/esm2022/slide/slide.directive.mjs +4 -4
  286. package/esm2022/slide/slide.module.mjs +5 -5
  287. package/esm2022/slide/slides.component.mjs +4 -4
  288. package/esm2022/slide-button/kirbydesign-designsystem-slide-button.mjs +1 -1
  289. package/esm2022/slide-button/public_api.mjs +1 -1
  290. package/esm2022/slide-button/slide-button.component.mjs +5 -5
  291. package/esm2022/spinner/kirbydesign-designsystem-spinner.mjs +1 -1
  292. package/esm2022/spinner/public_api.mjs +1 -1
  293. package/esm2022/spinner/spinner.component.mjs +4 -4
  294. package/esm2022/spinner/spinner.module.mjs +5 -5
  295. package/esm2022/tab-navigation/kirbydesign-designsystem-tab-navigation.mjs +1 -1
  296. package/esm2022/tab-navigation/public_api.mjs +1 -1
  297. package/esm2022/tab-navigation/tab-navigation/tab-navigation.component.mjs +4 -4
  298. package/esm2022/tab-navigation/tab-navigation-item/tab-navigation-item.component.mjs +4 -4
  299. package/esm2022/tab-navigation/tab-navigation.module.mjs +5 -5
  300. package/esm2022/tabs/kirbydesign-designsystem-tabs.mjs +1 -1
  301. package/esm2022/tabs/public_api.mjs +1 -1
  302. package/esm2022/tabs/tab-button/tab-button.component.mjs +4 -4
  303. package/esm2022/tabs/tab-button/tab-button.events.mjs +1 -1
  304. package/esm2022/tabs/tabs.component.mjs +4 -4
  305. package/esm2022/tabs/tabs.module.mjs +5 -5
  306. package/esm2022/tabs/tabs.service.mjs +4 -4
  307. package/esm2022/testing/element-css-custom-matchers.mjs +1 -1
  308. package/esm2022/testing/kirbydesign-designsystem-testing.mjs +1 -1
  309. package/esm2022/testing/public_api.mjs +1 -1
  310. package/esm2022/testing/test-helper.mjs +5 -5
  311. package/esm2022/testing-base/kirbydesign-designsystem-testing-base.mjs +1 -1
  312. package/esm2022/testing-base/lib/components/index.mjs +1 -1
  313. package/esm2022/testing-base/lib/components/mock.accordion-item.component.mjs +6 -4
  314. package/esm2022/testing-base/lib/components/mock.action-group.component.mjs +6 -4
  315. package/esm2022/testing-base/lib/components/mock.action-sheet.component.mjs +6 -4
  316. package/esm2022/testing-base/lib/components/mock.alert.component.mjs +6 -4
  317. package/esm2022/testing-base/lib/components/mock.avatar.component.mjs +6 -4
  318. package/esm2022/testing-base/lib/components/mock.badge.component.mjs +6 -4
  319. package/esm2022/testing-base/lib/components/mock.base-chart.component.mjs +6 -4
  320. package/esm2022/testing-base/lib/components/mock.button.component.mjs +6 -4
  321. package/esm2022/testing-base/lib/components/mock.calendar.component.mjs +6 -4
  322. package/esm2022/testing-base/lib/components/mock.card-footer.component.mjs +6 -4
  323. package/esm2022/testing-base/lib/components/mock.card-header.component.mjs +6 -4
  324. package/esm2022/testing-base/lib/components/mock.card.component.mjs +6 -4
  325. package/esm2022/testing-base/lib/components/mock.chart.component.mjs +6 -4
  326. package/esm2022/testing-base/lib/components/mock.checkbox.component.mjs +6 -4
  327. package/esm2022/testing-base/lib/components/mock.divider.component.mjs +6 -4
  328. package/esm2022/testing-base/lib/components/mock.dropdown.component.mjs +6 -4
  329. package/esm2022/testing-base/lib/components/mock.empty-state.component.mjs +6 -4
  330. package/esm2022/testing-base/lib/components/mock.fab-sheet.component.mjs +6 -4
  331. package/esm2022/testing-base/lib/components/mock.flag.component.mjs +6 -4
  332. package/esm2022/testing-base/lib/components/mock.footer.component.mjs +6 -4
  333. package/esm2022/testing-base/lib/components/mock.form-field-message.component.mjs +6 -4
  334. package/esm2022/testing-base/lib/components/mock.form-field.component.mjs +6 -4
  335. package/esm2022/testing-base/lib/components/mock.header.component.mjs +12 -10
  336. package/esm2022/testing-base/lib/components/mock.icon.component.mjs +6 -4
  337. package/esm2022/testing-base/lib/components/mock.input-counter.component.mjs +6 -4
  338. package/esm2022/testing-base/lib/components/mock.input.component.mjs +6 -4
  339. package/esm2022/testing-base/lib/components/mock.item-group.component.mjs +6 -4
  340. package/esm2022/testing-base/lib/components/mock.item-sliding.component.mjs +6 -4
  341. package/esm2022/testing-base/lib/components/mock.item.component.mjs +6 -4
  342. package/esm2022/testing-base/lib/components/mock.kirby-app.component.mjs +6 -4
  343. package/esm2022/testing-base/lib/components/mock.label.component.mjs +6 -4
  344. package/esm2022/testing-base/lib/components/mock.list-experimental.component.mjs +6 -4
  345. package/esm2022/testing-base/lib/components/mock.list-header.component.mjs +6 -4
  346. package/esm2022/testing-base/lib/components/mock.list-item.component.mjs +6 -4
  347. package/esm2022/testing-base/lib/components/mock.list-section-header.component.mjs +6 -4
  348. package/esm2022/testing-base/lib/components/mock.list.component.mjs +6 -4
  349. package/esm2022/testing-base/lib/components/mock.loading-overlay.component.mjs +6 -4
  350. package/esm2022/testing-base/lib/components/mock.menu.component.mjs +6 -4
  351. package/esm2022/testing-base/lib/components/mock.modal-compact-wrapper.component.mjs +6 -4
  352. package/esm2022/testing-base/lib/components/mock.modal-footer.component.mjs +6 -4
  353. package/esm2022/testing-base/lib/components/mock.modal-routing.component.mjs +6 -4
  354. package/esm2022/testing-base/lib/components/mock.modal-wrapper.component.mjs +6 -4
  355. package/esm2022/testing-base/lib/components/mock.modal.component.mjs +6 -4
  356. package/esm2022/testing-base/lib/components/mock.page-footer.component.mjs +6 -4
  357. package/esm2022/testing-base/lib/components/mock.page-local-navigation.component.mjs +6 -4
  358. package/esm2022/testing-base/lib/components/mock.page.component.mjs +44 -34
  359. package/esm2022/testing-base/lib/components/mock.popover.component.mjs +6 -4
  360. package/esm2022/testing-base/lib/components/mock.progress-circle-ring.component.mjs +6 -4
  361. package/esm2022/testing-base/lib/components/mock.progress-circle.component.mjs +6 -4
  362. package/esm2022/testing-base/lib/components/mock.radio-group.component.mjs +6 -4
  363. package/esm2022/testing-base/lib/components/mock.radio.component.mjs +6 -4
  364. package/esm2022/testing-base/lib/components/mock.range.component.mjs +6 -4
  365. package/esm2022/testing-base/lib/components/mock.reorder-list.component.mjs +6 -4
  366. package/esm2022/testing-base/lib/components/mock.router-outlet.component.mjs +6 -4
  367. package/esm2022/testing-base/lib/components/mock.section-header.component.mjs +6 -4
  368. package/esm2022/testing-base/lib/components/mock.segmented-control.component.mjs +6 -4
  369. package/esm2022/testing-base/lib/components/mock.slide-button.component.mjs +6 -4
  370. package/esm2022/testing-base/lib/components/mock.slides.component.mjs +6 -4
  371. package/esm2022/testing-base/lib/components/mock.spinner.component.mjs +6 -4
  372. package/esm2022/testing-base/lib/components/mock.stock-chart.component.mjs +6 -4
  373. package/esm2022/testing-base/lib/components/mock.tab-button.component.mjs +6 -4
  374. package/esm2022/testing-base/lib/components/mock.tab-navigation-item.component.mjs +6 -4
  375. package/esm2022/testing-base/lib/components/mock.tab-navigation.component.mjs +6 -4
  376. package/esm2022/testing-base/lib/components/mock.table-row.component.mjs +6 -4
  377. package/esm2022/testing-base/lib/components/mock.table.component.mjs +6 -4
  378. package/esm2022/testing-base/lib/components/mock.tabs.component.mjs +6 -4
  379. package/esm2022/testing-base/lib/components/mock.textarea.component.mjs +6 -4
  380. package/esm2022/testing-base/lib/components/mock.toggle-button.component.mjs +6 -4
  381. package/esm2022/testing-base/lib/components/mock.toggle.component.mjs +6 -4
  382. package/esm2022/testing-base/lib/components/mock.wrapper.component.mjs +6 -4
  383. package/esm2022/testing-base/lib/directives/index.mjs +1 -1
  384. package/esm2022/testing-base/lib/directives/mock.accordion.directive.mjs +4 -4
  385. package/esm2022/testing-base/lib/directives/mock.affix.directive.mjs +4 -4
  386. package/esm2022/testing-base/lib/directives/mock.card-as-button.directive.mjs +4 -4
  387. package/esm2022/testing-base/lib/directives/mock.component-loader.directive.mjs +4 -4
  388. package/esm2022/testing-base/lib/directives/mock.date-input.directive.mjs +4 -4
  389. package/esm2022/testing-base/lib/directives/mock.decimal-mask.directive.mjs +4 -4
  390. package/esm2022/testing-base/lib/directives/mock.fit-heading.directive.mjs +4 -4
  391. package/esm2022/testing-base/lib/directives/mock.floating.directive.mjs +4 -4
  392. package/esm2022/testing-base/lib/directives/mock.infinite-scroll.directive.mjs +4 -4
  393. package/esm2022/testing-base/lib/directives/mock.key-handler.directive.mjs +4 -4
  394. package/esm2022/testing-base/lib/directives/mock.list-item-color.directive.mjs +4 -4
  395. package/esm2022/testing-base/lib/directives/mock.list.directive.mjs +13 -13
  396. package/esm2022/testing-base/lib/directives/mock.modal-router-link.directive.mjs +4 -4
  397. package/esm2022/testing-base/lib/directives/mock.portal.directive.mjs +4 -4
  398. package/esm2022/testing-base/lib/directives/mock.slide.directive.mjs +4 -4
  399. package/esm2022/testing-base/lib/directives/mock.theme-color.directive.mjs +4 -4
  400. package/esm2022/testing-base/lib/index.mjs +1 -1
  401. package/esm2022/testing-base/lib/kirby-testing-base.module.mjs +5 -5
  402. package/esm2022/testing-base/lib/mock-components.mjs +1 -1
  403. package/esm2022/testing-base/lib/mock-directives.mjs +1 -1
  404. package/esm2022/testing-base/public_api.mjs +1 -1
  405. package/esm2022/testing-jasmine/kirbydesign-designsystem-testing-jasmine.mjs +1 -1
  406. package/esm2022/testing-jasmine/lib/kirby-testing.module.mjs +5 -5
  407. package/esm2022/testing-jasmine/lib/mock-providers.mjs +1 -1
  408. package/esm2022/testing-jasmine/public_api.mjs +1 -1
  409. package/esm2022/testing-jest/kirbydesign-designsystem-testing-jest.mjs +1 -1
  410. package/esm2022/testing-jest/lib/kirby-testing.module.mjs +5 -5
  411. package/esm2022/testing-jest/lib/mock-providers.mjs +1 -1
  412. package/esm2022/testing-jest/public_api.mjs +1 -1
  413. package/esm2022/toast/config/toast-config.mjs +1 -1
  414. package/esm2022/toast/kirbydesign-designsystem-toast.mjs +1 -1
  415. package/esm2022/toast/public_api.mjs +1 -1
  416. package/esm2022/toast/services/indexs.mjs +1 -1
  417. package/esm2022/toast/services/toast.controller.mjs +4 -4
  418. package/esm2022/toast/services/toast.helper.mjs +4 -4
  419. package/esm2022/toggle/kirbydesign-designsystem-toggle.mjs +1 -1
  420. package/esm2022/toggle/public_api.mjs +1 -1
  421. package/esm2022/toggle/toggle.component.mjs +4 -4
  422. package/esm2022/toggle-button/kirbydesign-designsystem-toggle-button.mjs +1 -1
  423. package/esm2022/toggle-button/public_api.mjs +1 -1
  424. package/esm2022/toggle-button/toggle-button.component.mjs +4 -4
  425. package/esm2022/toggle-button/toggle-button.module.mjs +5 -5
  426. package/esm2022/types/event-listener-dispose-fn.mjs +1 -1
  427. package/esm2022/types/kirbydesign-designsystem-types.mjs +1 -1
  428. package/esm2022/types/public_api.mjs +1 -1
  429. package/esm2022/types/window-ref.mjs +4 -4
  430. package/fesm2022/kirbydesign-designsystem-accordion.mjs +10 -10
  431. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  432. package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
  433. package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
  434. package/fesm2022/kirbydesign-designsystem-avatar.mjs +11 -5
  435. package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
  436. package/fesm2022/kirbydesign-designsystem-badge.mjs +3 -3
  437. package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
  438. package/fesm2022/kirbydesign-designsystem-button.mjs +3 -3
  439. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  440. package/fesm2022/kirbydesign-designsystem-calendar.mjs +6 -6
  441. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  442. package/fesm2022/kirbydesign-designsystem-card.mjs +40 -27
  443. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  444. package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
  445. package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
  446. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +3 -3
  447. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  448. package/fesm2022/kirbydesign-designsystem-data-table.mjs +13 -13
  449. package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
  450. package/fesm2022/kirbydesign-designsystem-divider.mjs +3 -3
  451. package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
  452. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +11 -11
  453. package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  454. package/fesm2022/kirbydesign-designsystem-empty-state.mjs +7 -7
  455. package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
  456. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
  457. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
  458. package/fesm2022/kirbydesign-designsystem-flag.mjs +3 -3
  459. package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
  460. package/fesm2022/kirbydesign-designsystem-form-field.mjs +28 -28
  461. package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
  462. package/fesm2022/kirbydesign-designsystem-header.mjs +26 -19
  463. package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
  464. package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs.map +1 -1
  465. package/fesm2022/kirbydesign-designsystem-helpers.mjs +9 -9
  466. package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
  467. package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
  468. package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
  469. package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
  470. package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
  471. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
  472. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
  473. package/fesm2022/kirbydesign-designsystem-item.mjs +10 -10
  474. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  475. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
  476. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
  477. package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs +4 -4
  478. package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs.map +1 -1
  479. package/fesm2022/kirbydesign-designsystem-list.mjs +55 -49
  480. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  481. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +6 -6
  482. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
  483. package/fesm2022/kirbydesign-designsystem-menu.mjs +3 -3
  484. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  485. package/fesm2022/kirbydesign-designsystem-modal-v2.mjs +19 -19
  486. package/fesm2022/kirbydesign-designsystem-modal-v2.mjs.map +1 -1
  487. package/fesm2022/kirbydesign-designsystem-modal.mjs +123 -90
  488. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  489. package/fesm2022/kirbydesign-designsystem-page.mjs +43 -40
  490. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  491. package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
  492. package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
  493. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
  494. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
  495. package/fesm2022/kirbydesign-designsystem-radio.mjs +10 -10
  496. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  497. package/fesm2022/kirbydesign-designsystem-range.mjs +3 -3
  498. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  499. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +3 -3
  500. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
  501. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
  502. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  503. package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
  504. package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
  505. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +3 -3
  506. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  507. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
  508. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
  509. package/fesm2022/kirbydesign-designsystem-shared.mjs +15 -15
  510. package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
  511. package/fesm2022/kirbydesign-designsystem-slide-button.mjs +4 -4
  512. package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
  513. package/fesm2022/kirbydesign-designsystem-slide.mjs +13 -13
  514. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  515. package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
  516. package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
  517. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +10 -10
  518. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  519. package/fesm2022/kirbydesign-designsystem-tabs.mjs +13 -13
  520. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  521. package/fesm2022/kirbydesign-designsystem-testing-base.mjs +455 -307
  522. package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  523. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
  524. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
  525. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
  526. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
  527. package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
  528. package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
  529. package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
  530. package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
  531. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +7 -7
  532. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
  533. package/fesm2022/kirbydesign-designsystem-toggle.mjs +3 -3
  534. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  535. package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
  536. package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
  537. package/fesm2022/kirbydesign-designsystem.mjs +21 -21
  538. package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
  539. package/header/header.component.d.ts +5 -2
  540. package/list/list.module.d.ts +1 -1
  541. package/modal/modal/modal-component/modal.component.d.ts +5 -5
  542. package/modal/modal/services/can-dismiss-modal-guard.d.ts +2 -0
  543. package/modal/modal/services/index.d.ts +1 -0
  544. package/modal/modal/services/modal.controller.d.ts +2 -0
  545. package/modal/modal/services/modal.helper.d.ts +3 -4
  546. package/modal/modal-navigation.service.d.ts +1 -0
  547. package/modal/modal.interfaces.d.ts +1 -0
  548. package/package.json +2 -2
  549. package/testing-base/lib/components/mock.avatar.component.d.ts +1 -1
  550. package/testing-base/lib/components/mock.button.component.d.ts +1 -1
  551. package/testing-jest/lib/mock-providers.d.ts +28 -28
@@ -10,10 +10,10 @@ class BadgeComponent {
10
10
  constructor() {
11
11
  this.size = 'md';
12
12
  }
13
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: BadgeComponent, isStandalone: true, selector: "kirby-badge", inputs: { text: "text", size: "size" }, host: { properties: { "class": "this.size" } }, hostDirectives: [{ directive: i1.ThemeColorDirective, inputs: ["themeColor", "themeColor"] }], ngImport: i0, template: "<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n", styles: [":host{position:var(--kirby-badge-position, relative);left:var(--kirby-badge-left, auto);right:var(--kirby-badge-right, auto);top:var(--kirby-badge-top, auto);z-index:var(--kirby-badge-z-index, auto);font-size:10px;line-height:1}:host ion-badge{--background: var(--kirby-badge-background-color, var(--kirby-white));--color: var(--kirby-badge-color, var(--kirby-white-contrast));box-sizing:border-box;border-radius:8px;font-size:inherit;position:relative;box-shadow:var(--kirby-badge-elevation, none)}:host ion-badge ::ng-deep>kirby-icon{--kirby-icon-font-size: 16px;position:absolute;top:0;left:0}:host(.sm) ion-badge{padding:initial;min-height:initial;min-width:initial;height:8px;width:8px}:host(.md) ion-badge{--padding-top: 3px;--padding-end: 5px;--padding-bottom: 3px;--padding-start: 5px;min-width:16px;min-height:16px}:host(.success) ion-badge{--background: var(--kirby-success);--color: var(--kirby-badge-color, var(--kirby-success-contrast))}:host(.warning) ion-badge{--background: var(--kirby-warning);--color: var(--kirby-badge-color, var(--kirby-warning-contrast))}:host(.danger) ion-badge{--background: var(--kirby-danger);--color: var(--kirby-badge-color, var(--kirby-text-color-white))}:host(.default) ion-badge,:host(.white) ion-badge{--kirby-badge-elevation: 0 20px 30px -15px rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 12%)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
13
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BadgeComponent, isStandalone: true, selector: "kirby-badge", inputs: { text: "text", size: "size" }, host: { properties: { "class": "this.size" } }, hostDirectives: [{ directive: i1.ThemeColorDirective, inputs: ["themeColor", "themeColor"] }], ngImport: i0, template: "<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n", styles: [":host{position:var(--kirby-badge-position, relative);left:var(--kirby-badge-left, auto);right:var(--kirby-badge-right, auto);top:var(--kirby-badge-top, auto);z-index:var(--kirby-badge-z-index, auto);font-size:10px;line-height:1}:host ion-badge{--background: var(--kirby-badge-background-color, var(--kirby-white));--color: var(--kirby-badge-color, var(--kirby-white-contrast));box-sizing:border-box;border-radius:8px;font-size:inherit;position:relative;box-shadow:var(--kirby-badge-elevation, none)}:host ion-badge ::ng-deep>kirby-icon{--kirby-icon-font-size: 16px;position:absolute;top:0;left:0}:host(.sm) ion-badge{padding:initial;min-height:initial;min-width:initial;height:8px;width:8px}:host(.md) ion-badge{--padding-top: 3px;--padding-end: 5px;--padding-bottom: 3px;--padding-start: 5px;min-width:16px;min-height:16px}:host(.success) ion-badge{--background: var(--kirby-success);--color: var(--kirby-badge-color, var(--kirby-success-contrast))}:host(.warning) ion-badge{--background: var(--kirby-warning);--color: var(--kirby-badge-color, var(--kirby-warning-contrast))}:host(.danger) ion-badge{--background: var(--kirby-danger);--color: var(--kirby-badge-color, var(--kirby-text-color-white))}:host(.default) ion-badge,:host(.white) ion-badge{--kirby-badge-elevation: 0 20px 30px -15px rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 12%)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BadgeComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BadgeComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'kirby-badge', standalone: true, imports: [CommonModule, IonBadge], hostDirectives: [{ directive: ThemeColorDirective, inputs: ['themeColor'] }], template: "<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n", styles: [":host{position:var(--kirby-badge-position, relative);left:var(--kirby-badge-left, auto);right:var(--kirby-badge-right, auto);top:var(--kirby-badge-top, auto);z-index:var(--kirby-badge-z-index, auto);font-size:10px;line-height:1}:host ion-badge{--background: var(--kirby-badge-background-color, var(--kirby-white));--color: var(--kirby-badge-color, var(--kirby-white-contrast));box-sizing:border-box;border-radius:8px;font-size:inherit;position:relative;box-shadow:var(--kirby-badge-elevation, none)}:host ion-badge ::ng-deep>kirby-icon{--kirby-icon-font-size: 16px;position:absolute;top:0;left:0}:host(.sm) ion-badge{padding:initial;min-height:initial;min-width:initial;height:8px;width:8px}:host(.md) ion-badge{--padding-top: 3px;--padding-end: 5px;--padding-bottom: 3px;--padding-start: 5px;min-width:16px;min-height:16px}:host(.success) ion-badge{--background: var(--kirby-success);--color: var(--kirby-badge-color, var(--kirby-success-contrast))}:host(.warning) ion-badge{--background: var(--kirby-warning);--color: var(--kirby-badge-color, var(--kirby-warning-contrast))}:host(.danger) ion-badge{--background: var(--kirby-danger);--color: var(--kirby-badge-color, var(--kirby-text-color-white))}:host(.default) ion-badge,:host(.white) ion-badge{--kirby-badge-elevation: 0 20px 30px -15px rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 12%)}\n"] }]
19
19
  }], propDecorators: { text: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-badge.mjs","sources":["../../../../libs/designsystem/badge/src/badge.component.ts","../../../../libs/designsystem/badge/src/badge.component.html","../../../../libs/designsystem/badge/src/kirbydesign-designsystem-badge.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\nimport { IonBadge } from '@ionic/angular/standalone';\n\nexport type BadgeSize = 'sm' | 'md';\n\n@Component({\n selector: 'kirby-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n standalone: true,\n imports: [CommonModule, IonBadge],\n hostDirectives: [{ directive: ThemeColorDirective, inputs: ['themeColor'] }],\n})\nexport class BadgeComponent {\n @Input() text: string;\n\n @HostBinding('class')\n @Input()\n size: BadgeSize = 'md';\n}\n","<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;MAea,cAAc,CAAA;AAR3B,IAAA,WAAA,GAAA;QAaE,IAAI,CAAA,IAAA,GAAc,IAAI,CAAC;AACxB,KAAA;iIANY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,ECf3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+MAKA,EDOY,MAAA,EAAA,CAAA,o0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mIAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGrB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACE,aAAa,EAAA,UAAA,EAGX,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,QAAQ,CAAC,EACjB,cAAA,EAAA,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,+MAAA,EAAA,MAAA,EAAA,CAAA,o0CAAA,CAAA,EAAA,CAAA;8BAGnE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAIN,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,OAAO,CAAA;;sBACnB,KAAK;;;AEnBR;;AAEG;;;;"}
1
+ {"version":3,"file":"kirbydesign-designsystem-badge.mjs","sources":["../../badge/src/badge.component.ts","../../badge/src/badge.component.html","../../badge/src/kirbydesign-designsystem-badge.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\nimport { IonBadge } from '@ionic/angular/standalone';\n\nexport type BadgeSize = 'sm' | 'md';\n\n@Component({\n selector: 'kirby-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n standalone: true,\n imports: [CommonModule, IonBadge],\n hostDirectives: [{ directive: ThemeColorDirective, inputs: ['themeColor'] }],\n})\nexport class BadgeComponent {\n @Input() text: string;\n\n @HostBinding('class')\n @Input()\n size: BadgeSize = 'md';\n}\n","<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;MAea,cAAc,CAAA;AAR3B,IAAA,WAAA,GAAA;QAaE,IAAI,CAAA,IAAA,GAAc,IAAI,CAAC;AACxB,KAAA;kIANY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,ECf3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+MAKA,EDOY,MAAA,EAAA,CAAA,o0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mIAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGrB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACE,aAAa,EAAA,UAAA,EAGX,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,QAAQ,CAAC,EACjB,cAAA,EAAA,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,+MAAA,EAAA,MAAA,EAAA,CAAA,o0CAAA,CAAA,EAAA,CAAA;8BAGnE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAIN,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,OAAO,CAAA;;sBACnB,KAAK;;;AEnBR;;AAEG;;;;"}
@@ -102,10 +102,10 @@ class ButtonComponent {
102
102
  this._isIconRight = !this._isIconLeft;
103
103
  }
104
104
  }
105
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
106
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ButtonComponent, isStandalone: true, selector: "button[kirby-button],Button[kirby-button]", inputs: { attentionLevel: "attentionLevel", noDecoration: "noDecoration", themeColor: "themeColor", expand: "expand", isFloating: "isFloating", size: "size", showIconOnly: "showIconOnly" }, host: { properties: { "class.no-decoration": "this.noDecoration", "class.floating": "this.isButtonFloating", "class.icon-only": "this.isIconOnly", "class.icon-left": "this.isIconLeft", "class.icon-right": "this.isIconRight", "class": "this._cssClass" } }, queries: [{ propertyName: "iconElementRef", first: true, predicate: IconComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-container>\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\"><ng-content></ng-content></span>\n</ng-container>\n<!--\n TODO: Fix globally exposed .state-layer and .content-layer\n \n See: https://github.com/kirbydesign/designsystem/issues/2101\n-->\n", styles: [":host{--kirby-button-padding-left: 24px;--kirby-button-padding-right: 24px;flex-shrink:0;--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative;font-family:var(--kirby-font-family);background-color:var(--kirby-button-background-color, initial);color:var(--kirby-button-color, inherit);border-radius:999px;box-sizing:border-box;display:inline-flex;flex-direction:row;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap;font-size:14px;height:40px;min-width:88px;padding:0;margin:4px;line-height:20px;outline:none;border:none}:host:after{content:\"\";position:absolute;min-height:44px;min-width:44px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}:host .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}:host .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){:host:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black)}:host .content-layer{display:inherit;width:inherit;flex-direction:inherit;align-items:inherit;justify-content:inherit;padding-inline:var(--kirby-button-padding-left) var(--kirby-button-padding-right)}:host.no-margin{margin:0}:host.icon-left{--kirby-icon-margin-right: 8px;--kirby-button-padding-left: 12px;--kirby-button-padding-right: 16px;padding:0}:host.icon-right{--kirby-icon-margin-left: 8px;--kirby-button-padding-left: 16px;--kirby-button-padding-right: 12px;padding:0}:host.icon-only{--kirby-button-padding-left: 0;--kirby-button-padding-right: 0;width:40px;padding:0;min-width:unset}:host.icon-only .content-layer ::ng-deep>:not(kirby-icon){display:none}:host.xs{position:relative;font-size:12px;height:24px;min-width:44px}:host.xs:after{content:\"\";position:absolute;min-height:32px;min-width:32px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}:host.xs:not(.icon-only){--kirby-button-padding-left: 12px;--kirby-button-padding-right: 12px}:host.xs.icon-only{--kirby-icon-font-size: 16px;width:24px;min-width:unset}:host.xs.icon-left{--kirby-button-padding-left: 8px;--kirby-icon-margin-right: 4px}:host.xs.icon-right{--kirby-button-padding-right: 8px;--kirby-icon-margin-left: 4px}:host.xs.icon-left,:host.xs.icon-right{--kirby-icon-font-size: 16px;min-width:44px}:host.sm{font-size:12px;height:32px;min-width:44px}:host.sm:not(.icon-only){--kirby-button-padding-left: 16px;--kirby-button-padding-right: 16px}:host.sm.icon-only{--kirby-icon-font-size: 16px;width:32px;min-width:unset}:host.sm.icon-left{--kirby-button-padding-left: 12px}:host.sm.icon-right{--kirby-button-padding-right: 12px}:host.sm.icon-left,:host.sm.icon-right{--kirby-icon-font-size: 16px;min-width:88px}:host.lg{font-size:16px;height:48px;min-width:220px}:host.lg.icon-only{width:48px;min-width:unset}:host.no-decoration{--kirby-button-background-color: transparent;--kirby-button-color: var(--kirby-black)}@media (hover: hover){:host.no-decoration:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host.no-decoration:active,:host.no-decoration.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host.attention-level1{--kirby-button-background-color: var(--kirby-primary);--kirby-button-color: var(--kirby-primary-contrast)}:host.attention-level1.destructive{--kirby-button-background-color: var(--kirby-danger);--kirby-button-color: var(--kirby-danger-contrast)}:host.attention-level2{--kirby-button-background-color: var(--kirby-black);--kirby-button-color: var(--kirby-black-contrast)}@media (hover: hover){:host.attention-level2:hover{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host.attention-level2:active,:host.attention-level2.interaction-state-active{--state-layer-opacity: .2;--state-layer-background-color: var(--kirby-black-contrast)}:host.attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host.attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host.attention-level3:active,:host.attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host.attention-level3 .state-layer{box-shadow:var(--kirby-inputs-elevation)}:host[expand=block]{width:100%}:host:disabled{color:var(--kirby-semi-dark-shade);border-color:transparent;pointer-events:none}:host:disabled:not(.no-decoration){background-color:var(--kirby-semi-light)}:host.floating{width:64px!important;height:64px!important;min-width:unset}:host.floating:not(:disabled){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}:host-context(.kirby-color-brightness-dark).no-decoration{--kirby-button-color: var(--kirby-white)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).no-decoration:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host-context(.kirby-color-brightness-dark).no-decoration:active,:host-context(.kirby-color-brightness-dark).no-decoration.interaction-state-active{--state-layer-opacity: .2;--state-layer-background-color: var(--kirby-black-contrast)}:host-context(.kirby-color-brightness-dark).attention-level2{--kirby-button-background-color: var(--kirby-white);--kirby-button-color: var(--kirby-white-contrast)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).attention-level2:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(.kirby-color-brightness-dark).attention-level2:active,:host-context(.kirby-color-brightness-dark).attention-level2.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).attention-level3:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host-context(.kirby-color-brightness-dark).attention-level3:active,:host-context(.kirby-color-brightness-dark).attention-level3.interaction-state-active{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black-contrast)}:host-context(kirby-item)[slot=end]{margin-inline-start:16px}:host-context(kirby-alert).ok-btn{--kirby-button-background-color: var(--kirby-success);--kirby-button-color: var(--kirby-success-contrast)}:host-context(kirby-dropdown){justify-content:space-between}:host-context(ion-toolbar ion-buttons.legacy-actions){font-size:14px;height:40px}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only{width:40px}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(.page-title kirby-page-actions).no-decoration,:host-context(.page-title kirby-page-actions).attention-level1,:host-context(.page-title kirby-page-actions).attention-level2,:host-context(.page-title kirby-page-actions).attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host-context(.page-title kirby-page-actions).no-decoration:hover,:host-context(.page-title kirby-page-actions).attention-level1:hover,:host-context(.page-title kirby-page-actions).attention-level2:hover,:host-context(.page-title kirby-page-actions).attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(.page-title kirby-page-actions).no-decoration:active,:host-context(.page-title kirby-page-actions).no-decoration.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level1:active,:host-context(.page-title kirby-page-actions).attention-level1.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level2:active,:host-context(.page-title kirby-page-actions).attention-level2.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level3:active,:host-context(.page-title kirby-page-actions).attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-empty-state .content){font-size:16px;height:48px;min-width:220px}:host-context(kirby-empty-state .content).icon-only{width:48px;min-width:unset}:host-context(kirby-toggle-button).success{--kirby-button-background-color: var(--kirby-success);--kirby-button-color: var(--kirby-success-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).success:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).success:active,:host-context(kirby-toggle-button).success.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-toggle-button).warning{--kirby-button-background-color: var(--kirby-warning);--kirby-button-color: var(--kirby-warning-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).warning:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).warning:active,:host-context(kirby-toggle-button).warning.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-toggle-button).danger{--kirby-button-background-color: var(--kirby-danger);--kirby-button-color: var(--kirby-danger-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).danger:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).danger:active,:host-context(kirby-toggle-button).danger.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-page-actions),:host-context(kirby-action-group),:host-context(.kirby-modal ion-header ion-toolbar ion-buttons){margin:0}:host-context(kirby-modal-footer){margin-top:0;margin-bottom:0}:host-context(kirby-modal-footer):first-child{margin-left:0}:host-context(kirby-modal-footer):last-child{margin-right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
106
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ButtonComponent, isStandalone: true, selector: "button[kirby-button],Button[kirby-button]", inputs: { attentionLevel: "attentionLevel", noDecoration: "noDecoration", themeColor: "themeColor", expand: "expand", isFloating: "isFloating", size: "size", showIconOnly: "showIconOnly" }, host: { properties: { "class.no-decoration": "this.noDecoration", "class.floating": "this.isButtonFloating", "class.icon-only": "this.isIconOnly", "class.icon-left": "this.isIconLeft", "class.icon-right": "this.isIconRight", "class": "this._cssClass" } }, queries: [{ propertyName: "iconElementRef", first: true, predicate: IconComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-container>\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\"><ng-content></ng-content></span>\n</ng-container>\n<!--\n TODO: Fix globally exposed .state-layer and .content-layer\n \n See: https://github.com/kirbydesign/designsystem/issues/2101\n-->\n", styles: [":host{--kirby-button-padding-left: 24px;--kirby-button-padding-right: 24px;flex-shrink:0;--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative;font-family:var(--kirby-font-family);background-color:var(--kirby-button-background-color, initial);color:var(--kirby-button-color, inherit);border-radius:999px;box-sizing:border-box;display:inline-flex;flex-direction:row;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap;font-size:14px;height:40px;min-width:88px;padding:0;margin:4px;line-height:20px;outline:none;border:none}:host:after{content:\"\";position:absolute;min-height:44px;min-width:44px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}:host .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}:host .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){:host:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black)}:host .content-layer{display:inherit;width:inherit;flex-direction:inherit;align-items:inherit;justify-content:inherit;padding-inline:var(--kirby-button-padding-left) var(--kirby-button-padding-right)}:host.no-margin{margin:0}:host.icon-left{--kirby-icon-margin-right: 8px;--kirby-button-padding-left: 12px;--kirby-button-padding-right: 16px;padding:0}:host.icon-right{--kirby-icon-margin-left: 8px;--kirby-button-padding-left: 16px;--kirby-button-padding-right: 12px;padding:0}:host.icon-only{--kirby-button-padding-left: 0;--kirby-button-padding-right: 0;width:40px;padding:0;min-width:unset}:host.icon-only .content-layer ::ng-deep>:not(kirby-icon){display:none}:host.xs{position:relative;font-size:12px;height:24px;min-width:44px}:host.xs:after{content:\"\";position:absolute;min-height:32px;min-width:32px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}:host.xs:not(.icon-only){--kirby-button-padding-left: 12px;--kirby-button-padding-right: 12px}:host.xs.icon-only{--kirby-icon-font-size: 16px;width:24px;min-width:unset}:host.xs.icon-left{--kirby-button-padding-left: 8px;--kirby-icon-margin-right: 4px}:host.xs.icon-right{--kirby-button-padding-right: 8px;--kirby-icon-margin-left: 4px}:host.xs.icon-left,:host.xs.icon-right{--kirby-icon-font-size: 16px;min-width:44px}:host.sm{font-size:12px;height:32px;min-width:44px}:host.sm:not(.icon-only){--kirby-button-padding-left: 16px;--kirby-button-padding-right: 16px}:host.sm.icon-only{--kirby-icon-font-size: 16px;width:32px;min-width:unset}:host.sm.icon-left{--kirby-button-padding-left: 12px}:host.sm.icon-right{--kirby-button-padding-right: 12px}:host.sm.icon-left,:host.sm.icon-right{--kirby-icon-font-size: 16px;min-width:88px}:host.lg{font-size:16px;height:48px;min-width:220px}:host.lg.icon-only{width:48px;min-width:unset}:host.no-decoration{--kirby-button-background-color: transparent;--kirby-button-color: var(--kirby-black)}@media (hover: hover){:host.no-decoration:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host.no-decoration:active,:host.no-decoration.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host.attention-level1{--kirby-button-background-color: var(--kirby-primary);--kirby-button-color: var(--kirby-primary-contrast)}:host.attention-level1.destructive{--kirby-button-background-color: var(--kirby-danger);--kirby-button-color: var(--kirby-danger-contrast)}:host.attention-level2{--kirby-button-background-color: var(--kirby-black);--kirby-button-color: var(--kirby-black-contrast)}@media (hover: hover){:host.attention-level2:hover{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host.attention-level2:active,:host.attention-level2.interaction-state-active{--state-layer-opacity: .2;--state-layer-background-color: var(--kirby-black-contrast)}:host.attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host.attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host.attention-level3:active,:host.attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host.attention-level3 .state-layer{box-shadow:var(--kirby-inputs-elevation)}:host[expand=block]{width:100%}:host:disabled{color:var(--kirby-semi-dark-shade);border-color:transparent;pointer-events:none}:host:disabled:not(.no-decoration){background-color:var(--kirby-semi-light)}:host.floating{width:64px!important;height:64px!important;min-width:unset}:host.floating:not(:disabled){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}:host-context(.kirby-color-brightness-dark).no-decoration{--kirby-button-color: var(--kirby-white)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).no-decoration:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host-context(.kirby-color-brightness-dark).no-decoration:active,:host-context(.kirby-color-brightness-dark).no-decoration.interaction-state-active{--state-layer-opacity: .2;--state-layer-background-color: var(--kirby-black-contrast)}:host-context(.kirby-color-brightness-dark).attention-level2{--kirby-button-background-color: var(--kirby-white);--kirby-button-color: var(--kirby-white-contrast)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).attention-level2:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(.kirby-color-brightness-dark).attention-level2:active,:host-context(.kirby-color-brightness-dark).attention-level2.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).attention-level3:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host-context(.kirby-color-brightness-dark).attention-level3:active,:host-context(.kirby-color-brightness-dark).attention-level3.interaction-state-active{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black-contrast)}:host-context(kirby-item)[slot=end]{margin-inline-start:16px}:host-context(kirby-alert).ok-btn{--kirby-button-background-color: var(--kirby-success);--kirby-button-color: var(--kirby-success-contrast)}:host-context(kirby-dropdown){justify-content:space-between}:host-context(ion-toolbar ion-buttons.legacy-actions){font-size:14px;height:40px}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only{width:40px}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(.page-title kirby-page-actions).no-decoration,:host-context(.page-title kirby-page-actions).attention-level1,:host-context(.page-title kirby-page-actions).attention-level2,:host-context(.page-title kirby-page-actions).attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host-context(.page-title kirby-page-actions).no-decoration:hover,:host-context(.page-title kirby-page-actions).attention-level1:hover,:host-context(.page-title kirby-page-actions).attention-level2:hover,:host-context(.page-title kirby-page-actions).attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(.page-title kirby-page-actions).no-decoration:active,:host-context(.page-title kirby-page-actions).no-decoration.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level1:active,:host-context(.page-title kirby-page-actions).attention-level1.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level2:active,:host-context(.page-title kirby-page-actions).attention-level2.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level3:active,:host-context(.page-title kirby-page-actions).attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-empty-state .content){font-size:16px;height:48px;min-width:220px}:host-context(kirby-empty-state .content).icon-only{width:48px;min-width:unset}:host-context(kirby-toggle-button).success{--kirby-button-background-color: var(--kirby-success);--kirby-button-color: var(--kirby-success-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).success:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).success:active,:host-context(kirby-toggle-button).success.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-toggle-button).warning{--kirby-button-background-color: var(--kirby-warning);--kirby-button-color: var(--kirby-warning-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).warning:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).warning:active,:host-context(kirby-toggle-button).warning.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-toggle-button).danger{--kirby-button-background-color: var(--kirby-danger);--kirby-button-color: var(--kirby-danger-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).danger:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).danger:active,:host-context(kirby-toggle-button).danger.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-page-actions),:host-context(kirby-action-group),:host-context(.kirby-modal ion-header ion-toolbar ion-buttons){margin:0}:host-context(kirby-modal-footer){margin-top:0;margin-bottom:0}:host-context(kirby-modal-footer):first-child{margin-left:0}:host-context(kirby-modal-footer):last-child{margin-right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
107
107
  }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ButtonComponent, decorators: [{
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonComponent, decorators: [{
109
109
  type: Component,
110
110
  args: [{ standalone: true, imports: [CommonModule], selector: 'button[kirby-button],Button[kirby-button]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\"><ng-content></ng-content></span>\n</ng-container>\n<!--\n TODO: Fix globally exposed .state-layer and .content-layer\n \n See: https://github.com/kirbydesign/designsystem/issues/2101\n-->\n", styles: [":host{--kirby-button-padding-left: 24px;--kirby-button-padding-right: 24px;flex-shrink:0;--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative;font-family:var(--kirby-font-family);background-color:var(--kirby-button-background-color, initial);color:var(--kirby-button-color, inherit);border-radius:999px;box-sizing:border-box;display:inline-flex;flex-direction:row;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap;font-size:14px;height:40px;min-width:88px;padding:0;margin:4px;line-height:20px;outline:none;border:none}:host:after{content:\"\";position:absolute;min-height:44px;min-width:44px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}:host .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}:host .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){:host:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black)}:host .content-layer{display:inherit;width:inherit;flex-direction:inherit;align-items:inherit;justify-content:inherit;padding-inline:var(--kirby-button-padding-left) var(--kirby-button-padding-right)}:host.no-margin{margin:0}:host.icon-left{--kirby-icon-margin-right: 8px;--kirby-button-padding-left: 12px;--kirby-button-padding-right: 16px;padding:0}:host.icon-right{--kirby-icon-margin-left: 8px;--kirby-button-padding-left: 16px;--kirby-button-padding-right: 12px;padding:0}:host.icon-only{--kirby-button-padding-left: 0;--kirby-button-padding-right: 0;width:40px;padding:0;min-width:unset}:host.icon-only .content-layer ::ng-deep>:not(kirby-icon){display:none}:host.xs{position:relative;font-size:12px;height:24px;min-width:44px}:host.xs:after{content:\"\";position:absolute;min-height:32px;min-width:32px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}:host.xs:not(.icon-only){--kirby-button-padding-left: 12px;--kirby-button-padding-right: 12px}:host.xs.icon-only{--kirby-icon-font-size: 16px;width:24px;min-width:unset}:host.xs.icon-left{--kirby-button-padding-left: 8px;--kirby-icon-margin-right: 4px}:host.xs.icon-right{--kirby-button-padding-right: 8px;--kirby-icon-margin-left: 4px}:host.xs.icon-left,:host.xs.icon-right{--kirby-icon-font-size: 16px;min-width:44px}:host.sm{font-size:12px;height:32px;min-width:44px}:host.sm:not(.icon-only){--kirby-button-padding-left: 16px;--kirby-button-padding-right: 16px}:host.sm.icon-only{--kirby-icon-font-size: 16px;width:32px;min-width:unset}:host.sm.icon-left{--kirby-button-padding-left: 12px}:host.sm.icon-right{--kirby-button-padding-right: 12px}:host.sm.icon-left,:host.sm.icon-right{--kirby-icon-font-size: 16px;min-width:88px}:host.lg{font-size:16px;height:48px;min-width:220px}:host.lg.icon-only{width:48px;min-width:unset}:host.no-decoration{--kirby-button-background-color: transparent;--kirby-button-color: var(--kirby-black)}@media (hover: hover){:host.no-decoration:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host.no-decoration:active,:host.no-decoration.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host.attention-level1{--kirby-button-background-color: var(--kirby-primary);--kirby-button-color: var(--kirby-primary-contrast)}:host.attention-level1.destructive{--kirby-button-background-color: var(--kirby-danger);--kirby-button-color: var(--kirby-danger-contrast)}:host.attention-level2{--kirby-button-background-color: var(--kirby-black);--kirby-button-color: var(--kirby-black-contrast)}@media (hover: hover){:host.attention-level2:hover{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host.attention-level2:active,:host.attention-level2.interaction-state-active{--state-layer-opacity: .2;--state-layer-background-color: var(--kirby-black-contrast)}:host.attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host.attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host.attention-level3:active,:host.attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host.attention-level3 .state-layer{box-shadow:var(--kirby-inputs-elevation)}:host[expand=block]{width:100%}:host:disabled{color:var(--kirby-semi-dark-shade);border-color:transparent;pointer-events:none}:host:disabled:not(.no-decoration){background-color:var(--kirby-semi-light)}:host.floating{width:64px!important;height:64px!important;min-width:unset}:host.floating:not(:disabled){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}:host-context(.kirby-color-brightness-dark).no-decoration{--kirby-button-color: var(--kirby-white)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).no-decoration:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host-context(.kirby-color-brightness-dark).no-decoration:active,:host-context(.kirby-color-brightness-dark).no-decoration.interaction-state-active{--state-layer-opacity: .2;--state-layer-background-color: var(--kirby-black-contrast)}:host-context(.kirby-color-brightness-dark).attention-level2{--kirby-button-background-color: var(--kirby-white);--kirby-button-color: var(--kirby-white-contrast)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).attention-level2:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(.kirby-color-brightness-dark).attention-level2:active,:host-context(.kirby-color-brightness-dark).attention-level2.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}@media (hover: hover){:host-context(.kirby-color-brightness-dark).attention-level3:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host-context(.kirby-color-brightness-dark).attention-level3:active,:host-context(.kirby-color-brightness-dark).attention-level3.interaction-state-active{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black-contrast)}:host-context(kirby-item)[slot=end]{margin-inline-start:16px}:host-context(kirby-alert).ok-btn{--kirby-button-background-color: var(--kirby-success);--kirby-button-color: var(--kirby-success-contrast)}:host-context(kirby-dropdown){justify-content:space-between}:host-context(ion-toolbar ion-buttons.legacy-actions){font-size:14px;height:40px}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only{width:40px}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2:hover,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.no-decoration.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level1.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level2.interaction-state-active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3:active,:host-context(ion-toolbar ion-buttons.legacy-actions).icon-only.attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(.page-title kirby-page-actions).no-decoration,:host-context(.page-title kirby-page-actions).attention-level1,:host-context(.page-title kirby-page-actions).attention-level2,:host-context(.page-title kirby-page-actions).attention-level3{--kirby-button-background-color: var(--kirby-inputs-background-color);--kirby-button-color: var(--kirby-inputs-color)}@media (hover: hover){:host-context(.page-title kirby-page-actions).no-decoration:hover,:host-context(.page-title kirby-page-actions).attention-level1:hover,:host-context(.page-title kirby-page-actions).attention-level2:hover,:host-context(.page-title kirby-page-actions).attention-level3:hover{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(.page-title kirby-page-actions).no-decoration:active,:host-context(.page-title kirby-page-actions).no-decoration.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level1:active,:host-context(.page-title kirby-page-actions).attention-level1.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level2:active,:host-context(.page-title kirby-page-actions).attention-level2.interaction-state-active,:host-context(.page-title kirby-page-actions).attention-level3:active,:host-context(.page-title kirby-page-actions).attention-level3.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-empty-state .content){font-size:16px;height:48px;min-width:220px}:host-context(kirby-empty-state .content).icon-only{width:48px;min-width:unset}:host-context(kirby-toggle-button).success{--kirby-button-background-color: var(--kirby-success);--kirby-button-color: var(--kirby-success-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).success:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).success:active,:host-context(kirby-toggle-button).success.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-toggle-button).warning{--kirby-button-background-color: var(--kirby-warning);--kirby-button-color: var(--kirby-warning-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).warning:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).warning:active,:host-context(kirby-toggle-button).warning.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-toggle-button).danger{--kirby-button-background-color: var(--kirby-danger);--kirby-button-color: var(--kirby-danger-contrast)}@media (hover: hover){:host-context(kirby-toggle-button).danger:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-toggle-button).danger:active,:host-context(kirby-toggle-button).danger.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-page-actions),:host-context(kirby-action-group),:host-context(.kirby-modal ion-header ion-toolbar ion-buttons){margin:0}:host-context(kirby-modal-footer){margin-top:0;margin-bottom:0}:host-context(kirby-modal-footer):first-child{margin-left:0}:host-context(kirby-modal-footer):last-child{margin-right:0}\n"] }]
111
111
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { attentionLevel: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-button.mjs","sources":["../../../../libs/designsystem/button/src/button.component.ts","../../../../libs/designsystem/button/src/button.component.html","../../../../libs/designsystem/button/src/kirbydesign-designsystem-button.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n Renderer2,\n} from '@angular/core';\n\nimport { NotificationColor } from '@kirbydesign/core';\n\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\n\nexport enum ButtonSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\nexport type AttentionLevel = '1' | '2' | '3';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n // eslint-disable-next-line @angular-eslint/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 @Input() attentionLevel: AttentionLevel;\n\n @HostBinding('class.no-decoration')\n @Input()\n noDecoration = false;\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.iconElementRef && this.showIconOnly;\n }\n private _isIconLeft = false;\n @HostBinding('class.icon-left')\n public get isIconLeft() {\n return this._isIconLeft && !this.showIconOnly;\n }\n private _isIconRight = false;\n @HostBinding('class.icon-right')\n public get isIconRight() {\n return this._isIconRight && !this.showIconOnly;\n }\n\n @HostBinding('class')\n get _cssClass() {\n const attentionLevel = this.getAttentionLevelCssClass();\n return [this.themeColor, this.size, attentionLevel].filter((cssClass) => !!cssClass);\n }\n\n private getAttentionLevelCssClass() {\n if (this.noDecoration) return;\n const attentionLevelDefault: AttentionLevel = '1';\n return `attention-level${this.attentionLevel || attentionLevelDefault}`;\n }\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 private _showIconOnly: boolean = false;\n get showIconOnly() {\n return this._showIconOnly;\n }\n @Input() set showIconOnly(value: boolean) {\n if (value) {\n // If the button text is supplied as plain text (i.e. as a text node not within an element tag),\n // we need to wrap it in an element to be able to target and hide it with css:\n this.wrapTextNode(this.iconElementRef?.nativeElement);\n }\n this._showIconOnly = value;\n }\n\n @ContentChild(IconComponent, { read: ElementRef })\n iconElementRef?: ElementRef<HTMLElement>;\n\n constructor(private elementRef: ElementRef<HTMLElement>, private renderer: Renderer2) {}\n\n private wrapTextNode(iconElement?: HTMLElement) {\n if (!iconElement) {\n return;\n }\n\n const ifTextNode = (node?: ChildNode): ChildNode | undefined => {\n return node?.nodeType === Node.TEXT_NODE ? node : undefined;\n };\n\n const textNode = ifTextNode(iconElement.previousSibling) || ifTextNode(iconElement.nextSibling);\n if (textNode) {\n const placement = textNode === iconElement.previousSibling ? 'before' : 'after';\n const textWrapper = this.renderer.createElement('span');\n const parent = textNode.parentNode;\n this.renderer.removeChild(textNode.parentNode, textNode);\n this.renderer.appendChild(textWrapper, textNode);\n if (placement === 'before') {\n this.renderer.insertBefore(parent, textWrapper, iconElement);\n } else if (placement === 'after') {\n this.renderer.appendChild(parent, textWrapper);\n }\n }\n }\n\n ngAfterContentInit(): void {\n const iconElement = this.iconElementRef?.nativeElement;\n\n if (iconElement === undefined) {\n // Nothing to do here when there's no icon:\n return;\n }\n\n // Ensure buttons with icon is always shown as icon only inside the toolbar:\n if (this.elementRef.nativeElement.closest('ion-toolbar')) {\n this._showIconOnly = true;\n }\n\n if (this.showIconOnly) {\n // If the button text is supplied as plain text (i.e. as a text node not within an element tag),\n // we need to wrap it in an element to be able to target and hide it with css:\n this.wrapTextNode(iconElement);\n }\n\n const hasText = !!this.elementRef.nativeElement.textContent;\n if (!hasText) {\n // Button doesn't contain any text, make it round:\n this._showIconOnly = true;\n }\n\n if (hasText && !this.showIconOnly) {\n this._isIconLeft =\n this.elementRef.nativeElement.querySelector('.content-layer').firstChild === iconElement;\n this._isIconRight = !this._isIconLeft;\n }\n }\n}\n","<ng-container>\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\"><ng-content></ng-content></span>\n</ng-container>\n<!--\n TODO: Fix globally exposed .state-layer and .content-layer\n \n See: https://github.com/kirbydesign/designsystem/issues/2101\n-->\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-button.mjs","sources":["../../button/src/button.component.ts","../../button/src/button.component.html","../../button/src/kirbydesign-designsystem-button.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n Renderer2,\n} from '@angular/core';\n\nimport { NotificationColor } from '@kirbydesign/core';\n\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\n\nexport enum ButtonSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\nexport type AttentionLevel = '1' | '2' | '3';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n // eslint-disable-next-line @angular-eslint/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 @Input() attentionLevel: AttentionLevel;\n\n @HostBinding('class.no-decoration')\n @Input()\n noDecoration = false;\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.iconElementRef && this.showIconOnly;\n }\n private _isIconLeft = false;\n @HostBinding('class.icon-left')\n public get isIconLeft() {\n return this._isIconLeft && !this.showIconOnly;\n }\n private _isIconRight = false;\n @HostBinding('class.icon-right')\n public get isIconRight() {\n return this._isIconRight && !this.showIconOnly;\n }\n\n @HostBinding('class')\n get _cssClass() {\n const attentionLevel = this.getAttentionLevelCssClass();\n return [this.themeColor, this.size, attentionLevel].filter((cssClass) => !!cssClass);\n }\n\n private getAttentionLevelCssClass() {\n if (this.noDecoration) return;\n const attentionLevelDefault: AttentionLevel = '1';\n return `attention-level${this.attentionLevel || attentionLevelDefault}`;\n }\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 private _showIconOnly: boolean = false;\n get showIconOnly() {\n return this._showIconOnly;\n }\n @Input() set showIconOnly(value: boolean) {\n if (value) {\n // If the button text is supplied as plain text (i.e. as a text node not within an element tag),\n // we need to wrap it in an element to be able to target and hide it with css:\n this.wrapTextNode(this.iconElementRef?.nativeElement);\n }\n this._showIconOnly = value;\n }\n\n @ContentChild(IconComponent, { read: ElementRef })\n iconElementRef?: ElementRef<HTMLElement>;\n\n constructor(private elementRef: ElementRef<HTMLElement>, private renderer: Renderer2) {}\n\n private wrapTextNode(iconElement?: HTMLElement) {\n if (!iconElement) {\n return;\n }\n\n const ifTextNode = (node?: ChildNode): ChildNode | undefined => {\n return node?.nodeType === Node.TEXT_NODE ? node : undefined;\n };\n\n const textNode = ifTextNode(iconElement.previousSibling) || ifTextNode(iconElement.nextSibling);\n if (textNode) {\n const placement = textNode === iconElement.previousSibling ? 'before' : 'after';\n const textWrapper = this.renderer.createElement('span');\n const parent = textNode.parentNode;\n this.renderer.removeChild(textNode.parentNode, textNode);\n this.renderer.appendChild(textWrapper, textNode);\n if (placement === 'before') {\n this.renderer.insertBefore(parent, textWrapper, iconElement);\n } else if (placement === 'after') {\n this.renderer.appendChild(parent, textWrapper);\n }\n }\n }\n\n ngAfterContentInit(): void {\n const iconElement = this.iconElementRef?.nativeElement;\n\n if (iconElement === undefined) {\n // Nothing to do here when there's no icon:\n return;\n }\n\n // Ensure buttons with icon is always shown as icon only inside the toolbar:\n if (this.elementRef.nativeElement.closest('ion-toolbar')) {\n this._showIconOnly = true;\n }\n\n if (this.showIconOnly) {\n // If the button text is supplied as plain text (i.e. as a text node not within an element tag),\n // we need to wrap it in an element to be able to target and hide it with css:\n this.wrapTextNode(iconElement);\n }\n\n const hasText = !!this.elementRef.nativeElement.textContent;\n if (!hasText) {\n // Button doesn't contain any text, make it round:\n this._showIconOnly = true;\n }\n\n if (hasText && !this.showIconOnly) {\n this._isIconLeft =\n this.elementRef.nativeElement.querySelector('.content-layer').firstChild === iconElement;\n this._isIconRight = !this._isIconLeft;\n }\n }\n}\n","<ng-container>\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\"><ng-content></ng-content></span>\n</ng-container>\n<!--\n TODO: Fix globally exposed .state-layer and .content-layer\n \n See: https://github.com/kirbydesign/designsystem/issues/2101\n-->\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -82,10 +82,10 @@ class CalendarHelper {
82
82
  validateNavigateMonthMessage(event) {
83
83
  return event.data.type === 'kirbyCalendarChangeMonth' && typeof event.data.index === 'number';
84
84
  }
85
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CalendarHelper, deps: [{ token: i1.WindowRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
86
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CalendarHelper }); }
85
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarHelper, deps: [{ token: i1.WindowRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
86
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarHelper }); }
87
87
  }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CalendarHelper, decorators: [{
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarHelper, decorators: [{
89
89
  type: Injectable
90
90
  }], ctorParameters: () => [{ type: i1.WindowRef }] });
91
91
 
@@ -464,10 +464,10 @@ class CalendarComponent {
464
464
  const numberOfYears = endYear - startYear;
465
465
  return Array.from({ length: numberOfYears + 1 }, (_, i) => (startYear + i).toString());
466
466
  }
467
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CalendarComponent, deps: [{ token: CalendarHelper }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component }); }
468
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: CalendarComponent, isStandalone: true, selector: "kirby-calendar", inputs: { timezone: "timezone", disableWeekends: "disableWeekends", disablePastDates: "disablePastDates", disableFutureDates: "disableFutureDates", alwaysEnableToday: "alwaysEnableToday", locales: "locales", customLocales: "customLocales", usePopover: "usePopover", yearNavigatorOptions: "yearNavigatorOptions", selectedDate: "selectedDate", disabledDates: "disabledDates", enabledDates: "enabledDates", todayDate: "todayDate", minDate: "minDate", maxDate: "maxDate" }, outputs: { dateChange: "dateChange", dateSelect: "dateSelect", yearSelect: "yearSelect", previousMonthClicked: "previousMonthClicked", nextMonthClicked: "nextMonthClicked" }, host: { properties: { "class.has-year-navigator": "this._hasYearNavigator" } }, providers: [CalendarHelper], viewQueries: [{ propertyName: "calendarContainer", first: true, predicate: ["calendarContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"header\">\n <div class=\"month-navigator\">\n <button\n type=\"button\"\n [disabled]=\"!_canNavigateBack\"\n (click)=\"_changeMonth(-1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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\n type=\"button\"\n [disabled]=\"!_canNavigateForward\"\n (click)=\"_changeMonth(1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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 ></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 }} contain-state-layer\"\n [class.selected]=\"day.isSelected\"\n >\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\">{{ day.date }}</span>\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", styles: ["table{width:100%;border-collapse:collapse;-webkit-user-select:none;user-select:none;margin-bottom:8px}th,td{text-align:center;padding:0}th:first-child,td:first-child{padding-left:8px}th:last-child,td:last-child{padding-right:8px}th{height:50px;border-bottom:1px solid var(--kirby-background-color)}.header,th,td{background-color:transparent}.header{display:flex;justify-content:space-between;margin:8px 8px 0}.month-navigator{display:flex;flex-grow:1;align-items:center;justify-content:space-between}.month-navigator button:disabled{opacity:.5;pointer-events:none}.month-and-year{-webkit-user-select:none;user-select:none}.month-and-year .month{font-weight:700;margin-right:8px}:host(.has-year-navigator) .month-navigator{flex-grow:0}:host(.has-year-navigator) .month-and-year{width:80px;margin:0 8px;text-align:center}:host(.has-year-navigator) .month{margin-right:0}.day{display:inline-flex;align-items:center;justify-content:center;border-radius:20px;width:40px;height:40px;margin:4px 0;color:var(--color, var(--kirby-black));background-color:var(--background-color, transparent)}.day.disabled,.day:not(.selectable){--color: #b4b4b4;pointer-events:none}.day.selectable:not(.current-month){--color: var(--kirby-text-color-semi-dark)}.day.today{color:var(--kirby-medium-contrast);background-color:var(--kirby-medium)}@media (hover: hover){.day.today:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.day.today:active,.day.today.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}.day.selected{color:var(--kirby-black-contrast);background-color:var(--kirby-black)}@media (hover: hover){.day.selected:hover{--state-layer-opacity: .24;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}.day.selected:active,.day.selected.interaction-state-active{--state-layer-opacity: .36;--state-layer-background-color: var(--kirby-black-contrast)}.contain-state-layer{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative}.contain-state-layer .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}.contain-state-layer .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}.contain-state-layer .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){.contain-state-layer:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.contain-state-layer:active,.contain-state-layer.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}\n"], dependencies: [{ kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2.DropdownComponent, selector: "kirby-dropdown", inputs: ["items", "selectedIndex", "focusedIndex", "itemTextProperty", "placeholder", "popout", "attentionLevel", "expand", "disabled", "hasError", "size", "tabindex", "usePopover"], outputs: ["change"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i3.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
467
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarComponent, deps: [{ token: CalendarHelper }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component }); }
468
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CalendarComponent, isStandalone: true, selector: "kirby-calendar", inputs: { timezone: "timezone", disableWeekends: "disableWeekends", disablePastDates: "disablePastDates", disableFutureDates: "disableFutureDates", alwaysEnableToday: "alwaysEnableToday", locales: "locales", customLocales: "customLocales", usePopover: "usePopover", yearNavigatorOptions: "yearNavigatorOptions", selectedDate: "selectedDate", disabledDates: "disabledDates", enabledDates: "enabledDates", todayDate: "todayDate", minDate: "minDate", maxDate: "maxDate" }, outputs: { dateChange: "dateChange", dateSelect: "dateSelect", yearSelect: "yearSelect", previousMonthClicked: "previousMonthClicked", nextMonthClicked: "nextMonthClicked" }, host: { properties: { "class.has-year-navigator": "this._hasYearNavigator" } }, providers: [CalendarHelper], viewQueries: [{ propertyName: "calendarContainer", first: true, predicate: ["calendarContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"header\">\n <div class=\"month-navigator\">\n <button\n type=\"button\"\n [disabled]=\"!_canNavigateBack\"\n (click)=\"_changeMonth(-1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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\n type=\"button\"\n [disabled]=\"!_canNavigateForward\"\n (click)=\"_changeMonth(1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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 ></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 }} contain-state-layer\"\n [class.selected]=\"day.isSelected\"\n >\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\">{{ day.date }}</span>\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", styles: ["table{width:100%;border-collapse:collapse;-webkit-user-select:none;user-select:none;margin-bottom:8px}th,td{text-align:center;padding:0}th:first-child,td:first-child{padding-left:8px}th:last-child,td:last-child{padding-right:8px}th{height:50px;border-bottom:1px solid var(--kirby-background-color)}.header,th,td{background-color:transparent}.header{display:flex;justify-content:space-between;margin:8px 8px 0}.month-navigator{display:flex;flex-grow:1;align-items:center;justify-content:space-between}.month-navigator button:disabled{opacity:.5;pointer-events:none}.month-and-year{-webkit-user-select:none;user-select:none}.month-and-year .month{font-weight:700;margin-right:8px}:host(.has-year-navigator) .month-navigator{flex-grow:0}:host(.has-year-navigator) .month-and-year{width:80px;margin:0 8px;text-align:center}:host(.has-year-navigator) .month{margin-right:0}.day{display:inline-flex;align-items:center;justify-content:center;border-radius:20px;width:40px;height:40px;margin:4px 0;color:var(--color, var(--kirby-black));background-color:var(--background-color, transparent)}.day.disabled,.day:not(.selectable){--color: #b4b4b4;pointer-events:none}.day.selectable:not(.current-month){--color: var(--kirby-text-color-semi-dark)}.day.today{color:var(--kirby-medium-contrast);background-color:var(--kirby-medium)}@media (hover: hover){.day.today:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.day.today:active,.day.today.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}.day.selected{color:var(--kirby-black-contrast);background-color:var(--kirby-black)}@media (hover: hover){.day.selected:hover{--state-layer-opacity: .24;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}.day.selected:active,.day.selected.interaction-state-active{--state-layer-opacity: .36;--state-layer-background-color: var(--kirby-black-contrast)}.contain-state-layer{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative}.contain-state-layer .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}.contain-state-layer .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}.contain-state-layer .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){.contain-state-layer:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.contain-state-layer:active,.contain-state-layer.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}\n"], dependencies: [{ kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2.DropdownComponent, selector: "kirby-dropdown", inputs: ["items", "selectedIndex", "focusedIndex", "itemTextProperty", "placeholder", "popout", "attentionLevel", "expand", "disabled", "hasError", "size", "tabindex", "usePopover"], outputs: ["change"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i3.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
469
469
  }
470
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CalendarComponent, decorators: [{
470
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarComponent, decorators: [{
471
471
  type: Component,
472
472
  args: [{ standalone: true, imports: [DropdownModule, ButtonComponent, IconModule, CommonModule], selector: 'kirby-calendar', providers: [CalendarHelper], template: "<div class=\"header\">\n <div class=\"month-navigator\">\n <button\n type=\"button\"\n [disabled]=\"!_canNavigateBack\"\n (click)=\"_changeMonth(-1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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\n type=\"button\"\n [disabled]=\"!_canNavigateForward\"\n (click)=\"_changeMonth(1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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 ></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 }} contain-state-layer\"\n [class.selected]=\"day.isSelected\"\n >\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\">{{ day.date }}</span>\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", styles: ["table{width:100%;border-collapse:collapse;-webkit-user-select:none;user-select:none;margin-bottom:8px}th,td{text-align:center;padding:0}th:first-child,td:first-child{padding-left:8px}th:last-child,td:last-child{padding-right:8px}th{height:50px;border-bottom:1px solid var(--kirby-background-color)}.header,th,td{background-color:transparent}.header{display:flex;justify-content:space-between;margin:8px 8px 0}.month-navigator{display:flex;flex-grow:1;align-items:center;justify-content:space-between}.month-navigator button:disabled{opacity:.5;pointer-events:none}.month-and-year{-webkit-user-select:none;user-select:none}.month-and-year .month{font-weight:700;margin-right:8px}:host(.has-year-navigator) .month-navigator{flex-grow:0}:host(.has-year-navigator) .month-and-year{width:80px;margin:0 8px;text-align:center}:host(.has-year-navigator) .month{margin-right:0}.day{display:inline-flex;align-items:center;justify-content:center;border-radius:20px;width:40px;height:40px;margin:4px 0;color:var(--color, var(--kirby-black));background-color:var(--background-color, transparent)}.day.disabled,.day:not(.selectable){--color: #b4b4b4;pointer-events:none}.day.selectable:not(.current-month){--color: var(--kirby-text-color-semi-dark)}.day.today{color:var(--kirby-medium-contrast);background-color:var(--kirby-medium)}@media (hover: hover){.day.today:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.day.today:active,.day.today.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}.day.selected{color:var(--kirby-black-contrast);background-color:var(--kirby-black)}@media (hover: hover){.day.selected:hover{--state-layer-opacity: .24;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}.day.selected:active,.day.selected.interaction-state-active{--state-layer-opacity: .36;--state-layer-background-color: var(--kirby-black-contrast)}.contain-state-layer{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative}.contain-state-layer .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}.contain-state-layer .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}.contain-state-layer .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){.contain-state-layer:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.contain-state-layer:active,.contain-state-layer.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}\n"] }]
473
473
  }], ctorParameters: () => [{ type: CalendarHelper }, { type: undefined, decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-calendar.mjs","sources":["../../../../libs/designsystem/calendar/src/helpers/calendar.helper.ts","../../../../libs/designsystem/calendar/src/calendar.component.ts","../../../../libs/designsystem/calendar/src/calendar.component.html","../../../../libs/designsystem/calendar/src/kirbydesign-designsystem-calendar.ts"],"sourcesContent":["import { ElementRef, Injectable } from '@angular/core';\nimport { WindowRef } from '@kirbydesign/designsystem/types';\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 eachDayOfInterval,\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 { CommonModule } from '@angular/common';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\n\nimport { DropdownModule } from '@kirbydesign/designsystem/dropdown';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\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 standalone: true,\n imports: [DropdownModule, ButtonComponent, IconModule, CommonModule],\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 @Output() previousMonthClicked = new EventEmitter<Date>();\n @Output() nextMonthClicked = new EventEmitter<Date>();\n @Input() timezone: 'local' | 'UTC' = 'local';\n @Input() disableWeekends = false;\n @Input() disablePastDates = false;\n @Input() disableFutureDates = false;\n @Input() alwaysEnableToday = false;\n\n @Input() set locales(locales: { [key: string]: Locale }) {\n console.warn(\n `Supplying additional locales to the Kirby Calendar Component via an input property is deprecated and should not be used. \n A future update will allow injecting additional locales via a provider instead.`\n );\n }\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 _enabledDates: 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 | null) {\n const value = this.normalizeDate(valueLocalOrUTC);\n\n if (valueLocalOrUTC) {\n this.setActiveMonth(value);\n }\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 enabledDates(): Date[] {\n return this._enabledDates;\n }\n\n @Input() set enabledDates(value: Date[]) {\n this._enabledDates = (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.locales, ...this.customLocales };\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.enabledDates ||\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 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) => isSameDay(disabledDate, date));\n }\n\n private isEnabledDate(date: Date): boolean {\n return (\n this._enabledDates.length === 0 ||\n this.enabledDates.some((enabledDate) => isSameDay(enabledDate, date))\n );\n }\n\n refreshActiveMonth() {\n if (!this.activeMonth) return;\n\n const monthStart = startOfMonth(this.activeMonth);\n const startOfFirstWeek = startOfWeek(monthStart, { locale: this.locale });\n const today = this.todayDate ? startOfDay(this.todayDate) : startOfDay(new Date());\n\n const totalNumberOfDays = 42; // Always show 42 days (6 weeks) in calendar\n const daysArray = Array.from(Array(totalNumberOfDays).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: CalendarCell = {\n date: cellDate.getDate(),\n monthIndex: cellDate.getMonth(),\n year: cellDate.getFullYear(),\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) || !this.isEnabledDate(date),\n };\n }\n\n private isSelectable(day: CalendarDay, date: Date) {\n return (\n (this.alwaysEnableToday && day.isToday) ||\n (!day.isDisabled &&\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\n if (newDate) {\n this.calendarHelper.setSelectedDay(newDate.getDate());\n }\n }\n\n _onDateSelected(newDay: CalendarCell) {\n if (!newDay.isSelectable) return;\n\n let newDate = new Date(newDay.year, newDay.monthIndex, 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.setActiveMonth(newDate);\n this.onSelectedDateChange(newDate);\n this._selectedDate = newDate;\n this.dateChange.emit(dateToEmit);\n }\n this.dateSelect.emit(dateToEmit);\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 index > 0\n ? this.nextMonthClicked.emit(this.activeMonth)\n : this.previousMonthClicked.emit(this.activeMonth);\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: CalendarCell = null;\n if (date) {\n for (const 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\n type=\"button\"\n [disabled]=\"!_canNavigateBack\"\n (click)=\"_changeMonth(-1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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\n type=\"button\"\n [disabled]=\"!_canNavigateForward\"\n (click)=\"_changeMonth(1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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 ></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 }} contain-state-layer\"\n [class.selected]=\"day.isSelected\"\n >\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\">{{ day.date }}</span>\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAMa,cAAc,CAAA;AAIzB,IAAA,WAAA,CAAoB,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAFhC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;KAEU;AAErC,IAAA,IAAI,CACT,iBAA6B,EAC7B,OAAwB,EACxB,aAAsE,EACtE,aAAsC,EAAA;AAEtC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE;AAC3C,YAAA,MAAM,MAAM,GAAsB,iBAAiB,CAAC,aAAa,CAAC;AAClE,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC1C,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;YAEzC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAmB,KAC1E,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAC7D,CAAC;AACH,SAAA;KACF;AAEM,IAAA,MAAM,CAAC,OAAwB,EAAA;QACpC,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACzC,SAAA;KACF;AAEM,IAAA,cAAc,CAAC,GAAW,EAAA;QAC/B,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAC3B;AACE,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,WAAW,EAAE,GAAG;aACjB,EACD,GAAG,CACJ,CAAC;AACH,SAAA;KACF;AAEO,IAAA,eAAe,CAAC,iBAA6B,EAAA;AACnD,QAAA,QACE,iBAAiB;AACjB,YAAA,iBAAiB,CAAC,aAAa;YAC/B,iBAAiB,CAAC,aAAa,YAAY,iBAAiB;AAC5D,YAAA,iBAAiB,CAAC,aAAa,CAAC,aAAa,EAC7C;KACH;AAEO,IAAA,yBAAyB,CAAC,OAAwB,EAAA;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAC3B;AACE,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,GAAG,OAAO;SACX,EACD,GAAG,CACJ,CAAC;KACH;AAEO,IAAA,kBAAkB,CACxB,KAAmB,EACnB,aAAsE,EACtE,aAAsC,EAAA;AAEtC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI;AACrB,gBAAA,KAAK,0BAA0B;AAC7B,oBAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE;AAC3C,wBAAA,aAAa,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7D,qBAAA;oBACD,MAAM;AACR,gBAAA,KAAK,0BAA0B;AAC7B,oBAAA,IAAI,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE;AAC5C,wBAAA,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,qBAAA;oBACD,MAAM;AACT,aAAA;AACF,SAAA;KACF;AAEO,IAAA,eAAe,CAAC,KAAmB,EAAA;AACzC,QAAA,QACE,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM;YAClC,KAAK,CAAC,IAAI,KAAK,SAAS;AACxB,YAAA,KAAK,CAAC,IAAI;AACV,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,EACf;KACH;AAEO,IAAA,2BAA2B,CAAC,KAAmB,EAAA;AACrD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,0BAA0B,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;KACzE;AAEO,IAAA,4BAA4B,CAAC,KAAmB,EAAA;AACtD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,0BAA0B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC;KAC/F;iIAnGU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAd,cAAc,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACmDX,IAAK,QASJ,CAAA;AATD,CAAA,UAAK,QAAQ,EAAA;AACX,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC/B,CAAC,EATI,QAAQ,KAAR,QAAQ,GASZ,EAAA,CAAA,CAAA,CAAA;MAUY,iBAAiB,CAAA;IAa5B,IAAa,OAAO,CAAC,OAAkC,EAAA;QACrD,OAAO,CAAC,IAAI,CACV,CAAA;AACkF,uFAAA,CAAA,CACnF,CAAC;KACH;AAiCD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAED,IAAa,YAAY,CAAC,eAA4B,EAAA;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAElD,QAAA,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC5B,SAAA;KACF;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IAED,IAAa,aAAa,CAAC,KAAa,EAAA;QACtC,IAAI,CAAC,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7E;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAED,IAAa,YAAY,CAAC,KAAa,EAAA;QACrC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5E;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAa,SAAS,CAAC,KAAW,EAAA;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IAAa,OAAO,CAAC,KAAW,EAAA;AAC9B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IAAa,OAAO,CAAC,KAAW,EAAA;AAC9B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AACjE,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;KAC/E;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;KACxD;AAED;;AAEG;AACH,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,MAAM,wBAAwB,GAC5B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAEhF,QAAA,MAAM,uBAAuB,GAC3B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CAAC;KACrF;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACrD;AAED,IAAA,IACI,iBAAiB,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;KACpC;IAED,WAAoB,CAAA,cAA8B,EAAqB,MAAc,EAAA;QAAjE,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AA9IxC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;AACxC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAChD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ,CAAC;QAC7C,IAAQ,CAAA,QAAA,GAAoB,OAAO,CAAC;QACpC,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAQ1B,IAAa,CAAA,aAAA,GAA8B,EAAE,CAAC;AACvD;;;AAGE;QACO,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAkBpB,IAAc,CAAA,cAAA,GAAW,EAAE,CAAC;QAC5B,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAM3B,IAAe,CAAA,eAAA,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAgG3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;KACtE;IAEO,gBAAgB,CAAC,IAAU,EAAE,YAAoB,EAAA;AACvD,QAAA,OAAO,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,SAAS,CAAC,MAAc,EAAA;QAC9B,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,MAAM,GAAG,MAAM,CAAC;AACjB,SAAA;QACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACjC,QAAA,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7F,QAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;KAC9D;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACxC;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,gBAAgB,EAAE,EACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9B,CAAC;KACH;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IACE,OAAO,CAAC,eAAe;AACvB,YAAA,OAAO,CAAC,gBAAgB;AACxB,YAAA,OAAO,CAAC,kBAAkB;AAC1B,YAAA,OAAO,CAAC,aAAa;AACrB,YAAA,OAAO,CAAC,YAAY;AACpB,YAAA,OAAO,CAAC,OAAO;AACf,YAAA,OAAO,CAAC,OAAO;AACf,YAAA,OAAO,CAAC,SAAS;YACjB,OAAO,CAAC,QAAQ,EAChB;YACA,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACrD,SAAA;KACF;AAEO,IAAA,cAAc,CAAC,IAAA,GAAa,IAAI,IAAI,EAAE,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACrD,SAAA;KACF;;;;;;AAOO,IAAA,aAAa,CAAC,cAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,cAAc;YAAE,OAAO;AAE5B,QAAA,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC,OAAO,EAAE,EAAE;;AAErE,YAAA,OAAO,cAAc,CAAC;AACvB,SAAA;AACD,QAAA,IACE,UAAU,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE;YACvE,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,EAC3D;;YAEA,MAAM,iBAAiB,GAAG,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5E,YAAA,OAAO,iBAAiB,CAAC;AAC1B,SAAA;;AAED,QAAA,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;KACnC;IAEO,WAAW,GAAA;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,iBAAiB,CAAC;AAC7B,YAAA,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChD,YAAA,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7C,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1E;AAEO,IAAA,kCAAkC,CAAC,IAAU,EAAA;QACnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC7C;IAEO,cAAc,CAAC,OAAa,EAAE,YAAkB,EAAA;AACtD,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE;AAC7B,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,IAAI,OAAO,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;KAC1C;AAEO,IAAA,cAAc,CAAC,IAAU,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;KACjF;AAEO,IAAA,aAAa,CAAC,IAAU,EAAA;AAC9B,QAAA,QACE,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EACrE;KACH;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClD,QAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAEnF,QAAA,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAmB,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AACpD,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;AACpE,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAE7D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC1D,YAAA,MAAM,IAAI,GAAiB;AACzB,gBAAA,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE;AACxB,gBAAA,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE;AAC/B,gBAAA,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE;gBAC5B,cAAc,EAAE,GAAG,CAAC,cAAc;gBAClC,YAAY;gBACZ,UAAU;gBACV,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,CAAC;aAC9D,CAAC;AACF,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACnC;AAEO,IAAA,cAAc,CAAC,IAAU,EAAE,KAAW,EAAE,UAAgB,EAAA;QAC9D,OAAO;AACL,YAAA,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;AAC/B,YAAA,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7B,YAAA,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9B,YAAA,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAA,cAAc,EAAE,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC;AAC7C,YAAA,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;SACnE,CAAC;KACH;IAEO,YAAY,CAAC,GAAgB,EAAE,IAAU,EAAA;QAC/C,QACE,CAAC,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC,OAAO;aACrC,CAAC,GAAG,CAAC,UAAU;gBACd,EAAE,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,SAAS,CAAC;gBACxC,EAAE,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC,MAAM,CAAC;gBACtC,EAAE,IAAI,CAAC,kBAAkB,IAAI,GAAG,CAAC,QAAQ,CAAC;AAC1C,gBAAA,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,gBAAA,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EACjD;KACH;AAEO,IAAA,aAAa,CAAC,GAAgB,EAAE,YAAqB,EAAE,UAAmB,EAAA;AAChF,QAAA,MAAM,UAAU,GAAG;YACjB,eAAe,EAAE,GAAG,CAAC,cAAc;YACnC,OAAO,EAAE,GAAG,CAAC,SAAS;YACtB,KAAK,EAAE,GAAG,CAAC,OAAO;AAClB,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,GAAG,CAAC,MAAM;YAChB,QAAQ,EAAE,GAAG,CAAC,UAAU;SACzB,CAAC;QACF,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC5B,YAAA,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACnB,gBAAA,cAAc,IAAI,GAAG,GAAG,GAAG,CAAC;AAC7B,aAAA;AACF,SAAA;AACD,QAAA,OAAO,cAAc,CAAC;KACvB;IAEO,KAAK,CAAC,KAAY,EAAE,IAAY,EAAA;QACtC,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,MAAM,EAAE;AACnB,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrC,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAEO,IAAA,oBAAoB,CAAC,OAAa,EAAA;QACxC,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;AACrC,SAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrC,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC3B,SAAA;AAED,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACvD,SAAA;KACF;AAED,IAAA,eAAe,CAAC,MAAoB,EAAA;QAClC,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,OAAO;AAEjC,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAEpE,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC3B,YAAA,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACnF,SAAA;QAED,MAAM,UAAU,GAAG,OAAO,CAAC;QAE3B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAClC;AAEO,IAAA,aAAa,CAAC,SAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACrD;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9C,QAAA,KAAK,GAAG,CAAC;cACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;cAC5C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtD;AAED,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACnC;IAEO,gBAAgB,CAAC,KAAa,EAAE,IAAc,EAAA;QACpD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,MAAM,qBAAqB,GACzB,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAEzE,QAAA,MAAM,wBAAwB,GAC5B,IAAI,CAAC,OAAO;aACX,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAE5F,QAAA,OAAO,CAAC,qBAAqB,IAAI,CAAC,wBAAwB,CAAC;KAC5D;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,MAAM,uBAAuB,GAC3B,IAAI,CAAC,kBAAkB,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAE3E,QAAA,MAAM,wBAAwB,GAC5B,IAAI,CAAC,OAAO;aACX,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3F,QAAA,OAAO,CAAC,uBAAuB,IAAI,CAAC,wBAAwB,CAAC;KAC9D;AAEO,IAAA,OAAO,CAAC,IAAU,EAAA;QACxB,IAAI,QAAQ,GAAiB,IAAI,CAAC;AAClC,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC9B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AAC3B,oBAAA,OAAO,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3D,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,QAAQ,EAAE;oBACZ,MAAM;AACP,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;IAEO,gBAAgB,GAAA;QACtB,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;YAC5C,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;KACH;AAEO,IAAA,sBAAsB,CAAC,IAAU,EAAA;QACvC,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,kBAAkB,CAAC,CAAC;KACtD;AAEO,IAAA,wBAAwB,CAAC,aAA4B,EAAA;QAC3D,IAAI,aAAa,YAAY,IAAI;AAAE,YAAA,OAAO,aAAa,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3C,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5D;IAEO,oBAAoB,CAAC,SAAe,EAAE,OAAa,EAAA;;QAEzD,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACrF,QAAA,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAC1C,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KACxF;AAvdU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,6CAgJgC,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAhJ1D,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAFjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,cAAc,CAAC,ECzE7B,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wuDA+DA,EDMY,MAAA,EAAA,CAAA,wxFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EAAE,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,6IAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMxD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,EAC1D,QAAA,EAAA,gBAAgB,EAGf,SAAA,EAAA,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,wuDAAA,EAAA,MAAA,EAAA,CAAA,wxFAAA,CAAA,EAAA,CAAA;;0BAkJ0B,MAAM;2BAAC,SAAS,CAAA;yCA/IlB,iBAAiB,EAAA,CAAA;sBAAnE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACvC,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAMG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAQG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAuBO,YAAY,EAAA,CAAA;sBAAxB,KAAK;gBAiBO,aAAa,EAAA,CAAA;sBAAzB,KAAK;gBAQO,YAAY,EAAA,CAAA;sBAAxB,KAAK;gBAQO,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAQO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAWO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAiCF,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,0BAA0B,CAAA;;;AEtNzC;;AAEG;;;;"}
1
+ {"version":3,"file":"kirbydesign-designsystem-calendar.mjs","sources":["../../calendar/src/helpers/calendar.helper.ts","../../calendar/src/calendar.component.ts","../../calendar/src/calendar.component.html","../../calendar/src/kirbydesign-designsystem-calendar.ts"],"sourcesContent":["import { ElementRef, Injectable } from '@angular/core';\nimport { WindowRef } from '@kirbydesign/designsystem/types';\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 eachDayOfInterval,\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 { CommonModule } from '@angular/common';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\n\nimport { DropdownModule } from '@kirbydesign/designsystem/dropdown';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\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 standalone: true,\n imports: [DropdownModule, ButtonComponent, IconModule, CommonModule],\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 @Output() previousMonthClicked = new EventEmitter<Date>();\n @Output() nextMonthClicked = new EventEmitter<Date>();\n @Input() timezone: 'local' | 'UTC' = 'local';\n @Input() disableWeekends = false;\n @Input() disablePastDates = false;\n @Input() disableFutureDates = false;\n @Input() alwaysEnableToday = false;\n\n @Input() set locales(locales: { [key: string]: Locale }) {\n console.warn(\n `Supplying additional locales to the Kirby Calendar Component via an input property is deprecated and should not be used. \n A future update will allow injecting additional locales via a provider instead.`\n );\n }\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 _enabledDates: 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 | null) {\n const value = this.normalizeDate(valueLocalOrUTC);\n\n if (valueLocalOrUTC) {\n this.setActiveMonth(value);\n }\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 enabledDates(): Date[] {\n return this._enabledDates;\n }\n\n @Input() set enabledDates(value: Date[]) {\n this._enabledDates = (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.locales, ...this.customLocales };\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.enabledDates ||\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 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) => isSameDay(disabledDate, date));\n }\n\n private isEnabledDate(date: Date): boolean {\n return (\n this._enabledDates.length === 0 ||\n this.enabledDates.some((enabledDate) => isSameDay(enabledDate, date))\n );\n }\n\n refreshActiveMonth() {\n if (!this.activeMonth) return;\n\n const monthStart = startOfMonth(this.activeMonth);\n const startOfFirstWeek = startOfWeek(monthStart, { locale: this.locale });\n const today = this.todayDate ? startOfDay(this.todayDate) : startOfDay(new Date());\n\n const totalNumberOfDays = 42; // Always show 42 days (6 weeks) in calendar\n const daysArray = Array.from(Array(totalNumberOfDays).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: CalendarCell = {\n date: cellDate.getDate(),\n monthIndex: cellDate.getMonth(),\n year: cellDate.getFullYear(),\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) || !this.isEnabledDate(date),\n };\n }\n\n private isSelectable(day: CalendarDay, date: Date) {\n return (\n (this.alwaysEnableToday && day.isToday) ||\n (!day.isDisabled &&\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\n if (newDate) {\n this.calendarHelper.setSelectedDay(newDate.getDate());\n }\n }\n\n _onDateSelected(newDay: CalendarCell) {\n if (!newDay.isSelectable) return;\n\n let newDate = new Date(newDay.year, newDay.monthIndex, 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.setActiveMonth(newDate);\n this.onSelectedDateChange(newDate);\n this._selectedDate = newDate;\n this.dateChange.emit(dateToEmit);\n }\n this.dateSelect.emit(dateToEmit);\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 index > 0\n ? this.nextMonthClicked.emit(this.activeMonth)\n : this.previousMonthClicked.emit(this.activeMonth);\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: CalendarCell = null;\n if (date) {\n for (const 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\n type=\"button\"\n [disabled]=\"!_canNavigateBack\"\n (click)=\"_changeMonth(-1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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\n type=\"button\"\n [disabled]=\"!_canNavigateForward\"\n (click)=\"_changeMonth(1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\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 ></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 }} contain-state-layer\"\n [class.selected]=\"day.isSelected\"\n >\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\">{{ day.date }}</span>\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}