{"version":3,"file":"danske-sapphire-angular-lab.mjs","sources":["../../src/lib/common/coerce-boolean.decorator.ts","../../src/lib/common/auto-id.decorator.ts","../../src/lib/accordion/src/accordion-item.component.ts","../../src/lib/accordion/src/accordion-item.component.html","../../src/lib/accordion/src/accordion.component.ts","../../src/lib/accordion/src/accordion.component.html","../../src/lib/accordion/src/accordion-item-content.directive.ts","../../src/lib/accordion/src/accordion-item-heading.directive.ts","../../src/lib/accordion/src/accordion.module.ts","../../src/lib/alert/src/alert-content.directive.ts","../../src/lib/alert/src/alert.component.ts","../../src/lib/alert/src/alert.component.html","../../src/lib/alert/src/alert-title.directive.ts","../../src/lib/alert/src/alert.module.ts","../../src/lib/amount/src/amount.component.ts","../../src/lib/amount/src/amount.component.html","../../src/lib/amount/src/amount.module.ts","../../src/lib/amount/public_api.ts","../../src/lib/autocomplete/src/autocomplete.component.ts","../../src/lib/autocomplete/src/autocomplete.component.html","../../src/lib/autocomplete/src/autocomplete-trigger.directive.ts","../../src/lib/autocomplete/src/autocomplete.module.ts","../../src/lib/breadcrumbs/src/breadcrumb-item.component.ts","../../src/lib/breadcrumbs/src/breadcrumbs.component.ts","../../src/lib/breadcrumbs/src/breadcrumbs.component.html","../../src/lib/breadcrumbs/src/breadcrumbs.module.ts","../../src/lib/calendar/src/shared/date-utils.ts","../../src/lib/calendar/src/week-number.pipe.ts","../../src/lib/calendar/src/shared/utils.ts","../../src/lib/calendar/src/shared/calendar-view.ts","../../src/lib/calendar/src/shared/calendar-base.ts","../../src/lib/calendar/src/shared/calendar-grid.directive.ts","../../src/lib/calendar/src/day.pipe.ts","../../src/lib/calendar/src/month-name.pipe.ts","../../src/lib/calendar/src/year.pipe.ts","../../src/lib/calendar/src/shared/calendar-cell.directive.ts","../../src/lib/calendar/src/calendar-cell-button.component.ts","../../src/lib/calendar/src/calendar-cell-button.component.html","../../src/lib/calendar/i18n/index.ts","../../src/lib/common/translate.service.ts","../../src/lib/calendar/src/shared/calendar-next-button.directive.ts","../../src/lib/calendar/src/shared/calendar-previous-button.directive.ts","../../src/lib/common/translate.pipe.ts","../../src/lib/calendar/src/calendar-header.component.ts","../../src/lib/calendar/src/calendar-header.component.html","../../src/lib/calendar/src/shared/single-selection-calendar.directive.ts","../../src/lib/common/focusWithoutScrolling.ts","../../src/lib/calendar/src/shared/calendar-cell-button.ts","../../src/lib/calendar/src/shared/single-selection-calendar-cell-button.directive.ts","../../src/lib/calendar/src/sapphire-date-locale.ts","../../src/lib/calendar/src/calendar.component.ts","../../src/lib/calendar/src/calendar.component.html","../../src/lib/calendar/src/shared/range-calendar.directive.ts","../../src/lib/calendar/src/shared/range-calendar-cell-button.directive.ts","../../src/lib/calendar/src/range-calendar.component.ts","../../src/lib/calendar/src/range-calendar.component.html","../../src/lib/calendar/src/calendar.module.ts","../../src/lib/date-field/src/validators.ts","../../src/lib/date-field/src/utils/isScrollable.ts","../../src/lib/date-field/src/utils/getScrollParent.ts","../../src/lib/date-field/src/utils/getScrollParents.ts","../../src/lib/date-field/src/utils/scrollIntoView.ts","../../src/lib/date-field/src/date-field.token.ts","../../src/lib/date-field/i18n/index.ts","../../src/lib/date-field/src/date-field-segment.component.ts","../../src/lib/date-field/src/utils/Segment.ts","../../src/lib/date-field/src/utils/placeholders.ts","../../src/lib/date-field/src/utils/getSegmentLimits.ts","../../src/lib/date-field/src/utils/getFormatterOptions.ts","../../src/lib/date-field/src/date-field-segment-literal.component.ts","../../src/lib/date-field/src/date-field-input.component.ts","../../src/lib/date-field/src/date-field-input.component.html","../../src/lib/date-field/src/date-field.component.ts","../../src/lib/date-field/src/date-field.component.html","../../src/lib/date-field/src/date-range-field.component.ts","../../src/lib/date-field/src/date-range-field.component.html","../../src/lib/date-field/src/date-field.module.ts","../../src/lib/date-field/public_api.ts","../../src/lib/filtering/src/filter-dropdown.component.ts","../../src/lib/filtering/src/filter-dropdown.component.html","../../src/lib/filtering/src/filtering.module.ts","../../src/lib/filtering/public_api.ts","../../src/lib/flag/src/flag.component.ts","../../src/lib/flag/src/flag.module.ts","../../src/lib/labeled-value/src/labeled-value.component.ts","../../src/lib/labeled-value/src/labeled-value.module.ts","../../src/lib/labeled-value/public_api.ts","../../src/lib/danske-progress-bar/src/danske-progress-bar.component.ts","../../src/lib/danske-progress-bar/src/danske-progress-bar.component.html","../../src/lib/danske-progress-bar/src/danske-progress-bar.module.ts","../../src/lib/progress-indicator/src/progress-indicator.component.ts","../../src/lib/progress-indicator/src/progress-indicator.component.html","../../src/lib/progress-indicator/src/progress-indicator.module.ts","../../src/lib/slider/src/slider.provider.ts","../../src/lib/slider/src/slider-thumb.component.ts","../../src/lib/slider/src/slider-track.component.ts","../../src/lib/slider/src/slider.component.ts","../../src/lib/slider/src/slider.component.html","../../src/lib/slider/src/slider.module.ts","../../src/lib/search-field/src/search-field-input.directive.ts","../../src/lib/search-field/src/search-field.component.ts","../../src/lib/search-field/src/search-field.component.html","../../src/lib/search-field/src/search-field.module.ts","../../src/lib/search-field/public_api.ts","../../src/lib/tag-group/i18n/index.ts","../../src/lib/tag-group/src/tag.component.ts","../../src/lib/tag-group/src/tag.component.html","../../src/lib/tag-group/src/tag-group.component.ts","../../src/lib/tag-group/src/tag-group.module.ts","../../src/lib/tag-group/public_api.ts","../../src/lib/toast/src/ToastQueue.ts","../../src/lib/toast/i18n/index.ts","../../src/lib/toast/src/toast.component.ts","../../src/lib/toast/src/toast.component.html","../../src/lib/toast/src/toast-region.component.ts","../../src/lib/toast/src/toast-region.component.html","../../src/lib/toast/src/toast.service.ts","../../src/lib/toast/src/toast.module.ts","../../src/lib/lab.module.ts","../../src/public-api.ts","../../src/danske-sapphire-angular-lab.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * To be used on input props of type boolean, to allow value-less shorthand\n * usage. A caveat is that the type will need to be BooleanInput, since TS\n * doesn't support type mutations through decorators, at the moment:\n * https://github.com/Microsoft/TypeScript/issues/4881\n */\nexport function CoerceBoolean(clazz: any, propName: string, descriptor?: any) {\n  if (arguments.length === 0) {\n    // support usage of the form @CoerceBoolean()\n    return CoerceBoolean;\n  }\n  if (descriptor) {\n    const originalSetter = descriptor.set;\n    return Object.assign({}, descriptor, {\n      set: function (value: any) {\n        originalSetter.call(this, coerceBooleanProperty(value));\n      },\n    });\n  } else {\n    return Object.assign(\n      {},\n      {\n        set: function (this: any, value: BooleanInput): void {\n          this[`__${propName}`] = coerceBooleanProperty(value);\n        },\n        get: function (this: any): boolean {\n          return this[`__${propName}`] || false;\n        },\n      }\n    );\n  }\n}\n","let nextUniqueId = 0;\n\n/**\n * To be used on id props that require an auto-generated value, if none provided\n * by the user.\n */\nexport const AutoId = ({ prefix = 'generated' }: { prefix?: string } = {}) => {\n  return function AutoId(clazz: any, propName: string, descriptor?: any): any {\n    const getter = function (this: any) {\n      let id = descriptor?.get() || this[`__${propName}`];\n      if (!id) {\n        id = this[\n          `__${propName}`\n        ] = `${prefix}-id-${nextUniqueId++}-${Math.floor(\n          Math.random() * 10000000\n        )}`;\n      }\n      return id;\n    };\n    return Object.assign(\n      {},\n      {\n        set:\n          descriptor?.set ||\n          function (this: any, value: any) {\n            this[`__${propName}`] = value;\n          },\n        get: getter,\n      }\n    );\n  };\n};\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport {\n  SapphireIconModule,\n  SapphireTypographyModule,\n  UseComponentStyles,\n} from '@danske/sapphire-angular';\nimport { AccordionComponent } from './accordion.component';\nimport { A11yModule, FocusableOption } from '@angular/cdk/a11y';\nimport { NgIf } from '@angular/common';\n\n@Component({\n  templateUrl: './accordion-item.component.html',\n  selector: 'sp-accordion-item',\n  hostDirectives: [UseComponentStyles],\n  standalone: true,\n  imports: [\n    UseComponentStyles,\n    NgIf,\n    SapphireIconModule,\n    SapphireTypographyModule,\n    A11yModule,\n  ],\n})\nexport class AccordionItemComponent implements FocusableOption {\n  constructor(private accordion: AccordionComponent) {}\n\n  get headerLevel() {\n    return this.accordion.headerLevel;\n  }\n\n  /**\n   * Accordion item heading, useful when the heading is a simple string.\n   * {@link sp-accordion-item-heading} can be used instead in other cases.\n   **/\n  @Input()\n  heading?: string;\n\n  @AutoId()\n  _buttonId: string = '';\n\n  @AutoId()\n  _regionId: string = '';\n\n  @ViewChild('button')\n  _buttonElement!: ElementRef<HTMLButtonElement>;\n\n  @Input()\n  @CoerceBoolean\n  disabled?: boolean;\n\n  /**\n   * The ARIA role for the accordion item content wrapper.\n   * Defaults to 'region'.\n   */\n  @Input()\n  contentRole: 'region' | 'group' = 'group';\n\n  /** Whether the AccordionItem is expanded. */\n  @Input()\n  get expanded(): boolean {\n    return this._expanded;\n  }\n  set expanded(expanded: BooleanInput) {\n    expanded = coerceBooleanProperty(expanded);\n\n    // Only emit events and update the internal value if the value changes.\n    if (this._expanded !== expanded) {\n      this._expanded = expanded;\n\n      if (expanded) {\n        this.opened.emit();\n      } else {\n        this.closed.emit();\n      }\n    }\n  }\n  private _expanded = false;\n\n  /** Event emitted every time the AccordionItem is closed. */\n  @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();\n  /** Event emitted every time the AccordionItem is opened. */\n  @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Sets the expanded state of the accordion item to false. */\n  close(): void {\n    if (!this.disabled) {\n      this.expanded = false;\n    }\n  }\n\n  /** Sets the expanded state of the accordion item to true. */\n  open(): void {\n    if (!this.disabled) {\n      this.expanded = true;\n    }\n  }\n\n  _onClick() {\n    if (!this.disabled) {\n      this.accordion?.toggle(this);\n    }\n  }\n\n  focus() {\n    this._buttonElement.nativeElement.focus();\n  }\n}\n","<div\n  class=\"sapphire-accordion__item\"\n  [class.sapphire-accordion__item--open]=\"expanded\"\n  [class.is-disabled]=\"disabled\"\n  _spUseComponentStyles\n>\n  <div role=\"heading\" [attr.aria-level]=\"headerLevel\" _spUseComponentStyles>\n    <button\n      #button\n      class=\"sapphire-accordion__item-header\"\n      _spUseComponentStyles\n      [disabled]=\"!!disabled\"\n      [attr.aria-expanded]=\"!!expanded\"\n      [attr.id]=\"_buttonId\"\n      [attr.aria-controls]=\"expanded ? _regionId : undefined\"\n      (click)=\"_onClick()\"\n      type=\"button\"\n    >\n      <div class=\"sapphire-accordion__item-heading\" _spUseComponentStyles>\n        <div *ngIf=\"heading\" sp-heading=\"6\">\n          {{ heading }}\n        </div>\n        <ng-content select=\"sp-accordion-item-heading\"></ng-content>\n      </div>\n      <div class=\"sapphire-accordion__item-arrow\" _spUseComponentStyles>\n        <sp-icon size=\"lg\" name=\"chevronDown\"></sp-icon>\n      </div>\n    </button>\n  </div>\n  <div\n    class=\"sapphire-accordion__item-content-wrapper sapphire-accordion__item-content-wrapper--with-transition\"\n    _spUseComponentStyles\n    [attr.role]=\"contentRole\"\n    [attr.aria-hidden]=\"!expanded\"\n    [attr.id]=\"_regionId\"\n    [attr.aria-labelledby]=\"_buttonId\"\n  >\n    <div class=\"sapphire-accordion__item-content\" _spUseComponentStyles>\n      <div class=\"sapphire-accordion__item-content-inner\" _spUseComponentStyles>\n        <ng-content select=\"sp-accordion-item-content\"></ng-content>\n        <ng-content></ng-content>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  AfterContentInit,\n  Component,\n  ContentChildren,\n  HostListener,\n  Inject,\n  Input,\n  QueryList,\n} from '@angular/core';\nimport {\n  IconRegistry,\n  ViewEncapsulationProvider,\n} from '@danske/sapphire-angular';\n\nimport { AccordionItemComponent } from './accordion-item.component';\nimport { A11yModule, FocusKeyManager, FocusOrigin } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { iconChevronDown } from '@danske/sapphire-icons/js';\n\n/**\n * Accordion is a vertically stacked set of items, that consist of an interactive header and\n * expandable content section. An accordion item's content display can be toggled on and off\n * by clicking the component's header above.\n */\n@Component({\n  selector: 'sp-accordion',\n  templateUrl: './accordion.component.html',\n  styleUrls: ['./accordion.component.scss'],\n  providers: [ViewEncapsulationProvider],\n  host: {\n    '[attr.aria-label]': 'null',\n    '[attr.aria-labelledby]': 'null',\n  },\n  standalone: true,\n  imports: [A11yModule],\n})\nexport class AccordionComponent implements AfterContentInit {\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n    iconRegistry: IconRegistry\n  ) {\n    iconRegistry.registerIcon(iconChevronDown);\n  }\n\n  /** Allow one or many expanded items\n   * @default 'multiple'\n   */\n  @Input()\n  expansionMode?: 'single' | 'multiple' = 'multiple';\n\n  /** Set aria-level attribute for item's header. Accessibility requirement.\n   * Defines the hierarchical level of an element within a page structure.\n   * @default 5\n   */\n  @Input()\n  headerLevel?: 1 | 2 | 3 | 4 | 5 | 6 = 5;\n\n  /**\n   * Defines a string value that labels the current element.\n   */\n  @Input('aria-label')\n  ariaLabel?: string;\n  /**\n   * Identifies the element (or elements) that labels the current element.\n   */\n  @Input('aria-labelledby')\n  ariaLabelledBy?: string;\n\n  /**\n   * A unique id for the host DOM element.\n   */\n  @Input('id')\n  id?: string;\n\n  @ContentChildren(AccordionItemComponent)\n  items: QueryList<AccordionItemComponent> = new QueryList();\n\n  private keyManager?: FocusKeyManager<AccordionItemComponent | undefined>;\n\n  ngAfterContentInit(): void {\n    this.keyManager = new FocusKeyManager<AccordionItemComponent>(this.items);\n  }\n\n  toggle(item: AccordionItemComponent) {\n    if (item.expanded) {\n      item.close();\n      return;\n    }\n\n    item.open();\n    if (this.expansionMode === 'single') {\n      this.items?.forEach((nItem) => {\n        if (nItem !== item) {\n          nItem.close();\n        }\n      });\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  private handleKeyDown(event: KeyboardEvent) {\n    if (this.keyManager?.activeItem) {\n      switch (event.key) {\n        case 'ArrowUp': {\n          event.stopPropagation();\n          event.preventDefault();\n\n          this.keyManager.setPreviousItemActive();\n          break;\n        }\n        case 'ArrowDown': {\n          event.stopPropagation();\n          event.preventDefault();\n\n          this.keyManager.setNextItemActive();\n\n          break;\n        }\n        case 'Home': {\n          event.stopPropagation();\n          event.preventDefault();\n\n          this.keyManager.setFirstItemActive();\n\n          break;\n        }\n        case 'End': {\n          event.stopPropagation();\n          event.preventDefault();\n          this.keyManager.setLastItemActive();\n\n          break;\n        }\n        default:\n          return;\n      }\n    }\n  }\n\n  _handleFocus(origin: FocusOrigin) {\n    if (origin) {\n      const activeItem = this.items.find(\n        ({ _buttonElement }) =>\n          _buttonElement.nativeElement === this.document.activeElement\n      );\n      this.keyManager?.setActiveItem(activeItem);\n    } else {\n      this.keyManager?.setActiveItem(undefined);\n    }\n  }\n}\n","<div\n  cdkMonitorSubtreeFocus\n  class=\"sapphire-accordion\"\n  (cdkFocusChange)=\"_handleFocus($event)\"\n  [attr.aria-label]=\"ariaLabel\"\n  [attr.aria-labelledby]=\"ariaLabelledBy\"\n  [attr.id]=\"id\"\n>\n  <ng-content></ng-content>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sp-accordion-item-content',\n  standalone: true,\n})\nexport class AccordionItemContentDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sp-accordion-item-heading',\n  standalone: true,\n})\nexport class AccordionItemHeadingDirective {}\n","import { NgModule } from '@angular/core';\n\nimport { AccordionComponent } from './accordion.component';\nimport { AccordionItemComponent } from './accordion-item.component';\nimport { AccordionItemContentDirective } from './accordion-item-content.directive';\nimport { AccordionItemHeadingDirective } from './accordion-item-heading.directive';\n\n@NgModule({\n  imports: [\n    AccordionComponent,\n    AccordionItemComponent,\n    AccordionItemContentDirective,\n    AccordionItemHeadingDirective,\n  ],\n  exports: [\n    AccordionComponent,\n    AccordionItemComponent,\n    AccordionItemContentDirective,\n    AccordionItemHeadingDirective,\n  ],\n})\nexport class SapphireAccordionModule {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sp-alert-content',\n})\nexport class AlertContentDirective {}\n","import { Component, ContentChild, Input } from '@angular/core';\nimport { IconRegistry } from '@danske/sapphire-angular';\nimport {\n  iconCheckmarkOutline,\n  iconError,\n  iconInformation,\n  iconWarning,\n} from '@danske/sapphire-icons/js';\nimport { AlertContentDirective } from './alert-content.directive';\n\n/**\n * The `sp-alert` component is used to display important information, tips, or warnings within your application.\n * It provides a visually distinct container to highlight content for users.\n */\n@Component({\n  selector: 'sp-alert',\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.scss'],\n  standalone: false,\n})\nexport class AlertComponent {\n  constructor(iconRegistry: IconRegistry) {\n    iconRegistry.registerIcons([\n      iconCheckmarkOutline,\n      iconError,\n      iconWarning,\n      iconInformation,\n    ]);\n  }\n\n  @ContentChild(AlertContentDirective)\n  _content?: AlertContentDirective;\n\n  get hasContent(): boolean {\n    return this._content !== undefined;\n  }\n  /**\n   * @default 'info'\n   */\n  @Input()\n  variant?: 'info' | 'warning' | 'negative' | 'positive' = 'info';\n\n  public get icon(): string {\n    switch (this.variant) {\n      case 'positive':\n        return 'checkmarkOutline';\n      case 'negative':\n        return 'error';\n      case 'warning':\n        return 'warning';\n      case 'info':\n      default:\n        return 'information';\n    }\n  }\n}\n","<div\n  class=\"sapphire-alert\"\n  role=\"alert\"\n  [ngClass]=\"variant !== 'info' ? 'sapphire-alert--' + variant : null\"\n>\n  <span class=\"sapphire-alert__icon\">\n    <sp-icon size=\"sm\" [name]=\"icon\"></sp-icon>\n  </span>\n  <div\n    sp-body\n    size=\"sm\"\n    semibold=\"true\"\n    [color]=\"variant === 'info' ? 'informative' : variant\"\n    class=\"sapphire-alert__title\"\n  >\n    <ng-content select=\"sp-alert-title\"></ng-content>\n  </div>\n  <section *ngIf=\"hasContent\" sp-body size=\"sm\" class=\"sapphire-alert__content\">\n    <ng-content select=\"sp-alert-content\"></ng-content>\n  </section>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sp-alert-title',\n})\nexport class AlertTitleDirective {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertComponent } from './alert.component';\nimport { AlertTitleDirective } from './alert-title.directive';\nimport { AlertContentDirective } from './alert-content.directive';\nimport { SapphireIconModule } from '@danske/sapphire-angular';\nimport { SapphireTypographyModule } from '@danske/sapphire-angular';\n\n@NgModule({\n  declarations: [AlertComponent, AlertTitleDirective, AlertContentDirective],\n  imports: [CommonModule, SapphireIconModule, SapphireTypographyModule],\n  exports: [AlertComponent, AlertTitleDirective, AlertContentDirective],\n})\nexport class SapphireAlertModule {}\n","import {\n  Component,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  ThemeCheckDirective,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\n\n/**\n * Format options for currency amounts.\n * The style is always 'currency', so only currency-related options are exposed.\n */\nexport type CurrencyFormatOptions = Pick<\n  Intl.NumberFormatOptions,\n  | 'currency'\n  | 'currencyDisplay'\n  | 'currencySign'\n  | 'signDisplay'\n  | 'minimumFractionDigits'\n  | 'maximumFractionDigits'\n  | 'minimumSignificantDigits'\n  | 'maximumSignificantDigits'\n  | 'useGrouping'\n  | 'notation'\n>;\n\nexport interface GroupedPart {\n  type: 'sign' | 'number' | 'currency';\n  value: string;\n}\n/**\n * Component used for displaying financial values.\n */\n@Component({\n  selector: 'sp-amount',\n  templateUrl: './amount.component.html',\n  styleUrls: ['./amount.component.scss'],\n  standalone: false,\n  host: {\n    '[attr.aria-label]': 'formattedValue',\n    class: 'sapphire-amount',\n  },\n  hostDirectives: [ThemeCheckDirective, UseComponentStylesOnHost],\n})\nexport class AmountComponent implements OnInit, OnChanges {\n  /**\n   * When displaying amounts, readability and visual hierarchy are key. Use medium weight for primary emphasis to highlight amounts or regular weight for secondary emphasis.\n   *\n   * @default 'regular'\n   */\n  @Input()\n  emphasis: 'primary' | 'regular' = 'regular';\n\n  /**\n   * The variant of the Amount component. `positive` shows a green color, and should be used for amounts greater than zero.\n   *\n   * @default 'neutral'\n   */\n  @Input()\n  variant: 'neutral' | 'positive' = 'neutral';\n\n  /**\n   * The amount value to be formatted and displayed.\n   *\n   * If displaying the sign is a requirement, ensure the value is a string that starts with '+' or '-'.\n   * Alternatively, you can use the `signDisplay` option in `formatOptions` to control the display of the sign for numeric values.\n   */\n  @Input()\n  value: string | number = '';\n\n  /** Currency formatting options */\n  @Input()\n  formatOptions?: CurrencyFormatOptions;\n\n  /**\n   * The size of the amount text.\n   * @default 'md'\n   */\n  @Input()\n  size: 'lg' | 'md' | 'sm' | 'xs' = 'md';\n\n  formattedValue = '';\n  groupedParts: GroupedPart[] = [];\n\n  constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n  ngOnInit(): void {\n    this.formatAmount();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['value'] || changes['formatOptions'] || changes['locale']) {\n      this.formatAmount();\n    }\n  }\n\n  private formatAmount(): void {\n    const numberValue = this.parseValue(this.value);\n    const formatter = this.createFormatter();\n\n    this.groupedParts = this.groupAmountParts(numberValue, formatter);\n    this.formattedValue = this.groupedParts.map((part) => part.value).join('');\n  }\n\n  private parseValue(value: string | number): number {\n    const parsed = Number(value);\n    return isNaN(parsed) ? 0 : parsed;\n  }\n\n  private createFormatter(): Intl.NumberFormat {\n    return new Intl.NumberFormat(this.locale, {\n      style: this.formatOptions?.currency ? 'currency' : undefined,\n      signDisplay:\n        this.formatOptions?.signDisplay ||\n        String(this.value).startsWith('+') ||\n        String(this.value).startsWith('-')\n          ? 'always'\n          : 'auto',\n      minimumFractionDigits: 2,\n      ...this.formatOptions,\n    });\n  }\n\n  private groupAmountParts(\n    numberValue: number,\n    formatter: Intl.NumberFormat\n  ): GroupedPart[] {\n    const parts = formatter.formatToParts(numberValue);\n    const result: GroupedPart[] = [];\n    let currentNumber = '';\n\n    parts.forEach((part) => {\n      if (part.type === 'plusSign' || part.type === 'minusSign') {\n        result.push({ type: 'sign', value: part.value });\n      } else if (part.type === 'currency') {\n        if (currentNumber) {\n          result.push({ type: 'number', value: currentNumber });\n          currentNumber = '';\n        }\n        result.push({ type: 'currency', value: part.value });\n      } else if (part.type !== 'literal') {\n        currentNumber += part.value;\n      }\n    });\n\n    if (currentNumber) {\n      result.push({ type: 'number', value: currentNumber });\n    }\n\n    return result;\n  }\n\n  get textColor(): 'primary' | 'positive' {\n    return this.variant === 'positive' ? 'positive' : 'primary';\n  }\n\n  get isSemibold(): boolean {\n    return this.emphasis === 'primary';\n  }\n}\n","<span\n  *ngFor=\"let part of groupedParts\"\n  sp-body\n  [size]=\"size\"\n  [color]=\"textColor\"\n  [semibold]=\"isSemibold\"\n  >{{ part.value }}</span\n>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  SapphireTypographyModule,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\n\nimport { AmountComponent } from './amount.component';\n\n@NgModule({\n  declarations: [AmountComponent],\n  imports: [CommonModule, SapphireTypographyModule, UseComponentStylesOnHost],\n  exports: [AmountComponent],\n})\nexport class SapphireAmountModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/amount.component';\nexport * from './src/amount.module';\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  DoCheck,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport {\n  IconSizeProvider,\n  ListboxChild,\n  ListboxComponent,\n  OptionComponent,\n  SapphireListboxModule,\n  SapphirePopoverModule,\n  SectionDirective,\n} from '@danske/sapphire-angular';\nimport { AutocompleteTriggerDirective } from './autocomplete-trigger.directive';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';\n\n/**\n * Used in connection with an input field, to provide autocompletion suggestions.\n */\n@Component({\n  standalone: true,\n  selector: 'sp-autocomplete',\n  imports: [NgIf, AsyncPipe, SapphireListboxModule, SapphirePopoverModule],\n  host: {\n    '[id]': 'null',\n  },\n  templateUrl: 'autocomplete.component.html',\n})\nexport class AutocompleteComponent\n  implements IconSizeProvider, OnInit, AfterContentInit, AfterViewInit, DoCheck\n{\n  size = 'md' as const;\n\n  /**\n   * Whether to apply a default case-insensitive `includes` filter on the\n   * options based on the connected input value.\n   */\n  @Input()\n  @CoerceBoolean\n  filterOptions?: BooleanInput;\n\n  @Input()\n  @AutoId()\n  id = '';\n\n  /**\n   * Emitted when the autocompletion popover is opened\n   */\n  @Output()\n  opened = new EventEmitter<void>();\n\n  /**\n   * Emitted when the autocompletion popover is closed\n   */\n\n  @Output()\n  closed = new EventEmitter<void>();\n\n  /**\n   * Emitted when an autocompletion option is selected\n   */\n  @Output()\n  optionSelected = new EventEmitter<OptionComponent>();\n\n  @ViewChild(TemplateRef)\n  _templateRef?: TemplateRef<unknown>;\n\n  @ViewChildren(ListboxComponent)\n  private listboxQuery?: QueryList<ListboxComponent>;\n\n  @ViewChild(ListboxComponent)\n  listboxComponent?: ListboxComponent;\n\n  @ContentChildren(ListboxChild)\n  private listboxChildrenQuery?: QueryList<ListboxChild>;\n\n  @ContentChildren(OptionComponent, { descendants: true })\n  private options?: QueryList<OptionComponent>;\n\n  private trigger?: AutocompleteTriggerDirective;\n\n  _minWidth?: number;\n  _filteredItems: ListboxChild[] = [];\n  query$ = new BehaviorSubject('');\n\n  ngOnInit(): void {\n    // Setting width once on init, to avoid width jumps when close button of the search field\n    // causes the input to resize.\n    this._minWidth = this.trigger?.elementRef.nativeElement.offsetWidth;\n  }\n\n  ngDoCheck() {\n    const value = this.trigger?.elementRef.nativeElement.value ?? '';\n    if (this.query$.value !== value) {\n      this.query$.next(value);\n    }\n  }\n\n  ngAfterContentInit() {\n    /**\n     * In this use case of options, we are only interested in the text value of options.\n     * So we set values (similar to how `key` is set in our React impl, when collection components\n     * use jsx children), since listbox change events works based on values\n     */\n    const ensureValues = () => {\n      this.options?.forEach((child, index) => {\n        if (child instanceof OptionComponent && !child.value) {\n          child.value = `$.${index}`;\n        }\n      });\n    };\n    ensureValues();\n    this.options?.changes.subscribe(ensureValues);\n    combineLatest([\n      this.query$.pipe(\n        filter(() => Boolean(this.filterOptions)),\n        startWith(''),\n        distinctUntilChanged()\n      ),\n      this.listboxChildrenQuery?.changes.pipe(\n        startWith(this.listboxChildrenQuery?.toArray() ?? [])\n      ) ?? [],\n    ])\n      .pipe(\n        map(([query]) => {\n          const items = this.listboxChildrenQuery?.toArray() ?? [];\n          return query ? filterListboxChildren(items, query) : items;\n        })\n      )\n      .subscribe((filteredItems) => {\n        /**\n         * Couldn't find any better solution than delaying the change here, to avoid NG0100 error.\n         * The error happens because we have a binding in the template based on a content query\n         * (listbox children), which changes after this component is change-detected. Manually\n         * calling ChangeDetectorRef#detectChanges() didn't work and neither did using async pipe\n         * directly on the observable\n         */\n        Promise.resolve().then(() => {\n          this._filteredItems = filteredItems;\n        });\n      });\n  }\n\n  ngAfterViewInit(): void {\n    /**\n     * With the current API of `ListboxComponent` and `ListboxInputDirective`, the connection\n     * of listbox and input is by passing listbox instance to listbox input instance, via an @Input\n     * which is not that useful in this use case. So we manually set the input whenever the listbox\n     * is instantiated.\n     */\n    this.listboxQuery?.changes.subscribe(() => {\n      if (this.trigger) {\n        this.trigger.listboxInput.listbox = this.listboxQuery?.get(0);\n      }\n    });\n  }\n\n  /**\n   * Internally used in spAutocomplete directive to set the connected trigger.\n   * @internal\n   */\n  _setTrigger(trigger: AutocompleteTriggerDirective): void {\n    this.trigger = trigger;\n  }\n\n  _onOptionSelected(value: string) {\n    const option = this.options\n      ?.toArray()\n      .find((option) => option.value === value);\n    const textValue = option?.label ?? '';\n    this.trigger?.setValue(textValue);\n    this.optionSelected.emit(option);\n  }\n\n  _selected() {\n    this.trigger?.close();\n  }\n}\n\n/**\n * Filters listbox children\n * Can be moved listbox code, as a helper, and be reused in searchable select too (with some\n * tweaks), when autocomplete is moved to core\n */\nconst filterListboxChildren = (\n  children: ListboxChild[],\n  query: string\n): ListboxChild[] => {\n  return children\n    .map((child) => {\n      if (!query) {\n        return child;\n      }\n      if (child instanceof SectionDirective) {\n        const filteredChildren = filterListboxChildren(\n          [...child.children],\n          query\n        );\n        return filteredChildren.length > 0\n          ? section(\n              // nested sections are not allowed currently, so filtering to adhere\n              // SectionDirective's children type\n              filteredChildren.filter(\n                (item): item is OptionComponent =>\n                  item instanceof OptionComponent\n              ),\n              child.ariaLabel\n            )\n          : null;\n      }\n      if (\n        child instanceof OptionComponent &&\n        (!query ||\n          (child.label.toLowerCase().includes(query.toLowerCase()) &&\n            child.label !== query)) // filtering out exact matches as it doesn't make sense to suggest the same thing\n      ) {\n        return child;\n      }\n      return null;\n    })\n    .filter((i): i is ListboxChild => i != null);\n\n  function section(options: Iterable<OptionComponent>, ariaLabel?: string) {\n    const section = new SectionDirective();\n    section.children = options;\n    section.ariaLabel = ariaLabel;\n    return section;\n  }\n};\n","<ng-template>\n  <sp-popover\n    [style.display]=\"_filteredItems?.length === 0 ? 'none' : undefined\"\n    noPadding\n    noMaxWidth\n    noAutoFocus\n    [style.min-width.px]=\"_minWidth\"\n  >\n    <sp-listbox\n      [id]=\"id\"\n      [spListboxItems]=\"_filteredItems || []\"\n      (selected)=\"_selected()\"\n      (selectedValuesChange)=\"_onOptionSelected($event[0])\"\n    ></sp-listbox>\n  </sp-popover>\n</ng-template>\n","import {\n  BooleanInput,\n  coerceNumberProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport {\n  OverlayConfig,\n  OverlayRef,\n  STANDARD_DROPDOWN_BELOW_POSITIONS,\n} from '@angular/cdk/overlay';\nimport { Portal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Directive,\n  ElementRef,\n  HostListener,\n  Injector,\n  Input,\n  OnDestroy,\n  Optional,\n  Self,\n  ViewContainerRef,\n} from '@angular/core';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { ListboxInputDirective, SapphireOverlay } from '@danske/sapphire-angular';\nimport { NgControl } from '@angular/forms';\nimport { takeUntil } from 'rxjs/operators';\nimport { merge, Subject } from 'rxjs';\n\n@Directive({\n  selector: 'input[spAutocomplete]',\n  standalone: true,\n  hostDirectives: [ListboxInputDirective],\n  host: {\n    '[attr.autocomplete]': '\"off\"', // does it need to be an input?\n    '[attr.role]': 'disabled ? null : \"combobox\"',\n    '[attr.aria-autocomplete]': 'disabled ? null : \"list\"',\n    '[attr.aria-expanded]': 'disabled ? null : isOpen().toString()',\n    '[attr.aria-controls]': '(disabled || !isOpen()) ? null : autocomplete?.id',\n    '[attr.aria-haspopup]': 'disabled ? null : \"listbox\"',\n  },\n  exportAs: 'spAutocompleteTrigger',\n})\nexport class AutocompleteTriggerDirective implements OnDestroy {\n  /**\n   * A reference to the sp-autocomplete that should be attached to the input.\n   */\n  @Input('spAutocomplete')\n  set autocomplete(value: AutocompleteComponent | undefined) {\n    this._autocomplete = value;\n    if (this._autocomplete) {\n      this._autocomplete._setTrigger(this);\n    }\n  }\n  get autocomplete(): AutocompleteComponent | undefined {\n    return this._autocomplete;\n  }\n  /** Whether the autocompletion is disabled */\n  @Input('spAutocompleteDisabled')\n  @CoerceBoolean\n  disabled: BooleanInput = false;\n\n  /**\n   * Minimum input length for which the autocompletion popover should be opened.\n   * By default, autocompletion popover is not opened on focus/click for empty\n   * input for a less intrusive UX, considering autocompletion pattern is\n   * typically used for use cases where it only facilitates the input filling,\n   * and selecting a predefined option is not necessary.\n   * @default 1\n   */\n  @Input('spAutocompleteMinLength')\n  get minLength(): number {\n    return this._minLength;\n  }\n  set minLength(value: NumberInput) {\n    this._minLength = coerceNumberProperty(value);\n  }\n  private _minLength = 1;\n\n  private _autocomplete?: AutocompleteComponent;\n\n  private overlayRef: OverlayRef | null = null;\n  private contentPortal: Portal<unknown> | null = null;\n  protected readonly destroyed: Subject<void> = new Subject();\n\n  constructor(\n    private injector: Injector,\n    private cdkOverlay: SapphireOverlay,\n    private viewContainerRef: ViewContainerRef,\n    public readonly elementRef: ElementRef<HTMLInputElement>,\n    public readonly listboxInput: ListboxInputDirective,\n    @Optional() @Self() private formControl: NgControl | null\n  ) {}\n\n  ngOnDestroy() {\n    this.destroyed.next(undefined);\n    this.destroyed.complete();\n    this.overlayRef?.dispose();\n    this.overlayRef = null;\n  }\n\n  /** Open the autocomplete popover. */\n  open() {\n    if (\n      !this.isOpen() &&\n      this._autocomplete &&\n      !this.disabled &&\n      !this.elementRef.nativeElement.disabled\n    ) {\n      if (!this.overlayRef) {\n        this.overlayRef = this.cdkOverlay.create(\n          new OverlayConfig({\n            scrollStrategy: this.cdkOverlay.scrollStrategies.close(),\n          })\n        );\n        this.overlayRef.updatePositionStrategy(\n          this.cdkOverlay\n            .position()\n            .flexibleConnectedTo(this.elementRef)\n            .withLockedPosition()\n            .withGrowAfterOpen()\n            /**\n             * Disabling pushing, to fix an issue in FlexibleConnectedPositionStrategy where the\n             * overlay's bottom grows past the top of the trigger element (aka origin).\n             * This is more of an issue in cases like autocomplete,\n             * where the trigger element remains interactive after the overlay is opened.\n             **/\n            .withPush(false)\n            .withViewportMargin(6)\n            .withPositions(\n              STANDARD_DROPDOWN_BELOW_POSITIONS.map((i) => ({\n                ...i,\n                offsetY: i.overlayY === 'top' ? 6 : -6,\n              }))\n            )\n        );\n        this.overlayRef.detachments().subscribe(() => {\n          this.autocomplete?.closed.next();\n        });\n        this.overlayRef.attachments().subscribe(() => {\n          this.autocomplete?.opened.next();\n        });\n        this.overlayRef\n          .outsidePointerEvents()\n          .pipe(takeUntil(merge(this.overlayRef.detachments(), this.destroyed)))\n          .subscribe((event: MouseEvent) => {\n            if (\n              !this.elementRef.nativeElement.contains(event.target as Element)\n            ) {\n              this.close();\n            }\n          });\n      }\n      this.overlayRef.attach(this.getContentPortal());\n    }\n  }\n\n  close() {\n    if (this.isOpen() && this.overlayRef) {\n      this.overlayRef.detach();\n    }\n  }\n\n  /** Whether the autocomplete popover is open. */\n  isOpen() {\n    return !!this.overlayRef?.hasAttached();\n  }\n\n  /**\n   * Toggle the autocomplete popover\n   */\n  toggle() {\n    return this.isOpen() ? this.close() : this.open();\n  }\n\n  /**\n   * Used to set the value of the input, when an autocompletion option is selected.\n   */\n  setValue(value: string) {\n    if (this.formControl) {\n      this.formControl?.control?.markAsDirty();\n      this.formControl?.control?.setValue(value);\n    } else {\n      this.elementRef.nativeElement.value = value;\n    }\n  }\n\n  @HostListener('input')\n  private onInput() {\n    if (this.mayOpen()) {\n      this.open();\n    } else {\n      this.close();\n    }\n  }\n\n  @HostListener('focus')\n  @HostListener('click')\n  private onFocusOrClick() {\n    if (this.mayOpen()) {\n      this.open();\n    } else {\n      this.close();\n    }\n  }\n\n  /** Close the opened popover. */\n  @HostListener('blur', ['$event'])\n  private onBlur() {\n    this.close();\n  }\n\n  @HostListener('keydown', ['$event'])\n  private onKeydown(event: KeyboardEvent) {\n    switch (event.key) {\n      // selection by pressing Enter on the connected input doesn't trigger `selected` event\n      // currently in listbox. case 'Enter' should be removed when/if that's changed.\n      // a caveat now is that pressing Enter without any option being active will just close\n      // the suggestion menu without selecting anything. We could check on the existence of\n      // active option here to avoid that, if needed.\n      case 'Enter':\n      case 'Escape':\n        this.close();\n        break;\n      case 'ArrowDown':\n        this.open();\n        break;\n    }\n  }\n\n  private getContentPortal(): Portal<unknown> | null {\n    if (this._autocomplete?._templateRef && !this.contentPortal) {\n      this.contentPortal = new TemplatePortal(\n        this._autocomplete._templateRef,\n        this.viewContainerRef,\n        { autocomplete: this },\n        Injector.create({\n          providers: [],\n          parent: this.injector,\n        })\n      );\n    }\n    return this.contentPortal;\n  }\n\n  private mayOpen() {\n    return this.elementRef.nativeElement.value.length >= this.minLength;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { AutocompleteTriggerDirective } from './autocomplete-trigger.directive';\n\n@NgModule({\n  imports: [AutocompleteComponent, AutocompleteTriggerDirective],\n  exports: [AutocompleteComponent, AutocompleteTriggerDirective],\n})\nexport class SapphireAutocompleteModule {}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n  Component,\n  ContentChildren,\n  Input,\n  Optional,\n  QueryList,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  IconComponent,\n  IconRegistry,\n  SapphireButtonModule,\n  SapphireIconModule,\n  SapphireTypographyModule,\n  TruncatedWithTooltipContentElementDirective,\n  TruncatedWithTooltipDirective,\n  UseComponentStyles,\n} from '@danske/sapphire-angular';\nimport { iconChevronRight } from '@danske/sapphire-icons/js';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { BreadcrumbsComponent } from './breadcrumbs.component';\n\n@Component({\n  selector: 'li[sp-breadcrumb-item]',\n  template: `\n    <!-- Render button as link if \"href\" is provided -->\n    <a\n      *ngIf=\"!isLast && href\"\n      sp-button\n      [href]=\"href\"\n      [target]=\"target\"\n      variant=\"tertiary\"\n      [disabled]=\"disabled\"\n      iconAlign=\"left\"\n      [size]=\"size\"\n    >\n      <sp-icon *ngIf=\"icon\" spButtonIcon [name]=\"icon\"></sp-icon>\n      <ng-container *ngTemplateOutlet=\"projected\" />\n    </a>\n\n    <!-- Render static item if \"href\" is not provided -->\n    <span\n      *ngIf=\"!isLast && !href\"\n      class=\"sapphire-breadcrumbs__item--static\"\n      [class.sapphire-breadcrumbs__item--static--sm]=\"size === 'sm'\"\n      [class.sapphire-breadcrumbs__item--static--lg]=\"size === 'lg'\"\n      _spUseComponentStyles\n      spTruncatedWithTooltip\n    >\n      <sp-icon *ngIf=\"icon\" [size]=\"size\" [name]=\"icon\"></sp-icon>\n      <ng-container *ngTemplateOutlet=\"projected\" />\n    </span>\n\n    <span *ngIf=\"isLast\" sp-body [size]=\"fontSize\" semibold=\"true\">\n      <ng-container *ngTemplateOutlet=\"projected\" />\n    </span>\n\n    <ng-template #projected>\n      <ng-content></ng-content>\n    </ng-template>\n\n    <span\n      *ngIf=\"!isLast\"\n      class=\"sapphire-breadcrumbs__separator\"\n      aria-hidden=\"true\"\n      _spUseComponentStyles\n    >\n      <sp-icon [size]=\"separatorSize\" name=\"chevronRight\"></sp-icon>\n    </span>\n  `,\n  styleUrls: ['./breadcrumbs.component.scss'],\n  host: {\n    role: 'listitem',\n    class: 'sapphire-breadcrumbs__item',\n    '[attr.data-disabled]': 'isDisabled',\n  },\n  hostDirectives: [UseComponentStyles],\n  standalone: true,\n  imports: [\n    CommonModule,\n    SapphireButtonModule,\n    SapphireIconModule,\n    SapphireTypographyModule,\n    TruncatedWithTooltipDirective,\n    TruncatedWithTooltipContentElementDirective,\n  ],\n})\nexport class BreadcrumbItemComponent {\n  @ContentChildren(IconComponent, { descendants: true })\n  icons!: QueryList<IconComponent>;\n\n  @Input() icon: string | null = null;\n\n  @Input() href?: string;\n  @Input() target?: string;\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  constructor(\n    iconRegistry: IconRegistry,\n    @Optional() private breadcrumbsParent?: BreadcrumbsComponent\n  ) {\n    iconRegistry.registerIcon(iconChevronRight);\n  }\n\n  get isLast() {\n    return this === this.breadcrumbsParent?.items?.last;\n  }\n\n  get size() {\n    return this.breadcrumbsParent?.size ?? 'md';\n  }\n\n  get fontSize() {\n    return this.size === 'lg' ? 'md' : this.size === 'md' ? 'sm' : 'xs';\n  }\n\n  get separatorSize() {\n    return this.size === 'lg' ? 'md' : 'sm';\n  }\n\n  get isDisabled() {\n    return this.breadcrumbsParent?.disabled ?? false;\n  }\n}\n","import {\n  Component,\n  Input,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  SapphireButtonModule,\n  SapphireIconModule,\n  SapphireTypographyModule,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n/**\n * Show the path to the current page through a hierarchical trail of links.\n */\n@Component({\n  selector: 'sp-breadcrumbs',\n  templateUrl: './breadcrumbs.component.html',\n  styleUrls: ['./breadcrumbs.component.scss'],\n  host: {\n    '[attr.aria-label]': 'null',\n    '[attr.aria-labelledby]': 'null',\n  },\n  standalone: true,\n  hostDirectives: [UseComponentStylesOnHost],\n  imports: [\n    CommonModule,\n    SapphireButtonModule,\n    SapphireIconModule,\n    SapphireTypographyModule,\n  ],\n})\nexport class BreadcrumbsComponent implements AfterContentInit {\n  @ContentChildren(BreadcrumbItemComponent)\n  items!: QueryList<BreadcrumbItemComponent>;\n\n  /**\n   * Defines a string value that labels the current element.\n   */\n  @Input('aria-label')\n  ariaLabel?: string;\n\n  /**\n   * Identifies the element (or elements) that labels the current element.\n   */\n  @Input('aria-labelledby')\n  ariaLabelledby?: string;\n\n  /**\n   * The size of the breadcrumbs.\n   * @default 'md'\n   */\n  @Input('size')\n  sizeInput: 'sm' | 'md' | 'lg' = 'md';\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  ngAfterContentInit() {\n    if (this.items) {\n      this.items.forEach((item) => {\n        if (!item.disabled && this.disabled) {\n          item.disabled = this.disabled;\n        }\n      });\n    }\n  }\n\n  get size() {\n    return this.sizeInput;\n  }\n}\n","<ol\n  class=\"sapphire-breadcrumbs\"\n  [attr.aria-labelledby]=\"ariaLabelledby\"\n  [attr.aria-label]=\"ariaLabel\"\n  [class.sapphire-breadcrumbs--sm]=\"sizeInput === 'sm'\"\n  [class.sapphire-breadcrumbs--lg]=\"sizeInput === 'lg'\"\n>\n  <ng-content></ng-content>\n</ol>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreadcrumbsComponent } from './breadcrumbs.component';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport {\n  SapphireButtonModule,\n  SapphireIconModule,\n  SapphireTypographyModule,\n} from '@danske/sapphire-angular';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    SapphireButtonModule,\n    SapphireIconModule,\n    SapphireTypographyModule,\n    BreadcrumbsComponent,\n    BreadcrumbItemComponent,\n  ],\n  exports: [BreadcrumbsComponent, BreadcrumbItemComponent],\n})\nexport class SapphireBreadcrumbsModule {}\n","import {\n  CalendarDate,\n  DateDuration,\n  DateValue,\n  getDayOfWeek,\n  getLocalTimeZone,\n  isSameDay,\n  maxDate,\n  minDate,\n  startOfMonth,\n  startOfWeek,\n  startOfYear,\n  toCalendarDate,\n} from '@internationalized/date';\n\nexport function multipleDuration(duration: DateDuration, times: number) {\n  const result = { ...duration };\n  for (const key in duration) {\n    result[key as keyof DateDuration] =\n      duration[key as keyof DateDuration]! * times;\n  }\n  return result;\n}\n\nexport function alignStart(\n  date: CalendarDate,\n  duration: DateDuration,\n  minValue?: DateValue | null,\n  maxValue?: DateValue | null\n) {\n  // align to the start of the largest unit\n  let aligned = date;\n  if (duration.years) {\n    aligned = startOfYear(date);\n  } else if (duration.months) {\n    aligned = startOfMonth(date);\n  }\n\n  return constrainStart(date, aligned, duration, minValue, maxValue);\n}\n\nexport function constrainStart(\n  date: CalendarDate,\n  aligned: CalendarDate,\n  duration: DateDuration,\n  minValue?: DateValue | null,\n  maxValue?: DateValue | null\n): CalendarDate {\n  if (minValue && date.compare(minValue) >= 0) {\n    aligned = maxDate(\n      aligned,\n      alignStart(toCalendarDate(minValue), duration)\n    ) as CalendarDate; // maxDate accepts null|undefined arguments and just returns one of the values, but constrainStart doesn't\n  }\n\n  if (maxValue && date.compare(maxValue) <= 0) {\n    aligned = minDate(\n      aligned,\n      alignEnd(toCalendarDate(maxValue), duration)\n    ) as CalendarDate;\n  }\n\n  return aligned;\n}\n\nexport function constrainValue(\n  date: CalendarDate,\n  minValue?: DateValue | null,\n  maxValue?: DateValue | null\n) {\n  if (minValue) {\n    date = maxDate(date, toCalendarDate(minValue)) as CalendarDate;\n  }\n\n  if (maxValue) {\n    date = minDate(date, toCalendarDate(maxValue)) as CalendarDate;\n  }\n\n  return date;\n}\n\nexport function previousAvailableDate(\n  date: CalendarDate,\n  minValue: DateValue,\n  isDateUnavailable: ((date: CalendarDate) => boolean) | undefined\n): CalendarDate | undefined {\n  if (!isDateUnavailable) {\n    return date;\n  }\n\n  while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n    date = date.subtract({ days: 1 });\n  }\n\n  if (date.compare(minValue) >= 0) {\n    return date;\n  }\n  return undefined;\n}\n\nexport function alignEnd(\n  date: CalendarDate,\n  duration: DateDuration,\n  minValue?: DateValue | null,\n  maxValue?: DateValue | null\n) {\n  const d = { ...duration };\n  // subtract 1 from the smallest unit\n  if (d.days) {\n    d.days--;\n  } else if (d.months) {\n    d.months--;\n  } else if (d.years) {\n    d.years--;\n  }\n\n  const aligned = alignStart(date, duration).subtract(d);\n  return constrainStart(date, aligned, duration, minValue, maxValue);\n}\n\n/**\n * Almost copied from https://weeknumber.com/how-to/javascript\n * No corresponding API found in @internationalized/date package, at the time\n * of writing this.\n * Caveat: this code is based on built-in Date object, and may not be\n * calendar-agnostic. We don't really care about supporting different types\n * of calendar, so it should be fine for now. But we can look into improving\n * this if needed.\n */\nexport const getWeekNumber = function (dateValue: DateValue) {\n  const date = new Date(dateValue.toDate(getLocalTimeZone()));\n  date.setHours(0, 0, 0, 0);\n  // Thursday in current week decides the year.\n  date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n  // January 4 is always in week 1.\n  const week1 = new Date(date.getFullYear(), 0, 4);\n  // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n  return (\n    1 +\n    Math.round(\n      ((date.getTime() - week1.getTime()) / 86400000 -\n        3 +\n        ((week1.getDay() + 6) % 7)) /\n        7\n    )\n  );\n};\n\n/**\n * Returns an array of dates in the week index counted from the provided start date, or the first\n * visible date if not given. The returned array always has 7 elements, but may include null if\n * the date does not exist according to the calendar system.\n */\nexport function getDatesInWeek(\n  weekIndex: number,\n  from: CalendarDate,\n  locale: string\n): Array<CalendarDate | null> {\n  // let date = startOfWeek(from, locale);\n  let date = from.add({ weeks: weekIndex });\n  const dates = [];\n\n  date = startOfWeek(date, locale);\n\n  // startOfWeek will clamp dates within the calendar system's valid range, which may\n  // start in the middle of a week. In this case, add null placeholders.\n  const dayOfWeek = getDayOfWeek(date, locale);\n  for (let i = 0; i < dayOfWeek; i++) {\n    dates.push(null);\n  }\n\n  while (dates.length < 7) {\n    dates.push(date);\n    const nextDate = date.add({ days: 1 });\n    if (isSameDay(date, nextDate)) {\n      // If the next day is the same, we have hit the end of the calendar system.\n      break;\n    }\n    date = nextDate;\n  }\n\n  // Add null placeholders if at the end of the calendar system.\n  while (dates.length < 7) {\n    dates.push(null);\n  }\n\n  return dates;\n}\n\nexport function isInvalid(\n  date: DateValue,\n  minValue: DateValue | undefined | null,\n  maxValue: DateValue | undefined | null\n) {\n  return (\n    (minValue != null && date.compare(minValue) < 0) ||\n    (maxValue != null && date.compare(maxValue) > 0)\n  );\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarDate } from '@internationalized/date';\nimport { getWeekNumber } from './shared/date-utils';\n\n/**\n * Transforms a date into week number in year.\n */\n@Pipe({\n  standalone: true,\n  name: 'weekNumber',\n})\nexport class WeekNumberPipe implements PipeTransform {\n  transform(date: CalendarDate): number {\n    return getWeekNumber(date);\n  }\n}\n","import {\n  CalendarDate,\n  endOfMonth,\n  startOfMonth,\n} from '@internationalized/date';\n\n/**\n * Creates an array filled with numbers from {@param start} to {@param end}\n */\nexport function range(start: number, end: number): number[] {\n  return Array(end - start + 1)\n    .fill(null)\n    .map((_, index) => start + index);\n}\n\n/**\n * Converts an array into chunks\n * @returns iterator of the chunks\n */\nexport function* chunks<T>(\n  array: T[],\n  chunkSize: number\n): Generator<T[], void> {\n  for (let i = 0; i < array.length; i += chunkSize) {\n    yield array.slice(i, i + chunkSize);\n  }\n}\n\n/**\n * Checks if all days in a month are unavailable.\n * @param month The month date to check\n * @param isDateUnavailable Callback to check if a date is unavailable\n * @returns true if all days in the month are unavailable\n */\nexport function isMonthAllDaysUnavailable(\n  month: CalendarDate,\n  isDateUnavailable?: (date: CalendarDate) => boolean\n): boolean {\n  if (!isDateUnavailable) return false;\n\n  const monthStart = startOfMonth(month);\n  const monthEnd = endOfMonth(month);\n  let current = monthStart;\n\n  while (current.compare(monthEnd) <= 0) {\n    if (!isDateUnavailable(current)) {\n      return false;\n    }\n    current = current.add({ days: 1 });\n  }\n\n  return true;\n}\n","import {\n  CalendarDate,\n  DateDuration,\n  DateValue,\n  endOfMonth,\n  getWeeksInMonth,\n  isSameDay,\n  isSameMonth,\n  isSameYear,\n  startOfMonth,\n} from '@internationalized/date';\nimport { getDatesInWeek } from './date-utils';\nimport { chunks, range } from './utils';\n\nexport type CalendarView = 'days' | 'months' | 'years';\n\nexport interface CalendarViewImpl {\n  broaderView?: CalendarView;\n  narrowerView?: CalendarView;\n  cellDuration: DateDuration;\n  visibleDuration: DateDuration;\n  getGridCells(args: {\n    startDate: CalendarDate;\n    focusedDate: CalendarDate;\n    withFixedWeeks?: boolean;\n    locale: string;\n  }): Array<CalendarDate | null>[];\n\n  areSameCell(date1: DateValue, date2: DateValue): boolean;\n  areSamePage?(date1: DateValue, date2: DateValue): boolean;\n  /**\n   * Given a date, returns the date corresponding to the start of the date duration this view\n   * represents, if it's not the first cell in the grid of cells.\n   * @param date\n   */\n  getStartOfPage?(date: CalendarDate): CalendarDate;\n  /**\n   * Given a date, returns the date corresponding to the end of the date duration this view\n   * represents, if it's not the last cell in the grid of cells.\n   * @param date\n   */\n  getEndOfPage?(date: CalendarDate): CalendarDate;\n}\n\nconst daysView: CalendarViewImpl = {\n  getStartOfPage: startOfMonth,\n  getEndOfPage: endOfMonth,\n  broaderView: 'months',\n  cellDuration: { days: 1 },\n  visibleDuration: { months: 1 },\n  areSamePage: isSameMonth,\n  areSameCell: isSameDay,\n  getGridCells({\n    startDate,\n    withFixedWeeks,\n    locale,\n  }): Array<CalendarDate | null>[] {\n    return [\n      ...new Array(\n        withFixedWeeks ? 6 : getWeeksInMonth(startDate, locale)\n      ).keys(),\n    ].map((weekIndex) => getDatesInWeek(weekIndex, startDate, locale));\n  },\n};\n\nconst monthsView: CalendarViewImpl = {\n  broaderView: 'years',\n  narrowerView: 'days',\n  cellDuration: { months: 1 },\n  visibleDuration: { years: 1 },\n  areSamePage: isSameYear,\n  areSameCell: isSameMonth,\n  getGridCells({ focusedDate }): Array<CalendarDate | null>[] {\n    const numMonths = focusedDate.calendar.getMonthsInYear(focusedDate);\n    const months = range(1, numMonths).map((month) =>\n      focusedDate.set({ month })\n    );\n    return [...chunks(months, 3)];\n  },\n};\n\nconst yearsView: CalendarViewImpl = {\n  narrowerView: 'months',\n  cellDuration: { years: 1 },\n  visibleDuration: { years: 12 },\n  getGridCells({ focusedDate, startDate }): Array<CalendarDate | null>[] {\n    const yearNumbers = range(startDate.year, startDate.year + 11);\n    const years = yearNumbers.map((year) => focusedDate.set({ year }));\n    return [...chunks(years, 3)];\n  },\n  areSameCell: isSameYear,\n};\n\nexport const calendarViews: Record<CalendarView, CalendarViewImpl> = {\n  days: daysView,\n  months: monthsView,\n  years: yearsView,\n};\n","import {\n  Calendar,\n  CalendarDate,\n  CalendarIdentifier,\n  createCalendar,\n  DateDuration,\n  DateFormatter,\n  DateValue,\n  startOfWeek,\n  toCalendar,\n  toCalendarDate,\n  today,\n} from '@internationalized/date';\nimport { CalendarView, CalendarViewImpl, calendarViews } from './calendar-view';\nimport {\n  alignEnd,\n  alignStart,\n  constrainStart,\n  constrainValue,\n  isInvalid,\n} from './date-utils';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { CoerceBoolean } from '../../../common/coerce-boolean.decorator';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n@Directive({\n  selector: '[spCalendar]',\n  standalone: true,\n  exportAs: 'spCalendar',\n})\nexport abstract class CalendarBase\n  implements OnInit, OnDestroy, ControlValueAccessor\n{\n  @Output()\n  pageChange = new EventEmitter<'next' | 'previous'>();\n\n  @Output()\n  blurred = new EventEmitter();\n\n  /**\n   * The date that's currently focused in the calendar.\n   * - It determines the currently visible month/year/etc.\n   * - When calendar gets focused, the button corresponding to that date gets focused.\n   */\n  @Input()\n  get focusedDate(): CalendarDate {\n    return this._focusedDate || today(this.getTimezone());\n  }\n\n  set focusedDate(value: DateValue | undefined) {\n    this._focusedDate = value\n      ? toCalendar(toCalendarDate(value), this.calendar)\n      : value;\n    this.adjustStartDate();\n  }\n\n  protected _focusedDate?: CalendarDate | undefined;\n\n  @Input()\n  size: 'sm' | 'md' | 'lg' = 'lg';\n\n  @Input()\n  @CoerceBoolean\n  readonly: BooleanInput;\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  /**\n   * If the calendar should always show a fixed number of rows regardless of\n   * the current month's number of weeks. This helps preserve the calendar\n   * height as the user scrolls through months.\n   * @default false\n   */\n  @Input()\n  @CoerceBoolean\n  showFixedWeeks: BooleanInput;\n\n  @Input()\n  locale!: /* required input */ string;\n\n  abstract minValue?: DateValue | null;\n  abstract maxValue?: DateValue | null;\n  abstract autoFocus?: BooleanInput;\n\n  /**\n   * Callback that is called for each date of the calendar. If it returns true, then the date is\n   * unavailable.\n   */\n  @Input()\n  isDateUnavailable?: (date: DateValue) => boolean;\n\n  /**\n   * Calendar's view (day, month, year).\n   */\n  @Input()\n  view: CalendarView = 'days';\n\n  @Input() canBroadenView = (): boolean =>\n    !this.readonly && Boolean(this.viewImpl.broaderView);\n\n  get viewImpl(): CalendarViewImpl {\n    return calendarViews[this.view] ?? calendarViews.days;\n  }\n\n  startDate: CalendarDate;\n\n  get endDate() {\n    const duration = { ...this.visibleDuration };\n    if (duration.days) {\n      duration.days--;\n    } else {\n      duration.days = -1;\n    }\n    return this.startDate.add(duration);\n  }\n\n  @Input()\n  set visibleDuration(value: DateDuration) {\n    this._visibleDuration = value;\n  }\n  get visibleDuration() {\n    return this._visibleDuration ?? this.viewImpl.visibleDuration;\n  }\n  private _visibleDuration?: DateDuration;\n\n  dateFormatterByLocale: Record<string, DateFormatter> = {};\n  weekDayFormatterByLocale: Record<string, DateFormatter> = {};\n  calendarsByName: Record<string, Calendar> = {};\n\n  private get dateFormatter(): DateFormatter {\n    if (!this.dateFormatterByLocale[this.locale]) {\n      this.dateFormatterByLocale[this.locale] = new DateFormatter(this.locale);\n    }\n    return this.dateFormatterByLocale[this.locale];\n  }\n\n  private get weekDayFormatter(): DateFormatter {\n    if (!this.weekDayFormatterByLocale[this.locale]) {\n      this.weekDayFormatterByLocale[this.locale] = new DateFormatter(\n        this.locale,\n        {\n          weekday: 'short',\n          timeZone: this.getTimezone(),\n        }\n      );\n    }\n    return this.weekDayFormatterByLocale[this.locale];\n  }\n\n  get calendar(): Calendar {\n    const calendarName = this.dateFormatter.resolvedOptions().calendar;\n    if (!this.calendarsByName[calendarName]) {\n      this.calendarsByName[calendarName] = createCalendar(\n        this.dateFormatter.resolvedOptions().calendar as CalendarIdentifier\n      );\n    }\n    return this.calendarsByName[calendarName];\n  }\n\n  private focusMonitor = inject(FocusMonitor);\n  private elementRef = inject(ElementRef);\n\n  shouldFocusGrid = false;\n\n  constructor() {\n    this.startDate = alignStart(this.focusedDate, this.visibleDuration);\n  }\n\n  abstract isSelected(date: CalendarDate): boolean;\n\n  /**\n   * Called to select a date via UI.\n   */\n  abstract selectDate(date: CalendarDate): void;\n\n  ngOnInit() {\n    this.adjustStartDate();\n    let focused = false;\n    this.focusMonitor\n      .monitor(this.elementRef.nativeElement, true)\n      .subscribe((origin) => {\n        focused = Boolean(origin);\n        // Focus can get lost and immediately grabbed when paging\n        setTimeout(() => {\n          if (!focused) {\n            this._valueAccessorOnTouched?.();\n            this.blurred.emit();\n          }\n        });\n      });\n  }\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n  }\n\n  getTimezone(): string {\n    return this.dateFormatter.resolvedOptions().timeZone;\n  }\n\n  /** Sets the focused date.\n   * @param date the date to set as focused date\n   * @param focus whether the calendar should also get focused\n   **/\n  setFocusedDate(date: DateValue, focus = true) {\n    this.focusedDate = constrainValue(\n      toCalendar(toCalendarDate(date), this.calendar),\n      this.minValue,\n      this.maxValue\n    );\n    if (focus) {\n      this.setGridFocused();\n    }\n  }\n\n  /** Moves focus to the previous page of dates, e.g. the previous month if one month is visible. */\n  previousPage() {\n    this.pageChange.emit('previous');\n    const pageDuration = this.visibleDuration;\n    const start = this.startDate.subtract(pageDuration);\n    this.startDate = alignStart(\n      constrainStart(\n        this.focusedDate,\n        start,\n        pageDuration,\n        this.minValue,\n        this.maxValue\n      ),\n      pageDuration\n    );\n    this.setFocusedDate(this.focusedDate.subtract(pageDuration), false);\n  }\n\n  /** Moves focus to the next page of dates, e.g. the next month if one month is visible. */\n  nextPage() {\n    this.pageChange.emit('next');\n    const pageDuration = this.visibleDuration;\n    const start = this.startDate.add(pageDuration);\n    this.startDate = alignStart(\n      constrainStart(\n        this.focusedDate,\n        start,\n        pageDuration,\n        this.minValue,\n        this.maxValue\n      ),\n      pageDuration\n    );\n    this.setFocusedDate(this.focusedDate.add(pageDuration), false);\n  }\n\n  /** Returns whether the given date is disabled according to the `minValue, `maxValue`, and `isDisabled` props. */\n  isDateDisabled(date: CalendarDate) {\n    return (\n      date.compare(this.startDate) < 0 ||\n      date.compare(this.endDate) > 0 ||\n      isInvalid(date, this.minValue, this.maxValue)\n    );\n  }\n\n  canNarrowView(): boolean {\n    return !this.readonly && Boolean(this.viewImpl.narrowerView);\n  }\n\n  broadenView(): void {\n    if (this.viewImpl.broaderView) {\n      this.setView(this.viewImpl.broaderView);\n    }\n  }\n\n  narrowView(): void {\n    if (this.viewImpl.narrowerView) {\n      this.setView(this.viewImpl.narrowerView);\n    }\n  }\n\n  setView(view: CalendarView): void {\n    this.view = view;\n    this.adjustStartDate();\n  }\n\n  /** Selects the currently focused date. */\n  selectCell(cellDate: CalendarDate) {\n    this.setGridFocused();\n    if (this.canNarrowView()) {\n      this.narrowView();\n    } else {\n      this.selectDate(cellDate);\n    }\n  }\n\n  getWeekDays(): string[] {\n    const timeZone = this.getTimezone();\n    const weekStart = startOfWeek(today(timeZone), this.locale);\n    return [...new Array(7).keys()].map((index) => {\n      const date = weekStart.add({ days: index });\n      const dateDay = date.toDate(timeZone);\n      return this.weekDayFormatter.format(dateDay);\n    });\n  }\n\n  protected adjustStartDate() {\n    // then check if start date doesn't match what it should be based on the current view\n    const startOfCurrentPage =\n      (this.viewImpl.getStartOfPage?.(this.focusedDate) ||\n        this.viewImpl\n          .getGridCells({\n            startDate: this.startDate,\n            focusedDate: this.startDate,\n            withFixedWeeks: coerceBooleanProperty(this.showFixedWeeks),\n            locale: this.locale,\n          })\n          .reduce((soFar, row) =>\n            soFar.concat(row.filter((date) => date))\n          )[0]) ??\n      this.startDate;\n\n    // First see if focused date is moved to another page that would require updating start date\n    if (this.view === 'years') {\n      // The utilities copied form react-stately don't take a view of years into account.\n      // We need to handle it separately.\n      if (this.focusedDate.compare(this.startDate) < 0) {\n        this.startDate = this.startDate.subtract(this.visibleDuration);\n      } else if (this.focusedDate.compare(this.endDate) > 0) {\n        this.startDate = this.startDate.add(this.visibleDuration);\n      }\n      this.startDate = constrainValue(\n        this.startDate,\n        this.minValue,\n        this.maxValue\n      );\n    } else if (\n      this.focusedDate.compare(this.startDate) < 0 ||\n      startOfCurrentPage.compare(this.startDate) < 0\n    ) {\n      this.startDate = alignStart(\n        this.focusedDate,\n        this.visibleDuration,\n        this.minValue,\n        this.maxValue\n      );\n    } else if (this.focusedDate.compare(this.endDate) > 0) {\n      this.startDate = alignEnd(\n        this.focusedDate,\n        this.visibleDuration,\n        this.minValue,\n        this.maxValue\n      );\n    }\n  }\n\n  setGridFocused() {\n    this.shouldFocusGrid = true;\n    setTimeout(() => {\n      this.shouldFocusGrid = false;\n    });\n  }\n\n  //// ControlValueAccessor implementation ////\n  private _valueAccessorOnTouched?: () => void;\n  protected valueAccessorOnChange?: (value: any) => void;\n\n  abstract writeValue(obj: any): void;\n  registerOnChange(fn: any): void {\n    this.valueAccessorOnChange = fn;\n  }\n  registerOnTouched(fn: any): void {\n    this._valueAccessorOnTouched = fn;\n  }\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n  ////////////////////////////////////////////\n}\n","import { Directive, HostListener, Input, TrackByFunction } from '@angular/core';\nimport { multipleDuration } from './date-utils';\nimport {\n  CalendarDate,\n  endOfWeek,\n  getLocalTimeZone,\n  startOfWeek,\n} from '@internationalized/date';\nimport { CalendarView, calendarViews } from './calendar-view';\nimport { CalendarBase } from './calendar-base';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * Implements the accessibility and behavior of a calendar grid.\n * Similar to something like cdkCalendarGrid if it existed, which would in turn be similar to\n * useCalendarGrid from @react-aria/calendar\n * @internal\n */\n@Directive({\n  selector: '[spCalendarGrid]',\n  standalone: true,\n  host: {\n    role: 'grid',\n    '[attr.aria-readonly]': 'calendar.readonly',\n    '[attr.aria-disabled]': 'calendar.disabled',\n  },\n  exportAs: 'spCalendarGrid',\n})\nexport class CalendarGridDirective {\n  get cells(): Array<CalendarDate | null>[] {\n    const { locale, focusedDate, showFixedWeeks } = this.calendar;\n    return this.viewImpl.getGridCells({\n      startDate: this.startDate,\n      focusedDate,\n      locale,\n      withFixedWeeks: coerceBooleanProperty(showFixedWeeks),\n    });\n  }\n\n  get viewImpl() {\n    return calendarViews[this.view] || calendarViews.days;\n  }\n\n  @Input('spCalendarGridView')\n  view: CalendarView = 'days';\n\n  @Input('spCalendarGridStartDate')\n  startDate!: /* required input*/ CalendarDate;\n\n  shouldShowWeekNumber(date: CalendarDate | null): date is CalendarDate {\n    if (date) {\n      return (\n        this.startDate.month ===\n          startOfWeek(date, this.calendar.locale).month ||\n        this.startDate.month === endOfWeek(date, this.calendar.locale).month\n      );\n    } else {\n      return false;\n    }\n  }\n\n  readonly rowTrackBy: TrackByFunction<CalendarDate[]> = (_index, dates) => {\n    return this.cellTrackBy(_index, dates[0]);\n  };\n  readonly cellTrackBy: TrackByFunction<CalendarDate> = (_index, date) => {\n    return date.toDate(getLocalTimeZone()).getTime();\n  };\n  constructor(public calendar: CalendarBase) {}\n\n  /** Moves focus to the previous row of dates, e.g. the previous work. */\n  @HostListener('keydown.ArrowUp', ['$event'])\n  focusPreviousRow(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(\n      this.calendar.focusedDate.subtract(\n        multipleDuration(this.viewImpl.cellDuration, this.cells[0].length)\n      )\n    );\n  }\n\n  /** Moves focus to the next row of dates, e.g. the next week. */\n  @HostListener('keydown.ArrowDown', ['$event'])\n  focusNextRow(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(\n      this.calendar.focusedDate.add(\n        multipleDuration(this.viewImpl.cellDuration, this.cells[0].length)\n      )\n    );\n  }\n\n  /** Moves focus to the previous calendar date. */\n  @HostListener('keydown.ArrowLeft', ['$event'])\n  focusPreviousCell(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(this.calendar.focusedDate.subtract(this.viewImpl.cellDuration));\n  }\n\n  /** Moves focus to the next calendar date. */\n  @HostListener('keydown.ArrowRight', ['$event'])\n  focusNextCell(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(this.calendar.focusedDate.add(this.viewImpl.cellDuration));\n  }\n\n  /**\n   * Moves focus to the previous section of dates based on what is currently displayed.\n   * For example, if days (of a month) are displayed, then focus moves to the previous month.\n   */\n  @HostListener('keydown.PageUp', ['$event'])\n  focusPreviousSection(event: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(\n      this.calendar.focusedDate.subtract(this.viewImpl.visibleDuration)\n    );\n  }\n\n  /**\n   * Moves focus to the next section of dates based on what is currently displayed.\n   * For example, if days (of a month) are displayed, then focus moves to the next month.\n   */\n  @HostListener('keydown.PageDown', ['$event'])\n  focusNextSection(event: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    this.change(this.calendar.focusedDate.add(this.viewImpl.visibleDuration));\n  }\n\n  /**\n   * Moves focus to the previous larger unit than the one displayed.\n   * For example, if days are displayed, then focus moves to the previous year, not previous month.\n   */\n  @HostListener('keydown.shift.PageUp', ['$event'])\n  focusPreviousLargerSection(event: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    if (this.viewImpl.broaderView) {\n      this.change(\n        this.calendar.focusedDate.subtract(\n          calendarViews[this.viewImpl.broaderView].visibleDuration\n        )\n      );\n    }\n  }\n\n  /**\n   * Moves focus to the next larger unit than the one displayed.\n   * For example, if days are displayed, then focus moves to the next year, not next month.\n   */\n  @HostListener('keydown.shift.PageDown', ['$event'])\n  focusNextLargerSection(event: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    if (this.viewImpl.broaderView) {\n      this.change(\n        this.calendar.focusedDate.add(\n          calendarViews[this.viewImpl.broaderView].visibleDuration\n        )\n      );\n    }\n  }\n\n  @HostListener('keydown.Home', ['$event'])\n  focusSectionStart(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    const newFocusedDate =\n      this.viewImpl.getStartOfPage?.(this.calendar.focusedDate) ??\n      this.getAllCells()[0];\n    if (newFocusedDate) {\n      this.change(newFocusedDate);\n    }\n  }\n\n  @HostListener('keydown.End', ['$event'])\n  focusSectionEnd(event?: KeyboardEvent) {\n    event?.preventDefault();\n    event?.stopPropagation();\n    const newFocusedDate =\n      this.viewImpl.getEndOfPage?.(this.calendar.focusedDate) ??\n      this.getAllCells().slice(-1)[0];\n    if (newFocusedDate) {\n      this.change(newFocusedDate);\n    }\n  }\n\n  @HostListener('keydown.Space', ['$event'])\n  @HostListener('keydown.Enter', ['$event'])\n  selectByKeyboard(event?: KeyboardEvent) {\n    this.calendar.selectCell(this.calendar.focusedDate);\n    event?.preventDefault();\n  }\n\n  private change(newFocusedDate: CalendarDate) {\n    this.calendar.setFocusedDate(newFocusedDate, true);\n  }\n\n  private getAllCells() {\n    return this.cells.reduce((soFar, row) => soFar.concat(row));\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarDate, DateFormatter } from '@internationalized/date';\n\n/**\n * Transforms a date into day number in month, based on the current locale.\n */\n@Pipe({\n  standalone: true,\n  name: 'day',\n})\nexport class DayPipe implements PipeTransform {\n  transform(date: CalendarDate, timeZone: string, locale: string): string {\n    // DateFormatter itself keeps an internal cache based on options deep equality, and Pipes are\n    // pure by default, meaning they won't be called twice with the same value, so no need to\n    // maintain a local cache of date formatters.\n    return (\n      new DateFormatter(locale, {\n        day: 'numeric',\n        timeZone: timeZone,\n        calendar: date.calendar.identifier,\n      })\n        .formatToParts(date.toDate(timeZone))\n        .find((part) => part.type === 'day')?.value || ''\n    );\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarDate, DateFormatter } from '@internationalized/date';\n\n/**\n * Transforms a date into month name, based on the current locale.\n */\n@Pipe({\n  standalone: true,\n  name: 'monthName',\n})\nexport class MonthNamePipe implements PipeTransform {\n  transform(\n    date: CalendarDate,\n    timeZone: string,\n    locale: string,\n    withYear = false,\n    monthFormat: 'long' | 'short' = 'long'\n  ): string {\n    // DateFormatter itself keeps an internal cache based on options deep equality, and Pipes are\n    // pure by default, meaning they won't be called twice with the same value, so no need to\n    // maintain a local cache of date formatters.\n    return new DateFormatter(locale, {\n      month: monthFormat,\n      year: withYear ? 'numeric' : undefined,\n      calendar: date.calendar.identifier,\n      timeZone: timeZone,\n    }).format(date.toDate(timeZone));\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarDate, DateFormatter } from '@internationalized/date';\n\n/**\n * Transforms a date into year number, based on the current locale.\n */\n@Pipe({\n  standalone: true,\n  name: 'year',\n})\nexport class YearPipe implements PipeTransform {\n  transform(date: CalendarDate, timeZone: string, locale: string): string {\n    // DateFormatter itself keeps an internal cache based on options deep equality, and Pipes are\n    // pure by default, meaning they won't be called twice with the same value, so no need to\n    // maintain a local cache of date formatters.\n    return new DateFormatter(locale, {\n      year: 'numeric',\n      calendar: date.calendar.identifier,\n      timeZone: timeZone,\n    }).format(date.toDate(timeZone));\n  }\n}\n","import { Directive, Input } from '@angular/core';\nimport { CalendarDate, today } from '@internationalized/date';\n\nimport { CalendarBase } from './calendar-base';\nimport { CalendarGridDirective } from './calendar-grid.directive';\nimport { isMonthAllDaysUnavailable } from './utils';\n\n/**\n * Behavior of calendar grid cell.\n * Similar to something like cdkCalendarCell if it existed, which would in turn be similar to\n * useCalendarCell from @react-aria/calendar.\n * @internal\n *  TODO(a11y): improve aria-label, matching the react impl\n *  TODO(a11y): add aria-describedBy\n */\n@Directive({\n  selector: '[spCalendarCell]',\n  standalone: true,\n  host: {\n    '[attr.aria-disabled]': '!isSelectable()',\n    '[attr.aria-selected]': 'isSelected()',\n    '[attr.aria-invalid]': 'isInvalid()',\n    role: 'gridcell',\n  },\n  exportAs: 'spCalendarCell',\n})\nexport class CalendarCellDirective {\n  @Input('spCalendarCell')\n  date: CalendarDate | null = null;\n\n  constructor(\n    private calendar: CalendarBase,\n    private grid: CalendarGridDirective\n  ) {}\n\n  isSelectable(): boolean {\n    if (!this.date) {\n      return false;\n    }\n\n    const isDateDisabled =\n      this.calendar.disabled || this.calendar.isDateDisabled(this.date);\n\n    const isDateUnavailable =\n      this.calendar.view === 'days'\n        ? this.calendar.isDateUnavailable?.(this.date)\n        : false;\n\n    const isAllDaysUnavailableInMonth =\n      this.calendar.view === 'months' && this.calendar.isDateUnavailable\n        ? isMonthAllDaysUnavailable(this.date, this.calendar.isDateUnavailable)\n        : false;\n\n    return (\n      !isDateDisabled && !isDateUnavailable && !isAllDaysUnavailableInMonth\n    );\n  }\n\n  /**\n   * Whether the date representing a calendar cell is in selected state, considering the\n   * current view.\n   */\n  isSelected() {\n    return !!this.date && this.calendar.isSelected(this.date);\n  }\n  /**\n   * Whether the date representing a calendar cell is in selected state, considering the\n   * current view.\n   */\n  isCurrent(): boolean {\n    return (\n      !!this.date &&\n      this.grid.viewImpl.areSameCell(\n        this.date,\n        today(this.calendar.getTimezone())\n      )\n    );\n  }\n  isInvalid(): boolean {\n    return Boolean(\n      this.date &&\n        this.calendar.isSelected(this.date) &&\n        (this.calendar.isDateDisabled(this.date) ||\n          this.calendar.isDateUnavailable?.(this.date))\n    );\n  }\n  isOutside(): boolean {\n    return Boolean(\n      this.date &&\n        this.grid.viewImpl.areSamePage?.(this.date, this.grid.startDate) ===\n          false\n    );\n  }\n}\n","import { Component } from '@angular/core';\nimport { UseComponentStyles } from '@danske/sapphire-angular';\nimport { NgSwitch, NgSwitchCase, TitleCasePipe } from '@angular/common';\n\nimport { CalendarCellDirective } from './shared/calendar-cell.directive';\nimport { DayPipe } from './day.pipe';\nimport { MonthNamePipe } from './month-name.pipe';\nimport { YearPipe } from './year.pipe';\nimport { CalendarBase } from './shared/calendar-base';\n\n/**\n * Sapphire implementation of calendar cell button.\n */\n@Component({\n  selector: 'sp-calendar-cell-button',\n  templateUrl: 'calendar-cell-button.component.html',\n  standalone: true,\n  host: {\n    class: 'sapphire-calendar__button',\n    '[class.is-disabled]': '!cell.isSelectable()',\n    '[class.sapphire-calendar__button--day]': \"calendar.view === 'days'\",\n    '[class.sapphire-calendar__button--outside-month]': 'cell.isOutside()',\n    '[class.sapphire-calendar__button--current]': 'cell.isCurrent()',\n    '[class.sapphire-calendar__button--selected]': 'cell.isSelected()',\n  },\n  hostDirectives: [UseComponentStyles],\n  imports: [\n    NgSwitch,\n    NgSwitchCase,\n    DayPipe,\n    MonthNamePipe,\n    YearPipe,\n    TitleCasePipe,\n    UseComponentStyles,\n  ],\n})\nexport class CalendarCellButtonComponent {\n  constructor(\n    public readonly calendar: CalendarBase,\n    public readonly cell: CalendarCellDirective\n  ) {}\n}\n","<span\n  class=\"sapphire-calendar__button-text\"\n  _spUseComponentStyles\n  [ngSwitch]=\"calendar.view\"\n>\n  <ng-container *ngSwitchCase=\"'days'\">{{\n    cell.date && (cell.date | day : calendar.getTimezone() : calendar.locale)\n  }}</ng-container>\n  <ng-container *ngSwitchCase=\"'months'\">{{\n    cell.date &&\n      (cell.date\n        | monthName\n          : calendar.getTimezone()\n          : calendar.locale\n          : false\n          : (calendar.size === 'sm' ? 'short' : 'long')\n        | titlecase)\n  }}</ng-container>\n  <ng-container *ngSwitchCase=\"'years'\">{{\n    cell.date && (cell.date | year : calendar.getTimezone() : calendar.locale)\n  }}</ng-container>\n</span>\n","import { MessageDictionary } from '@internationalized/message';\nimport da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nconst translations = new MessageDictionary({\n  'da-DK': da,\n  'en-US': en,\n  'de-DE': de,\n  'fi-FI': fi,\n  'no-NO': no,\n  'pl-PL': pl,\n  'sv-SE': se,\n});\n\nexport default translations;\n","import { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\nimport {\n  MessageDictionary,\n  MessageFormatter,\n} from '@internationalized/message';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TranslateService {\n  constructor(@Inject(LOCALE_ID) @Optional() private locale: string) {\n    this.locale = this.locale || 'en-DK';\n  }\n\n  translate(value: string, translations: MessageDictionary): string {\n    return translations.getStringForLocale(value, this.locale);\n  }\n\n  stringFormatter(translations: MessageDictionary): MessageFormatter {\n    return new MessageFormatter(this.locale, translations);\n  }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { isSameDay } from '@internationalized/date';\nimport { isInvalid } from './date-utils';\nimport { CalendarBase } from './calendar-base';\nimport translations from '../../i18n';\nimport { TranslateService } from '../../../common/translate.service';\n\n/**\n * Behavior of calendar grid cell button which is rendered inside a calendar cell.\n * Similar to something like cdkCalendarCellButton if it existed.\n * @internal\n */\n@Directive({\n  selector: 'button[spCalendarNextButton]',\n  standalone: true,\n  host: {\n    '[attr.aria-label]': 'ariaLabel',\n    '[disabled]': 'isDisabled()',\n  },\n})\nexport class CalendarNextButtonDirective {\n  constructor(t: TranslateService, public calendar: CalendarBase) {\n    this.ariaLabel = t.translate('next', translations);\n  }\n\n  ariaLabel: string;\n\n  @HostListener('click')\n  private handleClick() {\n    this.calendar.nextPage();\n    if (this.isDisabled()) {\n      this.calendar.setGridFocused();\n    }\n  }\n\n  isDisabled() {\n    // Adding may return the same date if we reached the end of time\n    // according to the calendar system (e.g. 9999-12-31).\n    const next = this.calendar.endDate.add({ days: 1 });\n    return (\n      this.calendar.disabled ||\n      isSameDay(next, this.calendar.endDate) ||\n      isInvalid(next, this.calendar.minValue, this.calendar.maxValue)\n    );\n  }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { isSameDay } from '@internationalized/date';\nimport { isInvalid } from './date-utils';\nimport { CalendarBase } from './calendar-base';\nimport translations from '../../i18n';\nimport { TranslateService } from '../../../common/translate.service';\n\n/**\n * Behavior of calendar grid cell button which is rendered inside a calendar cell.\n * Similar to something like cdkCalendarCellButton if it existed.\n * @internal\n */\n@Directive({\n  selector: 'button[spCalendarPreviousButton]',\n  standalone: true,\n  host: {\n    '[attr.aria-label]': 'ariaLabel',\n    '[disabled]': 'isDisabled()',\n  },\n})\nexport class CalendarPreviousButtonDirective {\n  constructor(t: TranslateService, public calendar: CalendarBase) {\n    this.ariaLabel = t.translate('previous', translations);\n  }\n\n  ariaLabel: string;\n\n  @HostListener('click')\n  private handleClick() {\n    this.calendar.previousPage();\n    if (this.isDisabled()) {\n      this.calendar.setGridFocused();\n    }\n  }\n\n  isDisabled() {\n    const prev = this.calendar.startDate.subtract({ days: 1 });\n    return (\n      this.calendar.disabled ||\n      isSameDay(prev, this.calendar.startDate) ||\n      isInvalid(prev, this.calendar.minValue, this.calendar.maxValue)\n    );\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n  MessageDictionary,\n  MessageFormatter,\n} from '@internationalized/message';\nimport { TranslateService } from './translate.service';\n\n@Pipe({\n  name: 't',\n  standalone: true,\n})\nexport class TranslatePipe implements PipeTransform {\n  constructor(translate: TranslateService, translations: MessageDictionary) {\n    this.formatter = translate.stringFormatter(translations);\n  }\n\n  formatter: MessageFormatter;\n\n  transform(value: string, vars?: Record<string, any>): string {\n    return this.formatter.format(value, vars);\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n  NgIf,\n  NgSwitch,\n  NgSwitchCase,\n  NgTemplateOutlet,\n  TitleCasePipe,\n} from '@angular/common';\nimport { MonthNamePipe } from './month-name.pipe';\nimport { YearPipe } from './year.pipe';\nimport {\n  IconRegistry,\n  SapphireButtonModule,\n  SapphireIconModule,\n  UseComponentStyles,\n} from '@danske/sapphire-angular';\nimport { CalendarNextButtonDirective } from './shared/calendar-next-button.directive';\nimport { CalendarPreviousButtonDirective } from './shared/calendar-previous-button.directive';\nimport { CalendarBase } from './shared/calendar-base';\nimport { CalendarDate } from '@internationalized/date';\nimport { MessageDictionary } from '@internationalized/message';\nimport translations from '../i18n';\nimport { TranslatePipe } from '../../common/translate.pipe';\nimport { iconChevronLeft, iconChevronRight } from '@danske/sapphire-icons/js';\n\n/**\n * Calendar header, with previous/next buttons\n\n * @internal\n */\n@Component({\n  selector: 'sp-calendar-header',\n  templateUrl: 'calendar-header.component.html',\n  standalone: true,\n  host: {\n    class: 'sapphire-calendar__header',\n    '[class.sapphire-calendar__header--left]': 'isLeft',\n    '[class.sapphire-calendar__header--right]': 'isRight',\n  },\n  hostDirectives: [UseComponentStyles],\n  imports: [\n    NgIf,\n    NgSwitch,\n    NgSwitchCase,\n    NgTemplateOutlet,\n    TranslatePipe,\n    TitleCasePipe,\n    MonthNamePipe,\n    YearPipe,\n    UseComponentStyles,\n    CalendarNextButtonDirective,\n    CalendarPreviousButtonDirective,\n    SapphireButtonModule,\n    SapphireIconModule,\n  ],\n  providers: [{ provide: MessageDictionary, useValue: translations }],\n})\nexport class CalendarHeaderComponent {\n  @Input()\n  date?: CalendarDate;\n\n  @Input() isLeft = false;\n  @Input() isRight = false;\n\n  constructor(\n    public readonly calendar: CalendarBase,\n    iconRegistry: IconRegistry\n  ) {\n    iconRegistry.registerIcons([iconChevronLeft, iconChevronRight]);\n  }\n}\n","<div\n  class=\"sapphire-calendar__header-prev-month\"\n  _spUseComponentStyles\n  tabindex=\"-1\"\n>\n  <button\n    sp-icon-button\n    variant=\"tertiary\"\n    [size]=\"calendar.size\"\n    spCalendarPreviousButton\n  >\n    <sp-icon name=\"chevronLeft\"></sp-icon>\n  </button>\n</div>\n<div class=\"sapphire-calendar__header-title\" _spUseComponentStyles>\n  <!-- the \"style\" attr is a hack to get around angular style isolation around a style overwrite in button -->\n  <button\n    *ngIf=\"calendar.canBroadenView(); else headerTitle\"\n    sp-button\n    variant=\"tertiary\"\n    tabindex=\"0\"\n    [size]=\"calendar.size\"\n    [disabled]=\"calendar.disabled\"\n    (click)=\"calendar.broadenView()\"\n    style=\"font-weight: var(--sapphire-semantic-font-weight-default-medium)\"\n  >\n    <ng-container *ngTemplateOutlet=\"headerTitle\"></ng-container>\n  </button>\n  <ng-template #headerTitle [ngSwitch]=\"calendar.view\">\n    <ng-container *ngSwitchCase=\"'days'\">\n      {{\n        date || calendar.focusedDate\n          | monthName : calendar.getTimezone() : calendar.locale : true\n          | titlecase\n      }}\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'months'\">\n      {{\n        date || calendar.focusedDate\n          | year : calendar.getTimezone() : calendar.locale\n          | titlecase\n      }}\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'years'\"\n      >{{ calendar.startDate.year }} — {{ calendar.endDate.year }}</ng-container\n    >\n  </ng-template>\n</div>\n<div\n  class=\"sapphire-calendar__header-next-month\"\n  _spUseComponentStyles\n  tabindex=\"-1\"\n>\n  <button\n    sp-icon-button\n    variant=\"tertiary\"\n    [size]=\"calendar.size\"\n    spCalendarNextButton\n  >\n    <sp-icon name=\"chevronRight\"></sp-icon>\n  </button>\n</div>\n","import {\n  CalendarDate,\n  DateValue,\n  GregorianCalendar,\n  toCalendar,\n  today,\n} from '@internationalized/date';\nimport {\n  Directive,\n  EventEmitter,\n  forwardRef,\n  Input,\n  Output,\n} from '@angular/core';\n\nimport { CoerceBoolean } from '../../../common/coerce-boolean.decorator';\nimport { constrainValue, previousAvailableDate } from './date-utils';\nimport { CalendarBase } from './calendar-base';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Directive({\n  selector: '[spCalendar]',\n  standalone: true,\n  providers: [\n    {\n      provide: CalendarBase,\n      useExisting: forwardRef(() => SingleSelectionCalendarDirective),\n    },\n  ],\n  exportAs: 'spCalendar',\n})\nexport class SingleSelectionCalendarDirective extends CalendarBase {\n  /**\n   * The currently selected date.\n   */\n  @Input()\n  value?: DateValue;\n\n  /**\n   * Emits when the currently selected date changes by user interactions.\n   * Emits DateValue, to allow for two-way binding (`[(value)]=\"...\"`).\n   */\n  @Output()\n  valueChange = new EventEmitter<DateValue>();\n\n  /**\n   * The minimum allowed date that a user may select.\n   */\n  @Input()\n  minValue?: DateValue;\n\n  /**\n   * The maximum allowed date that a user may select.\n   */\n  @Input()\n  maxValue?: DateValue;\n\n  /**\n   * If the calendar's focused date should be auto\n   * focused when rendered.\n   */\n  @Input()\n  @CoerceBoolean\n  autoFocus?: BooleanInput;\n\n  ngOnInit() {\n    super.ngOnInit();\n    if (!this._focusedDate) {\n      this.setFocusedDate(this.value ?? today(this.getTimezone()), false);\n    }\n  }\n\n  isSelected(date: CalendarDate): boolean {\n    // in react-aria there are checks for being disabled and unavailable too\n    return this.value != null && this.viewImpl.areSameCell(date, this.value);\n  }\n\n  /**\n   * Select a date via UI.\n   */\n  override selectDate(date: CalendarDate) {\n    let newValue: CalendarDate | undefined = date;\n    // logic below copied from @react-stately/calendar\n    if (!this.disabled && !this.readonly) {\n      newValue = constrainValue(newValue, this.minValue, this.maxValue);\n      newValue = previousAvailableDate(\n        newValue,\n        this.startDate,\n        this.isDateUnavailable\n      );\n      if (!newValue) {\n        return;\n      }\n\n      // The display calendar should not have any effect on the emitted value.\n      // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n      newValue = toCalendar(\n        newValue,\n        this.value?.calendar || new GregorianCalendar()\n      );\n\n      // Preserve time if the input value had one.\n      if (this.value && 'hour' in this.value) {\n        this.value = this.value.set(newValue);\n      } else {\n        this.value = newValue;\n      }\n      this.valueChange.emit(this.value);\n      this.valueAccessorOnChange?.(this.value);\n    }\n  }\n\n  writeValue(obj: DateValue): void {\n    this.value = obj;\n    if (this.value) {\n      this.setFocusedDate(this.value, false);\n    }\n  }\n\n  getTimezone(): string {\n    return this.value && 'timeZone' in this.value\n      ? this.value.timeZone\n      : super.getTimezone();\n  }\n}\n","/* eslint-disable */\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// The entire file is copied from @react-aria/utils\n\nimport { FocusableElement } from '@react-types/shared';\n\n// This is a polyfill for element.focus({preventScroll: true});\n// Currently necessary for Safari and old Edge:\n// https://caniuse.com/#feat=mdn-api_htmlelement_focus_preventscroll_option\n// See https://bugs.webkit.org/show_bug.cgi?id=178583\n//\n\n// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n\ninterface ScrollableElement {\n  element: HTMLElement;\n  scrollTop: number;\n  scrollLeft: number;\n}\n\nexport function focusWithoutScrolling(element: FocusableElement) {\n  if (supportsPreventScroll()) {\n    element.focus({ preventScroll: true });\n  } else {\n    let scrollableElements = getScrollableElements(element);\n    element.focus();\n    restoreScrollPosition(scrollableElements);\n  }\n}\n\nlet supportsPreventScrollCached: boolean | null = null;\nfunction supportsPreventScroll() {\n  if (supportsPreventScrollCached == null) {\n    supportsPreventScrollCached = false;\n    try {\n      var focusElem = document.createElement('div');\n      focusElem.focus({\n        get preventScroll() {\n          supportsPreventScrollCached = true;\n          return true;\n        },\n      });\n    } catch (e) {\n      // Ignore\n    }\n  }\n\n  return supportsPreventScrollCached;\n}\n\nfunction getScrollableElements(element: FocusableElement): ScrollableElement[] {\n  var parent = element.parentNode;\n  var scrollableElements: ScrollableElement[] = [];\n  var rootScrollingElement =\n    document.scrollingElement || document.documentElement;\n\n  while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n    if (\n      parent.offsetHeight < parent.scrollHeight ||\n      parent.offsetWidth < parent.scrollWidth\n    ) {\n      scrollableElements.push({\n        element: parent,\n        scrollTop: parent.scrollTop,\n        scrollLeft: parent.scrollLeft,\n      });\n    }\n    parent = parent.parentNode;\n  }\n\n  if (rootScrollingElement instanceof HTMLElement) {\n    scrollableElements.push({\n      element: rootScrollingElement,\n      scrollTop: rootScrollingElement.scrollTop,\n      scrollLeft: rootScrollingElement.scrollLeft,\n    });\n  }\n\n  return scrollableElements;\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n  for (let { element, scrollTop, scrollLeft } of scrollableElements) {\n    element.scrollTop = scrollTop;\n    element.scrollLeft = scrollLeft;\n  }\n}\n","import {\n  AfterViewChecked,\n  Directive,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  inject,\n} from '@angular/core';\nimport { DateFormatter, isSameDay } from '@internationalized/date';\nimport { CalendarCellDirective } from './calendar-cell.directive';\nimport { focusWithoutScrolling } from '../../../common/focusWithoutScrolling';\nimport { CalendarBase } from './calendar-base';\n\n/**\n * Base class for behavior and accessibility of calendar grid cell buttons rendered inside\n * calendar cells.\n * See:\n * - {@link SingleSelectionCalendarCellButtonDirective}\n * - {@link RangeCalendarCellButtonDirective}\n * @internal\n */\n@Directive()\nexport class CalendarCellButton implements AfterViewChecked {\n  protected elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n  constructor(\n    public cell: CalendarCellDirective,\n    public calendar: CalendarBase\n  ) {}\n\n  ngAfterViewChecked() {\n    if (\n      this.isFocusedDate() &&\n      !this.disabled &&\n      (this.calendar.shouldFocusGrid || this.calendar.autoFocus)\n    ) {\n      this.focus();\n      this.calendar.autoFocus = false;\n    }\n  }\n\n  @HostBinding('attr.role')\n  get role(): string | null {\n    return this.elementRef.nativeElement instanceof HTMLButtonElement\n      ? null\n      : 'button';\n  }\n\n  @HostBinding('attr.aria-disabled')\n  get disabled() {\n    return !this.cell.isSelectable();\n  }\n\n  @HostBinding('attr.aria-invalid')\n  get invalid() {\n    return this.cell.isInvalid();\n  }\n\n  @HostBinding('tabindex')\n  get tabIndex() {\n    if (this.calendar.disabled) {\n      return null;\n    }\n    return this.isFocusedDate() ? 0 : -1;\n  }\n\n  @HostBinding('attr.aria-label')\n  get ariaLabel() {\n    if (this.calendar.view === 'days' && this.cell.date) {\n      const timezone = this.calendar.getTimezone();\n      return new DateFormatter(this.calendar.locale, {\n        weekday: 'long',\n        day: 'numeric',\n        month: 'long',\n        year: 'numeric',\n        timeZone: timezone,\n      }).format(this.cell.date.toDate(timezone));\n    }\n    return null;\n  }\n\n  @HostListener('focus')\n  protected handleFocus() {\n    if (!this.calendar.disabled && this.cell.date) {\n      this.calendar.setFocusedDate(this.cell.date);\n    }\n  }\n\n  handleCellSelected() {\n    if (!this.cell.date) {\n      return;\n    }\n    if (this.cell.isSelectable()) {\n      if (!this.calendar.readonly) {\n        this.calendar.selectCell(this.cell.date);\n      }\n      this.calendar.setFocusedDate(this.cell.date);\n    }\n  }\n\n  focus() {\n    focusWithoutScrolling(this.elementRef.nativeElement);\n  }\n\n  isFocusedDate(): boolean {\n    return Boolean(\n      this.cell.date && isSameDay(this.cell.date, this.calendar.focusedDate)\n    );\n  }\n}\n","import { Directive, HostListener, forwardRef } from '@angular/core';\nimport { CalendarCellButton } from './calendar-cell-button';\n\n/**\n * Behavior and accessibility of cell buttons in calendar.\n * Similar to something like cdkCalendarCellButton if it existed.\n * @internal\n */\n@Directive({\n  selector: '[spCalendarCellButton]',\n  providers: [\n    {\n      provide: CalendarCellButton,\n      useExisting: forwardRef(() => SingleSelectionCalendarCellButtonDirective),\n    },\n  ],\n  exportAs: 'spCalendarCellButton',\n  standalone: true,\n})\nexport class SingleSelectionCalendarCellButtonDirective extends CalendarCellButton {\n  @HostListener('click')\n  onClick() {\n    this.handleCellSelected();\n  }\n}\n","import { InjectionToken, LOCALE_ID, inject } from '@angular/core';\n\nexport const SAPPHIRE_DATE_LOCALE = new InjectionToken(\n  'Locale used for dates in Sapphire components. LOCALE_ID from @angular/core will be used by default',\n  {\n    providedIn: 'root',\n    factory: () => inject(LOCALE_ID),\n  }\n);\n\nexport const SAPPHIRE_DATE_FORMAT_LOCALE = new InjectionToken(\n  'Locale used to format dates in Sapphire components.'\n);\n","import {\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  TrackByFunction,\n  Output,\n} from '@angular/core';\nimport { NgFor, NgIf, TitleCasePipe } from '@angular/common';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n  CalendarDate,\n  DateValue,\n  toCalendarDate,\n} from '@internationalized/date';\nimport { MessageDictionary } from '@internationalized/message';\n\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { WeekNumberPipe } from './week-number.pipe';\nimport { CalendarGridDirective } from './shared/calendar-grid.directive';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CalendarView } from './shared/calendar-view';\nimport { CalendarCellButtonComponent } from './calendar-cell-button.component';\nimport { CalendarHeaderComponent } from './calendar-header.component';\nimport {\n  ViewEncapsulationProvider,\n  SapphireButtonModule,\n} from '@danske/sapphire-angular';\nimport { CalendarCellDirective } from './shared/calendar-cell.directive';\nimport { SingleSelectionCalendarDirective } from './shared/single-selection-calendar.directive';\nimport { SingleSelectionCalendarCellButtonDirective } from './shared/single-selection-calendar-cell-button.directive';\nimport { SAPPHIRE_DATE_LOCALE } from './sapphire-date-locale';\nimport { TranslatePipe } from '../../common/translate.pipe';\nimport translations from '../i18n';\n\nexport { SingleSelectionCalendarDirective };\n\nexport interface PredefinedDate {\n  label: string;\n  date: DateValue;\n}\n\n/**\n * Calendar is accessible as a grid. Supports single date selection with min/max constraints,\n * unavailable dates, week numbers, multiple view months, and locale configuration.\n */\n@Component({\n  selector: 'sp-calendar',\n  standalone: true,\n  templateUrl: './calendar.component.html',\n  styleUrls: ['./calendar.component.scss'],\n  providers: [\n    ViewEncapsulationProvider,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: SingleSelectionCalendarDirective,\n      multi: true,\n    },\n    { provide: MessageDictionary, useValue: translations },\n  ],\n  hostDirectives: [\n    {\n      directive: SingleSelectionCalendarDirective,\n      inputs: [\n        'autoFocus',\n        'showFixedWeeks',\n        'isDateUnavailable',\n        'focusedDate',\n        'locale',\n        'minValue',\n        'maxValue',\n        'value',\n        'readonly',\n        'disabled',\n        'size',\n        'view',\n      ],\n      outputs: ['blurred', 'valueChange'],\n    },\n  ],\n  imports: [\n    NgFor,\n    NgIf,\n    TitleCasePipe,\n    TranslatePipe,\n    WeekNumberPipe,\n    CalendarGridDirective,\n    CalendarCellButtonComponent,\n    CalendarHeaderComponent,\n    CalendarCellDirective,\n    SingleSelectionCalendarCellButtonDirective,\n    SingleSelectionCalendarDirective,\n    SapphireButtonModule,\n  ],\n})\nexport class CalendarComponent<P extends string = string> implements OnInit {\n  /**\n   * Whether to show the week numbers in days view.\n   */\n  @Input()\n  @CoerceBoolean\n  showWeekNumbers?: BooleanInput;\n\n  /**\n   * A set of predefined dates that the user can more conveniently select.\n   */\n  @Input()\n  predefinedDates?: Record<P, PredefinedDate>;\n\n  /**\n   * Emits when the currently selected date changes by user interactions.\n   * If the \"predefinedDateKey\" is not necessary, you can use `valueChange`\n   * output which allows for two-way binding (`[(value)]=\"...\"`)\n   */\n  @Output()\n  change = new EventEmitter<{\n    value: DateValue;\n    predefinedDateKey?: P;\n  }>();\n\n  /**\n   * Emits when the view changes by user interactions.\n   * Emits CalenderView, to allow for two-way binding (`[(view)]=\"...\"`).\n   */\n  @Output()\n  viewChange = new EventEmitter<CalendarView>();\n\n  private selectedPredefinedDateKey?: P;\n\n  constructor(\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    public readonly _calendar: SingleSelectionCalendarDirective\n  ) {\n    if (!this._calendar.locale) {\n      this._calendar.locale = localeFromContext;\n    }\n  }\n\n  ngOnInit() {\n    this._calendar.valueChange.subscribe((value) => {\n      this.change.emit({\n        value,\n        predefinedDateKey: this.selectedPredefinedDateKey,\n      });\n      this.selectedPredefinedDateKey = undefined;\n    });\n  }\n  readonly _trackByIndex: TrackByFunction<CalendarDate> = (index) => index;\n\n  selectPredefinedDate(p: P) {\n    const predefinedDate = this.predefinedDates?.[p as P];\n    if (predefinedDate) {\n      this.selectedPredefinedDateKey = p as P;\n      this._calendar.selectDate(toCalendarDate(predefinedDate.date));\n      this._calendar.setFocusedDate(predefinedDate.date, true);\n    }\n  }\n\n  _getPredefinedDates() {\n    return Object.entries(this.predefinedDates || {}).map(\n      ([key, value]) => ({ key, value } as { key: P; value: PredefinedDate })\n    );\n  }\n\n  setView(view: CalendarView) {\n    this._calendar.setView(view);\n  }\n\n  setFocusedDate(date: DateValue) {\n    this._calendar.setFocusedDate(date);\n  }\n\n  getTimezone() {\n    return this._calendar.getTimezone();\n  }\n  selectDate(date: CalendarDate) {\n    return this._calendar.selectDate(date);\n  }\n}\n","<div class=\"sapphire-calendar\">\n  <div\n    class=\"sapphire-calendar__table-container\"\n    [class.sapphire-calendar__table-container--md]=\"_calendar.size === 'md'\"\n    [class.sapphire-calendar__table-container--sm]=\"_calendar.size === 'sm'\"\n  >\n    <sp-calendar-header></sp-calendar-header>\n    <table\n      spCalendarGrid\n      [spCalendarGridView]=\"_calendar.view\"\n      [spCalendarGridStartDate]=\"_calendar.startDate\"\n      #grid=\"spCalendarGrid\"\n      class=\"sapphire-calendar__table\"\n      [class.sapphire-calendar__table--with-week-numbers]=\"showWeekNumbers\"\n      *ngIf=\"_calendar.view === 'days'\"\n    >\n      <thead role=\"presentation\">\n        <tr>\n          <th\n            *ngIf=\"showWeekNumbers\"\n            class=\"sapphire-calendar__table-head-cell\"\n            aria-hidden=\"true\"\n          ></th>\n          <th\n            role=\"columnheader\"\n            scope=\"col\"\n            class=\"sapphire-calendar__table-head-cell\"\n            *ngFor=\"let weekDay of _calendar.getWeekDays()\"\n          >\n            <abbr class=\"sapphire-calendar__day-of-week\">{{\n              weekDay | titlecase\n            }}</abbr>\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr\n          *ngFor=\"let dates of grid.cells; trackBy: grid.rowTrackBy\"\n          class=\"sapphire-calendar__table-body-row\"\n        >\n          <th\n            *ngIf=\"showWeekNumbers\"\n            class=\"sapphire-calendar__table-body-cell\"\n            role=\"rowheader\"\n            [attr.aria-label]=\"\n              'week'\n                | t : { weekNumber: dates[0] ? (dates[0] | weekNumber) : null }\n            \"\n            [attr.aria-hidden]=\"!grid.shouldShowWeekNumber(dates[0])\"\n          >\n            <span class=\"sapphire-calendar__week-number\">\n              {{\n                grid.shouldShowWeekNumber(dates[0])\n                  ? (dates[0] | weekNumber)\n                  : null\n              }}\n            </span>\n          </th>\n          <td\n            *ngFor=\"let date of dates; trackBy: grid.cellTrackBy\"\n            [spCalendarCell]=\"date\"\n            class=\"sapphire-calendar__table-body-cell\"\n          >\n            <sp-calendar-cell-button\n              spCalendarCellButton\n            ></sp-calendar-cell-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n    <table\n      *ngIf=\"_calendar.view === 'months' || _calendar.view === 'years'\"\n      spCalendarGrid\n      [spCalendarGridView]=\"_calendar.view\"\n      [spCalendarGridStartDate]=\"_calendar.startDate\"\n      #grid=\"spCalendarGrid\"\n      class=\"sapphire-calendar__table sapphire-calendar__table--month-year\"\n    >\n      <tbody>\n        <tr\n          *ngFor=\"let rows of grid.cells; trackBy: grid.rowTrackBy\"\n          class=\"sapphire-calendar__table-body-row\"\n        >\n          <td\n            *ngFor=\"let cellFocusedDate of rows; trackBy: grid.cellTrackBy\"\n            [spCalendarCell]=\"cellFocusedDate\"\n            class=\"sapphire-calendar__table-body-cell\"\n          >\n            <sp-calendar-cell-button\n              spCalendarCellButton\n            ></sp-calendar-cell-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n  <div class=\"sapphire-calendar__custom-ranges\" *ngIf=\"predefinedDates\">\n    <div *ngFor=\"let range of _getPredefinedDates(); trackBy: _trackByIndex\">\n      <button\n        sp-button\n        variant=\"text\"\n        (click)=\"selectPredefinedDate(range.key)\"\n      >\n        {{ range.value.label }}\n      </button>\n    </div>\n  </div>\n</div>\n","import {\n  CalendarDate,\n  DateValue,\n  GregorianCalendar,\n  maxDate,\n  minDate,\n  toCalendar,\n  toCalendarDate,\n  today,\n} from '@internationalized/date';\nimport { RangeValue } from '../range-calendar.component';\nimport { constrainValue, previousAvailableDate } from './date-utils';\nimport { CalendarBase } from './calendar-base';\nimport {\n  Directive,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n  forwardRef,\n} from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CoerceBoolean } from '../../../common/coerce-boolean.decorator';\n\n@Directive({\n  selector: '[spRangeCalendar]',\n  standalone: true,\n  providers: [\n    {\n      provide: CalendarBase,\n      useExisting: forwardRef(() => RangeCalendarDirective),\n    },\n  ],\n  exportAs: 'spRangeCalendar',\n})\nexport class RangeCalendarDirective extends CalendarBase {\n  /**\n   * The currently selected date.\n   */\n  @Input()\n  value?: RangeValue<DateValue>;\n\n  /**\n   * Emits when the currently selected date changes by user interactions.\n   * Emits DateRange, to allow for two-way binding (`[(value)]=\"...\"`).\n   */\n  @Output()\n  valueChange = new EventEmitter<RangeValue<DateValue>>();\n\n  @Input()\n  @CoerceBoolean\n  autoFocus?: BooleanInput;\n\n  /**\n   * The minimum allowed date that a user may select.\n   */\n  @Input()\n  get minValue(): DateValue | undefined | null {\n    if (\n      !this.isDateUnavailable ||\n      this.allowUnavailableDatesWithinRange ||\n      !this.anchorDate\n    ) {\n      return this._minValue;\n    }\n    const firstDateBeforeUnavailable = this.firstDateBeforeUnavailable(\n      this.anchorDate,\n      this.startDate,\n      -1\n    );\n    if (firstDateBeforeUnavailable) {\n      return this._minValue\n        ? maxDate(firstDateBeforeUnavailable, this._minValue!)\n        : firstDateBeforeUnavailable;\n    }\n    return this._minValue;\n  }\n\n  set minValue(value: DateValue | undefined | null) {\n    this._minValue = value;\n  }\n  private _minValue?: DateValue | null;\n\n  /**\n   * The maximum allowed date that a user may select.\n   */\n  @Input()\n  get maxValue(): DateValue | undefined | null {\n    if (\n      !this.isDateUnavailable ||\n      this.allowUnavailableDatesWithinRange ||\n      !this.anchorDate\n    ) {\n      return this._maxValue;\n    }\n    const firstDateBeforeUnavailable = this.firstDateBeforeUnavailable(\n      this.anchorDate,\n      this.endDate,\n      +1\n    );\n    if (firstDateBeforeUnavailable) {\n      return this._maxValue\n        ? minDate(firstDateBeforeUnavailable, this._maxValue)\n        : firstDateBeforeUnavailable;\n    }\n    return this._maxValue;\n  }\n  set maxValue(value: DateValue | undefined | null) {\n    this._maxValue = value;\n  }\n  private _maxValue?: DateValue | null;\n\n  /**\n   * Whether range is allowed to span unavailable dates.\n   */\n  @Input() allowUnavailableDatesWithinRange?: BooleanInput;\n\n  get anchorDate(): CalendarDate | null {\n    return this._anchorDate;\n  }\n\n  private _anchorDate: CalendarDate | null = null;\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.blurred.subscribe(() => {\n      if (this.anchorDate) {\n        this.selectCell(this.focusedDate);\n      }\n    });\n    if (!this._focusedDate) {\n      this.setFocusedDate(\n        this.value?.start ? this.value?.start : today(this.getTimezone()),\n        false\n      );\n    }\n  }\n  writeValue(obj: RangeValue<DateValue>): void {\n    if (obj && obj.start && obj.end) {\n      this.setValue(obj);\n    }\n  }\n\n  /**\n   * Select a date via UI. depending on the state of selection, it may start\n   * a new selection or finish the ongoing one.\n   */\n  selectDate(date: CalendarDate) {\n    if (!this.disabled && !this.readonly) {\n      const min = this.minValue,\n        max = this.maxValue;\n\n      let constrainedDate: CalendarDate | undefined = constrainValue(\n        date,\n        min,\n        max\n      );\n      constrainedDate = previousAvailableDate(\n        constrainedDate,\n        this.startDate,\n        this.isDateUnavailable\n      );\n      if (!constrainedDate) {\n        return;\n      }\n      if (!this._anchorDate) {\n        this._anchorDate = constrainedDate;\n      } else {\n        const newValue = makeRange(this._anchorDate, constrainedDate);\n        this._updateValue(newValue);\n      }\n    }\n  }\n\n  /**\n   * Sets the value of the range programmatically.\n   */\n  setValue(value: RangeValue<DateValue>) {\n    const currentValue = this.value;\n    const newValue = {\n      start: convertValue(toCalendarDate(value.start), currentValue?.start),\n      end: convertValue(toCalendarDate(value.end), currentValue?.end),\n    };\n    this.value = newValue;\n    this._anchorDate = null;\n    if (\n      this.focusedDate.compare(newValue.start) < 0 ||\n      this.focusedDate.compare(newValue.end) > 0\n    ) {\n      this.setFocusedDate(newValue.start, false);\n    }\n  }\n\n  /**\n   * Cancels ongoing selection, if any\n   */\n  cancelSelection() {\n    this._anchorDate = null;\n  }\n\n  getTimezone(): string {\n    return this.value && 'timeZone' in this.value.start\n      ? this.value.start.timeZone\n      : super.getTimezone();\n  }\n\n  isSelected(date: CalendarDate): boolean {\n    // in react-aria there are checks for being disabled and unavailable too, but not sure if it\n    // makes sense.\n\n    const highlightedRange = this.getHighlightedRange();\n    return (\n      highlightedRange != null &&\n      date.compare(highlightedRange.start) >= 0 &&\n      date.compare(highlightedRange.end) <= 0\n    );\n  }\n\n  @HostListener('touchmove', ['$event'])\n  private handleTouchMove(event: TouchEvent) {\n    if (this.anchorDate) {\n      // Prevent the default behavior of scroll by touch, during a selection. Otherwise, the page\n      // would scroll under the user's finger, while dragging to select a range.\n      // we could have kept a boolean `dragging`, to only prevent touch move when date selection\n      // is happening via dragging. The negligible difference now is that scrolling is disabled\n      // even when a selection is started by pressing start date.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * updates the selected range via a UI interaction.\n   * @param newValue\n   */\n  _updateValue(newValue: RangeValue<DateValue>) {\n    this.setValue(newValue);\n    this.valueAccessorOnChange?.(newValue);\n    this.valueChange.emit(this.value);\n  }\n\n  getHighlightedRange() {\n    const { anchorDate, value } = this;\n    const { focusedDate } = this;\n    if (anchorDate) {\n      const start = minDate(focusedDate, anchorDate);\n      const end = maxDate(focusedDate, anchorDate);\n      return start && end\n        ? {\n            start,\n            end,\n          }\n        : null;\n    }\n\n    return value ?? null;\n  }\n\n  setAnchorDate(date: DateValue) {\n    this._anchorDate = toCalendarDate(date);\n  }\n\n  @memoize()\n  private firstDateBeforeUnavailable(\n    from: CalendarDate,\n    to: DateValue,\n    dir: number\n  ) {\n    let date = from;\n    while (dir < 0 ? date.compare(to) > 0 : date.compare(to) < 0) {\n      const nextDate = date.add({ days: dir });\n      if (this.isDateUnavailable?.(nextDate)) {\n        return date;\n      }\n      date = nextDate;\n    }\n    return null;\n  }\n}\n\n/**\n * A very simple, non-flexible memoization decorator covering the simple memoization needs\n * we have here in calendar component. We can use a library or have this evolved, if other\n * use cases come up that would need more advanced options.\n */\nfunction memoize(): MethodDecorator {\n  return function (\n    target: object,\n    propertyKey: string | symbol,\n    descriptor: PropertyDescriptor\n  ): void {\n    const originalMethod = descriptor.value;\n    const cacheSymbol = Symbol(`__cache_${propertyKey.toString()}`);\n    descriptor.value = function (this: any, ...args: any[]) {\n      if (!this[cacheSymbol]) {\n        this[cacheSymbol] = {};\n      }\n      const cache: Record<string, any> = this[cacheSymbol];\n      const key = args.map((arg) => `${arg}`).join('_');\n      if (!cache[key]) {\n        cache[key] = originalMethod.apply(this, args);\n      }\n      return cache[key];\n    };\n  };\n}\n\nfunction makeRange(start: DateValue, end: DateValue): RangeValue<CalendarDate>;\nfunction makeRange(\n  start: DateValue | null | undefined,\n  end: DateValue | null | undefined\n): RangeValue<CalendarDate> | null {\n  if (!start || !end) {\n    return null;\n  }\n\n  if (end.compare(start) < 0) {\n    [start, end] = [end, start];\n  }\n\n  return { start: toCalendarDate(start), end: toCalendarDate(end) };\n}\n\nfunction convertValue(newValue: CalendarDate, oldValue: DateValue | undefined) {\n  // The display calendar should not have any effect on the emitted value.\n  // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n  newValue = toCalendar(\n    newValue,\n    oldValue?.calendar || new GregorianCalendar()\n  );\n\n  // Preserve time if the input value had one.\n  if (oldValue && 'hour' in oldValue) {\n    return oldValue.set(newValue);\n  }\n\n  return newValue;\n}\n","import { Directive, HostListener, forwardRef } from '@angular/core';\nimport {\n  endOfMonth,\n  getDayOfWeek,\n  isSameDay,\n  startOfMonth,\n} from '@internationalized/date';\nimport { CalendarCellDirective } from './calendar-cell.directive';\nimport { CalendarCellButton } from './calendar-cell-button';\nimport { RangeCalendarDirective } from './range-calendar.directive';\n\n// TODO(UC-2728): use press directive instead of the corresponding mouse and keyboard listeners here\n/**\n * Behavior and accessibility of cell buttons in range calendar.\n * Similar to something like cdkRangeCalendarCellButton if it existed.\n * @internal\n */\n@Directive({\n  selector: '[spRangeCalendarCellButton]',\n  standalone: true,\n  providers: [\n    {\n      provide: CalendarCellButton,\n      useExisting: forwardRef(() => RangeCalendarCellButtonDirective),\n    },\n  ],\n  exportAs: 'spRangeCalendarCellButton',\n})\nexport class RangeCalendarCellButtonDirective extends CalendarCellButton {\n  private isAnchorPressed = false;\n  private isRangeBoundaryPressed = false;\n  private debouncedDragStart: { cancel: () => void; flush: () => void } | null =\n    null;\n\n  constructor(\n    public readonly cell: CalendarCellDirective,\n    public readonly calendar: RangeCalendarDirective\n  ) {\n    super(cell, calendar);\n  }\n\n  isHighlighted(): boolean {\n    const highlightRange = this.calendar.getHighlightedRange();\n    return Boolean(\n      this.cell.date &&\n        highlightRange &&\n        this.cell.date.compare(highlightRange.start) >= 0 &&\n        this.cell.date.compare(highlightRange.end) <= 0\n    );\n  }\n\n  isHighlightStart(): boolean {\n    const startDate = this.calendar.getHighlightedRange()?.start;\n    return Boolean(\n      this.cell.date &&\n        startDate &&\n        (isSameDay(startDate, this.cell.date) ||\n          getDayOfWeek(this.cell.date, this.calendar.locale) === 0 ||\n          isSameDay(this.cell.date, startOfMonth(this.cell.date)))\n    );\n  }\n\n  isHighlightEnd(): boolean {\n    const endDate = this.calendar.getHighlightedRange()?.end;\n    return Boolean(\n      this.cell.date &&\n        endDate &&\n        (isSameDay(endDate, this.cell.date) ||\n          getDayOfWeek(this.cell.date, this.calendar.locale) === 6 ||\n          isSameDay(this.cell.date, endOfMonth(this.cell.date)))\n    );\n  }\n\n  isSelectionStart(): boolean {\n    const startDate = this.calendar.getHighlightedRange()?.start;\n    return Boolean(\n      this.cell.date && startDate && isSameDay(startDate, this.cell.date)\n    );\n  }\n\n  isSelectionEnd(): boolean {\n    const endDate = this.calendar.getHighlightedRange()?.end;\n    return Boolean(\n      this.cell.date && endDate && isSameDay(endDate, this.cell.date)\n    );\n  }\n\n  isSelecting(): boolean {\n    return Boolean(this.calendar.anchorDate);\n  }\n\n  @HostListener('contextmenu', ['$event'])\n  private handleContextMenu(event: MouseEvent) {\n    event.preventDefault();\n  }\n\n  @HostListener('pointerenter')\n  private onPointerEnter() {\n    if (this.isSelecting() && this.cell.isSelectable() && this.cell.date) {\n      this.calendar.setFocusedDate(this.cell.date);\n    }\n  }\n\n  @HostListener('pointerleave')\n  private onPressEnd() {\n    this.isAnchorPressed = false;\n    this.isRangeBoundaryPressed = false;\n    this.debouncedDragStart?.cancel();\n  }\n\n  @HostListener('pointerup', ['$event'])\n  private onPressUp() {\n    if (this.debouncedDragStart) {\n      this.debouncedDragStart.flush();\n    }\n    if (this.isRangeBoundaryPressed && this.cell.date) {\n      // When clicking on the start or end date of an already selected range,\n      // start a new selection on press up to also allow dragging the date to\n      // change the existing range.\n      this.calendar.setAnchorDate(this.cell.date);\n    } else if (this.isSelecting() && !this.isAnchorPressed) {\n      // When releasing a drag or pressing the end date of a range, select it.\n      this.handleCellSelected();\n    }\n    this.onPressEnd();\n  }\n\n  @HostListener('pointerdown', ['$event'])\n  private onPointerDown(event: PointerEvent) {\n    if (!this.cell.date) {\n      return;\n    }\n    // to prevent text selection. Disabling text selection will be a part of\n    // the generic press directive in UC-2728 and should be removed from here.\n    event.preventDefault();\n\n    // From react-aria: This is necessary on touch devices to allow dragging\n    // outside the original pressed element.\n    if (event.target && 'releasePointerCapture' in event.target) {\n      (event.target.releasePointerCapture as (pointerId: number) => void)(\n        event.pointerId\n      );\n    }\n    const highlightedRange = this.calendar.getHighlightedRange();\n    // Allow dragging the start or end date of a range to modify it rather than starting a new\n    // selection.\n    if (!this.isSelecting()) {\n      if (\n        highlightedRange &&\n        isSameDay(highlightedRange.start, this.cell.date)\n      ) {\n        this.calendar.setAnchorDate(highlightedRange.end);\n        this.calendar.setFocusedDate(this.cell.date);\n        this.isRangeBoundaryPressed = true;\n        return;\n      } else if (\n        highlightedRange &&\n        isSameDay(highlightedRange.end, this.cell.date)\n      ) {\n        this.calendar.setAnchorDate(highlightedRange.start);\n        this.calendar.setFocusedDate(this.cell.date);\n        this.isRangeBoundaryPressed = true;\n        return;\n      }\n      const startDragging = () => {\n        this.isAnchorPressed = true;\n        this.handleCellSelected();\n      };\n      if (event.pointerType === 'touch') {\n        const timeoutId = setTimeout(startDragging, 200);\n        const cancel = () => clearTimeout(timeoutId);\n        this.debouncedDragStart = {\n          flush: () => {\n            cancel();\n            startDragging();\n          },\n          cancel,\n        };\n      } else {\n        startDragging();\n      }\n    }\n  }\n\n  // should be replaced by pressUp event, checking if pointerType is \"keyboard\",\n  // when press directive is added.\n  @HostListener('keyup.Space', ['$event'])\n  @HostListener('keyup.Enter', ['$event'])\n  selectByKeyboard() {\n    const nextDay = this.calendar.focusedDate.add({ days: 1 });\n    if (this.isSelecting() && !this.calendar.isDateUnavailable?.(nextDay)) {\n      this.calendar.setFocusedDate(nextDay);\n    }\n  }\n\n  @HostListener('keydown.Escape', ['$event'])\n  private onEscape(event: KeyboardEvent) {\n    this.calendar.cancelSelection();\n    event.preventDefault();\n  }\n}\n","import {\n  Component,\n  DoCheck,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  Output,\n  TrackByFunction,\n} from '@angular/core';\nimport {\n  NgFor,\n  NgIf,\n  NgSwitch,\n  NgSwitchCase,\n  TitleCasePipe,\n} from '@angular/common';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CalendarDate, DateValue } from '@internationalized/date';\n\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { WeekNumberPipe } from './week-number.pipe';\nimport { CalendarGridDirective } from './shared/calendar-grid.directive';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CalendarCellButtonComponent } from './calendar-cell-button.component';\nimport { CalendarHeaderComponent } from './calendar-header.component';\nimport { multipleDuration } from './shared/date-utils';\nimport { CalendarCellDirective } from './shared/calendar-cell.directive';\nimport { RangeCalendarCellButtonDirective } from './shared/range-calendar-cell-button.directive';\nimport {\n  SapphireButtonModule,\n  ViewEncapsulationProvider,\n} from '@danske/sapphire-angular';\nimport { RangeCalendarDirective } from './shared/range-calendar.directive';\nimport { SAPPHIRE_DATE_LOCALE } from './sapphire-date-locale';\n\nexport interface RangeValue<T> {\n  start: T;\n  end: T;\n}\nexport interface PredefinedDateRange {\n  label: string;\n  dateRange: { start: DateValue; end: DateValue };\n}\n\nexport { RangeCalendarDirective };\n\n/**\n * Range Calendar is accessible as a multiselectable grid. Supports date range selection\n * with min/max constraints, unavailable dates, week numbers, and locale configuration.\n */\n@Component({\n  selector: 'sp-range-calendar',\n  standalone: true,\n  templateUrl: './range-calendar.component.html',\n  styleUrls: ['./calendar.component.scss'],\n  providers: [\n    ViewEncapsulationProvider,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: RangeCalendarDirective,\n      multi: true,\n    },\n  ],\n  hostDirectives: [\n    {\n      directive: RangeCalendarDirective,\n      inputs: [\n        'autoFocus',\n        'showFixedWeeks',\n        'isDateUnavailable',\n        'allowUnavailableDatesWithinRange',\n        'minValue',\n        'maxValue',\n        'value',\n        'focusedDate',\n        'locale',\n        'disabled',\n        'size',\n        'readonly',\n      ],\n      outputs: ['blurred', 'valueChange'],\n    },\n  ],\n  imports: [\n    NgFor,\n    NgIf,\n    NgSwitch,\n    NgSwitchCase,\n    TitleCasePipe,\n\n    WeekNumberPipe,\n    CalendarGridDirective,\n    CalendarCellButtonComponent,\n    CalendarHeaderComponent,\n    CalendarCellDirective,\n    RangeCalendarCellButtonDirective,\n    SapphireButtonModule,\n    RangeCalendarDirective,\n  ],\n})\nexport class RangeCalendarComponent<P extends string = string>\n  implements OnInit, DoCheck\n{\n  /**\n   * Whether to show the week numbers in days view.\n   */\n  @Input()\n  @CoerceBoolean\n  showWeekNumbers?: BooleanInput;\n\n  /**\n   * Whether to show two months instead of one.\n   */\n  @Input()\n  @CoerceBoolean\n  showTwoMonths?: BooleanInput;\n\n  /**\n   * A set of predefined date ranges the user can more conveniently select.\n   */\n  @Input()\n  predefinedRanges?: Record<P, PredefinedDateRange>;\n\n  /**\n   * Emits when the currently selected date changes by user interactions.\n   * If the \"predefinedDateKey\" is not necessary, you can use `valueChange`\n   * output which allows for two-way binding (`[(value)]=\"...\"`)\n   */\n  @Output()\n  change = new EventEmitter<{\n    value: RangeValue<DateValue>;\n    predefinedRangeKey?: P;\n  }>();\n\n  private selectedPredefinedRangeKey?: P;\n\n  get visibleDuration() {\n    return this.showTwoMonths\n      ? multipleDuration(this._calendar.viewImpl.visibleDuration, 2)\n      : this._calendar.viewImpl.visibleDuration;\n  }\n\n  constructor(\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    public readonly _calendar: RangeCalendarDirective\n  ) {\n    if (!this._calendar.locale) {\n      this._calendar.locale = localeFromContext;\n    }\n    this._calendar.canBroadenView = () => false;\n  }\n\n  ngDoCheck() {\n    this._calendar.visibleDuration = this.visibleDuration;\n  }\n\n  ngOnInit() {\n    this._calendar.valueChange.subscribe((value) => {\n      this.change.emit({\n        value,\n        predefinedRangeKey: this.selectedPredefinedRangeKey,\n      });\n      this.selectedPredefinedRangeKey = undefined;\n    });\n  }\n  readonly _trackByIndex: TrackByFunction<CalendarDate> = (index) => index;\n\n  selectPredefinedRange(p: P) {\n    const predefinedRange = this.predefinedRanges?.[p as P];\n    if (predefinedRange) {\n      this.selectedPredefinedRangeKey = p as P;\n      this._calendar._updateValue(predefinedRange.dateRange);\n      this._calendar.setFocusedDate(predefinedRange.dateRange.end, true);\n    }\n  }\n\n  getTimezone() {\n    return this._calendar.getTimezone();\n  }\n\n  _getPredefinedRanges() {\n    return Object.entries(this.predefinedRanges || {}).map(\n      ([key, value]) =>\n        ({ key, value } as { key: P; value: PredefinedDateRange })\n    );\n  }\n}\n","<div class=\"sapphire-calendar\">\n  <div class=\"sapphire-calendar__tables-row\">\n    <div\n      *ngFor=\"\n        let startDate of showTwoMonths\n          ? [_calendar.startDate, _calendar.startDate.add({ months: 1 })]\n          : [_calendar.startDate];\n        trackBy: _trackByIndex;\n        let index = index\n      \"\n      class=\"sapphire-calendar__table-container\"\n      [class.sapphire-calendar__table-container--md]=\"_calendar.size === 'md'\"\n      [class.sapphire-calendar__table-container--sm]=\"_calendar.size === 'sm'\"\n    >\n      <sp-calendar-header\n        [date]=\"startDate\"\n        [isLeft]=\"!!showTwoMonths && index === 0\"\n        [isRight]=\"!!showTwoMonths && index === 1\"\n      ></sp-calendar-header>\n      <table\n        spCalendarGrid\n        [spCalendarGridStartDate]=\"startDate\"\n        #grid=\"spCalendarGrid\"\n        class=\"sapphire-calendar__table\"\n        [class.sapphire-calendar__table--with-week-numbers]=\"showWeekNumbers\"\n      >\n        <thead role=\"presentation\">\n          <tr>\n            <th\n              *ngIf=\"showWeekNumbers\"\n              class=\"sapphire-calendar__table-head-cell\"\n              aria-hidden=\"true\"\n            ></th>\n            <th\n              role=\"columnheader\"\n              scope=\"col\"\n              class=\"sapphire-calendar__table-head-cell\"\n              *ngFor=\"let weekDay of _calendar.getWeekDays()\"\n            >\n              <abbr class=\"sapphire-calendar__day-of-week\">{{\n                weekDay | titlecase\n              }}</abbr>\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr\n            *ngFor=\"let dates of grid.cells; trackBy: grid.rowTrackBy\"\n            class=\"sapphire-calendar__table-body-row\"\n          >\n            <th\n              *ngIf=\"showWeekNumbers\"\n              class=\"sapphire-calendar__table-body-cell\"\n              role=\"rowheader\"\n              attr.aria-label=\"Week {{\n                dates[0] ? (dates[0] | weekNumber) : null\n              }}\"\n              [attr.aria-hidden]=\"!grid.shouldShowWeekNumber(dates[0])\"\n            >\n              <span class=\"sapphire-calendar__week-number\">\n                {{\n                  grid.shouldShowWeekNumber(dates[0])\n                    ? (dates[0] | weekNumber)\n                    : null\n                }}\n              </span>\n            </th>\n            <td\n              *ngFor=\"let date of dates; trackBy: grid.cellTrackBy\"\n              [spCalendarCell]=\"date\"\n              class=\"sapphire-calendar__table-body-cell\"\n            >\n              <sp-calendar-cell-button\n                spRangeCalendarCellButton\n                #range=\"spRangeCalendarCellButton\"\n                [class.sapphire-calendar__button--range-selection]=\"\n                  range.isHighlighted()\n                \"\n                [class.sapphire-calendar__button--selected]=\"\n                  range.isHighlighted()\n                \"\n                [class.sapphire-calendar__button--selection-start]=\"\n                  range.isSelectionStart()\n                \"\n                [class.sapphire-calendar__button--range-start]=\"\n                  range.isHighlightStart()\n                \"\n                [class.sapphire-calendar__button--range-end]=\"\n                  range.isHighlightEnd()\n                \"\n                [class.sapphire-calendar__button--selection-end]=\"\n                  range.isSelectionEnd()\n                \"\n              ></sp-calendar-cell-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n  <div class=\"sapphire-calendar__custom-ranges\" *ngIf=\"predefinedRanges\">\n    <div *ngFor=\"let range of _getPredefinedRanges(); trackBy: _trackByIndex\">\n      <button\n        sp-button\n        variant=\"text\"\n        (click)=\"selectPredefinedRange(range.key)\"\n      >\n        {{ range.value.label }}\n      </button>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CalendarComponent } from './calendar.component';\nimport { RangeCalendarComponent } from './range-calendar.component';\n\n@NgModule({\n  declarations: [],\n  imports: [CalendarComponent, RangeCalendarComponent],\n  exports: [CalendarComponent, RangeCalendarComponent],\n})\nexport class SapphireCalendarModule {}\n","import { ValidatorFn } from '@angular/forms';\nimport { DateValue } from '@internationalized/date';\n\nconst getRangeErrors = ({\n  value,\n  minValue,\n  maxValue,\n}: {\n  value: DateValue;\n  minValue?: DateValue;\n  maxValue?: DateValue;\n}) => {\n  const isBeforeMin = minValue ? value.compare(minValue) < 0 : false;\n  const isAfterMax = maxValue ? value.compare(maxValue) > 0 : false;\n\n  return {\n    ...(isBeforeMin ? { minValue: isBeforeMin } : {}),\n    ...(isAfterMax ? { maxValue: isAfterMax } : {}),\n  };\n};\n\n/**\n * Validator for a DateValue to be within a range (closed or open).\n * Can also be used to validate a RangeValue<DateValue> against a range.\n */\nexport function createDateRangeValidator({\n  minValue,\n  maxValue,\n}: {\n  minValue?: DateValue;\n  maxValue?: DateValue;\n}): ValidatorFn {\n  return function validateDate(control) {\n    if (control.value?.start && control.value?.end) {\n      return {\n        ...getRangeErrors({ value: control.value.start, minValue }),\n        ...getRangeErrors({ value: control.value.end, maxValue }),\n      };\n    } else if (control.value) {\n      return getRangeErrors({ value: control.value, minValue, maxValue });\n    } else {\n      return {};\n    }\n  };\n}\n\nconst getCustomError = ({\n  value,\n  isDateUnavailable,\n}: {\n  value: DateValue;\n  isDateUnavailable?: (value: DateValue) => boolean;\n}) => {\n  const isUnavailable = isDateUnavailable ? isDateUnavailable(value) : false;\n\n  return {\n    ...(isUnavailable ? { isDateUnavailable: true } : {}),\n  };\n};\n\n/**\n * Custom validator to determine if a value is valid or not.\n * Can also be used to validate a RangeValue<DateValue>. In\n * such case both the start and end dates must pass validation.\n */\nexport function createCustomDateValidator({\n  isDateUnavailable,\n}: {\n  isDateUnavailable?: (value: DateValue) => boolean;\n}): ValidatorFn {\n  return function validateDate(control) {\n    if (control.value?.start && control.value?.end) {\n      return {\n        ...getCustomError({ value: control.value.end, isDateUnavailable }),\n        ...getCustomError({ value: control.value.start, isDateUnavailable }),\n      };\n    } else if (control.value) {\n      return getCustomError({ value: control.value, isDateUnavailable });\n    } else {\n      return {};\n    }\n  };\n}\n\n/**\n * Validator for controls that work with a value of type RangeValue<DateValue>.\n * This validates that the date range is not absurd (eg. start date is after\n * end date).\n */\nexport function createDateRangeSanityValidator(): ValidatorFn {\n  return function validateDate(control) {\n    if (control.value?.start && control.value?.end) {\n      return control.value.start.compare(control.value.end) > 0\n        ? { invalidDateRange: true }\n        : {};\n    } else {\n      return {};\n    }\n  };\n}\n","/* eslint-disable */\n\n/*\n * This file was copied from @react-aria/utils\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/isScrollable.ts\n */\n\nexport function isScrollable(\n  node: Element,\n  checkForOverflow?: boolean\n): boolean {\n  let style = window.getComputedStyle(node);\n  let isScrollable = /(auto|scroll)/.test(\n    style.overflow + style.overflowX + style.overflowY\n  );\n\n  if (isScrollable && checkForOverflow) {\n    isScrollable =\n      node.scrollHeight !== node.clientHeight ||\n      node.scrollWidth !== node.clientWidth;\n  }\n\n  return isScrollable;\n}\n","/*\n * This file was copied from @react-aria/utils\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/getScrollParent.ts\n */\n\nimport { isScrollable } from './isScrollable';\n\nexport function getScrollParent(\n  node: Element,\n  checkForOverflow?: boolean\n): Element {\n  let scrollableNode: Element | null = node;\n  if (isScrollable(scrollableNode, checkForOverflow)) {\n    scrollableNode = scrollableNode.parentElement;\n  }\n\n  while (scrollableNode && !isScrollable(scrollableNode, checkForOverflow)) {\n    scrollableNode = scrollableNode.parentElement;\n  }\n\n  return (\n    scrollableNode || document.scrollingElement || document.documentElement\n  );\n}\n","/*\n * This file was copied from @react-aria/utils\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/getScrollParents.ts\n */\n\nimport { isScrollable } from './isScrollable';\n\nexport function getScrollParents(\n  node: Element,\n  checkForOverflow?: boolean\n): Element[] {\n  const scrollParents: Element[] = [];\n\n  while (node && node !== document.documentElement) {\n    if (isScrollable(node, checkForOverflow)) {\n      scrollParents.push(node);\n    }\n    node = node.parentElement as Element;\n  }\n\n  return scrollParents;\n}\n","/* eslint-disable */\n/*\n * This file was copied from @react-aria/utils\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/utils/src/scrollIntoView.ts\n */\n\nimport { getScrollParents } from './getScrollParents';\n\ninterface ScrollIntoViewportOpts {\n  /** The optional containing element of the target to be centered in the viewport. */\n  containingElement?: Element;\n}\n\n/**\n * Scrolls `scrollView` so that `element` is visible.\n * Similar to `element.scrollIntoView({block: 'nearest'})` (not supported in Edge),\n * but doesn't affect parents above `scrollView`.\n */\nexport function scrollIntoView(scrollView: HTMLElement, element: HTMLElement) {\n  let offsetX = relativeOffset(scrollView, element, 'left');\n  let offsetY = relativeOffset(scrollView, element, 'top');\n  let width = element.offsetWidth;\n  let height = element.offsetHeight;\n  let x = scrollView.scrollLeft;\n  let y = scrollView.scrollTop;\n\n  // Account for top/left border offsetting the scroll top/Left\n  let { borderTopWidth, borderLeftWidth } = getComputedStyle(scrollView);\n  let borderAdjustedX = scrollView.scrollLeft + parseInt(borderLeftWidth, 10);\n  let borderAdjustedY = scrollView.scrollTop + parseInt(borderTopWidth, 10);\n  // Ignore end/bottom border via clientHeight/Width instead of offsetHeight/Width\n  let maxX = borderAdjustedX + scrollView.clientWidth;\n  let maxY = borderAdjustedY + scrollView.clientHeight;\n\n  if (offsetX <= x) {\n    x = offsetX - parseInt(borderLeftWidth, 10);\n  } else if (offsetX + width > maxX) {\n    x += offsetX + width - maxX;\n  }\n  if (offsetY <= borderAdjustedY) {\n    y = offsetY - parseInt(borderTopWidth, 10);\n  } else if (offsetY + height > maxY) {\n    y += offsetY + height - maxY;\n  }\n  scrollView.scrollLeft = x;\n  scrollView.scrollTop = y;\n}\n\n/**\n * Computes the offset left or top from child to ancestor by accumulating\n * offsetLeft or offsetTop through intervening offsetParents.\n */\nfunction relativeOffset(\n  ancestor: HTMLElement,\n  child: HTMLElement,\n  axis: 'left' | 'top'\n) {\n  const prop = axis === 'left' ? 'offsetLeft' : 'offsetTop';\n  let sum = 0;\n  while (child.offsetParent) {\n    sum += child[prop];\n    if (child.offsetParent === ancestor) {\n      // Stop once we have found the ancestor we are interested in.\n      break;\n    } else if (child.offsetParent.contains(ancestor)) {\n      // If the ancestor is not `position:relative`, then we stop at\n      // _its_ offset parent, and we subtract off _its_ offset, so that\n      // we end up with the proper offset from child to ancestor.\n      sum -= ancestor[prop];\n      break;\n    }\n    child = child.offsetParent as HTMLElement;\n  }\n  return sum;\n}\n\n/**\n * Scrolls the `targetElement` so it is visible in the viewport. Accepts an optional `opts.containingElement`\n * that will be centered in the viewport prior to scrolling the targetElement into view. If scrolling is prevented on\n * the body (e.g. targetElement is in a popover), this will only scroll the scroll parents of the targetElement up to but not including the body itself.\n */\nexport function scrollIntoViewport(\n  targetElement: Element,\n  opts?: ScrollIntoViewportOpts\n) {\n  if (document.contains(targetElement)) {\n    let root = document.scrollingElement || document.documentElement;\n    let isScrollPrevented = window.getComputedStyle(root).overflow === 'hidden';\n    // If scrolling is not currently prevented then we aren’t in a overlay nor is a overlay open, just use element.scrollIntoView to bring the element into view\n    if (!isScrollPrevented) {\n      let { left: originalLeft, top: originalTop } =\n        targetElement.getBoundingClientRect();\n\n      // use scrollIntoView({block: 'nearest'}) instead of .focus to check if the element is fully in view or not since .focus()\n      // won't cause a scroll if the element is already focused and doesn't behave consistently when an element is partially out of view horizontally vs vertically\n      targetElement?.scrollIntoView?.({ block: 'nearest' });\n      let { left: newLeft, top: newTop } =\n        targetElement.getBoundingClientRect();\n      // Account for sub pixel differences from rounding\n      if (\n        Math.abs(originalLeft - newLeft) > 1 ||\n        Math.abs(originalTop - newTop) > 1\n      ) {\n        opts?.containingElement?.scrollIntoView?.({\n          block: 'center',\n          inline: 'center',\n        });\n        targetElement.scrollIntoView?.({ block: 'nearest' });\n      }\n    } else {\n      let scrollParents = getScrollParents(targetElement);\n      // If scrolling is prevented, we don't want to scroll the body since it might move the overlay partially offscreen and the user can't scroll it back into view.\n      for (let scrollParent of scrollParents) {\n        scrollIntoView(\n          scrollParent as HTMLElement,\n          targetElement as HTMLElement\n        );\n      }\n    }\n  }\n}\n","/**\n * The only reason we need this is because of this error NG3003.\n * More about the error: https://angular.dev/errors/NG3003\n * Suggested workaround: https://stackoverflow.com/questions/68321910/angular-ng3003-error-when-child-component-references-parent-component\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const DATE_FIELD = new InjectionToken('DateFieldInputComponent');\n","import { MessageDictionary } from '@internationalized/message';\nimport da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nconst translations = new MessageDictionary(\n  {\n    'da-DK': da,\n    'en-US': en,\n    'de-DE': de,\n    'fi-FI': fi,\n    'nb-NO': no,\n    'pl-PL': pl,\n    'sv-SE': se,\n  },\n  'en-US'\n);\n\nexport default translations;\n","import {\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  inject,\n  Input,\n  Optional,\n} from '@angular/core';\nimport { FieldComponent, UseComponentStyles } from '@danske/sapphire-angular';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { NumberParser } from '@internationalized/number';\nimport { DateSegment } from './utils/Segment';\nimport { getScrollParent } from './utils/getScrollParent';\nimport { scrollIntoViewport } from './utils/scrollIntoView';\nimport { DATE_FIELD } from './date-field.token';\nimport type { DateFieldInputComponent } from './date-field-input.component';\nimport { Platform } from '@angular/cdk/platform';\nimport { TranslateService } from '../../common/translate.service';\nimport translations from '../i18n';\n\n@Component({\n  selector: 'sp-date-field-segment',\n  template: '{{ segment.text }}',\n  host: {\n    class: 'sapphire-date-field__segment',\n    '[class.sapphire-date-field__segment--filled]': '!segment.isPlaceholder',\n    '[class.is-disabled]': 'dateField.disabled',\n    // spinbuttons cannot be focused with VoiceOver on iOS.\n    // so we change the role and remove the spinbutton aria attrs.\n    '[attr.role]': 'platform.IOS ? \"textbox\" : \"spinbutton\"',\n    '[attr.aria-valuenow]':\n      'platform.IOS ? null : segment.value !== null ? segment.value : null',\n    '[attr.aria-valuetext]': 'platform.IOS ? null : ariaTextValue',\n    '[attr.aria-valuemin]': 'platform.IOS ? null : segment.minValue',\n    '[attr.aria-valuemax]': 'platform.IOS ? null : segment.maxValue',\n    '[attr.tabindex]': 'dateField.disabled ? null : \"0\"',\n    '[attr.inputmode]': 'isEditable ? \"numeric\" : null',\n    '[attr.enterkeyhint]': 'isEditable ? \"next\" : null',\n    '[attr.autocorrect]': 'isEditable ? \"off\" : null',\n    '[attr.spellcheck]': 'isEditable ? \"false\" : null',\n    '[attr.contenteditable]': 'isEditable ? true : null',\n    '[attr.data-placeholder]': 'segment.isPlaceholder ? \"true\" : null',\n    '[attr.aria-readonly]': '!isEditable ? \"true\" : null',\n    '[attr.aria-invalid]': 'field?.hasError(dateField) ? \"true\" : null',\n    '[attr.aria-required]': 'dateField.required ? \"true\" : null',\n    '[attr.aria-disabled]': 'dateField.disabled ? \"true\" : null',\n    '[attr.aria-label]': 'ariaLabel()',\n    '[attr.aria-labelledby]': 'id + \" \" + field?.label?.id',\n    '[attr.aria-describedby]': 'field?.error?.id || field?.note?.id',\n  },\n  hostDirectives: [UseComponentStyles],\n})\nexport class DateFieldSegmentComponent {\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private translateService: TranslateService,\n    public platform: Platform,\n    @Optional() public field?: FieldComponent\n  ) {\n    this.numberParser = new NumberParser(this.dateField.locale, {\n      maximumFractionDigits: 0,\n    });\n\n    document.addEventListener('selectionchange', this.onSelectionChange);\n  }\n\n  @HostBinding('id')\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  segment!: DateSegment;\n\n  @Input()\n  additionalAriaLabel?: string;\n\n  // see the token definition for an explanation of this\n  dateField: DateFieldInputComponent = inject(\n    DATE_FIELD\n  ) as DateFieldInputComponent;\n\n  focus() {\n    this.elementRef?.nativeElement.focus();\n  }\n\n  /**\n   * Element is labelled by two items. The first is this element itself\n   * with the below label. And the second is the field's label.\n   * In the end screenreaders will read something like\n   * \"day, Appointment date\" given a field with label \"Appointment date\".\n   * Or, if an additionalAriaLabel is provided (ie, \"start date\"), it will read\n   * \"day, start date, Appointment date\".\n   */\n\n  ariaLabel(): string | null {\n    switch (this.segment.type) {\n      case 'day':\n        return this.joinLabel(\n          this.translateService.translate('day', translations),\n          this.additionalAriaLabel\n        );\n      case 'month':\n        return this.joinLabel(\n          this.translateService.translate('month', translations),\n          this.additionalAriaLabel\n        );\n      case 'year':\n        return this.joinLabel(\n          this.translateService.translate('year', translations),\n          this.additionalAriaLabel\n        );\n      default:\n        return null;\n    }\n  }\n\n  get isEditable(): boolean {\n    return !this.dateField.disabled && !this.dateField.readonly;\n  }\n\n  get ariaTextValue(): string {\n    if (this.segment.isPlaceholder) {\n      return this.translateService.translate('empty', translations);\n    } else {\n      return this.segment.type === 'month'\n        ? `${this.segment.text}` // TODO(a11y) should concatenate \"- ${localizedMonthName}\"\n        : this.segment.text;\n    }\n  }\n\n  private joinLabel(...parts: Array<string | undefined>): string {\n    return [...parts].filter(Boolean).join(', ') + ', ';\n  }\n\n  private numberParser: NumberParser;\n\n  private enteredKeys: string = '';\n\n  private onSelectionChange(): void {\n    // Enforce that the selection is collapsed when inside a date segment.\n    // Otherwise, when tapping on a segment in Android Chrome and then entering text,\n    // composition events will be fired that break the DOM structure and crash the page.\n    const selection = window.getSelection();\n    if (\n      this.elementRef?.nativeElement.contains(selection?.anchorNode || null)\n    ) {\n      selection?.collapse(this.elementRef.nativeElement);\n    }\n  }\n\n  private backspace(): void {\n    if (this.segment.text === this.segment.placeholder) {\n      this.dateField.focusPreviousSegment();\n    }\n    if (\n      this.numberParser.isValidPartialNumber(this.segment.text) &&\n      !this.dateField.readonly &&\n      !this.segment.isPlaceholder\n    ) {\n      let newValue = this.segment.text.slice(0, -1);\n      const parsed = this.numberParser.parse(newValue);\n      newValue = parsed === 0 ? '' : newValue;\n      if (newValue.length === 0 || parsed === 0) {\n        this.dateField.clearSegment(this.segment.type);\n      } else {\n        this.dateField.setSegment(this.segment.type, parsed);\n      }\n      this.enteredKeys = newValue;\n    }\n  }\n\n  @HostListener('focus')\n  private onFocus() {\n    this.enteredKeys = '';\n\n    // scroll into viewport.\n    // Especially useful for mobile to mimic the focus on input behaviour.\n    scrollIntoViewport(this.elementRef.nativeElement, {\n      containingElement: getScrollParent(this.elementRef.nativeElement),\n    });\n\n    // Collapse selection to start or Chrome won't fire input events.\n    const selection = window.getSelection();\n    selection?.collapse(this.elementRef.nativeElement);\n  }\n\n  @HostListener('keydown', ['$event'])\n  private onKeyDown(e: KeyboardEvent) {\n    if (\n      !e.ctrlKey &&\n      !e.metaKey &&\n      !e.shiftKey &&\n      !e.altKey &&\n      !this.dateField.readonly\n    ) {\n      switch (e.key) {\n        case 'PageUp':\n          e.preventDefault();\n          this.dateField.incrementPage(this.segment.type);\n          break;\n        case 'ArrowUp':\n        case 'Up':\n          e.preventDefault();\n          this.dateField.increment(this.segment.type);\n          break;\n        case 'PageDown':\n          e.preventDefault();\n          this.dateField.decrementPage(this.segment.type);\n          break;\n        case 'ArrowDown':\n        case 'Down':\n          e.preventDefault();\n          this.dateField.decrement(this.segment.type);\n          break;\n        case 'Home':\n          e.preventDefault();\n          this.dateField.setSegment(this.segment.type, this.segment.minValue);\n          break;\n        case 'End':\n          e.preventDefault();\n          this.dateField.setSegment(this.segment.type, this.segment.maxValue);\n          break;\n        case 'ArrowLeft':\n        case 'Left':\n          e.preventDefault();\n          this.dateField.focusPreviousSegment();\n          break;\n        case 'ArrowRight':\n        case 'Right':\n          e.preventDefault();\n          this.dateField.focusNextSegment();\n          break;\n      }\n    }\n  }\n\n  private compositionTextContent: string | null = null;\n\n  @HostListener('beforeinput', ['$event'])\n  private onBeforeInput(e: InputEvent) {\n    e.preventDefault();\n\n    switch (e.inputType) {\n      case 'deleteContentBackward':\n      case 'deleteContentForward':\n        if (\n          this.numberParser.isValidPartialNumber(this.segment.text) &&\n          !this.dateField.readonly\n        ) {\n          this.backspace();\n        }\n        break;\n      case 'insertCompositionText':\n        // insertCompositionText cannot be canceled.\n        // Record the current state of the element so we can restore it in the `input` event below.\n        this.compositionTextContent = this.elementRef.nativeElement.textContent;\n        break;\n      default:\n        if (\n          e.data != null &&\n          !this.dateField.disabled &&\n          !this.dateField.readonly\n        ) {\n          const key = e.data;\n          const newValue = this.enteredKeys + key;\n\n          if (this.numberParser.isValidPartialNumber(newValue)) {\n            const numberValue = this.numberParser.parse(newValue);\n\n            if (!isNaN(numberValue)) {\n              const segmentValue =\n                numberValue > this.segment.maxValue\n                  ? this.numberParser.parse(key)\n                  : numberValue;\n\n              const shouldSetValue =\n                segmentValue !== 0 || this.segment.minValue === 0;\n\n              if (shouldSetValue) {\n                this.dateField.setSegment(this.segment.type, segmentValue);\n              }\n\n              if (\n                Number(numberValue + '0') > this.segment.maxValue ||\n                newValue.length >= String(this.segment.maxValue).length\n              ) {\n                this.enteredKeys = '';\n                if (shouldSetValue) {\n                  this.dateField.focusNextSegment();\n                }\n              } else {\n                this.enteredKeys = newValue;\n              }\n            }\n          }\n        }\n    }\n  }\n\n  @HostListener('input', ['$event'])\n  private onInput(e: InputEvent) {\n    if (e.inputType === 'insertCompositionText') {\n      this.elementRef.nativeElement.textContent = this.compositionTextContent;\n    }\n  }\n\n  ngOnDestroy() {\n    document.removeEventListener('selectionchange', this.onSelectionChange);\n  }\n}\n","export const EDITABLE_SEGMENT_TYPES = ['year', 'month', 'day'] as const;\n\nexport type EditableSegmentType = (typeof EDITABLE_SEGMENT_TYPES)[number];\n\nexport interface DateSegment {\n  type: EditableSegmentType;\n  isPlaceholder: boolean;\n  placeholder: string;\n  text: string;\n  value: number | null;\n  minValue: number;\n  maxValue: number;\n}\n\nexport interface LiteralSegment {\n  type: 'literal';\n  text: string;\n}\n\nexport type Segment = DateSegment | LiteralSegment;\n\nexport const isEditableSegment = (\n  segmentType: Intl.DateTimeFormatPartTypes\n): segmentType is EditableSegmentType =>\n  (EDITABLE_SEGMENT_TYPES as readonly string[]).includes(segmentType);\n","/**\n * This file was copied from @react-stately/datepicker\n *\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/datepicker/src/placeholders.ts\n */\n\nimport { LocalizedStringDictionary } from '@internationalized/string';\n\n// These placeholders are based on the strings used by the <input type=\"date\">\n// implementations in Chrome and Firefox. Additional languages are supported\n// here than React Spectrum's typical translations.\nconst placeholders = new LocalizedStringDictionary(\n  {\n    ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n    af: { year: 'jjjj', month: 'mm', day: 'dd' },\n    am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n    an: { year: 'aaaa', month: 'mm', day: 'dd' },\n    ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n    ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n    az: { year: 'iiii', month: 'aa', day: 'gg' },\n    be: { year: 'гггг', month: 'мм', day: 'дд' },\n    bg: { year: 'гггг', month: 'мм', day: 'дд' },\n    bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n    br: { year: 'bbbb', month: 'mm', day: 'dd' },\n    bs: { year: 'gggg', month: 'mm', day: 'dd' },\n    ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n    cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n    ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n    cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n    cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n    da: { year: 'åååå', month: 'mm', day: 'dd' },\n    de: { year: 'jjjj', month: 'mm', day: 'tt' },\n    dsb: { year: 'llll', month: 'mm', day: 'źź' },\n    el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n    en: { year: 'yyyy', month: 'mm', day: 'dd' },\n    eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n    es: { year: 'aaaa', month: 'mm', day: 'dd' },\n    et: { year: 'aaaa', month: 'kk', day: 'pp' },\n    eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n    fa: { year: 'سال', month: 'ماه', day: 'روز' },\n    ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n    fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n    fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n    fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n    ga: { year: 'bbbb', month: 'mm', day: 'll' },\n    gd: { year: 'bbbb', month: 'mm', day: 'll' },\n    gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n    he: { year: 'שנה', month: 'חודש', day: 'יום' },\n    hr: { year: 'gggg', month: 'mm', day: 'dd' },\n    hsb: { year: 'llll', month: 'mm', day: 'dd' },\n    hu: { year: 'éééé', month: 'hh', day: 'nn' },\n    ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n    id: { year: 'tttt', month: 'bb', day: 'hh' },\n    it: { year: 'aaaa', month: 'mm', day: 'gg' },\n    ja: { year: ' 年 ', month: '月', day: '日' },\n    ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n    kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n    kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n    ko: { year: '연도', month: '월', day: '일' },\n    lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n    lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n    lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n    lv: { year: 'gggg', month: 'mm', day: 'dd' },\n    meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n    ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n    ms: { year: 'tttt', month: 'mm', day: 'hh' },\n    nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n    nn: { year: 'åååå', month: 'mm', day: 'dd' },\n    no: { year: 'åååå', month: 'mm', day: 'dd' },\n    oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n    pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n    pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n    rm: { year: 'oooo', month: 'mm', day: 'dd' },\n    ro: { year: 'aaaa', month: 'll', day: 'zz' },\n    ru: { year: 'гггг', month: 'мм', day: 'дд' },\n    sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n    scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n    sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n    sl: { year: 'llll', month: 'mm', day: 'dd' },\n    sr: { year: 'гггг', month: 'мм', day: 'дд' },\n    sv: { year: 'åååå', month: 'mm', day: 'dd' },\n    szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n    tg: { year: 'сссс', month: 'мм', day: 'рр' },\n    th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n    tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n    uk: { year: 'рррр', month: 'мм', day: 'дд' },\n    'zh-CN': { year: '年', month: '月', day: '日' },\n    'zh-TW': { year: '年', month: '月', day: '日' },\n  },\n  'en'\n);\n\nexport function getPlaceholder(field: string, value: string, locale: string) {\n  // Use the actual placeholder value for the era and day period fields.\n  if (field === 'era' || field === 'dayPeriod') {\n    return value;\n  }\n\n  if (field === 'year' || field === 'month' || field === 'day') {\n    return placeholders.getStringForLocale(field, locale);\n  }\n\n  // For time fields (e.g. hour, minute, etc.), use two dashes as the placeholder.\n  return '––';\n}\n","import {\n  DateValue,\n  getMinimumDayInMonth,\n  getMinimumMonthInYear,\n} from '@internationalized/date';\nimport { EditableSegmentType } from './Segment';\n\nexport function getSegmentLimits(date: DateValue, type: EditableSegmentType) {\n  switch (type) {\n    case 'year':\n      return {\n        value: date.year,\n        minValue: 1,\n        maxValue: date.calendar.getYearsInEra(date),\n      };\n    case 'month':\n      return {\n        value: date.month,\n        minValue: getMinimumMonthInYear(date),\n        maxValue: date.calendar.getMonthsInYear(date),\n      };\n    case 'day':\n      return {\n        value: date.day,\n        minValue: getMinimumDayInMonth(date),\n        maxValue: date.calendar.getDaysInMonth(date),\n      };\n    default:\n      // should not happen\n      return {};\n  }\n}\n","/**\n * Copied from the @react-stately/datepicker utils\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/datepicker/src/utils.ts\n */\n\nexport type FieldOptions = Pick<\n  Intl.DateTimeFormatOptions,\n  'year' | 'month' | 'day' | 'hour' | 'minute' | 'second'\n>;\n\nconst DEFAULT_FIELD_OPTIONS: FieldOptions = {\n  year: 'numeric',\n  month: 'numeric',\n  day: 'numeric',\n};\n\nconst TWO_DIGIT_FIELD_OPTIONS: FieldOptions = {\n  year: 'numeric',\n  month: '2-digit',\n  day: '2-digit',\n};\n\nexport interface FormatterOptions {\n  shouldForceLeadingZeros?: boolean;\n}\n\nexport function getFormatOptions(\n  options: FormatterOptions\n): Intl.DateTimeFormatOptions {\n  const defaultFieldOptions = options.shouldForceLeadingZeros\n    ? TWO_DIGIT_FIELD_OPTIONS\n    : DEFAULT_FIELD_OPTIONS;\n  return defaultFieldOptions;\n}\n","import { Component, Input } from '@angular/core';\nimport { UseComponentStyles } from '@danske/sapphire-angular';\nimport { LiteralSegment } from './utils/Segment';\n\n@Component({\n  selector: 'sp-date-field-segment-literal',\n  template: '{{ segment.text }}',\n  host: {\n    class:\n      'sapphire-date-field__segment sapphire-date-field__segment--separator',\n    'aria-hidden': 'true',\n  },\n  hostDirectives: [UseComponentStyles],\n})\nexport class DateFieldSegmentLiteralComponent {\n  constructor() {}\n\n  @Input()\n  segment!: LiteralSegment;\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n} from '@angular/core';\nimport { FieldComponent, UseComponentStyles } from '@danske/sapphire-angular';\nimport { DateFormatter, DateValue, today } from '@internationalized/date';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { DateFieldSegmentComponent } from './date-field-segment.component';\nimport {\n  Segment,\n  EditableSegmentType,\n  isEditableSegment,\n} from './utils/Segment';\nimport {\n  SAPPHIRE_DATE_FORMAT_LOCALE,\n  SAPPHIRE_DATE_LOCALE,\n} from '../../calendar/src/sapphire-date-locale';\nimport {\n  ControlValueAccessor,\n  NG_VALUE_ACCESSOR,\n  ValidatorFn,\n} from '@angular/forms';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { getPlaceholder } from './utils/placeholders';\nimport { getSegmentLimits } from './utils/getSegmentLimits';\nimport { getFormatOptions } from './utils/getFormatterOptions';\nimport { DATE_FIELD } from './date-field.token';\n\nconst PAGE_STEP = {\n  year: 5,\n  month: 2,\n  day: 7,\n};\n\n/**\n * Sapphire date input field.\n */\n@Component({\n  selector: 'sp-date-field-input',\n  templateUrl: './date-field-input.component.html',\n  host: {\n    class: 'sapphire-date-field__input',\n  },\n  providers: [\n    {\n      provide: DATE_FIELD,\n      useExisting: forwardRef(() => DateFieldInputComponent),\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DateFieldInputComponent),\n      multi: true,\n    },\n  ],\n  hostDirectives: [UseComponentStyles],\n  standalone: false,\n})\nexport class DateFieldInputComponent\n  implements ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy\n{\n  constructor(\n    private elementRef: ElementRef,\n    private focusMonitor: FocusMonitor,\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    @Optional()\n    @Inject(SAPPHIRE_DATE_FORMAT_LOCALE)\n    readonly dateFormatLocaleFromContext: string | null,\n    @Optional() public field?: FieldComponent\n  ) {\n    this.locale = localeFromContext;\n    this.dateFormatLocale = dateFormatLocaleFromContext || localeFromContext;\n\n    const formatOptions = getFormatOptions({\n      shouldForceLeadingZeros: !!this.shouldForceLeadingZeros,\n    });\n    this.dateFormatterByLocale[this.dateFormatLocale] = new DateFormatter(\n      this.dateFormatLocale,\n      formatOptions\n    );\n\n    this.placeholderValue =\n      this.value ?? today(this.dateFormatter.resolvedOptions().timeZone);\n\n    this.displayValue = this.placeholderValue;\n\n    this.validSegments = this.value\n      ? { day: true, month: true, year: true }\n      : { day: false, month: false, year: false };\n\n    this.segments = this.generateSegments();\n  }\n\n  /**\n   * A unique id for the host DOM element.\n   * If none is supplied, it will be auto-generated.\n   */\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  readonly: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  required: BooleanInput = false;\n\n  @HostListener('click')\n  private onClick() {\n    if (!this.focusedSegment) {\n      this.focus();\n    }\n  }\n\n  @Output()\n  focusBefore: EventEmitter<void> = new EventEmitter();\n\n  @Output()\n  focusAfter: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * The placeholder date. This is used as the starting\n   * point when modifying the field by keyboard.\n   *\n   * Defaults to the date value, if provided, otherwise to today's date.\n   */\n  @Input()\n  placeholderValue: DateValue;\n\n  @Input()\n  value: DateValue | null = null;\n\n  @Input()\n  locale!: string;\n\n  /**\n   * Whether to always show leading zeros in the month, and day fields.\n   * By default, this is determined by the user's locale.\n   */\n  @Input()\n  @CoerceBoolean\n  shouldForceLeadingZeros?: BooleanInput = false;\n\n  @Input()\n  segmentAriaLabel?: (segmentType: EditableSegmentType) => string;\n\n  /**\n   * This can be the placeholderValue or the actual value\n   * or neither.\n   * When the date is partially filled, we still\n   * want an actual date to work with, but we don't want to\n   * modify the actual value nor the placeholderValue until\n   * we have a full date from the user.\n   */\n  private displayValue: DateValue;\n\n  private dateFormatLocale: string;\n\n  private dateFormatterByLocale: Record<string, DateFormatter> = {};\n\n  private get dateFormatter(): DateFormatter {\n    if (!this.dateFormatterByLocale[this.dateFormatLocale]) {\n      const formatOptions = getFormatOptions({\n        shouldForceLeadingZeros: !!this.shouldForceLeadingZeros,\n      });\n      this.dateFormatterByLocale[this.dateFormatLocale] = new DateFormatter(\n        this.dateFormatLocale,\n        formatOptions\n      );\n    }\n    return this.dateFormatterByLocale[this.dateFormatLocale];\n  }\n\n  private onChange: ((date: DateValue | null) => void) | undefined;\n\n  private onTouched: (() => void) | undefined;\n\n  @ViewChildren(DateFieldSegmentComponent)\n  private segmentComponents: QueryList<DateFieldSegmentComponent> =\n    new QueryList();\n\n  private validSegments: Record<EditableSegmentType, boolean>;\n\n  private adjustSegment(segmentType: EditableSegmentType, step: number): void {\n    this.validSegments[segmentType] = true;\n\n    this.setDisplayValue(\n      this.displayValue.cycle(segmentType, step, {\n        round: segmentType === 'year',\n      })\n    );\n  }\n\n  private generateSegments(): Segment[] {\n    const date = this.displayValue.toDate(\n      this.dateFormatter.resolvedOptions().timeZone\n    );\n\n    return this.dateFormatter.formatToParts(date).flatMap((segment) => {\n      if (segment.type === 'literal') {\n        return { type: segment.type, text: segment.value };\n      } else if (isEditableSegment(segment.type)) {\n        const isPlaceholder = !this.validSegments[segment.type];\n        const placeholder = getPlaceholder(\n          segment.type,\n          segment.value,\n          this.locale\n        );\n\n        return {\n          type: segment.type,\n          text: isPlaceholder ? placeholder : segment.value,\n          ...getSegmentLimits(this.displayValue, segment.type),\n          isPlaceholder,\n          placeholder,\n        } as Segment;\n      } else {\n        return [];\n      }\n    });\n  }\n\n  setValue({\n    value,\n    updateSegments,\n    emitChange,\n  }: {\n    value: DateValue | null;\n    updateSegments: boolean;\n    emitChange: boolean;\n  }) {\n    this.value = value;\n\n    if (updateSegments) {\n      if (this.value === null) {\n        this.validSegments = { day: false, month: false, year: false };\n        // The display value becomes the last placeholder\n        this.setDisplayValue(this.placeholderValue);\n      } else {\n        this.validSegments = { day: true, month: true, year: true };\n        this.setDisplayValue(this.value);\n      }\n    }\n\n    if (emitChange) {\n      this.onChange?.(this.value);\n    }\n  }\n\n  private setDisplayValue(date: DateValue) {\n    this.displayValue = date;\n\n    /**\n     * If all segments are valid after adjustment,\n     * we set the value of the date field to that.\n     */\n    if (\n      this.value?.compare(this.displayValue) !== 0 &&\n      Object.values(this.validSegments).every(Boolean)\n    ) {\n      this.setValue({\n        value: this.displayValue,\n        updateSegments: true,\n        emitChange: true,\n      });\n    }\n\n    /**\n     * This ugly mutation needs to happen otherwise angular's\n     * change detection won't pick it up.\n     */\n    this.generateSegments().forEach((segment, index) => {\n      Object.assign(this.segments[index], segment);\n    });\n  }\n\n  isPartiallyFilled(): boolean {\n    return Object.values(this.validSegments).some(Boolean);\n  }\n\n  /**\n   * Implements validation to provide in NG_VALIDATORS\n   */\n  validate: ValidatorFn = () => null;\n\n  segments: Segment[];\n\n  focusedSegment?: Segment;\n\n  increment(segmentType: EditableSegmentType): void {\n    this.adjustSegment(segmentType, 1);\n  }\n\n  decrement(segmentType: EditableSegmentType): void {\n    this.adjustSegment(segmentType, -1);\n  }\n\n  incrementPage(segmentType: EditableSegmentType): void {\n    this.adjustSegment(segmentType, PAGE_STEP[segmentType] || 1);\n  }\n\n  decrementPage(segmentType: EditableSegmentType): void {\n    this.adjustSegment(segmentType, -(PAGE_STEP[segmentType] || 1));\n  }\n\n  setSegment(segmentType: EditableSegmentType, value: number): void {\n    this.validSegments[segmentType] = true;\n    this.setDisplayValue(this.displayValue.set({ [segmentType]: value }));\n  }\n\n  clearSegment(segmentType: EditableSegmentType): void {\n    this.validSegments[segmentType] = false;\n\n    this.setDisplayValue(\n      this.displayValue.set({\n        [segmentType]: this.placeholderValue[segmentType],\n      })\n    );\n\n    this.setValue({ value: null, updateSegments: false, emitChange: true });\n  }\n\n  clear() {\n    this.setValue({ value: null, updateSegments: true, emitChange: true });\n  }\n\n  /**\n   * Implementing ControlValueAccessor interface below\n   */\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.setValue({ value, updateSegments: true, emitChange: false });\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onTouched = fn;\n  }\n\n  focus(end?: boolean) {\n    if (end) {\n      this.segmentComponents.last.focus();\n    } else {\n      this.segmentComponents.first.focus();\n    }\n  }\n\n  onSegmentFocus(segment: Segment) {\n    this.focusedSegment = segment;\n  }\n\n  /**\n   * Find the current focused segment and focus the next or previous segment.\n   */\n  focusSegment(offset: 1 | -1) {\n    if (!this.focusedSegment) {\n      return;\n    }\n\n    const currentFocusedIndex = this.segmentComponents\n      .toArray()\n      .findIndex(\n        (segmentComponent) => segmentComponent.segment === this.focusedSegment\n      );\n\n    const nextFocusIndex = currentFocusedIndex + offset;\n\n    if (nextFocusIndex < 0) {\n      this.focusBefore.emit();\n      return;\n    }\n\n    if (nextFocusIndex >= this.segmentComponents.length) {\n      this.focusAfter.emit();\n      return;\n    }\n\n    this.segmentComponents.toArray()[nextFocusIndex].focus();\n  }\n\n  focusNextSegment() {\n    this.focusSegment(1);\n  }\n\n  focusPreviousSegment() {\n    this.focusSegment(-1);\n  }\n\n  ngAfterViewInit() {\n    // Monitor the field input to know when segments blurred.\n    this.focusMonitor\n      .monitor(this.elementRef?.nativeElement, true)\n      .subscribe((origin) => {\n        if (origin === null) {\n          this.focusedSegment = undefined;\n        }\n      });\n\n    if (this.value) {\n      this.setValue({\n        value: this.value,\n        updateSegments: true,\n        emitChange: false,\n      });\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.locale || changes.shouldForceLeadingZeros) {\n      /**\n       * This ugly mutation needs to happen otherwise angular's\n       * change detection won't pick it up.\n       */\n      if (!this.dateFormatLocaleFromContext) {\n        this.dateFormatLocale = changes.locale?.currentValue || this.locale;\n      }\n\n      // Clear the cached formatter when shouldForceLeadingZeros changes\n      if (changes.shouldForceLeadingZeros) {\n        delete this.dateFormatterByLocale[this.dateFormatLocale];\n      }\n\n      this.generateSegments().forEach((segment, index) => {\n        Object.assign(this.segments[index], segment);\n      });\n    }\n  }\n\n  /**\n   * Implementing OnDestroy interface below\n   */\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef?.nativeElement);\n  }\n}\n","<ng-container *ngFor=\"let segment of segments\">\n  <sp-date-field-segment\n    *ngIf=\"segment.type !== 'literal'\"\n    [segment]=\"segment\"\n    (focus)=\"onSegmentFocus(segment)\"\n    [additionalAriaLabel]=\"segmentAriaLabel?.(segment.type)\"\n  ></sp-date-field-segment>\n  <sp-date-field-segment-literal\n    *ngIf=\"segment.type === 'literal'\"\n    [segment]=\"segment\"\n  ></sp-date-field-segment-literal>\n</ng-container>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {\n  UseComponentStylesOnHost,\n  FieldControl,\n  FieldComponent,\n  PopoverTriggerDirective,\n  IconRegistry,\n} from '@danske/sapphire-angular';\nimport { DateValue } from '@internationalized/date';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport {\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { MessageDictionary } from '@internationalized/message';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport {\n  createDateRangeValidator,\n  createCustomDateValidator,\n} from './validators';\nimport { DateFieldInputComponent } from './date-field-input.component';\nimport translations from '../i18n';\nimport {\n  SAPPHIRE_DATE_LOCALE,\n  PredefinedDate,\n} from '../../calendar/public_api';\nimport { iconCalendar, iconCloseOutline } from '@danske/sapphire-icons/js';\n\n/**\n * Sapphire date input field.\n */\n@Component({\n  selector: 'sp-date-field',\n  templateUrl: './date-field.component.html',\n  styleUrls: ['./date-field.component.scss'],\n  host: {\n    class: 'sapphire-date-field',\n    '[class.is-disabled]': 'isDisabled()',\n    '[class.sapphire-date-field--error]': 'field?.hasError(this)',\n    '[class.sapphire-date-field--md]': 'field?.size === \"md\"',\n    '[class.sapphire-date-field--sm]': 'field?.size === \"sm\"',\n    '[attr.aria-labelledby]': 'ariaLabelledBy',\n    '[class.sapphire-date-field--no-calendar]': 'noCalendarButton',\n    '[class.sapphire-date-field--no-clear-button]': 'noClearButton',\n    role: 'group',\n  },\n  providers: [\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => DateFieldComponent),\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DateFieldComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DateFieldComponent),\n      multi: true,\n    },\n    { provide: MessageDictionary, useValue: translations },\n  ],\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: false,\n})\nexport class DateFieldComponent<P extends string = string>\n  implements\n    FieldControl,\n    ControlValueAccessor,\n    AfterViewInit,\n    OnChanges,\n    OnDestroy\n{\n  constructor(\n    private elementRef: ElementRef,\n    private focusMonitor: FocusMonitor,\n    iconRegistry: IconRegistry,\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    @Optional() public field?: FieldComponent\n  ) {\n    this.locale = localeFromContext;\n    iconRegistry.registerIcons([iconCalendar, iconCloseOutline]);\n  }\n\n  /**\n   * A unique id for the host DOM element.\n   * If none is supplied, it will be auto-generated.\n   */\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  readonly: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  required: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  showWeekNumbersInCalendar: BooleanInput = false;\n\n  @Input()\n  value: DateValue | null = null;\n\n  /**\n   * A set of predefined dates that the user can more conveniently select.\n   */\n  @Input()\n  predefinedDates?: Record<P, PredefinedDate>;\n\n  /**\n   * The placeholder date. This is used as the starting\n   * point when modifying the field by keyboard.\n   *\n   * Defaults to the date value, if provided, otherwise to today's date.\n   */\n  @Input()\n  placeholderValue?: DateValue;\n\n  /**\n   * The minimum allowed date that a user may select.\n   */\n  @Input()\n  minValue?: DateValue;\n\n  /**\n   * The maximum allowed date that a user may select.\n   */\n  @Input()\n  maxValue?: DateValue;\n\n  /**\n   * Callback that is called for each date of the calendar. If it\n   * returns true, then the date is unavailable.\n   */\n  @Input()\n  isDateUnavailable?: (date: DateValue) => boolean;\n\n  @Input()\n  @CoerceBoolean\n  noClearButton: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  noCalendarButton: BooleanInput = false;\n\n  @Input()\n  locale: string;\n\n  /**\n   * Whether to always show leading zeros in the month, and dayfields.\n   * By default, this is determined by the user's locale.\n   */\n  @Input()\n  @CoerceBoolean\n  shouldForceLeadingZeros?: BooleanInput = false;\n\n  @AutoId()\n  calendarButtonId!: string;\n\n  onChange: ((date: DateValue | null) => void) | undefined;\n\n  private onTouched: (() => void) | undefined;\n\n  @ViewChild(PopoverTriggerDirective)\n  private popoverTrigger?: PopoverTriggerDirective;\n\n  @ViewChild(DateFieldInputComponent)\n  private dateFieldInput?: DateFieldInputComponent;\n\n  onCalendarSelectDate() {\n    this.popoverTrigger?.close();\n    this.onChange?.(this.value);\n  }\n\n  isPartiallyFilled(): boolean {\n    return !!this.dateFieldInput?.isPartiallyFilled();\n  }\n\n  /**\n   * Implements validation to provide in NG_VALIDATORS\n   */\n  validate: ValidatorFn = () => null;\n\n  clear() {\n    this.dateFieldInput?.clear();\n  }\n\n  /**\n   * Implementing ControlValueAccessor interface below\n   */\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.value = value;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onTouched = fn;\n  }\n\n  /**\n   * Implementing FieldControl interface below\n   */\n\n  focus() {\n    this.dateFieldInput?.focus();\n  }\n\n  getId(): string | undefined {\n    return this.id;\n  }\n\n  isDisabled(): boolean {\n    return coerceBooleanProperty(this.disabled);\n  }\n\n  ariaLabelledBy: string | undefined;\n\n  readonly hasDefaultWidth = true;\n\n  ngAfterViewInit() {\n    // Monitor focus in all children to know when the whole field blurred.\n    this.focusMonitor\n      .monitor(this.elementRef?.nativeElement, true)\n      .subscribe((origin) => {\n        if (origin === null) {\n          this.onTouched?.();\n        }\n      });\n  }\n\n  ngDoCheck(): void {\n    /**\n     * Workaround for ExpressionChangedAfterItHasBeenCheckedError.\n     */\n    this.ariaLabelledBy = this.field?.label?.id;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.minValue || changes.maxValue || changes.isDateUnavailable) {\n      this.validate =\n        Validators.compose([\n          createDateRangeValidator({\n            minValue: this.minValue,\n            maxValue: this.maxValue,\n          }),\n          createCustomDateValidator({\n            isDateUnavailable: this.isDateUnavailable,\n          }),\n        ]) ?? (() => null);\n    }\n  }\n\n  /**\n   * Implementing OnDestroy interface below\n   */\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef?.nativeElement);\n  }\n}\n","<button\n  type=\"button\"\n  *ngIf=\"!noCalendarButton\"\n  class=\"sapphire-date-field__button\"\n  spPopoverPlacement=\"top start\"\n  [spPopoverTriggerFor]=\"calendar\"\n  [disabled]=\"disabled\"\n  [id]=\"calendarButtonId\"\n  [attr.aria-label]=\"'calendar' | t\"\n  [attr.aria-labelledby]=\"calendarButtonId + ' ' + field?.label?.id\"\n>\n  <sp-icon name=\"calendar\" class=\"sapphire-date-field__icon\"></sp-icon>\n</button>\n<sp-date-field-input\n  [(ngModel)]=\"value\"\n  [ngModelOptions]=\"{ standalone: true }\"\n  (ngModelChange)=\"onChange?.($event)\"\n  [locale]=\"locale\"\n  [readonly]=\"readonly\"\n  [disabled]=\"!!disabled\"\n  [shouldForceLeadingZeros]=\"shouldForceLeadingZeros\"\n></sp-date-field-input>\n<button\n  type=\"button\"\n  class=\"sapphire-date-field__button sapphire-date-field__button--clear\"\n  *ngIf=\"!noClearButton && !disabled && !readonly && isPartiallyFilled()\"\n  (click)=\"clear()\"\n  [attr.aria-label]=\"'clear' | t\"\n>\n  <sp-icon name=\"closeOutline\" class=\"sapphire-date-field__icon\"></sp-icon>\n</button>\n<ng-template #calendar>\n  <sp-popover trapFocus noMaxWidth>\n    <sp-calendar\n      autoFocus\n      name=\"calendar\"\n      [size]=\"field?.size || 'lg'\"\n      showFixedWeeks\n      [locale]=\"locale\"\n      [readonly]=\"readonly\"\n      [disabled]=\"!!disabled\"\n      [(ngModel)]=\"value\"\n      [ngModelOptions]=\"{ standalone: true }\"\n      [showWeekNumbers]=\"showWeekNumbersInCalendar\"\n      [focusedDate]=\"placeholderValue\"\n      (ngModelChange)=\"onCalendarSelectDate()\"\n      [minValue]=\"minValue\"\n      [maxValue]=\"maxValue\"\n      [isDateUnavailable]=\"isDateUnavailable\"\n      [predefinedDates]=\"predefinedDates\"\n    ></sp-calendar>\n  </sp-popover>\n</ng-template>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport {\n  UseComponentStylesOnHost,\n  FieldControl,\n  FieldComponent,\n  PopoverTriggerDirective,\n  IconRegistry,\n} from '@danske/sapphire-angular';\nimport { DateValue } from '@internationalized/date';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport {\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { MessageDictionary } from '@internationalized/message';\nimport {\n  createDateRangeValidator,\n  createCustomDateValidator,\n  createDateRangeSanityValidator,\n} from './validators';\nimport { DateFieldInputComponent } from './date-field-input.component';\nimport {\n  PredefinedDateRange,\n  RangeValue,\n  SAPPHIRE_DATE_LOCALE,\n} from '../../calendar/public_api';\nimport { TranslateService } from '../../common/translate.service';\nimport translations from '../i18n';\nimport {\n  iconCalendar,\n  iconCloseOutline,\n  iconSubtract,\n} from '@danske/sapphire-icons/js';\n\n/**\n * Sapphire date input field.\n */\n@Component({\n  selector: 'sp-date-range-field',\n  templateUrl: './date-range-field.component.html',\n  styleUrls: ['./date-field.component.scss'],\n  host: {\n    class: 'sapphire-date-field sapphire-date-field--range',\n    '[class.is-disabled]': 'isDisabled()',\n    '[class.sapphire-date-field--error]': 'field?.hasError()',\n    '[class.sapphire-date-field--no-calendar]': 'noCalendarButton',\n    '[class.sapphire-date-field--no-clear-button]': 'noClearButton',\n    '[class.sapphire-date-field--md]': 'field?.size === \"md\"',\n    '[class.sapphire-date-field--sm]': 'field?.size === \"sm\"',\n    '[attr.aria-labelledby]': 'field?.label?.id',\n    role: 'group',\n  },\n  providers: [\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => DateRangeFieldComponent),\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DateRangeFieldComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DateRangeFieldComponent),\n      multi: true,\n    },\n    { provide: MessageDictionary, useValue: translations },\n  ],\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: false,\n})\nexport class DateRangeFieldComponent<P extends string = string>\n  implements\n    FieldControl,\n    ControlValueAccessor,\n    AfterViewInit,\n    OnChanges,\n    OnDestroy\n{\n  constructor(\n    private elementRef: ElementRef,\n    private focusMonitor: FocusMonitor,\n    private translateService: TranslateService,\n    iconRegistry: IconRegistry,\n    @Inject(SAPPHIRE_DATE_LOCALE) readonly localeFromContext: string,\n    @Optional() public field?: FieldComponent\n  ) {\n    this.locale = localeFromContext;\n    iconRegistry.registerIcons([iconCalendar, iconSubtract, iconCloseOutline]);\n  }\n\n  /**\n   * A unique id for the host DOM element.\n   * If none is supplied, it will be auto-generated.\n   */\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  readonly: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  required: BooleanInput = false;\n\n  /**\n   * Whether to show the week numbers in the calendar.\n   */\n  @Input()\n  @CoerceBoolean\n  showWeekNumbersInCalendar: BooleanInput = false;\n\n  /**\n   * Whether to show two months in the calendar.\n   */\n  @Input()\n  @CoerceBoolean\n  showTwoMonthsInCalendar: BooleanInput = false;\n\n  /**\n   * Whether range is allowed to span unavailable dates.\n   */\n  @Input()\n  @CoerceBoolean\n  allowUnavailableDatesWithinRange: BooleanInput = false;\n\n  @Input()\n  value: RangeValue<DateValue> | null = null;\n\n  /**\n   * A set of predefined date ranges the user can more conveniently select.\n   */\n  @Input()\n  predefinedRanges?: Record<P, PredefinedDateRange>;\n\n  /**\n   * The minimum allowed date that a user may select.\n   */\n  @Input()\n  minValue?: DateValue;\n\n  /**\n   * The maximum allowed date that a user may select.\n   */\n  @Input()\n  maxValue?: DateValue;\n\n  /**\n   * Callback that is called for each date of the calendar. If it\n   * returns true, then the date is unavailable.\n   */\n  @Input()\n  isDateUnavailable?: (date: DateValue) => boolean;\n\n  @Input()\n  @CoerceBoolean\n  noClearButton: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  noCalendarButton: BooleanInput = false;\n\n  @Input()\n  locale: string;\n\n  /**\n   * Whether to always show leading zeros in the month, and day fields.\n   * By default, this is determined by the user's locale.\n   */\n  @Input()\n  @CoerceBoolean\n  shouldForceLeadingZeros?: BooleanInput = false;\n\n  @AutoId()\n  calendarButtonId!: string;\n\n  onChange: ((date: RangeValue<DateValue> | null) => void) | undefined;\n\n  private onTouched: (() => void) | undefined;\n\n  @ViewChild(PopoverTriggerDirective)\n  private popoverTrigger?: PopoverTriggerDirective;\n\n  @ViewChildren(DateFieldInputComponent)\n  _dateFieldInputs: QueryList<DateFieldInputComponent> = new QueryList();\n\n  startDateAriaLabel = () => {\n    return this.translateService.translate('start-date', translations);\n  };\n\n  endDateAriaLabel = () => {\n    return this.translateService.translate('end-date', translations);\n  };\n\n  onCalendarSelectDate() {\n    this.popoverTrigger?.close();\n    this.setValue({\n      value: this.value,\n      emitChange: true,\n    });\n  }\n\n  isPartiallyFilled(): boolean {\n    return (\n      this._dateFieldInputs.first?.isPartiallyFilled() ||\n      this._dateFieldInputs.last?.isPartiallyFilled()\n    );\n  }\n\n  displayValue: RangeValue<DateValue> | null = null;\n\n  setValue({\n    value,\n    emitChange,\n  }: {\n    value: Partial<RangeValue<DateValue>> | null;\n    emitChange: boolean;\n  }) {\n    this.displayValue =\n      value === null\n        ? null\n        : ({ ...this.displayValue, ...value } as RangeValue<DateValue>);\n\n    if (this.displayValue?.start && this.displayValue?.end) {\n      this.value = this.displayValue;\n      if (emitChange) {\n        this.onChange?.(this.value);\n      }\n    } else if (this.value !== null) {\n      this.value = null;\n      if (emitChange) {\n        this.onChange?.(this.value);\n      }\n    }\n  }\n\n  /**\n   * Implements validation to provide in NG_VALIDATORS\n   */\n  validate: ValidatorFn = () => null;\n\n  clear() {\n    this._dateFieldInputs.first?.clear();\n    this._dateFieldInputs.last?.clear();\n  }\n\n  /**\n   * Implementing ControlValueAccessor interface below\n   */\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.setValue({\n        value: value || null,\n        emitChange: false,\n      });\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // this weak typing is what angular gives us\n    this.onTouched = fn;\n  }\n\n  /**\n   * Implementing FieldControl interface below\n   */\n\n  focus() {\n    this._dateFieldInputs.first?.focus();\n  }\n\n  getId(): string | undefined {\n    return this.id;\n  }\n\n  isDisabled(): boolean {\n    return coerceBooleanProperty(this.disabled);\n  }\n\n  ngAfterViewInit() {\n    // Monitor focus in all children to know when the whole field blurred.\n    this.focusMonitor\n      .monitor(this.elementRef?.nativeElement, true)\n      .subscribe((origin) => {\n        if (origin === null) {\n          this.onTouched?.();\n        }\n      });\n\n    if (this.value) {\n      this.setValue({\n        value: this.value,\n        emitChange: false,\n      });\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.minValue || changes.maxValue || changes.isDateUnavailable) {\n      this.validate =\n        Validators.compose([\n          createDateRangeValidator({\n            minValue: this.minValue,\n            maxValue: this.maxValue,\n          }),\n          createCustomDateValidator({\n            isDateUnavailable: this.isDateUnavailable,\n          }),\n          createDateRangeSanityValidator(),\n        ]) ?? createDateRangeSanityValidator();\n    }\n  }\n\n  /**\n   * Implementing OnDestroy interface below\n   */\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef?.nativeElement);\n  }\n}\n","<button\n  type=\"button\"\n  class=\"sapphire-date-field__button\"\n  *ngIf=\"!noCalendarButton\"\n  spPopoverPlacement=\"top start\"\n  [spPopoverTriggerFor]=\"calendar\"\n  [disabled]=\"disabled\"\n  [id]=\"calendarButtonId\"\n  [attr.aria-label]=\"'calendar' | t\"\n  [attr.aria-labelledby]=\"calendarButtonId + ' ' + field?.label?.id\"\n>\n  <sp-icon name=\"calendar\" class=\"sapphire-date-field__icon\"></sp-icon>\n</button>\n<div class=\"sapphire-date-field__input-group\">\n  <sp-date-field-input\n    [ngModel]=\"displayValue?.start\"\n    (ngModelChange)=\"\n      setValue({\n        value: { start: $event },\n        emitChange: true\n      })\n    \"\n    [ngModelOptions]=\"{ standalone: true }\"\n    [readonly]=\"readonly\"\n    [disabled]=\"!!disabled\"\n    [locale]=\"locale\"\n    [segmentAriaLabel]=\"startDateAriaLabel\"\n    [shouldForceLeadingZeros]=\"shouldForceLeadingZeros\"\n    (focusAfter)=\"_dateFieldInputs?.last?.focus()\"\n  ></sp-date-field-input>\n  <span class=\"sapphire-date-field__range-separator\"></span>\n  <sp-date-field-input\n    [ngModel]=\"displayValue?.end\"\n    (ngModelChange)=\"\n      setValue({\n        value: { end: $event },\n        emitChange: true\n      })\n    \"\n    [ngModelOptions]=\"{ standalone: true }\"\n    [readonly]=\"readonly\"\n    [disabled]=\"!!disabled\"\n    [locale]=\"locale\"\n    [shouldForceLeadingZeros]=\"shouldForceLeadingZeros\"\n    [segmentAriaLabel]=\"endDateAriaLabel\"\n    (focusBefore)=\"_dateFieldInputs?.first?.focus(true)\"\n  ></sp-date-field-input>\n</div>\n<button\n  type=\"button\"\n  class=\"sapphire-date-field__button sapphire-date-field__button--clear\"\n  *ngIf=\"!noClearButton && !disabled && !readonly && isPartiallyFilled()\"\n  (click)=\"clear()\"\n  [attr.aria-label]=\"'clear' | t\"\n>\n  <sp-icon name=\"closeOutline\" class=\"sapphire-date-field__icon\"></sp-icon>\n</button>\n<ng-template #calendar>\n  <sp-popover trapFocus noMaxWidth>\n    <sp-range-calendar\n      [attr.aria-label]=\"'calendar' | t\"\n      autoFocus\n      name=\"calendar\"\n      [size]=\"field?.size || 'lg'\"\n      showFixedWeeks\n      [locale]=\"locale\"\n      [readonly]=\"readonly\"\n      [disabled]=\"!!disabled\"\n      [(ngModel)]=\"value\"\n      [ngModelOptions]=\"{ standalone: true }\"\n      [showWeekNumbers]=\"showWeekNumbersInCalendar\"\n      [showTwoMonths]=\"showTwoMonthsInCalendar\"\n      (ngModelChange)=\"onCalendarSelectDate()\"\n      [minValue]=\"minValue\"\n      [maxValue]=\"maxValue\"\n      [isDateUnavailable]=\"isDateUnavailable\"\n      [allowUnavailableDatesWithinRange]=\"allowUnavailableDatesWithinRange\"\n      [predefinedRanges]=\"predefinedRanges\"\n    ></sp-range-calendar>\n  </sp-popover>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n  SapphireIconModule,\n  SapphireFieldModule,\n  LabelComponent,\n  SapphirePopoverModule,\n} from '@danske/sapphire-angular';\nimport { DateFieldComponent } from './date-field.component';\nimport { DateFieldSegmentComponent } from './date-field-segment.component';\nimport { DateFieldSegmentLiteralComponent } from './date-field-segment-literal.component';\nimport { SapphireCalendarModule } from '../../calendar/public_api';\nimport { DateFieldInputComponent } from './date-field-input.component';\nimport { DateRangeFieldComponent } from './date-range-field.component';\nimport { TranslatePipe } from '../../common/translate.pipe';\n\n@NgModule({\n  declarations: [\n    DateFieldComponent,\n    DateRangeFieldComponent,\n    DateFieldInputComponent,\n    DateFieldSegmentComponent,\n    DateFieldSegmentLiteralComponent,\n  ],\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    SapphireIconModule,\n    FormsModule,\n    LabelComponent,\n    SapphireCalendarModule,\n    SapphireFieldModule,\n    SapphirePopoverModule,\n  ],\n  exports: [DateFieldComponent, DateRangeFieldComponent],\n})\nexport class SapphireDateFieldModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/date-field.component';\nexport * from './src/date-range-field.component';\nexport * from './src/date-field.module';\nexport * from './src/validators';\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { IconRegistry, PopoverTriggerDirective } from '@danske/sapphire-angular';\nimport { iconChevronDown, iconChevronUp } from '@danske/sapphire-icons/js';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\n/**\n * A button with a dropdown, used for filtering UI.\n */\n/**\n * Combines a ToggleButton and Popover to provide a dropdown for filtering UI.\n */\n@Component({\n  selector: 'sp-filter-dropdown',\n  templateUrl: './filter-dropdown.component.html',\n  styleUrls: ['./filter-dropdown.component.scss'],\n  standalone: false,\n})\nexport class FilterDropdownComponent {\n  /**\n   * \"Filter by\" label, shown inside the trigger button.\n   */\n  @Input()\n  label: string = '';\n\n  /**\n   * Filter value, shown inside the trigger button. `null`,\n   * `undefined` and empty string are considered as unset value.\n   */\n  @Input()\n  value: string = '';\n\n  @Input()\n  @CoerceBoolean\n  noMaxWidth: BooleanInput;\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  /**\n   * Whether to show the 'Apply' button.\n   */\n  @Input()\n  get applyButton(): boolean {\n    return this._applyButton;\n  }\n  set applyButton(value: BooleanInput) {\n    this._applyButton = coerceBooleanProperty(value);\n  }\n  private _applyButton = false;\n\n  /**\n   * Whether the 'Apply' button is disabled.\n   */\n  @Input()\n  @CoerceBoolean\n  applyDisabled: BooleanInput;\n\n  /**\n   * Whether the 'Clear' button is disabled.\n   */\n  @Input()\n  get clearDisabled(): boolean | undefined {\n    return this._clearDisabled;\n  }\n  set clearDisabled(value: BooleanInput) {\n    this._clearDisabled =\n      value != null ? coerceBooleanProperty(value) : undefined;\n  }\n  private _clearDisabled: boolean | undefined = undefined;\n\n  /**\n   * Whether the 'Clear' button is hidden.\n   */\n  @Input()\n  @CoerceBoolean\n  hideClearButton?: BooleanInput;\n\n  /**\n   * The label of the 'Apply' button.\n   */\n  @Input()\n  applyButtonLabel = 'Apply';\n\n  /**\n   * The label of the 'Clear' button.\n   */\n  @Input()\n  clearButtonLabel = 'Clear';\n\n  /**\n   * Emitted when:\n   * - `Enter` is pressed on form fields rendered inside the popover.\n   * - 'Apply' button is pressed (if `hasApplyButton` is true)\n   */\n  @Output()\n  applied: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * Emitted when the popover is closed.\n   */\n  @Output()\n  closed: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * Emitted when 'Clear' button is pressed.\n   */\n  @Output()\n  cleared: EventEmitter<void> = new EventEmitter();\n\n  @ViewChild(PopoverTriggerDirective)\n  trigger: PopoverTriggerDirective | null = null;\n\n  constructor(iconRegistry: IconRegistry) {\n    iconRegistry.registerIcons([iconChevronUp, iconChevronDown]);\n  }\n\n  apply(event?: SubmitEvent) {\n    event?.preventDefault();\n    this.applied.emit();\n    this.trigger?.close();\n  }\n\n  clear() {\n    this.trigger?.close();\n    this.cleared.emit();\n  }\n}\n","<button\n  sp-toggle-button\n  [selected]=\"!!value\"\n  [disabled]=\"disabled\"\n  [spPopoverTriggerFor]=\"popover\"\n  (spPopoverTriggerClosed)=\"closed.emit($event)\"\n  iconAlign=\"right\"\n  spPopoverPlacement=\"bottom start\"\n>\n  {{ label }}<ng-container *ngIf=\"value\">: {{ value }}</ng-container>\n  <sp-icon\n    spButtonIcon\n    [name]=\"trigger?.isOpen() ? 'chevronUp' : 'chevronDown'\"\n  ></sp-icon>\n</button>\n<ng-template #popover>\n  <sp-popover [noMaxWidth]=\"noMaxWidth\" noPadding trapFocus>\n    <form (submit)=\"apply($event)\" class=\"sapphire-filter-dropdown\">\n      <div class=\"sapphire-filter-dropdown__body\">\n        <ng-content></ng-content>\n      </div>\n      <div class=\"sapphire-filter-dropdown__footer\">\n        <sp-button-group align=\"right\">\n          <button\n            *ngIf=\"!hideClearButton\"\n            sp-button\n            variant=\"text\"\n            [disabled]=\"clearDisabled ?? !value\"\n            (click)=\"clear()\"\n          >\n            {{ clearButtonLabel }}\n          </button>\n          <button\n            sp-button\n            type=\"submit\"\n            [disabled]=\"applyDisabled\"\n            [tabindex]=\"!applyButton ? -1 : null\"\n            [class.cdk-visually-hidden]=\"!applyButton\"\n          >\n            {{ applyButtonLabel }}\n          </button>\n        </sp-button-group>\n      </div>\n    </form>\n  </sp-popover>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  SapphireButtonModule,\n  SapphireIconModule,\n  SapphirePopoverModule,\n} from '@danske/sapphire-angular';\n\nimport { FilterDropdownComponent } from './filter-dropdown.component';\n\n@NgModule({\n  declarations: [FilterDropdownComponent],\n  imports: [\n    CommonModule,\n    SapphireButtonModule,\n    SapphirePopoverModule,\n    SapphireIconModule,\n    SapphireButtonModule,\n  ],\n  exports: [FilterDropdownComponent],\n})\nexport class SapphireFilteringModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/filter-dropdown.component';\nexport * from './src/filtering.module';\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  Component,\n  DoCheck,\n  ElementRef,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { IconRegistry } from '@danske/sapphire-angular';\n\ntype FlagSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * To render a flag icon you must register it with the `IconRegistry` service.\n */\n@Component({\n  selector: 'sp-flag',\n  template: '',\n  styleUrls: ['./flag.component.scss'],\n  // eslint-disable-next-line no-view-encapsulation-none/no-view-encapsulation-none -- special case\n  encapsulation: ViewEncapsulation.None,\n})\nexport class FlagComponent implements DoCheck {\n  private flagClass?: FlagSize;\n  @Input()\n  set name(value: string | undefined) {\n    this.elementRef.nativeElement.innerHTML = value\n      ? this.iconRegistry.getSvg('flag' + toTitleCase(value)) || ''\n      : '';\n    this.setClasses();\n  }\n\n  @Input()\n  size?: FlagSize = 'md';\n\n  private _rounded?: boolean;\n\n  @Input()\n  set rounded(rounded: BooleanInput) {\n    this._rounded = coerceBooleanProperty(rounded);\n    this.setClasses();\n  }\n\n  get rounded() {\n    return this._rounded;\n  }\n\n  constructor(\n    private elementRef: ElementRef,\n    private iconRegistry: IconRegistry\n  ) {}\n\n  ngDoCheck() {\n    if (this.size !== this.flagClass) {\n      this.setClasses();\n    }\n  }\n\n  private setClasses() {\n    this.flagClass = this.size;\n    const svgElem: SVGSVGElement =\n      this.elementRef.nativeElement.querySelector('svg');\n\n    if (!svgElem) {\n      return;\n    }\n\n    svgElem.setAttribute(\n      'class',\n      `sapphire-flag sapphire-flag--${this.flagClass} ${\n        this.rounded && `sapphire-flag--rounded`\n      }`\n    );\n  }\n}\n\nfunction toTitleCase(str: string | undefined) {\n  return typeof str === 'string'\n    ? str.charAt(0).toUpperCase() + str.slice(1)\n    : '';\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlagComponent } from './flag.component';\n\n@NgModule({\n  declarations: [FlagComponent],\n  imports: [CommonModule],\n  exports: [FlagComponent],\n})\nexport class SapphireFlagModule {}\n","import { Component, forwardRef, Optional } from '@angular/core';\nimport { FieldComponent, FieldControl } from '@danske/sapphire-angular';\n\n/**\n * A LabeledValue displays a non-editable value with a label which uses the field component\n * for building the UI, useful for building readonly fields.\n */\n@Component({\n  selector: 'sp-labeled-value',\n  template: ` <ng-content></ng-content> `,\n  providers: [\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => LabeledValueComponent),\n    },\n  ],\n  host: {\n    '[attr.aria-labelledby]': 'ariaLabelledBy',\n  },\n  standalone: false,\n})\nexport class LabeledValueComponent implements FieldControl {\n  ariaLabelledBy: string | undefined;\n  constructor(@Optional() private field?: FieldComponent) {}\n\n  ngAfterViewInit(): void {\n    /**\n     * Workaround for ExpressionChangedAfterItHasBeenCheckedError.\n     * `ngDoCheck` solution didn't work here, so we have to do it the dirty way.\n     */\n    new Promise((resolve) => setTimeout(resolve, 0)).then(() => {\n      this.ariaLabelledBy = this.field?.label?.id;\n    });\n  }\n\n  isDisabled(): boolean {\n    return false;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SapphireFieldModule } from '@danske/sapphire-angular';\nimport { LabeledValueComponent } from './labeled-value.component';\n\n@NgModule({\n  declarations: [LabeledValueComponent],\n  imports: [CommonModule, SapphireFieldModule],\n  exports: [LabeledValueComponent],\n})\nexport class SapphireLabeledValueModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/labeled-value.component';\nexport * from './src/labeled-value.module';\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n} from '@angular/core';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { UseComponentStylesOnHost } from '@danske/sapphire-angular';\n\n/**\n * An implementation of the CVI Progress Bar.\n */\n@Component({\n  selector: 'sp-danske-progress-bar',\n  templateUrl: './danske-progress-bar.component.html',\n  styleUrls: ['./danske-progress-bar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [UseComponentStylesOnHost],\n  host: {\n    role: 'progressbar',\n    '[class.sapphire-danske-progress-bar]': 'true',\n  },\n  standalone: false,\n})\nexport class DanskeProgressBarComponent {\n  /**\n   * Height of the progress bar in pixels.\n   * The width is derived automatically to preserve the golden-ratio aspect.\n   * Takes precedence over `width` if both are set.\n   */\n  @Input() height?: number;\n\n  /**\n   * Width of the progress bar in pixels.\n   * The height is derived automatically to preserve the golden-ratio aspect.\n   * Ignored if `height` is also set.\n   */\n  @Input() width?: number;\n\n  /**\n   * Disables the outline that surrounds the box by default.\n   */\n  @Input()\n  @CoerceBoolean\n  noOutline?: boolean;\n\n  /** Passes height directly to CSS; all geometry is calc()-derived in the stylesheet. */\n  @HostBinding('style.--sapphire-danske-progress-bar-height')\n  private get cssHeightVar(): string | undefined {\n    return this.height !== undefined ? `${this.height}px` : undefined;\n  }\n\n  /** Passes width directly to CSS; used to derive height when height is not set. */\n  @HostBinding('style.--sapphire-danske-progress-bar-width')\n  private get cssWidthVar(): string | undefined {\n    return this.width !== undefined ? `${this.width}px` : undefined;\n  }\n\n  /** Adds the no-outline modifier class when outline is suppressed. */\n  @HostBinding('class.sapphire-danske-progress-bar--no-outline')\n  private get noOutlineClass(): boolean {\n    return !!this.noOutline;\n  }\n}\n","<div class=\"sapphire-danske-progress-bar__box\">\n  <div class=\"sapphire-danske-progress-bar__box-inner\"></div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DanskeProgressBarComponent } from './danske-progress-bar.component';\n\n@NgModule({\n  declarations: [DanskeProgressBarComponent],\n  imports: [CommonModule],\n  exports: [DanskeProgressBarComponent],\n})\nexport class SapphireDanskeProgressBarModule {}\n","import { Component, Input } from '@angular/core';\n\n/**\n * A component that visually communicates the completion of a task or operation.\n * It shows the task's progress and remainder.\n */\n@Component({\n  selector: 'sp-progress-indicator',\n  templateUrl: './progress-indicator.component.html',\n  styleUrls: ['./progress-indicator.component.scss'],\n  host: {\n    '[attr.aria-label]': 'null',\n    '[attr.aria-labelledby]': 'null',\n  },\n  standalone: false,\n})\nexport class ProgressIndicatorComponent {\n  /**\n   * The maximum value for the progress bar. Will be used as:\n   * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuemax\n   *\n   * @default 100\n   */\n  @Input() maxValue: number = 100;\n\n  /**\n   * The current value of the progress bar. Will be used as:\n   * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuenow\n   */\n  @Input() /* required input */ value!: number;\n\n  /**\n   * Defines how many segments the progress bar will have.\n   *\n   * @default 1\n   */\n  @Input() segments: number = 1;\n\n  minValue: number = 0;\n\n  /**\n   * Defines a string value that labels the current element.\n   */\n  @Input('aria-label')\n  ariaLabel?: string;\n\n  /**\n   * Identifies the element (or elements) that labels the current element.\n   */\n  @Input('aria-labelledby')\n  ariaLabelledby?: string;\n\n  /**\n   * Human-readable text alternative for the current value of the progress bar. Will be used as:\n   * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuetext\n   */\n  @Input('aria-valuetext')\n  ariaValueText?: string;\n\n  /**\n   * Calculated width percentage based on current value and max value.\n   */\n  get widthPercentage(): number {\n    return Math.min(100, Math.max(0, (this.value / this.maxValue) * 100));\n  }\n\n  get segmentArray(): number[] {\n    return Array.from({ length: this.segments }, (_, index) => index);\n  }\n}\n","<div class=\"sapphire-progress\">\n  <div\n    class=\"sapphire-progress--indicator\"\n    [style]=\"{ width: widthPercentage + '%' }\"\n    role=\"progressbar\"\n    [attr.aria-valuemin]=\"minValue\"\n    [attr.aria-valuemax]=\"maxValue\"\n    [attr.aria-valuenow]=\"value\"\n    [attr.aria-valuetext]=\"ariaValueText\"\n    [attr.aria-label]=\"ariaLabel\"\n    [attr.aria-labelledby]=\"ariaLabelledby\"\n  ></div>\n  <div *ngIf=\"segments > 1\" class=\"sapphire-progress--segments\">\n    <span *ngFor=\"let item of segmentArray\"></span>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProgressIndicatorComponent } from './progress-indicator.component';\n\n@NgModule({\n  declarations: [ProgressIndicatorComponent],\n  imports: [CommonModule],\n  exports: [ProgressIndicatorComponent],\n})\nexport class SapphireProgressModule {}\n","import { InjectionToken, ElementRef } from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\nexport interface SliderProvider {\n  // state\n  disabled: BooleanInput;\n  value: number;\n  minValue: number;\n  maxValue: number;\n  step: number;\n\n  // derived\n  percentage: number;\n\n  // host element\n  elementRef: ElementRef<HTMLElement>;\n\n  // imperative API\n  setValue(value: number): void;\n}\n\nexport const SLIDER_PROVIDER_TOKEN = new InjectionToken<SliderProvider>(\n  'SLIDER_PROVIDER_TOKEN'\n);\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Output,\n} from '@angular/core';\nimport {\n  FocusedDirective,\n  UseComponentStyles,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\nimport { SLIDER_PROVIDER_TOKEN } from './slider.provider';\n\n@Component({\n  selector: 'sp-slider-thumb',\n  template: `<ng-content></ng-content>`,\n  styleUrls: ['./slider.component.scss'],\n  host: {\n    class: 'sapphire-slider__thumb',\n    '[style.left]': 'thumbOffset',\n    '[attr.tabindex]': '_slider.disabled ? -1 : 0',\n    '[attr.data-disabled]': '_slider.disabled ? true : undefined',\n  },\n  hostDirectives: [\n    UseComponentStyles,\n    UseComponentStylesOnHost,\n    {\n      directive: FocusedDirective,\n    },\n  ],\n  standalone: true,\n})\nexport class SliderThumbComponent {\n  protected _slider = inject(SLIDER_PROVIDER_TOKEN);\n  public readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  @Output() thumbDrag = new EventEmitter<MouseEvent>();\n\n  constructor() {\n    const thumb = this.elementRef.nativeElement;\n    const doc = document;\n\n    let onMouseMove: ((event: MouseEvent) => void) | null = null;\n    let onMouseUp: ((event: MouseEvent) => void) | null = null;\n\n    thumb.addEventListener('pointerdown', () => {\n      onMouseMove = (moveEvent: MouseEvent) => {\n        this.dragThumb(moveEvent);\n      };\n      onMouseUp = () => {\n        if (onMouseMove) doc.removeEventListener('pointermove', onMouseMove);\n        if (onMouseUp) doc.removeEventListener('pointerup', onMouseUp);\n        onMouseMove = null;\n        onMouseUp = null;\n      };\n\n      doc.addEventListener('pointermove', onMouseMove);\n      doc.addEventListener('pointerup', onMouseUp);\n    });\n  }\n\n  private dragThumb(event: MouseEvent): void {\n    if (this._slider.disabled) {\n      return;\n    }\n\n    this.thumbDrag.emit(event);\n  }\n\n  @HostListener('keydown', ['$event'])\n  protected handleKeydown(event: KeyboardEvent): void {\n    const multiplier = event.shiftKey ? 10 : 1;\n    const value = Number(this._slider.value);\n\n    switch (event.key) {\n      case 'ArrowLeft':\n      case 'ArrowDown':\n        this._slider.setValue(\n          Math.max(\n            value - this._slider.step * multiplier,\n            this._slider.minValue\n          )\n        );\n        event.preventDefault();\n        break;\n      case 'ArrowRight':\n      case 'ArrowUp':\n        this._slider.setValue(\n          Math.min(\n            value + this._slider.step * multiplier,\n            this._slider.maxValue\n          )\n        );\n        event.preventDefault();\n        break;\n      case 'Home':\n        this._slider.setValue(this._slider.minValue);\n        event.preventDefault();\n        break;\n      case 'End':\n        this._slider.setValue(this._slider.maxValue);\n        event.preventDefault();\n        break;\n    }\n  }\n\n  get thumbOffset() {\n    const pct = this._slider.percentage / 100;\n    return `calc(var(--sapphire-semantic-size-height-control-2xs) / 2 + ${pct} * (100% - var(--sapphire-semantic-size-height-control-2xs)))`;\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Output,\n} from '@angular/core';\nimport { SLIDER_PROVIDER_TOKEN } from './slider.provider';\nimport { SliderThumbComponent } from './slider-thumb.component';\nimport { UseComponentStylesOnHost } from '@danske/sapphire-angular';\n\n@Component({\n  selector: 'sp-slider-track',\n  template: ` <div class=\"sapphire-slider__track-remaining\"></div>\n    <div\n      class=\"sapphire-slider__track-fill\"\n      [style.width.%]=\"_slider.percentage\"\n    ></div>\n\n    <sp-slider-thumb (thumbDrag)=\"thumbMove.emit($event)\" />`,\n  styleUrls: ['./slider.component.scss'],\n  host: {\n    class: 'sapphire-slider__track',\n    '[class.is-disabled]': '_slider.disabled',\n  },\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: true,\n  imports: [SliderThumbComponent],\n})\nexport class SliderTrackComponent {\n  protected _slider = inject(SLIDER_PROVIDER_TOKEN);\n  public readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  @Output() thumbMove = new EventEmitter<MouseEvent>();\n\n  @HostListener('mousedown', ['$event'])\n  protected moveThumbToPoint(event: MouseEvent): void {\n    if (this._slider.disabled) {\n      return;\n    }\n\n    this.thumbMove.emit(event);\n  }\n}\n","import {\n  Component,\n  Input,\n  ChangeDetectorRef,\n  OnInit,\n  forwardRef,\n  ElementRef,\n  HostBinding,\n  EventEmitter,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { FieldControl } from '@danske/sapphire-angular';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SliderProvider, SLIDER_PROVIDER_TOKEN } from './slider.provider';\nimport { SliderTrackComponent } from './slider-track.component';\nimport {\n  UseComponentStyles,\n  ViewEncapsulationProvider,\n} from '@danske/sapphire-angular';\n\n/**\n * A slider allows a user to select one value within a range.\n */\n@Component({\n  selector: 'sp-slider',\n  templateUrl: './slider.component.html',\n  styleUrls: ['./slider.component.scss'],\n  host: {\n    class: 'sapphire-slider',\n    'aria-orientation': 'horizontal',\n    '(focusout)': '_onTouched?.()',\n  },\n  standalone: true,\n  imports: [SliderTrackComponent],\n  hostDirectives: [UseComponentStyles],\n  providers: [\n    ViewEncapsulationProvider,\n    {\n      provide: SLIDER_PROVIDER_TOKEN,\n      useExisting: forwardRef(() => SliderComponent),\n    },\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => SliderComponent),\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SliderComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SliderComponent\n  implements SliderProvider, ControlValueAccessor, OnInit, FieldControl\n{\n  @ViewChild(SliderTrackComponent)\n  private _trackComponent!: SliderTrackComponent;\n\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  /** Returns the unique id for the visual hidden input. */\n  get _inputId(): string {\n    return `${this.id}-input`;\n  }\n\n  /**\n   * The minimum value for the slider.\n   *\n   * @default 100\n   */\n  @Input() minValue: number = 0;\n\n  /**\n   * The maximum value for the slider.\n   *\n   * @default 100\n   */\n  @Input() maxValue: number = 100;\n\n  /**\n   * The step value for the slider.\n   *\n   * @default 1\n   */\n  @Input() step: number = 1;\n\n  /**\n   * The current value of the slider. Will be used as:\n   * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuenow\n   */\n  @Input('value') valueInput: number = 0;\n\n  @Input()\n  @CoerceBoolean\n  disabled: BooleanInput;\n\n  @Output() valueChange = new EventEmitter<number>();\n\n  readonly hasDefaultWidth = true;\n\n  private _onTouched?: () => void;\n  private _onChange?: (value: number) => void;\n\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    public elementRef: ElementRef<HTMLButtonElement>\n  ) {}\n\n  ngOnInit(): void {\n    // ensure the value is within the min and max range\n    if (this.value < this.minValue) {\n      this.value = this.minValue;\n    }\n    if (this.value > this.maxValue) {\n      this.value = this.maxValue;\n    }\n  }\n\n  registerOnChange(fn: (value: number) => void): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  writeValue(value: number): void {\n    const clampedValue = clamp(value, [this.minValue, this.maxValue]);\n    this.value = clampedValue;\n\n    if (value !== clampedValue) {\n      this._onChange?.(clampedValue);\n    }\n\n    this._changeDetectorRef.detectChanges();\n  }\n\n  setValue(value: number): void {\n    const decimalCount = (String(this.step).split('.')[1] || '').length;\n    const snapToStep = roundValue(\n      Math.round((value - this.minValue) / this.step) * this.step +\n        this.minValue,\n      decimalCount\n    );\n\n    value = clamp(snapToStep, [this.minValue, this.maxValue]);\n\n    this.value = value;\n    this._onChange?.(value);\n  }\n\n  onThumbMove(event: MouseEvent): void {\n    const rect =\n      this._trackComponent.elementRef.nativeElement.getBoundingClientRect();\n    const thumbWidth =\n      this._trackComponent.elementRef.nativeElement.offsetHeight;\n    const usableWidth = rect.width - thumbWidth;\n\n    if (usableWidth <= 0) {\n      return;\n    }\n\n    const rawX = event.clientX - rect.left - thumbWidth / 2;\n    const percentage = clamp(rawX / usableWidth, [0, 1]);\n\n    this.setValue(this.minValue + (this.maxValue - this.minValue) * percentage);\n  }\n\n  set value(value: number) {\n    this.valueInput = value;\n    this.valueChange.emit(value);\n  }\n\n  get value() {\n    return this.valueInput;\n  }\n\n  get percentage() {\n    return (\n      ((this.value - this.minValue) / (this.maxValue - this.minValue)) * 100\n    );\n  }\n\n  isDisabled(): boolean {\n    return !!this.disabled;\n  }\n}\n\nconst roundValue = (value: number, decimalCount: number): number => {\n  const rounder = Math.pow(10, decimalCount);\n  return Math.round(value * rounder) / rounder;\n};\n\nconst clamp = (value: number, [min, max]: [number, number]): number => {\n  return Math.min(max, Math.max(min, value));\n};\n","<sp-slider-track (thumbMove)=\"onThumbMove($event)\"></sp-slider-track>\n<input\n  id=\"{{ _inputId }}\"\n  hidden\n  type=\"range\"\n  [min]=\"minValue\"\n  [max]=\"maxValue\"\n  [step]=\"step\"\n  [value]=\"value\"\n/>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SliderComponent } from './slider.component';\nimport { SapphireFieldModule } from '@danske/sapphire-angular';\n\n@NgModule({\n  imports: [CommonModule, SapphireFieldModule, SliderComponent],\n  exports: [SliderComponent],\n})\nexport class SapphireSliderModule {}\n","import {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Optional,\n  Output,\n  Self,\n} from '@angular/core';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { NgControl } from '@angular/forms';\nimport { UseComponentStyles } from '@danske/sapphire-angular';\n\n/**\n * Sapphire search input field.\n */\n@Directive({\n  selector: 'input[spSearchFieldInput]',\n  host: {\n    class: 'sapphire-search-field__input',\n    type: 'search',\n    '[placeholder]': 'placeholder || \" \"',\n  },\n  hostDirectives: [UseComponentStyles],\n  exportAs: 'spSearchFieldInput',\n})\nexport class SearchFieldInputDirective {\n  constructor(\n    private elementRef: ElementRef<HTMLInputElement>,\n    @Optional() @Self() private formControl: NgControl | null\n  ) {}\n  /**\n   * Whether the input is disabled\n   */\n  @HostBinding('class.is-disabled')\n  @Input()\n  @CoerceBoolean\n  disabled?: BooleanInput;\n\n  /**\n   * Emitted when `Enter` is pressed to submit the search\n   */\n  @Output('spSearchFieldSubmitted')\n  submitted = new EventEmitter<string>();\n\n  /**\n   * Emitted when input is cleared by `Esc` or pressing the \"clear\" icon.\n   */\n  @Output('spSearchFieldCleared')\n  cleared = new EventEmitter<string>();\n\n  /**\n   * Input's placeholder\n   */\n  @Input()\n  placeholder?: string;\n\n  @HostListener('keydown', ['$event'])\n  _onKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Escape') {\n      this.clear();\n    } else if (event.key === 'Enter') {\n      this.submitted.emit(this.elementRef.nativeElement.value);\n    }\n  }\n\n  clear() {\n    const element: HTMLInputElement | undefined = this.elementRef.nativeElement;\n\n    if (this.formControl) {\n      this.formControl.reset('');\n    } else if (element) {\n      element.value = '';\n    }\n\n    this.cleared.emit();\n  }\n\n  focus() {\n    this.elementRef?.nativeElement.focus();\n  }\n}\n","import { Component, ContentChild, Input } from '@angular/core';\nimport { SearchFieldInputDirective } from './search-field-input.directive';\nimport { IconRegistry, UseComponentStylesOnHost } from '@danske/sapphire-angular';\nimport { iconCloseOutline, iconSearch } from '@danske/sapphire-icons/js';\n\n/**\n * Sapphire search input field.\n */\n@Component({\n  selector: 'sp-search-field',\n  templateUrl: './search-field.component.html',\n  styleUrls: ['./search-field.component.scss'],\n  host: {\n    class: 'sapphire-search-field',\n    '[class.is-disabled]': 'searchInput?.disabled',\n    '[class.sapphire-search-field--md]': 'size === \"md\"',\n    '[class.sapphire-search-field--sm]': 'size === \"sm\"',\n  },\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: false,\n})\nexport class SearchFieldComponent {\n  constructor(iconRegistry: IconRegistry) {\n    iconRegistry.registerIcons([iconSearch, iconCloseOutline]);\n  }\n  /**\n   * The size of the search field.\n   * @default \"lg\"\n   */\n  @Input()\n  size: 'lg' | 'md' | 'sm' = 'lg';\n\n  @ContentChild(SearchFieldInputDirective)\n  searchInput?: SearchFieldInputDirective;\n}\n","<span class=\"sapphire-search-field__icon\">\n  <sp-icon name=\"search\" [size]=\"size === 'lg' ? 'md' : 'sm'\"></sp-icon>\n</span>\n<ng-content select=\"[spSearchFieldInput]\"></ng-content>\n<div\n  role=\"button\"\n  aria-label=\"Clear search\"\n  class=\"sapphire-search-field__button\"\n  (click)=\"searchInput?.clear()\"\n  (mousedown)=\"$event.preventDefault(); searchInput?.focus()\"\n>\n  <!-- TODO(UC-2728): (mousedown) ^ -->\n  <sp-icon name=\"closeOutline\" [size]=\"size === 'lg' ? 'md' : 'sm'\"></sp-icon>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SapphireIconModule } from '@danske/sapphire-angular';\n\nimport { SearchFieldComponent } from './search-field.component';\nimport { SearchFieldInputDirective } from './search-field-input.directive';\n\n@NgModule({\n  declarations: [SearchFieldComponent, SearchFieldInputDirective],\n  imports: [CommonModule, SapphireIconModule],\n  exports: [SearchFieldComponent, SearchFieldInputDirective],\n})\nexport class SapphireSearchFieldModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/search-field.component';\nexport * from './src/search-field-input.directive';\nexport * from './src/search-field.module';\n","import { MessageDictionary } from '@internationalized/message';\nimport da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nconst translations = new MessageDictionary(\n  {\n    'da-DK': da,\n    'en-US': en,\n    'de-DE': de,\n    'fi-FI': fi,\n    'nb-NO': no,\n    'pl-PL': pl,\n    'sv-SE': se,\n  },\n  'en-US'\n);\n\nexport default translations;\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n  AfterViewChecked,\n  Component,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Optional,\n  Output,\n  Self,\n} from '@angular/core';\nimport { MessageDictionary } from '@internationalized/message';\nimport {\n  IconRegistry,\n  TooltipDirective,\n  TruncatedWithTooltipDirective,\n  UseComponentStyles,\n} from '@danske/sapphire-angular';\nimport { iconClose, iconError } from '@danske/sapphire-icons/js';\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { CoerceBoolean } from '../../common/coerce-boolean.decorator';\nimport translations from '../i18n';\nimport { TagGroupComponent } from './tag-group.component';\n\n/**\n * Event emitted from a TagGroupComponent.\n * Contains the tag on which the event occured.\n */\nexport interface TagEvent {\n  tag: TagComponent;\n}\n\n/**\n * Sapphire search input field.\n */\n@Component({\n  selector: 'sp-tag, [spTag]',\n  templateUrl: './tag.component.html',\n  styleUrls: ['./tag-group.component.scss'],\n  host: {\n    class: 'sapphire-tag',\n    '[class.sapphire-tag--actionable]': 'hasAction()',\n    '[class.is-disabled]': 'disabled',\n    role: 'row',\n    '[attr.tabindex]': '_tabIndex',\n    '[attr.aria-label]': 'getLabel()',\n    '[attr.aria-invalid]': 'error ? true : null',\n  },\n  hostDirectives: [UseComponentStyles, TruncatedWithTooltipDirective],\n  providers: [{ provide: MessageDictionary, useValue: translations }],\n  standalone: false,\n})\nexport class TagComponent\n  implements FocusableOption, DoCheck, AfterViewChecked\n{\n  constructor(\n    public elementRef: ElementRef<HTMLElement>,\n    public tagGroup: TagGroupComponent,\n    iconRegistry: IconRegistry,\n    @Optional() @Self() private userTooltipDirective: TooltipDirective,\n    private truncatedWithTooltipDirective: TruncatedWithTooltipDirective\n  ) {\n    iconRegistry.registerIcons([iconClose, iconError]);\n  }\n\n  /**\n   * A unique id for the host DOM element.\n   * If none is supplied, it will be auto-generated.\n   */\n  @HostBinding()\n  @Input()\n  @AutoId()\n  id = '';\n\n  @Input()\n  @CoerceBoolean\n  error: BooleanInput = false;\n\n  @Input()\n  @CoerceBoolean\n  removable: boolean = false;\n\n  /* Implementing FocusableOption below */\n\n  @Input()\n  @CoerceBoolean\n  disabled?: boolean;\n\n  getLabel(): string {\n    return this.elementRef.nativeElement.textContent?.trim() || '';\n  }\n\n  focus() {\n    this.elementRef.nativeElement.focus();\n  }\n\n  /**\n   * Emitted when a tag is removed.\n   */\n  @Output()\n  readonly removed: EventEmitter<TagEvent> = new EventEmitter<TagEvent>();\n\n  @Output()\n  readonly click: EventEmitter<MouseEvent | KeyboardEvent> = new EventEmitter<\n    MouseEvent | KeyboardEvent\n  >();\n\n  /**\n   * The id of the button for removing the tag\n   */\n  @AutoId()\n  removeButtonId!: string;\n\n  private hasHref: boolean = false;\n\n  _tabIndex: string = '0';\n\n  remove() {\n    if (this.canRemove()) {\n      this.tagGroup.setNextTagActive();\n      this.removed.emit({ tag: this });\n    }\n  }\n\n  /**\n   * Allow removal of a tag if it's not disabled and has a click handler provided.\n   */\n  canRemove(): boolean {\n    return this.removable && !this.disabled;\n  }\n\n  hasAction(): boolean {\n    return this.click.observers.length > 0 || this.hasHref;\n  }\n\n  @HostListener('keydown', ['$event'])\n  private onKeyDown(e: KeyboardEvent) {\n    if (e.key === 'Backspace' || e.key === 'Delete') {\n      this.remove();\n    } else if (e.key === 'Enter') {\n      this.click.emit(e);\n    }\n  }\n\n  ngDoCheck(): void {\n    this.hasHref = this.elementRef.nativeElement.hasAttribute('href');\n    this._tabIndex =\n      this.tagGroup.isTagFocusable(this) && !this.disabled ? '0' : '-1';\n  }\n\n  ngAfterViewChecked(): void {\n    if (this.userTooltipDirective) {\n      this.truncatedWithTooltipDirective.enabled = false;\n    }\n  }\n}\n","<div class=\"sapphire-tag__content\" role=\"gridcell\" aria-colindex=\"1\">\n  <span *ngIf=\"error && !disabled\" class=\"sapphire-tag__error-icon\">\n    <sp-icon name=\"error\" size=\"sm\"></sp-icon>\n  </span>\n  <span class=\"sapphire-tag__label\" spTruncatedWithTooltipContent>\n    <ng-content></ng-content>\n  </span>\n  <button\n    class=\"sapphire-tag__button\"\n    *ngIf=\"canRemove()\"\n    type=\"button\"\n    (click)=\"remove()\"\n    [id]=\"removeButtonId\"\n    [attr.aria-label]=\"'remove' | t\"\n    tabindex=\"-1\"\n  >\n    <sp-icon name=\"close\" size=\"sm\"></sp-icon>\n  </button>\n</div>\n","import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterContentInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  forwardRef,\n  HostListener,\n  Inject,\n  OnDestroy,\n  OnInit,\n  Optional,\n  QueryList,\n} from '@angular/core';\nimport {\n  FieldComponent,\n  FieldControl,\n  UseComponentStylesOnHost,\n} from '@danske/sapphire-angular';\nimport { MessageDictionary } from '@internationalized/message';\nimport translations from '../i18n';\nimport { TagComponent } from './tag.component';\n\n/**\n * Sapphire search input field.\n */\n@Component({\n  selector: 'sp-tag-group',\n  styleUrls: ['./tag-group.component.scss'],\n  template: /* HTML */ `<ng-content></ng-content>`,\n  host: {\n    class: 'sapphire-tag-group',\n    'aria-atomic': 'false',\n    'aria-relevant': 'additions',\n    '[attr.aria-live]': 'isFocusWithin ? \"polite\" : \"off\"',\n    '[attr.role]': 'tags?.length > 0 ? \"grid\" : null',\n    '[attr.aria-labelledby]': 'field?.label?.id',\n    '[attr.aria-describedby]': 'field?.error?.id || field.note?.id',\n    tabindex: '-1',\n  },\n  providers: [\n    {\n      provide: FieldControl,\n      useExisting: forwardRef(() => TagGroupComponent),\n    },\n    { provide: MessageDictionary, useValue: translations },\n  ],\n  hostDirectives: [UseComponentStylesOnHost],\n  standalone: false,\n})\nexport class TagGroupComponent\n  implements FieldControl, OnInit, AfterContentInit, OnDestroy\n{\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n    private elementRef: ElementRef<HTMLElement>,\n    private focusMonitor: FocusMonitor,\n    @Optional() public field?: FieldComponent\n  ) {}\n\n  @ContentChildren(TagComponent)\n  tags?: QueryList<TagComponent> = new QueryList();\n\n  @HostListener('keydown', ['$event'])\n  private onKeyDown(e: KeyboardEvent) {\n    this?.focusKeyManager?.onKeydown(e);\n  }\n\n  isFocusWithin: boolean = false;\n\n  private focusKeyManager?: FocusKeyManager<TagComponent | undefined>;\n\n  private onFocusWithin() {\n    this.isFocusWithin = true;\n\n    const activeTag = this.tags?.find(\n      (tag) => tag.elementRef.nativeElement === this.document.activeElement\n    );\n\n    this.focusKeyManager?.setActiveItem(activeTag);\n  }\n\n  private onBlurWithin() {\n    this.isFocusWithin = false;\n    this.focusKeyManager?.setActiveItem(undefined);\n  }\n\n  private activeTagIndex: number | null = null;\n\n  setNextTagActive(): void {\n    this.focusKeyManager?.setNextItemActive();\n  }\n\n  isDisabled(): boolean {\n    /**\n     * Initially was considering this logic: if all tags are disabled, the field\n     * is considered disabled.\n     *\n     * But it does not make much sense because a tag group is not something you\n     * \"select\" or offer any \"input\". So it seemed odd for example that removing\n     * a bunch of tags leaving the disabled tags present will automatically\n     * disable the whole field:\n     * `return !this.tags?.some((tag) => !tag.disabled) || false`\n     *\n     * Seems like our \"field\" label should be non-disabled even if all tags are\n     * disabled, so we allow only disabling individual tags, not the whole field.\n     */\n    return false;\n  }\n\n  isTagFocusable(tag: TagComponent): boolean {\n    // if there is no active index, then all tags are focusable.\n    return this.activeTagIndex !== null && this.tags\n      ? tag === this.tags.get(this.activeTagIndex)\n      : true;\n  }\n\n  ngOnInit(): void {\n    this.focusMonitor\n      .monitor(this.elementRef?.nativeElement, true)\n      .subscribe((origin) => {\n        if (origin) {\n          this.onFocusWithin();\n        } else {\n          this.onBlurWithin();\n        }\n      });\n  }\n\n  ngAfterContentInit(): void {\n    if (this.tags) {\n      this.focusKeyManager = new FocusKeyManager(this.tags)\n        .withWrap()\n        .withHomeAndEnd()\n        .withHorizontalOrientation('ltr');\n\n      this.focusKeyManager.change.subscribe((activeIndex) => {\n        // -1 stands for no active item (ie. blur)\n        // In that case we leave the tags as they are so the next\n        // focus will happen on the last active tag\n        if (activeIndex >= 0) {\n          this.activeTagIndex = activeIndex;\n        }\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    this.focusMonitor.stopMonitoring(this.elementRef?.nativeElement);\n    this.focusKeyManager?.destroy();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  SapphireIconModule,\n  TooltipDirective,\n  TruncatedWithTooltipContentElementDirective,\n  TruncatedWithTooltipDirective,\n} from '@danske/sapphire-angular';\n\nimport { TagGroupComponent } from './tag-group.component';\nimport { TagComponent } from './tag.component';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { TranslatePipe } from '../../common/translate.pipe';\n\n@NgModule({\n  declarations: [TagGroupComponent, TagComponent],\n  imports: [\n    TranslatePipe,\n    CommonModule,\n    A11yModule,\n    SapphireIconModule,\n    TooltipDirective,\n    TruncatedWithTooltipContentElementDirective,\n    TruncatedWithTooltipDirective,\n  ],\n  exports: [TagGroupComponent, TagComponent],\n})\nexport class SapphireTagGroupModule {}\n","// We have separate public_api.ts file for each angular module, to have them\n// exposed as separate entry points. The build is still not emitting separate\n// entry points, which will be addressed in this task:\n// WCCJ-838\nexport * from './src/tag-group.component';\nexport * from './src/tag.component';\nexport * from './src/tag-group.module';\n","/* eslint-disable */\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n\n */\n\n/**\n * The following code is borrowed from @react-stately/toast@3.1.2\n * Only some type errors (due to less strictness level in the original code) are fixed.\n * permalink:\nhttps://github.com/adobe/react-spectrum/blob/d9292a9ed6c8b7bebdd56bd094f9d1dbe089f83a/packages/%40react-stately/toast/src/useToastState.ts#L86 */\n\ntype ToastAction = 'add' | 'remove' | 'clear';\nexport interface ToastStateProps {\n  /** The maximum number of toasts to display at a time. */\n  maxVisibleToasts?: number;\n  /** Function to wrap updates in (i.e. document.startViewTransition()). */\n  wrapUpdate?: (fn: () => void, action: ToastAction) => void;\n}\n\nexport interface ToastOptions {\n  /** Handler that is called when the toast is closed, either by the user or after a timeout. */\n  onClose?: () => void;\n  /** A timeout to automatically close the toast after, in milliseconds. */\n  timeout?: number;\n}\n\nexport interface QueuedToast<T> extends ToastOptions {\n  /** The content of the toast. */\n  content: T;\n  /** A unique key for the toast. */\n  key: string;\n  /** A timer for the toast, if a timeout was set. */\n  timer?: Timer;\n}\n\nexport class ToastQueue<T> {\n  private queue: QueuedToast<T>[] = [];\n  private subscriptions: Set<() => void> = new Set();\n  private maxVisibleToasts: number;\n  private wrapUpdate?: (fn: () => void, action: ToastAction) => void;\n  /** The currently visible toasts. */\n  visibleToasts: QueuedToast<T>[] = [];\n\n  constructor(options?: ToastStateProps) {\n    this.maxVisibleToasts = options?.maxVisibleToasts ?? Infinity;\n    this.wrapUpdate = options?.wrapUpdate;\n  }\n\n  private runWithWrapUpdate(fn: () => void, action: ToastAction): void {\n    if (this.wrapUpdate) {\n      this.wrapUpdate(fn, action);\n    } else {\n      fn();\n    }\n  }\n\n  /** Subscribes to updates to the visible toasts. */\n  subscribe(fn: () => void): () => void {\n    this.subscriptions.add(fn);\n    return () => this.subscriptions.delete(fn);\n  }\n\n  /** Adds a new toast to the queue. */\n  add(content: T, options: ToastOptions = {}): string {\n    let toastKey = '_' + Math.random().toString(36).slice(2);\n    let toast: QueuedToast<T> = {\n      ...options,\n      content,\n      key: toastKey,\n      timer: options.timeout\n        ? new Timer(() => this.close(toastKey), options.timeout)\n        : undefined,\n    };\n\n    // Pause the other toasts' timers when a new toast is added\n    this.pauseAll();\n\n    this.queue.unshift(toast);\n\n    this.updateVisibleToasts('add');\n    return toastKey;\n  }\n\n  /**\n   * Closes a toast.\n   */\n  close(key: string): void {\n    let index = this.queue.findIndex((t) => t.key === key);\n    if (index >= 0) {\n      this.queue[index].onClose?.();\n      this.queue.splice(index, 1);\n    }\n\n    this.updateVisibleToasts('remove');\n\n    // Resume the timer for the next toast in the queue\n    this.visibleToasts[0]?.timer?.resume();\n  }\n\n  private updateVisibleToasts(action: ToastAction) {\n    this.visibleToasts = this.queue.slice(0, this.maxVisibleToasts);\n\n    this.runWithWrapUpdate(() => {\n      for (let fn of this.subscriptions) {\n        fn();\n      }\n    }, action);\n  }\n\n  /** Pauses the timers for all visible toasts. */\n  pauseAll(): void {\n    for (let toast of this.visibleToasts) {\n      if (toast.timer) {\n        toast.timer.pause();\n      }\n    }\n  }\n\n  /** Resumes the timers for all visible toasts. */\n  resumeAll(): void {\n    /**\n     * Commented out to only resume the first toast's timer\n     * on blur or mouse leave\n     */\n    // for (let toast of this.visibleToasts) {\n    //   if (toast.timer) {\n    //     toast.timer.resume();\n    //   }\n    // }\n\n    this.visibleToasts[0]?.timer?.resume();\n  }\n\n  clear(): void {\n    this.queue = [];\n    this.updateVisibleToasts('clear');\n  }\n}\n\nclass Timer {\n  private timerId: ReturnType<typeof setTimeout> | null = null;\n  private startTime: number | null = null;\n  private remaining: number;\n  private callback: () => void;\n\n  constructor(callback: () => void, delay: number) {\n    this.remaining = delay;\n    this.callback = callback;\n  }\n\n  reset(delay: number): void {\n    this.remaining = delay;\n    this.resume();\n  }\n\n  pause(): void {\n    if (this.timerId == null) {\n      return;\n    }\n\n    clearTimeout(this.timerId);\n    this.timerId = null;\n    this.remaining -= Date.now() - this.startTime!;\n  }\n\n  resume(): void {\n    if (this.remaining <= 0) {\n      return;\n    }\n\n    // Clean up any existing timer\n    clearTimeout(this.timerId!);\n\n    this.startTime = Date.now();\n    this.timerId = setTimeout(() => {\n      this.timerId = null;\n      this.remaining = 0;\n      this.callback();\n    }, this.remaining);\n  }\n}\n","import { MessageDictionary } from '@internationalized/message';\nimport da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nconst translations = new MessageDictionary(\n  {\n    'da-DK': da,\n    'en-US': en,\n    'de-DE': de,\n    'fi-FI': fi,\n    'nb-NO': no,\n    'pl-PL': pl,\n    'sv-SE': se,\n  },\n  'en-US'\n);\n\nexport default translations;\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  HostListener,\n  ViewEncapsulation,\n  ElementRef,\n} from '@angular/core';\nimport {\n  IconRegistry,\n  SapphireButtonModule,\n  SapphireIconModule,\n  ThemeRootComponent,\n} from '@danske/sapphire-angular';\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { MessageDictionary } from '@internationalized/message';\n\nimport { AutoId } from '../../common/auto-id.decorator';\nimport { QueuedToast } from './ToastQueue';\nimport translations from '../i18n';\nimport { iconCloseLarge } from '@danske/sapphire-icons/js';\n\nexport interface ShowToastOptions {\n  /**\n   * A timeout to automatically close the toast after, in milliseconds.\n   * Note that if the toast is hovered or interacted with, the timeout is\n   * paused.\n   *\n   * @default 3000\n   */\n  timeout?: number;\n  /**\n   * Optional title for the toast.\n   */\n  title?: string;\n  variant?: 'neutral' | 'success' | 'error';\n}\n\nexport type ToastContent = { title?: string } & (\n  | {\n      type: 'text';\n      value: string;\n    }\n  | {\n      type: 'template';\n      value: TemplateRef<unknown>;\n    }\n);\n\n/**\n * A toast displays brief, temporary notifications of events in the application.\n */\n@Component({\n  standalone: true,\n  selector: 'sp-toast',\n  templateUrl: './toast.component.html',\n  imports: [\n    SapphireIconModule,\n    SapphireButtonModule,\n    NgClass,\n    NgIf,\n    NgTemplateOutlet,\n    ThemeRootComponent,\n  ],\n  host: {\n    '[class.sapphire-toast--stacked]': 'isPreview',\n    role: 'alertdialog',\n    'aria-modal': 'false',\n    '[attr.aria-describedby]': 'titleId',\n    '[attr.tabindex]': '0',\n    '[style.view-transition-name]': 'toast?.key',\n    '[style.view-transition-class]': 'viewTransitionClass',\n    '[style.--sapphire-toast-index]': 'index',\n    class: 'sapphire-toast',\n  },\n  styleUrls: ['./toast.component.scss'],\n  // eslint-disable-next-line no-view-encapsulation-none/no-view-encapsulation-none -- so view-transition-class can be used\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: MessageDictionary, useValue: translations }],\n})\nexport class ToastComponent implements OnChanges {\n  constructor(\n    iconRegistry: IconRegistry,\n    private elementRef: ElementRef<HTMLElement>\n  ) {\n    iconRegistry.registerIcon(iconCloseLarge);\n  }\n\n  @Input()\n  toast?: QueuedToast<ToastContent>;\n\n  @Input()\n  placement: 'top' | 'bottom' = 'bottom';\n\n  /**\n   * Emits when the close button is pressed\n   */\n  @Output()\n  closed = new EventEmitter<void>();\n\n  @Output()\n  toggleExpanded = new EventEmitter<void>();\n\n  @AutoId()\n  titleId: string = '';\n\n  @Input()\n  isPreview = false;\n\n  @Input()\n  index: number = 0;\n\n  get viewTransitionClass(): string {\n    const classes = ['sapphire-toast-view-transition'];\n    if (this.placement === 'top') {\n      classes.push('sapphire-toast-view-transition--reverse');\n    }\n    return classes.join(' ');\n  }\n\n  get variant(): 'neutral' | 'success' | 'error' {\n    return (this.toast as any)?.variant ?? 'neutral';\n  }\n\n  get isDarkTheme(): boolean {\n    const element = this.elementRef.nativeElement;\n    /*\n    Get theme to render Toast content with correct styles.\n    Dark theme applies color-scheme: dark  property\n    */\n    const colorScheme = getComputedStyle(element).colorScheme;\n    return colorScheme.includes('dark');\n  }\n\n  get shouldApplyContrastTheme(): boolean {\n    return this.variant === 'neutral' || !this.isDarkTheme;\n  }\n\n  @HostListener('click', ['$event'])\n  onClick(event: Event): void {\n    // Don't toggle if clicking on the close button\n    const target = event.target as Element;\n    if (target.closest('button')) {\n      return;\n    }\n    this.toggleExpanded.emit();\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent): void {\n    // Don't handle if the event is from a button\n    const target = event.target as Element;\n    if (target.closest('button')) {\n      return;\n    }\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      this.toggleExpanded.emit();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['toast']) {\n      // Pause the previous toast's timer\n      (\n        changes['toast'].previousValue as QueuedToast<unknown> | undefined\n      )?.timer?.pause();\n      // Start the new toast's timer\n      this.toast?.timer?.reset(this.toast.timeout ?? 0);\n    }\n  }\n}\n","<ng-container *ngIf=\"shouldApplyContrastTheme; else noContrastTheme\">\n  <sp-theme-root variant=\"contrast\" noSurface>\n    <ng-container *ngTemplateOutlet=\"toastContent\"></ng-container>\n  </sp-theme-root>\n</ng-container>\n<ng-template #noContrastTheme>\n  <ng-container *ngTemplateOutlet=\"toastContent\"></ng-container>\n</ng-template>\n\n<ng-template #toastContent>\n  <div\n    class=\"sapphire-toast__content\"\n    [ngClass]=\"{\n      'sapphire-toast__content--success': variant === 'success',\n      'sapphire-toast__content--error': variant === 'error'\n    }\"\n  >\n    <div [id]=\"titleId\" class=\"sapphire-toast__text-content\">\n      <div *ngIf=\"toast?.content?.title\">\n        <div>{{ toast?.content?.title }}</div>\n      </div>\n      <div>\n        <ng-container *ngIf=\"toast?.content?.type === 'text'\">\n          {{ toast?.content?.value }}\n        </ng-container>\n        <ng-container *ngIf=\"toast?.content?.type === 'template'\">\n          <ng-container\n            *ngTemplateOutlet=\"$any(toast?.content?.value)\"\n          ></ng-container>\n        </ng-container>\n      </div>\n    </div>\n    <button\n      sp-icon-button\n      aria-label=\"Close\"\n      size=\"sm\"\n      variant=\"tertiary\"\n      (click)=\"closed.emit()\"\n    >\n      <sp-icon name=\"closeLarge\"></sp-icon>\n    </button>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectorRef,\n  Component,\n  HostListener,\n  Inject,\n  Input,\n  NgZone,\n  OnInit,\n  TrackByFunction,\n} from '@angular/core';\nimport { DOCUMENT, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ThemeRootComponent } from '@danske/sapphire-angular';\n\nimport { QueuedToast, ToastQueue } from './ToastQueue';\nimport { ToastComponent, ToastContent } from './toast.component';\nimport { MessageDictionary } from '@internationalized/message';\nimport { TranslatePipe } from '../../common/translate.pipe';\nimport translations from '../i18n';\n\ntype VerticalPlacement = 'top' | 'bottom';\ntype HorizontalPlacement = 'left' | 'right';\n\n@Component({\n  standalone: true,\n  selector: 'sp-toast-region',\n  templateUrl: './toast-region.component.html',\n  styleUrls: ['./toast-region.component.scss'],\n  imports: [\n    ToastComponent,\n    TranslatePipe,\n    NgForOf,\n    ThemeRootComponent,\n    A11yModule,\n    NgIf,\n    NgClass,\n  ],\n  providers: [{ provide: MessageDictionary, useValue: translations }],\n})\nexport class ToastRegionComponent implements OnInit {\n  _trackBy: TrackByFunction<QueuedToast<unknown>> = (_, item) => item.key;\n\n  @Input()\n  placement: VerticalPlacement | `${VerticalPlacement}-${HorizontalPlacement}` =\n    'bottom';\n\n  visibleToasts: QueuedToast<ToastContent>[] = [];\n\n  private _expanded = false;\n  get expanded(): boolean {\n    return this._expanded;\n  }\n  set expanded(expanded: boolean) {\n    this.withTransition(() => {\n      this._expanded = expanded;\n    });\n  }\n\n  get toastPlacement(): 'top' | 'bottom' {\n    return this.placement.includes('top') ? 'top' : 'bottom';\n  }\n\n  constructor(\n    public _toastQueue: ToastQueue<ToastContent>,\n    @Inject(DOCUMENT) private document: Document,\n    private changeDetectorRef: ChangeDetectorRef,\n    private ngZone: NgZone\n  ) {}\n\n  @HostListener('document:keydown', ['$event'])\n  onDocumentKeyDown(event: KeyboardEvent): void {\n    if (this.expanded && event.key === 'Escape') {\n      this.expanded = false;\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onDocumentClick(event: MouseEvent): void {\n    if (!this.expanded) {\n      return;\n    }\n\n    const target = event.target as Element;\n    const toastRegion = target.closest('.sapphire-toast-container');\n\n    // If click is outside the toast region, close the overlay\n    if (!toastRegion) {\n      this.expanded = false;\n    }\n  }\n\n  ngOnInit() {\n    this.updateVisibleToasts();\n    this._toastQueue.subscribe(() => {\n      this.updateVisibleToasts();\n    });\n  }\n\n  private updateVisibleToasts() {\n    this.withTransition(() => {\n      this.ngZone.run(() => {\n        this.visibleToasts = this._toastQueue.visibleToasts;\n        if (this.visibleToasts.length <= 1) {\n          this._expanded = false;\n        }\n      });\n    });\n  }\n\n  withTransition(fn: () => void) {\n    if ('startViewTransition' in this.document) {\n      (this.document as any) /* FIXME: fix types*/\n        .startViewTransition({\n          update: () => {\n            fn();\n            this.changeDetectorRef.detectChanges();\n          },\n        });\n    } else {\n      fn();\n    }\n  }\n\n  protected toggleExpanded() {\n    if (this.expanded) {\n      this.expanded = false;\n      return;\n    }\n\n    if (this.visibleToasts.length > 1) {\n      this.expanded = true;\n    }\n  }\n\n  protected close(key: string) {\n    this._toastQueue.close(key);\n  }\n}\n","<sp-theme-root\n  noSurface\n  *ngIf=\"visibleToasts.length > 0\"\n  class=\"sapphire-toast-container\"\n  [ngClass]=\"'sapphire-toast-container--' + placement\"\n  role=\"region\"\n  [attr.aria-label]=\"'notifications' | t\"\n  (mouseenter)=\"_toastQueue.pauseAll()\"\n  (mouseleave)=\"_toastQueue.resumeAll()\"\n  (focusin)=\"_toastQueue.pauseAll()\"\n  (focusout)=\"_toastQueue.resumeAll()\"\n  cdkMonitorSubtreeFocus\n  (cdkFocusChange)=\"$event ? _toastQueue.pauseAll() : _toastQueue.resumeAll()\"\n  [style.z-index]=\"300\"\n  tabindex=\"-1\"\n>\n  <div\n    class=\"sapphire-toast-list\"\n    [class.sapphire-toast-list--collapsed]=\"!expanded\"\n    [class.sapphire-toast-list--expanded]=\"expanded\"\n  >\n    <ng-container\n      *ngFor=\"let toast of visibleToasts; trackBy: _trackBy; let index = index\"\n    >\n      <sp-toast\n        [toast]=\"$any(toast)\"\n        [placement]=\"toastPlacement\"\n        [index]=\"index\"\n        [isPreview]=\"!expanded && index > 0\"\n        [style.z-index]=\"300 + visibleToasts.length - index - 1\"\n        (toggleExpanded)=\"toggleExpanded()\"\n        (closed)=\"close(toast.key)\"\n      ></sp-toast>\n    </ng-container>\n  </div>\n</sp-theme-root>\n","import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Inject,\n  inject,\n  Injectable,\n  InjectionToken,\n  Injector,\n  TemplateRef,\n  VERSION,\n} from '@angular/core';\nimport { ShowToastOptions, ToastContent } from './toast.component';\nimport { ToastQueue } from './ToastQueue';\nimport { ToastRegionComponent } from './toast-region.component';\nimport { DOCUMENT } from '@angular/common';\n\ntype ToastOptions = ShowToastOptions & {\n  placement: ToastRegionComponent['placement'];\n};\nconst DEFAULT_TOAST_OPTIONS: ToastOptions = {\n  timeout: 3000,\n  placement: 'bottom',\n};\n\nexport const TOAST_OPTIONS = new InjectionToken<Partial<ShowToastOptions>>(\n  'Default options for showing Toast',\n  {\n    providedIn: 'root',\n    factory: () => DEFAULT_TOAST_OPTIONS,\n  }\n);\n\n/**\n * Can be used to show Toast notifications.\n * A toast displays brief, temporary notifications of events in the application.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class Toast {\n  private toastQueue = new ToastQueue<ToastContent>({\n    maxVisibleToasts: Infinity,\n  });\n  private toastRegionOutlet?: DomPortalOutlet;\n\n  private document = inject(DOCUMENT);\n  private toastRegionRef?: ComponentRef<ToastRegionComponent>;\n\n  constructor(\n    private injector: Injector,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    @Inject(TOAST_OPTIONS) private options: ToastOptions,\n    private appRef: ApplicationRef\n  ) {\n    this.options = { ...DEFAULT_TOAST_OPTIONS, ...this.options };\n  }\n\n  /**\n   * Shows a toast notification with content set from a string or a template.\n   */\n  show(\n    content: string | TemplateRef<unknown>,\n    {\n      timeout = this.options.timeout,\n      onClose,\n      title,\n      variant = 'neutral',\n    }: ShowToastOptions & { onClose?: () => void } = {}\n  ) {\n    const renderedTitle = title || this.options.title;\n    this.ensureToastRegion();\n    this.toastQueue.add(\n      typeof content === 'string'\n        ? { type: 'text', value: content, title: renderedTitle }\n        : { type: 'template', value: content, title: renderedTitle },\n      { timeout, onClose, variant } as ShowToastOptions\n    );\n  }\n\n  /**\n   * Creates the toast region element the first time it's called.\n   * @private\n   */\n  private ensureToastRegion(): ToastRegionComponent {\n    if (!this.toastRegionRef) {\n      const childInjector = Injector.create({\n        parent: this.injector,\n        providers: [\n          {\n            provide: ToastQueue,\n            useValue: this.toastQueue,\n          },\n        ],\n      });\n\n      this.toastRegionOutlet =\n        parseInt(VERSION.major) < 20\n          ? new DomPortalOutlet(\n              this.document.body,\n              this.componentFactoryResolver,\n              this.appRef,\n              this.injector\n            )\n          : new DomPortalOutlet(\n              this.document.body,\n              // @ts-expect-error DomPortalOutlet constructor signature breaking change for Angular 20\n              this.appRef,\n              this.injector\n            );\n\n      this.toastRegionRef = this.toastRegionOutlet.attachComponentPortal(\n        new ComponentPortal(ToastRegionComponent, null, childInjector)\n      );\n      this.toastRegionRef.instance.placement = this.options.placement;\n    }\n    return this.toastRegionRef.instance;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { Toast } from './toast.service';\n\n@NgModule({\n  imports: [],\n  providers: [Toast],\n  exports: [],\n})\nexport class SapphireToastModule {}\n","import { NgModule } from '@angular/core';\nimport { SapphireFilteringModule } from './filtering/src/filtering.module';\nimport { SapphireSearchFieldModule } from './search-field/src/search-field.module';\nimport { SapphireCalendarModule } from './calendar/src/calendar.module';\nimport { SapphireDateFieldModule } from './date-field/src/date-field.module';\nimport { SapphireAccordionModule } from './accordion/src/accordion.module';\nimport { SapphireAutocompleteModule } from './autocomplete/public_api';\nimport { SapphireTagGroupModule } from './tag-group/public_api';\nimport { SapphireLabeledValueModule } from './labeled-value/src/labeled-value.module';\nimport { SapphireToastModule } from './toast/src/toast.module';\nimport { SapphireFlagModule } from './flag/src/flag.module';\nimport { SapphireAlertModule } from './alert/src/alert.module';\nimport { SapphireProgressModule } from './progress-indicator/src/progress-indicator.module';\nimport { SapphireDanskeProgressBarModule } from './danske-progress-bar/src/danske-progress-bar.module';\nimport { SapphireSliderModule } from './slider/src/slider.module';\nimport { SapphireBreadcrumbsModule } from './breadcrumbs/src/breadcrumbs.module';\nimport { SapphireAmountModule } from './amount/src/amount.module';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    SapphireAmountModule,\n    SapphireBreadcrumbsModule,\n    SapphireFilteringModule,\n    SapphireSearchFieldModule,\n    SapphireCalendarModule,\n    SapphireDateFieldModule,\n    SapphireFlagModule,\n    SapphireAccordionModule,\n    SapphireAutocompleteModule,\n    SapphireTagGroupModule,\n    SapphireLabeledValueModule,\n    SapphireToastModule,\n    SapphireAlertModule,\n    SapphireProgressModule,\n    SapphireDanskeProgressBarModule,\n    SapphireSliderModule,\n  ],\n  exports: [\n    SapphireAmountModule,\n    SapphireBreadcrumbsModule,\n    SapphireFilteringModule,\n    SapphireSearchFieldModule,\n    SapphireCalendarModule,\n    SapphireFlagModule,\n    SapphireDateFieldModule,\n    SapphireAccordionModule,\n    SapphireAutocompleteModule,\n    SapphireTagGroupModule,\n    SapphireLabeledValueModule,\n    SapphireToastModule,\n    SapphireAlertModule,\n    SapphireProgressModule,\n    SapphireDanskeProgressBarModule,\n    SapphireSliderModule,\n  ],\n})\nexport class SapphireLabModule {}\n","/*\n * Public API Surface of lab\n */\n\nexport * from './lib/accordion/public_api';\nexport * from './lib/alert/public_api';\nexport * from './lib/amount/public_api';\nexport * from './lib/autocomplete/public_api';\nexport * from './lib/breadcrumbs/public_api';\nexport * from './lib/calendar/public_api';\nexport * from './lib/date-field/public_api';\nexport * from './lib/filtering/public_api';\nexport * from './lib/flag/public_api';\nexport * from './lib/labeled-value/public_api';\nexport * from './lib/danske-progress-bar/public_api';\nexport * from './lib/progress-indicator/public_api';\nexport * from './lib/slider/public_api';\nexport * from './lib/search-field/public_api';\nexport * from './lib/tag-group/public_api';\nexport * from './lib/toast/public_api';\nexport * from './lib/lab.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AccordionComponent","i2","i2.BreadcrumbsComponent","i1.CalendarBase","i2.CalendarGridDirective","i2.CalendarCellDirective","i3","translations","da","en","de","fi","no","pl","se","i1.TranslateService","i2.CalendarBase","i1.CalendarCellDirective","i1.SingleSelectionCalendarDirective","i2.RangeCalendarDirective","i1.RangeCalendarDirective","i1","i4.DateFieldSegmentComponent","i5.DateFieldSegmentLiteralComponent","i4","i5.CalendarComponent","i6.DateFieldInputComponent","i7.TranslatePipe","i5","i6.RangeCalendarComponent","i7.DateFieldInputComponent","i8.TranslatePipe","i1.TagGroupComponent","i4.TranslatePipe"],"mappings":"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EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AAC9C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,E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"}