{"version":3,"file":"kirby-test-org-designsystem.mjs","sources":["../../../../libs/designsystem/src/lib/animation/kirby-animation.ts","../../../../libs/designsystem/src/lib/components/accordion/accordion.directive.ts","../../../../libs/designsystem/src/lib/components/icon/icon-registry.service.ts","../../../../libs/designsystem/src/lib/components/icon/kirby-icon-settings.ts","../../../../libs/designsystem/src/lib/components/icon/icon.component.ts","../../../../libs/designsystem/src/lib/components/icon/icon.component.html","../../../../libs/designsystem/src/lib/components/accordion/accordion-item.component.ts","../../../../libs/designsystem/src/lib/components/accordion/accordion-item.component.html","../../../../libs/designsystem/src/lib/components/shared/resize-observer/resize-observer.factory.ts","../../../../libs/designsystem/src/lib/components/shared/resize-observer/resize-observer.service.ts","../../../../libs/designsystem/src/lib/components/card/card.component.ts","../../../../libs/designsystem/src/lib/components/card/card.component.html","../../../../libs/designsystem/src/lib/components/card/card-header/card-header.component.ts","../../../../libs/designsystem/src/lib/components/card/card-header/card-header.component.html","../../../../libs/designsystem/src/lib/components/button/button.component.ts","../../../../libs/designsystem/src/lib/components/button/button.component.html","../../../../libs/designsystem/src/lib/components/modal/action-sheet/action-sheet.component.ts","../../../../libs/designsystem/src/lib/components/modal/action-sheet/action-sheet.component.html","../../../../libs/designsystem/src/lib/components/modal/services/action-sheet.helper.ts","../../../../libs/designsystem/src/lib/types/window-ref.ts","../../../../libs/designsystem/src/lib/components/empty-state/empty-state.component.ts","../../../../libs/designsystem/src/lib/components/empty-state/empty-state.component.html","../../../../libs/designsystem/src/lib/directives/theme-color/theme-color.directive.ts","../../../../libs/designsystem/src/lib/components/modal/alert/alert.component.ts","../../../../libs/designsystem/src/lib/components/modal/alert/alert.component.html","../../../../libs/designsystem/src/lib/components/modal/services/alert.helper.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal-navigation.service.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.interfaces.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/config/modal-config.helper.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.html","../../../../libs/designsystem/src/lib/helpers/platform.service.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/modal-elements-mover.delegate.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/modal-wrapper.component.ts","../../../../libs/designsystem/src/lib/components/modal/modal-wrapper/modal-wrapper.component.html","../../../../libs/designsystem/src/lib/components/modal/services/modal-animation-builder.service.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.helper.ts","../../../../libs/designsystem/src/lib/components/modal/services/modal.controller.ts","../../../../libs/designsystem/src/lib/components/router-outlet/router-outlet.component.ts","../../../../libs/designsystem/src/lib/components/router-outlet/router-outlet.component.html","../../../../libs/designsystem/src/lib/components/app/app.component.ts","../../../../libs/designsystem/src/lib/components/app/app.component.html","../../../../libs/designsystem/src/lib/components/app/app.module.ts","../../../../libs/designsystem/src/lib/components/avatar/avatar.component.ts","../../../../libs/designsystem/src/lib/components/avatar/avatar.component.html","../../../../libs/designsystem/src/lib/components/angular-component-lib/utils.ts","../../../../libs/designsystem/src/lib/components/web-component-proxies.component.ts","../../../../libs/designsystem/src/lib/components/card/card-footer/card-footer.component.ts","../../../../libs/designsystem/src/lib/components/card/card-footer/card-footer.component.html","../../../../libs/designsystem/src/lib/components/charts/shared/charts.types.ts","../../../../libs/designsystem/src/lib/components/shared/component-loader.directive.ts","../../../../libs/designsystem/src/lib/helpers/merge-deep.ts","../../../../libs/designsystem/src/lib/helpers/element-has-ancestor.ts","../../../../libs/designsystem/src/lib/helpers/chart-config-has-type.ts","../../../../libs/designsystem/src/lib/helpers/index.ts","../../../../libs/designsystem/src/lib/helpers/deep-copy.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-config-service/configs/annotations.config.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-config-service/configs/interaction-functions-extensions.config.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-config-service/configs/type.config.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-config-service/chart-config.service.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-js-service/annotations.delegate.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-config-service/configs/global-defaults.config.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-js-service/configured-chart-js.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-js-service/chart-js.service.ts","../../../../libs/designsystem/src/lib/components/charts/shared/chart-js-service/test-utils.ts","../../../../libs/designsystem/src/lib/components/charts/shared/base-chart/base-chart.component.ts","../../../../libs/designsystem/src/lib/components/charts/shared/base-chart/base-chart.component.html","../../../../libs/designsystem/src/lib/components/charts/chart/chart.component.ts","../../../../libs/designsystem/src/lib/components/charts/stock-chart/stock-chart-js.service.ts","../../../../libs/designsystem/src/lib/components/charts/stock-chart/stock-chart.component.ts","../../../../libs/designsystem/src/lib/components/charts/charts.module.ts","../../../../libs/designsystem/src/lib/components/calendar/helpers/calendar.helper.ts","../../../../libs/designsystem/src/lib/components/item/item.component.ts","../../../../libs/designsystem/src/lib/components/item/item.component.html","../../../../libs/designsystem/src/lib/components/list/list.directive.ts","../../../../libs/designsystem/src/lib/components/popover/popover.component.ts","../../../../libs/designsystem/src/lib/components/dropdown/dropdown.types.ts","../../../../libs/designsystem/src/lib/components/dropdown/keyboard-handler.service.ts","../../../../libs/designsystem/src/lib/components/dropdown/dropdown.component.ts","../../../../libs/designsystem/src/lib/components/dropdown/dropdown.component.html","../../../../libs/designsystem/src/lib/components/calendar/calendar.component.ts","../../../../libs/designsystem/src/lib/components/calendar/calendar.component.html","../../../../libs/designsystem/src/lib/components/item-sliding/item-sliding.component.ts","../../../../libs/designsystem/src/lib/components/item-sliding/item-sliding.component.html","../../../../libs/designsystem/src/lib/helpers/unique-id-generator.helper.ts","../../../../libs/designsystem/src/lib/components/checkbox/checkbox.component.ts","../../../../libs/designsystem/src/lib/components/checkbox/checkbox.component.html","../../../../libs/designsystem/src/lib/components/chip/chip.component.ts","../../../../libs/designsystem/src/lib/components/chip/chip.component.html","../../../../libs/designsystem/src/lib/components/data-table/table/table.component.ts","../../../../libs/designsystem/src/lib/components/data-table/table-row/table-row.component.ts","../../../../libs/designsystem/src/lib/components/data-table/data-table.module.ts","../../../../libs/designsystem/src/lib/components/divider/divider.component.ts","../../../../libs/designsystem/src/lib/components/divider/divider.component.html","../../../../libs/designsystem/src/lib/components/radio/radio.component.ts","../../../../libs/designsystem/src/lib/components/radio/radio.component.html","../../../../libs/designsystem/src/lib/components/radio/radio-group/radio-group.component.ts","../../../../libs/designsystem/src/lib/components/radio/radio-group/radio-group.component.html","../../../../libs/designsystem/src/lib/components/form-field/directives/affix/affix.directive.ts","../../../../libs/designsystem/src/lib/components/form-field/form-field-message/form-field-message.component.ts","../../../../libs/designsystem/src/lib/components/form-field/form-field-message/form-field-message.component.html","../../../../libs/designsystem/src/lib/components/form-field/input-counter/input-counter.component.ts","../../../../libs/designsystem/src/lib/components/form-field/input-counter/input-counter.component.html","../../../../libs/designsystem/src/lib/components/form-field/input/input.component.ts","../../../../libs/designsystem/src/lib/components/form-field/textarea/textarea.component.ts","../../../../libs/designsystem/src/lib/components/form-field/textarea/textarea.component.html","../../../../libs/designsystem/src/lib/components/form-field/form-field.component.ts","../../../../libs/designsystem/src/lib/components/form-field/form-field.component.html","../../../../libs/designsystem/src/lib/components/form-field/directives/date/date-input.directive.ts","../../../../libs/designsystem/src/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.ts","../../../../libs/designsystem/src/lib/components/fab-sheet/fab-sheet.component.ts","../../../../libs/designsystem/src/lib/components/fab-sheet/fab-sheet.component.html","../../../../libs/designsystem/src/lib/components/flag/flag.component.ts","../../../../libs/designsystem/src/lib/scss/scss-helper.ts","../../../../libs/designsystem/src/lib/components/grid/breakpoint-helper.service.ts","../../../../libs/designsystem/src/lib/components/grid/grid.component.ts","../../../../libs/designsystem/src/lib/components/grid/grid.component.html","../../../../libs/designsystem/src/lib/components/grid/grid-card-configuration.ts","../../../../libs/designsystem/src/lib/components/icon/icon.module.ts","../../../../libs/designsystem/src/lib/components/item/label/label.component.ts","../../../../libs/designsystem/src/lib/components/item/label/label.component.html","../../../../libs/designsystem/src/lib/components/item/item.module.ts","../../../../libs/designsystem/src/lib/components/item-group/item-group.component.ts","../../../../libs/designsystem/src/lib/components/item-group/item-group.component.html","../../../../libs/designsystem/src/lib/components/spinner/spinner.component.ts","../../../../libs/designsystem/src/lib/components/spinner/spinner.component.html","../../../../libs/designsystem/src/lib/components/loading-overlay/loading-overlay.service.ts","../../../../libs/designsystem/src/lib/components/loading-overlay/loading-overlay.component.ts","../../../../libs/designsystem/src/lib/components/loading-overlay/loading-overlay.component.html","../../../../libs/designsystem/src/lib/components/list/directives/infinite-scroll.directive.ts","../../../../libs/designsystem/src/lib/components/list/helpers/list-helper.ts","../../../../libs/designsystem/src/lib/components/list/directives/list-item-color.directive.ts","../../../../libs/designsystem/src/lib/components/list/list-item/list-item.component.ts","../../../../libs/designsystem/src/lib/components/list/list-item/list-item.component.html","../../../../libs/designsystem/src/lib/components/list/list.component.ts","../../../../libs/designsystem/src/lib/components/list/list.component.html","../../../../libs/designsystem/src/lib/components/list/list-header/list-header.component.ts","../../../../libs/designsystem/src/lib/components/list/list-header/list-header.component.html","../../../../libs/designsystem/src/lib/components/list/list-section-header/list-section-header.component.ts","../../../../libs/designsystem/src/lib/components/list/list-section-header/list-section-header.component.html","../../../../libs/designsystem/src/lib/components/spinner/spinner.module.ts","../../../../libs/designsystem/src/lib/components/list/list-experimental/list-experimental.component.ts","../../../../libs/designsystem/src/lib/components/list/list-experimental/list-experimental.component.html","../../../../libs/designsystem/src/lib/components/list/list.module.ts","../../../../libs/designsystem/src/lib/components/modal/footer/modal-footer.component.ts","../../../../libs/designsystem/src/lib/components/modal/footer/modal-footer.component.html","../../../../libs/designsystem/src/lib/components/tabs/tab-button/tab-button.events.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.service.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tabs.component.html","../../../../libs/designsystem/src/lib/helpers/line-clamp-helper.ts","../../../../libs/designsystem/src/lib/directives/fit-heading/fit-heading.directive.ts","../../../../libs/designsystem/src/lib/components/page/page.component.ts","../../../../libs/designsystem/src/lib/components/page/page.component.html","../../../../libs/designsystem/src/lib/components/page/page-footer/page-footer.component.ts","../../../../libs/designsystem/src/lib/components/page/page-footer/page-footer.component.html","../../../../libs/designsystem/src/lib/directives/fit-heading/fit-heading.module.ts","../../../../libs/designsystem/src/lib/components/page/page.module.ts","../../../../libs/designsystem/src/lib/components/range/range.component.ts","../../../../libs/designsystem/src/lib/components/range/range.component.html","../../../../libs/designsystem/src/lib/components/router-outlet/router-outlet.module.ts","../../../../libs/designsystem/src/lib/components/reorder-list/reorder-event.ts","../../../../libs/designsystem/src/lib/components/reorder-list/reorder-list.component.ts","../../../../libs/designsystem/src/lib/components/reorder-list/reorder-list.component.html","../../../../libs/designsystem/src/lib/components/section-header/section-header.component.ts","../../../../libs/designsystem/src/lib/components/section-header/section-header.component.html","../../../../libs/designsystem/src/lib/components/segmented-control/segmented-control.component.ts","../../../../libs/designsystem/src/lib/components/segmented-control/segmented-control.component.html","../../../../libs/designsystem/src/lib/components/slide-button/slide-button.component.ts","../../../../libs/designsystem/src/lib/components/slide-button/slide-button.component.html","../../../../libs/designsystem/src/lib/components/slides/slides.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tab-button/tab-button.component.ts","../../../../libs/designsystem/src/lib/components/tabs/tab-button/tab-button.component.html","../../../../libs/designsystem/src/lib/components/tabs/tabs.module.ts","../../../../libs/designsystem/src/lib/components/toast/services/toast.helper.ts","../../../../libs/designsystem/src/lib/components/toast/services/toast.controller.ts","../../../../libs/designsystem/src/lib/components/toggle/toggle.component.ts","../../../../libs/designsystem/src/lib/components/toggle/toggle.component.html","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle-ring.component.ts","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle-ring.component.svg","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle.component.ts","../../../../libs/designsystem/src/lib/components/progress-circle/progress-circle.component.html","../../../../libs/designsystem/src/lib/components/toggle-button/toggle-button.component.ts","../../../../libs/designsystem/src/lib/components/toggle-button/toggle-button.component.html","../../../../libs/designsystem/src/lib/components/toggle-button/toggle-button.module.ts","../../../../libs/designsystem/src/lib/components/page-local-navigation/page-local-navigation.component.ts","../../../../libs/designsystem/src/lib/components/page-local-navigation/page-local-navigation.component.html","../../../../libs/designsystem/src/lib/directives/key-handler/key-handler.directive.ts","../../../../libs/designsystem/src/lib/directives/element-as-button/element-as-button.directive.ts","../../../../libs/designsystem/src/lib/directives/modal-router-link/modal-router-link.directive.ts","../../../../libs/designsystem/src/lib/custom-elements-initializer.ts","../../../../libs/designsystem/src/lib/kirby.module.ts","../../../../libs/designsystem/src/lib/kirby-experimental.module.ts","../../../../libs/designsystem/src/kirby-test-org-designsystem.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\nimport { DesignTokenHelper } from '@kirby-test-org/core';\n\nexport namespace KirbyAnimation {\n  export enum Duration {\n    // Duration in milliseconds\n    QUICK = parseInt(DesignTokenHelper.transitionDuration('quick')),\n    SHORT = parseInt(DesignTokenHelper.transitionDuration('short')),\n    LONG = parseInt(DesignTokenHelper.transitionDuration('long')),\n    EXTRA_LONG = parseInt(DesignTokenHelper.transitionDuration('extraLong')),\n  }\n  export const Easing = DesignTokenHelper.transitionEasings();\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[kirbyAccordion], kirby-accordion',\n  exportAs: 'kirby-accordion',\n})\nexport class AccordionDirective {}\n","import { Injectable } from '@angular/core';\n\nimport { Icon } from './icon-settings';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class IconRegistryService {\n  private iconRegistry = new Map<string, string>();\n\n  public addIcon(iconName: string, svgPath: string): void {\n    if (!this.iconRegistry.has(iconName)) {\n      this.iconRegistry.set(iconName, svgPath);\n    } else {\n      console.warn(`Icon with name: \"${iconName}\" already exists`);\n    }\n  }\n\n  public addIcons(icons: Icon[]): void {\n    if (!icons) {\n      console.error('Icons not defined');\n      return;\n    }\n    icons.forEach((icon) => {\n      this.addIcon(icon.name, icon.svg);\n    });\n  }\n\n  getIcons(): Icon[] {\n    return [...this.iconRegistry].map(\n      (keyValPair) => ({ name: keyValPair[0], svg: keyValPair[1] } as Icon)\n    );\n  }\n\n  getIcon(name: string): Icon {\n    const svg = this.iconRegistry.get(name);\n    return svg ? { name, svg } : undefined;\n  }\n}\n","import { IconSettings } from './icon-settings';\n\n/* eslint-disable */\nexport const kirbyIconSettings: IconSettings = {\n  icons: [\n    { name: 'accounts-outline', svg: 'assets/kirby/icons/svg/accounts-outline.svg' },\n    { name: 'accounts', svg: 'assets/kirby/icons/svg/accounts.svg' },\n    { name: 'add', svg: 'assets/kirby/icons/svg/add.svg' },\n    { name: 'remove', svg: 'assets/kirby/icons/svg/remove.svg' },\n    { name: 'unsubscribe', svg: 'assets/kirby/icons/svg/unsubscribe.svg' },\n    { name: 'arrow-back', svg: 'assets/kirby/icons/svg/arrow-back.svg' },\n    { name: 'arrow-down', svg: 'assets/kirby/icons/svg/arrow-down.svg' },\n    { name: 'arrow-more', svg: 'assets/kirby/icons/svg/arrow-more.svg' },\n    { name: 'arrow-up', svg: 'assets/kirby/icons/svg/arrow-up.svg' },\n    { name: 'attach', svg: 'assets/kirby/icons/svg/attach.svg' },\n    { name: 'backspace', svg: 'assets/kirby/icons/svg/backspace.svg' },\n    { name: 'calendar', svg: 'assets/kirby/icons/svg/calendar.svg' },\n    { name: 'camera', svg: 'assets/kirby/icons/svg/camera.svg' },\n    { name: 'car', svg: 'assets/kirby/icons/svg/car.svg' },\n    { name: 'checkbox-outline', svg: 'assets/kirby/icons/svg/checkbox-outline.svg' },\n    { name: 'checkbox', svg: 'assets/kirby/icons/svg/checkbox.svg' },\n    { name: 'checkmark-selected', svg: 'assets/kirby/icons/svg/checkmark-selected.svg' },\n    { name: 'close', svg: 'assets/kirby/icons/svg/close.svg' },\n    { name: 'cog', svg: 'assets/kirby/icons/svg/cog.svg' },\n    { name: 'coinstack', svg: 'assets/kirby/icons/svg/coinstack.svg' },\n    { name: 'contact', svg: 'assets/kirby/icons/svg/contact.svg' },\n    { name: 'copy', svg: 'assets/kirby/icons/svg/copy.svg' },\n    { name: 'flag', svg: 'assets/kirby/icons/svg/flag.svg' },\n    { name: 'edit', svg: 'assets/kirby/icons/svg/edit.svg' },\n    { name: 'filter', svg: 'assets/kirby/icons/svg/filter.svg' },\n    { name: 'flash-off', svg: 'assets/kirby/icons/svg/flash-off.svg' },\n    { name: 'flash', svg: 'assets/kirby/icons/svg/flash.svg' },\n    { name: 'moneybag', svg: 'assets/kirby/icons/svg/moneybag.svg' },\n    { name: 'help', svg: 'assets/kirby/icons/svg/help.svg' },\n    { name: 'home', svg: 'assets/kirby/icons/svg/home.svg' },\n    { name: 'inbox', svg: 'assets/kirby/icons/svg/inbox.svg' },\n    { name: 'inbox-outline', svg: 'assets/kirby/icons/svg/inbox-outline.svg' },\n    { name: 'information', svg: 'assets/kirby/icons/svg/information.svg' },\n    { name: 'insurance', svg: 'assets/kirby/icons/svg/insurance.svg' },\n    { name: 'investment', svg: 'assets/kirby/icons/svg/investment.svg' },\n    { name: 'kirby', svg: 'assets/kirby/icons/svg/kirby.svg' },\n    { name: 'link', svg: 'assets/kirby/icons/svg/link.svg' },\n    { name: 'log-out', svg: 'assets/kirby/icons/svg/log-out.svg' },\n    { name: 'menu-outline', svg: 'assets/kirby/icons/svg/menu-outline.svg' },\n    { name: 'menu', svg: 'assets/kirby/icons/svg/menu.svg' },\n    { name: 'misc', svg: 'assets/kirby/icons/svg/misc.svg' },\n    { name: 'more', svg: 'assets/kirby/icons/svg/more.svg' },\n    { name: 'move', svg: 'assets/kirby/icons/svg/move.svg' },\n    { name: 'payment-card', svg: 'assets/kirby/icons/svg/payment-card.svg' },\n    { name: 'pension', svg: 'assets/kirby/icons/svg/pension.svg' },\n    { name: 'person-outline', svg: 'assets/kirby/icons/svg/person-outline.svg' },\n    { name: 'person', svg: 'assets/kirby/icons/svg/person.svg' },\n    { name: 'qr', svg: 'assets/kirby/icons/svg/QR.svg' },\n    { name: 'recurring', svg: 'assets/kirby/icons/svg/recurring.svg' },\n    { name: 'salary', svg: 'assets/kirby/icons/svg/salary.svg' },\n    { name: 'search', svg: 'assets/kirby/icons/svg/search.svg' },\n    { name: 'share', svg: 'assets/kirby/icons/svg/share.svg' },\n    { name: 'sort', svg: 'assets/kirby/icons/svg/sort.svg' },\n    { name: 'support', svg: 'assets/kirby/icons/svg/support.svg' },\n    { name: 'swap', svg: 'assets/kirby/icons/svg/swap.svg' },\n    { name: 'trash', svg: 'assets/kirby/icons/svg/trash.svg' },\n    { name: 'foreign-payment', svg: 'assets/kirby/icons/svg/foreign-payment.svg' },\n    { name: 'clock', svg: 'assets/kirby/icons/svg/clock.svg' },\n    { name: 'verify', svg: 'assets/kirby/icons/svg/verify.svg' },\n    { name: 'warning', svg: 'assets/kirby/icons/svg/warning.svg' },\n    { name: 'write-message', svg: 'assets/kirby/icons/svg/write-message.svg' },\n    { name: 'reorder', svg: 'assets/kirby/icons/svg/reorder.svg' },\n    { name: 'accident', svg: 'assets/kirby/icons/svg/accident.svg' },\n    { name: 'health', svg: 'assets/kirby/icons/svg/health.svg' },\n    { name: 'illness', svg: 'assets/kirby/icons/svg/illness.svg' },\n    { name: 'incapacity', svg: 'assets/kirby/icons/svg/incapacity.svg' },\n    { name: 'life', svg: 'assets/kirby/icons/svg/life.svg' },\n    { name: 'help-decoration', svg: 'assets/kirby/icons/svg/help-decoration.svg' },\n    { name: 'information-decoration', svg: 'assets/kirby/icons/svg/information-decoration.svg' },\n    { name: 'notification', svg: 'assets/kirby/icons/svg/notification.svg' },\n    { name: 'transfer-ownership', svg: 'assets/kirby/icons/svg/transfer-ownership.svg' },\n    { name: 'update', svg: 'assets/kirby/icons/svg/update.svg' },\n  ],\n};\n\nexport const defaultIcons = kirbyIconSettings.icons.map((icon) => icon.name);\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\n\nimport { IconRegistryService } from './icon-registry.service';\nimport { Icon } from './icon-settings';\nimport { kirbyIconSettings } from './kirby-icon-settings';\n\nexport enum IconSize {\n  XS = 'xs',\n  SM = 'sm',\n  MD = 'md',\n  LG = 'lg',\n}\n\n@Component({\n  selector: 'kirby-icon',\n  templateUrl: './icon.component.html',\n  styleUrls: ['./icon.component.scss'],\n  // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n  host: { '[class.kirby-icon]': 'true' },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnChanges {\n  defaultIcon: Icon = this.findIcon(kirbyIconSettings.icons, 'cog');\n  private _icon = (this.icon = this.defaultIcon);\n  @HostBinding('class')\n  @Input()\n  size: IconSize | `${IconSize}`;\n\n  @Input() name: string;\n  @Input() customName: string;\n\n  get icon(): Icon {\n    return this._icon;\n  }\n\n  set icon(icon: Icon) {\n    // If icon are not found, set default icon\n    if (!icon && (this.name || this.customName)) {\n      this.warnAboutMissingIcon();\n\n      icon = this.defaultIcon;\n\n      // If default icon are not found\n      if (!icon) {\n        console.warn('Default icon was not found.');\n        return;\n      }\n    }\n\n    // Set icon if it's found\n    if (icon) {\n      this._icon = icon;\n    }\n  }\n\n  private warnAboutMissingIcon(): void {\n    if (this.customName) {\n      console.warn(`Custom icon with name \"${this.customName}\" was not found. \n        Do you have a typo in 'customName' or\n        forgot to configure the custom icon through the 'IconRegistryService'?`);\n    } else {\n      console.warn(`Built-in icon with name \"${this.name}\" was not found. \n        Do you have a typo in 'name' or\n        did you mean to use a custom icon? If so, please use: \n        <kirby-icon customName=\"${this.name}\"></kirby-icon>`);\n    }\n  }\n\n  constructor(private iconRegistryService: IconRegistryService) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.name && changes.name.currentValue) {\n      this.icon = this.findIcon(kirbyIconSettings.icons, changes.name.currentValue);\n    } else if (changes.customName && changes.customName.currentValue) {\n      this.icon = this.iconRegistryService.getIcon(changes.customName.currentValue);\n    }\n  }\n\n  private findIcon(icons, name: string): Icon {\n    return icons.find((icon) => icon.name === name);\n  }\n}\n","<ion-icon [src]=\"icon?.svg\"></ion-icon>\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';\n\n// Counter for generating unique element ids\nlet uniqueId = 0;\n\n@Component({\n  selector: 'kirby-accordion-item',\n  templateUrl: './accordion-item.component.html',\n  styleUrls: ['./accordion-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('isExpanded', [\n      state('true', style({ height: '*', visibility: 'visible' })),\n      state('false', style({ height: '0px', visibility: 'hidden' })),\n      transition('true <=> false', animate('0.2s')),\n    ]),\n  ],\n})\nexport class AccordionItemComponent implements OnChanges {\n  @Input() title: string;\n  @Input() isExpanded: boolean = false;\n  @Input() isDisabled: boolean = false;\n  @Input() disabledTitle: string;\n\n  ngOnChanges(): void {\n    if (this.isDisabled) {\n      this.isExpanded = false;\n    }\n  }\n\n  getTitle() {\n    if (this.isDisabled && !!this.disabledTitle) {\n      return this.disabledTitle;\n    } else {\n      return this.title;\n    }\n  }\n\n  _onToggleExpanded(event: KeyboardEvent) {\n    event.preventDefault();\n    this.isExpanded = !this.isExpanded && !this.isDisabled;\n  }\n\n  // IDs used for a11y labelling\n  _titleId = `kirby-accordion-item-title-${++uniqueId}`;\n  _contentId = `kirby-accordion-item-content-${uniqueId}`;\n}\n","<div class=\"content-layer\">\n  <div\n    (click)=\"_onToggleExpanded($event)\"\n    (keydown.ENTER)=\"_onToggleExpanded($event)\"\n    (keydown.space)=\"_onToggleExpanded($event)\"\n    class=\"header\"\n    role=\"button\"\n    [class.disabled]=\"isDisabled\"\n    tabindex=\"0\"\n    [class.expanded]=\"isExpanded\"\n    [attr.aria-expanded]=\"isExpanded\"\n    [attr.aria-controls]=\"_contentId\"\n    [id]=\"_titleId\"\n  >\n    <span class=\"state-layer\" aria-hidden=\"true\"></span>\n    <div class=\"title\">{{ getTitle() }}</div>\n    <kirby-icon name=\"arrow-down\"></kirby-icon>\n  </div>\n  <div\n    class=\"content\"\n    role=\"region\"\n    [attr.aria-labelledby]=\"_titleId\"\n    [id]=\"_contentId\"\n    [@isExpanded]=\"!!isExpanded\"\n  >\n    <div class=\"content-body\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport { ResizeObserver } from './types/resize-observer';\nimport { ResizeObserverCallback } from './types/resize-observer-callback';\n\ndeclare const ResizeObserver: {\n  prototype: ResizeObserver;\n  new (callback: ResizeObserverCallback): ResizeObserver;\n};\n\n/**\n * Factory that creates a new ResizeObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n  create(callback: ResizeObserverCallback): ResizeObserver | null {\n    return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n  }\n}\n","import { ElementRef, Injectable, NgZone, OnDestroy } from '@angular/core';\n\nimport { ResizeObserver } from './types/resize-observer';\nimport { ResizeObserverEntry } from './types/resize-observer-entry';\nimport { ResizeObserverFactory } from './resize-observer.factory';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n  // IMPORTANT: Keeps track of the existing ResizeObserver so it can be reused for performance.\n  // See: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/z6ienONUb5A/F5-VcUZtBAAJ\n  private observer: ResizeObserver | null;\n  private observedElements = new WeakMap<Element, (entry: ResizeObserverEntry) => void>();\n\n  constructor(private _resizeObserverFactory: ResizeObserverFactory, private zone: NgZone) {\n    this.observer = this._resizeObserverFactory.create((entries) => this.handleResize(entries));\n  }\n\n  observe(\n    elementOrRef: Element | ElementRef<Element>,\n    action: (entry: ResizeObserverEntry) => void\n  ): void {\n    const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n    if (!this.observedElements.has(element)) {\n      if (this.observer) {\n        // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n        this.zone.runOutsideAngular(() => {\n          this.observer.observe(element);\n        });\n      }\n      this.observedElements.set(element, action);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.observer) {\n      // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n      this.zone.runOutsideAngular(() => {\n        this.observer.disconnect();\n      });\n    }\n    this.observedElements = null;\n  }\n\n  unobserve(elementOrRef: Element | ElementRef<Element>) {\n    const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n    if (this.observedElements.has(element)) {\n      if (this.observer) {\n        // IMPORTANT: Has to be run outside the Angular zone, for it to work with ResizeObserver polyfill:\n        this.zone.runOutsideAngular(() => {\n          this.observer.unobserve(element);\n        });\n      }\n      this.observedElements.delete(element);\n    }\n  }\n\n  private handleResize(entries: ResizeObserverEntry[]) {\n    entries.forEach((entry) => {\n      const action = this.observedElements.get(entry.target);\n      if (action) {\n        action(entry);\n      }\n    });\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n} from '@angular/core';\n\nimport { ResizeObserverService } from '../shared/resize-observer/resize-observer.service';\nimport { ResizeObserverEntry } from '../shared/resize-observer/types/resize-observer-entry';\n\n@Component({\n  selector: 'kirby-card',\n  templateUrl: './card.component.html',\n  styleUrls: ['./card.component.scss'],\n})\nexport class CardComponent implements OnInit, OnDestroy {\n  @Input() title: string;\n  @Input() subtitle: string;\n\n  @HostBinding('style.--kirby-card-background-image')\n  _backgroundImage: string;\n\n  @Input()\n  set backgroundImageUrl(value: string) {\n    this._backgroundImage = `url('${value}')`;\n  }\n\n  @Input()\n  hasPadding: boolean;\n\n  private sizesSortedByBreakpoint = this.sortSizesByBreakpoint({\n    small: 360,\n    medium: 720,\n    large: 1024,\n  });\n\n  @Input()\n  set sizes(value: { [size: string]: number }) {\n    if (typeof value === 'string') {\n      console.error(\n        'Sizes property cannot be a string. Please ensure the size property is bound as an expression:\\n[sizes]=\"{...}\"'\n      );\n    }\n    this.sizesSortedByBreakpoint = this.sortSizesByBreakpoint(value);\n  }\n\n  @HostBinding('class.flat')\n  flat: boolean = false;\n  @HostBinding('class.highlighted')\n  highlighted: boolean = false;\n  @Input() set mode(value: 'flat' | 'highlighted') {\n    this.flat = value === 'flat';\n    this.highlighted = value === 'highlighted';\n  }\n\n  @HostBinding('class.interaction-state-make-lighter-and-louder')\n  @Input()\n  hasDarkBackgroundColor: boolean;\n\n  constructor(\n    private elementRef: ElementRef,\n    private resizeObserverService: ResizeObserverService,\n    private renderer: Renderer2\n  ) {}\n\n  ngOnInit() {\n    this.resizeObserverService.observe(this.elementRef, (entry) => this.handleResize(entry));\n  }\n\n  ngOnDestroy() {\n    this.resizeObserverService.unobserve(this.elementRef);\n  }\n\n  private sortSizesByBreakpoint(sizes: { [size: string]: number }): [string, number][] {\n    return Object.entries(sizes).sort(this.compareSizesByBreakpoint);\n  }\n\n  private compareSizesByBreakpoint(a: [string, number], b: [string, number]): number {\n    return a[1] > b[1] ? 1 : b[1] > a[1] ? -1 : 0;\n  }\n\n  private handleResize(entry: ResizeObserverEntry) {\n    const sizeAttributeName = 'size';\n    const smallestBreakpointName = this.sizesSortedByBreakpoint[0][0];\n    const smallestBreakpointWidth = this.sizesSortedByBreakpoint[0][1];\n    if (entry.contentRect.width < smallestBreakpointWidth) {\n      this.renderer.setAttribute(entry.target, sizeAttributeName, `<${smallestBreakpointName}`);\n    } else {\n      this.sizesSortedByBreakpoint.forEach(([size, width]) => {\n        if (entry.contentRect.width >= width) {\n          this.renderer.setAttribute(entry.target, sizeAttributeName, size);\n        }\n      });\n    }\n  }\n}\n","<div class=\"state-layer\" aria-hidden=\"true\"></div>\n<div class=\"content-layer\">\n  <ng-content select=\"kirby-card-header\"></ng-content>\n  <div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n    <ng-content></ng-content>\n  </div>\n  <ng-content select=\"kirby-card-footer\"></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { NotificationColor } from '@kirby-test-org/core';\n\nexport type CardFlagLevel = NotificationColor | 'info' | null;\n\n@Component({\n  selector: 'kirby-card-header',\n  templateUrl: './card-header.component.html',\n  styleUrls: ['./card-header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardHeaderComponent {\n  @Input() title: string;\n  @Input() subtitle: string;\n  @Input() isTitleBold: boolean;\n  @HostBinding('class')\n  @Input()\n  flagged: CardFlagLevel = null;\n}\n","<header>\n  <h2 *ngIf=\"title\" [class.bold]=\"isTitleBold\">{{ title }}</h2>\n  <h4 *ngIf=\"subtitle\">{{ subtitle }}</h4>\n  <ng-content></ng-content>\n</header>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  HostBinding,\n  Input,\n} from '@angular/core';\n\nimport { NotificationColor } from '@kirby-test-org/core';\n\nimport { IconComponent } from '../icon/icon.component';\n\nexport enum ButtonSize {\n  SM = 'sm',\n  MD = 'md',\n  LG = 'lg',\n}\n\nconst ATTENTION_LEVEL_4_DEPRECATION_WARNING =\n  'Deprecation warning: The \"kirby-button\" support for using input property \"attentionLevel\" with the value \"4\" will be removed in a future release of Kirby designsystem. While deprecated, all attention-level 4 buttons will be rendered as attention-level 3.';\n\n@Component({\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  @HostBinding('class.attention-level1')\n  isAttentionLevel1: boolean = true; // Default\n  @HostBinding('class.attention-level2')\n  isAttentionLevel2: boolean;\n  @HostBinding('class.attention-level3')\n  isAttentionLevel3: boolean;\n  @Input() set attentionLevel(level: '1' | '2' | '3' | '4') {\n    this.isAttentionLevel1 = level === '1';\n    this.isAttentionLevel2 = level === '2';\n    this.isAttentionLevel3 = level === '3' || level === '4';\n    if (level === '4') {\n      console.warn(ATTENTION_LEVEL_4_DEPRECATION_WARNING);\n    }\n  }\n\n  @HostBinding('class.no-decoration')\n  hasNoDecoration = false;\n  @Input()\n  set noDecoration(enable: boolean) {\n    this.hasNoDecoration = enable;\n    this.isAttentionLevel1 = !enable;\n    this.isAttentionLevel2 = false;\n    this.isAttentionLevel3 = false;\n  }\n\n  @HostBinding('class.destructive')\n  destructive: boolean = false; // Default\n\n  @HostBinding('class.floating')\n  public get isButtonFloating(): boolean {\n    return this.isFloating;\n  }\n\n  @HostBinding('class.icon-only')\n  public get isIconOnly(): boolean {\n    return !!this.icon && !this.hasText;\n  }\n  private _isIconLeft = false;\n  @HostBinding('class.icon-left')\n  public get isIconLeft() {\n    return this._isIconLeft;\n  }\n  private _isIconRight = false;\n  @HostBinding('class.icon-right')\n  public get isIconRight() {\n    return this._isIconRight;\n  }\n\n  @HostBinding('class')\n  get _cssClass() {\n    return [this.themeColor, this.size].filter((cssClass) => !!cssClass);\n  }\n\n  @Input() set isDestructive(state: boolean) {\n    this.destructive = state;\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  @ContentChild(IconComponent) icon: IconComponent;\n  @ContentChild(IconComponent, { read: ElementRef })\n  iconElementRef: ElementRef<HTMLElement>;\n  private hasText = false;\n\n  constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n  ngAfterContentInit(): void {\n    this.hasText = !!this.elementRef.nativeElement.textContent;\n    if (this.iconElementRef !== undefined && this.hasText) {\n      this._isIconLeft =\n        this.elementRef.nativeElement.querySelector('.content-layer').firstChild ===\n        this.iconElementRef.nativeElement;\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","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ActionSheetItem } from './config/action-sheet-item';\n\n@Component({\n  selector: 'kirby-action-sheet',\n  templateUrl: './action-sheet.component.html',\n  styleUrls: ['./action-sheet.component.scss'],\n})\nexport class ActionSheetComponent {\n  @Input() cancelButtonText = 'Cancel';\n  @Input() hideCancel: boolean = false;\n  @Input() disabled: boolean = false;\n  @Input() header: string;\n  @Input() subheader: string;\n  @Input() items: Array<ActionSheetItem>;\n  @Output() cancel = new EventEmitter();\n  @Output() itemSelect: EventEmitter<ActionSheetItem> = new EventEmitter<ActionSheetItem>();\n\n  onItemSelect(selection: ActionSheetItem) {\n    this.itemSelect.emit(selection);\n  }\n\n  onCancel() {\n    this.cancel.emit();\n  }\n}\n","<kirby-card>\n  <kirby-card-header *ngIf=\"header\" [title]=\"header\" [isTitleBold]=\"true\" [subtitle]=\"subheader\">\n  </kirby-card-header>\n  <button\n    kirby-button\n    expand=\"block\"\n    size=\"lg\"\n    [noDecoration]=\"true\"\n    (click)=\"onItemSelect(item)\"\n    *ngFor=\"let item of items\"\n  >\n    {{ item.text }}\n  </button>\n</kirby-card>\n<button\n  *ngIf=\"!hideCancel\"\n  kirby-button\n  class=\"cancel-btn\"\n  size=\"lg\"\n  attentionLevel=\"2\"\n  (click)=\"onCancel()\"\n>\n  {{ cancelButtonText }}\n</button>\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\nimport { Subscription } from 'rxjs';\n\nimport { ActionSheetComponent } from '../action-sheet/action-sheet.component';\nimport { ActionSheetConfig } from '../action-sheet/config/action-sheet-config';\nimport { ActionSheetItem } from '../action-sheet/config/action-sheet-item';\n\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ActionSheetHelper {\n  constructor(private ionicModalController: ModalController) {}\n\n  public async showActionSheet(config: ActionSheetConfig): Promise<Overlay> {\n    const cancel = new EventEmitter();\n    const itemSelect = new EventEmitter<ActionSheetItem>();\n\n    const ionModal = await this.ionicModalController.create({\n      component: ActionSheetComponent,\n      cssClass: ['kirby-overlay', 'kirby-action-sheet'],\n      componentProps: {\n        ...config,\n        cancel: cancel,\n        itemSelect: itemSelect,\n      },\n      backdropDismiss: true,\n    });\n\n    // Remove 'modal-shadow' element as we are no longer able to hide it with CSS in Ionic 6.\n    // We need to remove it so it does not obstruct the backdrop-click to dismiss functionality.\n    ionModal.shadowRoot.querySelector('.modal-shadow').remove();\n\n    const cancelSubscription: Subscription = cancel.subscribe(() => ionModal.dismiss());\n    const itemSelectSubscription: Subscription = itemSelect.subscribe((item) =>\n      ionModal.dismiss(item)\n    );\n    const onDidDismiss = ionModal.onDidDismiss();\n    onDidDismiss.then((_) => {\n      cancelSubscription.unsubscribe();\n      itemSelectSubscription.unsubscribe();\n    });\n\n    await ionModal.present();\n    return {\n      dismiss: ionModal.dismiss.bind(ionModal),\n      onWillDismiss: ionModal.onWillDismiss(),\n      onDidDismiss: ionModal.onDidDismiss(),\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class WindowRef {\n  get nativeWindow(): any {\n    return window;\n  }\n}\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  Input,\n  QueryList,\n} from '@angular/core';\n\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n  selector: 'kirby-empty-state',\n  templateUrl: './empty-state.component.html',\n  styleUrls: ['./empty-state.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateComponent implements AfterContentInit {\n  @Input() iconName: string;\n  @Input() customIconName: string;\n  @Input() title: string;\n  @Input() subtitle: string;\n\n  @ContentChildren(ButtonComponent)\n  private slottedButtons: QueryList<ButtonComponent>;\n\n  ngAfterContentInit() {\n    this.enforceAttentionLevelRules();\n\n    /* setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when changing attention \n    levels of slotted buttons in this.enforceAttentionLevelRules */\n    this.slottedButtons.changes.subscribe(() => {\n      setTimeout(() => this.enforceAttentionLevelRules());\n    });\n  }\n\n  /** Enforces that all slotted buttons will have their attention\n   * level set to 3, except the first button if it has\n   * level 1.\n   */\n  private enforceAttentionLevelRules() {\n    this.slottedButtons.forEach((button, index) => {\n      if (index === 0 && button.isAttentionLevel1) return;\n\n      if (!button.isAttentionLevel3) {\n        button.attentionLevel = '3';\n      }\n    });\n  }\n}\n","<article>\n  <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n    <kirby-icon [name]=\"iconName\" [customName]=\"customIconName\" size=\"lg\"></kirby-icon>\n  </div>\n  <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n  <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n  <div class=\"content\">\n    <ng-content></ng-content>\n  </div>\n</article>\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nimport { ColorHelper } from '@kirby-test-org/core';\nimport { ThemeColor } from '@kirby-test-org/core';\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: `kirby-avatar[themeColor],\n             kirby-card[themeColor],\n             kirby-icon[themeColor],\n             kirby-progress-circle-ring[themeColor],\n             kirby-modal-footer[themeColor],\n             kirby-empty-state[themeColor]`,\n})\nexport class ThemeColorDirective {\n  private _isDefault = true;\n  @HostBinding('class.default')\n  get isDefault() {\n    return this._isDefault;\n  }\n\n  private _isPrimary: boolean;\n  @HostBinding('class.primary')\n  get isPrimary() {\n    return this._isPrimary;\n  }\n\n  private _isSecondary: boolean;\n  @HostBinding('class.secondary')\n  get isSecondary() {\n    return this._isSecondary;\n  }\n\n  private _isTertiary: boolean;\n  @HostBinding('class.tertiary')\n  get isTertiary() {\n    return this._isTertiary;\n  }\n\n  private _isSuccess: boolean;\n  @HostBinding('class.success')\n  get isSuccess() {\n    return this._isSuccess;\n  }\n\n  private _isWarning: boolean;\n  @HostBinding('class.warning')\n  get isWarning() {\n    return this._isWarning;\n  }\n\n  private _isDanger: boolean;\n  @HostBinding('class.danger')\n  get isDanger() {\n    return this._isDanger;\n  }\n\n  private _isLight: boolean;\n  @HostBinding('class.light')\n  get isLight() {\n    return this._isLight;\n  }\n\n  private _isMedium: boolean;\n  @HostBinding('class.medium')\n  get isMedium() {\n    return this._isMedium;\n  }\n\n  private _isDark: boolean;\n  @HostBinding('class.dark')\n  get isDark() {\n    return this._isDark;\n  }\n\n  private _isWhite: boolean;\n  @HostBinding('class.white')\n  get isWhite() {\n    return this._isWhite;\n  }\n\n  private _isBrightnessWhite: boolean;\n  @HostBinding('class.kirby-color-brightness-white')\n  get isBrightnessWhite() {\n    return this._isBrightnessWhite;\n  }\n\n  private _isBrightnessLight: boolean;\n  @HostBinding('class.kirby-color-brightness-light')\n  get isBrightnessLight() {\n    return this._isBrightnessLight;\n  }\n\n  private _isBrightnessDark: boolean;\n  @HostBinding('class.kirby-color-brightness-dark')\n  get isBrightnessDark() {\n    return this._isBrightnessDark;\n  }\n\n  @Input() set themeColor(value: ThemeColor) {\n    this._isDefault = !value;\n    this._isPrimary = value === 'primary';\n    this._isSecondary = value === 'secondary';\n    this._isTertiary = value === 'tertiary';\n    this._isSuccess = value === 'success';\n    this._isWarning = value === 'warning';\n    this._isDanger = value === 'danger';\n    this._isLight = value === 'light';\n    this._isMedium = value === 'medium';\n    this._isDark = value === 'dark';\n    this._isWhite = value === 'white';\n    const colorBrightness = ColorHelper.getColorBrightness(value);\n    this._isBrightnessWhite = colorBrightness === 'white';\n    this._isBrightnessLight = colorBrightness === 'light';\n    this._isBrightnessDark = colorBrightness === 'dark';\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  ViewChild,\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { WindowRef } from '../../../types/window-ref';\n\n@Component({\n  selector: 'kirby-alert',\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.scss'],\n  // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n  host: { '[class.ion-page]': 'false' }, //Ensure ion-page class doesn't get applied by Ionic Modal Controller\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertComponent implements AfterViewInit {\n  readonly BLUR_WRAPPER_DELAY_IN_MS = 50;\n  @ViewChild('alertWrapper', { static: true }) private alertWrapper: ElementRef;\n  private scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n\n  title$: Observable<string>;\n  @Input()\n  set title(title: string | Observable<string>) {\n    this.title$ = typeof title === 'string' ? of(title) : title;\n  }\n\n  message$: Observable<string>;\n  @Input()\n  set message(message: string & Observable<string>) {\n    this.message$ = typeof message === 'string' ? of(message) : message;\n  }\n\n  @Input() iconName: string;\n  @Input() iconThemeColor: string;\n  @Input() okBtn: string;\n  @Input() okBtnIsDestructive: boolean;\n  @Input() cancelBtn: string;\n\n  constructor(private elementRef: ElementRef<HTMLElement>, private windowRef: WindowRef) {}\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.alertWrapper.nativeElement.focus();\n      this.alertWrapper.nativeElement.blur();\n    }, this.BLUR_WRAPPER_DELAY_IN_MS);\n  }\n\n  onFocusChange() {\n    // This fixes an undesired scroll behaviour occurring on keyboard-tabbing\n    this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n  }\n\n  onCancel() {\n    const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n    ionModalElement && ionModalElement.dismiss(false);\n  }\n\n  onOk() {\n    const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n    ionModalElement && ionModalElement.dismiss(true);\n  }\n}\n","<article #alertWrapper>\n  <kirby-empty-state\n    [iconName]=\"iconName\"\n    [themeColor]=\"iconThemeColor\"\n    [title]=\"title$ | async\"\n    [subtitle]=\"message$ | async\"\n  ></kirby-empty-state>\n  <div class=\"buttongroup\">\n    <button\n      kirby-button\n      *ngIf=\"cancelBtn\"\n      attentionLevel=\"3\"\n      class=\"cancel-btn\"\n      (click)=\"onCancel()\"\n    >\n      {{ cancelBtn }}\n    </button>\n    <button\n      kirby-button\n      [size]=\"cancelBtn ? null : 'lg'\"\n      attentionLevel=\"1\"\n      class=\"ok-btn\"\n      [isDestructive]=\"okBtnIsDestructive\"\n      (click)=\"onOk()\"\n    >\n      {{ okBtn }}\n    </button>\n  </div>\n</article>\n","import { Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\n\nimport { AlertComponent } from '../alert/alert.component';\nimport { AlertConfig } from '../alert/config/alert-config';\n\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class AlertHelper {\n  constructor(private ionicModalController: ModalController) {}\n\n  public async showAlert(config: AlertConfig): Promise<Overlay> {\n    const ionModal = await this.ionicModalController.create({\n      component: AlertComponent,\n      componentProps: this.getComponentProps(config),\n      cssClass: ['kirby-overlay', 'kirby-alert'],\n      mode: 'ios',\n      backdropDismiss: false,\n    });\n\n    await ionModal.present();\n    return {\n      dismiss: ionModal.dismiss.bind(ionModal),\n      onWillDismiss: ionModal.onWillDismiss(),\n      onDidDismiss: ionModal.onDidDismiss(),\n    };\n  }\n\n  private getComponentProps(config: AlertConfig) {\n    return {\n      ...config,\n      okBtn: this.getOkBtn(config),\n      cancelBtn: config.cancelBtn,\n      okBtnIsDestructive: this.getOkBtnIsDestructive(config),\n      iconName: config.icon && config.icon.name,\n      iconThemeColor: config.icon && config.icon.themeColor,\n    };\n  }\n\n  private getOkBtn(config: AlertConfig) {\n    let text: string;\n\n    if (config.okBtn) {\n      if (typeof config.okBtn === 'string') {\n        text = config.okBtn;\n      } else {\n        text = config.okBtn.text;\n      }\n    }\n    return text;\n  }\n\n  getOkBtnIsDestructive(config) {\n    return typeof config.okBtn === 'object' ? config.okBtn.isDestructive : undefined;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Params, Route, Router, Routes } from '@angular/router';\nimport { EMPTY, Observable } from 'rxjs';\nimport { filter, first, map, pairwise, startWith } from 'rxjs/operators';\n\nimport { ModalRouteActivation } from './modal.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalNavigationService {\n  constructor(private router: Router, private route: ActivatedRoute) {}\n\n  isModalRoute(url: string): boolean {\n    return url.includes('(modal:');\n  }\n\n  private getCurrentActivatedRoute(): ActivatedRoute {\n    let childRoute = this.route.root;\n    while (childRoute.firstChild) {\n      childRoute = childRoute.firstChild;\n    }\n    return childRoute;\n  }\n\n  private async getModalRoutes(\n    routeConfig: Routes[],\n    moduleRootRoutePath?: string\n  ): Promise<string[]> {\n    const flattenedRoutes: Routes = [].concat(...routeConfig);\n    let modalRoutes: string[] = [];\n    const moduleRootPaths = await this.getModuleRootPath(flattenedRoutes, moduleRootRoutePath);\n    if (moduleRootPaths) {\n      modalRoutes = this.getModalRoutePaths(flattenedRoutes, moduleRootPaths);\n    }\n    return modalRoutes;\n  }\n\n  private async getModuleRootPath(routes: Routes, moduleRootRoutePath?: string): Promise<string[]> {\n    if (moduleRootRoutePath) {\n      const trimmedPaths = moduleRootRoutePath\n        .trim()\n        .split('/')\n        .filter((path) => !!path);\n      const rootPath = [''];\n      return rootPath.concat(trimmedPaths);\n    }\n\n    const currentRoutePaths = await this.getCurrentRoutePaths();\n    const moduleRootPaths = this.getRoutePathsWithoutChildSegments(currentRoutePaths, routes);\n    return moduleRootPaths;\n  }\n\n  private async getCurrentRoutePaths(): Promise<string[]> {\n    const rootPath = [''];\n    const currentNavigation = this.router.getCurrentNavigation();\n\n    if (!this.router.navigated && !currentNavigation) {\n      // If router hasn't navigated yet and we are not in the middle of navigating, assume root:\n      return rootPath;\n    }\n\n    if (currentNavigation) {\n      // Wait for current navigation to finish:\n      await this.navigationEndListener$.pipe(first()).toPromise();\n    }\n\n    let childRoute = this.route.snapshot.root;\n    while (childRoute.firstChild) {\n      childRoute = childRoute.firstChild;\n    }\n    const currentBackdropRoutePath = childRoute.pathFromRoot.filter(\n      (route) => route.outlet !== 'modal'\n    );\n\n    return rootPath.concat(\n      ...currentBackdropRoutePath.map((route) =>\n        route.url.filter((segment) => !!segment.path).map((segment) => segment.path)\n      )\n    );\n  }\n\n  private getRoutePathsWithoutChildSegments(routePaths: string[], routes: Routes): string[] {\n    if (!routePaths.length) return routePaths;\n\n    const matchedChildRoute = this.findChildRouteForUrl(routePaths.join('/'), routes);\n\n    if (!matchedChildRoute) return routePaths;\n\n    const startSlashRegex = /^\\//;\n    const relativeChildRoute = matchedChildRoute.replace(startSlashRegex, '');\n    const childSegmentCount = relativeChildRoute.split('/').length;\n    const routePathsWithoutChildSegments = routePaths.slice(0, -childSegmentCount); // Remove child segments from end of route path array\n    return routePathsWithoutChildSegments;\n  }\n\n  private findChildRouteForUrl(url: string, routes: Routes) {\n    const moduleRelativePaths = this.getRoutePaths(routes, ['']).sort().reverse(); // Ensure child paths are evaluated first\n    let matchedChildRoute = moduleRelativePaths.find((path) => url.endsWith(path));\n    if (!matchedChildRoute) {\n      // No static child route found matching current route - look for child route with url params:\n      const exactMatch = false;\n      matchedChildRoute = moduleRelativePaths.find(\n        (path) =>\n          path.includes('/:') && this.pathContainsChildRouteWithUrlParams(url, path, exactMatch)\n      );\n    }\n    return matchedChildRoute;\n  }\n\n  private pathContainsChildRouteWithUrlParams(\n    path: string,\n    childRouteWithUrlParams: string,\n    exactMatch: boolean\n  ) {\n    const pathSegments = path.split('/');\n    const startSlashRegex = /^\\//;\n    let childRouteToMatch = childRouteWithUrlParams;\n    if (!exactMatch) {\n      const relativeChildRoute = childRouteWithUrlParams.replace(startSlashRegex, '');\n      childRouteToMatch = relativeChildRoute;\n    }\n    const childRouteSegments = childRouteToMatch.split('/');\n    // Match each child route segment against url\n    // Match backwards from end to start of child route, i.e. \"url ends with child route\":\n    const pathContainsChildRoute = childRouteSegments.reverse().every((childRouteSegment) => {\n      const pathSegment = pathSegments.pop();\n      // url params (e.g. `/:id/`) are treated as a match:\n      return childRouteSegment.startsWith(':') || childRouteSegment === pathSegment;\n    });\n    if (exactMatch) {\n      // Only match if we've reached the start of the url to match against:\n      return pathSegments.length === 0 && pathContainsChildRoute;\n    }\n    return pathContainsChildRoute;\n  }\n\n  private getRoutePaths(routes: Routes, parentPath: string[]): string[] {\n    return Array.isArray(routes)\n      ? ([] as string[]).concat(...routes.map((route) => this.getRoutePath(route, parentPath)))\n      : [];\n  }\n\n  private getRoutePath(route: Route, parentPath: string[]): string[] {\n    const routes: string[] = [];\n    if (route.outlet) return routes; // Don't return relative paths for outlet routes\n\n    const currentPath = [...parentPath];\n    if (route.path) {\n      currentPath.push(route.path);\n      routes.push(currentPath.join('/'));\n    }\n\n    return routes.concat(this.getRoutePaths(route.children, currentPath));\n  }\n\n  private getModalRoutePath(route: Route, parentPath: string[]): string[] {\n    const modalOutletName = 'modal';\n    if (!!route.path && route.outlet === modalOutletName) {\n      const modalOutletPath = `(${modalOutletName}:${route.path})`;\n      const modalRoutePath = [...parentPath, modalOutletPath].join('/');\n      return [modalRoutePath];\n    }\n    const currentPath = [...parentPath];\n    if (route.path) {\n      currentPath.push(route.path);\n    }\n    return ([] as string[]).concat(...this.getModalRoutePaths(route.children, currentPath));\n  }\n\n  private getModalRoutePaths(routes: Routes, parentPath: string[]): string[] {\n    return Array.isArray(routes)\n      ? ([] as string[]).concat(...routes.map((route) => this.getModalRoutePath(route, parentPath)))\n      : [];\n  }\n\n  private isNewModalWindow(navigationEnd: NavigationEnd): boolean {\n    const currentNavigation = this.router.getCurrentNavigation();\n    if (!currentNavigation || !currentNavigation.previousNavigation) {\n      return true;\n    }\n    const previousRoutePath = (\n      currentNavigation.previousNavigation.finalUrl ||\n      currentNavigation.previousNavigation.extractedUrl\n    ).toString();\n    const wasModalRoute = this.isModalRoute(previousRoutePath);\n    const isModalRoute = this.isModalRoute(navigationEnd.urlAfterRedirects);\n    if (!wasModalRoute && isModalRoute) {\n      return true;\n    }\n\n    const currentModalRouteParent = navigationEnd.urlAfterRedirects.split('/(modal:')[0];\n    const previousModalRouteParent = previousRoutePath.split('/(modal:')[0];\n\n    return previousModalRouteParent !== currentModalRouteParent;\n  }\n\n  private navigationEndListener$ = this.router.events.pipe(\n    filter((event): event is NavigationEnd => event instanceof NavigationEnd)\n  );\n\n  private async waitForCurrentThenGetNavigationEndStream(): Promise<Observable<NavigationEnd>> {\n    if (this.router.getCurrentNavigation()) {\n      const currentNavigationEnd = await this.navigationEndListener$.pipe(first()).toPromise();\n      return this.navigationEndListener$.pipe(startWith(currentNavigationEnd));\n    }\n    return this.navigationEndListener$;\n  }\n\n  private modalRouteActivatedFor(\n    navigationEnd$: Observable<NavigationEnd>,\n    modalRouteSet: Set<string>,\n    modalRoutesContainsUrlParams: boolean\n  ): Observable<ModalRouteActivation> {\n    return navigationEnd$.pipe(\n      filter((navigationEnd) =>\n        this.modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams)\n      ),\n      map((navigationEnd) => ({\n        route: this.getCurrentActivatedRoute(),\n        isNewModal: this.isNewModalWindow(navigationEnd),\n      }))\n    );\n  }\n\n  private modalRouteDeactivatedFor(\n    navigationEnd$: Observable<NavigationEnd>,\n    modalRouteSet: Set<string>,\n    modalRoutesContainsUrlParams: boolean\n  ): Observable<boolean> {\n    return navigationEnd$.pipe(\n      pairwise(),\n      filter(([prevNavigation, _]) =>\n        this.modalRouteSetContainsPath(modalRouteSet, prevNavigation, modalRoutesContainsUrlParams)\n      ), // Only emit if previous route was modal\n      map(([_, currentNavigation]) => {\n        const isNewModalRoute = this.isModalRoute(currentNavigation.urlAfterRedirects);\n        // Deactivate modal route if new route is NOT modal OR is outside current parent route:\n        return !isNewModalRoute || this.isNewModalWindow(currentNavigation);\n      }),\n      filter((isDeactivation) => isDeactivation)\n    );\n  }\n\n  private modalRouteSetContainsPath(\n    modalRouteSet: Set<string>,\n    navigationEnd: NavigationEnd,\n    modalRoutesContainsUrlParams: boolean\n  ) {\n    const pathname = navigationEnd.urlAfterRedirects.split('?')[0];\n    let hasRoute = modalRouteSet.has(pathname);\n    if (!hasRoute && modalRoutesContainsUrlParams) {\n      // Use `for ... of` instead of `forEach` so we can break out of the loop if route is found:\n      for (const route of modalRouteSet) {\n        const exactMatch = true;\n        const routeMatchesPath = this.pathContainsChildRouteWithUrlParams(\n          pathname,\n          route,\n          exactMatch\n        );\n        if (routeMatchesPath) {\n          hasRoute = true;\n          break;\n        }\n      }\n    }\n    return hasRoute;\n  }\n\n  async getModalNavigation(\n    routeConfig: Routes[],\n    moduleRootRoutePath?: string\n  ): Promise<{ activated$: Observable<ModalRouteActivation>; deactivated$: Observable<boolean> }> {\n    if (Array.isArray(routeConfig)) {\n      const navigationEnd$ = await this.waitForCurrentThenGetNavigationEndStream();\n      const modalRoutes = await this.getModalRoutes(routeConfig, moduleRootRoutePath);\n      const hasModalRoutes = modalRoutes.length > 0;\n      if (hasModalRoutes) {\n        const modalRoutesContainsUrlParams = modalRoutes.some((route) => route.includes('/:'));\n        const modalRouteSet = new Set(modalRoutes);\n        const activated$ = this.modalRouteActivatedFor(\n          navigationEnd$,\n          modalRouteSet,\n          modalRoutesContainsUrlParams\n        );\n        const deactivated$ = this.modalRouteDeactivatedFor(\n          navigationEnd$,\n          modalRouteSet,\n          modalRoutesContainsUrlParams\n        );\n        return { activated$, deactivated$ };\n      }\n    }\n    return { activated$: EMPTY, deactivated$: EMPTY };\n  }\n\n  async navigateToModal(path: string | string[], queryParams?: Params): Promise<boolean> {\n    const commands = Array.isArray(path) ? path : path.split('/');\n    const childPath = commands.pop();\n    const result = await this.router.navigate([...commands, { outlets: { modal: [childPath] } }], {\n      queryParams,\n      relativeTo: this.getCurrentActivatedRoute(),\n    });\n    return result;\n  }\n\n  async navigateWithinModal(relativePath: string, queryParams?: Params): Promise<boolean> {\n    return this.router.navigate([relativePath], {\n      queryParams,\n      relativeTo: this.getCurrentActivatedRoute(),\n    });\n  }\n\n  async navigateOutOfModalOutlet(): Promise<boolean> {\n    let result = Promise.resolve(true);\n    const currentActivatedRoute = this.getCurrentActivatedRoute();\n    if (currentActivatedRoute.outlet === 'modal') {\n      const parentRoute = this.getBackdropRoute(currentActivatedRoute);\n      result = this.router.navigate(['./'], {\n        relativeTo: parentRoute,\n      });\n    }\n    return result;\n  }\n\n  private getBackdropRoute(currentActivatedRoute: ActivatedRoute) {\n    let parentRoute = currentActivatedRoute.parent;\n    while (parentRoute && !parentRoute.component && !!parentRoute.parent) {\n      parentRoute = parentRoute.parent;\n    }\n    return parentRoute;\n  }\n}\n","import { AfterViewInit, Component, ElementRef, OnDestroy, Optional } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\n\nexport interface OverlayEventDetail<T = any> {\n  data?: T;\n  role?: string;\n}\n\nexport interface Overlay {\n  dismiss: (data?: any) => Promise<boolean>;\n  onWillDismiss: Promise<OverlayEventDetail>;\n  onDidDismiss: Promise<OverlayEventDetail>;\n}\n\nexport interface ModalRouteActivation {\n  route: ActivatedRoute;\n  isNewModal: boolean;\n}\n\nexport abstract class Modal {\n  didPresent: Promise<void>;\n  willClose: Promise<void>;\n  close: (data?: any) => Promise<void>;\n  scrollToTop: (scrollDuration?: KirbyAnimation.Duration) => void;\n  scrollToBottom: (scrollDuration?: KirbyAnimation.Duration) => void;\n  scrollDisabled: boolean;\n}\nexport enum ModalElementType {\n  PAGE_PROGRESS,\n  FOOTER,\n  TITLE,\n}\n\nexport abstract class ModalElementsAdvertiser {\n  addModalElement: (type: ModalElementType, elementRef: ElementRef<HTMLElement>) => void;\n  removeModalElement: (type: ModalElementType, elementRef: ElementRef<HTMLElement>) => void;\n}\n\n@Component({ template: '' })\nexport abstract class ModalElementComponent implements AfterViewInit, OnDestroy {\n  private get isContainedInModal() {\n    return this.modalElementsAdvertiser !== null;\n  }\n\n  constructor(\n    private modalElementType: ModalElementType,\n    private elementRef: ElementRef<HTMLElement>,\n    @Optional() private modalElementsAdvertiser: ModalElementsAdvertiser\n  ) {}\n\n  ngAfterViewInit() {\n    if (this.isContainedInModal) {\n      this.modalElementsAdvertiser.addModalElement(this.modalElementType, this.elementRef);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.isContainedInModal) {\n      this.modalElementsAdvertiser.removeModalElement(this.modalElementType, this.elementRef);\n    }\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const COMPONENT_PROPS = new InjectionToken<string>('componentProps');\n","import { Component, ElementRef, HostListener, Injector, Input, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { WindowRef } from '../../../../types/window-ref';\nimport { Modal } from '../../services/modal.interfaces';\nimport { ModalConfig } from '../config/modal-config';\nimport { COMPONENT_PROPS } from '../config/modal-config.helper';\n\n@Component({\n  selector: 'kirby-modal-compact-wrapper',\n  templateUrl: './modal-compact-wrapper.component.html',\n  styleUrls: ['./modal-compact-wrapper.component.scss'],\n  providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }],\n  // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n  host: { '[class.ion-page]': 'false' }, //Ensure ion-page class doesn't get applied by Ionic Modal Controller\n})\nexport class ModalCompactWrapperComponent implements Modal, OnInit {\n  scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n  scrollDisabled = false;\n  @Input() config: ModalConfig;\n  componentPropsInjector: Injector;\n\n  private ionModalElement: HTMLIonModalElement;\n  private readonly ionModalDidPresent = new Subject<void>();\n  private readonly ionModalWillDismiss = new Subject<void>();\n  readonly didPresent = this.ionModalDidPresent.toPromise();\n  readonly willClose = this.ionModalWillDismiss.toPromise();\n\n  constructor(\n    private injector: Injector,\n    private elementRef: ElementRef<HTMLElement>,\n    private windowRef: WindowRef\n  ) {}\n\n  ngOnInit(): void {\n    this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n    this.listenForIonModalDidPresent();\n    this.listenForIonModalWillDismiss();\n    this.componentPropsInjector = Injector.create({\n      providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n      parent: this.injector,\n    });\n  }\n\n  private listenForIonModalDidPresent() {\n    if (this.ionModalElement) {\n      this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n        this.ionModalDidPresent.next();\n        this.ionModalDidPresent.complete();\n      });\n    }\n  }\n\n  private listenForIonModalWillDismiss() {\n    if (this.ionModalElement) {\n      this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n        this.ionModalWillDismiss.next();\n        this.ionModalWillDismiss.complete();\n      });\n    }\n  }\n\n  async close(data?: any): Promise<void> {\n    const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n    if (ionModalElement) {\n      await ionModalElement.dismiss(data);\n    }\n  }\n\n  scrollToTop: (_?: any) => void;\n  scrollToBottom: (_?: any) => void;\n\n  @HostListener('window:focus')\n  @HostListener('window:focusout')\n  onFocusChange() {\n    // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n    this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n  }\n}\n","<ng-container\n  *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n></ng-container>\n","import { Injectable } from '@angular/core';\n\nimport { DesignTokenHelper } from '@kirby-test-org/core';\n\nimport { WindowRef } from '../types/window-ref';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PlatformService {\n  constructor(private windowRef: WindowRef) {}\n\n  isTouch() {\n    const isTouchDeviceQuery = '(pointer: coarse)'; // No check for `hover: none`, as Samsung Galaxy will return false on `hover: none` media query\n    return this.windowRef.nativeWindow.matchMedia(isTouchDeviceQuery).matches;\n  }\n\n  isPhabletOrBigger() {\n    const query = `(min-width: ${DesignTokenHelper.breakpoints.medium})`;\n    return this.windowRef.nativeWindow.matchMedia(query).matches;\n  }\n}\n","import { ElementRef, Renderer2 } from '@angular/core';\n\n/*\n  The ModalWrapperComponent class was growing large. \n\n  Hence the functions responsible for moving modal elements around \n  has been encapsulated in this class. \n*/\n\nexport class ModalElementsMoverDelegate {\n  constructor(private renderer: Renderer2, private elementRef: ElementRef<HTMLElement>) {}\n\n  public addFooter(footerElementRef: ElementRef<HTMLElement>) {\n    // Move the footer next to ion-content\n    this.moveChild(footerElementRef, this.elementRef);\n  }\n\n  public removeFooter(footerElementRef: ElementRef<HTMLElement>) {\n    this.removeChild(footerElementRef);\n  }\n\n  public addPageProgress(\n    pageProgressElementRef: ElementRef<HTMLElement>,\n    ionToolbarElement: ElementRef<HTMLIonToolbarElement>\n  ) {\n    this.moveChild(pageProgressElementRef, ionToolbarElement);\n  }\n\n  public removePageProgress(pageProgressElementRef: ElementRef<HTMLElement>) {\n    this.removeChild(pageProgressElementRef);\n  }\n\n  /* \n     contentTitleElement & ionTitleElement has to be passed\n     as arguments to the method; not part of the constructor, as they \n     might reference completely different elements between calls. \n\n     For example in a multi-page routed modal where the elements are destroyed \n     and recreated.\n  */\n  public addTitle(\n    titleElementRef: ElementRef<HTMLElement>,\n    contentTitleElement: ElementRef<HTMLElement>,\n    hasCollapsibleTitle: boolean,\n    ionTitleElement: ElementRef<HTMLIonTitleElement>\n  ) {\n    this.moveChild(titleElementRef, ionTitleElement);\n    // If title is collapsible append it to content area; required by ionic implementation.\n    if (hasCollapsibleTitle) {\n      const titleElementClone = titleElementRef.nativeElement.cloneNode(true) as HTMLElement;\n      this.moveChild(new ElementRef(titleElementClone), contentTitleElement);\n    }\n  }\n\n  public removeTitle(\n    titleElementRef: ElementRef<HTMLElement>,\n    hasCollapsibleTitle: boolean,\n    contentTitleElement: ElementRef<HTMLElement>\n  ) {\n    this.removeChild(titleElementRef);\n    if (hasCollapsibleTitle) {\n      const kirbyPageTitleElement: HTMLElement =\n        contentTitleElement.nativeElement.querySelector('kirby-page-title');\n      this.removeChild(new ElementRef(kirbyPageTitleElement));\n    }\n  }\n\n  private moveChild(\n    childElementRef: ElementRef<HTMLElement>,\n    newParentElementRef: ElementRef<HTMLElement>\n  ) {\n    const child = childElementRef.nativeElement;\n    const newParent = newParentElementRef.nativeElement;\n    this.renderer.removeChild(child.parentElement, child);\n    this.renderer.appendChild(newParent, child);\n  }\n\n  private removeChild(\n    childElementRef: ElementRef<HTMLElement>,\n    parentElement?: HTMLElement | ElementRef<HTMLElement>\n  ) {\n    const child = childElementRef.nativeElement;\n    if (!!child) {\n      this.renderer.removeChild(parentElement || child.parentElement, child);\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ComponentFactoryResolver,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Injector,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  Renderer2,\n  RendererStyleFlags2,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { ActivatedRoute, RouterOutlet } from '@angular/router';\nimport { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { debounceTime, first, takeUntil } from 'rxjs/operators';\n\nimport { DesignTokenHelper } from '@kirby-test-org/core';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { PlatformService } from '../../../helpers/platform.service';\nimport { WindowRef } from '../../../types/window-ref';\nimport { ButtonComponent } from '../../button/button.component';\nimport { ResizeObserverService } from '../../shared/resize-observer/resize-observer.service';\nimport { ResizeObserverEntry } from '../../shared/resize-observer/types/resize-observer-entry';\nimport { Modal, ModalElementsAdvertiser, ModalElementType } from '../services/modal.interfaces';\n\nimport { ModalConfig } from './config/modal-config';\nimport { COMPONENT_PROPS } from './config/modal-config.helper';\nimport { ModalElementsMoverDelegate } from './modal-elements-mover.delegate';\n\n@Component({\n  selector: 'kirby-modal-wrapper',\n  templateUrl: './modal-wrapper.component.html',\n  styleUrls: ['./modal-wrapper.component.scss'],\n  providers: [\n    { provide: Modal, useExisting: ModalWrapperComponent },\n    { provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },\n  ],\n})\nexport class ModalWrapperComponent\n  implements Modal, AfterViewInit, OnInit, OnDestroy, ModalElementsAdvertiser\n{\n  @HostBinding('class.collapsible-title')\n  get _hasCollapsibleTitle() {\n    return !!this.config?.collapseTitle;\n  }\n\n  static readonly KEYBOARD_HIDE_DELAY_IN_MS = 100;\n\n  scrollY: number = Math.abs(this.windowRef.nativeWindow.scrollY);\n  private readonly VIEWPORT_RESIZE_DEBOUNCE_TIME = 100;\n\n  set scrollDisabled(disabled: boolean) {\n    this.ionContent.scrollY = !disabled;\n  }\n\n  @Input() config: ModalConfig;\n  componentPropsInjector: Injector;\n\n  @ViewChildren(ButtonComponent, { read: ElementRef }) private toolbarButtonsQuery: QueryList<\n    ElementRef<HTMLButtonElement>\n  >;\n  @ViewChild(IonContent, { static: true }) private ionContent: IonContent;\n  @ViewChild(IonContent, { static: true, read: ElementRef })\n  private ionContentElement: ElementRef<HTMLIonContentElement>;\n  @ViewChild(IonHeader, { static: true, read: ElementRef })\n  private ionHeaderElement: ElementRef<HTMLIonHeaderElement>;\n  @ViewChild(IonToolbar, { static: true, read: ElementRef })\n  private ionToolbarElement: ElementRef<HTMLIonToolbarElement>;\n  @ViewChild(IonTitle, { static: true, read: ElementRef })\n  private ionTitleElement: ElementRef<HTMLIonTitleElement>;\n  @ViewChild(RouterOutlet, { static: true }) private routerOutlet: RouterOutlet;\n\n  @ViewChild('contentTitle', { read: ElementRef })\n  private _contentTitleElement: ElementRef<HTMLElement>;\n\n  get contentTitleElement(): ElementRef<HTMLElement> {\n    /* \n        contentTitleElement has ngIf directive dependent on _hasCollapsibleTitle; trigger CD to make sure element has been queried. \n        Solution taken from: https://danieleyassu.com/angular-viewchild-and-ngif/\n      */\n    if (!this._contentTitleElement && this._hasCollapsibleTitle) {\n      this.changeDetector.detectChanges();\n    }\n    return this._contentTitleElement;\n  }\n\n  private keyboardVisible = false;\n  private toolbarButtons: HTMLButtonElement[] = [];\n  private delayedClose = () => {};\n  private delayedCloseTimeoutId;\n  private initialViewportHeight: number;\n  private viewportResized = false;\n  private ionModalElement?: HTMLIonModalElement;\n  private readonly ionModalDidPresent = new Subject<void>();\n  readonly didPresent = this.ionModalDidPresent.toPromise();\n  private readonly ionModalWillDismiss = new Subject<void>();\n  readonly willClose = this.ionModalWillDismiss.toPromise();\n  private viewportResize = new Subject<void>();\n  private viewportResize$ = this.viewportResize\n    .asObservable()\n    .pipe(debounceTime(this.VIEWPORT_RESIZE_DEBOUNCE_TIME));\n  private _mutationObserver: MutationObserver;\n  private _intersectionObserver: IntersectionObserver;\n  private get intersectionObserver(): IntersectionObserver {\n    if (!this._intersectionObserver) {\n      this._intersectionObserver = this.createModalWrapperIntersectionObserver();\n    }\n    return this._intersectionObserver;\n  }\n  private destroy$: Subject<void> = new Subject<void>();\n\n  @HostBinding('class.drawer')\n  get _isDrawer() {\n    return this.config.flavor === 'drawer';\n  }\n\n  willClose$ = this.ionModalWillDismiss.pipe(first());\n\n  private modalElementsMoverDelegate: ModalElementsMoverDelegate;\n\n  constructor(\n    private changeDetector: ChangeDetectorRef,\n    private injector: Injector,\n    private elementRef: ElementRef<HTMLElement>,\n    private renderer: Renderer2,\n    private zone: NgZone,\n    private resizeObserverService: ResizeObserverService,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private windowRef: WindowRef,\n    private platform: PlatformService\n  ) {\n    this.setViewportHeight();\n    this.observeViewportResize();\n    this.modalElementsMoverDelegate = new ModalElementsMoverDelegate(renderer, elementRef);\n  }\n\n  ngOnInit(): void {\n    this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n    this.initializeSizing();\n    this.initializeModalRoute();\n    this.listenForIonModalDidPresent();\n    this.listenForIonModalWillDismiss();\n    this.initializeResizeModalToModalWrapper();\n    this.componentPropsInjector = Injector.create({\n      providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n      parent: this.injector,\n    });\n  }\n\n  private _currentFooter: HTMLElement | null = null;\n\n  private set currentFooter(footer: HTMLElement | null) {\n    if (footer !== null) {\n      this.resizeObserverService.observe(footer, (entry) => {\n        const [property, pixelValue] = [\n          '--footer-height',\n          `${Math.floor(entry.contentRect.height)}px`,\n        ];\n        this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n      });\n    }\n\n    this._currentFooter = footer;\n  }\n\n  private get currentFooter(): HTMLElement | null {\n    return this._currentFooter;\n  }\n\n  public addModalElement(type: ModalElementType, modalElement: ElementRef<HTMLElement>) {\n    const addModalElementFn = {\n      [ModalElementType.FOOTER]: () => {\n        this.modalElementsMoverDelegate.addFooter(modalElement);\n        this.currentFooter = modalElement.nativeElement;\n      },\n      [ModalElementType.TITLE]: () =>\n        this.modalElementsMoverDelegate.addTitle(\n          modalElement,\n          this.contentTitleElement,\n          this._hasCollapsibleTitle,\n          this.ionTitleElement\n        ),\n      [ModalElementType.PAGE_PROGRESS]: () =>\n        this.modalElementsMoverDelegate.addPageProgress(modalElement, this.ionToolbarElement),\n    }[type];\n\n    addModalElementFn();\n  }\n\n  public removeModalElement(type: ModalElementType, modalElement: ElementRef<HTMLElement>) {\n    const removeModalElementFn = {\n      [ModalElementType.FOOTER]: () => {\n        this.modalElementsMoverDelegate.removeFooter(modalElement);\n        this.currentFooter = null;\n      },\n      [ModalElementType.TITLE]: () =>\n        this.modalElementsMoverDelegate.removeTitle(\n          modalElement,\n          this._hasCollapsibleTitle,\n          this.contentTitleElement\n        ),\n      [ModalElementType.PAGE_PROGRESS]: () =>\n        this.modalElementsMoverDelegate.removePageProgress(modalElement),\n    }[type];\n\n    removeModalElementFn();\n  }\n\n  private initializeResizeModalToModalWrapper() {\n    if (this.config.flavor === 'drawer' && this.config.interactWithBackground) {\n      merge(this.ionModalDidPresent, this.viewportResize$)\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => {\n          // wait for template to render\n          setTimeout(() => {\n            const domRect = this.elementRef.nativeElement.getBoundingClientRect();\n            const document = this.windowRef.nativeWindow.document.documentElement;\n            const right = document.clientWidth - domRect.right;\n            this.renderer.setStyle(this.ionModalElement, 'top', `${domRect.top}px`);\n            this.renderer.setStyle(this.ionModalElement, 'left', `${domRect.left}px`);\n            this.renderer.setStyle(this.ionModalElement, 'right', `${right}px`);\n          });\n        });\n    }\n  }\n\n  private initializeSizing() {\n    if (this.config.size === 'full-height') return;\n    this.patchScrollElementSize();\n    this.observeHeaderResize();\n    this.observeModalFullHeight();\n  }\n\n  private initializeModalRoute() {\n    if (this.config.modalRoute) {\n      this.onSiblingModalRouteActivated(this.config.siblingModalRouteActivated$);\n      // Load component from modal-route inside router-outlet:\n      this.routerOutlet.activateWith(this.config.modalRoute, this.componentFactoryResolver);\n    }\n  }\n\n  private onSiblingModalRouteActivated(siblingModalRouteActivated$?: Observable<ActivatedRoute>) {\n    if (!siblingModalRouteActivated$) return;\n    siblingModalRouteActivated$.pipe(takeUntil(this.willClose$)).subscribe((route) => {\n      if (this.routerOutlet.isActivated) {\n        this.routerOutlet.deactivate();\n      }\n      this.routerOutlet.activateWith(route, this.componentFactoryResolver);\n    });\n  }\n\n  private patchScrollElementSize(): void {\n    const supportsCssShadowParts = 'part' in HTMLElement.prototype;\n    if (supportsCssShadowParts) return;\n    this.ionContent.getScrollElement().then((scrollElement) => {\n      this.renderer.setStyle(scrollElement, 'height', '100%');\n      this.renderer.setStyle(scrollElement, 'position', 'relative');\n      if (this.config.flavor === 'drawer') {\n        this.renderer.setStyle(\n          scrollElement,\n          'transition',\n          'padding-bottom ' + DesignTokenHelper.softKeyboardTransitionLeave\n        );\n      }\n    });\n  }\n\n  private observeModalFullHeight() {\n    const ionModalWrapper = this.getIonModalWrapperElement();\n\n    if (!ionModalWrapper) return;\n    // Start observing when modal has finished animating:\n    this.didPresent.then(() => {\n      this.intersectionObserver.observe(ionModalWrapper);\n    });\n  }\n\n  // Extracted into function for ease of testing\n  private getIonModalWrapperElement(): HTMLElement {\n    return this.ionModalElement.shadowRoot.querySelector('.modal-wrapper');\n  }\n\n  ngAfterViewInit(): void {\n    if (this.toolbarButtonsQuery) {\n      this.toolbarButtons = this.toolbarButtonsQuery.map((buttonRef) => buttonRef.nativeElement);\n    }\n  }\n\n  private observeHeaderResize() {\n    this.resizeObserverService.observe(this.ionHeaderElement.nativeElement, (entry) => {\n      const [property, pixelValue] = ['--header-height', `${entry.contentRect.height}px`];\n      this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n    });\n  }\n\n  private listenForIonModalDidPresent() {\n    if (this.ionModalElement) {\n      this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n        this.ionModalDidPresent.next();\n        this.ionModalDidPresent.complete();\n      });\n    }\n  }\n\n  private listenForIonModalWillDismiss() {\n    if (this.ionModalElement) {\n      this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n        this.ionModalWillDismiss.next();\n        this.ionModalWillDismiss.complete();\n      });\n    }\n  }\n\n  scrollToTop(scrollDuration?: KirbyAnimation.Duration) {\n    this.ionContent.scrollToTop(scrollDuration || 0);\n  }\n\n  scrollToBottom(scrollDuration?: KirbyAnimation.Duration) {\n    this.ionContent.scrollToBottom(scrollDuration || 0);\n  }\n\n  async close(data?: any): Promise<void> {\n    if (!this.ionModalElement) {\n      return;\n    }\n    if (!this.keyboardVisible || !this.viewportResized) {\n      // No keyboard visible or viewport not resized:\n      // Dismiss modal and return:\n      clearTimeout(this.delayedCloseTimeoutId);\n      await this.ionModalElement.dismiss(data);\n      return;\n    }\n\n    // Keyboard visible:\n    // Blur active element and wait for keyboard to hide,\n    // then dismiss modal and return:\n    this.blurActiveElement();\n    return new Promise<void>((resolve) => {\n      this.delayedClose = async () => {\n        await this.ionModalElement.dismiss(data);\n        resolve();\n      };\n      this.delayedCloseTimeoutId = setTimeout(\n        this.delayedClose,\n        ModalWrapperComponent.KEYBOARD_HIDE_DELAY_IN_MS\n      );\n    });\n  }\n\n  @HostListener('window:focus')\n  @HostListener('window:focusout')\n  onFocusChange() {\n    // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n    this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n  }\n\n  @HostListener('window:ionKeyboardDidShow', ['$event.detail.keyboardHeight'])\n  @HostListener('window:keyboardWillShow', ['$event.keyboardHeight'])\n  _onKeyboardShow(keyboardHeight: number) {\n    this.setKeyboardVisibility(keyboardHeight);\n  }\n\n  @HostListener('window:ionKeyboardDidHide')\n  @HostListener('window:keyboardWillHide')\n  _onKeyboardHide() {\n    this.setKeyboardVisibility(0);\n  }\n\n  private toggleContentMaxHeight(freeze: boolean) {\n    const shouldToggleMaxHeight =\n      this.config.flavor === 'modal' && this.platform.isPhabletOrBigger();\n    if (!shouldToggleMaxHeight) return;\n    const style = 'max-height';\n    const contentElement = this.ionContentElement.nativeElement;\n    this.zone.run(() => {\n      if (freeze) {\n        const contentHeight = contentElement.offsetHeight;\n        this.renderer.setStyle(contentElement, style, `${contentHeight}px`);\n      } else {\n        this.renderer.removeStyle(contentElement, style);\n      }\n    });\n  }\n\n  private setKeyboardVisibility(keyboardHeight: number) {\n    const keyboardAlreadyVisible = keyboardHeight > 0 && this.keyboardVisible;\n    const keyboardAlreadyHidden = keyboardHeight === 0 && !this.keyboardVisible;\n    if (keyboardAlreadyVisible || keyboardAlreadyHidden) return;\n    this.keyboardVisible = keyboardHeight > 0;\n    this.toggleContentMaxHeight(this.keyboardVisible);\n    this.setKeyboardOverlap(keyboardHeight);\n  }\n\n  private getKeyboardOverlap(keyboardHeight: number, element: Element) {\n    if (keyboardHeight <= 0 || !element) return 0;\n    const distanceFromViewportBottomToElement = Math.floor(\n      this.windowRef.nativeWindow.innerHeight - element.getBoundingClientRect().bottom\n    );\n    return Math.max(keyboardHeight - distanceFromViewportBottomToElement, 0);\n  }\n\n  private setCssVar(element: Element, property: string, value: string) {\n    this.zone.run(() =>\n      this.renderer.setStyle(element, property, value, RendererStyleFlags2.DashCase)\n    );\n  }\n\n  private toggleCssClass(element: Element, klass: string, condition: boolean) {\n    this.zone.run(() =>\n      condition ? this.renderer.addClass(element, klass) : this.renderer.removeClass(element, klass)\n    );\n  }\n\n  private setKeyboardOverlap(keyboardHeight: number) {\n    this.toggleCssClass(this.elementRef.nativeElement, 'keyboard-visible', keyboardHeight > 0);\n    const keyboardOverlap = this.getKeyboardOverlap(keyboardHeight, this.elementRef.nativeElement);\n    let snapFooterToKeyboard = false;\n    const embeddedFooterElement = this.currentFooter;\n    if (embeddedFooterElement) {\n      this.setCssVar(embeddedFooterElement, '--keyboard-offset', `${keyboardOverlap}px`);\n      snapFooterToKeyboard = embeddedFooterElement.classList.contains('snap-to-keyboard');\n    }\n\n    const contentElement = this.ionContentElement.nativeElement;\n    const contentKeyboardOffset = snapFooterToKeyboard\n      ? keyboardOverlap\n      : this.getKeyboardOverlap(keyboardHeight, contentElement);\n    this.setCssVar(contentElement, '--keyboard-offset', `${contentKeyboardOffset}px`);\n  }\n\n  onHeaderTouchStart(event: TouchEvent) {\n    if (this.keyboardVisible) {\n      const isToolbarButtonTouch = this.toolbarButtons.some((button) => {\n        return (\n          event.target instanceof HTMLElement &&\n          (event.target === button || button.contains(event.target))\n        );\n      });\n      // Prevent blur if event target is a toolbar button\n      // (to allow tap event to fire):\n      if (!isToolbarButtonTouch) {\n        this.blurActiveElement();\n      }\n    }\n  }\n\n  @HostListener('window:resize')\n  _onWindowResize() {\n    this.setViewportHeight();\n  }\n\n  private setViewportHeight() {\n    const vh = (this.windowRef.nativeWindow.innerHeight * 0.01).toFixed(2);\n    this.setCssVar(this.elementRef.nativeElement, '--vh', `${vh}px`);\n  }\n\n  private observeViewportResize() {\n    this.resizeObserverService.observe(this.windowRef.nativeWindow.document.body, (entry) =>\n      this.onViewportResize(entry)\n    );\n  }\n\n  private onViewportResize(entry: ResizeObserverEntry) {\n    if (!this.initialViewportHeight) {\n      // Initial observe callback, register initial height:\n      this.initialViewportHeight = entry.contentRect.height;\n      return;\n    }\n    this.viewportResized = entry.contentRect.height !== this.initialViewportHeight;\n    if (!this.viewportResized) {\n      // We are back to initial view port height, check for pending close func:\n      if (this.delayedCloseTimeoutId) {\n        clearTimeout(this.delayedCloseTimeoutId);\n        this.delayedClose();\n      }\n    }\n    this.viewportResize.next();\n  }\n\n  blurActiveElement() {\n    const BLUR_TARGET_SELECTOR = 'input, textarea';\n    if (this.keyboardVisible) {\n      if (\n        document.activeElement instanceof HTMLElement &&\n        document.activeElement.matches(BLUR_TARGET_SELECTOR)\n      ) {\n        document.activeElement.blur();\n      }\n    }\n  }\n\n  private createModalWrapperIntersectionObserver(): IntersectionObserver {\n    const callback: IntersectionObserverCallback = (entries) => {\n      const entry = entries[0];\n      const isTouchingViewport = entry.intersectionRatio < 1;\n      if (isTouchingViewport) {\n        this.ionModalElement.classList.add('full-height');\n      } else {\n        this.ionModalElement.classList.remove('full-height');\n      }\n    };\n\n    // Set explicit viewport root if within iframe:\n    const root = this.windowRef.nativeWindow.frameElement\n      ? (this.windowRef.nativeWindow.document as any) // Cast to `any` as Typescript lib.d.ts doesnt support Document type yet\n      : undefined;\n    const options: IntersectionObserverInit = {\n      rootMargin: '0px 0px -1px 0px', // `bottom: -1px` allows checking when the modal bottom is touching the viewport\n      root,\n      threshold: [0.99, 1],\n    };\n\n    return new IntersectionObserver(callback, options);\n  }\n\n  ngOnDestroy() {\n    if (this.routerOutlet.isActivated) {\n      this.routerOutlet.deactivate();\n    }\n    //clean up the observer\n    delete this._mutationObserver;\n    this.intersectionObserver.disconnect();\n    delete this._intersectionObserver;\n    if (this.resizeObserverService) {\n      this.resizeObserverService.unobserve(this.windowRef.nativeWindow.document.body);\n      this.resizeObserverService.unobserve(this.ionHeaderElement.nativeElement);\n      this.resizeObserverService.unobserve(this.currentFooter);\n    }\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","<ion-header (touchstart)=\"onHeaderTouchStart($event)\">\n  <ion-toolbar>\n    <ion-title></ion-title>\n    <ion-buttons slot=\"start\" *ngIf=\"config.flavor === 'drawer'\">\n      <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"></ng-container>\n    </ion-buttons>\n    <ion-buttons slot=\"end\" *ngIf=\"config.flavor === 'modal'\">\n      <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n    </ion-buttons>\n    <ion-buttons slot=\"end\" *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\">\n      <ng-container\n        *ngTemplateOutlet=\"supplementaryButton; context: { btn: config.drawerSupplementaryAction }\"\n      ></ng-container>\n    </ion-buttons>\n  </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"true\">\n  <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n    <ion-toolbar>\n      <span class=\"kirby-text-large\" #contentTitle></span>\n    </ion-toolbar>\n  </ion-header>\n  <ng-container\n    *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n  ></ng-container>\n  <router-outlet\n    name=\"kirbyModalWrapperOutlet\"\n    [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n  ></router-outlet>\n</ion-content>\n\n<ng-template #closeButton let-icon=\"icon\">\n  <button kirby-button [noDecoration]=\"true\" size=\"md\" (click)=\"close()\">\n    <kirby-icon [name]=\"icon\"></kirby-icon>\n  </button>\n</ng-template>\n\n<ng-template #supplementaryButton let-btn=\"btn\">\n  <button kirby-button [noDecoration]=\"true\" size=\"md\" (click)=\"btn.action($event)\">\n    <kirby-icon [name]=\"btn.iconName\"></kirby-icon>\n  </button>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { Animation, AnimationBuilder, createAnimation } from '@ionic/angular';\nimport { ModalAnimationOptions } from '@ionic/core';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { PlatformService } from '../../../helpers/platform.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalAnimationBuilderService {\n  constructor(private platform: PlatformService) {}\n\n  private readonly easingEnter = KirbyAnimation.Easing.modal.enter;\n  private readonly easingLeave = KirbyAnimation.Easing.modal.exit;\n  private readonly duration = KirbyAnimation.Duration.LONG;\n  private readonly SwipeToCloseDefaults = {\n    MIN_PRESENTING_SCALE: 0.93,\n  };\n\n  public enterAnimation(currentBackdrop?: HTMLIonBackdropElement): AnimationBuilder {\n    return (baseEl: HTMLElement, opts: ModalAnimationOptions): Animation => {\n      const { presentingEl } = opts;\n      const root = this.getElementRoot(baseEl);\n      const { wrapperAnimation, backdropAnimation } = this.createEnterAnimation();\n\n      backdropAnimation.addElement(root.querySelector('ion-backdrop')!);\n\n      wrapperAnimation\n        .addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')!)\n        .beforeStyles({ opacity: 1 });\n\n      const baseAnimation = createAnimation('entering-base')\n        .addElement(baseEl)\n        .easing(this.easingEnter)\n        .duration(this.duration)\n        .addAnimation(wrapperAnimation);\n\n      let currentBackdropAnimation: Animation;\n      if (currentBackdrop) {\n        currentBackdropAnimation = createAnimation()\n          .addElement(currentBackdrop)\n          .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);\n      }\n\n      if (presentingEl) {\n        const isMobile = !this.platform.isPhabletOrBigger();\n        const hasCardModal =\n          presentingEl.tagName === 'ION-MODAL' &&\n          (presentingEl as HTMLIonModalElement).presentingElement !== undefined;\n        const presentingElRoot = this.getElementRoot(presentingEl);\n\n        const presentingAnimation = createAnimation().beforeStyles({\n          transform: 'translateY(0)',\n          'transform-origin': 'top center',\n          overflow: 'hidden',\n        });\n\n        const bodyEl = document.body;\n\n        if (isMobile) {\n          /**\n           * Fallback for browsers that does not support `max()` (ex: Firefox)\n           * No need to worry about statusbar padding since engines like Gecko\n           * are not used as the engine for standalone Cordova/Capacitor apps\n           */\n          const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n            ? '30px'\n            : 'max(30px, var(--ion-safe-area-top))';\n          const modalTransform = hasCardModal ? '-10px' : transformOffset;\n          const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n          const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n\n          presentingAnimation\n            .afterStyles({\n              transform: finalTransform,\n            })\n            .beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))\n            .addElement(presentingEl)\n            .keyframes([\n              {\n                offset: 0,\n                filter: 'contrast(1)',\n                transform: 'translateY(0px) scale(1)',\n                borderRadius: '0px',\n              },\n              {\n                offset: 1,\n                filter: 'contrast(0.85)',\n                transform: finalTransform,\n                borderRadius: '10px 10px 0 0',\n              },\n            ]);\n\n          baseAnimation.addAnimation(presentingAnimation);\n        } else {\n          baseAnimation.addAnimation(backdropAnimation);\n\n          if (currentBackdropAnimation) {\n            baseAnimation.addAnimation(currentBackdropAnimation);\n          }\n\n          if (!hasCardModal) {\n            wrapperAnimation.fromTo('opacity', '0', '1');\n          } else {\n            const toPresentingScale = hasCardModal\n              ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n              : 1;\n            const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n\n            presentingAnimation\n              .afterStyles({\n                transform: finalTransform,\n              })\n              .addElement(presentingElRoot.querySelector('.modal-wrapper')!)\n              .keyframes([\n                { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n                { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },\n              ]);\n\n            const shadowAnimation = createAnimation()\n              .afterStyles({\n                transform: finalTransform,\n              })\n              .addElement(presentingElRoot.querySelector('.modal-shadow')!)\n              .keyframes([\n                { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },\n                { offset: 1, opacity: '0', transform: finalTransform },\n              ]);\n\n            baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n          }\n        }\n      } else {\n        baseAnimation.addAnimation(backdropAnimation);\n        if (currentBackdropAnimation) {\n          baseAnimation.addAnimation(currentBackdropAnimation);\n        }\n      }\n\n      return baseAnimation;\n    };\n  }\n\n  public leaveAnimation(currentBackdrop?: HTMLIonBackdropElement): AnimationBuilder {\n    return (\n      baseEl: HTMLElement,\n      opts: ModalAnimationOptions,\n      duration = this.duration\n    ): Animation => {\n      const { presentingEl } = opts;\n      const root = this.getElementRoot(baseEl);\n      const { wrapperAnimation, backdropAnimation } = this.createLeaveAnimation();\n\n      backdropAnimation.addElement(root.querySelector('ion-backdrop')!);\n\n      wrapperAnimation\n        .addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')!)\n        .beforeStyles({ opacity: 1 });\n\n      const baseAnimation = createAnimation('leaving-base')\n        .addElement(baseEl)\n        .easing(this.easingLeave)\n        .duration(duration)\n        .addAnimation(wrapperAnimation);\n\n      let currentBackdropAnimation: Animation;\n      if (currentBackdrop) {\n        currentBackdropAnimation = createAnimation()\n          .addElement(currentBackdrop)\n          .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n          .afterStyles({ opacity: 'var(--backdrop-opacity)' }); //Ensures backdrop is reset to default opacity after swipe to close\n      }\n\n      if (presentingEl) {\n        const isMobile = !this.platform.isPhabletOrBigger();\n        const hasCardModal =\n          presentingEl.tagName === 'ION-MODAL' &&\n          (presentingEl as HTMLIonModalElement).presentingElement !== undefined;\n        const presentingElRoot = this.getElementRoot(presentingEl);\n\n        const presentingAnimation = createAnimation()\n          .beforeClearStyles(['transform'])\n          .afterClearStyles(['transform'])\n          .onFinish((currentStep) => {\n            // only reset background color if this is the last card-style modal\n            if (currentStep !== 1) {\n              return;\n            }\n\n            presentingEl.style.setProperty('overflow', '');\n\n            const numModals = Array.from(bodyEl.querySelectorAll('ion-modal')).filter(\n              (m) => m.presentingElement !== undefined\n            ).length;\n            if (numModals <= 1) {\n              bodyEl.style.setProperty('background-color', '');\n            }\n          });\n\n        const bodyEl = document.body;\n\n        if (isMobile) {\n          const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n            ? '30px'\n            : 'max(30px, var(--ion-safe-area-top))';\n          const modalTransform = hasCardModal ? '-10px' : transformOffset;\n          const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n          const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n\n          presentingAnimation.addElement(presentingEl).keyframes([\n            {\n              offset: 0,\n              filter: 'contrast(0.85)',\n              transform: finalTransform,\n              borderRadius: '10px 10px 0 0',\n            },\n            {\n              offset: 1,\n              filter: 'contrast(1)',\n              transform: 'translateY(0px) scale(1)',\n              borderRadius: '0px',\n            },\n          ]);\n\n          baseAnimation.addAnimation(presentingAnimation);\n        } else {\n          baseAnimation.addAnimation(backdropAnimation);\n          if (currentBackdropAnimation) {\n            baseAnimation.addAnimation(currentBackdropAnimation);\n          }\n\n          if (!hasCardModal) {\n            wrapperAnimation.fromTo('opacity', '1', '0');\n          } else {\n            const toPresentingScale = hasCardModal\n              ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n              : 1;\n            const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n\n            presentingAnimation\n              .addElement(presentingElRoot.querySelector('.modal-wrapper')!)\n              .afterStyles({\n                transform: 'translate3d(0, 0, 0)',\n              })\n              .keyframes([\n                { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },\n                { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n              ]);\n\n            const shadowAnimation = createAnimation()\n              .addElement(presentingElRoot.querySelector('.modal-shadow')!)\n              .afterStyles({\n                transform: 'translateY(0) scale(1)',\n              })\n              .keyframes([\n                { offset: 0, opacity: '0', transform: finalTransform },\n                { offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },\n              ]);\n\n            baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n          }\n        }\n      } else {\n        baseAnimation.addAnimation(backdropAnimation);\n        if (currentBackdropAnimation) {\n          baseAnimation.addAnimation(currentBackdropAnimation);\n        }\n      }\n\n      return baseAnimation;\n    };\n  }\n\n  private createEnterAnimation = () => {\n    const backdropAnimation = createAnimation()\n      .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n      .beforeStyles({\n        'pointer-events': 'none',\n      })\n      .afterClearStyles(['pointer-events']);\n\n    const wrapperAnimation = createAnimation().fromTo(\n      'transform',\n      'translateY(100vh)',\n      'translateY(0vh)'\n    );\n\n    return { backdropAnimation, wrapperAnimation };\n  };\n\n  private createLeaveAnimation = () => {\n    const backdropAnimation = createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);\n\n    const wrapperAnimation = createAnimation().fromTo(\n      'transform',\n      'translateY(0vh)',\n      'translateY(100vh)'\n    );\n\n    return { backdropAnimation, wrapperAnimation };\n  };\n\n  /**\n   * Gets the root context of a shadow dom element\n   * On newer browsers this will be the shadowRoot,\n   * but for older browser this may just be the\n   * element itself.\n   *\n   * Useful for whenever you need to explicitly\n   * do \"myElement.shadowRoot!.querySelector(...)\".\n   */\n  private getElementRoot = (el: HTMLElement, fallback: HTMLElement = el) => {\n    return el.shadowRoot || fallback;\n  };\n}\n","import { Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { WindowRef } from '../../../types/window-ref';\nimport { AlertConfig } from '../alert/config/alert-config';\nimport { ModalCompactWrapperComponent } from '../modal-wrapper/compact/modal-compact-wrapper.component';\nimport { ModalConfig, ModalFlavor, ModalSize } from '../modal-wrapper/config/modal-config';\nimport { ModalWrapperComponent } from '../modal-wrapper/modal-wrapper.component';\nimport { AlertHelper } from './alert.helper';\n\nimport { ModalAnimationBuilderService } from './modal-animation-builder.service';\nimport { Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ModalHelper {\n  // TODO: Make presentingElement an instance field when\n  // forRoot()/singleton services has been solved:\n  private static presentingElement: HTMLElement = undefined;\n\n  constructor(\n    private ionicModalController: ModalController,\n    private modalAnimationBuilder: ModalAnimationBuilderService,\n    private windowRef: WindowRef,\n    private alertHelper: AlertHelper\n  ) {}\n\n  public async showModalWindow(config: ModalConfig, alertConfig?: AlertConfig): Promise<Overlay> {\n    config.flavor = config.flavor || 'modal';\n    const modalPresentingElement = await this.getPresentingElement(config.flavor);\n\n    let currentBackdrop: HTMLIonBackdropElement;\n    const topMostModal = await this.ionicModalController.getTop();\n    if (topMostModal) {\n      currentBackdrop =\n        topMostModal.shadowRoot.querySelector<HTMLIonBackdropElement>('ion-backdrop');\n    }\n\n    const enterAnimation = this.modalAnimationBuilder.enterAnimation(currentBackdrop);\n    const leaveAnimation = this.modalAnimationBuilder.leaveAnimation(currentBackdrop);\n\n    const defaultModalSize: ModalSize = config.flavor === 'modal' ? 'medium' : null;\n    const modalSize = config.size || defaultModalSize;\n    const allow_scroll_class = 'allow-background-scroll';\n\n    let customCssClasses = [];\n    if (config.cssClass) {\n      customCssClasses = Array.isArray(config.cssClass) ? config.cssClass : [config.cssClass];\n    }\n\n    if (config.interactWithBackground) {\n      this.windowRef.nativeWindow.document.body.classList.add(allow_scroll_class);\n    }\n\n    let canDismiss: boolean | (() => Promise<boolean>) = true;\n    if (alertConfig) {\n      canDismiss = async () => {\n        const canBeDismissed = await this.showAlert(alertConfig);\n        return canBeDismissed;\n      };\n    }\n\n    const ionModal = await this.ionicModalController.create({\n      component: config.flavor === 'compact' ? ModalCompactWrapperComponent : ModalWrapperComponent,\n      cssClass: [\n        'kirby-overlay',\n        'kirby-modal',\n        config.flavor === 'drawer' ? 'kirby-drawer' : null,\n        config.flavor === 'compact' ? 'kirby-modal-compact' : null,\n        modalSize ? 'kirby-modal-' + modalSize : null,\n        config.interactWithBackground ? 'interact-with-background' : null,\n        ...customCssClasses,\n      ],\n      backdropDismiss: config.flavor === 'compact' || config.interactWithBackground ? false : true,\n      showBackdrop: !config.interactWithBackground,\n      componentProps: { config: config },\n      swipeToClose: config.flavor != 'compact',\n      presentingElement: modalPresentingElement,\n      keyboardClose: false,\n      canDismiss,\n      enterAnimation,\n      leaveAnimation,\n    });\n\n    if (config.interactWithBackground) {\n      ionModal.onDidDismiss().then(() => {\n        this.windowRef.nativeWindow.document.body.classList.remove(allow_scroll_class);\n      });\n    }\n\n    await ionModal.present();\n\n    return {\n      dismiss: ionModal.dismiss.bind(ionModal),\n      onWillDismiss: ionModal.onWillDismiss(),\n      onDidDismiss: ionModal.onDidDismiss(),\n    };\n  }\n\n  public registerPresentingElement(element: HTMLElement) {\n    ModalHelper.presentingElement = element;\n  }\n\n  public async showAlert(config: AlertConfig): Promise<boolean> {\n    const alert = await this.alertHelper.showAlert(config);\n    const result = await alert.onWillDismiss;\n    return result.data;\n  }\n\n  private async getPresentingElement(flavor?: ModalFlavor) {\n    let modalPresentingElement: HTMLElement = undefined;\n    if (!flavor || flavor === 'modal') {\n      const topMostModal = await this.ionicModalController.getTop();\n      if (!topMostModal) {\n        modalPresentingElement = ModalHelper.presentingElement;\n      } else if (\n        !topMostModal.classList.contains('kirby-drawer') &&\n        !topMostModal.classList.contains('kirby-modal-compact')\n      ) {\n        modalPresentingElement = topMostModal;\n      }\n    }\n    return modalPresentingElement;\n  }\n\n  public async scrollToTop(\n    noModalRegisteredErrorMessage: string,\n    duration?: KirbyAnimation.Duration\n  ) {\n    const modal = await this.ionicModalController.getTop();\n    if (!modal || !(modal.component instanceof ModalWrapperComponent)) {\n      throw new Error(noModalRegisteredErrorMessage);\n    }\n    modal.component.scrollToTop(duration);\n  }\n\n  public async scrollToBottom(\n    noModalRegisteredErrorMessage: string,\n    duration?: KirbyAnimation.Duration\n  ) {\n    const modal = await this.ionicModalController.getTop();\n    if (!modal || !(modal.component instanceof ModalWrapperComponent)) {\n      throw new Error(noModalRegisteredErrorMessage);\n    }\n    modal.component.scrollToBottom(duration);\n  }\n}\n","import { Inject, Injectable, OnDestroy, Optional } from '@angular/core';\nimport { ActivatedRoute, Params, Routes, ROUTES } from '@angular/router';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { KirbyAnimation } from '../../../animation/kirby-animation';\nimport { ActionSheetConfig } from '../action-sheet/config/action-sheet-config';\nimport { AlertConfig } from '../alert/config/alert-config';\nimport { ModalConfig } from '../modal-wrapper/config/modal-config';\n\nimport { ActionSheetHelper } from './action-sheet.helper';\nimport { AlertHelper } from './alert.helper';\nimport { ModalNavigationService } from './modal-navigation.service';\nimport { ModalHelper } from './modal.helper';\nimport { ModalRouteActivation, Overlay } from './modal.interfaces';\n\n@Injectable()\nexport class ModalController implements OnDestroy {\n  private overlays: Overlay[] = [];\n  private readonly noOverlayRegisteredErrorMessage = 'No modal overlays are currently registered';\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private modalHelper: ModalHelper,\n    private actionSheetHelper: ActionSheetHelper,\n    private alertHelper: AlertHelper,\n    private modalNavigationService: ModalNavigationService,\n    @Optional() @Inject(ROUTES) private routeConfig: Routes[]\n  ) {}\n\n  async initialize(moduleRootRoutePath?: string) {\n    const modalNavigation = await this.modalNavigationService.getModalNavigation(\n      this.routeConfig,\n      moduleRootRoutePath\n    );\n    this.onModalRouteActivated(modalNavigation.activated$);\n    this.onModalRouteDeactivated(modalNavigation.deactivated$); // TODO: Do we want to close modal when routing out of modal route? Or should the code that navigates close the window??\n  }\n\n  private onModalRouteActivated(modalRouteActivated$: Observable<ModalRouteActivation>) {\n    const navigateOnWillClose = () => {\n      this.modalNavigationService.navigateOutOfModalOutlet();\n    };\n    const siblingModalRouteActivated$ = modalRouteActivated$.pipe(\n      filter((modalRouteActivation) => !modalRouteActivation.isNewModal),\n      map((modalRouteActivation) => modalRouteActivation.route)\n    );\n\n    modalRouteActivated$\n      .pipe(\n        takeUntil(this.destroy$),\n        filter(() => this.overlays.length === 0)\n      )\n      .subscribe(async (modalRouteActivation) => {\n        if (modalRouteActivation.isNewModal) {\n          await this.showModalRoute(\n            modalRouteActivation.route,\n            siblingModalRouteActivated$,\n            navigateOnWillClose\n          );\n        }\n      });\n  }\n\n  private onModalRouteDeactivated(modalRouteDeactivated$: Observable<boolean>) {\n    modalRouteDeactivated$\n      .pipe(\n        takeUntil(this.destroy$),\n        filter(() => this.overlays.length > 0) // TODO: This also fires when closing overlay - should we check for isClosing??\n      )\n      .subscribe(async () => {\n        await this.hideAll();\n      });\n  }\n\n  public async showModal(\n    config: ModalConfig,\n    onClose?: (data?: any) => void,\n    alertConfig?: AlertConfig\n  ): Promise<void> {\n    await this.showAndRegisterOverlay(\n      () => this.modalHelper.showModalWindow(config, alertConfig),\n      onClose\n    );\n  }\n\n  public async navigateToModal(path: string | string[], queryParams?: Params): Promise<boolean> {\n    return this.modalNavigationService.navigateToModal(path, queryParams);\n  }\n\n  public async navigateWithinModal(relativePath: string, queryParams?: Params): Promise<boolean> {\n    return this.modalNavigationService.navigateWithinModal(relativePath, queryParams);\n  }\n\n  private async showModalRoute(\n    modalRoute: ActivatedRoute,\n    siblingModalRouteActivated$: Observable<ActivatedRoute>,\n    onWillClose: (data?: any) => void\n  ): Promise<void> {\n    const config: ModalConfig = {\n      component: null,\n      modalRoute: modalRoute,\n      siblingModalRouteActivated$: siblingModalRouteActivated$,\n      flavor: 'modal', // Todo: Should it be possible to specify flavor as data in RouteConfig?\n    };\n    await this.showAndRegisterOverlay(\n      () => this.modalHelper.showModalWindow(config),\n      null,\n      onWillClose\n    );\n  }\n\n  public async showActionSheet(\n    config: ActionSheetConfig,\n    onClose?: (data?: any) => void\n  ): Promise<void> {\n    await this.showAndRegisterOverlay(\n      () => this.actionSheetHelper.showActionSheet(config),\n      onClose\n    );\n  }\n\n  public async showAlert(config: AlertConfig, onClose?: (result: boolean) => void): Promise<void> {\n    await this.showAndRegisterOverlay(() => this.alertHelper.showAlert(config), onClose);\n  }\n\n  private async showAndRegisterOverlay(\n    showOverlay: () => Promise<Overlay>,\n    onCloseOverlay?: (data?: any) => void,\n    onWillCloseOverlay?: (data?: any) => void\n  ) {\n    const overlay = await showOverlay();\n    if (!overlay) return;\n\n    this.overlays.push(overlay);\n\n    if (typeof onWillCloseOverlay === 'function') {\n      overlay.onWillDismiss.then((event) => onWillCloseOverlay(event.data));\n    }\n\n    overlay.onDidDismiss.then((event) => {\n      this.overlays.pop();\n      if (typeof onCloseOverlay === 'function') {\n        onCloseOverlay(event.data);\n      }\n    });\n  }\n\n  public registerPresentingElement(element: HTMLElement) {\n    this.modalHelper.registerPresentingElement(element);\n  }\n\n  public async hideTopmost(data?: any): Promise<boolean> {\n    const overlay = this.overlays[this.overlays.length - 1];\n    if (!overlay) {\n      throw new Error(this.noOverlayRegisteredErrorMessage);\n    }\n    return overlay.dismiss(data);\n  }\n\n  /**\n   * @deprecated Will be removed in next major version. Inject Modal in embedded component and use Modal.scrollToTop instead.\n   */\n  public scrollToTop(duration?: KirbyAnimation.Duration) {\n    console.warn(\n      'ModalController.scrollToTop is deprecated - please inject Modal in embedded component and use Modal.scrollToTop instead.'\n    );\n    const overlay = this.overlays[this.overlays.length - 1];\n    if (!overlay) {\n      throw new Error(this.noOverlayRegisteredErrorMessage);\n    }\n    this.modalHelper.scrollToTop(this.noOverlayRegisteredErrorMessage, duration);\n  }\n\n  /**\n   * @deprecated Will be removed in next major version. Inject Modal in embedded component and use Modal.scrollToBottom instead.\n   */\n  public scrollToBottom(duration?: KirbyAnimation.Duration) {\n    console.warn(\n      'ModalController.scrollToBottom is deprecated - please inject Modal in embedded component and use Modal.scrollToBottom instead.'\n    );\n    const overlay = this.overlays[this.overlays.length - 1];\n    if (!overlay) {\n      throw new Error(this.noOverlayRegisteredErrorMessage);\n    }\n    this.modalHelper.scrollToBottom(this.noOverlayRegisteredErrorMessage, duration);\n  }\n\n  public async hideAll(): Promise<void> {\n    await Promise.all(\n      this.overlays.map(async (overlay) => {\n        await overlay.dismiss();\n      })\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'kirby-router-outlet',\n  templateUrl: './router-outlet.component.html',\n  styleUrls: ['./router-outlet.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RouterOutletComponent {\n  @Input() main: boolean;\n}\n","<ng-container *ngIf=\"main\">\n  <ion-router-outlet main></ion-router-outlet>\n</ng-container>\n<ng-container *ngIf=\"!main\">\n  <ion-router-outlet></ion-router-outlet>\n</ng-container>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  ViewChild,\n} from '@angular/core';\nimport { IonApp } from '@ionic/angular';\n\nimport { ModalController } from '../modal/services/modal.controller';\nimport { RouterOutletComponent } from '../router-outlet/router-outlet.component';\n\n@Component({\n  selector: 'kirby-app',\n  templateUrl: './app.component.html',\n  styleUrls: ['./app.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppComponent implements AfterContentInit {\n  @ViewChild(IonApp, { static: true, read: ElementRef })\n  private ionAppElement: ElementRef<HTMLIonAppElement>;\n\n  @ContentChild(RouterOutletComponent, { static: false, read: ElementRef })\n  private routerOutlet?: ElementRef<HTMLElement>;\n\n  constructor(private modalController: ModalController) {}\n\n  ngAfterContentInit(): void {\n    if (this.routerOutlet && this.routerOutlet.nativeElement) {\n      this.modalController.registerPresentingElement(this.routerOutlet.nativeElement);\n    }\n\n    this.ionAppElement.nativeElement.componentOnReady().then(() => this.registerInputs());\n  }\n\n  registerInputs() {\n    // Input might be already loaded in the DOM before ion-device-hacks did.\n    // At this point we need to look for all of the inputs not registered yet\n    // and register them.\n    // There is no Ionic event to hook into, so we'll use a timeout\n    // to ensure ion-device-hacks has run:\n    const ensureIonicDeviceHacksDelay = 250;\n    setTimeout(() => {\n      document.querySelectorAll('kirby-form-field').forEach((formField) => {\n        formField.dispatchEvent(new CustomEvent('kirbyRegisterFormField'));\n      });\n    }, ensureIonicDeviceHacksDelay);\n  }\n}\n","<ion-app>\n  <ng-content></ng-content>\n</ion-app>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@ionic/angular';\n\nimport { AppComponent } from './app.component';\n\n@NgModule({\n  declarations: [AppComponent],\n  imports: [CommonModule, IonicModule],\n  exports: [AppComponent],\n})\nexport class AppModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { BrandColor, NotificationColor } from '@kirby-test-org/core';\n\nexport enum AvatarSize {\n  XS = 'xs',\n  SM = 'sm',\n  MD = 'md',\n  LG = 'lg',\n}\n\n@Component({\n  selector: 'kirby-avatar',\n  templateUrl: './avatar.component.html',\n  styleUrls: ['./avatar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent {\n  @Input() imageSrc: string;\n  @Input() altText: string;\n  @Input() shadow: boolean;\n  @Input() text: string;\n  @Input() overlay: boolean;\n  @Input() size: AvatarSize | `${AvatarSize}` = AvatarSize.SM;\n  @Input()\n  themeColor: NotificationColor | BrandColor | 'medium' | 'white' | 'dark' | 'light' | 'semi-light';\n\n  @HostBinding('class')\n  get _cssClass() {\n    return [this.themeColor, this.size].filter((cssClass) => !!cssClass);\n  }\n}\n","<div class=\"avatar\" [ngClass]=\"{ shadow: shadow, overlay: overlay }\">\n  <img *ngIf=\"imageSrc\" [src]=\"imageSrc\" [attr.alt]=\"altText\" />\n  <ng-content *ngIf=\"!text\" select=\"kirby-icon\"></ng-content>\n  <span class=\"avatar-text\" *ngIf=\"text\">{{ text }}</span>\n</div>\n<ng-content select=\"kirby-badge\"></ng-content>\n","import { fromEvent } from 'rxjs';\n\nexport const proxyInputs = (Cmp: any, inputs: string[]) => {\n  const Prototype = Cmp.prototype;\n  inputs.forEach((item) => {\n    Object.defineProperty(Prototype, item, {\n      get() {\n        return this.el[item];\n      },\n      set(val: any) {\n        this.z.runOutsideAngular(() => (this.el[item] = val));\n      },\n    });\n  });\n};\n\nexport const proxyMethods = (Cmp: any, methods: string[]) => {\n  const Prototype = Cmp.prototype;\n  methods.forEach((methodName) => {\n    Prototype[methodName] = function () {\n      const args = arguments;\n      return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));\n    };\n  });\n};\n\nexport const proxyOutputs = (instance: any, el: any, events: string[]) => {\n  events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));\n};\n\n// tslint:disable-next-line: only-arrow-functions\nexport function ProxyCmp(opts: { inputs?: any; methods?: any }) {\n  const decorator = function (cls: any) {\n    if (opts.inputs) {\n      proxyInputs(cls, opts.inputs);\n    }\n    if (opts.methods) {\n      proxyMethods(cls, opts.methods);\n    }\n    return cls;\n  };\n  return decorator;\n}\n","/* tslint:disable */\n/* auto-generated angular directive proxies */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, NgZone } from '@angular/core';\nimport { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';\n\nimport { Components } from '@kirby-test-org/core';\n\n\nexport declare interface KirbyBadge extends Components.KirbyBadge {}\n@ProxyCmp({\n  inputs: ['size', 'text', 'themeColor']\n})\n@Component({\n  selector: 'kirby-badge',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: '<ng-content></ng-content>',\n  inputs: ['size', 'text', 'themeColor']\n})\nexport class KirbyBadge {\n  protected el: HTMLElement;\n  constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n    c.detach();\n    this.el = r.nativeElement;\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'kirby-card-footer',\n  templateUrl: './card-footer.component.html',\n  styleUrls: ['./card-footer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardFooterComponent {}\n","<footer>\n  <ng-content></ng-content>\n</footer>\n","import { ChartDataset as ChartJSDataset, ChartType as ChartJSType, ChartOptions } from 'chart.js';\n\nexport type ChartHighlightedElements = number[][];\n\nexport type ChartType = 'column' | 'bar' | 'line' | 'stock';\n\nexport type ChartTypeConfig = { type: ChartJSType; options?: ChartOptions };\n\nexport type ChartTypesConfig = {\n  [key in ChartType]: ChartTypeConfig;\n};\nexport type ChartLabel = string | string[]; // String[] allows for multi-line labels\n\nexport type ChartDataLabelOptions = {\n  showMin?: boolean;\n  showMax?: boolean;\n  showCurrent?: boolean;\n  locale?: ChartLocale;\n  valueSuffix?: string;\n};\n\nexport type ChartLocale = 'da-DK' | 'en-US';\n\n/* \n  kirbyOptions.isStockChart is a hacky solution to this issue: \n  https://github.com/kirbydesign/designsystem/issues/1967 \n*/\nexport type ChartDataset = {\n  kirbyOptions?: { highlightedElements?: number[]; isStockChart?: boolean };\n} & ChartJSDataset;\n\nexport function isNumberArray(value: any): value is number[] {\n  return Array.isArray(value) && value.every((item) => typeof item === 'number');\n}\n","import {\n  ComponentFactoryResolver,\n  Directive,\n  Input,\n  OnInit,\n  Renderer2,\n  ViewContainerRef,\n} from '@angular/core';\n\nimport { ComponentConfiguration } from './component-configuration';\nimport { DynamicComponent } from './dynamic-component';\n\n@Directive({\n  selector: '[kirbyLoadComponent]',\n})\nexport class ComponentLoaderDirective implements OnInit {\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('kirbyLoadComponent') configuration: ComponentConfiguration;\n  @Input() cssClass: string;\n\n  constructor(\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private viewContainerRef: ViewContainerRef,\n    private renderer: Renderer2\n  ) {}\n\n  ngOnInit() {\n    this.loadCard();\n  }\n\n  loadCard() {\n    const componentFactory = this.componentFactoryResolver.resolveComponentFactory(\n      this.configuration.component\n    );\n    this.viewContainerRef.clear();\n    const componentRef = this.viewContainerRef.createComponent(componentFactory);\n    if (componentRef && componentRef.location && componentRef.location.nativeElement) {\n      this.renderer.addClass(componentRef.location.nativeElement, this.cssClass);\n    }\n    (<DynamicComponent>componentRef.instance).data = this.configuration.data;\n  }\n}\n","/**\n * Performs a deep merge of objects and returns new object. Does not modify\n * objects (immutable).\n * It merges from into object to the left\n *  eg. mergeDeep({a: 'will be overridden', b: 'some val'}, {a: 'new val'}) =>  {a: 'new val', b: 'some val'}\n *\n * @param originalObject object - Object to override,\n * @param overrideObject object - Object to override \"toOverride\" values with\n * @param config object - Configuration for how to merge.\n *  mergeArrays determines if it should merge or override arrays\n * @returns object - New object with merged key/values\n */\nexport function mergeDeep(originalObject, overrideObject, config = { mergeArrays: false }) {\n  const isObject = (obj) => obj && typeof obj === 'object';\n\n  return [originalObject, overrideObject].reduce((mergedObject, obj) => {\n    Object.keys(obj).forEach((key) => {\n      const mergedObjectValue = mergedObject[key];\n      const overrideObjectValue = obj[key];\n\n      if (Array.isArray(mergedObjectValue) && Array.isArray(overrideObjectValue)) {\n        mergedObject[key] = config.mergeArrays\n          ? mergedObjectValue.concat(overrideObjectValue)\n          : overrideObjectValue;\n      } else if (isObject(mergedObjectValue) && isObject(overrideObjectValue)) {\n        mergedObject[key] = mergeDeep(mergedObjectValue, overrideObjectValue);\n      } else {\n        mergedObject[key] = overrideObjectValue;\n      }\n    });\n\n    return mergedObject;\n  }, {});\n}\n\nexport function mergeDeepAll(...objects: object[]): object {\n  const objectsWithoutUndefined = objects.filter((object) => object !== undefined);\n  return objectsWithoutUndefined.reduce((originalObject, overrideObject) =>\n    mergeDeep(originalObject, overrideObject)\n  );\n}\n","/* \n  Utility function to check if a given element \n  has an ancestor with a specific node name. \n\n  Can be given a 'stopNodeName' to limit the search\n  as to not climb all the way up through the DOM tree. \n\n  Returns true when element has the ancestorNodeName \n  or an ancestor has the ancestorNodeName. \n\n  Returns false otherwise.\n*/\n\nexport const elementHasAncestor = (\n  element: HTMLElement,\n  ancestorNodeName: string,\n  stopNodeName?: string\n) => {\n  switch (element?.nodeName) {\n    case undefined:\n    case stopNodeName?.toUpperCase():\n      return false;\n    case ancestorNodeName.toUpperCase():\n      return true;\n    default:\n      return elementHasAncestor(element.parentElement, ancestorNodeName, stopNodeName);\n  }\n};\n","import { ChartConfiguration, ChartConfigurationCustomTypesPerDataset } from 'chart.js';\n\n/* \n  Type guard is needed as of chart.js@3.8.1. The config type has been updated to a union type, \n  and the newly added type 'ChartConfigurationCustomTypesPerDataset' does not contain the 'type' property.\n  Typescript will throw an error, when trying to access a property that doesn't exist on all union types,\n  unless a type guard is used. \n*/\n\nexport const chartConfigHasType = (\n  config: ChartConfiguration | ChartConfigurationCustomTypesPerDataset\n): config is ChartConfiguration => {\n  return 'type' in config;\n};\n","// re-export helpers from core, to preserve backwards compatability\n// of 'designsystem' library\nexport * from './element-has-ancestor';\nexport * from './color-helper';\nexport * from './design-token-helper';\nexport * from './string-helper';\nexport * from './theme-color.type';\nexport * from './platform.service';\nexport * from './chart-config-has-type';\n","/*\nCopied from https://github.com/ykdr8/ts-deepcopy.\n\nMIT License\n\nCopyright (c) 2017 ykdr2017\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n */\nexport function deepCopy<Tp>(tgt: Tp): Tp {\n  let cp: Tp;\n  const ptn: number = 0;\n  if (tgt === null) {\n    cp = tgt;\n  } else if (tgt instanceof Date) {\n    cp = new Date((tgt as any).getTime()) as any;\n  } else if (Array.isArray(tgt)) {\n    cp = [] as any;\n    (tgt as any[]).forEach((v, i, arr) => {\n      (cp as any).push(v);\n    });\n    cp = (cp as any).map((n: any) => deepCopy<any>(n));\n  } else if (typeof tgt === 'object' && tgt !== {}) {\n    cp = { ...(tgt as Tp) } as Tp;\n    Object.keys(cp).forEach((k) => {\n      (cp as any)[k] = deepCopy<any>((cp as any)[k]);\n    });\n  } else {\n    cp = tgt;\n  }\n  return cp;\n}\n","import { AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\n\nimport { ColorHelper } from '../../../../../helpers';\n\nconst { getThemeColorHexString } = ColorHelper;\n\n/* The chart.js annotation does not allow for changing the \ndefaults it comes with. In order to have sensible defaults \nthis object is used instead and manually merged with the \nrest of the annotations object */\nconst borderColor = getThemeColorHexString('semi-dark');\nconst borderDash: [number, number] = [6, 3];\nconst borderWidth = 1;\n\nexport const CHART_ANNOTATIONS_CONFIG: Omit<AnnotationTypeRegistry, 'label' | 'polygon'> = {\n  line: {\n    borderDash,\n    borderWidth,\n    borderColor,\n  },\n  ellipse: {\n    borderDash,\n    borderWidth,\n    borderColor,\n    backgroundColor: 'transparent',\n  },\n  box: {\n    borderDash,\n    borderWidth,\n    borderColor,\n    backgroundColor: 'transparent',\n  },\n  point: {\n    backgroundColor: 'initial',\n  },\n};\n","import { ActiveElement, Chart, ChartEvent, ChartOptions } from 'chart.js';\n\n/* Allows for adding functionality to interactions chart.js while \npreserving the interaction functionality the consumer of the component has \npassed by being provided as a callback. */\nexport const CHART_INTERACTION_FUNCTIONS_EXTENSIONS = {\n  onHover: (\n    _event: ChartEvent,\n    activeElements: ActiveElement[],\n    _chart: Chart,\n    callback: ChartOptions['onHover']\n  ) => {\n    if (_chart.options.onClick) {\n      _chart.canvas.style.cursor = activeElements[0] ? 'pointer' : 'default';\n    }\n\n    if (callback) callback(_event, activeElements, _chart);\n  },\n};\n","import { ChartTypeRegistry, Color, Point, TooltipItem, TooltipLabelStyle } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport { Align } from 'chartjs-plugin-datalabels/types/options';\n\nimport { ChartTypesConfig } from '../../';\nimport { ColorHelper, DesignTokenHelper } from '../../../../../helpers';\n\nconst { fontSize } = DesignTokenHelper;\nconst { getThemeColorHexString, getThemeColorRgbString } = ColorHelper;\n\n/**\n * A filter to read a chartpoint from a Chart.js point context (used for chartdata points). Context is provided by Chart.js.\n */\nconst getChartPointFromContext = (context: Context): Point => {\n  return context.dataset.data[context.dataIndex] as Point;\n};\n\nexport const CHART_TYPES_CONFIG: ChartTypesConfig = {\n  bar: {\n    type: 'bar',\n    options: {\n      datasets: {\n        bar: {\n          barPercentage: 0.6,\n        },\n        line: {\n          spanGaps: true,\n        },\n      },\n      indexAxis: 'y',\n      scales: {\n        y: {\n          grid: {\n            drawBorder: false,\n          },\n          ticks: {\n            font: {\n              size: parseInt(fontSize('s')),\n            },\n          },\n        },\n      },\n      elements: {\n        point: {\n          radius: 0,\n        },\n        line: {\n          borderColor: getThemeColorHexString('medium'),\n        },\n      },\n    },\n  },\n  column: {\n    type: 'bar',\n    options: {\n      datasets: {\n        bar: {\n          barPercentage: 0.6,\n        },\n        line: {\n          spanGaps: true,\n        },\n      },\n      indexAxis: 'x',\n      scales: {\n        x: {\n          grid: {\n            drawBorder: false,\n          },\n          ticks: {\n            font: {\n              size: parseInt(fontSize('xs')),\n            },\n          },\n        },\n      },\n      elements: {\n        line: {\n          tension: 0.2,\n          borderColor: getThemeColorHexString('medium'),\n        },\n        point: {\n          radius: 0,\n        },\n      },\n    },\n  },\n  line: {\n    type: 'line',\n    options: {\n      backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n      scales: {\n        x: {\n          grid: {\n            borderColor: getThemeColorHexString('medium'),\n            borderWidth: 1,\n          },\n          ticks: {\n            font: {\n              size: parseInt(fontSize('xs')),\n            },\n          },\n        },\n      },\n      elements: {\n        point: {\n          radius: 0,\n        },\n      },\n    },\n  },\n  stock: {\n    type: 'line',\n    options: {\n      responsive: true,\n      animation: {\n        duration: 0,\n      },\n      layout: {\n        padding: {\n          left: 20,\n          right: 20,\n          top: 30,\n          bottom: 0,\n        },\n      },\n      backgroundColor: getThemeColorRgbString('semi-light', 0.5),\n      scales: {\n        x: {\n          grid: {\n            lineWidth: 0,\n          },\n          ticks: {\n            maxRotation: 0,\n            autoSkipPadding: 120,\n            font: {\n              size: parseInt(fontSize('xs')),\n            },\n          },\n        },\n        y: {\n          position: 'right',\n          display: true,\n          grid: {\n            drawBorder: false,\n          },\n          ticks: {\n            display: true,\n            font: {\n              size: parseInt(fontSize('xs')),\n            },\n          },\n        },\n      },\n      elements: {\n        line: {\n          tension: 0, // Smooth curve (0 = no smoothing)\n          borderWidth: 2,\n        },\n        point: {\n          hitRadius: 20,\n          radius: 0,\n          hoverRadius: 0,\n          hoverBorderWidth: 0,\n        },\n      },\n      normalized: true,\n      plugins: {\n        tooltip: {\n          padding: 10,\n\n          enabled: true,\n          mode: 'index',\n          intersect: false,\n          backgroundColor: getThemeColorHexString('semi-light'),\n          titleColor: getThemeColorHexString('semi-light-contrast'),\n          bodyColor: getThemeColorHexString('semi-light-contrast'),\n          caretSize: 0,\n          bodySpacing: 5,\n          titleSpacing: 5,\n          borderColor: 'transparent',\n          callbacks: {\n            labelColor: (tooltipItem: TooltipItem<keyof ChartTypeRegistry>) => {\n              return {\n                backgroundColor: tooltipItem.dataset.borderColor,\n              } as TooltipLabelStyle;\n            },\n          },\n        },\n        datalabels: {\n          backgroundColor: (context: Context) => context.dataset.borderColor as Color,\n          color: getThemeColorHexString('white'),\n          borderRadius: 3,\n          font: {\n            lineHeight: 1,\n            size: parseInt(fontSize('xs')),\n          },\n          padding: {\n            top: 6,\n            left: 5,\n            right: 5,\n            bottom: 5,\n          },\n          offset: 5,\n          align: (context: Context): Align =>\n            (getChartPointFromContext(context) as any)?.datalabel.position,\n          display: (context: Context): boolean =>\n            !!(getChartPointFromContext(context) as any)?.datalabel,\n          formatter: (value: any): string => value.datalabel.value,\n        },\n      },\n    },\n  },\n};\n","import { Injectable } from '@angular/core';\nimport { ActiveElement, Chart, ChartType as ChartJSType, ChartOptions } from 'chart.js';\nimport { AnnotationType, AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\nimport { toDate } from 'date-fns';\n\nimport { ChartDataLabelOptions, ChartLocale, ChartType, ChartTypeConfig } from '../../';\nimport { deepCopy } from '../../../../helpers/deep-copy';\n\nimport { CHART_ANNOTATIONS_CONFIG } from './configs/annotations.config';\nimport { CHART_INTERACTION_FUNCTIONS_EXTENSIONS } from './configs/interaction-functions-extensions.config';\nimport { CHART_TYPES_CONFIG } from './configs/type.config';\n\n@Injectable()\nexport class ChartConfigService {\n  public getTypeConfig(chartType: ChartType): ChartTypeConfig {\n    /* Deep copy to avoid Chart object modifying parts of CHART_TYPES_CONFIG \n    as it copies by reference when initialized */\n    return deepCopy(CHART_TYPES_CONFIG[chartType]);\n  }\n\n  public getAnnotationDefaults(type: AnnotationType): AnnotationTypeRegistry[AnnotationType] {\n    return CHART_ANNOTATIONS_CONFIG[type];\n  }\n\n  /* Our types does not always map 1 to 1 to the same type \n  that the chart.js chart is actually configured with. Therefore this function \n  for looking up the ChartJSType of a type.  */\n  public chartTypeToChartJSType(chartType: ChartType): ChartJSType {\n    return CHART_TYPES_CONFIG[chartType]['type'] as ChartJSType;\n  }\n\n  public applyInteractionFunctionsExtensions(options: ChartOptions): ChartOptions {\n    const interactionFunctionsExtensions = CHART_INTERACTION_FUNCTIONS_EXTENSIONS;\n    Object.entries(interactionFunctionsExtensions).forEach(([key, _]) => {\n      const callback = options[key];\n      options[key] = (e: Event, a: ActiveElement[], c: Chart) => {\n        interactionFunctionsExtensions[key](e, a, c, callback);\n      };\n    });\n    return options;\n  }\n\n  public getStockChartOptions(dataLabelOptions: ChartDataLabelOptions, locale: ChartLocale) {\n    return {\n      locale: locale,\n      plugins: {\n        tooltip: {\n          callbacks: {\n            title: (tooltipItems) => {\n              const date = toDate((tooltipItems[0]?.raw as any)?.x);\n              if (date.valueOf()) {\n                return date.toLocaleTimeString(locale, {\n                  day: 'numeric',\n                  month: 'short',\n                  hour: '2-digit',\n                  minute: '2-digit',\n                });\n              }\n            },\n            label: (context) => {\n              // It's not possible to add spacing between color legend and text so we\n              // prefix with a space.\n              return ' ' + context.formattedValue + (dataLabelOptions.valueSuffix || '');\n            },\n          },\n        },\n      },\n      scales: {\n        y: {\n          ticks: {\n            callback: (value) => {\n              return value + (dataLabelOptions.valueSuffix || '');\n            },\n          },\n        },\n      },\n    };\n  }\n}\n","import { Chart } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ChartConfigService } from '../';\nimport { mergeDeepAll } from '../../../../helpers/merge-deep';\n\nexport class AnnotationsDelegate {\n  constructor(private chartConfigService: ChartConfigService) {}\n\n  public applyDefaultsToAnnotations(annotations: AnnotationOptions[]) {\n    return annotations.map((annotation) => {\n      const annotationTypeDefaults = this.chartConfigService.getAnnotationDefaults(annotation.type);\n      return mergeDeepAll(annotationTypeDefaults, annotation);\n    });\n  }\n\n  public createAnnotationPluginOptionsObject(annotations: AnnotationOptions[]) {\n    const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);\n    return {\n      plugins: {\n        annotation: {\n          annotations: annotationsWithDefaults,\n        },\n      },\n    };\n  }\n\n  public getExistingChartAnnotations(chart: Chart): AnnotationOptions[] {\n    const annotations = chart.options.plugins?.annotation?.annotations;\n    /* In browser chart.js might return annotations as a Proxy object; force it to be an array.\n       Each annotationOption in the resulting array  will also be a Proxy object. \n       But internally chart.js will just work with them as normal values */\n    if (annotations !== undefined) {\n      return Object.keys(annotations).map((key) => annotations[key]);\n    } else {\n      return [];\n    }\n  }\n}\n","import { ChartType, ScriptableContext } from 'chart.js';\n\nimport { ChartDataset } from '../../';\nimport { ColorHelper } from '../../../../../helpers';\n\nconst { getThemeColorHexString } = ColorHelper;\n\nconst hoverBackgroundColor = getThemeColorHexString('primary');\nconst backgroundColor = getThemeColorHexString('secondary');\n\nfunction scriptedBackgroundColor(context: ScriptableContext<ChartType>) {\n  const dataset = context.dataset as ChartDataset;\n  const highlightedElements = dataset?.kirbyOptions?.highlightedElements;\n\n  if (highlightedElements && highlightedElements.includes(context.dataIndex)) {\n    return hoverBackgroundColor;\n  } else {\n    return backgroundColor;\n  }\n}\n\n// Only adds a hovercolor if an onClick handler is provided\nfunction scriptedHoverBackgroundColor(context: ScriptableContext<ChartType>) {\n  if (context.chart.options.onClick) {\n    return hoverBackgroundColor;\n  }\n}\n\nexport const CHART_GLOBAL_DEFAULTS = {\n  maintainAspectRatio: false,\n  color: getThemeColorHexString('black'),\n  resizeDelay: 10,\n  elements: {\n    bar: {\n      backgroundColor: scriptedBackgroundColor,\n      hoverBackgroundColor: scriptedHoverBackgroundColor,\n    },\n    line: {\n      borderColor: scriptedBackgroundColor,\n      borderWidth: 2,\n      tension: 0.3,\n    },\n  },\n  scales: {\n    linear: {\n      display: false,\n      ticks: {\n        display: false,\n      },\n    },\n    category: {\n      display: true,\n      grid: {\n        display: false,\n      },\n    },\n  },\n  font: {\n    family: 'Roboto',\n  },\n  plugins: {\n    legend: {\n      display: false,\n    },\n    datalabels: {\n      display: false,\n    },\n    tooltip: {\n      enabled: false,\n    },\n  },\n};\n","/* \n  The marker plugin is heavily inspired by https://chartjs-plugin-crosshair.netlify.app\n  The project appears stale and only the vertical line feature is needed\n   part of the plugin that was actually needed is implemented here. \n*/\n\nimport { Chart } from 'chart.js';\nimport { valueOrDefault } from 'chart.js/helpers';\n\nimport { ChartDataset } from '../../../';\n\nconst defaultOptions = {\n  line: {\n    color: 'black',\n    width: 1,\n    dashPattern: [],\n  },\n  snap: {\n    enabled: false,\n  },\n};\n\nconst hasMarkerConfiguration = (chart: Chart) => {\n  /* \n    Hacky solution. Should be fixed in this issue: https://github.com/kirbydesign/designsystem/issues/1967\n  */\n  return chart.data.datasets.some((dataset: ChartDataset) => !!dataset?.kirbyOptions?.isStockChart);\n};\n\nexport default {\n  id: 'marker',\n\n  afterInit: function (chart) {\n    if (!hasMarkerConfiguration(chart)) {\n      return;\n    }\n\n    const xScaleType = chart.config.options.scales.x.type;\n\n    if (\n      xScaleType !== 'linear' &&\n      xScaleType !== 'time' &&\n      xScaleType !== 'category' &&\n      xScaleType !== 'logarithmic'\n    ) {\n      return;\n    }\n\n    if (chart.options.plugins.marker === undefined) {\n      chart.options.plugins.marker = defaultOptions;\n    }\n\n    chart.marker = {\n      enabled: false,\n      suppressUpdate: false,\n      x: null,\n      originalData: [],\n      originalXRange: {},\n      dragStarted: false,\n      dragStartX: null,\n      dragEndX: null,\n      suppressTooltips: false,\n      ignoreNextEvents: 0,\n    };\n  },\n\n  getOption: function (chart, category, name) {\n    return valueOrDefault(\n      chart.options.plugins.marker[category]\n        ? chart.options.plugins.marker[category][name]\n        : undefined,\n      defaultOptions[category][name]\n    );\n  },\n\n  getXScale: function (chart) {\n    return chart.data.datasets.length ? chart.scales[chart.getDatasetMeta(0).xAxisID] : null;\n  },\n  getYScale: function (chart) {\n    return chart.scales[chart.getDatasetMeta(0).yAxisID];\n  },\n\n  afterEvent: function (chart, event) {\n    if (!hasMarkerConfiguration(chart)) {\n      return;\n    }\n    if (chart.config.options.scales.x.length == 0) {\n      return;\n    }\n\n    const e = event.event;\n\n    const xScaleType = chart.config.options.scales.x.type;\n\n    if (\n      xScaleType !== 'linear' &&\n      xScaleType !== 'time' &&\n      xScaleType !== 'category' &&\n      xScaleType !== 'logarithmic'\n    ) {\n      return;\n    }\n\n    const xScale = this.getXScale(chart);\n\n    if (!xScale) {\n      return;\n    }\n\n    if (chart.marker.ignoreNextEvents > 0) {\n      chart.marker.ignoreNextEvents -= 1;\n      return;\n    }\n\n    // fix for Safari\n    let buttons = e.native.buttons === undefined ? e.native.which : e.native.buttons;\n    if (e.native.type === 'mouseup') {\n      buttons = 0;\n    }\n\n    chart.marker.enabled =\n      e.type !== 'mouseout' &&\n      e.x > xScale.getPixelForValue(xScale.min) &&\n      e.x < xScale.getPixelForValue(xScale.max);\n\n    if (!chart.marker.enabled && !chart.marker.suppressUpdate) {\n      if (e.x > xScale.getPixelForValue(xScale.max)) {\n        // suppress future updates to prevent endless redrawing of chart\n        chart.marker.suppressUpdate = true;\n        chart.update('none');\n      }\n      chart.marker.dragStarted = false; // cancel zoom in progress\n      return false;\n    }\n    chart.marker.suppressUpdate = false;\n\n    chart.marker.x = e.x;\n\n    chart.draw();\n  },\n  doDraw: function (chart) {\n    if (!hasMarkerConfiguration(chart)) {\n      return;\n    }\n\n    if (!chart.marker.enabled) {\n      return;\n    }\n\n    this.drawTraceLine(chart);\n    this.interpolateValues(chart);\n    this.drawTracePoints(chart);\n\n    return true;\n  },\n  beforeDraw: function (chart) {\n    return this.doDraw(chart);\n  },\n  // Logic moved to beforeDraw in order\n  // for the vertical line to be drawn\n  // under tooltip and datalabels.\n  // afterDraw: function(chart) {\n  //   return this.doDraw(chart);\n  // },\n\n  drawTraceLine: function (chart) {\n    if (!hasMarkerConfiguration(chart)) {\n      return;\n    }\n    const yScale = this.getYScale(chart);\n\n    const lineWidth = this.getOption(chart, 'line', 'width');\n    const color = this.getOption(chart, 'line', 'color');\n    const dashPattern = this.getOption(chart, 'line', 'dashPattern');\n    const snapEnabled = this.getOption(chart, 'snap', 'enabled');\n\n    let lineX = chart.marker.x;\n\n    if (snapEnabled && chart._active.length) {\n      lineX = chart._active[0].element.x;\n    }\n\n    chart.ctx.beginPath();\n    chart.ctx.setLineDash(dashPattern);\n    chart.ctx.moveTo(lineX, yScale.getPixelForValue(yScale.max));\n    chart.ctx.lineWidth = lineWidth;\n    chart.ctx.strokeStyle = color;\n    chart.ctx.lineTo(lineX, yScale.getPixelForValue(yScale.min));\n    chart.ctx.stroke();\n    chart.ctx.setLineDash([]);\n  },\n\n  drawTracePoints: function (chart) {\n    if (!hasMarkerConfiguration(chart)) {\n      return;\n    }\n    for (let chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n      const dataset = chart.data.datasets[chartIndex];\n      const meta = chart.getDatasetMeta(chartIndex);\n\n      const yScale = chart.scales[meta.yAxisID];\n\n      if (meta.hidden || !dataset.interpolate) {\n        continue;\n      }\n\n      chart.ctx.beginPath();\n      chart.ctx.arc(\n        chart.marker.x,\n        yScale.getPixelForValue(dataset.interpolatedValue),\n        3,\n        0,\n        2 * Math.PI,\n        false\n      );\n      chart.ctx.fillStyle = 'white';\n      chart.ctx.lineWidth = 2;\n      chart.ctx.strokeStyle = dataset.borderColor;\n      chart.ctx.fill();\n      chart.ctx.stroke();\n    }\n  },\n\n  interpolateValues: function (chart) {\n    for (let chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {\n      const dataset = chart.data.datasets[chartIndex];\n\n      const meta = chart.getDatasetMeta(chartIndex);\n\n      const xScale = chart.scales[meta.xAxisID];\n      const xValue = xScale.getValueForPixel(chart.marker.x);\n\n      if (meta.hidden || !dataset.interpolate) {\n        continue;\n      }\n\n      const data = dataset.data;\n      const index = data.findIndex(function (o) {\n        return o.x >= xValue;\n      });\n      const prev = data[index - 1];\n      const next = data[index];\n\n      if (chart.data.datasets[chartIndex].steppedLine && prev) {\n        dataset.interpolatedValue = prev.y;\n      } else if (prev && next) {\n        const slope = (next.y - prev.y) / (next.x - prev.x);\n        dataset.interpolatedValue = prev.y + (xValue - prev.x) * slope;\n      } else {\n        dataset.interpolatedValue = NaN;\n      }\n    }\n  },\n};\n","import {\n  BarController,\n  BarElement,\n  CategoryScale,\n  Chart,\n  Filler,\n  Legend,\n  LinearScale,\n  LineController,\n  LineElement,\n  PointElement,\n  TimeScale,\n  Tooltip,\n} from 'chart.js';\nimport 'chartjs-adapter-date-fns';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\nimport { mergeDeepAll } from '../../../../helpers/merge-deep';\nimport { CHART_GLOBAL_DEFAULTS } from '../chart-config-service/configs/global-defaults.config';\n\nimport MarkerPlugin from './chartjs-plugin-marker/chartjs-plugin-marker';\n\nconst CHART_SCALES = [CategoryScale, LinearScale, TimeScale];\nconst CHART_ELEMENTS = [BarElement, LineElement, PointElement];\nconst CHART_CONTROLLERS = [BarController, LineController];\nconst CHART_PLUGINS = [annotationPlugin, Filler, ChartDataLabels, Tooltip, MarkerPlugin].map(\n  (plugin: any) => (plugin?.__esModule ? plugin.default : plugin)\n);\n\n/* Order matters; defaults must be merged after register as \n   register modifies the Chart.defaults objects */\nChart.register(Legend, ...CHART_SCALES, ...CHART_ELEMENTS, ...CHART_CONTROLLERS, ...CHART_PLUGINS);\n\n/* Chart.defaults is read only; set each key modified in \n   CHART_GLOBAL_DEFAULTS manually */\nconst mergedDefaults = mergeDeepAll(Chart.defaults, CHART_GLOBAL_DEFAULTS);\nObject.entries(CHART_GLOBAL_DEFAULTS).forEach(([key]) => {\n  Chart.defaults[key] = mergedDefaults[key];\n});\n\nexport { Chart };\n","import { ElementRef, Injectable } from '@angular/core';\nimport { ChartConfiguration, ChartOptions } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { mergeDeepAll } from '../../../../helpers/merge-deep';\nimport { chartConfigHasType } from '../../../../helpers';\nimport { ChartConfigService } from '../chart-config-service';\nimport {\n  ChartDataset,\n  ChartHighlightedElements,\n  ChartLabel,\n  ChartType,\n  isNumberArray,\n} from '../charts.types';\n\nimport { AnnotationsDelegate } from './annotations.delegate';\nimport { Chart } from './configured-chart-js';\n\n@Injectable()\nexport class ChartJSService {\n  private chart: Chart;\n  private highlightedElements: ChartHighlightedElements;\n  protected chartType: ChartType;\n  private annotationsDelegate: AnnotationsDelegate;\n\n  constructor(protected chartConfigService: ChartConfigService) {\n    this.annotationsDelegate = new AnnotationsDelegate(chartConfigService);\n  }\n\n  public renderChart(args: {\n    targetElement: ElementRef<HTMLCanvasElement>;\n    type: ChartType;\n    data: ChartDataset[] | number[];\n    labels?: ChartLabel[];\n    customOptions?: ChartOptions;\n    annotations?: AnnotationOptions[];\n    highlightedElements?: ChartHighlightedElements;\n  }): void {\n    const { targetElement, type, data, labels, customOptions, annotations, highlightedElements } =\n      args;\n\n    this.highlightedElements = highlightedElements || null;\n    this.chartType = type;\n\n    const datasets = this.createDatasets(data);\n\n    const options = this.createOptionsObject({\n      customOptions,\n      annotations,\n    });\n    const config = this.createConfigurationObject(type, datasets, options, labels);\n\n    this.initializeNewChart(targetElement.nativeElement, config);\n  }\n\n  public redrawChart() {\n    this.chart.update();\n  }\n\n  public updateData(data: ChartDataset[] | number[]): void {\n    const datasets = this.createDatasets(data);\n\n    this.chart.data.datasets = datasets;\n  }\n\n  public updateLabels(labels: ChartLabel[]) {\n    /* As labels provided via the 'labels' input property always has \n    highest priority - we can just set the property directly */\n    this.chart.data.labels = labels;\n  }\n\n  public updateType(type: ChartType, customOptions?: ChartOptions) {\n    if (type === 'bar' || type === 'column') {\n      /* indexAxis does not update predictably; update by replacing \n         the chart entirely instead */\n      this.destructivelyUpdateType(type, customOptions);\n    } else {\n      this.nonDestructivelyUpdateType(type, customOptions);\n    }\n  }\n\n  public updateOptions(customOptions: ChartOptions, type: ChartType) {\n    const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n    this.chartType = type;\n    this.chart.options = this.createOptionsObject({ customOptions, annotations });\n  }\n\n  public updateAnnotations(annotations: AnnotationOptions[]) {\n    const annotationsWithDefaults =\n      this.annotationsDelegate.applyDefaultsToAnnotations(annotations);\n    this.chart.options.plugins.annotation.annotations = annotationsWithDefaults;\n  }\n\n  public updateHighlightedElements(highlightedElements?: ChartHighlightedElements) {\n    this.highlightedElements = highlightedElements;\n    const oldDatasets = this.chart.data.datasets as ChartDataset[];\n\n    // Clear old datasets of highlighted elements\n    oldDatasets.map((dataset) => {\n      if (dataset?.kirbyOptions?.highlightedElements) {\n        delete dataset.kirbyOptions.highlightedElements;\n      }\n    });\n\n    this.chart.data.datasets = this.createDatasets(oldDatasets);\n  }\n\n  protected createOptionsObject(args: {\n    customOptions?: ChartOptions;\n    annotations?: AnnotationOptions[];\n  }): ChartOptions {\n    const { customOptions, annotations } = args;\n\n    const typeConfig = this.chartConfigService.getTypeConfig(this.chartType);\n    const typeConfigOptions = typeConfig?.options;\n    const annotationPluginOptions = annotations\n      ? this.annotationsDelegate.createAnnotationPluginOptionsObject(annotations)\n      : {};\n\n    const mergedOptions: ChartOptions = mergeDeepAll(\n      typeConfigOptions,\n      customOptions,\n      annotationPluginOptions\n    );\n\n    return this.chartConfigService.applyInteractionFunctionsExtensions(mergedOptions);\n  }\n\n  protected getDefaultLabels(datasets: ChartDataset[]): ChartLabel | ChartLabel[] {\n    /* \n      Chart.js requires labels along the index axis to render anything therefore\n      use blank labels \n    */\n    const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n      previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n    );\n    return Array(largestDataset.data.length).fill('');\n  }\n\n  private createConfigurationObject(\n    type: ChartType,\n    datasets: ChartDataset[],\n    options: ChartOptions,\n    labels?: ChartLabel[]\n  ): ChartConfiguration {\n    const typeConfig = this.chartConfigService.getTypeConfig(type);\n\n    const indexAxis = typeConfig?.options?.indexAxis ?? 'x';\n    const labelsToApply = this.getLabelsToApply({ labels, datasets, type, indexAxis });\n\n    return mergeDeepAll(typeConfig, {\n      data: {\n        labels: labelsToApply,\n        datasets,\n      },\n      options,\n    }) as ChartConfiguration;\n  }\n\n  protected createDatasets(data: ChartDataset[] | number[]): ChartDataset[] {\n    const datasets = isNumberArray(data) ? [{ data }] : data;\n\n    if (this.highlightedElements)\n      this.addHighlightedElementsToDatasets(this.highlightedElements, datasets);\n\n    return datasets;\n  }\n\n  private destructivelyUpdateType(type: ChartType, customOptions?: ChartOptions) {\n    const datasets = this.chart.data.datasets as ChartDataset[];\n    const labels = this.chart.data.labels as ChartLabel[]; // chart.js stores labels as unknown[]; cast it to ChartLabel[]\n    const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n\n    this.chartType = type;\n    const options = this.createOptionsObject({ customOptions, annotations });\n    const config = this.createConfigurationObject(type, datasets, options, labels);\n    const canvasElement = this.chart.canvas;\n\n    this.chart.destroy();\n    this.initializeNewChart(canvasElement, config);\n  }\n\n  private nonDestructivelyUpdateType(chartType: ChartType, customOptions?: ChartOptions) {\n    const annotations = this.annotationsDelegate.getExistingChartAnnotations(this.chart);\n    this.chartType = chartType;\n    const options = this.createOptionsObject({\n      customOptions,\n      annotations,\n    });\n\n    this.chart.options = options;\n\n    if (chartConfigHasType(this.chart.config)) {\n      this.chart.config.type = this.chartConfigService.chartTypeToChartJSType(chartType);\n    }\n  }\n\n  private initializeNewChart(canvasElement: HTMLCanvasElement, config: ChartConfiguration) {\n    this.chart = new Chart(canvasElement, config);\n  }\n\n  private addHighlightedElementsToDatasets(\n    highlightedElements: ChartHighlightedElements,\n    datasets: ChartDataset[]\n  ) {\n    highlightedElements.forEach(([datasetIndex, dataIndex]) => {\n      const dataset = datasets[datasetIndex];\n      if (!dataset) return;\n\n      if (dataset?.kirbyOptions?.highlightedElements) {\n        dataset.kirbyOptions.highlightedElements.push(dataIndex);\n      } else {\n        dataset.kirbyOptions = {\n          ...dataset.kirbyOptions,\n          highlightedElements: [dataIndex],\n        };\n      }\n    });\n  }\n\n  private getLabelsToApply(args: {\n    datasets: ChartDataset[];\n    type: ChartType;\n    indexAxis: 'x' | 'y';\n    labels?: ChartLabel[];\n  }) {\n    const { datasets, labels, indexAxis } = args;\n\n    const datasetHasLabels = ({ data }: ChartDataset) =>\n      !!data?.some(\n        (datapoint) => typeof datapoint === 'object' && typeof datapoint[indexAxis] === 'string'\n      );\n\n    /*\n       Labels can be provided by the user two ways:\n       1. As a seperate ChartLabel[] via the 'labels' input prop - this has highest priority\n       2. Together with the dataset via the 'data' input prop - here each datapoint contains \n       a label for the indexAxis. \n       For example: { x: 'label1', y: 1} in the case where the index axis is 'x'. \n\n       If no labels are provided then default labels are used. \n    */\n    const labelsAreGivenAsSeperateArray = labels !== undefined;\n    const labelsAreGivenTogetherWithDataset = datasets.some(datasetHasLabels);\n\n    if (labelsAreGivenAsSeperateArray) {\n      return labels;\n    } else if (labelsAreGivenTogetherWithDataset) {\n      return null;\n    } else {\n      return this.getDefaultLabels(datasets);\n    }\n  }\n}\n","import { AnnotationTypeRegistry } from 'chartjs-plugin-annotation';\n\nimport { ChartTypesConfig } from '../../';\n\nexport const TEST_CHART_TYPES_CONFIG: ChartTypesConfig = {\n  bar: {\n    type: 'bar',\n    options: {\n      indexAxis: 'y',\n      elements: {\n        line: {\n          borderColor: 'blue',\n        },\n      },\n    },\n  },\n  column: {\n    type: 'bar',\n    options: {\n      backgroundColor: 'red',\n    },\n  },\n  line: {\n    type: 'line',\n    options: {\n      backgroundColor: 'blue',\n      elements: {\n        line: {\n          borderColor: 'red',\n        },\n      },\n    },\n  },\n  stock: {\n    type: 'line',\n    options: {\n      locale: 'en-US',\n      responsive: true,\n      animation: {\n        duration: 0,\n      },\n      layout: {\n        padding: {\n          left: 0,\n          right: 10,\n          top: 30,\n          bottom: 0,\n        },\n      },\n      backgroundColor: 'rgba(235, 235, 235, 0.5)',\n      scales: {\n        x: {\n          type: 'time',\n          time: {\n            unit: 'day',\n            displayFormats: {\n              hour: 'HH:mm',\n              day: 'MMM d',\n            },\n          },\n          grid: {\n            lineWidth: 0,\n          },\n          ticks: {\n            maxRotation: 0,\n            source: 'data',\n            autoSkipPadding: 40,\n            font: {\n              size: 12,\n            },\n          },\n          adapters: {\n            date: {\n              locale: {\n                code: 'en-US',\n                formatLong: {},\n                localize: {},\n                match: {},\n                options: {\n                  weekStartsOn: 0,\n                  firstWeekContainsDate: 1,\n                },\n              },\n            },\n          },\n        },\n        y: {\n          position: 'right',\n          display: true,\n          grid: {\n            drawBorder: false,\n          },\n          ticks: {\n            display: true,\n            font: {\n              size: 12,\n            },\n          },\n        },\n      },\n      elements: {\n        line: {\n          tension: 0,\n          borderWidth: 2,\n        },\n        point: {\n          hitRadius: 20,\n          radius: 0,\n          hoverRadius: 0,\n          hoverBorderWidth: 0,\n        },\n      },\n      normalized: true,\n      plugins: {\n        tooltip: {\n          mode: 'index',\n          intersect: false,\n          caretSize: 1,\n          caretPadding: 12,\n          displayColors: true,\n          backgroundColor: '#ebebeb',\n          padding: 8,\n          titleColor: 'black',\n          bodyColor: 'black',\n          titleFont: {\n            weight: 'normal',\n            size: 12,\n          },\n          bodyFont: {\n            size: 16,\n            weight: 'bold',\n          },\n          callbacks: {},\n        },\n        // marker: {\n        //   line: {\n        //     color: 'red',\n        //   },\n        // },\n        datalabels: {\n          color: '#ffffff',\n          borderRadius: 3,\n          font: {\n            lineHeight: 1,\n            size: 12,\n          },\n          padding: {\n            top: 6,\n            left: 5,\n            right: 5,\n            bottom: 5,\n          },\n          offset: 5,\n        },\n      },\n    },\n  },\n};\n\nexport const TEST_CHART_ANNOTATIONS_CONFIG: Omit<AnnotationTypeRegistry, 'label' | 'polygon'> = {\n  line: {\n    borderDash: [6, 3],\n  },\n  ellipse: {\n    borderDash: [3, 6],\n  },\n  box: {},\n  point: {\n    backgroundColor: 'initial',\n  },\n};\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { ChartOptions } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\n\nimport { ChartDataset, ChartHighlightedElements, ChartLabel, ChartType } from '../';\nimport { ResizeObserverFactory } from '../../../shared';\nimport { ChartJSService } from '../chart-js-service/';\n\n@Component({\n  selector: 'kirby-base-chart',\n  templateUrl: './base-chart.component.html',\n  styleUrls: ['./base-chart.component.scss'],\n})\nexport class BaseChartComponent implements AfterViewInit, OnChanges {\n  @Input() type: ChartType;\n  @Input() data: ChartDataset[] | number[];\n\n  @Input() labels: ChartLabel[];\n\n  @Input() customOptions?: ChartOptions;\n  @Input() annotations?: AnnotationOptions[];\n  @Input() highlightedElements?: ChartHighlightedElements;\n\n  @HostBinding('style.--kirby-chart-height')\n  _height: string;\n  @Input() set height(value: string | number) {\n    this._height = typeof value === 'number' ? `${value}px` : value;\n  }\n\n  @ViewChild('chartCanvas')\n  canvasElement: ElementRef<HTMLCanvasElement>;\n\n  private chartHasBeenRendered: boolean = false;\n\n  constructor(protected chartJSService: ChartJSService) {}\n\n  ngAfterViewInit() {\n    /* \n       A chart is not rendered until it has both a height and a width. \n       If ChartComponent is slotted in an ionic component it will\n       not have any height or width on afterViewInit. This will cause \n       the animation to not be played on first draw. \n    */\n    const canvasElement = this.canvasElement.nativeElement;\n    this.whenElementHasHeightAndWidth(canvasElement).then(() => this.renderChart());\n  }\n\n  private whenElementHasHeightAndWidth(element: HTMLElement): Promise<void> {\n    const rectIs2D = ({ width, height }) => height > 0 && width > 0;\n\n    return new Promise((resolve) => {\n      const initialClientRect = element.getBoundingClientRect();\n      if (rectIs2D(initialClientRect)) resolve();\n\n      const resizeObserver = new ResizeObserverFactory().create(([resizeObserverEntry]) => {\n        if (rectIs2D(resizeObserverEntry.contentRect)) {\n          resizeObserver.unobserve(element);\n          resolve();\n        }\n      });\n\n      resizeObserver.observe(element);\n    });\n  }\n\n  ngOnChanges(simpleChanges: SimpleChanges) {\n    if (this.chartHasBeenRendered) {\n      let shouldRedrawChart = false;\n\n      const keyUpdateFnPairs = {\n        data: () => this.updateData(),\n        labels: () => this.updateLabels(),\n        type: () => this.updateType(),\n        customOptions: () => this.updateCustomOptions(),\n        annotations: () => this.updateAnnotations(),\n        highlightedElements: () => this.updateHighlightedElements(),\n      };\n\n      Object.entries(simpleChanges).forEach(([key]) => {\n        if (simpleChanges[key].firstChange || !keyUpdateFnPairs[key]) return;\n        shouldRedrawChart = true;\n        keyUpdateFnPairs[key]();\n      });\n\n      if (shouldRedrawChart) this.redrawChart();\n    }\n  }\n\n  protected renderChart(additionalArgs?: any) {\n    this.chartHasBeenRendered = true;\n    this.chartJSService.renderChart({\n      targetElement: this.canvasElement,\n      type: this.type,\n      data: this.data,\n      labels: this.labels,\n      customOptions: this.customOptions,\n      annotations: this.annotations,\n      highlightedElements: this.highlightedElements,\n      ...additionalArgs,\n    });\n  }\n\n  private updateData() {\n    this.chartJSService.updateData(this.data);\n  }\n\n  private updateLabels() {\n    this.chartJSService.updateLabels(this.labels);\n  }\n\n  private updateType() {\n    this.chartJSService.updateType(this.type, this.customOptions);\n  }\n\n  private updateCustomOptions() {\n    this.chartJSService.updateOptions(this.customOptions, this.type);\n  }\n\n  private updateAnnotations() {\n    this.chartJSService.updateAnnotations(this.annotations);\n  }\n\n  private updateHighlightedElements() {\n    this.chartJSService.updateHighlightedElements(this.highlightedElements);\n  }\n\n  private redrawChart() {\n    this.chartJSService.redrawChart();\n  }\n}\n","<div class=\"chart-container\">\n  <canvas #chartCanvas>\n    <!-- Slotted content makes it possible to insert fallback content for screen readers \n    https://www.chartjs.org/docs/latest/general/accessibility.html-->\n    <ng-content></ng-content>\n  </canvas>\n</div>\n","import { Component, Input } from '@angular/core';\n\nimport { BaseChartComponent, ChartJSService, ChartType } from '../shared';\n\n@Component({\n  selector: 'kirby-chart',\n  templateUrl: '../shared/base-chart/base-chart.component.html',\n  styleUrls: ['../shared/base-chart/base-chart.component.scss'],\n  providers: [ChartJSService],\n})\nexport class ChartComponent extends BaseChartComponent {\n  @Input() type: Exclude<ChartType, 'stock'> = 'column';\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { ChartDataset, ChartOptions, ScatterDataPoint } from 'chart.js';\nimport { AnnotationOptions } from 'chartjs-plugin-annotation';\nimport { toDate } from 'date-fns';\n\nimport { mergeDeepAll } from '../../../helpers/merge-deep';\nimport {\n  ChartDataLabelOptions,\n  ChartHighlightedElements,\n  ChartJSService,\n  ChartLabel,\n  ChartLocale,\n  ChartType,\n} from '../shared';\n\n@Injectable()\nexport class StockChartJSService extends ChartJSService {\n  static STOCK_CHART_LOCALE_DEFAULT: ChartLocale = 'en-US';\n\n  protected readonly chartType = 'stock';\n  private dataLabelOptions: ChartDataLabelOptions;\n\n  public renderChart(args: {\n    targetElement: ElementRef<HTMLCanvasElement>;\n    type: ChartType;\n    data: ChartDataset[] | number[];\n    labels?: ChartLabel[];\n    customOptions?: ChartOptions;\n    annotations?: AnnotationOptions[];\n    dataLabelOptions?: ChartDataLabelOptions;\n    highlightedElements?: ChartHighlightedElements;\n  }): void {\n    const { dataLabelOptions, ...superArgs } = args;\n    this.dataLabelOptions = args.dataLabelOptions || null;\n    super.renderChart(superArgs);\n  }\n\n  private get locale(): ChartLocale {\n    return this.dataLabelOptions?.locale || StockChartJSService.STOCK_CHART_LOCALE_DEFAULT;\n  }\n\n  protected getDefaultLabels(datasets: ChartDataset[]) {\n    const largestDataset = datasets.reduce((previousDataset, currentDataset) =>\n      previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset\n    );\n    return largestDataset.data.map((point: ScatterDataPoint) =>\n      toDate(point.x).toLocaleDateString(this.locale, {\n        month: 'short',\n        day: 'numeric',\n      })\n    );\n  }\n\n  protected createOptionsObject(args: {\n    customOptions?: ChartOptions;\n    annotations?: AnnotationOptions[];\n  }): ChartOptions {\n    const superOptions = super.createOptionsObject(args);\n    const stockOptions: ChartOptions = this.chartConfigService.getStockChartOptions(\n      this.dataLabelOptions,\n      this.locale\n    );\n\n    return mergeDeepAll(stockOptions, superOptions);\n  }\n\n  protected createDatasets(data: ChartDataset[] | number[]) {\n    let datasets = super.createDatasets(data);\n    /* \n       Hacky solution. Should be fixed in this issue:\n      https://github.com/kirbydesign/designsystem/issues/1967 \n    */\n    // We need to modify the datasets in order to add datalabels.\n    if (\n      this.dataLabelOptions?.showCurrent ||\n      this.dataLabelOptions?.showMax ||\n      this.dataLabelOptions?.showMin\n    ) {\n      datasets = this.addDataLabelsData(datasets);\n    }\n\n    return datasets.map((dataset: any) => ({\n      ...dataset,\n      kirbyOptions: { ...dataset.kirbyOptions, isStockChart: true },\n    }));\n  }\n\n  /**\n   * Decorate ChartDataset with properties to allow for datalabels.\n   *\n   * @param data\n   * @returns ChartDataset[]\n   */\n  private addDataLabelsData(data: ChartDataset[]): ChartDataset[] {\n    const decorateDataPoint = (\n      set: ChartDataset,\n      axis: 'x' | 'y',\n      direction: 'high' | 'low',\n      position: 'bottom' | 'top' | 'left' | 'right'\n    ): void => {\n      const { value, pointer } = this.locateValueIndexInDataset(set, axis, direction);\n      set.data[pointer] = {\n        ...(set.data[pointer] as ScatterDataPoint),\n        datalabel: {\n          value: value + (this.dataLabelOptions.valueSuffix || ''),\n          position,\n        },\n      } as ScatterDataPoint;\n    };\n\n    data.map((set) => {\n      if (this.dataLabelOptions.showMin) {\n        decorateDataPoint(set, 'y', 'low', 'bottom');\n      }\n      if (this.dataLabelOptions.showMax) {\n        decorateDataPoint(set, 'y', 'high', 'top');\n      }\n      if (this.dataLabelOptions.showCurrent) {\n        decorateDataPoint(set, 'x', 'high', 'right');\n      }\n    });\n    return data;\n  }\n\n  private locateValueIndexInDataset(\n    dataset: ChartDataset,\n    axis: string,\n    direction: 'low' | 'high'\n  ): { value: number; pointer: number } {\n    let pointer: number;\n    let value: number;\n    dataset.data.forEach((datapoint, index) => {\n      if (direction == 'low' && (!value || datapoint[axis] < value)) {\n        value = datapoint['y'];\n        pointer = index;\n      }\n      if (direction == 'high' && (!value || datapoint[axis] > value)) {\n        value = datapoint['y'];\n        pointer = index;\n      }\n    });\n    return { value, pointer };\n  }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { BaseChartComponent, ChartDataLabelOptions, ChartJSService } from '../shared';\n\nimport { StockChartJSService } from './stock-chart-js.service';\n\n@Component({\n  selector: 'kirby-stock-chart',\n  providers: [{ provide: ChartJSService, useClass: StockChartJSService }],\n  templateUrl: '../shared/base-chart/base-chart.component.html',\n  styleUrls: ['../shared/base-chart/base-chart.component.scss'],\n})\nexport class StockChartComponent extends BaseChartComponent {\n  @Input() dataLabelOptions?: ChartDataLabelOptions;\n\n  readonly type = 'stock';\n\n  protected renderChart() {\n    super.renderChart({ dataLabelOptions: this.dataLabelOptions });\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ChartComponent } from './chart';\nimport { ChartConfigService } from './shared';\nimport { StockChartComponent } from './stock-chart';\n\n@NgModule({\n  declarations: [ChartComponent, StockChartComponent],\n  exports: [ChartComponent, StockChartComponent],\n  providers: [ChartConfigService],\n})\nexport class ChartsModule {}\n","import { ElementRef, Injectable } from '@angular/core';\n\nimport { WindowRef } from '../../../types/window-ref';\n\nimport { CalendarOptions } from './calendar-options.model';\n\n@Injectable()\nexport class CalendarHelper {\n  private embeddedView: Window;\n  private embeddedViewReady = false;\n\n  constructor(private windowRef: WindowRef) {}\n\n  public init(\n    calendarContainer: ElementRef,\n    options: CalendarOptions,\n    onDaySelected: (cell: { isSelectable: boolean; date: number }) => void,\n    onChangeMonth: (index: number) => void\n  ) {\n    if (this.hasEmbeddedView(calendarContainer)) {\n      const iframe = <HTMLIFrameElement>calendarContainer.nativeElement;\n      iframe.onload = () => {\n        this.embeddedViewReady = true;\n        this.emitOptionsToEmbeddedView(options);\n      };\n      this.embeddedView = iframe.contentWindow;\n\n      this.windowRef.nativeWindow.addEventListener('message', (event: MessageEvent) =>\n        this.handleMessageEvent(event, onDaySelected, onChangeMonth)\n      );\n    }\n  }\n\n  public update(options: CalendarOptions) {\n    if (this.embeddedViewReady) {\n      this.emitOptionsToEmbeddedView(options);\n    }\n  }\n\n  public setSelectedDay(day: number) {\n    if (this.embeddedViewReady) {\n      this.embeddedView.postMessage(\n        {\n          type: 'kirbyCalendarSetSelectedDay',\n          selectedDay: day,\n        },\n        '*'\n      );\n    }\n  }\n\n  private hasEmbeddedView(calendarContainer: ElementRef) {\n    return (\n      calendarContainer &&\n      calendarContainer.nativeElement &&\n      calendarContainer.nativeElement instanceof HTMLIFrameElement &&\n      calendarContainer.nativeElement.contentWindow\n    );\n  }\n\n  private emitOptionsToEmbeddedView(options: CalendarOptions) {\n    this.embeddedView.postMessage(\n      {\n        type: 'kirbyCalendarInit',\n        ...options,\n      },\n      '*'\n    );\n  }\n\n  private handleMessageEvent(\n    event: MessageEvent,\n    onDaySelected: (cell: { isSelectable: boolean; date: number }) => void,\n    onChangeMonth: (index: number) => void\n  ) {\n    if (this.validateMessage(event)) {\n      switch (event.data.type) {\n        case 'kirbyCalendarDaySelected':\n          if (this.validateDateSelectedMessage(event)) {\n            onDaySelected({ isSelectable: true, date: event.data.day });\n          }\n          break;\n        case 'kirbyCalendarChangeMonth':\n          if (this.validateNavigateMonthMessage(event)) {\n            onChangeMonth(event.data.index);\n          }\n          break;\n      }\n    }\n  }\n\n  private validateMessage(event: MessageEvent) {\n    return (\n      this.embeddedView === event.source &&\n      event.type === 'message' &&\n      event.data &&\n      event.data.type\n    );\n  }\n\n  private validateDateSelectedMessage(event: MessageEvent) {\n    return event.data.type === 'kirbyCalendarDaySelected' && event.data.day;\n  }\n\n  private validateNavigateMonthMessage(event: MessageEvent) {\n    return event.data.type === 'kirbyCalendarChangeMonth' && typeof event.data.index === 'number';\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  HostBinding,\n  Input,\n} from '@angular/core';\n\nexport enum ItemSize {\n  XS = 'xs',\n  SM = 'sm',\n  MD = 'md',\n}\n\n@Component({\n  selector: 'kirby-item',\n  templateUrl: './item.component.html',\n  styleUrls: ['./item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItemComponent {\n  _selectable: boolean;\n\n  @Input() disabled: boolean;\n  @HostBinding('class.selected')\n  @Input()\n  selected: boolean;\n  @Input() set selectable(selectable: boolean) {\n    if (this._selectable === selectable) return;\n    this._selectable = selectable;\n    this.cdr.markForCheck();\n  }\n  @Input()\n  reorderable: boolean;\n  @HostBinding('class')\n  @Input()\n  size: ItemSize | `${ItemSize}` = ItemSize.MD;\n\n  // Prevent default when inside kirby-dropdown to avoid blurring dropdown:\n  onMouseDown(event: MouseEvent) {\n    if (\n      event.currentTarget instanceof HTMLElement &&\n      event.currentTarget.closest('kirby-dropdown')\n    ) {\n      event.preventDefault();\n    }\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {}\n}\n","<ion-item\n  lines=\"none\"\n  [attr.disabled]=\"disabled\"\n  [attr.button]=\"_selectable ? true : null\"\n  [attr.tabindex]=\"_selectable ? null : 0\"\n  detail=\"false\"\n  (mousedown)=\"onMouseDown($event)\"\n>\n  <div class=\"outside\" slot=\"start\">\n    <ng-content select=\"[slot='outside']\"></ng-content>\n  </div>\n  <ng-content></ng-content>\n  <ion-reorder slot=\"end\" *ngIf=\"reorderable\">\n    <kirby-icon name=\"reorder\"></kirby-icon>\n  </ion-reorder>\n</ion-item>\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[kirbyListItemTemplate]',\n})\nexport class ListItemTemplateDirective {}\n\n@Directive({\n  selector: '[kirbyListHeader], [kirbyListHeaderTemplate]',\n})\nexport class ListHeaderDirective {}\n\n@Directive({\n  selector: '[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]',\n})\nexport class ListSectionHeaderDirective {}\n\n@Directive({\n  selector: '[kirbyListFooter], [kirbyListFooterTemplate]',\n})\nexport class ListFooterDirective {}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnDestroy,\n  Output,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\n\nimport { DesignTokenHelper } from '../../helpers';\n\nexport enum HorizontalDirection {\n  right = 'right',\n  left = 'left',\n}\n\n@Component({\n  selector: 'kirby-popover',\n  template: ` <div #wrapper class=\"wrapper\"><ng-content></ng-content></div> `,\n  styleUrls: ['./popover.component.scss'],\n})\nexport class PopoverComponent implements AfterViewInit, OnDestroy {\n  // removeEventListener same instance of event handler & options\n  private readonly preventScrollEventListenerOptions = {\n    passive: false,\n  } as EventListenerOptions;\n\n  private readonly POPOVER_BODY_PADDING = 12;\n\n  private isShowing: boolean = false;\n  private isFirstToLockScroll: boolean;\n  private zIndex: number;\n  private document: Document;\n\n  @ViewChild('wrapper', { static: true, read: ElementRef })\n  wrapperElement: ElementRef<HTMLDivElement>;\n\n  @Input()\n  popout: HorizontalDirection | `${HorizontalDirection}` = HorizontalDirection.right;\n\n  @Input()\n  target: HTMLElement | ElementRef<HTMLElement>;\n\n  @Output()\n  willHide = new EventEmitter<void>();\n\n  private get targetElement(): HTMLElement {\n    if (this.target instanceof ElementRef) {\n      return this.target.nativeElement;\n    } else {\n      return this.target;\n    }\n  }\n\n  @HostListener('window:resize')\n  _onWindowResize() {\n    this.hide();\n  }\n\n  constructor(private elementRef: ElementRef<HTMLElement>, private renderer: Renderer2) {\n    this.document = elementRef.nativeElement.ownerDocument;\n  }\n\n  ngAfterViewInit(): void {\n    this.placePopoverAboveClosestModal();\n    this.renderer.removeChild(\n      this.elementRef.nativeElement.parentElement,\n      this.elementRef.nativeElement\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.hide();\n  }\n\n  private placePopoverAboveClosestModal() {\n    const closestIonModal = this.elementRef.nativeElement.closest('ion-modal');\n    if (closestIonModal) {\n      this.zIndex = parseInt(closestIonModal.style.zIndex) + 1;\n      this.elementRef.nativeElement.style.zIndex = `${this.zIndex}`;\n    } else {\n      this.zIndex = parseInt(DesignTokenHelper.zLayer('popover'));\n    }\n  }\n\n  // document.removeEventListener needs the exact same event handler & options reference:\n  private static preventEventOutsidePopover(event: TouchEvent) {\n    if (event.target instanceof HTMLElement) {\n      const targetIsInPopover = !!event.target.closest('kirby-popover');\n      if (!targetIsInPopover) {\n        event.preventDefault();\n      }\n    }\n  }\n\n  private preventScroll() {\n    this.isFirstToLockScroll = !this.document.body.classList.contains('backdrop-no-scroll');\n    if (this.isFirstToLockScroll) {\n      this.renderer.addClass(this.document.body, 'backdrop-no-scroll');\n    }\n\n    // preventDefault does not work with Renderer2.listen method; add event listener directly to document instead\n    this.document.addEventListener(\n      'touchmove',\n      PopoverComponent.preventEventOutsidePopover,\n      this.preventScrollEventListenerOptions\n    );\n  }\n\n  private releaseScroll() {\n    if (this.isFirstToLockScroll) {\n      this.renderer.removeClass(this.document.body, 'backdrop-no-scroll');\n    }\n\n    this.document.removeEventListener(\n      'touchmove',\n      PopoverComponent.preventEventOutsidePopover,\n      this.preventScrollEventListenerOptions\n    );\n  }\n\n  show() {\n    this.renderer.addClass(this.elementRef.nativeElement, 'is-opening');\n    this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n\n    this.preventScroll();\n    this.positionWrapper();\n\n    this.renderer.addClass(this.elementRef.nativeElement, 'is-open');\n    this.renderer.removeClass(this.elementRef.nativeElement, 'is-opening');\n\n    this.isShowing = true;\n  }\n\n  hide() {\n    if (!this.isShowing) return;\n\n    this.willHide.emit();\n    this.renderer.removeChild(\n      this.elementRef.nativeElement.parentElement,\n      this.elementRef.nativeElement\n    );\n    this.releaseScroll();\n\n    this.renderer.removeStyle(this.targetElement, 'z-index');\n    this.renderer.removeStyle(this.targetElement, 'pointer-events');\n    this.isShowing = false;\n  }\n\n  private positionWrapper() {\n    const targetDimensions = this.targetElement.getBoundingClientRect();\n\n    this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n\n    const wrapperElement = this.wrapperElement.nativeElement;\n    const wrapperDimensions = wrapperElement.getBoundingClientRect();\n    const viewport = wrapperElement.ownerDocument.defaultView;\n    this.positionHorizontally(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n    this.positionVertically(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n  }\n\n  private positionHorizontally(\n    viewPort: Window,\n    wrapperElement: HTMLDivElement,\n    targetDimensions: DOMRect,\n    wrapperDimensions: DOMRect\n  ) {\n    const viewPortWidth = viewPort.innerWidth;\n    const contentWidth = wrapperDimensions.width;\n    const availableSpaceRight = viewPortWidth - targetDimensions.left;\n    const availableSpaceLeft = targetDimensions.right;\n    const contentCanFitRightOfTarget =\n      availableSpaceRight >= contentWidth + this.POPOVER_BODY_PADDING;\n    const openRight = contentCanFitRightOfTarget || availableSpaceRight >= availableSpaceLeft;\n\n    const [direction, oppositeDirection] =\n      this.popout === HorizontalDirection.left || !openRight\n        ? ['left', 'right']\n        : ['right', 'left'];\n\n    const pxValue =\n      direction === 'left' ? viewPortWidth - targetDimensions.right : targetDimensions.left;\n\n    this.renderer.removeStyle(wrapperElement, direction);\n    this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n  }\n\n  private positionVertically(\n    viewPort: Window,\n    wrapperElement: HTMLDivElement,\n    targetDimensions: DOMRect,\n    wrapperDimensions: DOMRect\n  ) {\n    const viewPortHeight = viewPort.innerHeight;\n    const contentHeight = wrapperDimensions.height;\n    const availableSpaceDown = viewPortHeight - targetDimensions.bottom;\n    const availableSpaceUp = targetDimensions.top;\n    const contentCanFitBelowTarget =\n      availableSpaceDown >= contentHeight + this.POPOVER_BODY_PADDING;\n\n    const isAvailableSpaceBelow =\n      contentCanFitBelowTarget || availableSpaceDown >= availableSpaceUp;\n    const [direction, oppositeDirection] = isAvailableSpaceBelow\n      ? ['bottom', 'top']\n      : ['top', 'bottom'];\n\n    const pxValue =\n      direction === 'bottom' ? targetDimensions.bottom : viewPortHeight - targetDimensions.top;\n\n    this.renderer.removeStyle(wrapperElement, direction);\n    this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n\n    if (direction === 'top') {\n      // Ensure target is elevated above shadows in popover, i.e. content wrapped in Card:\n      this.renderer.setStyle(this.targetElement, 'z-index', `${this.zIndex + 1}`);\n      this.renderer.setStyle(this.targetElement, 'pointer-events', 'none');\n    }\n  }\n}\n","export enum OpenState {\n  closed,\n  opening,\n  open,\n}\n\nexport enum VerticalDirection {\n  up,\n  down,\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class KeyboardHandlerService {\n  handle(event: KeyboardEvent, items: any[] | string[], selectedIndex: number) {\n    let newIndex = -1;\n    switch (event.key) {\n      case 'ArrowUp':\n      case 'ArrowLeft':\n        // Select previous item:\n        newIndex = selectedIndex - 1;\n        break;\n      case 'ArrowDown':\n      case 'ArrowRight':\n        if (selectedIndex === undefined) {\n          // None selected, select first item:\n          newIndex = 0;\n        } else if (selectedIndex < items.length - 1) {\n          // Select next item:\n          newIndex = selectedIndex + 1;\n        }\n        break;\n      case 'Home':\n        // Select first item:\n        newIndex = 0;\n        break;\n      case 'End':\n        // Select last item:\n        newIndex = items.length - 1;\n        break;\n      default:\n        break;\n    }\n    return newIndex;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  Renderer2,\n  RendererStyleFlags2,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DesignTokenHelper } from '../../helpers';\n\nimport { ButtonComponent } from '../button/button.component';\nimport { CardComponent } from '../card/card.component';\nimport { ItemComponent } from '../item/item.component';\nimport { ListItemTemplateDirective } from '../list/list.directive';\nimport { HorizontalDirection, PopoverComponent } from '../popover/popover.component';\n\nimport { OpenState, VerticalDirection } from './dropdown.types';\nimport { KeyboardHandlerService } from './keyboard-handler.service';\n\n@Component({\n  selector: 'kirby-dropdown',\n  templateUrl: './dropdown.component.html',\n  styleUrls: ['./dropdown.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DropdownComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DropdownComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n  static readonly OPEN_DELAY_IN_MS = 100;\n  private state = OpenState.closed;\n  private horizontalDirection: HorizontalDirection | `${HorizontalDirection}` =\n    HorizontalDirection.right;\n  private verticalDirection: VerticalDirection | `${VerticalDirection}` = VerticalDirection.down;\n\n  private _items: string[] | any[] = [];\n  get items(): string[] | any[] {\n    return this._items;\n  }\n\n  @Input() set items(value: string[] | any[]) {\n    this._items = value;\n    this._value = this.items[this.selectedIndex] || null;\n  }\n\n  private _selectedIndex: number = -1;\n  get selectedIndex(): number {\n    return this._selectedIndex;\n  }\n\n  @Input() set selectedIndex(value: number) {\n    if (this._selectedIndex != value) {\n      this._selectedIndex = value;\n      this.focusedIndex = this._selectedIndex;\n      this._value = this.items[this.selectedIndex] || null;\n    }\n  }\n\n  // _focusedIndex keeps track of which element has focus and will be selected\n  // if it is activated (by pressing ENTER or SPACE key)\n  private _focusedIndex: number = -1;\n  get focusedIndex(): number {\n    return this._focusedIndex;\n  }\n\n  @Input() set focusedIndex(value: number) {\n    if (this._focusedIndex !== value) {\n      this._focusedIndex = value;\n      this.scrollItemIntoView(this._focusedIndex);\n    }\n  }\n\n  @Input()\n  itemTextProperty = 'text';\n\n  @Input()\n  placeholder = 'Please select:';\n\n  @Input() set popout(direction: HorizontalDirection | `${HorizontalDirection}`) {\n    this.horizontalDirection = direction || HorizontalDirection.right;\n  }\n\n  get popout() {\n    return this.horizontalDirection;\n  }\n\n  @Input()\n  attentionLevel: '1' | '2' | '3' = '3';\n  readonly attentionLevelOpen = '2';\n\n  @Input()\n  expand?: 'block';\n\n  @Input()\n  disabled = false;\n\n  @HostBinding('attr.disabled')\n  get _isDisabled() {\n    return this.disabled ? 'disabled' : null;\n  }\n\n  @HostBinding('class.error')\n  @Input()\n  hasError: boolean;\n\n  @Input()\n  size: 'sm' | 'md' = 'md';\n\n  @Input()\n  tabindex = 0;\n\n  @HostBinding('class.with-popover')\n  @Input()\n  usePopover = false;\n\n  @HostBinding('attr.tabindex')\n  get _tabindex() {\n    return this.disabled ? -1 : this.tabindex;\n  }\n\n  // Prevent Ionic blur on scroll\n  @HostBinding('attr.no-blur')\n  get _noBlurOnScroll() {\n    return true;\n  }\n\n  /**\n   * Emitted when an item is selected (tap on mobile, click/keypress on web)\n   */\n  @Output() change: EventEmitter<string | any> = new EventEmitter<string | any>();\n\n  private _value: string | any = null;\n  get value(): string | any {\n    return this._value;\n  }\n\n  get selectedText(): string {\n    return this.getTextFromItem(this.value);\n  }\n\n  @HostBinding('class.expand')\n  get _isBlockLevel() {\n    return this.expand === 'block';\n  }\n\n  @HostBinding('attr.role')\n  _role = 'listbox';\n\n  @HostBinding('class.is-opening')\n  get _isOpening(): boolean {\n    return this.state === OpenState.opening;\n  }\n\n  @HostBinding('class.is-open')\n  get isOpen(): boolean {\n    return this.state === OpenState.open;\n  }\n\n  @HostBinding('class.popout-left')\n  get _popoutLeft() {\n    return this.horizontalDirection === HorizontalDirection.left;\n  }\n\n  @HostBinding('class.popout-up')\n  get _popoutUp() {\n    return this.verticalDirection === VerticalDirection.up;\n  }\n\n  /* The 'clicked' class is applied through Hostbinding to prevent the dropdown from getting a focus ring on click.\n    There is a bug that causes the dropdown to get a focus ring on click, if it is the first element that is interacted with\n    after the page is loaded. If the user interacts with any other element before, then the dropdown won't get a focus ring.\n    See issue: https://github.com/kirbydesign/designsystem/issues/2477.\n\n    This solution can potentially be refactored, when popover is not experimental anymore. Then it could be possible \n    to close the dropdown when the popover backdrop is clicked, instead of relying on the blur event, which is utilized\n    by this line below: this.elementRef.nativeElement.focus(). Right now this forces the blur event to be triggered, when\n    clicking outside of the dropdown.\n    */\n  @HostBinding('class.clicked')\n  clicked = false;\n\n  @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n  itemTemplate: TemplateRef<any>;\n  @ContentChildren(ListItemTemplateDirective, { read: ElementRef })\n  slottedItems: QueryList<ElementRef<HTMLElement>>;\n  @ViewChild(CardComponent, { read: ElementRef })\n  cardElement: ElementRef<HTMLElement>;\n  @ViewChild(PopoverComponent)\n  popover?: PopoverComponent;\n  @ViewChild(ButtonComponent, { static: true, read: ElementRef })\n  buttonElement: ElementRef<HTMLElement>;\n  @ViewChildren(ItemComponent, { read: ElementRef })\n  kirbyItemsDefault: QueryList<ElementRef<HTMLElement>>;\n\n  _kirbyItemsSlotted: QueryList<ElementRef<HTMLElement>>;\n  @ContentChildren(ItemComponent, { read: ElementRef })\n  set kirbyItemsSlotted(kirbyItems: QueryList<ElementRef<HTMLElement>>) {\n    const hasSlottedItems = this.itemClickUnlisten?.length > 0;\n    if (hasSlottedItems) {\n      this.unlistenAllSlottedItems();\n    }\n\n    // Setup a click listener for each new slotted items\n    kirbyItems.forEach((kirbyItem, index) => {\n      this.renderer.setAttribute(kirbyItem.nativeElement, 'role', 'option');\n      const unlisten = this.renderer.listen(kirbyItem.nativeElement, 'click', () => {\n        this.onItemSelect(index);\n      });\n\n      this.itemClickUnlisten.push(unlisten);\n    });\n\n    this._kirbyItemsSlotted = kirbyItems;\n  }\n\n  get kirbyItemsSlotted(): QueryList<ElementRef<HTMLElement>> {\n    return this._kirbyItemsSlotted;\n  }\n\n  private itemClickUnlisten: (() => void)[] = [];\n  private intersectionObserverRef: IntersectionObserver;\n  private showDropdownTimeoutId: ReturnType<typeof setTimeout>;\n\n  constructor(\n    private renderer: Renderer2,\n    private elementRef: ElementRef<HTMLElement>,\n    private changeDetectorRef: ChangeDetectorRef,\n    private keyboardHandlerService: KeyboardHandlerService\n  ) {}\n\n  onToggle(event: MouseEvent) {\n    event.stopPropagation();\n\n    this.clicked = true;\n\n    if (!this.isOpen) {\n      this.elementRef.nativeElement.focus();\n    }\n    this.toggle();\n  }\n\n  toggle() {\n    if (this.disabled) {\n      return;\n    }\n    this.isOpen ? this.close() : this.open();\n  }\n\n  onButtonMouseEvent(event: Event) {\n    // Prevent button focus;\n    event.preventDefault();\n  }\n\n  /* Utility that makes it easier to set styles on card element\n  when using popover*/\n  private setPopoverCardStyle(style: string, value: string) {\n    if (!this.usePopover) return;\n\n    this.renderer.setStyle(\n      this.cardElement.nativeElement,\n      style,\n      value,\n      RendererStyleFlags2.DashCase\n    );\n  }\n\n  ngAfterViewInit() {\n    if (this.usePopover && this.expand === 'block') {\n      const { width } = this.elementRef.nativeElement.getBoundingClientRect();\n      this.setPopoverCardStyle('--kirby-card-width', `${width}px`);\n      this.setPopoverCardStyle('max-width', 'initial');\n      this.setPopoverCardStyle('min-width', 'initial');\n    }\n    this.initializeAlignment();\n  }\n\n  private initializeAlignment() {\n    if (this.usePopover) return;\n    if (!this.intersectionObserverRef) {\n      // Get the design token size of the button. In the button stylesheet a medium button height is utils.size(xl)\n      // and a small button height is utils.size(\"l\")\n      const designTokenSizeHeight = this.size === 'md' ? 'xl' : 'l';\n\n      // Setting the rootMargin equal to the height of the button\n      // allows the Intersection Observer Callback to be called\n      // even if the dropdown button is intersecting with the viewport\n      const options = {\n        rootMargin: DesignTokenHelper.size(designTokenSizeHeight),\n      };\n      const callback: IntersectionObserverCallback = (entries) => {\n        // Only apply alignment when opening:\n        if (this.state !== OpenState.opening) {\n          return;\n        }\n\n        // Cancel any pending timer to show dropdown:\n        clearTimeout(this.showDropdownTimeoutId);\n        const entry = entries[0];\n        const isVisible = entry.boundingClientRect.width > 0;\n        if (isVisible && entry.intersectionRatio < 1) {\n          this.setHorizontalDirection(entry);\n          this.setVerticalDirection(entry);\n        }\n        this.showDropdown();\n        this.changeDetectorRef.detectChanges();\n      };\n      this.intersectionObserverRef = new IntersectionObserver(callback, options);\n      this.intersectionObserverRef.observe(this.cardElement.nativeElement);\n    }\n  }\n\n  private setHorizontalDirection(entry: IntersectionObserverEntry) {\n    // If popout direction is set to right, and the entry is cut off to the right by ${entry.boundingClientRect.right - entry.intersectionRect.right}px\n    // it is set to popout left instead, and vice versa for popout direction left\n    if (this.horizontalDirection === HorizontalDirection.right) {\n      if (entry.boundingClientRect.right > entry.rootBounds.right) {\n        this.horizontalDirection = HorizontalDirection.left;\n      }\n    } else {\n      if (entry.boundingClientRect.left < entry.rootBounds.left) {\n        this.horizontalDirection = HorizontalDirection.right;\n      }\n    }\n  }\n\n  private setVerticalDirection(entry: IntersectionObserverEntry) {\n    if (entry.boundingClientRect.top < 0) {\n      // entry is cut off at the top by ${entry.boundingClientRect.top}px\n      // open downwards:\n      this.verticalDirection = VerticalDirection.down;\n    }\n    if (entry.boundingClientRect.bottom > entry.rootBounds.bottom) {\n      // entry is cut off at the bottom by ${entry.boundingClientRect.bottom - entry.intersectionRect.bottom}px\n      const containerOffsetTop = this.elementRef.nativeElement.getBoundingClientRect().top;\n      const SPACING = 5; //TODO: Get from SCSS\n      // Check if the card can fit on top of button:\n      if (containerOffsetTop > entry.target.clientHeight + SPACING) {\n        // open upwards:\n        this.verticalDirection = VerticalDirection.up;\n      }\n    }\n  }\n\n  open() {\n    if (this.disabled) {\n      return;\n    }\n    if (!this.isOpen) {\n      this.state = OpenState.opening;\n      // ensures that the dropdown is opened in case the IntersectionObserverCallback isn't invoked\n      this.showDropdownTimeoutId = setTimeout(\n        () => this.showDropdown(),\n        DropdownComponent.OPEN_DELAY_IN_MS\n      );\n\n      // Move focus to selected item (if any)\n      this.focusedIndex = this.selectedIndex;\n    }\n  }\n\n  private showDropdown() {\n    if (this.state === OpenState.opening) {\n      this.state = OpenState.open;\n      this.popover?.show();\n      this.scrollItemIntoView(this.selectedIndex);\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  close() {\n    if (this.disabled) {\n      return;\n    }\n    if (this.isOpen) {\n      this.state = OpenState.closed;\n      // Reset vertical direction to default\n      this.verticalDirection = VerticalDirection.down;\n      this.popover?.hide();\n    }\n  }\n\n  onItemSelect(index: number) {\n    this.selectItem(index);\n    this.close();\n  }\n\n  private _onChange: (value: any) => void = () => {};\n  private _onTouched = () => {};\n\n  /**\n   * Sets the select's value. Part of the ControlValueAccessor interface\n   * required to integrate with Angular's core forms API.\n   *\n   * @param value New value to be written to the model.\n   */\n  writeValue(value: any): void {\n    this._selectItemByValue(value);\n  }\n\n  /**\n   * Saves a callback function to be invoked when the select's value\n   * changes from user input. Part of the ControlValueAccessor interface\n   * required to integrate with Angular's core forms API.\n   *\n   * @param fn Callback to be triggered when the value changes.\n   */\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  /**\n   * Saves a callback function to be invoked when the select is blurred\n   * by the user. Part of the ControlValueAccessor interface required\n   * to integrate with Angular's core forms API.\n   *\n   * @param fn Callback to be triggered when the component has been touched.\n   */\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  /**\n   * Disables the select. Part of the ControlValueAccessor interface required\n   * to integrate with Angular's core forms API.\n   *\n   * @param isDisabled Sets whether the component is disabled.\n   */\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  private selectItem(index: number) {\n    if (index != this.selectedIndex) {\n      this.selectedIndex = index;\n      this.focusedIndex = index;\n      this.change.emit(this.value);\n      this._onChange(this.value);\n    }\n  }\n\n  private _selectItemByValue(value: string | any) {\n    this.selectedIndex = this.items.indexOf(value);\n  }\n\n  getTextFromItem(item: string | any) {\n    if (!item) {\n      return null;\n    }\n    return typeof item === 'string' ? item : item[this.itemTextProperty];\n  }\n\n  scrollItemIntoView(index: number) {\n    const kirbyItems =\n      this.kirbyItemsSlotted && this.kirbyItemsSlotted.length\n        ? this.kirbyItemsSlotted\n        : this.kirbyItemsDefault;\n    if (kirbyItems && kirbyItems.length) {\n      const selectedKirbyItem = kirbyItems.toArray()[index];\n      if (selectedKirbyItem && selectedKirbyItem.nativeElement) {\n        const itemElement = selectedKirbyItem.nativeElement;\n        itemElement.scrollIntoView({ block: 'nearest' });\n      }\n    }\n  }\n\n  @HostListener('keydown.tab', ['$event'])\n  _onTab(event: KeyboardEvent) {\n    if (this.isOpen) {\n      event.preventDefault();\n      this.close();\n    }\n\n    if (this.clicked) {\n      // Remove the 'clicked' class (Hostbinding) if the user has previously opened the dropdown by clicking,\n      // since the class prevents the focus ring from showing,\n      // which is expected to happen, when using the tab key\n      this.clicked = false;\n    }\n  }\n\n  @HostListener('mousedown', ['$event'])\n  _onMouseDown(event: MouseEvent) {\n    if (this.disabled) {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    }\n  }\n\n  @HostListener('touchstart', ['$event'])\n  _onTouchStart(event: TouchEvent) {\n    if (this.isOpen) {\n      event.stopPropagation();\n    }\n  }\n\n  @HostListener('focus')\n  _onFocus() {\n    if (this.disabled) {\n      this.elementRef.nativeElement.blur();\n    }\n  }\n\n  _onPopoverWillHide() {\n    this.state = OpenState.closed;\n    this.elementRef.nativeElement.focus();\n  }\n\n  @HostListener('keydown.enter')\n  @HostListener('keydown.escape')\n  _onEnterOrEscape() {\n    this.close();\n    this._onTouched();\n  }\n\n  _onPopoverClick(event: PointerEvent) {\n    this.close();\n  }\n\n  @HostListener('blur', ['$event'])\n  _onBlur(event?: FocusEvent) {\n    if (this.usePopover) return;\n    this.close();\n    this._onTouched();\n  }\n\n  @HostListener('keydown.enter', ['$event'])\n  @HostListener('keydown.space', ['$event'])\n  _onEnterOrSpace(event: KeyboardEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    if (this.isOpen) {\n      this.selectItem(this.focusedIndex);\n    }\n\n    this.toggle();\n  }\n\n  @HostListener('keydown.arrowup', ['$event'])\n  @HostListener('keydown.arrowdown', ['$event'])\n  @HostListener('keydown.arrowleft', ['$event'])\n  @HostListener('keydown.arrowright', ['$event'])\n  _onArrowKeys(event: KeyboardEvent) {\n    if (this.disabled) return false;\n\n    // Mirror default HTML5 select behaviour - prevent left/right arrows when open:\n    if (this.isOpen && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {\n      return false;\n    }\n\n    if (!this.isOpen) {\n      // Avoid page scroll\n      event.preventDefault();\n      this.open();\n\n      // If no selected item then focus first or last item\n      if (this.selectedIndex < 0) {\n        switch (event.key) {\n          case 'ArrowUp':\n            this.focusedIndex = this.items.length - 1;\n            break;\n          case 'ArrowDown':\n            this.focusedIndex = 0;\n            break;\n          default:\n            break;\n        }\n      }\n\n      return false;\n    }\n\n    const newFocusedIndex = this.keyboardHandlerService.handle(\n      event,\n      this.items,\n      this.focusedIndex\n    );\n\n    if (newFocusedIndex > -1) {\n      this.focusedIndex = newFocusedIndex;\n    }\n\n    return false;\n  }\n\n  @HostListener('keydown.home', ['$event'])\n  @HostListener('keydown.end', ['$event'])\n  _onHomeEndKeys(event: KeyboardEvent) {\n    if (this.disabled) return;\n    if (!this.isOpen) return;\n\n    const newFocusedIndex = this.keyboardHandlerService.handle(\n      event,\n      this.items,\n      this.focusedIndex\n    );\n    if (newFocusedIndex > -1) {\n      this.focusedIndex = newFocusedIndex;\n    }\n    return false;\n  }\n\n  private unlistenAllSlottedItems() {\n    let unlistenItem: () => void;\n    while ((unlistenItem = this.itemClickUnlisten.pop()) !== undefined) {\n      unlistenItem();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unlistenAllSlottedItems();\n    if (this.intersectionObserverRef) {\n      this.intersectionObserverRef.disconnect();\n    }\n  }\n}\n","<button\n  kirby-button\n  [size]=\"size\"\n  [attentionLevel]=\"isOpen ? attentionLevelOpen : attentionLevel\"\n  tabindex=\"-1\"\n  (click)=\"onToggle($event)\"\n  (mousedown)=\"onButtonMouseEvent($event)\"\n  [disabled]=\"disabled\"\n  type=\"button\"\n>\n  <span class=\"text\">{{ selectedText || placeholder }}</span>\n  <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n  <kirby-popover\n    [target]=\"buttonElement\"\n    [popout]=\"popout\"\n    (click)=\"_onPopoverClick($event)\"\n    (willHide)=\"_onPopoverWillHide()\"\n  >\n    <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n  </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n  <kirby-card>\n    <ng-container *ngFor=\"let item of items; let i = index\">\n      <ng-container\n        *ngTemplateOutlet=\"\n          itemTemplate || defaultItemTemplate;\n          context: {\n            $implicit: item,\n            selected: i === selectedIndex,\n            focused: i === focusedIndex,\n            index: i\n          }\n        \"\n      ></ng-container>\n    </ng-container>\n  </kirby-card>\n</ng-template>\n\n<ng-template\n  #defaultItemTemplate\n  let-item\n  let-selected=\"selected\"\n  let-index=\"index\"\n  let-focused=\"focused\"\n>\n  <kirby-item\n    [selectable]=\"true\"\n    [selected]=\"selected\"\n    (click)=\"onItemSelect(index)\"\n    [class.focused]=\"focused\"\n    role=\"option\"\n  >\n    <!-- Tabindex fixes issue with popover dropdown not working in safari -->\n    <h3 tabindex=\"0\">{{ getTextFromItem(item) }}</h3>\n    <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n  </kirby-item>\n</ng-template>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {\n  add,\n  differenceInDays,\n  eachDayOfInterval,\n  endOfMonth,\n  endOfWeek,\n  format,\n  getYear,\n  isAfter,\n  isBefore,\n  isSameDay,\n  isSameMonth,\n  isWeekend,\n  Locale as LocaleDateFns,\n  startOfDay,\n  startOfMonth,\n  startOfWeek,\n} from 'date-fns';\nimport { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\nimport { da, enGB, enUS } from 'date-fns/locale';\n\nimport { capitalizeFirstLetter } from '@kirby-test-org/core';\n\nimport { CalendarCell } from './helpers/calendar-cell.model';\nimport { CalendarOptions } from './helpers/calendar-options.model';\nimport { CalendarHelper } from './helpers/calendar.helper';\nimport { CalendarYearNavigatorConfig } from './options/calendar-year-navigator-config';\n\nexport type Locale = LocaleDateFns;\ninterface CalendarDay {\n  isCurrentMonth: boolean;\n  isToday: boolean;\n  isWeekend: boolean;\n  isPast: boolean;\n  isFuture: boolean;\n  isDisabled: boolean;\n}\n\nenum TimeUnit {\n  years = 'years',\n  months = 'months',\n  weeks = 'weeks',\n  days = 'days',\n  hours = 'hours',\n  minutes = 'minutes',\n  seconds = 'seconds',\n  milliseconds = 'milliseconds',\n}\n\n@Component({\n  selector: 'kirby-calendar',\n  templateUrl: './calendar.component.html',\n  styleUrls: ['./calendar.component.scss'],\n  providers: [CalendarHelper],\n})\nexport class CalendarComponent implements OnInit, AfterViewInit, OnChanges {\n  @ViewChild('calendarContainer', { static: false }) calendarContainer: ElementRef;\n  @Output() dateChange = new EventEmitter<Date>();\n  @Output() dateSelect = new EventEmitter<Date>();\n  @Output() yearSelect = new EventEmitter<number>();\n  @Input() timezone: 'local' | 'UTC' = 'local';\n  @Input() disableWeekends = false;\n  @Input() disablePastDates = false;\n  @Input() disableFutureDates = false;\n  @Input() alwaysEnableToday = false;\n  @Input() customLocales: { [key: string]: Locale } = {};\n  /* \n    Experimental: Input property not documented on purpose. \n    For context see: https://github.com/kirbydesign/designsystem/issues/2087\n  */\n  @Input() usePopover = false;\n  /**\n   * Configuration for the year navigator.\n   *\n   * Internally, calendar component:\n   * - bases yearNavigatorOptions.from and yearNavigatorOptions.to on todayDate if a number is provided\n   * - prioritizes minDate and maxDate over yearNavigatorOptions.from and yearNavigatorOptions.to\n   */\n  @Input() yearNavigatorOptions: CalendarYearNavigatorConfig;\n\n  _month: CalendarCell[][];\n  _weekDays: string[];\n  private selectedDay: CalendarCell;\n  // NOTE: Internally, all Dates\n  // are normalized to point to local timezone midnight, regardless of the timezone\n  // setting.\n  private activeMonth: Date;\n  private _selectedDate: Date;\n  private _disabledDates: Date[] = [];\n  private _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) {\n    const value = this.normalizeDate(valueLocalOrUTC);\n    this.setActiveMonth(value);\n\n    if (this.hasDateChanged(value, this._selectedDate)) {\n      this.onSelectedDateChange(value);\n      this._selectedDate = value;\n    }\n  }\n\n  get disabledDates(): Date[] {\n    return this._disabledDates;\n  }\n\n  @Input() set disabledDates(value: Date[]) {\n    this._disabledDates = (value || []).map((date) => this.normalizeDate(date));\n  }\n\n  get 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.customLocales };\n\n    return availableLocales[locale] || this.includedLocales.enGB; // Default to enGB if injected locale doesnt exist\n  }\n\n  ngOnInit() {\n    this._weekDays = this.getWeekDays();\n    this.setActiveMonth(this.selectedDate);\n  }\n\n  ngAfterViewInit() {\n    this.calendarHelper.init(\n      this.calendarContainer,\n      this.getHelperOptions(),\n      this._onDateSelected.bind(this),\n      this.onChangeMonth.bind(this)\n    );\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.activeMonth) return;\n    if (\n      changes.disableWeekends ||\n      changes.disablePastDates ||\n      changes.disableFutureDates ||\n      changes.disabledDates ||\n      changes.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\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 monthEnd = endOfMonth(this.activeMonth);\n    const startOfFirstWeek = startOfWeek(monthStart, { locale: this.locale });\n    const endOfLastWeek = endOfWeek(monthEnd, { locale: this.locale });\n    const totalDayCount = differenceInDays(endOfLastWeek, startOfFirstWeek) + 1;\n    const today = this.todayDate ? startOfDay(this.todayDate) : startOfDay(new Date());\n\n    const daysArray = Array.from(Array(totalDayCount).keys());\n\n    const days: CalendarCell[] = daysArray.map((number) => {\n      const cellDate = add(startOfFirstWeek, { [TimeUnit.days]: number });\n      const day = this.getCalendarDay(cellDate, today, monthStart);\n\n      const isSelectable = this.isSelectable(day, cellDate);\n      const isSelected = isSameDay(this.selectedDate, cellDate);\n      const cell = {\n        date: cellDate.getDate(),\n        isCurrentMonth: day.isCurrentMonth,\n        isSelectable,\n        isSelected,\n        cssClasses: this.getCssClasses(day, isSelectable, isSelected),\n      };\n      if (isSelected) {\n        this.selectedDay = cell;\n      }\n      return cell;\n    });\n    this._month = this.chunk(days, 7);\n  }\n\n  private getCalendarDay(date: Date, today: Date, monthStart: Date): CalendarDay {\n    return {\n      isToday: isSameDay(today, date),\n      isPast: isBefore(date, today),\n      isFuture: isAfter(date, today),\n      isWeekend: isWeekend(date),\n      isCurrentMonth: isSameMonth(date, monthStart),\n      isDisabled: this.isDisabledDate(date) || !this.isEnabledDate(date),\n    };\n  }\n\n  private isSelectable(day: CalendarDay, date: Date) {\n    return (\n      (this.alwaysEnableToday && day.isToday) ||\n      (!day.isDisabled &&\n        day.isCurrentMonth &&\n        !(this.disableWeekends && day.isWeekend) &&\n        !(this.disablePastDates && day.isPast) &&\n        !(this.disableFutureDates && day.isFuture) &&\n        !(this.minDate && isBefore(date, this.minDate)) &&\n        !(this.maxDate && isAfter(date, this.maxDate)))\n    );\n  }\n\n  private getCssClasses(day: CalendarDay, isSelectable: boolean, isSelected: boolean) {\n    const cssClasses = {\n      'current-month': day.isCurrentMonth,\n      weekend: day.isWeekend,\n      today: day.isToday,\n      selectable: isSelectable,\n      selected: isSelected,\n      past: day.isPast,\n      disabled: day.isDisabled,\n    };\n    let cssClassString = 'day';\n    for (const key in cssClasses) {\n      if (cssClasses[key]) {\n        cssClassString += ' ' + key;\n      }\n    }\n    return cssClassString;\n  }\n\n  private chunk(array: any[], size: number) {\n    const results = [];\n    while (array.length) {\n      results.push(array.splice(0, size));\n    }\n    return results;\n  }\n\n  private onSelectedDateChange(newDate: Date): void {\n    if (this.selectedDay) {\n      this.selectedDay.isSelected = false;\n    }\n\n    const newDay = this.getCell(newDate);\n    if (newDay) {\n      newDay.isSelected = true;\n      this.selectedDay = newDay;\n    }\n    this.calendarHelper.setSelectedDay(newDate.getDate());\n  }\n\n  _onDateSelected(newDay: CalendarCell) {\n    if (newDay.isSelectable && newDay.date) {\n      let newDate = new Date(this.activeMonth);\n      newDate.setDate(newDay.date);\n\n      if (this.timezone === 'UTC') {\n        newDate = zonedTimeToUtc(this.subtractTimezoneOffset(newDate), this.timeZoneName);\n      }\n\n      const dateToEmit = newDate;\n\n      if (this.hasDateChanged(newDate, this._selectedDate)) {\n        this.onSelectedDateChange(newDate);\n        this._selectedDate = newDate;\n        this.dateChange.emit(dateToEmit);\n      }\n      this.dateSelect.emit(dateToEmit);\n    }\n  }\n\n  private onChangeMonth(direction: number) {\n    this._changeMonth(direction);\n    this.calendarHelper.update(this.getHelperOptions());\n  }\n\n  _changeMonth(index: number) {\n    this.changeActiveView(index, TimeUnit.months);\n  }\n\n  _changeYear(year: string) {\n    const yearNumeric = Number(year);\n    this.changeActiveView(yearNumeric - getYear(this.activeMonth), TimeUnit.years);\n    this.yearSelect.emit(yearNumeric);\n  }\n\n  private changeActiveView(index: number, unit: TimeUnit) {\n    if (index === 0) return;\n    this.activeMonth = add(this.activeMonth, { [unit]: index });\n\n    this.refreshActiveMonth();\n  }\n\n  get _canNavigateBack(): boolean {\n    const reachedPastDatesLimit =\n      this.disablePastDates && isSameMonth(this.activeMonth, this.todayDate);\n\n    const reachedOrExceededMinDate =\n      this.minDate &&\n      (isSameMonth(this.activeMonth, this.minDate) || isBefore(this.activeMonth, this.minDate));\n\n    return !reachedPastDatesLimit && !reachedOrExceededMinDate;\n  }\n\n  get _canNavigateForward(): boolean {\n    const reachedFutureDatesLimit =\n      this.disableFutureDates && isSameMonth(this.activeMonth, this.todayDate);\n\n    const reachedOrExceededMaxDate =\n      this.maxDate &&\n      (isSameMonth(this.activeMonth, this.maxDate) || isAfter(this.activeMonth, this.maxDate));\n\n    return !reachedFutureDatesLimit && !reachedOrExceededMaxDate;\n  }\n\n  private getCell(date: Date) {\n    let foundDay = null;\n    if (date) {\n      for (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      [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      [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  >\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","import { Component, Input } from '@angular/core';\n\nimport { ItemSlidingSide, ItemSwipeAction } from './item-sliding.types';\n\n@Component({\n  selector: 'kirby-item-sliding',\n  templateUrl: './item-sliding.component.html',\n  styleUrls: ['./item-sliding.component.scss'],\n})\nexport class ItemSlidingComponent {\n  @Input() swipeActions: ItemSwipeAction[];\n\n  _side: 'start' | 'end' = 'start';\n  @Input() set side(value: ItemSlidingSide) {\n    this._side = value === 'left' ? 'start' : 'end';\n  }\n\n  get _hasSwipeActions(): boolean {\n    // Using '>' instead of '!==';\n    // will only return true when swipeActions is an array\n    return this.swipeActions?.length > 0;\n  }\n}\n","<ion-item-sliding>\n  <ng-content></ng-content>\n\n  <ion-item-options *ngIf=\"_hasSwipeActions\" [side]=\"_side\">\n    <ng-container *ngFor=\"let swipeAction of swipeActions\">\n      <ion-item-option\n        *ngIf=\"!swipeAction.isDisabled\"\n        [ngClass]=\"swipeAction.type\"\n        (click)=\"swipeAction.onSelected()\"\n      >\n        <kirby-icon\n          *ngIf=\"swipeAction.icon !== undefined\"\n          [name]=\"swipeAction.icon\"\n          slot=\"top\"\n        ></kirby-icon>\n        <ion-label>{{ swipeAction.title }}</ion-label>\n      </ion-item-option>\n    </ng-container>\n  </ion-item-options>\n</ion-item-sliding>\n","export class UniqueIdGenerator {\n  private static registry = new Map<string, UniqueIdGenerator>();\n  private id = 0;\n\n  private constructor(private scope: string) {}\n\n  static scopedTo(scope: string) {\n    let scopedGenerator = UniqueIdGenerator.registry.get(scope);\n    if (!scopedGenerator) {\n      scopedGenerator = new UniqueIdGenerator(scope);\n      UniqueIdGenerator.registry.set(scope, scopedGenerator);\n    }\n    return scopedGenerator;\n  }\n\n  next(): string {\n    return `${this.scope}-${this.id++}`;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n} from '@angular/core';\n\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\n\n@Component({\n  selector: 'kirby-checkbox',\n  templateUrl: './checkbox.component.html',\n  styleUrls: ['./checkbox.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent {\n  @Input() checked: boolean = false;\n  @Input() attentionLevel: '1' | '2' = '2';\n\n  @HostBinding('class.has-label')\n  @Input()\n  text: string;\n\n  @HostBinding('class')\n  @Input()\n  size?: 'xs' | 'sm' | 'md';\n\n  @HostBinding('class.error')\n  @Input()\n  hasError: boolean = false;\n\n  @Input() disabled = false;\n  @HostBinding('attr.disabled')\n  get _isDisabled() {\n    return this.disabled ? 'disabled' : null;\n  }\n\n  @HostBinding('class.attention-level1') get isAttentionLevel1() {\n    return this.attentionLevel === '1';\n  }\n  @HostBinding('class.attention-level2') get isAttentionLevel2() {\n    return this.attentionLevel === '2';\n  }\n\n  @Output() checkedChange = new EventEmitter<boolean>();\n\n  onChecked(checked: boolean): void {\n    this.checked = checked;\n    this.checkedChange.emit(this.checked);\n  }\n\n  // IDs used for a11y labelling\n  _labelId = UniqueIdGenerator.scopedTo('kirby-checkbox-label').next();\n}\n","<div class=\"wrapper\">\n  <ion-checkbox\n    mode=\"md\"\n    [checked]=\"checked\"\n    [disabled]=\"disabled\"\n    (ionChange)=\"onChecked($event.detail.checked)\"\n    [attr.aria-labelledby]=\"text ? _labelId : null\"\n  ></ion-checkbox>\n  <span [id]=\"_labelId\" *ngIf=\"text\">{{ text }}</span>\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n  selector: 'kirby-chip',\n  templateUrl: './chip.component.html',\n  styleUrls: ['./chip.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipComponent {\n  constructor() {\n    console.warn(\n      'DEPRECATION WARNING: `<kirby-chip>` will be removed from the API in Kirby v8. Use the Kirby button component instead.'\n    );\n  }\n\n  @Input() text: string;\n\n  @Input()\n  @HostBinding('attr.aria-selected')\n  @HostBinding('class.is-selected')\n  isSelected: boolean;\n}\n","<span class=\"state-layer\" aria-hidden=\"true\"></span>\n<span class=\"content-layer\">\n  <span>{{ text }}</span>\n</span>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'table[kirby-table]',\n  template: `<ng-content></ng-content>`,\n  styleUrls: ['./table.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableComponent {\n  @HostBinding('class.kirby-table-layout-fixed') @Input() fixedLayout: boolean = false;\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'tr[kirby-tr]',\n  template: ` <ng-content></ng-content> `,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableRowComponent {\n  @HostBinding('class.kirby-selectable-row') @Input() selectable: boolean = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableRowComponent } from './table-row/table-row.component';\nimport { TableComponent } from './table/table.component';\n\n@NgModule({\n  declarations: [TableComponent, TableRowComponent],\n  imports: [CommonModule],\n  exports: [TableComponent, TableRowComponent],\n})\nexport class DataTableModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'kirby-divider',\n  templateUrl: './divider.component.html',\n  styleUrls: ['./divider.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n  @Input()\n  hasMargin: boolean;\n}\n","<hr [class.no-margin]=\"!hasMargin\" />\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  ViewChild,\n} from '@angular/core';\nimport { IonRadio } from '@ionic/angular';\n\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\n\n@Component({\n  selector: 'kirby-radio',\n  templateUrl: './radio.component.html',\n  styleUrls: ['./radio.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioComponent {\n  @Input()\n  value: any;\n\n  @HostBinding('class.has-label')\n  @Input()\n  text: string;\n\n  @HostBinding('class')\n  @Input()\n  size?: 'xs' | 'sm' | 'md';\n\n  @Input()\n  disabled: boolean;\n  @HostBinding('attr.disabled')\n  get _isDisabled() {\n    return this.disabled ? 'disabled' : null;\n  }\n\n  get buttonTabIndex(): number {\n    return this.ionRadioElement ? this.ionRadioElement.nativeElement.tabIndex : -1;\n  }\n\n  focus() {\n    this.ionRadioElement && this.ionRadioElement.nativeElement.focus();\n  }\n\n  _labelId = UniqueIdGenerator.scopedTo('kirby-radio-label').next();\n\n  @ViewChild(IonRadio, { read: ElementRef, static: true })\n  private ionRadioElement?: ElementRef<HTMLIonRadioElement>;\n}\n","<div class=\"wrapper\">\n  <ion-radio\n    [value]=\"value\"\n    [disabled]=\"disabled\"\n    mode=\"md\"\n    [attr.aria-labelledby]=\"text ? _labelId : null\"\n  ></ion-radio>\n  <span [id]=\"_labelId\" *ngIf=\"text\">{{ text }}</span>\n</div>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  ContentChild,\n  ContentChildren,\n  EventEmitter,\n  HostBinding,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChildren,\n} from '@angular/core';\nimport { Component, HostListener, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ListItemTemplateDirective } from '../../list/list.directive';\nimport { RadioComponent } from '../radio.component';\n\n@Component({\n  selector: 'kirby-radio-group',\n  templateUrl: './radio-group.component.html',\n  styles: ['ion-radio-group { display: inherit; flex-wrap: inherit}'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: RadioGroupComponent,\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioGroupComponent implements AfterContentInit, ControlValueAccessor {\n  constructor(private changeDetectionRef: ChangeDetectorRef) {}\n\n  // #region public properties\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  @Input() set disabled(value: boolean) {\n    this._disabled = value;\n    this.setProjectedRadiosDisabledState(value);\n  }\n\n  @HostBinding('class.error') // Used to style radios with error state\n  @Input()\n  hasError: boolean = false;\n\n  get items(): string[] | any[] {\n    return this._items || []; // Ensure items return empty array even if set to null/undefined\n  }\n\n  @Input() set items(value: string[] | any[]) {\n    if ((!value || !value.length) && !this.items.length) return; // Nothing changed, no items before or after\n    this._items = value;\n    this.refreshSelectionState();\n  }\n\n  @Input()\n  itemTextProperty = 'text';\n\n  @Input()\n  itemDisabledProperty = 'disabled';\n\n  get selectedIndex(): number {\n    return this._selectedIndex;\n  }\n\n  @Input() set selectedIndex(value: number) {\n    if (typeof value === 'string') value = parseInt(value); // Ensure data type number, e.g. when used with template syntax without binding: <... selectedIndex=\"1\"\n    // eslint-disable-next-line use-isnan\n    if (value === undefined || value === null || value === NaN) value = -1;\n    if (value === this.selectedIndex) return;\n    this._selectedIndex = value;\n    this._value = this.getValueFromSelectedIndex() || null;\n  }\n\n  get value(): string | any {\n    return this._value;\n  }\n\n  @Input() set value(value: string | any) {\n    this.setSelectedItem(value);\n  }\n\n  private get hasValue(): boolean {\n    return this.value !== undefined && this.value !== null;\n  }\n\n  /**\n   * Emitted when an option is selected\n   */\n  @Output() valueChange: EventEmitter<string | any> = new EventEmitter<string | any>();\n  // #endregion public properties\n\n  // #region \"protected\" properties used by template\n  @ContentChild(ListItemTemplateDirective, { read: TemplateRef })\n  _customItemTemplate: TemplateRef<any>;\n  // #endregion \"protected\" properties used by template\n\n  // #region private fields\n  private _disabled = false;\n  private _items: string[] | any[] = [];\n  private _onChangeCallback: (value: any) => void = () => {};\n  private _onTouched = () => {};\n  private _selectedIndex: number = -1;\n  private _value?: string | any = null;\n  @ViewChildren(RadioComponent)\n  private radioButtons: QueryList<RadioComponent>;\n  @ContentChildren(RadioComponent, { descendants: true })\n  private projectedRadioButtons: QueryList<RadioComponent>;\n\n  private get hasItemsFromContentProjection(): boolean {\n    return (\n      !this.items.length &&\n      !this._customItemTemplate &&\n      this.projectedRadioButtons &&\n      this.projectedRadioButtons.length > 0\n    );\n  }\n\n  // #endregion private fields\n\n  // #region public methods\n  focus() {\n    const findFocusable = (radios: QueryList<RadioComponent>) =>\n      radios && radios.find((radio) => !isNaN(radio.buttonTabIndex) && radio.buttonTabIndex !== -1);\n    const focusable = findFocusable(this.radioButtons) || findFocusable(this.projectedRadioButtons);\n    focusable && focusable.focus();\n  }\n\n  ngAfterContentInit(): void {\n    this.initSelectionStateFromProjectedContent();\n    this.listenForProjectedRadiosChange();\n  }\n\n  registerOnChange(fn: any): void {\n    this._onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.changeDetectionRef.markForCheck();\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.changeDetectionRef.markForCheck();\n  }\n\n  // #endregion public methods\n\n  // #region \"protected\" methods used by template\n  _getTextFromItem(item: string | any): string {\n    if (!item) return null;\n    return typeof item === 'string' ? item : item[this.itemTextProperty];\n  }\n\n  _getDisabledStateFromItem(item: string | any): boolean {\n    if (!item) return undefined;\n    return typeof item === 'string' ? undefined : item[this.itemDisabledProperty];\n  }\n\n  get _hasItems(): boolean {\n    return this.items.length > 0 || this.hasItemsFromContentProjection;\n  }\n\n  _onChange(value: string | any) {\n    if (value === this._value) return;\n    this.setSelectedItem(value);\n    this.valueChange.emit(value);\n    this._onChangeCallback(value);\n  }\n\n  @HostListener('ionBlur')\n  _onRadioBlur() {\n    this._onTouched();\n  }\n\n  // #endregion \"protected\" methods used by template\n\n  // #region private methods\n  private getIndexOfSelectedValue() {\n    if (!this.hasValue) return -1;\n    return this.hasItemsFromContentProjection\n      ? this.getIndexOfProjectedRadio(this.value)\n      : this.items.indexOf(this.value);\n  }\n\n  private getIndexOfProjectedRadio(value: string | any): number {\n    let selectedIndex = -1;\n    this.projectedRadioButtons &&\n      this.projectedRadioButtons.find((radio, i) => {\n        const found = radio.value === value;\n        if (found) {\n          selectedIndex = i;\n        }\n        return found;\n      });\n    return selectedIndex;\n  }\n\n  private getValueFromSelectedIndex(): string | any {\n    if (this.selectedIndex === -1) return;\n    return this.hasItemsFromContentProjection\n      ? this.getValueFromProjectedRadios(this.selectedIndex)\n      : this.items[this.selectedIndex];\n  }\n\n  private getValueFromProjectedRadios(index: number): string | any {\n    const radio =\n      this.projectedRadioButtons &&\n      this.projectedRadioButtons.find((_, i) => {\n        return i === index;\n      });\n    return radio && radio.value;\n  }\n\n  private initSelectionStateFromProjectedContent() {\n    if (this.hasItemsFromContentProjection) {\n      this.refreshSelectionState(); // Initialize selected index and value from projected radios\n    }\n  }\n\n  private listenForProjectedRadiosChange() {\n    this.projectedRadioButtons.changes.subscribe(() => {\n      this.refreshStateFromProjectedContent();\n\n      if (this.disabled) {\n        // Ensure disabled state propagates when re-rendering projected radios.\n        // setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when updating the DOM in QueryList.changes:\n        setTimeout(() => this.setProjectedRadiosDisabledState(this.disabled));\n      }\n    });\n  }\n\n  private refreshSelectionState() {\n    if (this.hasValue) {\n      this._selectedIndex = this.getIndexOfSelectedValue(); // Ensure selectedIndex reflects value within items\n    }\n\n    const valueFromSelectedIndex = this.getValueFromSelectedIndex();\n    this._value = valueFromSelectedIndex !== undefined ? valueFromSelectedIndex : null;\n  }\n\n  private refreshStateFromProjectedContent() {\n    if (this._customItemTemplate) return; // Only refresh on changes to projected content, not when re-rendering custom template\n    this.changeDetectionRef.markForCheck(); // Ensure changes to projected content gets checked in next change detection cycle\n    this.refreshSelectionState(); // Sync selected index and value from projected radios\n  }\n\n  private setSelectedItem(value: string | any) {\n    if (value === this._value) return; // Nothing changed\n    this._value = value;\n    this._selectedIndex = this.getIndexOfSelectedValue();\n  }\n\n  private setProjectedRadiosDisabledState(isDisabled: boolean) {\n    if (!this.projectedRadioButtons || !this.projectedRadioButtons.length) return;\n    this.projectedRadioButtons.forEach((radio, index) => {\n      // Disable all radios when group is disabled, otherwise fall back to each item's disabled state, if defined:\n      radio.disabled = isDisabled || this._getDisabledStateFromItem(this.items[index]);\n    });\n  }\n\n  // #endregion private methods\n}\n","<ion-radio-group *ngIf=\"_hasItems\" [value]=\"value\" (ionChange)=\"_onChange($event.detail.value)\">\n  <ng-container *ngIf=\"!items || !items.length; else itemsTemplate\">\n    <ng-content></ng-content>\n  </ng-container>\n</ion-radio-group>\n\n<ng-template #itemsTemplate>\n  <ng-container *ngFor=\"let item of items; let i = index\">\n    <ng-container\n      *ngTemplateOutlet=\"\n        _customItemTemplate || defaultItemTemplate;\n        context: { $implicit: item, selected: i === selectedIndex, index: i }\n      \"\n    ></ng-container>\n  </ng-container>\n</ng-template>\n\n<ng-template #defaultItemTemplate let-item>\n  <kirby-radio\n    [value]=\"item\"\n    [disabled]=\"disabled || _getDisabledStateFromItem(item)\"\n    [text]=\"_getTextFromItem(item)\"\n  ></kirby-radio>\n</ng-template>\n","import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n  // eslint-disable-next-line\n  selector: '[kirby-affix]',\n})\nexport class AffixDirective {\n  @Input('kirby-affix') type: 'prefix' | 'suffix';\n  constructor(public el: ElementRef) {}\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'kirby-form-field-message',\n  styleUrls: ['./form-field-message.component.scss'],\n  templateUrl: './form-field-message.component.html',\n})\nexport class FormFieldMessageComponent {\n  @Input() text: string;\n  @Input() position: 'left' | 'right' = 'left';\n}\n","{{ text }}<ng-content></ng-content>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { InputComponent } from '../input/input.component';\n\nimport { TextareaComponent } from './../textarea/textarea.component';\n\n@Component({\n  selector: 'kirby-input-counter',\n  templateUrl: './input-counter.component.html',\n})\nexport class InputCounterComponent implements OnInit, OnDestroy {\n  @Input() listenTo: InputComponent | TextareaComponent;\n  length: number;\n  maxlength: number;\n  private _inputChangeSubscription: Subscription;\n\n  get text(): string {\n    if (this.length === undefined) {\n      return undefined;\n    }\n    const ofMaxlength = this.maxlength ? `/${this.maxlength}` : '';\n    return `${this.length}${ofMaxlength}`;\n  }\n\n  ngOnInit(): void {\n    if (this.listenTo) {\n      this.length = this.listenTo.value ? this.listenTo.value.length : 0;\n      this.maxlength = this.listenTo.maxlength;\n      this._inputChangeSubscription = this.listenTo.kirbyChange.subscribe((value) => {\n        this.length = value.length;\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this._inputChangeSubscription) {\n      this._inputChangeSubscription.unsubscribe();\n    }\n  }\n}\n","<kirby-form-field-message [text]=\"text\"></kirby-form-field-message>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\n\nexport enum InputSize {\n  medium = 'md',\n  large = 'lg',\n}\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'input[kirby-input]',\n  styleUrls: ['./input.component.scss'],\n  template: '',\n})\nexport class InputComponent implements OnChanges {\n  private static typeToInputmodeMap = {\n    number: 'decimal',\n    search: 'search',\n  };\n\n  kirbyChange = new EventEmitter<string>();\n\n  @Input() set type(value: string) {\n    const mappedValue = InputComponent.typeToInputmodeMap[value];\n    if (mappedValue && !this.inputmode) {\n      this.inputmode = mappedValue;\n    }\n  }\n\n  @HostBinding('class')\n  @Input()\n  size: InputSize | `${InputSize}` = InputSize.large;\n\n  /**\n   * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n   */\n  @HostBinding('class.borderless')\n  @Input()\n  borderless: boolean;\n\n  @HostBinding('class.error')\n  @Input()\n  hasError: boolean;\n\n  @HostBinding('attr.autocomplete')\n  @Input()\n  autocomplete: 'on' | 'off' = 'off';\n\n  @HostBinding('attr.autocorrect')\n  @Input()\n  autocorrect: 'on' | 'off' = 'off';\n\n  @HostBinding('attr.value')\n  @Input()\n  value: string;\n\n  @HostBinding('attr.maxlength')\n  @Input()\n  maxlength: number;\n\n  @HostBinding('attr.inputmode')\n  @Input()\n  inputmode: string;\n\n  @HostListener('keyup', ['$event.target.value'])\n  _onKeyUp(value: string) {\n    this.kirbyChange.emit(value);\n  }\n\n  @HostListener('paste', ['$event.target'])\n  @HostListener('cut', ['$event.target'])\n  _onCutPaste(target: HTMLInputElement) {\n    //Value of input element is updated after cut/paste:\n    setTimeout(() => this.kirbyChange.emit(target.value));\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.value) {\n      this.kirbyChange.emit(changes.value.currentValue);\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'textarea[kirby-textarea]',\n  styleUrls: ['./textarea.component.scss'],\n  templateUrl: './textarea.component.html',\n})\nexport class TextareaComponent implements OnChanges {\n  kirbyChange = new EventEmitter<string>();\n\n  @Input() value: string;\n\n  /**\n   * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n   */\n  @HostBinding('class.borderless')\n  @Input()\n  borderless: boolean;\n\n  @HostBinding('class.error')\n  @Input()\n  hasError: boolean;\n\n  @HostBinding('attr.autocomplete')\n  @Input()\n  autocomplete: 'on' | 'off' = 'off';\n\n  @HostBinding('attr.autocorrect')\n  @Input()\n  autocorrect: 'on' | 'off' = 'off';\n\n  @HostBinding('attr.maxlength')\n  @Input()\n  maxlength: number;\n\n  @HostListener('keyup', ['$event.target.value'])\n  _onKeyUp(value: string) {\n    this.kirbyChange.emit(value);\n  }\n\n  @HostListener('paste', ['$event.target'])\n  @HostListener('cut', ['$event.target'])\n  _onCutPaste(target: HTMLInputElement) {\n    //Value of textarea element is updated after cut/paste:\n    setTimeout(() => this.kirbyChange.emit(target.value));\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.value) {\n      this.kirbyChange.emit(changes.value.currentValue);\n    }\n  }\n}\n","<ng-content *ngIf=\"!value\"></ng-content>\n<ng-container *ngIf=\"value\">{{ value }}</ng-container>\n","import {\n  AfterContentChecked,\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\nimport { DesignTokenHelper } from '../../helpers';\n\nimport { PlatformService } from '../../helpers/platform.service';\nimport { UniqueIdGenerator } from '../../helpers/unique-id-generator.helper';\nimport { WindowRef } from '../../types/window-ref';\nimport { RadioGroupComponent } from '../radio/radio-group/radio-group.component';\nimport { ResizeObserverService } from '../shared/resize-observer/resize-observer.service';\nimport { AffixDirective } from './directives/affix/affix.directive';\n\nimport { InputCounterComponent } from './input-counter/input-counter.component';\nimport { InputComponent } from './input/input.component';\nimport { TextareaComponent } from './textarea/textarea.component';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'kirby-form-field',\n  styleUrls: ['./form-field.component.scss'],\n  templateUrl: './form-field.component.html',\n})\nexport class FormFieldComponent\n  implements AfterContentChecked, AfterContentInit, OnInit, OnDestroy\n{\n  private isRegistered = false;\n  private element: HTMLElement;\n  private inputElement: HTMLInputElement | HTMLTextAreaElement;\n  private isTouch: boolean;\n  _labelId = UniqueIdGenerator.scopedTo('kirby-form-field-label').next();\n\n  @Input() label: string;\n  @Input() message: string;\n\n  @ContentChildren(AffixDirective) affixElements: QueryList<AffixDirective>;\n  @ContentChild(InputCounterComponent, { static: false }) counter: InputCounterComponent;\n  @ContentChild(RadioGroupComponent) private radioGroupComponent: RadioGroupComponent;\n  @ContentChild(RadioGroupComponent, { read: ElementRef })\n  private radioGroupElement: ElementRef<HTMLElement>;\n\n  @ContentChild(InputComponent, { read: ElementRef }) input: ElementRef<HTMLInputElement>;\n  @ContentChild(TextareaComponent, { read: ElementRef }) textarea: ElementRef<HTMLTextAreaElement>;\n\n  constructor(\n    elementRef: ElementRef<HTMLElement>,\n    private platform: PlatformService,\n    private renderer: Renderer2,\n    private windowRef: WindowRef,\n    private resizeObserverService: ResizeObserverService\n  ) {\n    this.element = elementRef.nativeElement;\n  }\n\n  get _wrapContentInLabel(): boolean {\n    return !!this.label && (!!this.input || !!this.textarea);\n  }\n\n  private dispatchLoadEvent() {\n    // Dispatch an `ionInputDidLoad` event to register\n    // form field + input/textarea with Ionic input shims\n    // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n    this.windowRef.nativeWindow.document.dispatchEvent(\n      new CustomEvent('ionInputDidLoad', {\n        detail: this.element,\n      })\n    );\n  }\n\n  @HostListener('kirbyRegisterFormField')\n  _onRegisterFormField() {\n    this.dispatchLoadEvent();\n  }\n\n  onLabelClick() {\n    this.radioGroupComponent && this.radioGroupComponent.focus();\n  }\n\n  public focus() {\n    if (!this.inputElement) return;\n\n    if (this.isTouch) {\n      // Trigger Ionic's input shims to ensure input is scrolled into view.\n      // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/hacks/scroll-assist.ts\n      const touchStart = new TouchEvent('touchstart');\n      const touchEnd = new TouchEvent('touchend');\n      this.inputElement.dispatchEvent(touchStart);\n      this.inputElement.dispatchEvent(touchEnd);\n    } else {\n      this.inputElement.focus();\n    }\n  }\n\n  ngOnInit() {\n    this.isTouch = this.platform.isTouch();\n  }\n\n  ngAfterContentInit(): void {\n    if (this.label && this.radioGroupElement) {\n      this.renderer.setAttribute(\n        this.radioGroupElement.nativeElement,\n        'aria-labelledby',\n        this._labelId\n      );\n    }\n\n    // Measure the width of all slotted affix elements,\n    // and apply their width + standard padding to the input elements\n    // padding, so the start/end of the input is correctly indented.\n    if (this.input) {\n      this.affixElements.forEach((affix) => {\n        this.resizeObserverService.observe(affix.el, (entry) => {\n          const padding = affix.type === 'prefix' ? 'padding-left' : 'padding-right';\n          const affixWidth = entry.contentRect.width;\n          const existingPadding = parseInt(DesignTokenHelper.size('s'));\n\n          this.renderer.setStyle(\n            this.input.nativeElement,\n            `${padding}`,\n            `${affixWidth + existingPadding}px`\n          );\n        });\n      });\n    }\n  }\n\n  ngAfterContentChecked(): void {\n    if (!this.inputElement) {\n      this.inputElement = this.element.querySelector('input, textarea');\n    }\n\n    // TODO: remove \"!this.inputElement.readOnly\" when ionic has fixed input click issue\n    // https://github.com/ionic-team/ionic-framework/issues/22740\n    if (\n      !this.isRegistered &&\n      this.element.isConnected &&\n      !!this.inputElement &&\n      !this.inputElement.readOnly\n    ) {\n      // Host is connected to dom and slotted input/textarea is present:\n      this.isRegistered = true;\n      this.dispatchLoadEvent();\n    }\n  }\n\n  ngOnDestroy(): void {\n    // Dispatch an `ionInputDidUnload` event to unregister\n    // form field + input/textarea from Ionic input shims\n    // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n    this.windowRef.nativeWindow.document.dispatchEvent(\n      new CustomEvent('ionInputDidUnload', {\n        detail: this.element,\n      })\n    );\n\n    this.affixElements.forEach((affix) => {\n      this.resizeObserverService.unobserve(affix.el);\n    });\n  }\n}\n","<label *ngIf=\"_wrapContentInLabel\">\n  <ng-container *ngTemplateOutlet=\"labelTextTemplate\"></ng-container>\n  <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</label>\n\n<ng-container *ngIf=\"!_wrapContentInLabel\">\n  <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n  <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</ng-container>\n\n<div *ngIf=\"message || counter\" class=\"texts\">\n  <kirby-form-field-message\n    *ngIf=\"message\"\n    class=\"message\"\n    [text]=\"message\"\n  ></kirby-form-field-message>\n\n  <div *ngIf=\"counter\" class=\"counter\">\n    <ng-content select=\"kirby-input-counter\"></ng-content>\n  </div>\n</div>\n\n<ng-template #slottedInputTemplate>\n  <div class=\"affix-container\">\n    <div class=\"prefix vertical-align semi-dark-text\">\n      <ng-content select=\"[kirby-affix='prefix']\"></ng-content>\n    </div>\n    <ng-content select=\"input[kirby-input]\"></ng-content>\n    <ng-content select=\"textarea[kirby-textarea]\"></ng-content>\n    <ng-content select=\"kirby-radio-group\"></ng-content>\n    <div class=\"suffix vertical-align semi-dark-text\">\n      <ng-content select=\"[kirby-affix='suffix']\"></ng-content>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #labelTextTemplate>\n  <ng-container *ngIf=\"label\">\n    <span class=\"text\">{{ label }}</span>\n  </ng-container>\n</ng-template>\n\n<ng-template #labelTemplate>\n  <ng-container *ngIf=\"label\">\n    <label class=\"text\" [id]=\"_labelId\" (click)=\"onLabelClick()\">{{ label }}</label>\n  </ng-container>\n</ng-template>\n","import { FormatWidth, getLocaleDateFormat } from '@angular/common';\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  HostListener,\n  Inject,\n  LOCALE_ID,\n  Renderer2,\n} from '@angular/core';\nimport 'inputmask/lib/extensions/inputmask.date.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\n@Directive({\n  selector: '[kirby-input][type=\"date\"]',\n})\nexport class DateInputDirective implements AfterViewInit {\n  @HostListener('input')\n  onInput() {\n    this.updateMask(this.elementRef.nativeElement.value);\n  }\n\n  private maskingElement: HTMLElement;\n\n  constructor(\n    private elementRef: ElementRef,\n    private renderer: Renderer2,\n    @Inject(LOCALE_ID) private locale: string\n  ) {\n    // Remove type to avoid user-agent specific behaviour for [type=\"date\"]\n    this.elementRef.nativeElement.removeAttribute('type');\n  }\n\n  ngAfterViewInit(): void {\n    this.initMask();\n  }\n\n  private initMask(): void {\n    const inputFormat = this.getInputFormat();\n    const placeholder = this.getPlaceholder(inputFormat);\n\n    // Set initial placeholder ex. dd/mm/yyyy\n    this.renderer.setAttribute(this.elementRef.nativeElement, 'placeholder', placeholder);\n\n    // Init InputMask\n    new Inputmask('datetime', {\n      inputFormat,\n      placeholder,\n    }).mask(this.elementRef.nativeElement);\n\n    // Append input overlay, so it's possible to style typed date differntly than the date-mask\n    this.appendMaskingElement();\n  }\n\n  // Keeps order and seperator from speficied locale\n  private getInputFormat(): string {\n    const localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n    return localeDateFormat\n      .toLowerCase()\n      .replace(/d+/, 'dd')\n      .replace(/m+/, 'mm')\n      .replace(/y+/, 'yyyy');\n  }\n\n  private getPlaceholder(inputFormat: string): string {\n    return this.locale === 'da' ? inputFormat.split('y').join('å') : inputFormat;\n  }\n\n  private appendMaskingElement(): void {\n    const wrapper = this.wrapElement(this.elementRef.nativeElement);\n    this.renderer.addClass(wrapper, 'date-mask-wrapper');\n\n    this.maskingElement = this.renderer.createElement('div');\n    this.renderer.appendChild(wrapper, this.maskingElement);\n\n    this.renderer.addClass(this.maskingElement, 'date-mask');\n  }\n\n  private wrapElement(element: HTMLElement): HTMLElement {\n    const wrapper = this.renderer.createElement('div');\n    const parent = element.parentElement;\n    this.renderer.insertBefore(parent, wrapper, element);\n    this.renderer.appendChild(wrapper, element);\n    return wrapper;\n  }\n\n  private updateMask(value: string): void {\n    if (!this.maskingElement) return;\n    const lastNumber = value.match(/.*?(\\d)[^\\d]*$/); // get last number in string\n    this.maskingElement.innerHTML = value\n      ? value.slice(0, value.lastIndexOf(lastNumber[1]) + 1)\n      : '';\n  }\n}\n","import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport 'inputmask/lib/extensions/inputmask.numeric.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\ninterface InputMask {\n  unmaskedvalue: () => string;\n  setValue: (val: string) => void;\n}\n\n@Directive({\n  // eslint-disable-next-line\n  selector: '[kirby-decimal-mask]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: DecimalMaskDirective,\n    },\n  ],\n})\nexport class DecimalMaskDirective implements ControlValueAccessor, OnInit {\n  @Input() min: number;\n  @Input() max: number;\n  @Input() precision = 2;\n  @Input() setMaxOnOverflow = false;\n\n  @Input() set allowMinus(allowMinus: boolean) {\n    this._allowMinus = allowMinus || (this.min || 0) < 0;\n  }\n\n  @Input() set disableGroupSeperator(disabled: string) {\n    this._groupSeperatorDisabled = String(disabled) === '' || String(disabled) === 'true';\n  }\n\n  @Input() set maxlength(maxlength: number) {\n    this._maxlength = maxlength;\n\n    const maxlengthValue = parseInt('9'.repeat(maxlength));\n    this.max = this.getMax(maxlengthValue);\n    this.min = this.getMin(maxlengthValue);\n  }\n\n  groupSeparator = getLocaleNumberSymbol(this.locale, NumberSymbol.Group);\n  radixPoint = getLocaleNumberSymbol(this.locale, NumberSymbol.Decimal);\n  inputmask: InputMask;\n\n  _allowMinus = false;\n  _maxlength: number;\n  _groupSeperatorDisabled: boolean;\n\n  onChange = (_: string) => {};\n\n  constructor(private elementRef: ElementRef, @Inject(LOCALE_ID) private locale: string) {}\n\n  ngOnInit(): void {\n    // Set type=\"text\", because functionality like 'setSelectionRange' are not supported on type=\"number\"\n    this.elementRef.nativeElement.setAttribute('type', 'text');\n\n    // Remove maxlength as this is handled by the mask\n    this.elementRef.nativeElement.removeAttribute('maxlength');\n\n    this.initMask();\n  }\n\n  writeValue(val: number): void {\n    if (!this.inputmask) return;\n    const formattedValue = String(val).replace('.', this.radixPoint);\n    this.inputmask.setValue(formattedValue);\n  }\n\n  registerOnChange(onChange: any): void {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(_: any): void {}\n\n  private initMask(): void {\n    new Inputmask('decimal', {\n      groupSeparator: this._groupSeperatorDisabled ? '' : this.groupSeparator,\n      radixPoint: this.radixPoint,\n      digits: this._maxlength ? 0 : this.precision,\n      min: this.min,\n      max: this.max,\n      allowMinus: this._allowMinus,\n      negationSymbol: {\n        front: getLocaleNumberSymbol(this.locale, NumberSymbol.MinusSign),\n        back: '',\n      },\n      SetMaxOnOverflow: this.setMaxOnOverflow,\n      showMaskOnFocus: false,\n      showMaskOnHover: false,\n      placeholder: '',\n      onBeforeWrite: () => {\n        if (!this.inputmask) return;\n        const unmaskedValue = this.inputmask.unmaskedvalue();\n        this.onChange(unmaskedValue.replace(this.radixPoint, '.'));\n      },\n    }).mask(this.elementRef.nativeElement);\n    this.inputmask = this.elementRef.nativeElement.inputmask;\n  }\n\n  private getMax(maxlengthValue: number): number {\n    return this.max === undefined ? maxlengthValue : Math.min(this.max, maxlengthValue);\n  }\n\n  private getMin(maxlengthValue: number): number {\n    if (!this.allowMinus) return;\n    maxlengthValue = -Math.abs(maxlengthValue);\n    return this.min === undefined ? maxlengthValue : -Math.abs(Math.max(this.min, maxlengthValue));\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  HostBinding,\n  Inject,\n  Input,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\nimport { IonFab, IonFabButton } from '@ionic/angular';\n\nimport { ActionSheetComponent } from '../modal/action-sheet/action-sheet.component';\n\n@Component({\n  selector: 'kirby-fab-sheet',\n  templateUrl: './fab-sheet.component.html',\n  styleUrls: ['./fab-sheet.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FabSheetComponent implements AfterContentInit {\n  @Input() disabled: boolean = false;\n  @Input() horizontalAlignment: 'left' | 'center' | 'right' = 'right';\n\n  private _isFabSheetOpen: boolean = false;\n  @HostBinding('class.is-open')\n  get isFabSheetOpen() {\n    return this._isFabSheetOpen;\n  }\n\n  private _isBackdropVisible: boolean = false;\n  get isBackdropVisible() {\n    return this._isBackdropVisible;\n  }\n\n  @ContentChild(ActionSheetComponent, { static: false }) actionSheet: ActionSheetComponent;\n\n  @ViewChild(IonFabButton, { static: true, read: ElementRef })\n  ionFabButton: ElementRef<HTMLElement>;\n\n  @ViewChild(IonFab, { static: true })\n  ionFab: IonFab;\n\n  constructor(\n    private changeDetectorRef: ChangeDetectorRef,\n    private renderer: Renderer2,\n    @Inject(DOCUMENT) private document: any\n  ) {}\n\n  ngAfterContentInit(): void {\n    if (!!this.actionSheet) {\n      this.actionSheet.hideCancel = true;\n    }\n  }\n\n  hideActions() {\n    this.ionFab.close().then(() => this.fabSheetStateChanged(false));\n  }\n\n  onFabButtonClick() {\n    setTimeout(() => {\n      this.fabSheetStateChanged(this.ionFab.activated);\n    });\n  }\n\n  onFabListClick() {\n    this.ionFab.close().then(() => {\n      this.fabSheetStateChanged(false);\n    });\n  }\n\n  fabSheetStateChanged(isOpen: boolean) {\n    this._isFabSheetOpen = isOpen;\n    if (this.isFabSheetOpen) {\n      this.renderer.addClass(this.document.body, 'fab-sheet-active');\n    } else {\n      this.renderer.removeClass(this.document.body, 'fab-sheet-active');\n    }\n\n    this._isBackdropVisible = !!this.actionSheet && isOpen;\n    this.changeDetectorRef.detectChanges();\n  }\n}\n","<ion-backdrop\n  [class.backdrop-visible]=\"isBackdropVisible\"\n  (ionBackdropTap)=\"hideActions()\"\n  (click)=\"hideActions()\"\n></ion-backdrop>\n<ion-fab>\n  <ion-fab-button\n    (click)=\"onFabButtonClick()\"\n    [disabled]=\"disabled\"\n    [attr.disabled]=\"disabled ? true : null\"\n    tabindex=\"-1\"\n  >\n    <ng-content select=\"kirby-icon\"></ng-content>\n  </ion-fab-button>\n  <ion-fab-list\n    *ngIf=\"actionSheet\"\n    side=\"top\"\n    class=\"{{ horizontalAlignment }}\"\n    (click)=\"onFabListClick()\"\n  >\n    <ng-content select=\"kirby-action-sheet\"></ng-content>\n  </ion-fab-list>\n</ion-fab>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n  selector: 'kirby-flag',\n  template: ` <ng-content></ng-content> `,\n  styleUrls: ['./flag.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlagComponent {\n  @Input() size: 'xs' | 'sm' | 'md' = 'md';\n  @Input() themeColor: 'success' | 'warning' | 'danger' | 'semi-light' | 'transparent' =\n    'transparent';\n\n  @HostBinding('class')\n  get _cssClass() {\n    return [this.themeColor, this.size];\n  }\n}\n","// TODO TRM/JEO Parse from scss files instead!!1!!\nexport class ScssHelper {\n  // Breakpoints\n  public static BREAKPOINT_SCREEN_L = 720;\n  public static BREAKPOINT_CARD_S = 320;\n  public static BREAKPOINT_CARD_M = 460;\n  public static BREAKPOINT_CARD_L = 820;\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class BreakpointHelperService implements OnDestroy {\n  currentScreenWidth: 800;\n  private orientationChangedSubject = new Subject<void>();\n\n  constructor() {\n    this.init();\n  }\n\n  private init() {\n    // TODO JEO: Implement Angular/CDK BreakpointObserver:\n    this.orientationChangedSubject.next();\n  }\n\n  observe(): Observable<void> {\n    return this.orientationChangedSubject.asObservable();\n  }\n\n  ngOnDestroy() {\n    this.orientationChangedSubject.complete();\n  }\n}\n","import { Component, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ScssHelper } from '../../scss/scss-helper';\nimport { BreakpointHelperService } from './breakpoint-helper.service';\nimport { GridCardConfiguration } from './grid-card-configuration';\n\nclass GridCard {\n  configuration: GridCardConfiguration;\n  row: number;\n  col: number;\n  colSpan: number;\n\n  constructor(configuration: GridCardConfiguration, row: number, col: number, colSpan: number) {\n    this.configuration = configuration;\n    this.row = row;\n    this.col = col;\n    this.colSpan = colSpan;\n  }\n}\n\n@Component({\n  selector: 'kirby-grid',\n  templateUrl: './grid.component.html',\n  styleUrls: ['./grid.component.scss'],\n})\nexport class GridComponent implements OnDestroy {\n  cardConfigs: GridCardConfiguration[];\n  cards: GridCard[] = [];\n  private breakpointSubscription: Subscription;\n\n  @HostBinding('attr.max-columns')\n  @Input()\n  maxColumns: number;\n\n  @Input()\n  set cardConfigurations(cardConfigurations: GridCardConfiguration[]) {\n    this.cardConfigs = cardConfigurations;\n    // TODO TRM/JEO Remove this when breakpoint observe something something...\n    this.configureGrid();\n  }\n\n  constructor(private breakpointHelper: BreakpointHelperService) {}\n\n  configureGrid() {\n    let calculatedMaxColumns = 0;\n    if (this.maxColumns === undefined) {\n      calculatedMaxColumns =\n        this.breakpointHelper.currentScreenWidth >= ScssHelper.BREAKPOINT_SCREEN_L ? 2 : 1;\n    } else {\n      calculatedMaxColumns = this.maxColumns;\n    }\n    this.cards = [];\n    let columnCounter = 0;\n    let currentRow = 0;\n    let currentColumn = 0;\n\n    this.cardConfigs.forEach((card, index) => {\n      // Cards colspan is added to the column counter\n      columnCounter += card.preferredSize;\n      // If only maxColumns are set to 1, just add all cards with a colspan of 1\n      if (calculatedMaxColumns === 1) {\n        this.cards.push(new GridCard(card, currentRow, currentColumn, 1));\n        currentRow += 1;\n        return;\n      }\n      // If we are below maxColumns, then add the card to the array\n      if (columnCounter <= calculatedMaxColumns) {\n        this.cards.push(new GridCard(card, currentRow, currentColumn, card.preferredSize));\n        // Update currentColumn, so the next card will be placed correctly\n        currentColumn += card.preferredSize;\n      } else {\n        // The new card didn't fit - Calculate remaining columns for previous card\n        const restColumns = calculatedMaxColumns - (columnCounter - card.preferredSize);\n        const prevCard = this.cards[index - 1];\n        // Add the restColumns to the previous cards colspan, to make it span out\n        prevCard.colSpan = restColumns + prevCard.colSpan;\n        // We are now on a new row\n        currentRow += 1;\n        currentColumn = 0;\n        this.cards.push(new GridCard(card, currentRow, currentColumn, card.preferredSize));\n        // Update currentColumn to match the size of the new card and reset columnCounter\n        currentColumn = card.preferredSize;\n        columnCounter = card.preferredSize;\n      }\n      // If we on the last card, make sure it spans all the rest of the columns\n      if (this.cardConfigs.length - 1 === index) {\n        const restColumns = calculatedMaxColumns - columnCounter;\n        const currentCard = this.cards[index];\n        currentCard.colSpan += restColumns;\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.breakpointSubscription) {\n      this.breakpointSubscription.unsubscribe();\n    }\n  }\n}\n","<ng-container *ngFor=\"let card of cards\">\n  <ng-template\n    [kirbyLoadComponent]=\"card.configuration\"\n    [cssClass]=\"'grid-item--col-' + card.colSpan\"\n  ></ng-template>\n</ng-container>\n","import { Type } from '@angular/core';\n\nimport { ComponentConfiguration } from '../shared/component-configuration';\n\nexport class GridCardConfiguration implements ComponentConfiguration {\n  constructor(public component: Type<any>, public data: any, public preferredSize: number) {}\n}\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n  imports: [IonicModule],\n  declarations: [IconComponent],\n  exports: [IconComponent],\n})\nexport class IconModule {}\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n  selector: 'kirby-label',\n  templateUrl: './label.component.html',\n  styleUrls: ['./label.component.scss'],\n})\nexport class LabelComponent {\n  @Input()\n  direction: 'vertical' | 'horizontal' = 'vertical';\n\n  @HostBinding('class.horizontal')\n  get _direction() {\n    return this.direction === 'horizontal';\n  }\n}\n","<ion-label>\n  <ng-content></ng-content>\n</ion-label>\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { CommonModule } from '@angular/common';\n\nimport { IconModule } from '../icon/icon.module';\nimport { ItemComponent } from './item.component';\nimport { LabelComponent } from './label/label.component';\n\n@NgModule({\n  imports: [IonicModule, IconModule, CommonModule],\n  declarations: [ItemComponent, LabelComponent],\n  exports: [ItemComponent, LabelComponent],\n})\nexport class ItemModule {}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'kirby-item-group',\n  templateUrl: './item-group.component.html',\n  styleUrls: ['./item-group.component.scss'],\n})\nexport class ItemGroupComponent {\n  @HostBinding('attr.role') role: string = 'group';\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'kirby-spinner',\n  templateUrl: './spinner.component.html',\n  styleUrls: ['./spinner.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpinnerComponent {}\n","<div class=\"spinner\">\n  <div class=\"inner-circle\"></div>\n  <div class=\"outer-circle\"></div>\n</div>\n","import { ComponentFactoryResolver, Injectable, Injector } from '@angular/core';\nimport { LoadingController } from '@ionic/angular';\n\nimport { SpinnerComponent } from '../spinner/spinner.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LoadingOverlayService {\n  private ionLoading: HTMLIonLoadingElement = null;\n\n  constructor(\n    private loadingController: LoadingController,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private injector: Injector\n  ) {}\n\n  public async showLoadingOverlay(showBackdrop: boolean = true): Promise<void> {\n    if (!this.ionLoading) {\n      this.ionLoading = await this.loadingController.create({\n        cssClass: 'kirby-loading-overlay',\n        duration: 0,\n        message: null,\n        showBackdrop: showBackdrop,\n        spinner: null,\n      });\n\n      const loadingWrapper = this.ionLoading.querySelector('.loading-wrapper');\n      const kirbySpinner = document.createElement('kirby-spinner');\n      const factory = this.componentFactoryResolver.resolveComponentFactory(SpinnerComponent);\n      factory.create(this.injector, [], kirbySpinner);\n      loadingWrapper.appendChild(kirbySpinner);\n\n      await this.ionLoading.present();\n    }\n  }\n\n  public async hideLoadingOverlay(): Promise<void> {\n    if (!!this.ionLoading) {\n      await this.ionLoading.dismiss();\n      this.ionLoading = null;\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'kirby-loading-overlay',\n  templateUrl: './loading-overlay.component.html',\n  styleUrls: ['./loading-overlay.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingOverlayComponent {\n  @Input() public isLoading = true;\n  @Input() public showBackdrop = true;\n}\n","<div class=\"overlay-wrapper\">\n  <div *ngIf=\"isLoading\" [class.backdrop]=\"showBackdrop\" class=\"spinner-wrapper\">\n    <kirby-spinner class=\"spinner\"></kirby-spinner>\n  </div>\n  <div class=\"content-wrapper\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { WindowRef } from '../../../types/window-ref';\n\nimport { Scroll } from './scroll.model';\n\n/**\n * Specify debounce duration in ms\n */\nexport const INFINITE_SCROLL_DEBOUNCE = 100;\n\n@Directive({\n  selector: '[kirbyInfiniteScroll]',\n})\nexport class InfiniteScrollDirective implements AfterViewInit, OnDestroy {\n  /**\n   * Event that will be triggered when the user has scrolled to\n   * bottom of the element\n   */\n  @Output() scrollEnd = new EventEmitter<void>();\n\n  /**\n   * If true then {@link scrollEnd} event should NOT be emitted\n   */\n  @Input() disabled = false;\n\n  /**\n   * Emits a new value on element scroll event\n   */\n  scroll$: Subject<Scroll> = new Subject<Scroll>();\n\n  /**\n   * Completes on component destroy lifecycle event\n   * used to unsubscribe from infinite observables\n   */\n  private ngUnsubscribe$ = new Subject<void>();\n\n  /**\n   * An offset from the bottom of the element to trigger {@link scrollEnd} event\n   */\n  private offset = 0.8;\n\n  constructor(private elementRef: ElementRef, private windowRef: WindowRef, private zone: NgZone) {}\n\n  ngAfterViewInit(): void {\n    /**\n     * Subscribe to {@link scroll$} observable and emit {@link scrollEnd} event\n     * when element scroll position has surpassed the offset.\n     */\n    this.scroll$\n      .pipe(\n        takeUntil(this.ngUnsubscribe$),\n        debounceTime(INFINITE_SCROLL_DEBOUNCE),\n        filter(() => !this.disabled),\n        filter((scroll) => {\n          return (\n            scroll.elementHeight * (1 - this.offset) >=\n            scroll.distanceToViewBottom - scroll.viewHeight\n          );\n        })\n      )\n      .subscribe(() => {\n        this.scrollEnd.emit();\n      });\n\n    /**\n     * Subscribe to the ionScroll event on the ion-content around the list (if any)\n     * and emit {@link scrollEnd} event when element scroll position has surpassed the offset.\n     */\n    setTimeout(() => {\n      const ionContent: HTMLElement = this.elementRef.nativeElement.closest('ion-content');\n      if (ionContent) {\n        // we run the 'ionScroll' event outside angular, as it would trigger change detection on each scroll\n        this.zone.runOutsideAngular(() => {\n          fromEvent<any>(ionContent, 'ionScroll')\n            .pipe(\n              takeUntil(this.ngUnsubscribe$),\n              debounceTime(INFINITE_SCROLL_DEBOUNCE),\n              filter(() => !this.disabled),\n              map(() => this.getScroll()),\n              filter((scroll) => {\n                return (\n                  scroll.elementHeight * (1 - this.offset) >=\n                  scroll.distanceToViewBottom - scroll.viewHeight\n                );\n              })\n            )\n            .subscribe(() => {\n              // we make sure to emit the event inside angular again. As we want to show the spinner and need change detection for that.\n              this.zone.run(() => this.scrollEnd.emit());\n            });\n        });\n      }\n    });\n  }\n\n  /**\n   * On element scroll event emit next {@link scroll$} observable value\n   */\n  @HostListener('window:scroll')\n  onScroll(): void {\n    if (this.disabled) return;\n    const scroll = this.getScroll();\n    this.scroll$.next(scroll);\n  }\n\n  /**\n   * trigger {@link ngUnsubscribe} complete on component destroy lifecycle hook\n   */\n  ngOnDestroy(): void {\n    this.ngUnsubscribe$.next();\n    this.ngUnsubscribe$.complete();\n  }\n\n  private getScroll(): Scroll {\n    const element = this.elementRef.nativeElement as HTMLElement;\n    const boundindClientRect = element.getBoundingClientRect();\n\n    const distanceToViewBottom = boundindClientRect.bottom;\n    const elementHeight = boundindClientRect.height;\n    const viewHeight = this.windowRef.nativeWindow.innerHeight;\n\n    return { distanceToViewBottom, elementHeight, viewHeight };\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ListComponent } from '../list.component';\nimport { LoadOnDemandEventData } from '../list.event';\n\ntype Section<T> = {\n  name: string;\n  items: T[];\n};\n\ntype SectionWithStandAloneItems<T> = {\n  name: string;\n  lists: T[][];\n};\n\n@Injectable()\nexport class ListHelper {\n  public onLoadOnDemand(component: ListComponent, _event: LoadOnDemandEventData) {\n    if (component.isLoadOnDemandEnabled && !component._isLoading) {\n      component._isLoading = true;\n      component.loadOnDemand.emit({\n        complete: (disableLoadOnDemand: boolean) => {\n          component.isLoadOnDemandEnabled = !disableLoadOnDemand;\n          component._isLoading = false;\n        },\n      });\n    }\n  }\n\n  public groupSections<T>(items: T[], getGroupName: (item: T) => string): Section<T>[] {\n    const groupsMap = new Map<string, T[]>();\n\n    items.forEach((item) => {\n      const itemGroup = getGroupName(item);\n      const groupItems = groupsMap.get(itemGroup);\n\n      if (groupItems) {\n        groupItems.push(item);\n      } else {\n        groupsMap.set(itemGroup, [item]);\n      }\n    });\n\n    return Array.from(groupsMap)\n      .sort(([name], [otherName]) => name.localeCompare(otherName))\n      .map(([name, items]) => {\n        return { name, items };\n      });\n  }\n\n  public groupStandAloneItems<T>(items: T[], standAloneProperty: string): { items: T[] }[] {\n    const list = items.reduce(\n      (accumulator, item) => {\n        const lastList = accumulator[accumulator.length - 1];\n        const lastItemInList = lastList[lastList.length - 1];\n\n        if (!lastItemInList) {\n          lastList.push(item);\n        } else if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) {\n          lastList.push(item);\n        } else {\n          accumulator.push([item]);\n        }\n\n        return accumulator;\n      },\n      [[]] as [T[]]\n    );\n\n    return list.map((items) => {\n      return { items };\n    });\n  }\n\n  public groupSectionsWithStandAloneItems<T>(\n    items: T[],\n    getGroupName: (item: T) => string,\n    standAloneProperty: string\n  ): SectionWithStandAloneItems<T>[] {\n    const sectionsMap = new Map<string, T[][]>();\n\n    items.forEach((item) => {\n      const sectionName = getGroupName(item);\n\n      if (sectionsMap.has(sectionName)) {\n        const section = sectionsMap.get(sectionName);\n        const lastListInSection = section[section.length - 1];\n        const lastItemInList = lastListInSection[lastListInSection.length - 1];\n\n        if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) {\n          lastListInSection.push(item);\n        } else {\n          section.push([item]);\n        }\n      } else {\n        sectionsMap.set(sectionName, [[item]]);\n      }\n    });\n\n    return Array.from(sectionsMap)\n      .sort(([name], [otherName]) => name.localeCompare(otherName))\n      .map(([name, lists]) => {\n        return { name, lists };\n      });\n  }\n}\n","import { Directive, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { ThemeColor } from '@kirby-test-org/core';\n\n@Directive({\n  selector: '[kirbyListItemColor]',\n})\nexport class ListItemColorDirective implements OnChanges {\n  @Input()\n  kirbyListItemColor: (item: any) => ThemeColor;\n  @Input() item: any;\n  @HostBinding('class')\n  color: ThemeColor;\n\n  ngOnChanges(): void {\n    this.color = this.getColor();\n  }\n\n  private getColor(): ThemeColor {\n    if (!this.kirbyListItemColor || !this.item) {\n      return;\n    }\n\n    const themeColor = this.kirbyListItemColor(this.item);\n    return themeColor;\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { IonItemSliding } from '@ionic/angular';\n\nimport { ThemeColor } from '@kirby-test-org/core';\n\nimport { PlatformService } from '../../../helpers/platform.service';\nimport { ListSwipeAction, ListSwipeDirection, ListSwipeEnd } from '../list-swipe-action.type';\n\nexport type BoundaryClass = 'first' | 'last';\n\n@Component({\n  selector: 'kirby-list-item',\n  templateUrl: './list-item.component.html',\n  styleUrls: ['../list.component.scss', './list-item.component.scss'],\n})\nexport class ListItemComponent implements OnInit, AfterViewInit {\n  _isSwipingEnabled = false;\n\n  constructor(private platform: PlatformService) {\n    this.initializeSwipeActions();\n  }\n\n  @ViewChild(IonItemSliding) ionItemSliding: IonItemSliding;\n\n  @Input() item: any;\n\n  @Input() boundaryClass: BoundaryClass;\n\n  @Input() swipeActions: ListSwipeAction[] = [];\n\n  @Input() itemTemplate: TemplateRef<any>;\n\n  @Input() isSelected: boolean;\n\n  @Input() isSelectable: boolean;\n\n  @Input() getItemColor: (item: any) => ThemeColor;\n\n  @Output() itemSelect = new EventEmitter<any>();\n\n  _onItemSelect(item: any) {\n    if (!this.isSelectable) return;\n    this.itemSelect.emit(item);\n  }\n\n  @Output() swipeActionSelect = new EventEmitter<any>();\n\n  _onSwipeActionSelect(swipeAction, item, event) {\n    this.swipeActionSelect.emit({\n      swipeAction,\n      item,\n      event,\n    });\n  }\n\n  ngOnInit() {\n    this.initializeSwipeActions();\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.itemTemplate) {\n      console.warn('No item template was provided.');\n    }\n  }\n\n  _hasSwipeActions(item: any): boolean {\n    if (!Array.isArray(this.swipeActions)) {\n      return false;\n    }\n    return this.swipeActions.some((swipeAction) => {\n      if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n        return false;\n      }\n      if (swipeAction.isDisabled === true) {\n        return false;\n      }\n      return swipeAction.position === 'left' || swipeAction.position === 'right';\n    });\n  }\n\n  _getSwipeActions(item: any, direction?: ListSwipeDirection): ListSwipeAction[] {\n    if (!Array.isArray(this.swipeActions)) {\n      return [];\n    }\n    return this.swipeActions.filter((swipeAction) => {\n      if (this.isSwipeActionDisabled(swipeAction, item)) {\n        return false;\n      }\n      return direction ? swipeAction.position === direction : true;\n    });\n  }\n\n  private isSwipeActionDisabled(swipeAction: ListSwipeAction, item: any): boolean {\n    if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {\n      return true;\n    }\n    return swipeAction.isDisabled === true;\n  }\n\n  _getSwipeActionEnd(item: any): ListSwipeEnd {\n    if (this._getSwipeActions(item, 'left').length) {\n      return 'start';\n    }\n    return 'end';\n  }\n\n  _getSwipeActionIcon(swipeAction: ListSwipeAction, item: any): string {\n    if (!swipeAction.icon) return;\n\n    if (swipeAction.icon instanceof Function) {\n      return swipeAction.icon(item);\n    }\n    return swipeAction.icon;\n  }\n\n  _getSwipeActionTitle(swipeAction: ListSwipeAction, item: any): string {\n    if (swipeAction.title instanceof Function) {\n      return swipeAction.title(item);\n    }\n    return swipeAction.title;\n  }\n\n  _getSwipeActionType(swipeAction: ListSwipeAction, item: any): ThemeColor {\n    if (swipeAction.type instanceof Function) {\n      return swipeAction.type(item);\n    }\n    return swipeAction.type;\n  }\n\n  private initializeSwipeActions(): void {\n    if (this.swipeActions && this.swipeActions.length) {\n      this._isSwipingEnabled = this.platform.isTouch();\n    }\n  }\n}\n","<ion-item-sliding\n  [class.selected]=\"isSelected\"\n  [kirbyListItemColor]=\"getItemColor\"\n  [item]=\"item\"\n  [disabled]=\"_isSwipingEnabled ? null : true\"\n  keyHandler\n  [ngClass]=\"boundaryClass\"\n  (click)=\"_onItemSelect(item)\"\n>\n  <ng-container\n    *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n  ></ng-container>\n  <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n  <ion-item-options *ngIf=\"_hasSwipeActions(item)\" [side]=\"_getSwipeActionEnd(item)\">\n    <div class=\"swipe-action\">\n      <ng-container *ngFor=\"let swipeAction of _getSwipeActions(item)\">\n        <ion-item-option\n          [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n          (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n        >\n          <div class=\"item-content\">\n            <kirby-icon\n              *ngIf=\"_getSwipeActionIcon(swipeAction, item)\"\n              size=\"sm\"\n              [name]=\"_getSwipeActionIcon(swipeAction, item)\"\n            >\n            </kirby-icon>\n            <ion-label>\n              {{ _getSwipeActionTitle(swipeAction, item) }}\n            </ion-label>\n          </div>\n        </ion-item-option>\n      </ng-container>\n    </div>\n  </ion-item-options>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  TemplateRef,\n  TrackByFunction,\n  ViewChild,\n} from '@angular/core';\n\nimport { ThemeColor } from '@kirby-test-org/core';\n\nimport { ItemComponent } from '../item/item.component';\n\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListHelper } from './helpers/list-helper';\nimport { BoundaryClass } from './list-item/list-item.component';\nimport { ListSwipeAction } from './list-swipe-action.type';\nimport {\n  ListFooterDirective,\n  ListHeaderDirective,\n  ListItemTemplateDirective,\n  ListSectionHeaderDirective,\n} from './list.directive';\nimport { LoadOnDemandEvent, LoadOnDemandEventData } from './list.event';\n\nexport type ListShape = 'square' | 'rounded' | 'none';\n\nexport type StandAloneSpacing =\n  | 'xxxxs'\n  | 'xxxs'\n  | 'xxs'\n  | 'xs'\n  | 'sm'\n  | 'md'\n  | 'lg'\n  | 'xl'\n  | 'xxl'\n  | 'xxxl';\n@Component({\n  selector: 'kirby-list',\n  templateUrl: './list.component.html',\n  styleUrls: ['./list.component.scss'],\n  providers: [ListHelper],\n})\nexport class ListComponent implements OnInit, AfterViewInit, OnChanges {\n  @ViewChild('list', { static: true }) list: any;\n  @ViewChild(InfiniteScrollDirective) scrollDirective: InfiniteScrollDirective;\n\n  /**\n   * Provide items for the list to render. Items must be provided in the order you expect them to be rendered.\n   */\n  @Input()\n  items: any[] = [];\n\n  @Input() getItemColor: (item: any) => ThemeColor;\n\n  /**\n   * Callback to determine name of section. Sections will be ordered alphabetically.\n   */\n  @Input() getSectionName: (item: any) => string;\n\n  /**\n   * Callback that defines how to track changes for items in the iterable.\n   */\n  @Input() trackBy: TrackByFunction<any>;\n\n  /**\n   * Property name to decide which items should be stand alone\n   */\n  @Input() getStandAloneByProperty: string;\n\n  /**\n   * Bottom margin for stand alone items\n   */\n  @Input() standAloneSpacing: StandAloneSpacing = 'xxs';\n\n  /**\n   * Text to display when no more items can be loaded (used for \"on demand\"-loading).\n   */\n  @Input() noMoreItemsText: string;\n\n  /**\n   * Determines if dividers (bottom-border on list items) should be shown or not.\n   */\n  @Input() showDivider = false;\n\n  /**\n   * Determines if list row text should turn bold on selection\n   */\n  @Input() markSelectedRow = false;\n\n  /**\n   * Determine outline shape of:\n   * - list, if {@link #isSectionsEnabled} is `false`\n   * - section, if {@link #isSectionsEnabled} is `true`\n   *\n   * `square` means **without** rounded corners, `rounded` means **with** rounded corners.,  `none` means **without** padding, border, box-shadow and background.\n   */\n  @Input() shape: ListShape = 'rounded';\n\n  @HostBinding('class.shape-rounded')\n  public get isShapeRounded(): boolean {\n    return this.shape === 'rounded';\n  }\n\n  @HostBinding('class.shape-none')\n  public get isShapeNone(): boolean {\n    return this.shape === 'none';\n  }\n\n  @HostBinding('class.item-spacing')\n  @Input()\n  hasItemSpacing: boolean;\n\n  /**\n   * Determines if the loadOnDemand event should be emitted.\n   * Will default to true if there is at least one subscriber to the loadOnDemand event\n   */\n  @Input() isLoadOnDemandEnabled: boolean;\n\n  /**\n   * Emitting event when more items are to be loaded.\n   */\n  @Output() loadOnDemand = new EventEmitter<LoadOnDemandEvent>();\n\n  /**\n   * Determines if list items should have swipe actions or not\n   * - the order of swipe actions is used to determine edge actions,\n   * as well as their order of appearance on the screen.\n   */\n  @Input() swipeActions: ListSwipeAction[] = [];\n\n  /**\n   * Emitting event when an item is selected (tapped on mobile, clicked on web)\n   */\n  @Output() itemSelect = new EventEmitter<any>();\n\n  @Input() disableSelectionHighlight: boolean = false;\n\n  @ContentChildren(ItemComponent)\n  kirbyItems: ItemComponent[];\n\n  @ContentChild(ListHeaderDirective, { static: false, read: TemplateRef })\n  headerTemplate: TemplateRef<any>;\n\n  @ContentChild(ListSectionHeaderDirective, { static: false, read: TemplateRef })\n  sectionHeaderTemplate: TemplateRef<any>;\n\n  @ContentChild(ListFooterDirective, { static: false, read: TemplateRef })\n  footerTemplate: TemplateRef<any>;\n\n  /**\n   * The first element that matches ListItemDirective.\n   * As a structural directive it unfolds into a template. This is a reference to that.\n   */\n  @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n  itemTemplate: TemplateRef<any>;\n\n  @HostBinding('class.has-sections') _isSectionsEnabled: boolean;\n  @HostBinding('class.has-stand-alone') _isStandAloneEnabled: boolean;\n\n  _isSelectable: boolean;\n  _isLoading: boolean;\n  _groupedItems: any[];\n  _selectedItem: any;\n\n  constructor(private listHelper: ListHelper, private cdr: ChangeDetectorRef) {}\n\n  ngOnInit() {\n    this._isSelectable = this.itemSelect.observers.length > 0;\n\n    if (this.isLoadOnDemandEnabled === undefined) {\n      this.isLoadOnDemandEnabled = this.loadOnDemand.observers.length > 0;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this._isSelectable) {\n      setTimeout(() => {\n        this.kirbyItems.forEach((item) => {\n          item.selectable = true;\n        });\n\n        // We are mutating the items directly, after they have been rendered in the template.\n        // Therefore, we make sure to detectChanges.\n        // kirby-item handles marking itself for check when selectable is set.\n        this.cdr.detectChanges();\n      });\n    }\n  }\n\n  ngOnChanges(): void {\n    this._isSectionsEnabled = !!this.getSectionName;\n    this._isStandAloneEnabled = !!this.getStandAloneByProperty;\n\n    if (this._isSectionsEnabled && this._isStandAloneEnabled) {\n      this._groupedItems = this.listHelper.groupSectionsWithStandAloneItems(\n        this.items,\n        this.getSectionName,\n        this.getStandAloneByProperty\n      );\n    } else if (this._isSectionsEnabled) {\n      this._groupedItems = this.listHelper.groupSections(this.items, this.getSectionName);\n    } else if (this._isStandAloneEnabled) {\n      this._groupedItems = this.listHelper.groupStandAloneItems(\n        this.items,\n        this.getStandAloneByProperty\n      );\n    }\n  }\n\n  _onLoadOnDemand(event?: LoadOnDemandEventData) {\n    this.listHelper.onLoadOnDemand(this, event);\n  }\n\n  defaultTrackBy(index: number): any {\n    return index;\n  }\n\n  sectionTrackBy(_: number, section: { name: string }): string {\n    return section.name;\n  }\n\n  onItemSelect(item: any) {\n    if (!this.disableSelectionHighlight) {\n      this._selectedItem = item;\n    }\n    this.itemSelect.emit(item);\n  }\n\n  onSwipeActionSelect(args: any): void {\n    args.swipeAction.onSelected(args.item);\n    this.list.closeSlidingItems();\n    args.event.stopPropagation();\n  }\n\n  _getBoundaryClass(index: number, section?: any[]): BoundaryClass {\n    const _items = section || this.items;\n\n    if (index === 0 || _items[index - 1]?.headingName) return this.headerTemplate ? null : 'first';\n\n    if (index === _items.length - 1 || _items[index + 1]?.headingName)\n      return this.footerTemplate ? null : 'last';\n  }\n\n  standAloneClass() {\n    return this._isStandAloneEnabled ? `stand-alone-bottom-margin-${this.standAloneSpacing}` : '';\n  }\n}\n","<ion-list\n  #list\n  kirbyInfiniteScroll\n  (scrollEnd)=\"_onLoadOnDemand()\"\n  [disabled]=\"!isLoadOnDemandEnabled\"\n  class=\"list\"\n  [class.has-header]=\"headerTemplate\"\n  [class.has-footer]=\"footerTemplate\"\n  [class.has-divider]=\"showDivider\"\n>\n  <ion-list-header *ngIf=\"headerTemplate\">\n    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n  </ion-list-header>\n\n  <ng-container\n    *ngTemplateOutlet=\"\n      _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n      context: { $implicit: items }\n    \"\n  ></ng-container>\n\n  <div *ngIf=\"footerTemplate\" class=\"footer\">\n    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n  </div>\n</ion-list>\n\n<p *ngIf=\"!isLoadOnDemandEnabled && noMoreItemsText\" class=\"no-more-items\">\n  {{ noMoreItemsText }}\n</p>\n<div *ngIf=\"_isLoading\" class=\"loading\">\n  <kirby-spinner></kirby-spinner>\n</div>\n\n<ng-template #groupedListTemplate>\n  <ion-item-group\n    *ngFor=\"let section of _groupedItems; trackBy: sectionTrackBy\"\n    [ngClass]=\"standAloneClass()\"\n  >\n    <ion-item-divider *ngIf=\"_isSectionsEnabled\">\n      <ng-container\n        *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n      ></ng-container>\n    </ion-item-divider>\n\n    <ng-container *ngIf=\"_isSectionsEnabled && _isStandAloneEnabled; else groupedFlatList\">\n      <div class=\"list-items\" [ngClass]=\"standAloneClass()\" *ngFor=\"let list of section.lists\">\n        <ng-container\n          *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n        ></ng-container>\n      </div>\n    </ng-container>\n\n    <ng-template #groupedFlatList>\n      <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n        <ng-container\n          *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n        ></ng-container>\n      </div>\n    </ng-template>\n  </ion-item-group>\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n  <kirby-list-item\n    *ngFor=\"let item of items; let i = index; trackBy: trackBy || defaultTrackBy\"\n    [item]=\"item\"\n    [itemTemplate]=\"itemTemplate\"\n    [swipeActions]=\"swipeActions\"\n    [boundaryClass]=\"_getBoundaryClass(i, items)\"\n    [isSelectable]=\"_isSelectable\"\n    [getItemColor]=\"getItemColor\"\n    [isSelected]=\"_isSelectable && item === _selectedItem\"\n    (itemSelect)=\"onItemSelect($event)\"\n    (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n    [class.is-single]=\"items.length === 1\"\n  >\n  </kirby-list-item>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'kirby-list-header',\n  templateUrl: './list-header.component.html',\n  styleUrls: ['./list-header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListHeaderComponent {\n  constructor() {}\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'kirby-list-section-header',\n  templateUrl: './list-section-header.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListSectionHeaderComponent {\n  @Input() title: string;\n}\n","<div class=\"header\">\n  <span class=\"kirby-text-small\">{{ title }}</span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SpinnerComponent } from './spinner.component';\n\n@NgModule({\n  declarations: [SpinnerComponent],\n  imports: [CommonModule],\n  exports: [SpinnerComponent],\n  providers: [],\n})\nexport class SpinnerModule {}\n","import { ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@angular/core';\nimport { IonList } from '@ionic/angular';\n\nimport { elementHasAncestor } from '../../../helpers/element-has-ancestor';\n\n@Component({\n  selector: 'kirby-list-experimental',\n  templateUrl: './list-experimental.component.html',\n  styleUrls: ['./list-experimental.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListExperimentalComponent {\n  @ViewChild(IonList, { static: true }) list: IonList;\n\n  @HostListener('click', ['$event'])\n  closeAllSlidingItems(e: MouseEvent) {\n    if (elementHasAncestor(e.target as HTMLElement, 'ion-item-option', 'ion-list')) {\n      this.list.closeSlidingItems();\n    }\n  }\n}\n","<ng-content select=\"[outside]\"></ng-content>\n<div class=\"rounded shadow first-item-padding last-item-padding\">\n  <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { IconModule } from '../icon/icon.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\nimport { InfiniteScrollDirective } from './directives/infinite-scroll.directive';\nimport { ListItemColorDirective } from './directives/list-item-color.directive';\nimport { ListExperimentalComponent } from './list-experimental/list-experimental.component';\nimport { ListHeaderComponent } from './list-header/list-header.component';\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { ListSectionHeaderComponent } from './list-section-header/list-section-header.component';\nimport { ListComponent } from './list.component';\nimport {\n  ListFooterDirective,\n  ListHeaderDirective,\n  ListItemTemplateDirective,\n  ListSectionHeaderDirective,\n} from './list.directive';\n\nconst exportedDeclarations = [\n  ListComponent,\n  ListItemComponent,\n  ListItemTemplateDirective,\n  ListSectionHeaderComponent,\n  ListSectionHeaderDirective,\n  ListHeaderDirective,\n  ListHeaderComponent,\n  ListFooterDirective,\n  ListExperimentalComponent,\n];\n\nconst declarations = [\n  ...exportedDeclarations,\n  ListItemColorDirective,\n  InfiniteScrollDirective,\n  ListItemComponent,\n];\n\n@NgModule({\n  declarations: declarations,\n  imports: [CommonModule, IconModule, IonicModule, SpinnerModule],\n  exports: exportedDeclarations,\n  providers: [],\n})\nexport class ListModule {}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  Optional,\n} from '@angular/core';\n\nimport {\n  ModalElementComponent,\n  ModalElementsAdvertiser,\n  ModalElementType,\n} from '../services/modal.interfaces';\n\n@Component({\n  selector: 'kirby-modal-footer',\n  templateUrl: './modal-footer.component.html',\n  styleUrls: ['./modal-footer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalFooterComponent extends ModalElementComponent {\n  @HostBinding('class.snap-to-keyboard')\n  @Input()\n  snapToKeyboard = false;\n\n  @HostBinding('class')\n  @Input()\n  type: 'inline' | 'fixed' = 'fixed';\n\n  constructor(\n    elementRef: ElementRef<HTMLElement>,\n    @Optional() modalElementsAdvertiser: ModalElementsAdvertiser\n  ) {\n    super(ModalElementType.FOOTER, elementRef, modalElementsAdvertiser);\n  }\n}\n","<ion-footer>\n  <ng-content></ng-content>\n</ion-footer>\n","export const selectedTabClickEvent = 'kirbySelectedTabClick';\n","import { Injectable } from '@angular/core';\nimport { IonRouterOutlet } from '@ionic/angular';\nimport { ReplaySubject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TabsService {\n  private outletSubject$: ReplaySubject<IonRouterOutlet> = new ReplaySubject();\n  public outlet$ = this.outletSubject$.asObservable();\n\n  public setOutlet(outlet: IonRouterOutlet) {\n    this.outletSubject$.next(outlet);\n  }\n}\n\nexport { IonRouterOutlet };\n","import { AfterViewInit, Component, HostBinding, ViewChild } from '@angular/core';\nimport { IonTabs } from '@ionic/angular';\n\nimport { TabsService } from './tabs.service';\n\n@Component({\n  selector: 'kirby-tab-bar',\n  templateUrl: './tabs.component.html',\n  styleUrls: ['./tabs.component.scss'],\n})\nexport class TabsComponent implements AfterViewInit {\n  @HostBinding('class.tab-bar-bottom-hidden')\n  tabBarBottomHidden = false;\n  @ViewChild(IonTabs, { static: true }) tabs: IonTabs;\n\n  constructor(private tabsService: TabsService) {}\n\n  ngAfterViewInit() {\n    this.tabsService.setOutlet(this.tabs.outlet);\n  }\n}\n","<ion-tabs>\n  <ion-tab-bar [class.bottom-hidden]=\"tabBarBottomHidden\">\n    <ng-content></ng-content>\n  </ion-tab-bar>\n</ion-tabs>\n","import { Injectable, Renderer2, RendererStyleFlags2 } from '@angular/core';\n\nconst config = Object.freeze({\n  className: 'kirby-line-clamp',\n  lineClamp: '--line-clamp',\n  lineHeight: '--line-height',\n});\n\n@Injectable()\nexport class LineClampHelper {\n  constructor(private renderer: Renderer2) {}\n\n  setMaxLines(element: Element, maxLines: number): void {\n    this.renderer.setStyle(element, config.lineClamp, maxLines, RendererStyleFlags2.DashCase);\n    this.renderer.addClass(element, config.className);\n  }\n\n  setLineHeight(element: Element, lineHeight: string): void {\n    // Only necessary for the fallback solution to work\n    this.renderer.setStyle(element, config.lineHeight, lineHeight, RendererStyleFlags2.DashCase);\n  }\n\n  removeLineClamp(element: Element) {\n    this.renderer.removeClass(element, config.className);\n    this.renderer.removeStyle(element, config.lineClamp);\n    this.renderer.removeStyle(element, config.lineHeight);\n  }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { DesignTokenHelper } from '@kirby-test-org/core';\n\nimport { ResizeObserverService } from '../../components/shared/resize-observer/resize-observer.service';\nimport { LineClampHelper } from '../../helpers/line-clamp-helper';\n\nconst fontSize = DesignTokenHelper.fontSize;\nconst lineHeight = DesignTokenHelper.lineHeight;\n\ninterface HeadingSize {\n  name: string;\n  fontSize: string;\n  lineHeight: string;\n}\n\nexport interface FitHeadingConfig {\n  maxLines: number;\n}\n\n@Directive({\n  selector: `h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]`,\n  providers: [LineClampHelper],\n})\nexport class FitHeadingDirective implements OnInit, OnDestroy {\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('kirbyFitHeading') config?: FitHeadingConfig;\n\n  private isObservingHostElement: boolean;\n  private hostElementClone: Element;\n  private isScalingHeader: boolean; // used to prevent resizeObserver to trigger on font scaling by this.scaleHeader()\n\n  private headingSizes: HeadingSize[] = [\n    {\n      name: 'h1',\n      fontSize: fontSize('xl'),\n      lineHeight: lineHeight('xl'),\n    },\n    {\n      name: 'h2',\n      fontSize: fontSize('l'),\n      lineHeight: lineHeight('l'),\n    },\n    {\n      name: 'h3',\n      fontSize: fontSize('m'),\n      lineHeight: lineHeight('m'),\n    },\n  ];\n\n  constructor(\n    private elementRef: ElementRef,\n    private renderer: Renderer2,\n    private resizeObserverService: ResizeObserverService,\n    private lineClampHelper: LineClampHelper\n  ) {}\n\n  ngOnInit(): void {\n    if (this.config && this.config.maxLines) {\n      this.lineClampHelper.setMaxLines(this.elementRef.nativeElement, this.config.maxLines);\n      this.observeResize();\n      this.isObservingHostElement = true;\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.isObservingHostElement) {\n      this.resizeObserverService.unobserve(this.elementRef);\n      if (this.hostElementClone) {\n        this.renderer.removeChild(this.elementRef.nativeElement, this.hostElementClone);\n      }\n    }\n  }\n\n  private observeResize(): void {\n    this.resizeObserverService.observe(this.elementRef, () => {\n      /**\n       * setTimeout is used here to avoid repeated size changes\n       * while the first size change is still ongoing.\n       * This would result in the ResizeObserver being called again,\n       * giving 'ResizeObserver loop limit exceeded' types of errors.\n       */\n      setTimeout(() => {\n        this.scaleHeader();\n      }, 0);\n    });\n  }\n\n  private scaleHeader(): void {\n    if (this.isScalingHeader) return;\n\n    this.isScalingHeader = true;\n\n    if (!this.hostElementClone) {\n      this.hostElementClone = this.generateHostElementClone();\n      this.renderer.appendChild(this.elementRef.nativeElement, this.hostElementClone);\n    }\n\n    this.renderer.setStyle(\n      this.hostElementClone,\n      'width',\n      `${this.elementRef.nativeElement.clientWidth}px`\n    );\n\n    const fallbackSize = this.headingSizes[this.headingSizes.length - 1];\n    const fittedSize = this.headingSizes.find(this.canFitHeading.bind(this)) || fallbackSize;\n\n    this.setSize(this.elementRef.nativeElement, fittedSize);\n    this.lineClampHelper.setLineHeight(this.elementRef.nativeElement, fittedSize.lineHeight);\n    this.isScalingHeader = false;\n  }\n\n  private canFitHeading(size: HeadingSize) {\n    this.setSize(this.hostElementClone, size);\n    const lines = this.hostElementClone.clientHeight / parseInt(size.lineHeight);\n    return lines <= this.config.maxLines;\n  }\n\n  private generateHostElementClone(): Element {\n    const clone = this.elementRef.nativeElement.cloneNode(true);\n    this.renderer.setStyle(clone, 'position', 'absolute');\n    this.renderer.setStyle(clone, 'visibility', 'hidden');\n    this.lineClampHelper.removeLineClamp(clone);\n    return clone;\n  }\n\n  private setSize(el: Element, size: HeadingSize): void {\n    this.renderer.setStyle(el, 'font-size', size.fontSize);\n    this.renderer.setStyle(el, 'line-height', size.lineHeight);\n  }\n}\n","import {\n  AfterContentChecked,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  SkipSelf,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router, RouterEvent } from '@angular/router';\nimport { IonBackButtonDelegate, IonContent, IonFooter, IonHeader } from '@ionic/angular';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { KirbyAnimation } from '../../animation/kirby-animation';\nimport { FitHeadingConfig } from '../../directives/fit-heading/fit-heading.directive';\nimport { ModalWrapperComponent } from '../modal/modal-wrapper/modal-wrapper.component';\nimport { ModalNavigationService } from '../modal/services/modal-navigation.service';\nimport {\n  ModalElementComponent,\n  ModalElementsAdvertiser,\n  ModalElementType,\n} from '../modal/services/modal.interfaces';\nimport { selectedTabClickEvent } from '../tabs/tab-button/tab-button.events';\nimport { TabsComponent } from '../tabs/tabs.component';\n\ntype stickyConfig = { sticky: boolean };\ntype fixedConfig = { fixed: boolean };\n\n/**\n * Event emitted when \"pull-to-refresh\" begins.\n */\nexport interface PullToRefreshEvent {\n  /**\n   * Invoke this callback-method when action to perform upon \"pull-to-refresh\" completes.\n   */\n  complete();\n}\n\n@Directive({\n  selector: '[kirbyPageTitle]',\n})\nexport class PageTitleDirective {}\n\n@Directive({\n  selector: '[kirbyPageSubtitle]',\n})\nexport class PageSubtitleDirective {}\n\n@Directive({\n  selector: '[kirbyPageToolbarTitle]',\n})\nexport class PageToolbarTitleDirective {}\n\n@Directive({\n  selector: '[kirbyPageActions]',\n})\nexport class PageActionsDirective {\n  @Input('kirbyPageActions') config: stickyConfig | fixedConfig;\n  private readonly stickyDefault = true;\n  private readonly fixedDefault = false;\n\n  constructor(public template: TemplateRef<any>) {}\n\n  get isSticky(): boolean {\n    return this.config ? (this.config as stickyConfig).sticky : this.stickyDefault;\n  }\n\n  get isFixed(): boolean {\n    return this.config ? (this.config as fixedConfig).fixed : this.fixedDefault;\n  }\n}\n\n@Directive({\n  selector: '[kirbyPageContent]',\n})\nexport class PageContentDirective {\n  @Input('kirbyPageContent') config: fixedConfig;\n\n  constructor(public template: TemplateRef<any>) {}\n\n  get isFixed(): boolean {\n    return this.config && this.config.fixed;\n  }\n}\n\n@Directive({\n  selector: '[kirbyPageStickyContent]',\n})\nexport class PageStickyContentDirective {}\n\n@Component({\n  selector: 'kirby-page-progress',\n  template: ` <ng-content></ng-content> `,\n  styles: [':host {display: flex}'],\n})\nexport class PageProgressComponent extends ModalElementComponent implements OnInit {\n  // TODO: Find alternative implementation, which aligns with future page configuration / consumption\n  // This implementation was chosen over expanding `moveChild` method in component wrapper with yet another scenario\n  @HostBinding('attr.slot') slot = 'start';\n\n  constructor(\n    @Optional() @SkipSelf() private modalWrapper: ModalWrapperComponent,\n    @Optional() modalElementsAdvertiser: ModalElementsAdvertiser,\n    elementRef: ElementRef<HTMLElement>\n  ) {\n    super(ModalElementType.PAGE_PROGRESS, elementRef, modalElementsAdvertiser);\n  }\n\n  ngOnInit(): void {\n    if (this.modalWrapper && this.modalWrapper.config.flavor === 'drawer') {\n      this.slot = 'end';\n    }\n  }\n}\n@Component({\n  selector: 'kirby-page-title',\n  template: ` <ng-content></ng-content> `,\n})\nexport class PageTitleComponent extends ModalElementComponent {\n  constructor(\n    elementRef: ElementRef<HTMLElement>,\n    @Optional() modalElementsAdvertiser: ModalElementsAdvertiser\n  ) {\n    super(ModalElementType.TITLE, elementRef, modalElementsAdvertiser);\n  }\n}\n\n@Component({\n  selector: 'kirby-page-content',\n  template: ` <ng-content></ng-content> `,\n})\nexport class PageContentComponent {}\n\n@Component({\n  selector: 'kirby-page-actions',\n  template: ` <ng-content select=\"button[kirby-button]\"></ng-content> `,\n})\nexport class PageActionsComponent {}\n\n@Component({\n  selector: 'kirby-page',\n  templateUrl: './page.component.html',\n  styleUrls: ['./page.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageComponent\n  implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked, OnChanges\n{\n  @Input() title: string;\n  @Input() subtitle: string;\n  @Input() toolbarTitle: string;\n  @Input() titleAlignment: 'left' | 'center' | 'right' = 'left';\n  @Input() defaultBackHref: string;\n  @Input() hideBackButton: boolean;\n  @Input() titleMaxLines: number;\n\n  private _tabBarBottomHidden: boolean;\n  public get tabBarBottomHidden(): boolean {\n    return this._tabBarBottomHidden;\n  }\n  @Input()\n  public set tabBarBottomHidden(value: boolean) {\n    if (this.tabsComponent) {\n      // as we are setting a class on tabs, we need this to happen in a separate cd cycle\n      setTimeout(() => (this.tabsComponent.tabBarBottomHidden = value));\n    }\n    this._tabBarBottomHidden = value;\n  }\n\n  @Output() enter = new EventEmitter<void>();\n  @Output() leave = new EventEmitter<void>();\n  @Output() refresh = new EventEmitter<PullToRefreshEvent>();\n  @Output() backButtonClick = new EventEmitter<Event>();\n\n  @ViewChild(IonContent, { static: true }) private content?: IonContent;\n  @ViewChild(IonContent, { static: true, read: ElementRef })\n  private ionContentElement: ElementRef<HTMLIonContentElement>;\n  @ViewChild(IonHeader, { static: true, read: ElementRef })\n  ionHeaderElement: ElementRef<HTMLIonHeaderElement>;\n  @ViewChild(IonFooter, { static: true, read: ElementRef })\n  private ionFooterElement: ElementRef<HTMLIonFooterElement>;\n\n  @ViewChild(IonBackButtonDelegate, { static: false })\n  private backButtonDelegate: IonBackButtonDelegate;\n  @ViewChild('pageTitle', { static: false, read: ElementRef })\n  private pageTitle: ElementRef;\n\n  @ViewChild('simpleTitleTemplate', { static: true, read: TemplateRef })\n  private simpleTitleTemplate: TemplateRef<any>;\n  @ViewChild('simpleToolbarTitleTemplate', { static: true, read: TemplateRef })\n  private simpleToolbarTitleTemplate: TemplateRef<any>;\n  @ContentChild(PageToolbarTitleDirective, { static: false, read: TemplateRef })\n  private customToolbarTitleTemplate: TemplateRef<any>;\n  @ContentChild(PageTitleDirective, { static: false, read: TemplateRef })\n  customTitleTemplate: TemplateRef<any>;\n  @ContentChild(PageSubtitleDirective, { static: false, read: TemplateRef })\n  customSubtitleTemplate: TemplateRef<any>;\n  @ContentChildren(PageActionsDirective)\n  customActions: QueryList<PageActionsDirective>;\n  @ContentChildren(PageContentDirective)\n  private customContent: QueryList<PageContentDirective>;\n  @ContentChild(PageStickyContentDirective, { static: false, read: TemplateRef })\n  private stickyContentRef: TemplateRef<any>;\n\n  hasPageTitle: boolean;\n  hasPageSubtitle: boolean;\n  hasActionsInPage: boolean;\n  toolbarTitleVisible: boolean;\n  toolbarFixedActionsVisible: boolean;\n  toolbarStickyActionsVisible: boolean;\n\n  fitHeadingConfig: FitHeadingConfig;\n\n  toolbarTitleTemplate: TemplateRef<any>;\n  customContentTemplate: TemplateRef<any>;\n  pageActionsTemplate: TemplateRef<any>;\n  fixedContentTemplate: TemplateRef<any>;\n  stickyActionsTemplate: TemplateRef<any>;\n  fixedActionsTemplate: TemplateRef<any>;\n  stickyContentTemplate: TemplateRef<PageStickyContentDirective>;\n\n  private pageTitleIntersectionObserverRef: IntersectionObserver =\n    this.pageTitleIntersectionObserver();\n\n  private url: string;\n  private isActive: boolean;\n\n  private ngOnDestroy$: Subject<void> = new Subject<void>();\n  private navigationStart$: Observable<RouterEvent> = this.router.events.pipe(\n    takeUntil(this.ngOnDestroy$),\n    filter((event: RouterEvent) => event instanceof NavigationStart)\n  );\n\n  private navigationEnd$: Observable<RouterEvent> = this.router.events.pipe(\n    takeUntil(this.ngOnDestroy$),\n    filter((event: RouterEvent) => event instanceof NavigationEnd)\n  );\n\n  constructor(\n    private elementRef: ElementRef,\n    private renderer: Renderer2,\n    private router: Router,\n    private changeDetectorRef: ChangeDetectorRef,\n    private modalNavigationService: ModalNavigationService,\n    @Optional() @SkipSelf() private tabsComponent: TabsComponent\n  ) {}\n\n  ngOnInit(): void {\n    this.removeWrapper();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.titleMaxLines) {\n      this.fitHeadingConfig = {\n        ...this.fitHeadingConfig,\n        maxLines: changes.titleMaxLines.currentValue,\n      };\n    }\n    if (changes.subtitle && !changes.subtitle.isFirstChange) {\n      this.subtitle = changes.title.currentValue;\n      this.hasPageSubtitle = this.subtitle !== undefined;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    // This instance has observed a page enter so register the correct url for this instance\n    this.url = this.router.url;\n    this.onEnter();\n\n    // Watch navigation events for page enter and leave\n    this.navigationStart$.subscribe((event: NavigationStart) => {\n      if (\n        event.url !== this.url &&\n        !this.modalNavigationService.isModalRoute(this.url) &&\n        !this.modalNavigationService.isModalRoute(event.url)\n      ) {\n        this.onLeave();\n      }\n    });\n\n    this.navigationEnd$.subscribe((event: NavigationEnd) => {\n      if (event.urlAfterRedirects === this.url) {\n        this.onEnter();\n      }\n    });\n\n    this.interceptBackButtonClicksSetup();\n  }\n\n  ngAfterContentChecked(): void {\n    this.initializeTitle();\n    this.initializeActions();\n    this.initializeContent();\n    this.initializeStickyContent();\n    this.changeDetectorRef.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n    this.ngOnDestroy$.next();\n    this.ngOnDestroy$.complete();\n\n    this.pageTitleIntersectionObserverRef.disconnect();\n  }\n\n  delegateRefreshEvent(event: any): void {\n    this.refresh.emit({\n      complete: event.target.complete.bind(event.target),\n    });\n  }\n\n  private onEnter() {\n    if (this.isActive) return;\n    this.isActive = true;\n\n    this.enter.emit();\n    if (this.pageTitle) {\n      this.pageTitleIntersectionObserverRef.observe(this.pageTitle.nativeElement);\n    }\n  }\n\n  private onLeave() {\n    if (!this.isActive) return;\n    this.isActive = false;\n\n    this.leave.emit();\n    if (this.pageTitle) {\n      this.pageTitleIntersectionObserverRef.unobserve(this.pageTitle.nativeElement);\n    }\n\n    if (this.tabBarBottomHidden && this.tabsComponent) {\n      this.tabsComponent.tabBarBottomHidden = false;\n    }\n  }\n\n  private interceptBackButtonClicksSetup() {\n    // Intercept back-button click events, defaulting to the built-in click-handler.\n    if (this.backButtonClick.observers.length === 0) {\n      this.backButtonClick\n        .pipe(takeUntil(this.ngOnDestroy$))\n        .subscribe(this.backButtonDelegate.onClick.bind(this.backButtonDelegate));\n    }\n    this.backButtonDelegate.onClick = (event: Event) => {\n      this.backButtonClick.emit(event);\n    };\n  }\n\n  private initializeTitle() {\n    // Ensures initializeTitle() won't run, if already initialized\n    if (this.hasPageTitle) return;\n    this.hasPageTitle = this.title !== undefined || !!this.customTitleTemplate;\n    this.toolbarTitleVisible = !this.hasPageTitle;\n    this.hasPageSubtitle = this.subtitle !== undefined || !!this.customSubtitleTemplate;\n\n    if (this.hasPageTitle) {\n      setTimeout(() => {\n        this.pageTitleIntersectionObserverRef.observe(this.pageTitle.nativeElement);\n      });\n    }\n\n    const defaultTitleTemplate = this.customTitleTemplate || this.simpleTitleTemplate;\n    /* eslint-disable */\n    // prettier-ignore\n    this.toolbarTitleTemplate = this.customToolbarTitleTemplate\n      ? this.customToolbarTitleTemplate\n      : typeof this.toolbarTitle === 'string'\n        ? this.simpleToolbarTitleTemplate\n        : defaultTitleTemplate;\n  }\n\n  private initializeActions() {\n    this.customActions.forEach((pageAction) => {\n      if (pageAction.isFixed) {\n        this.fixedActionsTemplate = pageAction.template;\n        this.toolbarFixedActionsVisible = true;\n      } else {\n        this.pageActionsTemplate = pageAction.template;\n        if (pageAction.isSticky) {\n          this.stickyActionsTemplate = pageAction.template;\n        }\n      }\n    });\n    this.hasActionsInPage = !!this.pageActionsTemplate;\n  }\n\n  private initializeContent() {\n    this.customContent.forEach((content) => {\n      if (content.isFixed) {\n        this.fixedContentTemplate = content.template;\n      } else {\n        this.customContentTemplate = content.template;\n      }\n    });\n  }\n\n  private initializeStickyContent() {\n    this.stickyContentTemplate = this.stickyContentRef;\n  }\n\n  private removeWrapper() {\n    const parent = this.elementRef.nativeElement.parentNode;\n    this.renderer.removeChild(parent, this.elementRef.nativeElement);\n    this.renderer.appendChild(parent, this.ionHeaderElement.nativeElement);\n    this.renderer.appendChild(parent, this.ionContentElement.nativeElement);\n    this.renderer.appendChild(parent, this.ionFooterElement.nativeElement);\n  }\n\n  private pageTitleIntersectionObserver() {\n    const options = {\n      rootMargin: '0px',\n    };\n\n    let initialized = false;\n    const callback = (entries) => {\n      if (initialized) {\n        this.toolbarTitleVisible = !entries[0].isIntersecting;\n        this.toolbarStickyActionsVisible = !entries[0].isIntersecting;\n        this.changeDetectorRef.detectChanges();\n      } else {\n        initialized = true;\n      }\n    };\n    return new IntersectionObserver(callback, options);\n  }\n\n  @HostListener('window:keyboardWillShow', ['$event'])\n  _onKeyboardWillShow(info?: { keyboardHeight: number }) {\n    if (info && info.keyboardHeight) {\n      this.ionContentElement.nativeElement.style.setProperty(\n        '--keyboard-offset',\n        `${info.keyboardHeight}px`\n      );\n    }\n  }\n\n  @HostListener('window:keyboardWillHide')\n  _onKeyboardWillHide() {\n    this.ionContentElement.nativeElement.style.setProperty('--keyboard-offset', '0px');\n  }\n\n  @HostListener(`window:${selectedTabClickEvent}`)\n  _onSelectedTabClick() {\n    if (this.content) {\n      this.content.scrollToTop(KirbyAnimation.Duration.LONG);\n    }\n  }\n}\n","<ion-header>\n  <ion-toolbar>\n    <ion-buttons slot=\"start\">\n      <ion-back-button\n        text=\"\"\n        [defaultHref]=\"defaultBackHref\"\n        icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n        [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n      ></ion-back-button>\n    </ion-buttons>\n    <ion-title>\n      <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n        <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n      </div>\n    </ion-title>\n    <ion-buttons\n      class=\"hide\"\n      slot=\"primary\"\n      [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n    >\n      <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n    </ion-buttons>\n    <ion-buttons\n      class=\"hide\"\n      slot=\"secondary\"\n      [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n    >\n      <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n    </ion-buttons>\n  </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n  <ion-refresher\n    *ngIf=\"refresh.observers.length > 0\"\n    (ionRefresh)=\"delegateRefreshEvent($event)\"\n    slot=\"fixed\"\n  >\n    <kirby-spinner></kirby-spinner>\n  </ion-refresher>\n\n  <!-- Page header -->\n  <div class=\"page-header-container\" *ngIf=\"hasPageTitle\">\n    <div\n      class=\"page-header\"\n      [ngClass]=\"{\n        'text-center': titleAlignment === 'center',\n        'text-right': titleAlignment === 'right'\n      }\"\n    >\n      <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n        <ng-container\n          *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n        ></ng-container>\n        <ng-container\n          *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n        ></ng-container>\n      </div>\n      <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n        <ng-container\n          *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n        ></ng-container>\n      </div>\n    </div>\n  </div>\n\n  <!--  Sticky content -->\n  <ng-container *ngIf=\"stickyContentTemplate\">\n    <div class=\"sticky-content-container\">\n      <div>\n        <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n      </div>\n    </div>\n  </ng-container>\n\n  <!-- Content -->\n  <div class=\"content-inner\">\n    <ng-container\n      *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n    ></ng-container>\n  </div>\n\n  <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n    <div class=\"content-inner\">\n      <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n    </div>\n  </div>\n</ion-content>\n\n<ion-footer>\n  <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n  <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n    <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n  </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n  <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n  <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n  <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  Optional,\n  Renderer2,\n  SkipSelf,\n} from '@angular/core';\n\nimport { PageComponent } from '../page.component';\n\n@Component({\n  selector: 'kirby-page-footer',\n  templateUrl: './page-footer.component.html',\n  styleUrls: ['./page-footer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageFooterComponent implements OnDestroy {\n  @Input()\n  hasPadding: boolean = true;\n\n  constructor(\n    @Optional() @SkipSelf() private pageComponent: PageComponent,\n    private hostElement: ElementRef,\n    private renderer: Renderer2\n  ) {\n    if (!pageComponent) {\n      throw new Error('Page footer must reside inside of a Kirby page');\n    }\n  }\n\n  close() {\n    this.pageComponent.tabBarBottomHidden = false;\n    this.renderer.removeChild(\n      this.hostElement.nativeElement.parentElement,\n      this.hostElement.nativeElement,\n      true\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.pageComponent.tabBarBottomHidden = false;\n  }\n}\n","<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n  <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { FitHeadingDirective } from './fit-heading.directive';\n\n@NgModule({\n  declarations: [FitHeadingDirective],\n  exports: [FitHeadingDirective],\n})\nexport class FitHeadingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\n\nimport { FitHeadingModule } from '../../directives/fit-heading/fit-heading.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\nimport { PageFooterComponent } from './page-footer/page-footer.component';\nimport {\n  PageActionsComponent,\n  PageActionsDirective,\n  PageComponent,\n  PageContentComponent,\n  PageContentDirective,\n  PageProgressComponent,\n  PageStickyContentDirective,\n  PageSubtitleDirective,\n  PageTitleComponent,\n  PageTitleDirective,\n  PageToolbarTitleDirective,\n} from './page.component';\n\n@NgModule({\n  declarations: [\n    PageComponent,\n    PageActionsComponent,\n    PageActionsDirective,\n    PageContentComponent,\n    PageFooterComponent,\n    PageContentDirective,\n    PageProgressComponent,\n    PageTitleComponent,\n    PageTitleDirective,\n    PageSubtitleDirective,\n    PageToolbarTitleDirective,\n    PageStickyContentDirective,\n  ],\n  imports: [CommonModule, IonicModule, FitHeadingModule, SpinnerModule],\n  exports: [\n    PageComponent,\n    PageActionsComponent,\n    PageActionsDirective,\n    PageContentComponent,\n    PageFooterComponent,\n    PageContentDirective,\n    PageProgressComponent,\n    PageTitleComponent,\n    PageTitleDirective,\n    PageSubtitleDirective,\n    PageToolbarTitleDirective,\n    FitHeadingModule,\n    PageStickyContentDirective,\n  ],\n})\nexport class PageModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n  selector: 'kirby-range',\n  templateUrl: './range.component.html',\n  styleUrls: ['./range.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => RangeComponent),\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeComponent implements OnChanges, ControlValueAccessor {\n  @Input() minLabel: string;\n  @Input() maxLabel: string;\n  @Input() debounce: number;\n  @Input() max: number;\n  @Input() min: number;\n  @Input() pin: boolean;\n  @Input() step = 1;\n  @Input() ticks: boolean;\n  @Input() disabled = false;\n  @Input()\n  set value(value: number) {\n    if (value !== this.currentValue) {\n      this.currentValue = value;\n      this.propagateChange(this.currentValue);\n      this.change.emit(this.currentValue);\n    }\n  }\n\n  get value(): number {\n    return this.currentValue;\n  }\n\n  @Output() change: EventEmitter<number> = new EventEmitter<number>();\n\n  private currentValue: number;\n\n  ngOnChanges(_: SimpleChanges) {\n    if (!this.ticks) return;\n\n    /*\n     * Max 10 ticks are allowed\n     */\n    const amountOfTicks = (this.max - this.min) / this.step;\n    if (amountOfTicks > 9) {\n      this.step = (this.max - this.min) / 9;\n    }\n\n    /*\n     * Set value to the nearest tick\n     */\n    this.value = this.getTicks().reduce((a, b) => {\n      return Math.abs(b - this.value) < Math.abs(a - this.value) ? b : a;\n    });\n  }\n\n  private getTicks() {\n    const ticks = [];\n    for (let value = Number(this.min); value <= Number(this.max); value += Number(this.step)) {\n      ticks.push(value);\n    }\n    return ticks;\n  }\n\n  public setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public _onRangeValueChange($event: any): void {\n    this.writeValue($event.detail.value);\n  }\n\n  public onTouched = () => {};\n\n  public propagateChange = (_: any) => {};\n\n  public writeValue(value: any): void {\n    if (value !== undefined) {\n      this.value = value;\n    }\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  public registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n}\n","<ion-range\n  (ionChange)=\"_onRangeValueChange($event)\"\n  [min]=\"min\"\n  [max]=\"max\"\n  [step]=\"step\"\n  [value]=\"value\"\n  [pin]=\"pin\"\n  [snaps]=\"ticks\"\n  [ticks]=\"ticks\"\n  [debounce]=\"debounce\"\n  [disabled]=\"disabled\"\n>\n</ion-range>\n\n<label *ngIf=\"minLabel\" class=\"min-label\">{{ minLabel }}</label>\n<label *ngIf=\"maxLabel\" class=\"max-label\">{{ maxLabel }}</label>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@ionic/angular';\n\nimport { RouterOutletComponent } from './router-outlet.component';\n\n@NgModule({\n  declarations: [RouterOutletComponent],\n  imports: [CommonModule, IonicModule],\n  exports: [RouterOutletComponent],\n})\nexport class RouterOutletModule {}\n","export class ReorderEvent {\n  private origEvent: CustomEvent<any>;\n  private parent?: any;\n\n  constructor(ev: CustomEvent<any>, parentItem?: any) {\n    this.origEvent = ev;\n    this.parent = parentItem;\n    this.origEvent.cancelBubble = true;\n  }\n  complete(listOrReorder?: boolean | any[]): Promise<any> {\n    return this.origEvent.detail.complete(listOrReorder);\n  }\n\n  get parentItem(): any {\n    return this.parent;\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChildren,\n} from '@angular/core';\n\nimport { ListItemTemplateDirective } from '../list/list.directive';\n\nimport { ReorderEvent } from './reorder-event';\n\n@Component({\n  selector: 'kirby-reorder-list',\n  templateUrl: './reorder-list.component.html',\n  styleUrls: ['./reorder-list.component.scss'],\n})\nexport class ReorderListComponent implements OnChanges, OnDestroy {\n  @Input() items: any[];\n  @Input() subItemsName: string;\n  @Input() getItemTextDefault: (item: any) => string;\n\n  @Output() itemReorder = new EventEmitter<ReorderEvent>();\n  @Output() subItemReorder = new EventEmitter<ReorderEvent>();\n\n  @ContentChild(ListItemTemplateDirective, { static: true, read: TemplateRef })\n  itemTemplate: TemplateRef<any>;\n  @ViewChildren('reorderGroupContainer')\n  reorderGroupContainer: QueryList<ElementRef>;\n\n  private observer: MutationObserver;\n  reorderActive: boolean = false;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnChanges(): void {\n    if (this.items && this.items.length > 0) {\n      setTimeout(() => {\n        this.setupDomListener();\n      });\n    }\n  }\n\n  private setupDomListener() {\n    const callback = (mutationsList: any) => {\n      for (let mutation of mutationsList) {\n        if (mutation.oldValue !== mutation.target['className']) {\n          this.reorderActive = mutation.target['className'].includes('reorder-list-active');\n        }\n      }\n      this.cdr.detectChanges();\n    };\n    this.observer = new MutationObserver(callback);\n\n    this.reorderGroupContainer.forEach((div: ElementRef) => {\n      this.observer.observe(div.nativeElement, {\n        attributes: true,\n        attributeFilter: ['class'],\n        attributeOldValue: true,\n        childList: false,\n        subtree: true,\n      });\n    });\n  }\n\n  doReorder(ev: CustomEvent) {\n    this.itemReorder.emit(new ReorderEvent(ev));\n  }\n\n  doSubReorder(ev: CustomEvent, parentItem: any) {\n    this.subItemReorder.emit(new ReorderEvent(ev, parentItem));\n  }\n\n  ngOnDestroy() {\n    //clean up the observer\n    this.observer && this.observer.disconnect();\n    delete this.observer;\n  }\n}\n","<ion-backdrop *ngIf=\"reorderActive\" [tappable]=\"false\" [visible]=\"true\" [stopPropagation]=\"false\">\n</ion-backdrop>\n<ion-reorder-group (ionItemReorder)=\"doReorder($event)\" disabled=\"false\">\n  <div *ngFor=\"let reorderItem of items\" class=\"outer-group\">\n    <kirby-card>\n      <ng-container\n        *ngTemplateOutlet=\"itemTemplate || defaultItemTemplate; context: { $implicit: reorderItem }\"\n      >\n      </ng-container>\n      <div *ngIf=\"reorderItem[subItemsName]\" #reorderGroupContainer>\n        <ion-reorder-group (ionItemReorder)=\"doSubReorder($event, reorderItem)\" disabled=\"false\">\n          <div *ngFor=\"let subItem of reorderItem[subItemsName]\">\n            <ng-container\n              *ngTemplateOutlet=\"\n                itemTemplate || defaultItemTemplate;\n                context: { $implicit: subItem, isSubItem: true }\n              \"\n            ></ng-container>\n          </div>\n        </ion-reorder-group>\n      </div>\n    </kirby-card>\n  </div>\n</ion-reorder-group>\n\n<ng-template #defaultItemTemplate let-item let-isSubItem>\n  <kirby-item [reorderable]=\"true\">\n    <h3>{{ getItemTextDefault(item) }}</h3>\n  </kirby-item>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'kirby-section-header',\n  templateUrl: './section-header.component.html',\n  styleUrls: ['./section-header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SectionHeaderComponent {}\n","<ion-item-divider>\n  <ng-content></ng-content>\n</ion-item-divider>\n","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\n\nimport { IconRegistryService } from '../icon/icon-registry.service';\n\nimport { SegmentItem, SegmentItemInternal } from './segment-item';\n\nexport enum SegmentedControlMode {\n  chip = 'chip',\n  compactChip = 'compactChip',\n  default = 'default',\n}\n\n@Component({\n  selector: 'kirby-segmented-control',\n  templateUrl: './segmented-control.component.html',\n  styleUrls: ['./segmented-control.component.scss'],\n  // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n  host: { role: 'group' },\n})\nexport class SegmentedControlComponent {\n  constructor(private iconRegistryService: IconRegistryService) {}\n\n  /**\n   * Ensure that the click actually did originate from within the segment-button.\n   * We do not want to react to clicks on e.g. segment-btn-wrapper or badge.\n   */\n  preventOutsideClick(event: TouchEvent) {\n    if (event.target instanceof HTMLElement) {\n      const targetIsInSegmentBtn = !!event.target.closest('ion-segment-button');\n      if (!targetIsInSegmentBtn) {\n        event.stopImmediatePropagation();\n      }\n    }\n  }\n\n  @Input() mode: SegmentedControlMode | `${SegmentedControlMode}` = SegmentedControlMode.default;\n\n  @HostBinding('class')\n  get _modeCssClass() {\n    return {\n      [SegmentedControlMode.chip]: 'chip-mode',\n      [SegmentedControlMode.default]: 'default-mode',\n      [SegmentedControlMode.compactChip]: 'compact chip-mode',\n    }[this.mode];\n  }\n\n  private _items: SegmentItemInternal[] = [];\n  get items(): SegmentItem[] {\n    return this._items;\n  }\n\n  @Input() set items(value: SegmentItem[]) {\n    this._items = value || [];\n    this._items.forEach((item) => {\n      if (!item.badge) return;\n      // We need to verify whether badges icon is custom or default, so we can check for it in the template\n      item.badge.isCustomIcon =\n        item.badge.icon !== undefined &&\n        this.iconRegistryService.getIcon(item.badge.icon) !== undefined;\n    });\n    this._value = this.items[this.selectedIndex];\n  }\n\n  private _selectedIndex: number = -1;\n  get selectedIndex(): number {\n    return this._selectedIndex;\n  }\n\n  @Input() set selectedIndex(index: number) {\n    if (index !== this._selectedIndex) {\n      this._selectedIndex = index;\n      this._value = this.items[this.selectedIndex];\n      this.selectedIndexChange.emit(this.selectedIndex);\n    }\n  }\n\n  @Output() selectedIndexChange = new EventEmitter<number>();\n\n  private _value: SegmentItem;\n  get value(): SegmentItem {\n    return this._value;\n  }\n\n  @Input() set value(value: SegmentItem) {\n    this.selectedIndex = this.items.indexOf(value);\n  }\n\n  @HostBinding('class.sm')\n  isSmallSize: boolean;\n\n  @Input() set size(size: 'sm' | 'md') {\n    this.isSmallSize = size === 'sm';\n  }\n\n  private _disableChangeOnSwipe: boolean = false;\n  get disableChangeOnSwipe(): boolean {\n    return this._disableChangeOnSwipe;\n  }\n\n  @Input() set disableChangeOnSwipe(value: boolean) {\n    this._disableChangeOnSwipe = value;\n  }\n\n  @Output() segmentSelect: EventEmitter<SegmentItem> = new EventEmitter();\n\n  onSegmentSelect(selectedId: string) {\n    const selectedItemIndex = this.items.findIndex((item) => selectedId === item.id);\n\n    if (selectedItemIndex !== this.selectedIndex) {\n      this.selectedIndex = selectedItemIndex;\n      setTimeout(() => {\n        this.segmentSelect.emit(this.value);\n      });\n    }\n  }\n}\n","<ion-segment\n  [value]=\"value?.id\"\n  [scrollable]=\"disableChangeOnSwipe || mode !== 'default'\"\n  (ionChange)=\"onSegmentSelect($event.detail.value)\"\n  (click)=\"preventOutsideClick($event)\"\n>\n  <ng-container *ngFor=\"let item of items\">\n    <ion-segment-button [value]=\"item.id\">{{ item.text }} </ion-segment-button>\n    <div class=\"badge-container\" *ngIf=\"item.badge\">\n      <kirby-badge\n        role=\"text\"\n        [attr.aria-label]=\"item.badge.description\"\n        [themeColor]=\"item.badge.themeColor\"\n      >\n        <ng-container *ngIf=\"item.badge.icon; else badgeContent\">\n          <kirby-icon\n            *ngIf=\"item.badge.isCustomIcon; else defaultIconName\"\n            [customName]=\"item.badge.icon\"\n          ></kirby-icon>\n          <ng-template #defaultIconName>\n            <kirby-icon [name]=\"item.badge.icon\"></kirby-icon>\n          </ng-template>\n        </ng-container>\n        <ng-template #badgeContent>\n          {{ item.badge.content }}\n        </ng-template>\n      </kirby-badge>\n    </div>\n  </ng-container>\n</ion-segment>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n} from '@angular/core';\n\n@Component({\n  selector: 'kirby-slide-button',\n  templateUrl: './slide-button.component.html',\n  styleUrls: ['./slide-button.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlideButtonComponent implements OnDestroy {\n  @Input() text = '';\n  @Input() expand: 'block';\n\n  @Output() slideDone = new EventEmitter();\n  @Output() slidingPercentageChanged = new EventEmitter<number>();\n\n  readonly slideDoneFadeTime = 500;\n  readonly slideResetTime = 100;\n\n  isSlideDone = false;\n  pctInTens = 0;\n\n  get value(): number {\n    return this._value;\n  }\n  set value(v: number) {\n    this._value = v;\n    this.calculatePctInTens();\n  }\n\n  private _value: number = 0;\n  private resetSliderIntervalTimer: any;\n  private calculatePctInTens() {\n    this.pctInTens = Math.ceil(this.value / 10) * 10;\n  }\n\n  constructor(private changeDetectionRef: ChangeDetectorRef) {}\n\n  ngOnDestroy(): void {\n    if (this.resetSliderIntervalTimer) {\n      clearInterval(this.resetSliderIntervalTimer);\n    }\n  }\n\n  onSliderMouseup() {\n    if (this.value == 100) {\n      this.handleSlideDone();\n    } else {\n      this.resetSliderIntervalTimer = setInterval(() => {\n        if (this.value > 0) {\n          this.value -= 2;\n        } else {\n          clearInterval(this.resetSliderIntervalTimer);\n        }\n\n        this.changeDetectionRef.markForCheck();\n      }, 1);\n    }\n  }\n\n  onSliderValueChange(val: string) {\n    this.value = +val;\n    this.slidingPercentageChanged.emit(this.value);\n  }\n\n  onSliderMousedown() {\n    clearInterval(this.resetSliderIntervalTimer);\n  }\n\n  private handleSlideDone() {\n    this.slideDone.emit();\n    this.isSlideDone = true;\n  }\n}\n","<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n  <input\n    type=\"range\"\n    (mouseup)=\"onSliderMouseup()\"\n    (touchend)=\"onSliderMouseup()\"\n    (input)=\"onSliderValueChange($event.target.value)\"\n    (mousedown)=\"onSliderMousedown()\"\n    (touchstart)=\"onSliderMousedown()\"\n    class=\"slide-button\"\n    [value]=\"value\"\n    max=\"100\"\n  />\n  <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n","import { AfterViewInit, EventEmitter } from '@angular/core';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  Directive,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { IonSlides } from '@ionic/angular';\n\n@Directive({\n  selector: '[kirbySlide]',\n})\nexport class SlideDirective {}\n\n@Component({\n  selector: 'kirby-slides',\n  template: `\n    <ion-slides [options]=\"slidesOptions\" #ionslides (ionSlideDidChange)=\"onSlideChanged()\">\n      <ion-slide *ngFor=\"let slide of slides; let i = index\">\n        <ng-container\n          *ngTemplateOutlet=\"slideTemplate; context: { $implicit: slide, index: i }\"\n        ></ng-container>\n      </ion-slide>\n    </ion-slides>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlidesComponent implements AfterViewInit {\n  @ViewChild('ionslides', { static: false }) ionSlides: IonSlides;\n  @Input() slidesOptions: any;\n  @Input() slides: any[];\n  @Output() selectedSlide = new EventEmitter<any>();\n\n  @ContentChild(SlideDirective, { static: true, read: TemplateRef })\n  public slideTemplate: TemplateRef<any>;\n\n  ngAfterViewInit() {\n    this.slideTo(0);\n  }\n\n  onSlideChanged() {\n    this.ionSlides.getActiveIndex().then((selectedIndex) => {\n      this.selectedSlide.emit({\n        slide: this.slides[selectedIndex],\n        index: selectedIndex,\n      });\n    });\n  }\n\n  slideTo(index: number) {\n    this.ionSlides.slideTo(index);\n  }\n}\n","import {\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\n\nimport { IconComponent } from '../../icon/icon.component';\nimport { selectedTabClickEvent } from './tab-button.events';\n\n@Component({\n  selector: 'kirby-tab-button',\n  templateUrl: './tab-button.component.html',\n  styleUrls: ['./tab-button.component.scss'],\n})\nexport class TabButtonComponent implements OnInit {\n  @Input() routerLink: string;\n  @Output() click = new EventEmitter<Event>();\n  @ContentChildren(IconComponent) icons: QueryList<IconComponent>;\n\n  constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n  ngOnInit(): void {\n    this.removeWrapper();\n  }\n\n  onClick(event: Event, isSelected: boolean) {\n    this.click.emit(event);\n\n    if (isSelected) {\n      const clickEvent = new CustomEvent(selectedTabClickEvent);\n      dispatchEvent(clickEvent);\n    }\n  }\n\n  private removeWrapper() {\n    const parent = this.elementRef.nativeElement.parentNode;\n    const button = this.elementRef.nativeElement.childNodes[0];\n    this.renderer.removeChild(parent, this.elementRef.nativeElement);\n    this.renderer.appendChild(parent, button);\n  }\n}\n","<ion-tab-button #ionTabButton [tab]=\"routerLink\" (click)=\"onClick($event, ionTabButton.selected)\">\n  <div class=\"icon-container\" *ngIf=\"icons.length\">\n    <ng-content\n      *ngIf=\"icons.length === 1 || !ionTabButton.selected\"\n      select=\"kirby-icon[:not([selected-tab])]\"\n    ></ng-content>\n    <ng-content *ngIf=\"ionTabButton.selected\" select=\"kirby-icon[selected-tab]\"></ng-content>\n  </div>\n  <ion-label>\n    <ng-content></ng-content>\n  </ion-label>\n  <ng-content select=\"kirby-badge\"></ng-content>\n</ion-tab-button>\n","import { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { CommonModule } from '@angular/common';\n\nimport { TabsComponent } from './tabs.component';\nimport { TabButtonComponent } from './tab-button/tab-button.component';\nimport { IconModule } from '../icon/icon.module';\nimport { TabsService } from './tabs.service';\n\n@NgModule({\n  imports: [IonicModule, IconModule, CommonModule],\n  providers: [TabsService],\n  declarations: [TabsComponent, TabButtonComponent],\n  exports: [TabsComponent, TabButtonComponent],\n})\nexport class TabsModule {}\n","import { Injectable } from '@angular/core';\nimport { ToastController } from '@ionic/angular';\n\nimport { Overlay } from '../../modal/services/modal.interfaces';\nimport { MessageType, ToastConfig } from '../config/toast-config';\n\n@Injectable()\nexport class ToastHelper {\n  static CSS_CLASS = 'kirby-toast';\n  static DURATION_IN_MS = 4000;\n\n  constructor(private toastController: ToastController) {}\n\n  public async showToast(config: ToastConfig): Promise<Overlay> {\n    const toast = await this.toastController.create({\n      animated: config.animated,\n      message: config.message,\n      position: 'top',\n      duration: config.durationInMs ? config.durationInMs : ToastHelper.DURATION_IN_MS,\n      cssClass: this.getCssClass(config.messageType),\n    });\n    await toast.present();\n    return {\n      dismiss: toast.dismiss.bind(toast),\n      onWillDismiss: toast.onWillDismiss(),\n      onDidDismiss: toast.onDidDismiss(),\n    };\n  }\n\n  private getCssClass(messageType: MessageType): string {\n    let cssClass = ToastHelper.CSS_CLASS;\n\n    if (messageType) {\n      cssClass += ' ' + messageType;\n    }\n\n    return cssClass;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ToastConfig } from '../config/toast-config';\n\nimport { ToastHelper } from './toast.helper';\n\n@Injectable()\nexport class ToastController {\n  constructor(private toastHelper: ToastHelper) {}\n\n  public showToast(config: ToastConfig, onCloseToast?: () => void) {\n    this.toastHelper.showToast(config).then((overlay) => {\n      if (onCloseToast) {\n        overlay.onDidDismiss.then(() => onCloseToast());\n      }\n    });\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\n\n@Component({\n  selector: 'kirby-toggle',\n  templateUrl: './toggle.component.html',\n  styleUrls: ['./toggle.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleComponent {\n  @Input() checked: boolean = false;\n  @Input() disabled: boolean = false;\n\n  @Output() checkedChange = new EventEmitter<boolean>();\n\n  _pressed = false;\n\n  onCheckedChange(checked: boolean): void {\n    this.checked = checked;\n    this.checkedChange.emit(this.checked);\n  }\n\n  _onActive() {\n    this._pressed = true;\n  }\n\n  _onInactive() {\n    this._pressed = false;\n  }\n}\n","<ion-toggle\n  [checked]=\"checked\"\n  [disabled]=\"disabled\"\n  [class.interaction-state-active]=\"_pressed\"\n  (keydown.space)=\"_onActive()\"\n  (keyup.space)=\"_onInactive()\"\n  (blur)=\"_onInactive()\"\n  (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n  selector: 'kirby-progress-circle-ring',\n  templateUrl: './progress-circle-ring.component.svg',\n  styleUrls: ['./progress-circle-ring.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCircleRingComponent {\n  @Input() radius: number; // The desired outer radius of the SVG circle\n  @Input() value: number = 0;\n  @Input() themeColor: 'success' | 'warning' | 'danger' = 'success';\n  @Input() strokeWidth: number;\n  @Input() upperBound: number;\n\n  get _offset(): number {\n    const valueWithinBounds = this.value < this.upperBound || this.value > 99;\n    if (valueWithinBounds) {\n      return this.calculateOffset(this.value);\n    } else {\n      return this.calculateOffset(this.upperBound);\n    }\n  }\n\n  @HostBinding('style.width.px')\n  @HostBinding('style.height.px')\n  get _diameter(): number {\n    return this.radius * 2;\n  }\n\n  get _centerRadius(): number {\n    return this.radius - this.strokeWidth / 2;\n  }\n\n  get _centerCircumference(): number {\n    return this._centerRadius * 2 * Math.PI;\n  }\n\n  private calculateOffset(value: number): number {\n    return this._centerCircumference - this._centerCircumference * (value / 100);\n  }\n}\n","<svg [attr.width]=\"_diameter\" [attr.height]=\"_diameter\">\n  <circle\n    shape-rendering=\"geometricPrecision\"\n    class=\"circle\"\n    fill=\"transparent\"\n    [attr.stroke-width]=\"strokeWidth\"\n    [attr.r]=\"_centerRadius\"\n    [attr.cx]=\"radius\"\n    [attr.cy]=\"radius\"\n  />\n  <circle\n    shape-rendering=\"geometricPrecision\"\n    class=\"progress\"\n    fill=\"transparent\"\n    stroke-linecap=\"round\"\n    [attr.stroke-width]=\"strokeWidth\"\n    [attr.r]=\"_centerRadius\"\n    [attr.cx]=\"radius\"\n    [attr.cy]=\"radius\"\n    [attr.stroke-dashoffset]=\"_offset\"\n    [attr.stroke-dasharray]=\"_centerCircumference\"\n  />\n</svg>","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n} from '@angular/core';\n\n@Component({\n  selector: 'kirby-progress-circle',\n  templateUrl: './progress-circle.component.html',\n  styleUrls: ['./progress-circle.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCircleComponent implements AfterViewInit, OnDestroy {\n  readonly SIZE_CONFIG = {\n    sm: { diameter: 40, strokeWidth: 3, upperBound: 95 },\n    md: { diameter: 56, strokeWidth: 4, upperBound: 96 },\n    lg: { diameter: 96, strokeWidth: 6, upperBound: 97 },\n  };\n\n  @Input() value: number = 0;\n  @Input() size: 'sm' | 'md' | 'lg' = 'md';\n  @Input() themeColor: 'success' | 'warning' | 'danger' = 'success';\n\n  @HostBinding('class')\n  get _cssSize() {\n    return this.size;\n  }\n\n  private hasElementBeenVisible?: boolean;\n  private observer: IntersectionObserver;\n\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private changeDetectorRef: ChangeDetectorRef\n  ) {}\n\n  ngAfterViewInit(): void {\n    if (!this.observer) {\n      this.observer = new IntersectionObserver(this.onIntersectionChange, {\n        threshold: 0.5,\n      });\n      this.observer.observe(this.elementRef.nativeElement);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unobserve();\n  }\n\n  private onIntersectionChange = (entries: IntersectionObserverEntry[]) => {\n    this.hasElementBeenVisible = entries && entries.some((entry) => entry.isIntersecting);\n    if (this.hasElementBeenVisible) {\n      this.unobserve();\n      this.changeDetectorRef.markForCheck();\n    }\n  };\n\n  private unobserve() {\n    if (this.observer) {\n      this.observer.unobserve(this.elementRef.nativeElement);\n      // Safari does not support \"disconnect\", see: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#Browser_compatibility\n      if (typeof this.observer.disconnect === 'function') {\n        this.observer.disconnect();\n      }\n    }\n  }\n\n  @HostBinding('style.width.px')\n  @HostBinding('style.height.px')\n  get _diameter(): number {\n    return this.SIZE_CONFIG[this.size].diameter;\n  }\n\n  get _shownValue() {\n    // This is needed to make an animation [0 -> value] when element is shown to the user\n    return this.hasElementBeenVisible ? this.value : 0;\n  }\n\n  get _radius() {\n    return this._diameter / 2;\n  }\n\n  get _strokeWidth() {\n    return this.SIZE_CONFIG[this.size].strokeWidth;\n  }\n\n  get _upperBound() {\n    // This is needed to make sure that an input value close to 100 is not shown as 100\n    return this.SIZE_CONFIG[this.size].upperBound;\n  }\n}\n","<div class=\"transcluded-content\">\n  <ng-content></ng-content>\n</div>\n<kirby-progress-circle-ring\n  [themeColor]=\"themeColor\"\n  [value]=\"_shownValue\"\n  [radius]=\"_radius\"\n  [strokeWidth]=\"_strokeWidth\"\n  [upperBound]=\"_upperBound\"\n>\n</kirby-progress-circle-ring>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\n\n@Component({\n  selector: 'kirby-toggle-button',\n  templateUrl: './toggle-button.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleButtonComponent {\n  @Input() checked: boolean;\n  @Output() checkChanged = new EventEmitter<boolean>();\n\n  @HostListener('click')\n  onClick() {\n    this.checked = !this.checked;\n    this.checkChanged.emit(this.checked);\n  }\n}\n","<ng-container *ngIf=\"!checked\">\n  <ng-content select=\"button[kirby-button][unchecked]\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"checked\">\n  <ng-content select=\"button[kirby-button][checked]\"></ng-content>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ToggleButtonComponent } from './toggle-button.component';\n\nconst DECLARATIONS = [ToggleButtonComponent];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [CommonModule],\n  exports: [...DECLARATIONS],\n})\nexport class ToggleButtonModule {}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { WindowRef } from '../../types';\nimport { LocalNavigationItem } from './page-local-navigation-item';\n\n@Component({\n  selector: 'kirby-page-local-navigation',\n  templateUrl: './page-local-navigation.component.html',\n  styleUrls: ['./page-local-navigation.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageLocalNavigationComponent implements AfterViewInit {\n  private readonly DEBOUNCE_TIME_MS = 250;\n\n  @Input() items: LocalNavigationItem[] = [];\n  @Input() selectedIndex = 0;\n\n  @Output() selectedIndexChange = new EventEmitter<number>();\n\n  @ViewChild('tabBar') tabBarElementRef?: ElementRef<HTMLElement>;\n  private get tabBarNativeElement(): HTMLElement | undefined {\n    return this.tabBarElementRef?.nativeElement;\n  }\n\n  constructor(private window: WindowRef) {\n    console.warn(\n      'kirby-local-navigation component is an experimental feature and should not be used in a production environment.'\n    );\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.scrollToSelectedTab(this.selectedIndex);\n    }, this.DEBOUNCE_TIME_MS);\n  }\n\n  onTabChange(index: number): void {\n    if (this.selectedIndex !== index) {\n      this.selectedIndex = index;\n      this.scrollToSelectedTab(index);\n      this.selectedIndexChange.emit(index);\n    }\n  }\n\n  private getSelectedItemElement(index: number): HTMLElement | undefined {\n    const tabBarElement = this.tabBarNativeElement;\n\n    if (tabBarElement) {\n      return tabBarElement.children.item(index) as HTMLElement;\n    }\n  }\n\n  focusNext(index: number): void {\n    const tabBarElement = this.tabBarNativeElement;\n    if (tabBarElement) {\n      const next = tabBarElement.children.item(index) as HTMLElement;\n      next?.focus({ preventScroll: false });\n    }\n  }\n\n  private scrollToSelectedTab(index: number): void {\n    const tabBarElement = this.tabBarNativeElement;\n    const selectedTabElement = this.getSelectedItemElement(index);\n\n    if (tabBarElement && selectedTabElement) {\n      const selectedTabElementWidth = selectedTabElement.getBoundingClientRect().width;\n      const selectedTabElementOffsetLeft = selectedTabElement.offsetLeft;\n      const tabBarElementWidth = tabBarElement.getBoundingClientRect().width;\n\n      this.window.nativeWindow.requestAnimationFrame(() => {\n        tabBarElement?.scrollTo({\n          behavior: 'smooth',\n          left: Math.max(\n            0,\n            selectedTabElementOffsetLeft - (tabBarElementWidth - selectedTabElementWidth) / 2\n          ),\n        });\n      });\n    }\n  }\n}\n","<div class=\"container\">\n  <div class=\"tab-bar\" #tabBar>\n    <div\n      class=\"tab-item\"\n      *ngFor=\"let item of items; let i = index\"\n      (click)=\"onTabChange(i)\"\n      [ngClass]=\"i === selectedIndex ? 'selected' : ''\"\n      [tabIndex]=\"0\"\n      (keydown.enter)=\"onTabChange(i)\"\n      (keydown.arrowLeft)=\"focusNext(i - 1)\"\n      (keydown.arrowRight)=\"focusNext(i + 1)\"\n    >\n      <div class=\"tab-item-inner\" [class.extended]=\"!!item.badge\">\n        <span [attr.text]=\"item.text\">{{ item.text }}</span>\n        <ng-container *ngIf=\"item.badge; let badge\">\n          <kirby-badge\n            role=\"text\"\n            [attr.aria-label]=\"badge.description\"\n            [themeColor]=\"badge.themeColor\"\n          >\n            <ng-container *ngIf=\"badge.content.name; else badgeTextContent\">\n              <kirby-icon\n                *ngIf=\"badge.content.isCustom; else defaultIconName\"\n                [customName]=\"badge.content.name\"\n              ></kirby-icon>\n              <ng-template #defaultIconName>\n                <kirby-icon [name]=\"badge.content.name\"></kirby-icon>\n              </ng-template>\n            </ng-container>\n            <ng-template #badgeTextContent>\n              {{ badge.content.text }}\n            </ng-template>\n          </kirby-badge>\n        </ng-container>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: `[keyHandler]`,\n})\nexport class KeyHandlerDirective {\n  constructor(private element: ElementRef) {}\n\n  @HostListener('keyup', ['$event'])\n  keyEvent(event: KeyboardEvent) {\n    if (event.key === ' ' || event.key === 'Enter' || event.key === 'Spacebar') {\n      // Prevent the default action to stop scrolling when space is pressed\n      event.preventDefault();\n\n      const hostElement = <HTMLElement>this.element.nativeElement;\n      hostElement.click();\n    }\n  }\n}\n","import { Directive, ElementRef, HostBinding, HostListener, OnInit, Optional } from '@angular/core';\n\nimport { CardComponent } from '../../components/card/card.component';\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'kirby-card[click], kirby-chip',\n})\nexport class ElementAsButtonDirective implements OnInit {\n  @HostBinding('attr.role') role: string = 'button';\n  @HostBinding('attr.tabindex') tabindex: number = 0;\n\n  @HostBinding('class.interaction-state-active') _pressed = false;\n  constructor(@Optional() private card: CardComponent, private clickableElement: ElementRef) {}\n\n  ngOnInit(): void {\n    if (this.card) {\n      this.card.flat = false;\n    }\n  }\n\n  @HostListener('keydown.space', ['$event'])\n  @HostListener('keydown.enter', ['$event'])\n  _onKeydownHandler(event: KeyboardEvent) {\n    this._pressed = true;\n    this.clickableElement.nativeElement.click(event);\n    /*\n     * Prevent default event from firing so the UA wont\n     * catch this event and e.g. scroll the page on space,\n     * which is the default behavior in major browsers\n     */\n\n    event.preventDefault();\n  }\n\n  @HostListener('keyup.space')\n  @HostListener('keyup.enter')\n  @HostListener('blur')\n  _onInactiveHandler() {\n    this._pressed = false;\n  }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { ModalNavigationService } from '../../components/modal/services/modal-navigation.service';\n\n@Directive({\n  selector: `[kirbyModalRouterLink]`,\n})\nexport class ModalRouterLinkDirective {\n  constructor(private modalNavigationService: ModalNavigationService) {}\n\n  @Input('kirbyModalRouterLink') path: string | string[];\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('kirbyModalQueryParams') queryParams?: Params;\n\n  @HostListener('click')\n  onClick(): boolean {\n    this.modalNavigationService.navigateToModal(\n      this.path,\n      typeof this.queryParams !== 'string' ? this.queryParams : null\n    );\n    return false;\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { APP_INITIALIZER } from '@angular/core';\n\nimport { defineCustomElements } from '@kirby-test-org/core/loader';\n\nexport const appInitialize = (doc: Document) => {\n  return () => {\n    defineCustomElements(doc.defaultView);\n  };\n};\n\nexport function customElementsInitializer() {\n  return {\n    provide: APP_INITIALIZER,\n    useFactory: appInitialize,\n    deps: [DOCUMENT],\n    multi: true,\n  };\n}\n","import { CommonModule } from '@angular/common';\nimport { Inject, InjectionToken, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { IonicModule } from '@ionic/angular';\n\nimport { AccordionItemComponent } from './components/accordion/accordion-item.component';\nimport { AccordionDirective } from './components/accordion/accordion.directive';\nimport { AppModule } from './components/app/app.module';\nimport { AvatarComponent } from './components/avatar/avatar.component';\nimport { ButtonComponent } from './components/button/button.component';\nimport { CalendarComponent } from './components/calendar/calendar.component';\nimport { CardFooterComponent } from './components/card/card-footer/card-footer.component';\nimport { CardHeaderComponent } from './components/card/card-header/card-header.component';\nimport { CardComponent } from './components/card/card.component';\nimport { ChartsModule } from './components/charts';\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\nimport { ChipComponent } from './components/chip/chip.component';\nimport { DataTableModule } from './components/data-table/data-table.module';\nimport { DividerComponent } from './components/divider/divider.component';\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { FabSheetComponent } from './components/fab-sheet/fab-sheet.component';\nimport { FlagComponent } from './components/flag/flag.component';\nimport { DateInputDirective } from './components/form-field/directives/date/date-input.directive';\nimport { DecimalMaskDirective } from './components/form-field/directives/decimal-mask/decimal-mask.directive';\nimport { AffixDirective } from './components/form-field/directives/affix/affix.directive';\nimport { FormFieldMessageComponent } from './components/form-field/form-field-message/form-field-message.component';\nimport { FormFieldComponent } from './components/form-field/form-field.component';\nimport { InputCounterComponent } from './components/form-field/input-counter/input-counter.component';\nimport { InputComponent } from './components/form-field/input/input.component';\nimport { TextareaComponent } from './components/form-field/textarea/textarea.component';\nimport { BreakpointHelperService } from './components/grid/breakpoint-helper.service';\nimport { GridComponent } from './components/grid/grid.component';\nimport { IconModule } from './components/icon/icon.module';\nimport { ItemGroupComponent } from './components/item-group/item-group.component';\nimport { ItemSlidingComponent } from './components/item-sliding/item-sliding.component';\nimport { ItemModule } from './components/item/item.module';\nimport { ListModule } from './components/list/list.module';\nimport { LoadingOverlayComponent } from './components/loading-overlay/loading-overlay.component';\nimport { LoadingOverlayService } from './components/loading-overlay/loading-overlay.service';\nimport { ActionSheetComponent } from './components/modal/action-sheet/action-sheet.component';\nimport { AlertComponent } from './components/modal/alert/alert.component';\nimport { ModalFooterComponent } from './components/modal/footer/modal-footer.component';\nimport { ModalCompactWrapperComponent } from './components/modal/modal-wrapper/compact/modal-compact-wrapper.component';\nimport { ModalWrapperComponent } from './components/modal/modal-wrapper/modal-wrapper.component';\nimport { ActionSheetHelper } from './components/modal/services/action-sheet.helper';\nimport { AlertHelper } from './components/modal/services/alert.helper';\nimport { ModalController } from './components/modal/services/modal.controller';\nimport { ModalHelper } from './components/modal/services/modal.helper';\nimport { PageModule } from './components/page/page.module';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { ProgressCircleRingComponent } from './components/progress-circle/progress-circle-ring.component';\nimport { ProgressCircleComponent } from './components/progress-circle/progress-circle.component';\nimport { RadioGroupComponent } from './components/radio/radio-group/radio-group.component';\nimport { RadioComponent } from './components/radio/radio.component';\nimport { RangeComponent } from './components/range/range.component';\nimport { ReorderListComponent } from './components/reorder-list/reorder-list.component';\nimport { RouterOutletModule } from './components/router-outlet/router-outlet.module';\nimport { SectionHeaderComponent } from './components/section-header/section-header.component';\nimport { SegmentedControlComponent } from './components/segmented-control/segmented-control.component';\nimport { ComponentLoaderDirective } from './components/shared/component-loader.directive';\nimport { ResizeObserverFactory } from './components/shared/resize-observer/resize-observer.factory';\nimport { ResizeObserverService } from './components/shared/resize-observer/resize-observer.service';\nimport { SlideButtonComponent } from './components/slide-button/slide-button.component';\nimport { SlideDirective, SlidesComponent } from './components/slides/slides.component';\nimport { SpinnerModule } from './components/spinner/spinner.module';\nimport { TabsModule } from './components/tabs/tabs.module';\nimport { ToastController } from './components/toast/services/toast.controller';\nimport { ToastHelper } from './components/toast/services/toast.helper';\nimport { ToggleButtonModule } from './components/toggle-button/toggle-button.module';\nimport { ToggleComponent } from './components/toggle/toggle.component';\nimport { KirbyBadge as BadgeComponent } from './components/web-component-proxies.component';\nimport { customElementsInitializer } from './custom-elements-initializer';\nimport { ElementAsButtonDirective } from './directives/element-as-button/element-as-button.directive';\nimport { KeyHandlerDirective } from './directives/key-handler/key-handler.directive';\nimport { ModalRouterLinkDirective } from './directives/modal-router-link/modal-router-link.directive';\nimport { ThemeColorDirective } from './directives/theme-color/theme-color.directive';\n\nconst exportedDeclarations = [\n  CardComponent,\n  CardHeaderComponent,\n  CardFooterComponent,\n  ButtonComponent,\n  GridComponent,\n  ComponentLoaderDirective,\n  AvatarComponent,\n  CalendarComponent,\n  CheckboxComponent,\n  ActionSheetComponent,\n  ModalFooterComponent,\n  ModalRouterLinkDirective,\n  SegmentedControlComponent,\n  ChipComponent,\n  BadgeComponent,\n  ThemeColorDirective,\n  DateInputDirective,\n  DecimalMaskDirective,\n  SlideButtonComponent,\n  ToggleComponent,\n  EmptyStateComponent,\n  AffixDirective,\n  FormFieldComponent,\n  InputComponent,\n  InputCounterComponent,\n  TextareaComponent,\n  FabSheetComponent,\n  DividerComponent,\n  ReorderListComponent,\n  DropdownComponent,\n  LoadingOverlayComponent,\n  ProgressCircleComponent,\n  FlagComponent,\n  SlidesComponent,\n  SlideDirective,\n  AccordionDirective,\n  AccordionItemComponent,\n  ItemSlidingComponent,\n  RadioComponent,\n  RadioGroupComponent,\n  RangeComponent,\n  ElementAsButtonDirective,\n  ItemGroupComponent,\n  SectionHeaderComponent,\n];\n\nconst declarations = [\n  ...exportedDeclarations,\n  KeyHandlerDirective,\n  FormFieldMessageComponent,\n  AlertComponent,\n  ModalWrapperComponent,\n  ModalCompactWrapperComponent,\n  ProgressCircleRingComponent,\n  PopoverComponent,\n];\n\nconst exportedModules = [\n  AppModule,\n  RouterOutletModule,\n  PageModule,\n  TabsModule,\n  IconModule,\n  ItemModule,\n  ToggleButtonModule,\n  ListModule,\n  ChartsModule,\n  SpinnerModule,\n  DataTableModule,\n];\n\nconst allExports = [...exportedModules, ...exportedDeclarations];\n\nconst importedModules = [...exportedModules];\n\nconst providers = [\n  ModalController,\n  ActionSheetHelper,\n  ModalHelper,\n  AlertHelper,\n  ToastHelper,\n  ToastController,\n  BreakpointHelperService,\n  LoadingOverlayService,\n  ResizeObserverFactory,\n  ResizeObserverService,\n  customElementsInitializer(),\n];\n\nconst entryComponents = [\n  ModalWrapperComponent,\n  ModalCompactWrapperComponent,\n  ActionSheetComponent,\n  AlertComponent,\n];\n\nconst ConfigToken = new InjectionToken<any>('USERCONFIG');\nexport interface KirbyConfig {\n  moduleRootRoutePath?: string;\n}\n\n@NgModule({\n  imports: [\n    CommonModule,\n    RouterModule,\n    IonicModule.forRoot({\n      mode: 'ios',\n      inputShims: true,\n      scrollAssist: true,\n      scrollPadding: false,\n    }),\n    ...importedModules,\n  ],\n  declarations: declarations,\n  providers: providers,\n  exports: allExports,\n})\nexport class KirbyModule {\n  static forChild(config?: KirbyConfig): ModuleWithProviders<KirbyModule> {\n    return {\n      ngModule: KirbyModule,\n      providers: [\n        {\n          provide: ConfigToken,\n          useValue: config,\n        },\n      ],\n    };\n  }\n\n  constructor(\n    modalController: ModalController,\n    @Optional() @Inject(ConfigToken) config?: KirbyConfig\n  ) {\n    modalController.initialize(config && config.moduleRootRoutePath);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PageLocalNavigationComponent } from './components';\nimport { KirbyModule } from './kirby.module';\n\nconst COMPONENT_DECLARATIONS = [PageLocalNavigationComponent];\n\n/**\n * This module contains experimental components, that should not be used in a production environment.\n * @see KirbyModule\n */\n@NgModule({\n  imports: [CommonModule, KirbyModule],\n  exports: COMPONENT_DECLARATIONS,\n  declarations: COMPONENT_DECLARATIONS,\n})\nexport class KirbyExperimentalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.IconRegistryService","i2","i1.IconComponent","i1.ResizeObserverFactory","i1.ResizeObserverService","i1","i1.CardComponent","i2.CardHeaderComponent","i3.ButtonComponent","i4","i1.WindowRef","i2.EmptyStateComponent","i4.ThemeColorDirective","i2.WindowRef","i3.PlatformService","i5.ButtonComponent","i6.IconComponent","i7","i8","i1.PlatformService","i2.ModalAnimationBuilderService","i3.WindowRef","i4.AlertHelper","i1.ModalController","getThemeColorHexString","fontSize","i1.ChartConfigService","i1.ChartJSService","i2.IconComponent","i3","i1.KeyboardHandlerService","i2.ButtonComponent","i3.IconComponent","i4.PopoverComponent","i5.CardComponent","i6.ItemComponent","i4.DropdownComponent","i2.RadioComponent","i1.FormFieldMessageComponent","i3.ResizeObserverService","i4.FormFieldMessageComponent","i1.BreakpointHelperService","i3.ComponentLoaderDirective","i1.SpinnerComponent","i4.ListItemColorDirective","i1.ListHelper","i3.SpinnerComponent","i4.ListItemComponent","i5.InfiniteScrollDirective","i6","exportedDeclarations","declarations","i1.ModalElementsAdvertiser","i1.TabsService","i2.LineClampHelper","i1.ModalWrapperComponent","i2.ModalElementsAdvertiser","i4.ModalNavigationService","i5.TabsComponent","i7.SpinnerComponent","i9.FitHeadingDirective","i1.PageComponent","i2.CardComponent","i3.ItemComponent","i3.KirbyBadge","i4.IconComponent","i1.ToastHelper","i1.ProgressCircleRingComponent","i2.ThemeColorDirective","i2.KirbyBadge","i1.ModalNavigationService","BadgeComponent"],"mappings":"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"}