oasys-lib 2.19.1-rc.0 → 2.19.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"oasys-lib.mjs","sources":["../../../projects/oasys-lib/src/lib/components/alert/alert-cancel.directive.ts","../../../projects/oasys-lib/src/lib/components/alert/alert-confirm.directive.ts","../../../projects/oasys-lib/src/lib/components/alert/alert-content.directive.ts","../../../projects/oasys-lib/src/lib/components/alert/alert-title.directive.ts","../../../projects/oasys-lib/src/lib/services/breakpoint.service.ts","../../../projects/oasys-lib/src/lib/services/token.service.ts","../../../projects/oasys-lib/src/lib/components/layout/box/box.component.ts","../../../projects/oasys-lib/src/lib/components/layout/stack/stack.component.ts","../../../projects/oasys-lib/src/lib/components/icon/icon.component.ts","../../../projects/oasys-lib/src/lib/components/icon/icon.component.html","../../../projects/oasys-lib/src/lib/services/media-base-url.provider.ts","../../../projects/oasys-lib/src/lib/services/routing-handler.provider.ts","../../../projects/oasys-lib/src/lib/services/swiper.provider.ts","../../../projects/oasys-lib/src/lib/directives/href/href.directive.ts","../../../projects/oasys-lib/src/lib/components/button/button.component.ts","../../../projects/oasys-lib/src/lib/components/button/button.component.html","../../../projects/oasys-lib/src/lib/components/alert/alert.component.ts","../../../projects/oasys-lib/src/lib/components/alert/alert.component.html","../../../projects/oasys-lib/src/lib/components/alert/alert.module.ts","../../../projects/oasys-lib/src/lib/components/navigation/breadcrumbs/breadcrumbs.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/breadcrumbs/breadcrumbs.component.html","../../../projects/oasys-lib/src/lib/components/navigation/breadcrumbs/breadcrumbs.module.ts","../../../projects/oasys-lib/src/lib/components/button/button.module.ts","../../../projects/oasys-lib/src/lib/components/button-group/button-group.component.ts","../../../projects/oasys-lib/src/lib/components/button-group/button-group.component.html","../../../projects/oasys-lib/src/lib/components/button-group/button-group.module.ts","../../../projects/oasys-lib/src/lib/services/image.service.ts","../../../projects/oasys-lib/src/lib/components/image/image.component.ts","../../../projects/oasys-lib/src/lib/components/image/image.component.html","../../../projects/oasys-lib/src/lib/components/card/card.component.ts","../../../projects/oasys-lib/src/lib/components/card/card.component.html","../../../projects/oasys-lib/src/lib/components/card/card.module.ts","../../../projects/oasys-lib/src/lib/components/divider/divider.component.ts","../../../projects/oasys-lib/src/lib/components/divider/divider.component.html","../../../projects/oasys-lib/src/lib/components/divider/divider.module.ts","../../../projects/oasys-lib/src/lib/components/form/form-group/form-group.component.ts","../../../projects/oasys-lib/src/lib/components/form/form-group/form-group.component.html","../../../projects/oasys-lib/src/lib/components/form/form-group/form-group.module.ts","../../../projects/oasys-lib/src/lib/components/form/checkbox/checkbox.component.ts","../../../projects/oasys-lib/src/lib/components/form/checkbox/checkbox.component.html","../../../projects/oasys-lib/src/lib/components/form/checkbox/checkbox.module.ts","../../../projects/oasys-lib/src/lib/components/form/radio/radio.component.ts","../../../projects/oasys-lib/src/lib/components/form/radio/radio.component.html","../../../projects/oasys-lib/src/lib/components/form/radio/radio.module.ts","../../../projects/oasys-lib/src/lib/directives/autofocus/autofocus.directive.ts","../../../projects/oasys-lib/src/lib/components/form/text-input/text-input.component.ts","../../../projects/oasys-lib/src/lib/components/form/text-input/text-input.component.html","../../../projects/oasys-lib/src/lib/components/form/text-input/text-input.module.ts","../../../projects/oasys-lib/src/lib/components/form/chip/chip.component.ts","../../../projects/oasys-lib/src/lib/components/form/chip/chip.component.html","../../../projects/oasys-lib/src/lib/components/form/chip/chip.module.ts","../../../projects/oasys-lib/src/lib/components/layout/container/container.component.ts","../../../projects/oasys-lib/src/lib/components/layout/grid/grid-column.component.ts","../../../projects/oasys-lib/src/lib/components/layout/grid/grid.component.ts","../../../projects/oasys-lib/src/lib/components/layout/layout.module.ts","../../../projects/oasys-lib/src/lib/components/form/errors/form-errors.component.ts","../../../projects/oasys-lib/src/lib/components/form/errors/form-errors.component.html","../../../projects/oasys-lib/src/lib/components/form/errors/form-errors.module.ts","../../../projects/oasys-lib/src/lib/components/heading/heading.component.ts","../../../projects/oasys-lib/src/lib/components/heading/heading.component.html","../../../projects/oasys-lib/src/lib/components/heading/heading.module.ts","../../../projects/oasys-lib/src/lib/components/hero/hero.component.ts","../../../projects/oasys-lib/src/lib/components/hero/hero.component.html","../../../projects/oasys-lib/src/lib/components/hero/hero.module.ts","../../../projects/oasys-lib/src/lib/components/seo-block/seo-block.component.ts","../../../projects/oasys-lib/src/lib/components/seo-block/seo-block.component.html","../../../projects/oasys-lib/src/lib/components/seo-block/seo-block.module.ts","../../../projects/oasys-lib/src/lib/components/icon/icon.module.ts","../../../projects/oasys-lib/src/lib/components/image/image.module.ts","../../../projects/oasys-lib/src/lib/components/section/section.component.ts","../../../projects/oasys-lib/src/lib/components/section/section.component.html","../../../projects/oasys-lib/src/lib/components/section/section.module.ts","../../../projects/oasys-lib/src/lib/components/carousel/carousel.component.ts","../../../projects/oasys-lib/src/lib/components/carousel/carousel.component.html","../../../projects/oasys-lib/src/lib/components/carousel/carousel.module.ts","../../../projects/oasys-lib/src/lib/components/text/text.component.ts","../../../projects/oasys-lib/src/lib/components/text/text.component.html","../../../projects/oasys-lib/src/lib/components/text/text.module.ts","../../../projects/oasys-lib/src/lib/components/banner/banner.component.ts","../../../projects/oasys-lib/src/lib/components/banner/banner.component.html","../../../projects/oasys-lib/src/lib/components/banner/banner.module.ts","../../../projects/oasys-lib/src/lib/components/pill/pill.component.ts","../../../projects/oasys-lib/src/lib/components/pill/pill.component.html","../../../projects/oasys-lib/src/lib/components/pill/pill.module.ts","../../../projects/oasys-lib/src/lib/components/pill-group/pill-group.component.ts","../../../projects/oasys-lib/src/lib/components/pill-group/pill-group.component.html","../../../projects/oasys-lib/src/lib/components/pill-group/pill-group.module.ts","../../../projects/oasys-lib/src/lib/components/promo-card/promo-card.component.ts","../../../projects/oasys-lib/src/lib/components/promo-card/promo-card.component.html","../../../projects/oasys-lib/src/lib/components/promo-card/promo-card.module.ts","../../../projects/oasys-lib/src/lib/components/price/price.component.ts","../../../projects/oasys-lib/src/lib/components/price/price.component.html","../../../projects/oasys-lib/src/lib/components/select-card/select-card.component.ts","../../../projects/oasys-lib/src/lib/components/select-card/select-card.component.html","../../../projects/oasys-lib/src/lib/components/select-card/select-card.module.ts","../../../projects/oasys-lib/src/lib/directives/emphasis/emphasis.directive.ts","../../../projects/oasys-lib/src/lib/components/form/combobox/combobox.component.ts","../../../projects/oasys-lib/src/lib/components/form/combobox/combobox.component.html","../../../projects/oasys-lib/src/lib/components/form/combobox/combobox.module.ts","../../../projects/oasys-lib/src/lib/components/label/label.component.ts","../../../projects/oasys-lib/src/lib/components/label/label.component.html","../../../projects/oasys-lib/src/lib/components/label/label.module.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab/tab.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-active/tab-active.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-header/tab-header.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-header/tab-header.component.html","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-group/tab-group.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-group/tab-group.component.html","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-group/tab-group.module.ts","../../../projects/oasys-lib/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/oasys-lib/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/oasys-lib/src/lib/components/form/errors-summary/errors-summary-item/form-errors-summary-item.component.ts","../../../projects/oasys-lib/src/lib/components/form/errors-summary/errors-summary-item/form-errors-summary-item.component.html","../../../projects/oasys-lib/src/lib/components/form/errors-summary/form-errors-summary.component.ts","../../../projects/oasys-lib/src/lib/components/form/errors-summary/form-errors-summary.component.html","../../../projects/oasys-lib/src/lib/components/form/errors-summary/errors-summary-title/form-errors-summary-title.component.ts","../../../projects/oasys-lib/src/public-api.ts","../../../projects/oasys-lib/src/oasys-lib.ts"],"sourcesContent":["import { AfterContentChecked, Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ui-alert-cancel, [ui-alert-cancel]',\n standalone: true,\n})\nexport class OasysAlertCancelDirective implements AfterContentChecked {\n public text = '';\n private elem? = inject(ElementRef);\n\n public ngAfterContentChecked(): void {\n this.text = this.elem ? (this.elem.nativeElement as HTMLElement).innerText : '';\n }\n\n public focus(): void {\n const element = this.elem ? (this.elem.nativeElement as HTMLElement) : undefined;\n if (element && typeof element.focus === 'function') {\n const buttonElement = element.closest('button') ?? element;\n if (typeof buttonElement.focus === 'function') {\n setTimeout(() => {\n buttonElement.focus();\n }, 500);\n }\n }\n }\n}\n","import { AfterContentChecked, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: 'ui-alert-confirm, [ui-alert-confirm]',\n standalone: true,\n})\nexport class OasysAlertConfirmDirective implements AfterContentChecked {\n public text = '';\n\n constructor(private elem: ElementRef) {}\n\n public ngAfterContentChecked(): void {\n this.text = this.elem.nativeElement.innerText;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ui-alert-content, [ui-alert-content]',\n standalone: true,\n})\nexport class OasysAlertContentDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ui-alert-title, [ui-alert-title]',\n standalone: true,\n})\nexport class OasysAlertTitleDirective {}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport enum Breakpoint {\n MOBILE = '(min-width: 0px)',\n TABLET = '(min-width: 768px)',\n LAPTOP = '(min-width: 1080px)',\n DESKTOP = '(min-width: 1440px)',\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BreakpointService implements OnDestroy {\n public currentSize: BehaviorSubject<Breakpoint> = new BehaviorSubject<Breakpoint>(\n Breakpoint.MOBILE,\n );\n\n private breakpoints = [\n Breakpoint.DESKTOP,\n Breakpoint.LAPTOP,\n Breakpoint.TABLET,\n Breakpoint.MOBILE,\n ];\n\n private readonly isDestroyed = new Subject<void>();\n\n constructor(public breakpointObserver: BreakpointObserver) {\n breakpointObserver\n .observe(this.breakpoints)\n .pipe(takeUntil(this.isDestroyed))\n .subscribe((result): void => {\n for (const match of Object.keys(result.breakpoints)) {\n if (result.breakpoints[match]) {\n return this.currentSize.next(match as Breakpoint);\n }\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.isDestroyed.next();\n this.isDestroyed.complete();\n }\n}\n","\nimport { Inject, Injectable, DOCUMENT } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\n@Injectable()\nexport class TokenService {\n brandCustomPropertyName: string = '--oasys-utility-brand-slug';\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n convertRemToPixels(remString: string): number {\n const remNumber = parseFloat(remString.replace('rem', ''));\n return remNumber * parseFloat(getComputedStyle(this.document.documentElement).fontSize);\n }\n\n /*\n Get the brand name for the currently enable custom property set (ie. /bloomon/variables.css)\n Because variables are scoped via a selector (ie: ':root .bloomon {}')\n we cannot get brand-specific custom properties programatically\n\n Important: Ensure that the component requiring the brand name has locally scoped the custom property:\n | ui-icon {\n | --icon-component-brand: var(--oasys-utility-brand);\n | }\n */\n getBrandName(): Observable<string> {\n return this.waitForElement('[class*=\"brand-tokens\"]').pipe(\n take(1),\n map((el) => this.getTokenValue(this.brandCustomPropertyName, el)),\n );\n }\n\n getTokenValue(tokenName: string, element?: Element): string {\n const rootElement = element || this.document.querySelector('[class*=\"brand-tokens\"]');\n\n if (!rootElement) {\n return '';\n }\n\n return (\n this.document.defaultView.getComputedStyle(rootElement).getPropertyValue(tokenName).trim() ||\n ''\n );\n }\n\n /**\n * Waits for an element to be present in the DOM\n * @param {string} selector\n * @returns {Observable<Element>}\n */\n waitForElement(selector: string): Observable<Element> {\n return new Observable((observer) => {\n let element = this.document.querySelector(selector);\n\n if (element) {\n observer.next(element);\n observer.complete();\n }\n\n new MutationObserver((mutationRecord, mutationObserver) => {\n const el = document.querySelector(selector);\n\n if (el) {\n observer.next(el);\n observer.complete();\n mutationObserver.disconnect();\n }\n }).observe(document.documentElement, {\n childList: true,\n subtree: true,\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n Input,\n Component,\n} from '@angular/core';\nimport { TokenService } from '../../../services/token.service';\nimport {\n LayoutAlignment,\n LayoutBackgrounds,\n LayoutBackgroundsDeprecated,\n LayoutBoxSizes,\n LayoutFillModes,\n} from '../Layout';\nimport { BoxBorderColor, BoxBorderWidth, BoxBorderRadius, BoxBorderStyle } from './box';\n\n@Component({\n selector: 'ui-box',\n template: '<div class=\"ui-box-content\" [attr.role]=\"box_role\"><ng-content></ng-content></div>',\n host: {\n '[class]': 'boxLayoutClasses',\n },\n styleUrls: ['./box.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n providers: [TokenService],\n})\nexport class LayoutBoxComponent implements OnInit, OnChanges {\n @Input() box_space?: LayoutBoxSizes = 'default';\n @Input() box_role?: string | undefined;\n\n @Input() box_space_top?: LayoutBoxSizes;\n @Input() box_space_right?: LayoutBoxSizes;\n @Input() box_space_bottom?: LayoutBoxSizes;\n @Input() box_space_left?: LayoutBoxSizes;\n\n @Input() box_align_x?: LayoutAlignment = 'start';\n @Input() box_align_y?: LayoutAlignment = 'start';\n\n @Input() box_fill_mode?: LayoutFillModes = 'fill';\n\n @Input() box_background: LayoutBackgroundsDeprecated | LayoutBackgrounds = 'primary';\n\n @Input() box_content_fill_width = false;\n\n @Input() box_border_color?: BoxBorderColor = 'primary';\n @Input() box_border_width?: BoxBorderWidth = 'none';\n @Input() box_border_style?: BoxBorderStyle = 'solid';\n @Input() box_border_radius?: BoxBorderRadius = 'none';\n\n didFirstInit = false;\n prefix = 'ui-layout-box';\n boxLayoutClasses?: string[];\n backgroundIsDark = false;\n\n constructor(\n private changes: ChangeDetectorRef,\n private tokenService: TokenService,\n ) {}\n\n /**\n * Check the passed string to see if it contains JSON\n *\n * @param string\n * @returns - boolean\n */\n stringContainsJson(string: string): boolean {\n try {\n JSON.parse(string);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n getSizeClasses(spaceInput?: LayoutBoxSizes, overrideName?: string): string[] {\n if (!spaceInput || spaceInput === undefined) {\n return null;\n }\n\n // Used for responsive spacing, check if the input is either an object or JSON\n if (typeof spaceInput === 'object' || this.stringContainsJson(spaceInput)) {\n // If JSON then convert this to an object\n const spaceInputObject: LayoutBoxSizes =\n typeof spaceInput === 'object' ? spaceInput : JSON.parse(spaceInput);\n\n return Object.keys(spaceInputObject).map(\n (key): string =>\n `${this.prefix}-${spaceInputObject[key]}-${key}${overrideName ? `-${overrideName}` : ''}`,\n );\n }\n\n return [this.prefix, `${this.prefix}-${spaceInput}${overrideName ? `-${overrideName}` : ''}`];\n }\n\n getOverrideClasses(spaceOverrides: LayoutBoxSizes[]): string[][] {\n const spaceTypes = ['top', 'right', 'bottom', 'left'];\n\n return spaceOverrides\n .map((item, index): string[] => this.getSizeClasses(item, spaceTypes[index]))\n .filter(Boolean);\n }\n\n getAlignmentClasses(alignmentOverride: LayoutAlignment[]): string[] {\n const spaceTypes = ['align-x', 'distribute-y'];\n\n return alignmentOverride\n .map((item, index): string =>\n item ? `${this.prefix}-${spaceTypes[index]}-${item}` : undefined,\n )\n .filter(Boolean);\n }\n\n getBackgroundClass(): string {\n const value = this.box_background ? `${this.prefix}-background-${this.box_background}` : '';\n return value;\n }\n\n getBorderColorClass(): string {\n const value = this.box_border_color\n ? `${this.prefix}-border-color-${this.box_border_color}`\n : '';\n return value;\n }\n\n getBorderWidthClass(): string {\n const value = this.box_border_width\n ? `${this.prefix}-border-width-${this.box_border_width}`\n : '';\n return value;\n }\n\n getBorderStyleClass(): string {\n const value = this.box_border_style\n ? `${this.prefix}-border-style-${this.box_border_style}`\n : '';\n return value;\n }\n\n getBorderRadiusClass(): string {\n const value = this.box_border_radius\n ? `${this.prefix}-border-radius-${this.box_border_radius}`\n : '';\n return value;\n }\n\n ngOnChanges(): void {\n if (!this.didFirstInit) {\n return;\n }\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n const spaceOverrides = [\n this.box_space_top,\n this.box_space_right,\n this.box_space_bottom,\n this.box_space_left,\n ];\n const alignmentOverride = [this.box_align_x, this.box_align_y];\n this.backgroundIsDark =\n this.tokenService.getTokenValue(`--oasys-component-box-on-dark-${this.box_background}`) ===\n 'on-dark';\n // Basic basic classes\n this.boxLayoutClasses = [\n 'ui-layout-box',\n this.getSizeClasses(this.box_space),\n this.getOverrideClasses(spaceOverrides),\n this.getAlignmentClasses(alignmentOverride),\n this.getBackgroundClass(),\n this.getBoxModeClass(),\n this.backgroundIsDark ? 'text-color--on-dark' : '',\n this.box_content_fill_width\n ? `${this.prefix}-full-width`\n : `${this.prefix}-content-max-width`,\n this.getBorderColorClass(),\n this.getBorderWidthClass(),\n this.getBorderStyleClass(),\n this.getBorderRadiusClass(),\n ]\n .flat(10)\n .filter(Boolean);\n\n this.didFirstInit = true;\n }\n\n private getBoxModeClass(): string {\n switch (this.box_fill_mode) {\n case 'fit':\n return `${this.prefix}-fit-content`;\n case 'cover':\n return `${this.prefix}-cover-content`;\n default:\n return `${this.prefix}-fill-container`;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LayoutDirections, LayoutAlignment, LayoutGapSizes, LayoutDistribute } from '../Layout';\n\n@Component({\n selector: 'ui-stack',\n template: '<ng-content></ng-content>',\n host: {\n '[class]': 'stackLayoutClasses',\n '[attr.role]': 'stack_as_list ? \"list\" : null',\n },\n styleUrls: ['./stack.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class LayoutStackComponent implements OnInit, OnChanges {\n didFirstInit = false;\n prefix = 'ui-layout-stack';\n stackLayoutClasses?: string[];\n\n @Input() stack_gap: LayoutGapSizes = 'default';\n @Input() stack_align: LayoutAlignment = 'start';\n @Input() stack_direction: LayoutDirections = 'y';\n @Input() stack_distribute?: LayoutDistribute = 'start';\n @Input() stack_wrap?: boolean = false;\n @Input() stack_collapse_below: 'tablet' | 'laptop' | 'desktop' | 'none' = 'none';\n @Input() stack_as_list = false;\n\n constructor(private changes: ChangeDetectorRef) {}\n\n defaultDistribution(): LayoutDistribute {\n if (this.stack_distribute) {\n return this.stack_distribute;\n }\n\n return this.stack_direction === 'x' ? 'fit' : 'fill';\n }\n\n ngOnChanges(): void {\n if (!this.didFirstInit) {\n return;\n }\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n this.stack_distribute = this.defaultDistribution();\n this.stackLayoutClasses = [\n this.prefix,\n `${this.prefix}-${this.stack_gap}`,\n `${this.prefix}-align-${this.stack_align}`,\n `${this.prefix}-distribute-${this.stack_distribute}`,\n `${this.prefix}-direction-${this.stack_direction}`,\n `${this.prefix}-${this.stack_wrap ? 'wrap' : 'no-wrap'}`,\n `${this.prefix}-collapse-below-${this.stack_collapse_below}`,\n ];\n this.didFirstInit = true;\n }\n}\n","import { NgIf, NgClass } from '@angular/common';\nimport { Component, Inject, Input, OnChanges, OnInit, ViewEncapsulation, DOCUMENT } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { IconContext, IconNames } from './icon';\n\n@Component({\n selector: 'ui-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgIf, NgClass],\n providers: [TokenService],\n})\nexport class IconComponent implements OnInit, OnChanges {\n @Input() icon_size: 'small' | 'large' = 'large';\n @Input() icon_size_override?: string;\n @Input() icon_name!: IconNames;\n @Input() icon_context: IconContext = 'none';\n @Input() alt_text = '';\n\n @Input() icon_class?: string;\n\n size?: string;\n iconDisplayClasses: string[];\n iconSizeInPixels: number;\n iconPath: string;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private tokenService: TokenService,\n ) {}\n\n getSizeInPixels(size: string): number {\n const convertedSize = this.tokenService.convertRemToPixels(size);\n if (isNaN(convertedSize)) {\n return this.tokenService.convertRemToPixels('2rem');\n }\n\n return convertedSize;\n }\n\n ngOnChanges(): void {\n this.ngOnInit();\n }\n\n ngOnInit(): void {\n this.tokenService.getBrandName().subscribe((brandName): void => {\n this.iconPath = `./${brandName}/assets/icons/icons.svg#icon-${this.icon_name}`;\n\n this.size =\n this.icon_size_override ?? this.tokenService.getTokenValue('--oasys-size-unit-20');\n\n this.iconDisplayClasses = [\n `icon-context-${this.icon_context}`,\n `icon-size-${this.icon_size}`,\n ];\n\n this.iconSizeInPixels = this.getSizeInPixels(this.size);\n });\n }\n}\n","<div *ngIf=\"iconPath\" class=\"ui-icon\" [ngClass]=\"iconDisplayClasses\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"iconSizeInPixels\"\n [attr.height]=\"iconSizeInPixels\"\n [attr.class]=\"icon_class\"\n [attr.alt]=\"alt_text\"\n [attr.role]=\"alt_text.length > 0 ? 'img' : 'presentation'\"\n >\n <use [attr.xlink:href]=\"iconPath\"></use>\n </svg>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport interface IMediaBaseUrlProvider {\n readonly mediaBaseUrl: string;\n}\n\nexport const MEDIA_BASE_URL_TOKEN = new InjectionToken<IMediaBaseUrlProvider>(\n 'MEDIA_BASE_URL_TOKEN',\n);\n","import { InjectionToken } from '@angular/core';\n\nexport interface IRoutingHandlerService {\n handleRoutingOnClick(element: any, event: any): void;\n handleHrefDomains(element: any): void;\n}\n\nexport const ROUTING_HANDLER = new InjectionToken<IRoutingHandlerService>('ROUTING_HANDLER');\n","import { InjectionToken } from '@angular/core';\nimport { register } from 'swiper/element/bundle';\n\nexport interface ISwiperProvider {\n ensureSwiperRegistered(): void;\n}\n\nexport const SWIPER_PROVIDER_TOKEN = new InjectionToken<ISwiperProvider>('SWIPER_PROVIDER_TOKEN');\n\nlet hasRegistered = false;\n\nexport class SwiperProvider implements ISwiperProvider {\n ensureSwiperRegistered(): void {\n if (!hasRegistered) {\n register();\n hasRegistered = true;\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, inject, Inject } from '@angular/core';\nimport { ROUTING_HANDLER } from '../../services';\n\n@Directive({\n selector: 'a, uiHref, [uiHref]',\n standalone: true,\n})\nexport class OasysHrefDirective implements AfterViewInit {\n private readonly element = inject(ElementRef);\n private readonly routingHandler = inject(ROUTING_HANDLER);\n\n @HostListener('click', ['$event'])\n onClick(event: any): void {\n this.routingHandler.handleRoutingOnClick(this.element.nativeElement, event);\n }\n\n ngAfterViewInit(): void {\n this.routingHandler.handleHrefDomains(this.element.nativeElement);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\nimport {\n Component,\n Output,\n ViewEncapsulation,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n ViewChild,\n AfterViewInit,\n Input,\n OnInit,\n OnChanges,\n} from '@angular/core';\nimport { IconNames, IconContext } from '../icon/icon';\nimport { TextTransform } from '../text/text';\nimport { UIButton, UIButtonBoolean, UIButtonSize, UIButtonType, UIButtonEventType } from './button';\nimport { NgIf, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { OasysHrefDirective } from '../../directives/href/href.directive';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [NgIf, IconComponent, NgClass, NgTemplateOutlet, OasysHrefDirective],\n})\nexport class OasysButtonComponent implements AfterViewInit, OnInit, OnChanges {\n @Output() clicked = new EventEmitter<void>();\n @ViewChild('buttontext') ngContent?: ElementRef<HTMLElement>;\n\n @Input() button_icon: IconNames | undefined;\n @Input() button_icon_placement: IconContext = 'leading';\n @Input() button_size: UIButtonSize = 'large';\n @Input() button_type: UIButtonType = 'primary';\n @Input() button_full_width: UIButtonBoolean = false;\n @Input() button_event_type: UIButtonEventType = 'button';\n @Input() button_disabled: UIButtonBoolean = false;\n @Input() button_selected: UIButtonBoolean = false;\n @Input() button_text_nowrap: UIButtonBoolean = false;\n @Input() aria_label: string | undefined;\n @Input() aria_role = 'button';\n @Input() href: string | undefined;\n\n button?: UIButton;\n iconContext: IconContext = 'none';\n textTransform!: TextTransform;\n outlineButtonTypes = ['secondary', 'secondary-inverse'];\n computedAccessibleButtonContent = '';\n computedButtonDisplayClasses: string[] = [];\n\n constructor(private elementRef?: ElementRef<HTMLInputElement>) {}\n\n onClick(): void {\n this.clicked.emit();\n }\n\n ngOnInit(): void {\n this.computedAccessibleButtonContent = this.accessibleButtonContent();\n this.computedButtonDisplayClasses = this.buttonDisplayClasses();\n }\n\n /**\n * required because signals cannot be used here to force change detection on strings computed from inputs\n * TODO - migrate inputs to InputSignals when Angular supports it within angular 19.\n * Issue - https://github.com/angular/angular/issues/53981\n */\n ngOnChanges(): void {\n this.computedAccessibleButtonContent = this.accessibleButtonContent();\n this.computedButtonDisplayClasses = this.buttonDisplayClasses();\n }\n\n ngAfterViewInit(): void {\n if (!this.aria_label && !this.ngContent && !this.elementRef?.nativeElement.innerText.length) {\n throw new Error(`\n No inner text found. All buttons should have text passed via ng-content to enable accessibility for screen readers, \\\n this includes icon-only buttons.\n Pass content using the example templates:\n // Example 1\n ui-button() Buy All The Things\n // Example 2\n ui-button()\n span Buy All The Things\n `);\n }\n }\n\n private accessibleButtonContent = (): string => {\n if (this.aria_label) {\n return this.aria_label;\n } else if (this.ngContent?.nativeElement?.innerText?.length) {\n return this.ngContent?.nativeElement?.innerText;\n } else if (!this.ngContent && this.elementRef?.nativeElement?.innerText?.length) {\n return this.elementRef?.nativeElement?.innerText;\n }\n return '';\n };\n\n private buttonDisplayClasses = (): string[] =>\n [\n `type-${this.button_type}`,\n `size-${this.button_size}`,\n this.button_icon ? 'button--has-icon' : '',\n this.button_text_nowrap ? 'button--nowrap' : '',\n this.button_full_width ? 'button--full-width' : '',\n this.button_icon ? 'button--icon--' + this.button_icon_placement : '',\n this.outlineButtonTypes.includes(this.button_type) ? 'button--outline' : '',\n this.button_selected ? 'button--selected' : '',\n this.button_type === 'chip' ? 'button--chip' : '',\n ].filter(Boolean);\n}\n","<ng-template #content>\n <div class=\"button-content\">\n <ui-icon\n *ngIf=\"button_icon && button_icon_placement !== 'none'\"\n [icon_name]=\"button_icon\"\n [icon_size]=\"button_size\"\n [icon_class]=\"'buttonIcon'\"\n [icon_context]=\"button_icon_placement\"\n ></ui-icon>\n <span class=\"ui-text\" [ngClass]=\"{ visuallyhidden: button_icon_placement === 'iconOnly' }\">\n <span #buttontext>\n <ng-content></ng-content>\n </span>\n </span>\n </div>\n <div class=\"button-overlay\"></div>\n <div class=\"button-overlay-focus\"></div>\n</ng-template>\n\n<button\n *ngIf=\"!href\"\n (click)=\"onClick()\"\n [type]=\"button_event_type\"\n [ngClass]=\"computedButtonDisplayClasses\"\n [attr.disabled]=\"button_disabled === true || null\"\n [attr.aria-label]=\"computedAccessibleButtonContent\"\n [attr.role]=\"aria_role\"\n [attr.aria-checked]=\"aria_role === 'checkbox' || aria_role === 'switch' ? button_selected : null\"\n>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</button>\n\n<a\n *ngIf=\"href\"\n [href]=\"href\"\n [attr.disabled]=\"button_disabled === true || null\"\n [attr.aria-label]=\"computedAccessibleButtonContent\"\n [ngClass]=\"computedButtonDisplayClasses\"\n>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n","import {\n AfterContentChecked,\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint.service';\nimport { OasysAlertCancelDirective } from './alert-cancel.directive';\nimport { OasysAlertConfirmDirective } from './alert-confirm.directive';\nimport { UIButtonSize } from '../button/button';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault, NgIf } from '@angular/common';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { IconComponent } from '../icon/icon.component';\nimport { OasysButtonComponent } from '../button/button.component';\n\nexport type UIAlertTone = 'positive' | 'neutral' | 'negative';\n\n@Component({\n selector: 'ui-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n NgClass,\n LayoutStackComponent,\n NgSwitch,\n NgSwitchCase,\n IconComponent,\n NgSwitchDefault,\n NgIf,\n OasysButtonComponent,\n ],\n})\nexport class OasysAlertComponent implements AfterContentChecked, AfterViewInit {\n @Input()\n public direction: 'dynamic' | 'vertical' | 'horizontal' = 'dynamic';\n\n @Input()\n public tone: UIAlertTone = 'neutral';\n\n @Input() aria_live: 'polite' | 'assertive' | 'off' = 'polite';\n\n @Input() button_size: UIButtonSize = 'large';\n\n // adding this ignore because changing this value requires a breaking change in FE monolith\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() public cancel: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public confirm: EventEmitter<void> = new EventEmitter<void>();\n\n @ContentChild(OasysAlertCancelDirective)\n public cancelButton?: OasysAlertCancelDirective;\n\n @ContentChild(OasysAlertConfirmDirective)\n public confirmButton?: OasysAlertConfirmDirective;\n\n @ViewChild('cancelbuttoncontainer', { read: ElementRef })\n cancelbuttoncontainer?: ElementRef<HTMLElement>;\n\n @ViewChild('alertHost', { read: ElementRef })\n alertHost?: ElementRef<HTMLElement>;\n\n private wasVisible = false;\n private hasFocusedOnCurrentVisibility = false;\n private ariaLiveElement?: HTMLElement;\n\n constructor(public breakpointService: BreakpointService) {}\n\n get isVertical(): boolean {\n switch (this.direction) {\n case 'vertical':\n return true;\n case 'horizontal':\n return false;\n default: {\n return this.breakpointService.currentSize.value === Breakpoint.MOBILE;\n }\n }\n }\n\n get buttonSize(): UIButtonSize {\n return this.breakpointService.currentSize.value === Breakpoint.MOBILE\n ? 'small'\n : this.button_size;\n }\n\n public cancelled(): void {\n this.cancel.emit();\n }\n\n public confirmed(): void {\n this.confirm.emit();\n }\n\n ngAfterViewInit(): void {\n this.ariaLiveElement = this.alertHost?.nativeElement;\n this.checkVisibilityAndFocus();\n }\n\n ngAfterContentChecked(): void {\n this.checkVisibilityAndFocus();\n }\n\n private checkVisibilityAndFocus(): void {\n const isVisible = this.isComponentVisible();\n if (isVisible && !this.wasVisible && this.ariaLiveElement && !this.cancelButton) {\n // Temporarily remove and re-add aria-live to force screenreader announcement\n // This tricks screenreaders into treating it as a new aria-live region\n const currentAriaLive = this.aria_live;\n this.ariaLiveElement.removeAttribute('aria-live');\n this.ariaLiveElement.removeAttribute('role');\n\n // Use requestAnimationFrame and setTimeout to ensure the DOM update cycle completes\n // This gives screenreaders time to recognize the change\n requestAnimationFrame(() => {\n setTimeout(() => {\n if (this.ariaLiveElement && this.isComponentVisible()) {\n this.ariaLiveElement.setAttribute('aria-live', currentAriaLive);\n this.ariaLiveElement.setAttribute('role', 'alert');\n }\n }, 50);\n });\n }\n\n // only move focus if there is a button that requires focus\n if (!this.cancelButton) {\n this.wasVisible = isVisible;\n return;\n }\n\n // Only focus when transitioning from hidden to visible\n if (isVisible && (!this.wasVisible || !this.hasFocusedOnCurrentVisibility)) {\n // Use setTimeout to ensure the DOM is fully updated before focusing\n // This is (apparently) similar to how aria-live waits for the DOM update cycle\n setTimeout(() => {\n if (this.isComponentVisible() && this.cancelButton) {\n const hostElement = this.alertHost?.nativeElement;\n hostElement?.focus();\n this.hasFocusedOnCurrentVisibility = true;\n }\n }, 0);\n }\n\n // Reset focus flag when component becomes hidden\n if (!isVisible) {\n this.hasFocusedOnCurrentVisibility = false;\n }\n\n this.wasVisible = isVisible;\n }\n\n private isComponentVisible(): boolean {\n const hostElement = this.alertHost?.nativeElement;\n if (!hostElement) return false;\n\n const style = window.getComputedStyle(hostElement);\n\n if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') {\n return false;\n }\n\n // Check if element is in the DOM and has dimensions\n if (hostElement.offsetParent === null && style.position !== 'fixed') {\n return false;\n }\n\n return true;\n }\n}\n","<ui-box class=\"ui-alert\" box_space=\"near\" box_align_x=\"center\" [ngClass]=\"tone\">\n <ui-stack stack_direction=\"x\" stack_gap=\"near\">\n <div class=\"badge\" [ngClass]=\"tone\" [ngSwitch]=\"tone\">\n <ui-icon *ngSwitchCase=\"'negative'\" icon_name=\"error\"></ui-icon>\n <ui-icon *ngSwitchCase=\"'positive'\" icon_name=\"tick\"></ui-icon>\n <ui-icon *ngSwitchDefault icon_name=\"info\"></ui-icon>\n </div>\n\n <ui-stack stack_gap=\"near\" [stack_direction]=\"isVertical ? 'y' : 'x'\">\n <ui-stack\n #alertHost\n class=\"content\"\n stack_direction=\"y\"\n role=\"alert\"\n [attr.aria-live]=\"cancelButton ? 'off' : aria_live\"\n [tabindex]=\"cancelButton ? -1 : 0\"\n >\n <div class=\"text-body--emphasis\">\n <ng-content select=\"ui-alert-title\"></ng-content>\n </div>\n <div>\n <ng-content select=\"ui-alert-content\"></ng-content>\n </div>\n </ui-stack>\n\n <ui-box\n box_space=\"none\"\n box_background=\"transparent\"\n [box_fill_mode]=\"isVertical ? 'fill' : 'fit'\"\n >\n <ui-stack\n [stack_wrap]=\"isVertical\"\n stack_direction=\"x\"\n stack_gap=\"near\"\n stack_distribute=\"end\"\n >\n <ui-button\n *ngIf=\"cancelButton && cancelButton.text\"\n #cancelbuttoncontainer\n button_type=\"tertiary\"\n [button_size]=\"buttonSize\"\n [button_text_nowrap]=\"!isVertical\"\n (clicked)=\"cancelled()\"\n >\n <ng-content select=\"ui-alert-cancel\"></ng-content>\n </ui-button>\n <ui-button\n *ngIf=\"confirmButton && confirmButton.text\"\n button_type=\"secondary\"\n [button_size]=\"buttonSize\"\n [button_text_nowrap]=\"!isVertical\"\n (clicked)=\"confirmed()\"\n >\n <ng-content select=\"ui-alert-confirm\"></ng-content>\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { OasysAlertCancelDirective } from './alert-cancel.directive';\nimport { OasysAlertConfirmDirective } from './alert-confirm.directive';\nimport { OasysAlertContentDirective } from './alert-content.directive';\nimport { OasysAlertTitleDirective } from './alert-title.directive';\nimport { OasysAlertComponent } from './alert.component';\n\n@NgModule({\n imports: [\n OasysAlertCancelDirective,\n OasysAlertConfirmDirective,\n OasysAlertContentDirective,\n OasysAlertTitleDirective,\n OasysAlertComponent,\n ],\n exports: [\n OasysAlertCancelDirective,\n OasysAlertConfirmDirective,\n OasysAlertContentDirective,\n OasysAlertTitleDirective,\n OasysAlertComponent,\n ],\n})\nexport class OasysAlertModule {}\n","import { OnInit, ViewEncapsulation } from '@angular/core';\nimport { Input } from '@angular/core';\nimport { Component } from '@angular/core';\nimport { NgIf, NgFor } from '@angular/common';\nimport { LayoutBoxComponent } from '../../layout/box/box.component';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { OasysButtonComponent } from '../../button/button.component';\nimport { IconComponent } from '../../icon/icon.component';\n\ninterface BreadcrumbsItem {\n href: string;\n name: string;\n}\n@Component({\n selector: 'ui-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n NgIf,\n LayoutBoxComponent,\n LayoutStackComponent,\n NgFor,\n OasysButtonComponent,\n IconComponent,\n ],\n})\nexport class BreadcrumbsComponent implements OnInit {\n @Input() breadcrumbs_values: string | BreadcrumbsItem[];\n values: BreadcrumbsItem[];\n\n ngOnInit(): void {\n if (typeof this.breadcrumbs_values === 'string') {\n this.values = JSON.parse(this.breadcrumbs_values) ?? [];\n } else {\n this.values = this.breadcrumbs_values;\n }\n }\n}\n","<ui-box box_fill_mode=\"fill\" box_space=\"near\" box_background=\"core-secondary\" *ngIf=\"values\">\n <nav aria-label=\"breadcrumbs\">\n <ui-stack stack_gap=\"none\" stack_direction=\"x\" stack_align=\"center\" [stack_wrap]=\"true\">\n <ng-container *ngFor=\"let item of values; let i = index\">\n <!-- Link followed by an icon -->\n <ui-box box_space=\"none\" box_background=\"transparent\" box_fill_mode=\"fit\">\n <ui-stack stack_direction=\"x\" stack_align=\"center\" [stack_wrap]=\"false\" stack_gap=\"none\">\n <ui-button\n *ngIf=\"i < values.length - 1\"\n button_size=\"small\"\n button_type=\"tertiary\"\n href=\"{{ item.href }}\"\n >\n <span> {{ item.name }} </span>\n </ui-button>\n <ui-icon\n *ngIf=\"i < values.length - 1\"\n icon_name=\"chevron-right\"\n icon_size=\"small\"\n icon_class=\"buttonIcon\"\n aria-hidden=\"true\"\n ></ui-icon>\n </ui-stack>\n </ui-box>\n <!-- Last link and current page -->\n <ui-button\n *ngIf=\"i === values.length - 1\"\n button_size=\"small\"\n button_type=\"tertiary\"\n href=\"{{ item.href }}\"\n [attr.aria-current]=\"item.name\"\n >\n <span> {{ item.name }} </span>\n </ui-button>\n </ng-container>\n </ui-stack>\n </nav>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { BreadcrumbsComponent } from './breadcrumbs.component';\n\n@NgModule({\n imports: [BreadcrumbsComponent],\n exports: [BreadcrumbsComponent],\n})\nexport class OasysBreadcrumbModule {}\n","import { NgModule } from '@angular/core';\nimport { OasysButtonComponent } from './button.component';\n\n@NgModule({\n imports: [OasysButtonComponent],\n exports: [OasysButtonComponent],\n})\nexport class OasysButtonModule {}\n","\nimport {\n Component,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnChanges,\n ContentChild,\n ElementRef,\n AfterViewInit,\n Inject,\n HostBinding,\n DOCUMENT\n} from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint.service';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\n\n@Component({\n selector: 'ui-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n encapsulation: ViewEncapsulation.None, // to hide non ui-buttons via css\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [LayoutStackComponent],\n})\nexport class OasysButtonGroupComponent implements OnInit {\n prefix: '';\n\n @Input() button_group_align: 'start' | 'center' | 'end' = 'start';\n @Input() button_group_collapse_below: 'tablet' | 'laptop' | 'desktop' | 'none' = 'tablet';\n\n // Used for only 'ghost' buttons (button_type=\"tertiary\")\n // applies a negative X margin so that the text of a button aligns with\n // other content. Do not use unless all buttons are of type Tertiary.\n @Input() button_group_ghost_align: 'none' | 'small' | 'large' = 'none';\n\n @HostBinding('class') get class() {\n return `\n ui-button-group-ghost-${this.button_group_ghost_align}\n `;\n }\n\n constructor(private breakpointService: BreakpointService) {}\n\n ngOnInit(): void {}\n\n get shouldCollapse(): boolean {\n switch (this.button_group_collapse_below) {\n case 'tablet':\n return this.breakpointService.currentSize.value === Breakpoint.MOBILE;\n case 'laptop':\n return (\n this.breakpointService.currentSize.value === Breakpoint.MOBILE ||\n this.breakpointService.currentSize.value === Breakpoint.TABLET\n );\n case 'desktop':\n return (\n this.breakpointService.currentSize.value === Breakpoint.MOBILE ||\n this.breakpointService.currentSize.value === Breakpoint.TABLET ||\n this.breakpointService.currentSize.value === Breakpoint.LAPTOP\n );\n default:\n return false;\n }\n }\n}\n","<ui-stack\n stack_gap=\"near\"\n stack_direction=\"x\"\n [stack_collapse_below]=\"button_group_collapse_below\"\n [stack_distribute]=\"button_group_align\"\n>\n <ng-content></ng-content>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { OasysButtonGroupComponent } from './button-group.component';\n\n@NgModule({\n imports: [OasysButtonGroupComponent],\n exports: [OasysButtonGroupComponent],\n})\nexport class OasysButtonGroupModule {}\n","import { Injectable, inject } from '@angular/core';\nimport { MEDIA_BASE_URL_TOKEN } from './media-base-url.provider';\n\ntype ImageFormat = 'webp' | 'jpg';\ntype ImageCDNs = 'contentful' | 'thumbor' | undefined;\n\nexport interface ImageResponse {\n srcSetUrls: string;\n fallbackUrl: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ImageService {\n private readonly mediaUrl = inject(MEDIA_BASE_URL_TOKEN).mediaBaseUrl;\n private fallbackBreakpoint = 768;\n\n private breakpoints: number[] = [\n 320, 360, 375, 414, 640, 750, 768, 1080, 1280, 1366, 1440, 1536, 1600, 1680, 1920, 2560, 3440,\n 3840,\n ];\n\n private getQualityForWidth(width: number): number {\n return width > 1440 ? 50 : 75;\n }\n\n private generateUrl(\n baseUrl: string,\n format: ImageFormat,\n width: number,\n quality: number,\n cdnType: ImageCDNs,\n ): string {\n switch (cdnType) {\n case 'thumbor':\n return `${this.mediaUrl}/v1/${width}x0/filters:format(${format}):quality(${quality})/${baseUrl}`;\n case 'contentful':\n return `${baseUrl}?w=${width}&fm=${format}&q=${quality}`;\n default:\n return baseUrl;\n }\n }\n\n private generateUrls(\n baseUrl: string,\n format: ImageFormat,\n sizes: number[],\n isFallback: boolean,\n cdnType: ImageCDNs,\n ): string {\n return sizes\n .map((width) => {\n const quality = isFallback ? 100 : this.getQualityForWidth(width);\n const url = this.generateUrl(baseUrl, format, width, quality, cdnType);\n return isFallback ? url : `${url} ${width}w`;\n })\n .join(', ');\n }\n\n private detectCdnType(baseUrl: string): ImageCDNs {\n if (\n baseUrl.includes('assets-0.bloomandwild.com') ||\n baseUrl.includes('bw-site-images-processed-staging.s3.amazonaws.com')\n ) {\n return 'thumbor';\n } else if (baseUrl.includes('images.ctfassets.net/')) {\n return 'contentful';\n }\n\n return undefined;\n }\n\n private getImageUrlsFromCDN(\n baseUrl: string,\n format: ImageFormat,\n sizes: number[],\n isFallback: boolean,\n ): string {\n const cdnType = this.detectCdnType(baseUrl);\n\n if (isFallback) {\n sizes = [this.fallbackBreakpoint];\n }\n\n return this.generateUrls(baseUrl, format, sizes, isFallback, cdnType);\n }\n\n public generateImageUrl(baseUrl: string): ImageResponse {\n return {\n srcSetUrls: this.getImageUrlsFromCDN(baseUrl, 'webp', this.breakpoints, false),\n fallbackUrl: this.getImageUrlsFromCDN(baseUrl, 'jpg', this.breakpoints, true),\n } as ImageResponse;\n }\n\n public getImageSizes(): string {\n return this.breakpoints.map((size) => `(max-width: ${size}px) ${size}px`).join(', ');\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n signal,\n SimpleChanges,\n} from '@angular/core';\nimport { ImageService } from '../../services/image.service';\nimport { ImageAspectRatio, ImageFetchPriority, ImageLoading, UIImage } from './image';\nimport { NgStyle } from '@angular/common';\n\n/**\n * ImageComponent is a reusable component. Necessary accessibility attributes are set by default for a decorative image.\n * alt text and airia described by text can be set to make the image non-decorative.\n *\n * TODO - migrate inputs to InputSignals when Angular supports it within angular 19.\n * Issue - https://github.com/angular/angular/issues/53981\n */\n@Component({\n standalone: true,\n imports: [NgStyle],\n selector: 'ui-image',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n})\nexport class ImageComponent implements OnInit, OnChanges, OnDestroy {\n @Input({ required: true }) image_src: string;\n @Input() image_alt_text = ''; // Default set here so images are set as decorative by default\n @Input() image_aria_describedby: string | null = null;\n @Input() image_fill = false;\n @Input() fetchpriority: ImageFetchPriority = 'auto';\n @Input() loading: ImageLoading = 'lazy';\n @Input() preload_aspect_ratio: ImageAspectRatio = '1:1';\n @Input() image_width: number | null = null; // source when defining sizes either relates on viewport width or a specificed width in pixels\n\n @Output() readonly image_loaded = new EventEmitter<void>();\n\n private readonly imageService = inject(ImageService);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\n\n readonly image = signal<UIImage | null>(null);\n readonly imageSizes = this.imageService.getImageSizes();\n\n private intersectionObserver: IntersectionObserver | null = null;\n\n @HostBinding('class') get class() {\n return `${this.image_fill ? 'imageFill' : ''}`;\n }\n\n /**\n * On init lifecycle hook to create the image.\n */\n ngOnInit(): void {\n this.createImage();\n void this.setupLazyLoading();\n }\n\n /**\n * On changes, handle any changes in input properties.\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['image_src'] || changes['image_width'] || changes['preload_aspect_ratio']) {\n this.createImage();\n this.cleanupObserver();\n this.setupLazyLoading();\n }\n }\n\n /**\n * Clean up the observer when the component is destroyed.\n */\n ngOnDestroy(): void {\n this.cleanupObserver();\n }\n\n /**\n * Creates the image object with the provided properties.\n */\n createImage(): void {\n const ratios = this.preload_aspect_ratio.split(':');\n const imageUrlResponse = this.imageService.generateImageUrl(this.image_src);\n\n const newImage: UIImage = {\n ...imageUrlResponse,\n ratioWidth: parseInt(ratios[0], 10),\n ratioHeight: parseInt(ratios[1], 10),\n loading: this.loading,\n fill: this.image_fill,\n fetchpriority: this.fetchpriority,\n preloadAspectRatio: this.preload_aspect_ratio,\n width: this.image_width ? `${this.image_width}px` : null,\n altText: this.image_alt_text,\n ariaDescribedby: this.image_aria_describedby ?? null,\n };\n this.image.set(newImage);\n }\n\n /**\n * Sets up lazy loading for the image using IntersectionObserver.\n * This method observes the image element and loads the image when it comes into view.\n * It sets the `src` attribute for the image and the `srcset` attribute for the source element.\n * The observer is configured to remove the image after it has been observed to save memory.\n */\n private setupLazyLoading(): Promise<void> {\n return Promise.resolve().then((): void => {\n // Defer setup until after the view is initialized to ensure the <img> element exists.\n const imageElement = this.el.nativeElement.querySelector('img');\n if (!imageElement) {\n return;\n }\n\n this.intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const img = entry.target as HTMLImageElement;\n const source = img.parentElement?.querySelector('source');\n\n // Move the URL from data-src to src\n const dataSrc = img.getAttribute('data-src');\n if (dataSrc) {\n img.setAttribute('src', dataSrc);\n }\n\n // Move the URLs from data-srcset to srcset\n if (source) {\n const dataSrcset = source.getAttribute('data-srcset');\n if (dataSrcset) {\n source.setAttribute('srcset', dataSrcset);\n }\n }\n\n // Stop observing this image once it's loaded.\n this.intersectionObserver?.unobserve(img);\n }\n });\n },\n {\n root: null,\n rootMargin: '100px',\n threshold: 0.01,\n },\n );\n this.intersectionObserver.observe(imageElement);\n });\n }\n\n /**\n * Cleans up the IntersectionObserver to prevent memory leaks.\n * This method disconnects the observer and sets it to null.\n */\n private cleanupObserver(): void {\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n this.intersectionObserver = null;\n }\n }\n}\n","@if (image()) {\n <picture>\n <source\n [attr.sizes]=\"image().width ?? imageSizes\"\n [attr.srcset]=\"null\"\n [attr.data-srcset]=\"image().srcSetUrls\"\n type=\"image/webp\"\n />\n\n <img\n [class.imageFill]=\"image().fill\"\n [attr.width]=\"image().ratioWidth\"\n [attr.height]=\"image().ratioHeight\"\n [attr.src]=\"null\"\n [attr.data-src]=\"image().fallbackUrl\"\n [attr.loading]=\"image().loading\"\n [attr.fetchpriority]=\"image().fetchpriority\"\n [attr.alt]=\"image().altText\"\n [attr.aria-describedby]=\"image().ariaDescribedby\"\n [ngStyle]=\"{ 'aspect-ratio': image().preloadAspectRatio }\"\n (load)=\"image_loaded.emit()\"\n [attr.role]=\"image().altText?.length > 0 ? 'img' : 'presentation'\"\n />\n </picture>\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { CardImageFormat } from './card';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { NgStyle, NgIf } from '@angular/common';\nimport { ImageComponent } from '../image/image.component';\n@Component({\n selector: 'ui-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n standalone: true,\n imports: [LayoutBoxComponent, LayoutStackComponent, NgStyle, ImageComponent, NgIf],\n providers: [TokenService],\n})\nexport class CardComponent implements OnInit, AfterViewInit {\n // We need to know the label height so that we can adjust the parent stack placement\n @ViewChild('imagelabel', { static: false, read: ElementRef }) imageLabel: ElementRef;\n\n // Card image variables\n @Input() label_text: string;\n @Input() image: string;\n @Input() alt_text: string;\n @Input() image_format: CardImageFormat;\n aspectRatio: string;\n\n // Card content variables\n @Input() small_title_left: string;\n @Input() small_sub_title_right: string;\n @Input() standard_content: string;\n @Input() bold_content: string;\n stackOffset: string;\n\n constructor(private tokenService: TokenService) {}\n\n ngOnInit(): void {\n this.aspectRatio = this.setImageAspectRatio(this.image_format);\n }\n\n ngAfterViewInit(): void {\n this.setStackPlacement();\n }\n\n /**\n * This calculates the stack offset based on the image labels height.\n */\n @HostListener('window:resize', ['$event'])\n setStackPlacement(): void {\n this.stackOffset = `calc(-${\n this.imageLabel?.nativeElement?.offsetHeight / 2\n }px - ${this.tokenService.getTokenValue('--oasys-spacing-tight')}`;\n }\n\n /**\n * This function retrieves the appropriate design token value based on the passed imageFormat choice\n *\n * @param format - The format of the image e.g. square, portrait, landscape\n * @returns - string to be used as the aspect ratio\n */\n setImageAspectRatio(format: CardImageFormat): string {\n switch (format) {\n case 'square':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-square');\n case 'portrait':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-portrait');\n case 'landscape':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-landscape');\n default:\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-portrait');\n }\n }\n}\n","<ui-box class=\"ui-card\" box_background=\"core-primary\" box_space=\"none\">\n <ui-stack stack_align=\"center\" stack_gap=\"tight\">\n <ui-box\n class=\"ui-card__image\"\n [ngStyle]=\"{ 'aspect-ratio': aspectRatio }\"\n box_background=\"transparent\"\n box_align_x=\"center\"\n box_space=\"none\"\n >\n <ui-image [image_src]=\"image\" [image_alt_text]=\"alt_text\" [image_fill]=\"true\"></ui-image>\n </ui-box>\n <ui-stack stack_gap=\"tight\" [ngStyle]=\"{ 'margin-top': stackOffset }\">\n <ui-box\n #imagelabel\n *ngIf=\"label_text\"\n class=\"card__image-label center-content\"\n box_background=\"tint-highlight\"\n box_align_x=\"center\"\n box_align_y=\"center\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"tight\"\n box_space_top=\"tight\"\n >\n <h5>{{ label_text }}</h5>\n </ui-box>\n <ui-box\n *ngIf=\"small_title_left || small_sub_title_right\"\n [box_space_top]=\"label_text ? 'none' : 'tight'\"\n box_space=\"none\"\n box_background=\"transparent\"\n >\n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_gap=\"tight\">\n <span class=\"text-body--supporting text-color--supporting\">{{ small_title_left }}</span>\n <span class=\"text-body--supporting text-color--supporting\">{{\n small_sub_title_right\n }}</span>\n </ui-stack>\n </ui-box>\n <p *ngIf=\"standard_content\" class=\"text-label--default center-content\">\n {{ standard_content }}\n </p>\n <p *ngIf=\"bold_content\" class=\"text-label--primary text-body--emphasis\">{{ bold_content }}</p>\n </ui-stack>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { CardComponent } from './card.component';\n\n@NgModule({\n imports: [CardComponent],\n exports: [CardComponent],\n})\nexport class OasysCardModule {}\n","import { Input, ViewEncapsulation } from '@angular/core';\nimport { Component } from '@angular/core';\nimport { DividerType } from './divider';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ui-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [LayoutBoxComponent, NgClass],\n})\nexport class DividerComponent {\n @Input()\n divider_type: DividerType = 'secondary';\n\n getClass(): string {\n return this.divider_type === 'secondary'\n ? `ui-divider--type-${this.divider_type}`\n : `ui-divider--type-${this.divider_type}`;\n }\n}\n","<ui-box\n box_fill_mode=\"fill\"\n box_space=\"none\"\n box_background=\"core-secondary\"\n [ngClass]=\"getClass()\"\n></ui-box>\n","import { NgModule } from '@angular/core';\nimport { DividerComponent } from './divider.component';\n\n@NgModule({\n imports: [DividerComponent],\n exports: [DividerComponent],\n})\nexport class OasysDividerModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\n\n@Component({\n selector: 'ui-form-group',\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass, LayoutStackComponent],\n})\nexport class FormGroupComponent {\n /**\n * Required\n * Set the title to automatically show the correctly styled heading/legend\n */\n @Input() group_title: string;\n\n /**\n * Hide the title of the form group but it remains accessible to screen readers.\n */\n @Input() group_title_hidden: boolean = false;\n\n /**\n * Affects which type title text and input is shown\n */\n @Input() group_type: 'primary' | 'secondary' = 'primary';\n}\n","<fieldset>\n <legend\n [ngClass]=\"{\n 'visually-hidden': group_title_hidden,\n primary: group_type === 'primary',\n secondary: group_type === 'secondary',\n }\"\n >\n {{ group_title }}\n </legend>\n <ui-stack stack_gap=\"near\">\n <ng-content></ng-content>\n </ui-stack>\n</fieldset>\n","import { NgModule } from '@angular/core';\nimport { FormGroupComponent } from './form-group.component';\n\n@NgModule({\n imports: [FormGroupComponent],\n exports: [FormGroupComponent],\n})\nexport class OasysFormGroupModule {}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { TokenService } from '../../../services/token.service';\nimport { IconNames } from '../../icon/icon';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'ui-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n TokenService,\n ],\n standalone: true,\n imports: [LayoutStackComponent, ReactiveFormsModule, FormsModule, NgClass, IconComponent, NgIf],\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit {\n @Input() checkbox_type: 'primary' | 'secondary' = 'primary';\n\n // Required for chip component\n @Input() hide_checkbox: boolean = false;\n @Input() iconName?: IconNames;\n\n @Input() label?: string;\n @Input() checked: boolean;\n @Input() required: boolean;\n @Output() didChange: EventEmitter<boolean> = new EventEmitter();\n\n id: string | number;\n iconSize: string;\n\n constructor(private tokenService: TokenService) {}\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(checked: boolean): void {\n this.checked = checked;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onModelChange(event: boolean) {\n this.checked = event;\n this.onChange(event);\n this.didChange.emit(event);\n this.onTouched();\n }\n\n ngOnInit(): void {\n this.id = this.label + Math.random();\n this.iconSize = this.tokenService.getTokenValue(\n `--oasys-component-checkbox-icon-size-${this.checkbox_type}`,\n );\n }\n}\n","<ui-stack stack_direction=\"x\" stack_gap=\"near\" stack class=\"ui-checkbox\">\n <input\n type=\"checkbox\"\n [required]=\"required\"\n [id]=\"id\"\n [ngModel]=\"checked\"\n (ngModelChange)=\"onModelChange($event)\"\n [attr.checked]=\"checked || null\"\n [ngClass]=\"checkbox_type\"\n />\n <label [for]=\"id\" [ngClass]=\"checkbox_type\">\n <ui-stack\n stack_gap=\"near\"\n [stack_align]=\"hide_checkbox ? 'center' : 'start'\"\n stack_direction=\"x\"\n >\n <div\n class=\"icon-container\"\n [ngClass]=\"{\n 'focus-element': checkbox_type === 'secondary',\n 'icon--hidden': hide_checkbox,\n }\"\n aria-hidden=\"true\"\n >\n <ui-icon\n icon_name=\"tick\"\n [icon_size_override]=\"iconSize\"\n icon_class=\"checkboxIcon\"\n ></ui-icon>\n </div>\n <ui-stack stack_gap=\"tight\">\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n [ngClass]=\"checkbox_type === 'primary' ? 'text-body--default' : 'text-body--supporting'\"\n >\n <ui-icon\n *ngIf=\"hide_checkbox && iconName\"\n [icon_name]=\"iconName\"\n icon_size=\"small\"\n aria-hidden=\"true\"\n ></ui-icon>\n <span class=\"main-label\">{{ label }}</span>\n <ng-content select=\"[tertiary-content]\"></ng-content>\n </ui-stack>\n <span class=\"input-hint text-body--regular text-body--supporting text-color--supporting\"\n ><ng-content></ng-content\n ></span>\n </ui-stack>\n </ui-stack>\n </label>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [CheckboxComponent],\n exports: [CheckboxComponent],\n})\nexport class OasysCheckboxModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { IconNames } from '../../icon/icon';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'ui-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [LayoutStackComponent, ReactiveFormsModule, FormsModule, NgClass, NgIf, IconComponent],\n})\nexport class RadioComponent implements ControlValueAccessor, OnInit {\n @Input() radio_type: 'primary' | 'secondary' = 'primary';\n\n // Required for chip component\n @Input() hide_radio: boolean = false;\n @Input() iconName?: IconNames;\n\n @Input() label?: string;\n @Input() value?: string;\n @Input() name?: string;\n @Input() checked?: boolean;\n\n @Output() didChange: EventEmitter<string> = new EventEmitter();\n\n id: string | number;\n iconSize: string;\n\n selectedValue: string;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n selectOption() {\n this.onChange(this.value);\n this.onTouched();\n }\n\n writeValue(value: string): void {\n this.selectedValue = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onModelChange(event: string) {\n this.value = event;\n this.onChange(event);\n this.didChange.emit(event);\n this.onTouched();\n }\n\n ngOnInit(): void {\n this.id = this.label + Math.random();\n }\n}\n","<ui-stack stack_direction=\"x\" stack_gap=\"near\" stack class=\"ui-radio\">\n <input\n role=\"radio\"\n type=\"radio\"\n [id]=\"id\"\n [value]=\"value\"\n [ngModel]=\"selectedValue\"\n (ngModelChange)=\"onModelChange($event)\"\n [ngClass]=\"radio_type\"\n [name]=\"name\"\n [checked]=\"checked\"\n />\n <label [for]=\"id\" [ngClass]=\"radio_type\">\n <ui-stack stack_gap=\"near\" [stack_align]=\"hide_radio ? 'center' : 'start'\" stack_direction=\"x\">\n <div [ngClass]=\"{ 'icon--hidden': hide_radio, 'icon-container': true }\">\n <div class=\"dot\"></div>\n </div>\n <ui-stack stack_gap=\"tight\">\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_gap=\"near\"\n [ngClass]=\"radio_type === 'primary' ? 'text-body--default' : 'text-body--supporting'\"\n >\n <ui-icon\n *ngIf=\"hide_radio && iconName\"\n [icon_name]=\"iconName\"\n icon_size=\"small\"\n ></ui-icon>\n <span class=\"main-label\" [ngClass]=\"{ 'label--center': hide_radio }\">{{ label }}</span>\n <ng-content select=\"[tertiary-content]\"></ng-content>\n </ui-stack>\n <span\n [attr.aria-details]=\"id\"\n class=\"input-hint text-body--regular text-body--supporting text-color--supporting\"\n ><ng-content></ng-content\n ></span>\n </ui-stack>\n </ui-stack>\n </label>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n imports: [RadioComponent],\n exports: [RadioComponent],\n})\nexport class OasysRadioModule {}\n","import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[autofocus]',\n standalone: true,\n})\nexport class OasysAutofocusDirective {\n private _autofocus;\n\n @Input() set autofocus(condition: boolean) {\n this._autofocus = condition != false;\n }\n\n constructor(private el: ElementRef) {}\n\n ngOnInit() {\n if (this._autofocus || typeof this._autofocus === 'undefined') {\n setTimeout(() => {\n this.el.nativeElement.focus();\n }, 500);\n }\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n forwardRef,\n ElementRef,\n Inject,\n AfterViewInit,\n ViewChild,\n signal,\n computed,\n DOCUMENT\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { AutocompleteType, TextInputType, TextInputMode } from './text-input';\nimport { ValidationErrorTypes } from '../forms';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { OasysAutofocusDirective } from '../../../directives/autofocus/autofocus.directive';\nimport { OasysHrefDirective } from '../../../directives/href/href.directive';\nimport { LayoutBoxComponent } from '../../layout/box/box.component';\n\n@Component({\n selector: 'ui-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof TextInputComponent => TextInputComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [\n LayoutStackComponent,\n ReactiveFormsModule,\n FormsModule,\n NgClass,\n OasysAutofocusDirective,\n OasysHrefDirective,\n LayoutBoxComponent,\n ],\n})\nexport class TextInputComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n @Input() label!: string;\n @Input() hint?: string;\n @Input() optional = true;\n @Input() type: TextInputType = 'text';\n @Input() inputmode?: TextInputMode = 'text';\n\n @Input() autocomplete: AutocompleteType = 'on';\n @Input() autofocus = false;\n @Input() minlength?: number;\n @Input() maxlength = 255;\n @Input() pattern?: string;\n @Input() autocorrect: boolean = this.type === 'text'; // do not spell check emails and passwords\n @Input() disabled = false;\n @Input() aria_label: string | undefined;\n\n @Input() show_password_string = 'Show'; // Pass in translated string\n @Input() hide_password_string = 'Hide'; // Pass in translated string\n\n @Input() validation_messages?: ValidationErrorTypes; // Pass in translated string\n\n @Output() didChange = new EventEmitter<string>();\n\n @ViewChild('textinput', { read: ElementRef }) textInput: ElementRef<HTMLElement>;\n\n @ViewChild('prefaceContent', { read: ElementRef, static: false })\n prefaceContent: ElementRef<HTMLElement>;\n\n textValue = '';\n showPassword = false;\n inputDidChange = false; // only show valdiation after a change event (ie. blur)\n textInputType: TextInputType = 'text';\n isFocused = signal(false); // track focus state for password hint display\n\n id: string;\n\n safariAutocorrect: 'on' | 'off' = 'on';\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n onChange: any = (): void => {};\n onTouched: any = (): void => {};\n\n writeValue(textValue: string): void {\n this.textValue = textValue;\n }\n\n registerOnChange(fn: unknown): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: unknown): void {\n this.onTouched = fn;\n }\n\n onModelChange(textValue: string): void {\n this.textValue = textValue;\n this.onChange(textValue);\n this.didChange.emit(textValue);\n this.onTouched();\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n // Computed signal for hint display logic\n shouldShowHint = computed(() => {\n if (!this.hint) {\n return false;\n }\n\n // For password inputs, only show hint when focused\n if (this.type === 'password') {\n return this.isFocused();\n }\n\n // For all other input types, always show hint\n return true;\n });\n\n toggleShowPassword(): void {\n this.showPassword = !this.showPassword;\n this.textInputType = this.showPassword ? 'text' : 'password';\n }\n\n handleEvent(): void {\n this.inputDidChange = true;\n\n const inputElement = this.document.getElementById(this.id);\n inputElement?.removeEventListener('change', this);\n }\n\n setupValidationListener(): void {\n const inputElement = this.document.getElementById(this.id);\n inputElement?.addEventListener('change', this);\n }\n\n ngAfterViewInit(): void {\n this.setupValidationListener();\n }\n\n ngOnInit(): void {\n this.id = Math.random().toString();\n this.textInputType = this.type;\n this.safariAutocorrect = this.autocorrect ? 'on' : 'off';\n }\n\n accessibleAriaLabel(): string | undefined {\n let prefaceText = '';\n\n if (this.aria_label || this.textInputType !== 'tel') {\n return this.aria_label;\n }\n\n // Get preface content if available\n if (this.prefaceContent?.nativeElement?.textContent?.trim()) {\n prefaceText = ' ' + this.prefaceContent.nativeElement.textContent.trim();\n }\n\n const textValue = this.textValue?.trim() ?? '';\n const telephoneToText = prefaceText + ' ' + textValue.split('').join(' ');\n\n return this.label + telephoneToText;\n }\n\n getInputMode(): string | undefined {\n // For telephone inputs, use tel input mode\n if (this.textInputType === 'tel') {\n return 'tel';\n }\n\n if (this.textInputType === 'number') {\n return 'numeric';\n }\n\n // If inputmode is explicitly set, use it\n if (this.inputmode) {\n return this.inputmode;\n }\n return 'text';\n }\n\n getAriaDescribedBy(): string | undefined {\n const describedBy = [];\n\n // Add error if it exists\n describedBy.push('error_' + this.id);\n\n // Add hint if it exists\n if (this.hint) {\n describedBy.push('hint_' + this.id);\n }\n\n return describedBy.length > 0 ? describedBy.join(' ') : undefined;\n }\n}\n","<ui-stack class=\"ui-text-input-container\" stack_gap=\"tight\">\n <div class=\"ui-text-input\">\n <ui-stack stack_direction=\"x\">\n <div class=\"input-preface\" [attr.id]=\"'preface_' + id\" #prefaceContent>\n <ng-content select=\"[preface]\"></ng-content>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"safariAutocorrect\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"autocomplete || null\"\n [minlength]=\"minlength || null\"\n [maxlength]=\"maxlength\"\n [pattern]=\"pattern || null\"\n [required]=\"!optional\"\n [spellcheck]=\"autocorrect\"\n [type]=\"textInputType\"\n [value]=\"textValue\"\n [attr.inputmode]=\"getInputMode()\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [attr.aria-label]=\"accessibleAriaLabel()\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-stack>\n <ui-stack\n class=\"label-container\"\n stack_direction=\"x\"\n [stack_distribute]=\"type === 'password' ? 'space-between' : 'start'\"\n >\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n @if (type === 'password') {\n <a (click)=\"toggleShowPassword()\" class=\"text-body--supporting text-color--supporting\">\n @if (!showPassword) {\n <span>{{ show_password_string }}</span>\n } @else if (showPassword) {\n <span>{{ hide_password_string }}</span>\n }\n </a>\n }\n </ui-stack>\n </div>\n <ui-stack stack_gap=\"none\">\n <div class=\"input-errors\">\n <div class=\"input-errors-content\" [attr.id]=\"'error_' + id\">\n <ng-content select=\"ui-form-errors\"></ng-content>\n </div>\n </div>\n @if (shouldShowHint()) {\n <ui-box\n class=\"ui-text-input__hint-container\"\n [ngClass]=\"{ 'ui-text-input__hint-expanded': shouldShowHint() }\"\n box_background=\"transparent\"\n box_space=\"none\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"near\"\n >\n <div\n class=\"ui-text-input-hint text-body--supporting text-color--supporting\"\n [attr.id]=\"'hint_' + id\"\n >\n {{ hint }}\n </div>\n </ui-box>\n }\n </ui-stack>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { TextInputComponent } from './text-input.component';\n\n@NgModule({\n imports: [TextInputComponent],\n exports: [TextInputComponent],\n})\nexport class OasysTextInputModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { IconNames } from '../../icon/icon';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { NgIf } from '@angular/common';\nimport { RadioComponent } from '../radio/radio.component';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'ui-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ChipComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [NgIf, RadioComponent, ReactiveFormsModule, FormsModule, CheckboxComponent],\n})\nexport class ChipComponent implements ControlValueAccessor, OnInit {\n @Input() chip_type: 'radio' | 'checkbox' = 'radio';\n\n @Input() icon_name!: IconNames;\n @Input() label?: string;\n @Input() value?: string | boolean;\n\n // Checkbox only\n @Input() required: boolean;\n\n @Output() didChange: EventEmitter<string | boolean> = new EventEmitter();\n\n id: string;\n selectedValue: string | boolean;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n /**\n * On init\n */\n ngOnInit(): void {\n this.id = 'chip' + Math.random();\n }\n\n /**\n * CVA - Write value\n * @param {string | boolean} value\n */\n writeValue(value: string | boolean): void {\n this.selectedValue = value;\n }\n\n /**\n * CVA - Register on change\n * @param {() => void} fn\n */\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n /**\n * CVA - Register on touched\n * @param {() => void} fn\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * On modal interaction and change\n * @param event\n */\n onModalChange(event: string | boolean): void {\n this.value = event;\n this.onChange(event);\n this.didChange.emit(event);\n this.onTouched();\n }\n}\n","<div [id]=\"id\" class=\"ui-chip\">\n <ui-radio\n *ngIf=\"chip_type === 'radio'\"\n [label]=\"label\"\n [value]=\"value?.toString()\"\n radio_type=\"primary\"\n [hide_radio]=\"true\"\n [iconName]=\"icon_name\"\n [ngModel]=\"selectedValue\"\n (didChange)=\"onModalChange($event)\"\n >\n <ng-content ngProjectAs=\"[tertiary-content]\"></ng-content>\n </ui-radio>\n\n <ui-checkbox\n *ngIf=\"chip_type === 'checkbox'\"\n [label]=\"label\"\n [checked]=\"value === true\"\n [required]=\"required\"\n checkbox_type=\"primary\"\n [hide_checkbox]=\"true\"\n [iconName]=\"icon_name\"\n [ngModel]=\"selectedValue\"\n (didChange)=\"onModalChange($event)\"\n >\n <ng-content ngProjectAs=\"[tertiary-content]\"></ng-content>\n </ui-checkbox>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ChipComponent } from './chip.component';\n\n@NgModule({\n imports: [ChipComponent],\n exports: [ChipComponent],\n})\nexport class OasysChipModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Component } from '@angular/core';\nimport { TokenService } from '../../../services/token.service';\nimport { LayoutContainerSizes } from '../Layout';\n@Component({\n selector: 'ui-container',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class]': 'containerLayoutClasses',\n },\n styleUrls: ['./container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class LayoutContainerComponent implements OnInit, OnChanges {\n @Input() container_fluid: boolean = false;\n @Input() container_gutter: true | false | 'true' | 'false' = true;\n prefix = 'ui-layout-container';\n containerLayoutClasses?: string[];\n\n containerGutterNameLarge: string;\n containerGutterNameSmall: string;\n containerHorizontalSizes: LayoutContainerSizes;\n\n constructor(private changes: ChangeDetectorRef) {}\n\n ngOnChanges(): void {\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n this.containerLayoutClasses = [\n this.prefix,\n this.container_fluid ? `${this.prefix}-fluid` : '',\n this.container_gutter === true || this.container_gutter === 'true'\n ? ''\n : `${this.prefix}-no-gutter`,\n ]\n .flat(10)\n .filter(Boolean);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ResponsiveGridColumns } from '../Layout';\n\n@Component({\n selector: 'ui-column',\n template: '<ng-content></ng-content>',\n host: {\n '[class]': 'columnLayoutClasses',\n },\n styleUrls: ['./grid.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class LayoutGridColumnComponent implements OnInit, OnChanges {\n didFirstInit: boolean = false;\n prefix = 'ui-layout-column';\n columnLayoutClasses?: string[];\n\n @Input() columns: ResponsiveGridColumns = 12;\n @Input() column_inset: ResponsiveGridColumns;\n grid_base: number;\n\n constructor(private changes: ChangeDetectorRef) {}\n\n getSizeClasses(columns: ResponsiveGridColumns, classString: string): string[] {\n if (!columns) {\n return [''];\n }\n\n if (typeof columns === 'object') {\n return Object.keys(columns).map((key) => {\n return `${this.prefix}${classString}${key}-${columns[key]}`;\n });\n }\n\n return [this.prefix, `${this.prefix}${classString}${columns}`];\n }\n\n ngOnChanges(): void {\n if (!this.didFirstInit) {\n return;\n }\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n this.columnLayoutClasses = [\n this.prefix,\n this.getSizeClasses(this.columns, '-col-'),\n this.getSizeClasses(this.column_inset, '-col-inset-'),\n ]\n .flat(10)\n .filter(Boolean);\n this.didFirstInit = true;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ui-grid',\n template: '<ng-content></ng-content>',\n host: {\n '[class]': 'gridLayoutClasses',\n '[style.grid-template-columns]': 'gridTemplateColumns',\n },\n styleUrls: ['./grid.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class LayoutGridComponent implements OnInit, OnChanges {\n @Input() grid_auto: boolean = false;\n @Input() grid_collapse_below: 'tablet' | 'laptop' | 'desktop' | 'none' = 'tablet';\n @Input() grid_gap: 'none' | 'tiny' | 'tight' | 'near' | 'default' | 'expanded' = 'default';\n @Input() grid_base: number = 12;\n\n didFirstInit: boolean = false;\n prefix = 'ui-layout-grid';\n gridLayoutClasses?: string[];\n\n constructor(private changes: ChangeDetectorRef) {}\n\n get gridTemplateColumns(): string | null {\n if (this.grid_auto) return null;\n return `repeat(${this.grid_base}, 1fr)`;\n }\n\n ngOnChanges(): void {\n if (!this.didFirstInit) return;\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n this.gridLayoutClasses = [\n this.prefix,\n `${this.prefix}-${this.grid_gap}`,\n `${this.prefix}-${this.grid_auto ? 'width-auto' : ''}`,\n `${this.prefix}-collapse-below-${this.grid_collapse_below}`,\n ];\n this.didFirstInit = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LayoutBoxComponent } from './box/box.component';\nimport { LayoutContainerComponent } from './container/container.component';\nimport { LayoutGridColumnComponent } from './grid/grid-column.component';\nimport { LayoutGridComponent } from './grid/grid.component';\nimport { LayoutStackComponent } from './stack/stack.component';\n\n@NgModule({\n imports: [\n LayoutBoxComponent,\n LayoutContainerComponent,\n LayoutGridComponent,\n LayoutGridColumnComponent,\n LayoutStackComponent,\n ],\n exports: [\n LayoutBoxComponent,\n LayoutContainerComponent,\n LayoutGridColumnComponent,\n LayoutGridComponent,\n LayoutStackComponent,\n ],\n})\nexport class OasysLayoutModule {}\n","import { Component, computed, input } from '@angular/core';\nimport { ValidationErrorTypes } from '../forms';\nimport { ValidationErrors } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { OasysLayoutModule } from '../../layout';\n\n@Component({\n selector: 'ui-form-errors',\n templateUrl: './form-errors.component.html',\n standalone: true,\n imports: [CommonModule, OasysLayoutModule],\n})\nexport class FormErrorsComponent {\n errors = input<ValidationErrors | null | undefined>(null);\n error_messages = input<ValidationErrorTypes | undefined>({});\n\n errorMessage = computed((): string => {\n const currentErrors = this.errors();\n const messages = this.error_messages() || {};\n\n if (!currentErrors) {\n return undefined;\n }\n const errorKeys = Object.keys(currentErrors);\n const firstErrorKey = errorKeys.length ? errorKeys[0] : undefined;\n return firstErrorKey ? messages[firstErrorKey] : undefined;\n });\n}\n","@if (errorMessage()) {\n <ui-box\n box_background=\"transparent\"\n box_space=\"none\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"near\"\n >\n <div class=\"text-color--error\">{{ errorMessage() }}</div>\n </ui-box>\n}\n","import { NgModule } from '@angular/core';\nimport { FormErrorsComponent } from './form-errors.component';\n\n@NgModule({\n imports: [FormErrorsComponent],\n exports: [FormErrorsComponent],\n})\nexport class OasysFormErrorsModule {}\n","import { Component, Input, OnInit, ViewEncapsulation, HostBinding } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { HeadingAlignment, HeadingGap, HeadingLevel, HeadingType, UIBoolean } from './heading';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { NgIf, NgClass, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ui-heading',\n templateUrl: './heading.component.html',\n styleUrls: ['./heading.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [LayoutStackComponent, NgIf, NgClass, NgTemplateOutlet],\n providers: [TokenService],\n})\nexport class OasysHeadingComponent implements OnInit {\n @Input() heading_type: HeadingType = 'primary';\n @Input() heading_on_dark: UIBoolean;\n @Input() heading_title: string;\n @Input() heading_seo_priority: boolean = false;\n @Input() heading_priority?: 1 | 2 | 3 | 4 | 5 | 6;\n @Input() heading_alignment_override?: HeadingAlignment;\n @Input() heading_subtitle?: string = '';\n @Input() heading_surtitle?: string = '';\n @Input() heading_level?: HeadingLevel;\n\n computed_heading_level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n headingAlignment: HeadingAlignment;\n headingGap: HeadingGap;\n\n constructor(private tokenService: TokenService) {}\n\n @HostBinding('class') get class(): string {\n return `\n ${this.heading_on_dark ? 'text-color--on-dark' : ''}\n ui-heading-alignment-${this.headingAlignment}\n `;\n }\n\n setComputedHeadingLevel(): void {\n if (this.heading_level) {\n this.computed_heading_level = this.heading_level;\n } else if (this.heading_priority) {\n this.computed_heading_level = `h${this.heading_priority}`;\n } else if (this.heading_seo_priority) {\n this.computed_heading_level = 'h1';\n } else {\n this.computed_heading_level = 'h2';\n }\n }\n\n headingTypeIsFunctional(headingType: HeadingType): boolean {\n return (headingType || '').indexOf('functional') !== -1;\n }\n\n setupHeadingStackAlignment(headingType: HeadingType): void {\n if (this.heading_alignment_override) {\n this.headingAlignment = this.heading_alignment_override;\n return;\n }\n\n const alignment = this.tokenService.getTokenValue(\n '--oasys-component-heading-alignment-default',\n ) as HeadingAlignment;\n const functionalAlignment = this.tokenService.getTokenValue(\n '--oasys-component-heading-alignment-functional',\n ) as HeadingAlignment;\n\n this.headingAlignment = this.headingTypeIsFunctional(headingType)\n ? functionalAlignment\n : alignment;\n }\n\n setupHeadingStackGap(headingType: HeadingType): void {\n if (this.headingTypeIsFunctional(headingType)) {\n this.headingGap = this.tokenService.getTokenValue(\n '--oasys-component-heading-gap-functional',\n ) as HeadingGap;\n return;\n }\n\n if (this.heading_type === 'secondary') {\n this.headingGap = this.tokenService.getTokenValue(\n '--oasys-component-heading-gap-secondary',\n ) as HeadingGap;\n return;\n }\n\n if (this.heading_type === 'primary') {\n this.headingGap = this.tokenService.getTokenValue(\n '--oasys-component-heading-gap-primary',\n ) as HeadingGap;\n return;\n }\n\n // Hero gap\n this.headingGap = this.tokenService.getTokenValue(\n '--oasys-component-heading-gap-default',\n ) as HeadingGap;\n }\n\n ngOnInit(): void {\n this.setupHeadingStackAlignment(this.heading_type);\n this.setupHeadingStackGap(this.heading_type);\n this.setComputedHeadingLevel();\n }\n}\n","<div>\n <ui-stack [stack_align]=\"headingAlignment\" [stack_gap]=\"headingGap\">\n <p\n *ngIf=\"heading_surtitle && heading_surtitle.length\"\n class=\"heading-surtitle text-body--supporting text-color--supporting\"\n >\n {{ heading_surtitle }}\n </p>\n\n <ng-template #content>\n <span\n class=\"heading-title\"\n [ngClass]=\"{\n 'text-heading': !headingTypeIsFunctional(heading_type),\n 'text-heading--functional': headingTypeIsFunctional(heading_type),\n\n 'text-heading--hero': heading_type === 'hero',\n 'text-heading--primary': heading_type === 'primary',\n 'text-heading--secondary': heading_type === 'secondary',\n 'text-heading--functional--primary': heading_type === 'functional-primary',\n 'text-heading--functional--secondary': heading_type === 'functional-secondary',\n }\"\n >{{ heading_title }}</span\n >\n </ng-template>\n\n <!-- Title -->\n <h1 *ngIf=\"computed_heading_level === 'h1'\" role=\"heading\" class=\"seo-h1\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h1>\n <h2 *ngIf=\"computed_heading_level === 'h2'\" role=\"heading\" class=\"seo-h2\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h2>\n <h3 *ngIf=\"computed_heading_level === 'h3'\" role=\"heading\" class=\"seo-h3\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h3>\n <h4 *ngIf=\"computed_heading_level === 'h4'\" role=\"heading\" class=\"seo-h4\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h4>\n <h5 *ngIf=\"computed_heading_level === 'h5'\" role=\"heading\" class=\"seo-h5\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h5>\n <h6 *ngIf=\"computed_heading_level === 'h6'\" role=\"heading\" class=\"seo-h6\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h6>\n\n <!-- Subtitle -->\n <h2\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h1'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h2>\n <h3\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h2'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h3>\n <h4\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h3'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h4>\n <h5\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h4'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h5>\n <h6\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h5'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h6>\n <p\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h6'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></p>\n </ui-stack>\n</div>\n","import { NgModule } from '@angular/core';\nimport { OasysHeadingComponent } from './heading.component';\n\n@NgModule({\n imports: [OasysHeadingComponent],\n exports: [OasysHeadingComponent],\n})\nexport class OasysHeadingModule {}\n","import { Component, Input, OnInit, AfterViewInit, ElementRef, ViewChild } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { LayoutAlignment, LayoutBackgrounds } from '../layout/Layout';\nimport { HeadingLevel } from '../heading/heading';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutGridComponent } from '../layout/grid/grid.component';\nimport { NgStyle, NgClass, NgIf } from '@angular/common';\nimport { LayoutGridColumnComponent } from '../layout/grid/grid-column.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { OasysHeadingComponent } from '../heading/heading.component';\nimport { OasysButtonComponent } from '../button/button.component';\n@Component({\n selector: 'ui-hero',\n templateUrl: './hero.component.html',\n styleUrls: ['./hero.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n LayoutGridComponent,\n NgStyle,\n LayoutGridColumnComponent,\n NgClass,\n LayoutStackComponent,\n OasysHeadingComponent,\n NgIf,\n OasysButtonComponent,\n ],\n providers: [TokenService],\n})\nexport class HeroComponent implements OnInit, AfterViewInit {\n @ViewChild('herobox', { read: ElementRef }) herobox: ElementRef;\n\n // Style input variables\n @Input() min_container_height: number;\n @Input() image_left_desktop: boolean = false;\n @Input() image_top_mobile: boolean = true;\n @Input() background_colour: LayoutBackgrounds;\n @Input() non_brand_background_colour: string;\n\n // Content input variables\n @Input() heading_title: string;\n @Input() heading_subtitle: string;\n @Input() heading_surtitle: string;\n @Input() primary_cta_text: string;\n @Input() secondary_cta_text: string;\n @Input() image: string;\n @Input() alt_text: string;\n @Input() media_type: 'image' | 'video' = 'image';\n @Input() text_on_dark_override: string;\n @Input() heading_level: HeadingLevel = 'h1';\n\n // Event input variables\n @Input() href_primary_cta: string = '';\n @Input() href_secondary_cta: string = '';\n\n // Design token variables\n heroCtaAlignment: LayoutAlignment;\n heroInsetSpaceSmall: string;\n heroInsetSpaceLarge: string;\n\n constructor(private tokenService: TokenService) {}\n\n setNonBrandBackgroundColour(): void {\n this.herobox.nativeElement.style.background = this.non_brand_background_colour;\n }\n\n ngAfterViewInit(): void {\n if (this.non_brand_background_colour) {\n this.setNonBrandBackgroundColour();\n }\n }\n\n ngOnInit(): void {\n this.heroCtaAlignment = this.tokenService.getTokenValue(\n '--oasys-component-hero-actions-alignment',\n ) as LayoutAlignment;\n this.heroInsetSpaceSmall = this.tokenService.getTokenValue(\n '--oasys-component-hero-inset-spacing-small',\n );\n this.heroInsetSpaceLarge = this.tokenService.getTokenValue(\n '--oasys-component-hero-inset-spacing-large',\n );\n }\n}\n","<ui-box [box_background]=\"background_colour\" box_space=\"none\" #herobox>\n <ui-grid\n [ngStyle]=\"{ 'min-height': min_container_height ? min_container_height + 'px' : 'auto' }\"\n grid_gap=\"none\"\n grid_collapse_below=\"tablet\"\n >\n <ui-column\n [columns]=\"5\"\n [ngClass]=\"{ 'image-left': image_left_desktop, 'image-top': image_top_mobile }\"\n >\n <ui-box\n box_fill_mode=\"fill\"\n box_align_y=\"center\"\n box_background=\"transparent\"\n [box_space]=\"{\n mobile: heroInsetSpaceSmall,\n tablet: heroInsetSpaceSmall,\n laptop: heroInsetSpaceLarge,\n desktop: heroInsetSpaceLarge,\n }\"\n >\n <ui-stack\n stack_direction=\"y\"\n stack_align=\"center\"\n stack_distribute=\"center\"\n stack_gap=\"default\"\n >\n <ui-heading\n heading_type=\"primary\"\n [heading_on_dark]=\"\n herobox.backgroundIsDark || text_on_dark_override === 'true' ? true : false\n \"\n [heading_title]=\"heading_title\"\n [heading_seo_priority]=\"true\"\n [heading_subtitle]=\"heading_subtitle\"\n [heading_surtitle]=\"heading_surtitle\"\n [heading_level]=\"heading_level\"\n >\n </ui-heading>\n <!-- TODO: replace with ui-button-group once built-->\n <ui-stack\n *ngIf=\"primary_cta_text\"\n class=\"cta-container\"\n stack_direction=\"x\"\n [stack_align]=\"heroCtaAlignment\"\n [stack_distribute]=\"heroCtaAlignment\"\n [stack_wrap]=\"true\"\n stack_gap=\"near\"\n >\n <ui-button\n bwtrackas=\"oasys.hero-block.primary-cta\"\n button_size=\"large\"\n [button_type]=\"\n herobox.backgroundIsDark || text_on_dark_override === 'true'\n ? 'primary-inverse'\n : 'primary'\n \"\n [href]=\"href_primary_cta\"\n >\n <span>{{ primary_cta_text }}</span>\n </ui-button>\n <ui-button\n *ngIf=\"secondary_cta_text\"\n bwtrackas=\"oasys.hero-block.secondary-cta\"\n button-size=\"large\"\n [button_type]=\"\n herobox.backgroundIsDark || text_on_dark_override === 'true'\n ? 'secondary-inverse'\n : 'secondary'\n \"\n [href]=\"href_secondary_cta\"\n >\n <span>{{ secondary_cta_text }}</span>\n </ui-button>\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n <ui-column [columns]=\"7\">\n <picture *ngIf=\"media_type === 'image'\">\n <source\n [srcset]=\"\n image + '?w=880&h=880&fm=webp&q=75 1x,' + image + '?w=1760&h=1760&fm=webp&q=75 2x'\n \"\n media=\"(min-width: 1440px)\"\n type=\"image/webp\"\n />\n <source\n [srcset]=\"\n image + '?w=720&h=720&fm=webp&q=75 1x,' + image + '?w=1440&h=1440&fm=webp&q=75 2x'\n \"\n media=\"(min-width: 1200px)\"\n type=\"image/webp\"\n />\n <source\n [srcset]=\"\n image + '?w=580&h=580&fm=webp&q=75 1x,' + image + '?w=1160&h=1160&fm=webp&q=75 2x'\n \"\n media=\"(min-width: 992px)\"\n type=\"image/webp\"\n />\n <source\n [srcset]=\"\n image + '?w=430&h=430&fm=webp&q=75 1x,' + image + '?w=860&h=860&fm=webp&q=75 2x'\n \"\n media=\"(min-width: 768px)\"\n type=\"image/webp\"\n />\n <source\n [srcset]=\"image + '?w=720&h=720&fm=webp&q=75 2x'\"\n media=\"(min-width: 454px)\"\n type=\"image/webp\"\n />\n <img\n fetchpriority=\"high\"\n [src]=\"image + '?w=430&h=430&fm=webp&q=75'\"\n [attr.alt]=\"alt_text\"\n width=\"100%\"\n height=\"100%\"\n style=\"object-fit: cover\"\n />\n </picture>\n <ng-content *ngIf=\"media_type === 'video'\"></ng-content>\n </ui-column>\n </ui-grid>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { HeroComponent } from './hero.component';\n\n@NgModule({\n imports: [HeroComponent],\n exports: [HeroComponent],\n})\nexport class OasysHeroModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutGridComponent } from '../layout/grid/grid.component';\nimport { LayoutGridColumnComponent } from '../layout/grid/grid-column.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { OasysHeadingComponent } from '../heading/heading.component';\nimport { NgIf, NgStyle, NgFor, NgClass } from '@angular/common';\nimport { OasysHrefDirective } from '../../directives/href/href.directive';\ninterface linkItem {\n href: string;\n name: string;\n}\n@Component({\n selector: 'ui-seo-block',\n templateUrl: './seo-block.component.html',\n styleUrls: ['./seo-block.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n LayoutGridComponent,\n LayoutGridColumnComponent,\n LayoutStackComponent,\n OasysHeadingComponent,\n NgIf,\n OasysHrefDirective,\n NgStyle,\n NgFor,\n NgClass,\n ],\n})\nexport class SeoBlockComponent implements OnInit {\n @Input() heading_paragraph: string;\n @Input() heading_links: string;\n @Input() main_content: string;\n @Input() expanded_content: string;\n @Input() links: string | linkItem[];\n\n @Input() read_more_content_text: string;\n @Input() read_less_content_text: string;\n @Input() show_more_links_text: string;\n @Input() show_less_links_text: string;\n\n linksColumnsNumber: number;\n expandedLinksVisible: boolean = false;\n expandedContentVisible: boolean = false;\n linksValues: linkItem[];\n\n showMoreLinks(flag: boolean): void {\n this.expandedLinksVisible = flag;\n }\n\n showMoreContent(flag: boolean): void {\n this.expandedContentVisible = flag;\n }\n\n ngOnInit(): void {\n // This is to fix a bug in Oasys that threats arrays as string initially\n if (typeof this.links === 'string') {\n this.linksValues = JSON.parse(this.links) ?? [];\n } else {\n this.linksValues = this.links;\n }\n\n if (this.linksValues.length <= 10) {\n this.linksColumnsNumber = 1;\n } else if (this.linksValues.length <= 20) {\n this.linksColumnsNumber = 2;\n } else {\n this.linksColumnsNumber = 3;\n }\n }\n}\n","<ui-box>\n <ui-grid>\n <ui-column [columns]=\"6\">\n <ui-box\n box_space=\"none\"\n [box_space_right]=\"{\n mobile: 'none',\n tablet: 'expanded',\n laptop: 'expanded',\n desktop: 'expanded',\n }\"\n >\n <ui-stack stack_gap=\"near\">\n <ui-box box_space=\"none\">\n <ui-heading\n heading_type=\"functional-primary\"\n heading_title=\"{{ heading_paragraph }}\"\n heading_level=\"h2\"\n ></ui-heading>\n </ui-box>\n <ui-box box_space=\"none\">\n <p>\n <span class=\"text-body--default\" class=\"ui-prose\" [innerHTML]=\"main_content\"></span>\n <span\n id=\"expanded-content\"\n class=\"text-body--default\"\n class=\"ui-prose\"\n *ngIf=\"expandedContentVisible\"\n [innerHTML]=\"expanded_content\"\n ></span>\n </p>\n </ui-box>\n <ui-box box_space=\"none\" *ngIf=\"expanded_content\">\n <button\n (click)=\"showMoreContent(!expandedContentVisible)\"\n class=\"text-link text-link--standalone\"\n [attr.aria-expanded]=\"expandedContentVisible\"\n [attr.aria-controls]=\"'expanded-content'\"\n >\n {{ expandedContentVisible ? read_less_content_text : read_more_content_text }}\n </button>\n </ui-box>\n </ui-stack>\n </ui-box>\n </ui-column>\n <ui-column [columns]=\"6\">\n <ui-box box_space=\"none\">\n <ui-stack stack_gap=\"near\">\n <ui-box box_space=\"none\">\n <ui-heading\n heading_type=\"functional-secondary\"\n heading_level=\"h3\"\n heading_title=\"{{ heading_links }}\"\n ></ui-heading>\n </ui-box>\n <ui-stack stack_gap=\"tight\">\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [ngStyle]=\"{ 'column-count': linksColumnsNumber }\"\n class=\"links-container text-body--supporting\"\n box_role=\"list\"\n id=\"expanded-links\"\n >\n <ng-container *ngFor=\"let link of linksValues; index as i\">\n <li>\n <ui-box\n box_space=\"none\"\n box_space_bottom=\"tight\"\n box_fill_mode=\"fit\"\n class=\"link-container\"\n [ngClass]=\"{ 'hidden-mobile': i > 4 && !expandedLinksVisible }\"\n >\n <a href=\"{{ link.href }}\">\n {{ link.name }}\n </a>\n </ui-box>\n </li>\n </ng-container>\n </ui-box>\n <ui-box\n box_space=\"none\"\n class=\"hidden-desktop hidden-tablet\"\n *ngIf=\"linksValues.length > 4\"\n >\n <button\n (click)=\"showMoreLinks(!expandedLinksVisible)\"\n class=\"text-link text-link--standalone\"\n [attr.aria-expanded]=\"expandedLinksVisible\"\n [attr.aria-controls]=\"'expanded-links'\"\n >\n {{ expandedLinksVisible ? show_less_links_text : show_more_links_text }}\n </button>\n </ui-box>\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n </ui-grid>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { SeoBlockComponent } from './seo-block.component';\n\n@NgModule({\n imports: [SeoBlockComponent],\n exports: [SeoBlockComponent],\n})\nexport class OasysSeoBlockModule {}\n","import { NgModule } from '@angular/core';\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [IconComponent],\n exports: [IconComponent],\n})\nexport class OasysIconModule {}\n","import { NgModule } from '@angular/core';\nimport { ImageComponent } from './image.component';\n\n@NgModule({\n imports: [ImageComponent],\n exports: [ImageComponent],\n})\nexport class OasysImageModule {}\n","import { Component, Input, OnInit, AfterViewInit } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { LayoutBackgrounds } from '../layout/Layout';\nimport { ImageAspectRatio } from '../image/image';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutGridComponent } from '../layout/grid/grid.component';\nimport { LayoutGridColumnComponent } from '../layout/grid/grid-column.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { ImageComponent } from '../image/image.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { OasysHeadingComponent } from '../heading/heading.component';\nimport { OasysHrefDirective } from '../../directives/href/href.directive';\n\n@Component({\n selector: 'ui-section',\n templateUrl: './section.component.html',\n styleUrls: ['./section.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n LayoutGridComponent,\n LayoutGridColumnComponent,\n NgClass,\n ImageComponent,\n LayoutStackComponent,\n OasysHeadingComponent,\n OasysHrefDirective,\n NgIf,\n ],\n providers: [TokenService],\n})\nexport class SectionComponent implements OnInit, AfterViewInit {\n // Style input variables\n @Input() brand_background_colour: LayoutBackgrounds;\n @Input() non_brand_background_colour: string;\n @Input() text_on_dark_override: boolean = false; // This is for custom/non-brand BG colours\n @Input() image_on_left: boolean = false;\n @Input() section_type: 'spotlight' | 'inform' = 'inform';\n\n // Content input variables\n @Input() heading_title: string;\n @Input() heading_subtitle: string;\n @Input() primary_cta_text: string;\n @Input() secondary_cta_text: string;\n @Input() image: string;\n @Input() alt_text: string;\n\n // Event input variables\n @Input() href_primary_cta: string = '';\n @Input() href_secondary_cta: string = '';\n\n backgroundIsDark: string;\n isSpotLight: string;\n uiBoxId: string; // To randomise the box id\n outterContainer: any = {};\n innerContainer: any = {};\n\n containerInsetSpaceSmall: string;\n containerInsetSpaceLarge: string;\n\n contentInsetSpaceSmall: string;\n contentInsetSpaceLarge: string;\n\n imageAspectRatio: ImageAspectRatio;\n\n constructor(private tokenService: TokenService) {}\n\n ngAfterViewInit(): void {\n if (this.non_brand_background_colour) {\n this.setNonBrandBackgroundColour();\n }\n\n // This doesn't appear to be used anywhere\n this.backgroundIsDark = this.tokenService.getTokenValue(\n `--oasys-component-box-on-dark-${this.brand_background_colour}`,\n );\n }\n\n ngOnInit(): void {\n this.containerInsetSpaceSmall = this.tokenService.getTokenValue(\n `--oasys-component-section-inset-spacing-container-small`,\n );\n this.containerInsetSpaceLarge = this.tokenService.getTokenValue(\n `--oasys-component-section-inset-spacing-container-large`,\n );\n\n this.contentInsetSpaceSmall = this.tokenService.getTokenValue(\n `--oasys-component-section-inset-spacing-content-small-${this.section_type}`,\n );\n this.contentInsetSpaceLarge = this.tokenService.getTokenValue(\n `--oasys-component-section-inset-spacing-content-large-${this.section_type}`,\n );\n\n this.imageAspectRatio = this.tokenService.getTokenValue(\n `--oasys-component-section-image-aspect-ratio-${this.section_type}`,\n ) as ImageAspectRatio;\n\n // Setting a unique ID, this is important & needed to apply\n // styles to ui-box\n this.uiBoxId = Date.now() + '-' + Math.random();\n }\n\n /**\n * Users are able to set custom non brand background colours\n * If a non brand background colour is provided we ignore branded colours\n * even if they are provided.\n */\n setNonBrandBackgroundColour(): void {\n const box = document.getElementById(`ui-box-${this.uiBoxId}`);\n\n if (box) {\n this.brand_background_colour = undefined;\n box.style.background = this.non_brand_background_colour;\n\n if (this.text_on_dark_override) {\n box.classList.add('text-color--on-dark');\n }\n }\n }\n}\n","<ui-box\n id=\"ui-box-{{ uiBoxId }}\"\n [box_background]=\"brand_background_colour\"\n [box_space_left]=\"section_type === 'spotlight' && !image_on_left ? 'none' : undefined\"\n [box_space_right]=\"section_type === 'spotlight' && image_on_left ? 'none' : undefined\"\n [box_space]=\"\n section_type === 'spotlight'\n ? 'none'\n : {\n mobile: containerInsetSpaceSmall,\n tablet: containerInsetSpaceLarge,\n laptop: containerInsetSpaceLarge,\n desktop: containerInsetSpaceLarge,\n }\n \"\n>\n <ui-grid [grid_gap]=\"section_type === 'spotlight' ? 'none' : 'default'\">\n <ui-column\n [columns]=\"6\"\n [ngClass]=\"{ 'image-left': image_on_left, 'image-top-mobile': image_on_left }\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\" box_align_y=\"center\">\n <ui-image\n [image_src]=\"image\"\n [image_alt_text]=\"alt_text\"\n [preload_aspect_ratio]=\"imageAspectRatio\"\n ></ui-image>\n </ui-box>\n </ui-column>\n\n <ui-column [columns]=\"6\">\n <ui-box\n [box_background]=\"brand_background_colour\"\n box_align_y=\"center\"\n [box_space]=\"\n section_type === 'spotlight'\n ? {\n mobile: contentInsetSpaceSmall,\n tablet: contentInsetSpaceLarge,\n laptop: contentInsetSpaceLarge,\n desktop: contentInsetSpaceLarge,\n }\n : {\n mobile: contentInsetSpaceSmall,\n tablet: contentInsetSpaceSmall,\n laptop: contentInsetSpaceLarge,\n desktop: contentInsetSpaceLarge,\n }\n \"\n >\n <ui-stack\n stack_direction=\"y\"\n stack_align=\"center\"\n stack_distribute=\"center\"\n [stack_wrap]=\"true\"\n >\n <ui-heading\n [heading_type]=\"section_type === 'spotlight' ? 'primary' : 'functional-primary'\"\n [heading_title]=\"heading_title\"\n [heading_subtitle]=\"heading_subtitle\"\n >\n </ui-heading>\n\n <ui-stack\n stack_direction=\"x\"\n stack_align=\"start\"\n [stack_distribute]=\"section_type === 'spotlight' ? 'center' : 'start'\"\n [stack_wrap]=\"true\"\n stack_gap=\"near\"\n >\n <a\n class=\"text-link text-link--standalone\"\n [href]=\"href_primary_cta\"\n bwtrackas=\"oasys.story-block.primary-cta\"\n >{{ primary_cta_text }}</a\n >\n <a\n *ngIf=\"\n section_type !== 'spotlight' &&\n href_secondary_cta.length > 0 &&\n href_secondary_cta.length > 0\n \"\n class=\"text-link text-link--standalone\"\n [href]=\"href_secondary_cta\"\n bwtrackas=\"oasys.story-block.secondary-cta\"\n >{{ secondary_cta_text }}</a\n >\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n </ui-grid>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { SectionComponent } from './section.component';\n\n@NgModule({\n imports: [SectionComponent],\n exports: [SectionComponent],\n})\nexport class SectionModule {}\n","import { NgClass, NgIf } from '@angular/common';\nimport {\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n Inject,\n EventEmitter,\n Output,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n DOCUMENT\n} from '@angular/core';\nimport Swiper from 'swiper';\nimport { SwiperOptions } from 'swiper/types';\nimport { TokenService } from '../../services/token.service';\nimport { SwiperContainer } from 'swiper/element';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { OasysButtonComponent } from '../button/button.component';\nimport { SWIPER_PROVIDER_TOKEN } from '../../services';\n\n/* This component wraps around the swiper.js library WebComponent */\n\n@Component({\n selector: 'ui-carousel',\n templateUrl: './carousel.component.html',\n styleUrls: ['./carousel.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [LayoutBoxComponent, NgClass, LayoutStackComponent, NgIf, OasysButtonComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n providers: [TokenService],\n})\nexport class CarouselComponent implements OnInit {\n // The swiper instance\n @ViewChild('swiper', { static: true }) swiper: ElementRef<SwiperContainer>;\n @ViewChild('carouselscrollbarplaceholder', { static: false, read: ElementRef })\n carouselscrollbarplaceholder: ElementRef;\n @ViewChild('carouselctastack', { static: false, read: ElementRef }) carouselctastack: ElementRef;\n\n // Rewinds the slides back to the start when the user reaches the end when set to true\n @Input() rewind: boolean = false;\n\n @Input() carousel_overflow: boolean = false;\n\n @Input() carousel_gap: 'default' | 'tight' | 'near' | 'none' = 'default';\n\n @Input() carousel_pagination: 'scroll-arrows' | 'none' | 'scroll-bar' | 'small-arrows' = 'none';\n\n @Input() carousel_slides_per_view_desktop: number = 4;\n @Input() carousel_slides_per_view_laptop: number = 3;\n @Input() carousel_slides_per_view_tablet: number = 2.5;\n @Input() carousel_slides_per_view_mobile: number = 1.25;\n @Input() text_for_left_arrow: string = 'previous slide';\n @Input() text_for_right_arrow: string = 'next slide';\n\n @Input() carousel_rows_per_row_mobile: 1 | 2 = 1; // Required for CATEGORY_CARD experiment. Remove if experiment fails.\n\n @Input() carousel_loading: 'lazy' | 'eager' = 'lazy'; // If we don't have multiple carousels on page and want to prioritise UI loading on time\n @Input() carousel_free_mode: boolean = false; // Enables scrolling with mousewheel / smoother momentum swiping experience\n @Input() center_insufficient_slides: boolean = true; // Centers the slides if there are not enough to fill the space\n @Input() center_active_slide: boolean = false; // Centers the active slide\n @Input() start_slide: number = 0; // Start slide index\n @Input() offset_scrollbar_top: boolean = false; // Offset the scrollbar to the top of the carousel\n\n @Output() activeIndexOnSlideChange = new EventEmitter<number>();\n\n constructor(\n private tokenService: TokenService,\n @Inject(DOCUMENT) private document: Document,\n private element: ElementRef,\n ) {\n inject(SWIPER_PROVIDER_TOKEN).ensureSwiperRegistered();\n }\n\n ngOnInit(): void {\n if (this.carousel_loading === 'lazy') {\n this.setUpIntersectionObserver();\n } else {\n this.initSwiper();\n }\n }\n\n /**\n * Set up the intersection observer with the relevant options\n */\n setUpIntersectionObserver(): void {\n // Set IntersectionObserver options\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: 0.5,\n once: true,\n };\n // Set up the IntersectionObserver\n const observer = new IntersectionObserver(this.onIntersection.bind(this), options);\n observer.observe(this.element.nativeElement);\n }\n\n /**\n * This function gets called just before the user scrolls this component into view\n * @param entries - An array of interswection observer entries\n * @param observer - Intersection observer\n */\n onIntersection(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void {\n entries.forEach((entry): void => {\n if (entry.isIntersecting) {\n // Initialise swiper\n this.initSwiper();\n observer.unobserve(entry.target);\n }\n });\n }\n\n getStyle(element: HTMLElement, style: string): string {\n return this.document.defaultView.getComputedStyle(element, null).getPropertyValue(style);\n }\n\n /**\n * Set the scrollbar placement and width based on carouselscrollbarplaceholder and carouselctastack\n */\n setupScrollbarLayoutProperties(): void {\n if (this.carousel_pagination === 'none') {\n return;\n }\n\n const carouselStack: HTMLElement = this.carouselctastack?.nativeElement;\n const scrollbarElement: HTMLElement = this.carouselscrollbarplaceholder?.nativeElement;\n\n const scrollbarHeight = this.document.defaultView\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--swiper-scrollbar-size');\n\n if (carouselStack && this.carousel_pagination === 'scroll-arrows') {\n this.element?.nativeElement?.style?.setProperty(\n '--ui-carousel-scrollbar-width',\n `${scrollbarElement?.offsetWidth - parseInt(this.getStyle(carouselStack, 'gap'), 10)}px`,\n );\n\n this.element?.nativeElement?.style?.setProperty(\n '--ui-carousel-scrollbar-offset-top',\n `${parseInt(this.getStyle(carouselStack, 'gap'), 10) + scrollbarElement?.offsetHeight / 2 + parseInt(scrollbarHeight, 10) / 2}px`,\n );\n\n this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-height', '2px');\n }\n\n if (carouselStack && this.carousel_pagination === 'scroll-bar') {\n this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-width', '100%');\n\n this.element?.nativeElement?.style?.setProperty(\n '--ui-carousel-scrollbar-offset-top',\n `${this.offset_scrollbar_top ? parseInt(this.getStyle(carouselStack, 'gap'), 10) + 'px' : '0px'}`,\n );\n\n this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-height', '4px');\n\n this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-left', '0px');\n }\n }\n\n /**\n * Set the dynamic swiper params and initialise the swiper instance\n */\n // eslint-disable-next-line complexity\n initSwiper(): void {\n // Colour overides\n const scrollbarBackgroundColour = this.tokenService.getTokenValue(\n '--oasys-color-linen-grey-200',\n );\n const scrollbarSliderColour = this.tokenService.getTokenValue(\n '--oasys-color-brand-foreground-primary',\n );\n\n // swiper element\n const swiperEl = this.swiper.nativeElement;\n\n const carouselGap = this.tokenService.getTokenValue(`--oasys-spacing-${this.carousel_gap}`);\n\n // swiper parameters\n const swiperParams: SwiperOptions = {\n rewind: this.rewind,\n grabCursor: true,\n spaceBetween: parseInt(carouselGap.replace('.', ''), 10) || 0,\n centeredSlides: this.center_active_slide,\n initialSlide: this.start_slide,\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n centerInsufficientSlides: this.center_insufficient_slides,\n freeMode: this.carousel_free_mode\n ? {\n enabled: true,\n sticky: true,\n momentumVelocityRatio: 0.75,\n momentumRatio: 0.75,\n }\n : false,\n mousewheel: this.carousel_free_mode\n ? {\n forceToAxis: true,\n }\n : false,\n injectStyles: [\n `\n .swiper {\n overflow: ${this.carousel_overflow ? 'visible' : 'hidden'} !important;\n }\n\n .swiper-scrollbar.swiper-scrollbar-horizontal {\n position: relative;\n top: var(--ui-carousel-scrollbar-offset-top);\n width: var(--ui-carousel-scrollbar-width);\n height: var(--ui-carousel-scrollbar-height);\n left: ${this.carousel_pagination === 'scroll-bar' ? 'var(--ui-carousel-scrollbar-left)' : '1%'};\n background: ${scrollbarBackgroundColour}\n }\n\n .swiper-scrollbar-drag {\n background: ${scrollbarSliderColour}\n }`,\n ],\n breakpoints: {\n 0: {\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' ||\n this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n slidesPerView: this.carousel_slides_per_view_mobile,\n grid: {\n rows: this.carousel_rows_per_row_mobile,\n fill: 'row',\n },\n },\n 767: {\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' ||\n this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n slidesPerView: this.carousel_slides_per_view_tablet,\n },\n 1080: {\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' ||\n this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n slidesPerView: this.carousel_slides_per_view_laptop,\n },\n 1440: {\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' ||\n this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n slidesPerView: this.carousel_slides_per_view_desktop,\n },\n },\n on: {\n slideChange: this.onSlideChange.bind(this),\n },\n };\n\n // now we need to assign all parameters to the Swiper element\n Object.assign(swiperEl, swiperParams);\n\n // and now initialize it\n swiperEl.initialize();\n\n // Set up scrollbar and ensure this is recalculated on resize events\n this.setupScrollbarLayoutProperties();\n\n swiperEl.addEventListener('resize', (): void => {\n this.setupScrollbarLayoutProperties();\n });\n }\n\n /**\n * Move the carousel on to the next slide\n */\n nextSlide(): void {\n this.swiper.nativeElement.swiper.slideNext();\n }\n\n /**\n * Move the carousel back to the previous slide\n */\n previousSlide(): void {\n this.swiper.nativeElement.swiper.slidePrev();\n }\n\n /**\n * Emit event when the slide changes\n * @param swiper\n */\n onSlideChange(swiper: Swiper): void {\n this.activeIndexOnSlideChange.emit(swiper.activeIndex);\n }\n}\n","<ui-box\n class=\"ui-carousel\"\n [ngClass]=\"{ 'ui-carousel-overflow': carousel_overflow }\"\n box_align_y=\"center\"\n box_space=\"none\"\n [box_content_fill_width]=\"true\"\n box_background=\"transparent\"\n>\n <ui-stack #carouselctastack>\n <!-- Custom navigation buttons -->\n <ui-stack\n *ngIf=\"carousel_pagination === 'small-arrows'\"\n stack_direction=\"x\"\n stack_align=\"center\"\n stack_distribute=\"end\"\n >\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n box_space_bottom=\"none\"\n [box_space_right]=\"{ mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none' }\"\n box_background=\"transparent\"\n >\n <div\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n class=\"ui-carousel__small-arrows\"\n >\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"small\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"tertiary\"\n [aria_label]=\"text_for_left_arrow\"\n (clicked)=\"previousSlide()\"\n >\n Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"small\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"tertiary\"\n [aria_label]=\"text_for_right_arrow\"\n (clicked)=\"nextSlide()\"\n >\n Next slide\n </ui-button>\n </div>\n </ui-box>\n </ui-stack>\n\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\"\n >\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack\n stack_direction=\"x\"\n stack_align=\"center\"\n *ngIf=\"carousel_pagination === 'scroll-arrows' || carousel_pagination === 'scroll-bar'\"\n >\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n *ngIf=\"carousel_pagination === 'scroll-arrows'\"\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{ mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none' }\"\n box_background=\"transparent\"\n >\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\"\n >\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n [aria_label]=\"text_for_left_arrow\"\n (clicked)=\"previousSlide()\"\n >\n Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n [aria_label]=\"text_for_right_arrow\"\n (clicked)=\"nextSlide()\"\n >\n Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { CarouselComponent } from './carousel.component';\n\n@NgModule({\n imports: [CarouselComponent],\n exports: [CarouselComponent],\n})\nexport class OasysCarouselModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { TextTransform } from './text';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ui-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass],\n})\nexport class TextComponent implements OnInit {\n @Input() textAlign: 'left' | 'center' | 'right' = 'left';\n @Input() textWeight: 'normal' | 'medium' | 'bold' = 'normal';\n @Input() textTransform: TextTransform = 'none';\n\n uiTextClasses!: string;\n\n ngOnInit(): void {\n this.uiTextClasses = [\n `ui-text--align-${this.textAlign}`,\n `ui-text--weight-${this.textWeight}`,\n `ui-text--transform-${this.textTransform}`,\n ].join(' ');\n }\n}\n","<span class=\"ui-text\" [ngClass]=\"uiTextClasses\"><ng-content></ng-content></span>\n","import { NgModule } from '@angular/core';\nimport { TextComponent } from './text.component';\n\n@NgModule({\n imports: [TextComponent],\n exports: [TextComponent],\n})\nexport class OasysTextModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { LayoutBackgrounds, LayoutBackgroundsDeprecated } from '../layout/Layout';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutGridComponent } from '../layout/grid/grid.component';\nimport { LayoutGridColumnComponent } from '../layout/grid/grid-column.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { NgIf } from '@angular/common';\nimport { OasysHeadingComponent } from '../heading/heading.component';\nimport { OasysButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'ui-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n LayoutGridComponent,\n LayoutGridColumnComponent,\n LayoutStackComponent,\n NgIf,\n OasysHeadingComponent,\n OasysButtonComponent,\n ],\n providers: [TokenService],\n})\nexport class BannerComponent implements OnInit {\n // Design token variables;\n public mobilePadding: string;\n\n @Input() background_colour: LayoutBackgrounds | LayoutBackgroundsDeprecated = 'highlight';\n @Input() cta_text: string;\n @Input() banner_title: string;\n @Input() banner_surtitle: string;\n @Input() banner_subtitle: string;\n\n // CTA actions\n @Input() cta_link: string;\n @Output() cta_clicked: EventEmitter<void> = new EventEmitter();\n\n constructor(private tokenService: TokenService) {}\n\n ngOnInit(): void {\n this.mobilePadding = this.tokenService.getTokenValue('--oasys-component-banner-spacing-mobile');\n }\n\n onCtaClicked(): void {\n this.cta_clicked.emit();\n }\n}\n","<ui-box\n [box_background]=\"background_colour\"\n box_space_left=\"none\"\n box_space_right=\"none\"\n box_fill_mode=\"fill\"\n box_align_x=\"center\"\n class=\"ui-banner\"\n #bannerbox\n>\n <ui-grid grid_collapse_below=\"tablet\">\n <ui-column\n [columns]=\"{ mobile: 12, tablet: 10, laptop: 8, desktop: 8 }\"\n [column_inset]=\"{ mobile: 0, tablet: 1, laptop: 2, desktop: 2 }\"\n class=\"ui-banner__content\"\n >\n <ui-box\n [box_space]=\"{ mobile: mobilePadding, tablet: 'none' }\"\n box_space_top=\"none\"\n box_space_bottom=\"none\"\n box_background=\"transparent\"\n >\n <ui-stack\n class=\"content__stack\"\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_gap=\"near\"\n stack_collapse_below=\"tablet\"\n >\n <ui-stack\n class=\"content__stack\"\n stack_direction=\"x\"\n stack_align=\"center\"\n stack_gap=\"near\"\n >\n <!-- This is a stack as the icon will go here above the ui-heading -->\n <ui-heading\n *ngIf=\"banner_title || banner_surtitle || banner_subtitle\"\n heading_type=\"functional-primary\"\n [heading_title]=\"banner_title\"\n [heading_surtitle]=\"banner_surtitle\"\n [heading_subtitle]=\"banner_subtitle\"\n >\n </ui-heading>\n </ui-stack>\n <ui-button\n *ngIf=\"cta_text\"\n bwtrackas=\"oasys.hva-banner.cta\"\n button_size=\"large\"\n [button_type]=\"bannerbox.backgroundIsDark ? 'primary-inverse' : 'primary'\"\n [href]=\"cta_link\"\n (clicked)=\"onCtaClicked()\"\n >\n <span>{{ cta_text }}</span>\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-column>\n </ui-grid>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { BannerComponent } from './banner.component';\n\n@NgModule({\n imports: [BannerComponent],\n exports: [BannerComponent],\n})\nexport class OasysBannerModule {}\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { PillTone } from './pill';\n\n@Component({\n selector: 'ui-pill',\n templateUrl: './pill.component.html',\n styleUrls: ['./pill.component.scss'],\n standalone: true,\n host: {\n '[class]': '\"ui-pill-\" + tone',\n },\n})\nexport class OasysPillComponent {\n @Input() tone: PillTone = 'neutral';\n @Input() pill_role?: string | undefined = 'none';\n\n @HostBinding('attr.role') role: string | undefined = this.pill_role;\n}\n","<div role=\"status\" class=\"text-body--supporting text-body--emphasis\"><ng-content></ng-content></div>\n","import { NgModule } from '@angular/core';\nimport { OasysPillComponent } from './pill.component';\n\n@NgModule({\n imports: [OasysPillComponent],\n exports: [OasysPillComponent],\n})\nexport class OasysPillModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint.service';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\n\n@Component({\n selector: 'ui-pill-group',\n templateUrl: './pill-group.component.html',\n styleUrls: ['./pill-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [LayoutStackComponent],\n})\nexport class OasysPillGroupComponent {\n @Input() pill_group_align: 'start' | 'center' | 'end' = 'start';\n @Input() pill_group_collapse_below: 'tablet' | 'laptop' | 'desktop' | 'none' = 'tablet';\n\n constructor(private breakpointService: BreakpointService) {}\n\n get shouldCollapse(): boolean {\n switch (this.pill_group_collapse_below) {\n case 'tablet':\n return this.breakpointService.currentSize.value === Breakpoint.MOBILE;\n case 'laptop':\n return (\n this.breakpointService.currentSize.value === Breakpoint.MOBILE ||\n this.breakpointService.currentSize.value === Breakpoint.TABLET\n );\n case 'desktop':\n return (\n this.breakpointService.currentSize.value === Breakpoint.MOBILE ||\n this.breakpointService.currentSize.value === Breakpoint.TABLET ||\n this.breakpointService.currentSize.value === Breakpoint.LAPTOP\n );\n default:\n return false;\n }\n }\n}\n","<ui-stack\n stack_gap=\"near\"\n stack_direction=\"x\"\n [stack_collapse_below]=\"pill_group_collapse_below\"\n [stack_distribute]=\"pill_group_align\"\n [stack_wrap]=\"true\"\n [stack_as_list]=\"true\"\n>\n <ng-content></ng-content>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { OasysPillGroupComponent } from './pill-group.component';\n\n@NgModule({\n imports: [OasysPillGroupComponent],\n exports: [OasysPillGroupComponent],\n})\nexport class OasysPillGroupModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { LayoutAlignment, LayoutGapSizes } from '../layout';\nimport { ImageAspectRatio } from '../image/image';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { NgStyle, NgClass } from '@angular/common';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { ImageComponent } from '../image/image.component';\nimport { OasysHrefDirective } from '../../directives/href/href.directive';\n\nexport type PromoCardLayout = 'default' | 'compact';\n\nconst PROMO_CARD_LAYOUTS: Record<\n PromoCardLayout,\n {\n headingType: string;\n bodyType: string;\n spacing: LayoutGapSizes;\n }\n> = {\n default: {\n headingType: 'secondary',\n bodyType: 'body-default',\n spacing: 'default',\n },\n compact: {\n headingType: 'body-expressive',\n bodyType: 'body-supporting',\n spacing: 'near',\n },\n};\n\n@Component({\n selector: 'ui-promo-card',\n templateUrl: './promo-card.component.html',\n styleUrls: ['./promo-card.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n NgStyle,\n LayoutStackComponent,\n ImageComponent,\n NgClass,\n OasysHrefDirective,\n ],\n providers: [TokenService],\n})\nexport class PromoCardComponent implements OnInit {\n // Image\n @Input() image: string;\n @Input() alt_text: string;\n\n // Content\n @Input() title: string;\n @Input() subtitle: string;\n\n // CTAs\n @Input() primary_cta_text: string;\n @Input() href_primary_cta: string = '';\n\n // Style\n @Input() background_colour: string;\n @Input() font_colour: string;\n\n // Layout\n @Input() layout: PromoCardLayout = 'default';\n\n @Output() cta_clicked: EventEmitter<void> = new EventEmitter();\n\n aspectRatio: ImageAspectRatio;\n alignment: LayoutAlignment;\n layoutConfig = PROMO_CARD_LAYOUTS['default'];\n\n constructor(private tokenService: TokenService) {}\n\n ngOnInit(): void {\n this.layoutConfig = PROMO_CARD_LAYOUTS[this.layout] ?? PROMO_CARD_LAYOUTS['default'];\n this.aspectRatio = this.tokenService.getTokenValue(\n '--oasys-component-promo-card-image-aspect-ratio',\n ) as ImageAspectRatio;\n this.alignment = this.tokenService.getTokenValue(\n '--oasys-component-promo-card-heading-alignment',\n ) as LayoutAlignment;\n }\n\n ctaClicked(): void {\n this.cta_clicked.emit();\n }\n}\n","<ui-box box_space=\"none\" [ngStyle]=\"{ 'background-color': background_colour, color: font_colour }\">\n <ui-stack [stack_gap]=\"layoutConfig.spacing\" stack_align=\"center\">\n <ui-box box_space=\"none\">\n <ui-image\n [image_fill]=\"true\"\n [image_src]=\"image\"\n [image_alt_text]=\"alt_text\"\n [preload_aspect_ratio]=\"aspectRatio\"\n ></ui-image>\n </ui-box>\n <ui-box\n [box_align_y]=\"alignment\"\n box_space_top=\"none\"\n [box_space]=\"layoutConfig.spacing\"\n [ngStyle]=\"{ 'background-color': background_colour }\"\n >\n <ui-stack stack_gap=\"near\" stack_distribute=\"center\" [stack_align]=\"alignment\">\n <h3\n [ngClass]=\"{\n 'text-heading--body--expressive': layoutConfig.headingType === 'body-expressive',\n 'text-heading--secondary': layoutConfig.headingType === 'secondary',\n }\"\n role=\"heading\"\n class=\"seo-h2\"\n >\n <span class=\"heading-title text-heading\">{{ title }}</span>\n </h3>\n <p\n [ngClass]=\"{\n 'text-body--default': layoutConfig.bodyType === 'body-default',\n 'text-body--supporting': layoutConfig.bodyType === 'body-supporting',\n }\"\n >\n {{ subtitle }}\n </p>\n <a\n class=\"text-link text-link--standalone\"\n bwtrackas=\"component.modular-content-card.cta\"\n href=\"{{ href_primary_cta }}\"\n (click)=\"ctaClicked()\"\n >{{ primary_cta_text }}</a\n >\n </ui-stack>\n </ui-box>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { PromoCardComponent } from './promo-card.component';\n\n@NgModule({\n imports: [PromoCardComponent],\n exports: [PromoCardComponent],\n})\nexport class OasysPromoCardModule {}\n","import { NgClass, NgIf } from '@angular/common';\nimport { Component, ElementRef, HostBinding, Input, OnInit, DOCUMENT } from '@angular/core';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\n\n@Component({\n selector: 'ui-price',\n templateUrl: './price.component.html',\n styleUrls: ['./price.component.scss'],\n standalone: true,\n imports: [NgClass, LayoutStackComponent, NgIf],\n})\nexport class OasysPriceComponent {\n @HostBinding('class') get class() {\n return `\n ${this.price_type === 'hero' ? 'text-body--hero' : ''}\n ${this.price_type === 'primary' ? 'text-body--default' : ''}\n ${this.price_type === 'supporting' ? 'text-body--supporting' : ''}\n `;\n }\n\n @Input() price: string;\n @Input() price_before_discount?: string;\n\n @Input() price_type: 'hero' | 'primary' | 'supporting' = 'primary';\n}\n","<div class=\"ui-price\" [ngClass]=\"price_type\">\n <ui-stack\n stack_direction=\"x\"\n stack_gap=\"near\"\n stack_align=\"center\"\n [ngClass]=\"{ 'oasys-price-has-discount': price_before_discount }\"\n >\n <div [attr.aria-hidden]=\"true\" *ngIf=\"price_before_discount\" class=\"text-body--line-through\">\n {{ price_before_discount }}\n </div>\n <div itemprop=\"price\" class=\"price-to-pay\">{{ price }}</div>\n </ui-stack>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { NgClass, NgStyle, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { ImageComponent } from '../image/image.component';\nimport { OasysPriceComponent } from '../price/price.component';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type ISelectCardType = 'product-card' | 'gift-card';\n\n@Component({\n selector: 'ui-select-card',\n templateUrl: './select-card.component.html',\n styleUrls: ['./select-card.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n NgClass,\n LayoutBoxComponent,\n LayoutStackComponent,\n NgStyle,\n NgIf,\n ImageComponent,\n NgTemplateOutlet,\n OasysPriceComponent,\n IconComponent,\n ],\n providers: [TokenService],\n})\nexport class SelectCardComponent implements OnInit {\n // Image\n @Input() image?: string;\n @Input() alt_text?: string = '';\n @Input() image_format: string;\n\n // Content\n @Input() title: string;\n @Input() primary_copy: string;\n @Input() secondary_copy: string;\n @Input() price: string;\n @Input() price_before_discount: string;\n @Input() selected = false;\n @Input() select_card_type: ISelectCardType = 'gift-card';\n\n @Output() clicked = new EventEmitter<void>();\n\n aspectRatio: string;\n alignment: string;\n\n constructor(private tokenService: TokenService) {}\n\n ngOnInit(): void {\n if (!this.image) {\n return;\n }\n\n this.aspectRatio = this.setImageAspectRatio(this.image_format);\n }\n\n onClick(): void {\n this.clicked.emit();\n }\n\n /**\n *\n * @param format\n * @returns\n */\n setImageAspectRatio(format: string): string {\n switch (format) {\n case 'square':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-square');\n case 'portrait':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-portrait');\n default:\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-portrait');\n }\n }\n}\n","<button\n role=\"button\"\n class=\"ui-select-card--{{ select_card_type }}\"\n tabindex=\"0\"\n [ngClass]=\"{ selected: selected }\"\n [attr.aria-pressed]=\"selected ? 'true' : 'false'\"\n (click)=\"onClick()\"\n>\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <ui-stack stack_gap=\"none\" stack_align=\"center\">\n <ui-box\n class=\"ui-select-card__image\"\n [ngStyle]=\"{ 'aspect-ratio': aspectRatio }\"\n box_background=\"transparent\"\n box_align_x=\"center\"\n box_space=\"none\"\n >\n <ui-image\n *ngIf=\"image\"\n [image_src]=\"image\"\n [image_alt_text]=\"alt_text\"\n [image_fill]=\"true\"\n ></ui-image>\n <ng-content></ng-content>\n </ui-box>\n <ng-template\n *ngIf=\"select_card_type === 'gift-card'\"\n [ngTemplateOutlet]=\"giftcard\"\n ></ng-template>\n <ng-template\n *ngIf=\"select_card_type === 'product-card'\"\n [ngTemplateOutlet]=\"productcard\"\n ></ng-template>\n </ui-stack>\n </ui-box>\n</button>\n\n<!--- GIFT CARD TEMPLATE -->\n<ng-template #giftcard>\n <ui-box box_space=\"tight\" box_background=\"transparent\">\n <ui-stack class=\"ui-select-card__text-stack\" stack_direction=\"y\" stack_gap=\"tight\">\n <span class=\"ui-select-card__text-body text-label--primary\">{{ title }}</span>\n\n <ui-price\n [price]=\"price\"\n [price_before_discount]=\"price_before_discount\"\n price_type=\"primary\"\n ></ui-price>\n </ui-stack>\n </ui-box>\n</ng-template>\n\n<!--- PRODUCT CARD TEMPLATE -->\n<ng-template #productcard>\n <ui-box box_fill_mode=\"fit\" box_space=\"near\" box_background=\"transparent\">\n <ui-stack stack_direction=\"y\" stack_gap=\"near\">\n <ui-stack class=\"ui-select-card__text-stack\" stack_direction=\"y\" stack_gap=\"none\">\n <h5>{{ title }}</h5>\n <ui-stack stack_direction=\"x\" stack_gap=\"near\" stack_align=\"center\">\n <ui-price\n [price]=\"price\"\n [price_before_discount]=\"price_before_discount\"\n price_type=\"hero\"\n ></ui-price>\n <ui-icon\n *ngIf=\"price_before_discount\"\n class=\"ui-select-card--product-card__discount-icon\"\n icon_name=\"tag\"\n icon_size_override=\"1.5\"\n ></ui-icon>\n </ui-stack>\n </ui-stack>\n <ui-stack stack_gap=\"near\">\n <p class=\"text-body--supporting\">{{ secondary_copy }}</p>\n <p class=\"text-body--default\">{{ primary_copy }}</p>\n </ui-stack>\n </ui-stack>\n </ui-box>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { SelectCardComponent } from './select-card.component';\n\n@NgModule({\n imports: [SelectCardComponent],\n exports: [SelectCardComponent],\n})\nexport class OasysSelectCardModule {}\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[ui-emphasis]',\n standalone: true,\n})\nexport class EmphasisDirective implements OnChanges {\n @Input() searchText: string = '';\n @Input() displayParagraph: string = '';\n\n constructor(private element: ElementRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['searchText'] || changes['displayParagraph']) {\n this.boldsearchText();\n }\n }\n\n private boldsearchText() {\n if (!this.searchText || !this.displayParagraph) {\n this.element.nativeElement.innerHTML = this.displayParagraph;\n return;\n }\n\n const regex = new RegExp(`${this.searchText}`, 'gi');\n const emphasisText = this.displayParagraph.replace(\n regex,\n (match) => `<span class=\"text-body--emphasis\">${match}</span>`,\n );\n this.element.nativeElement.innerHTML = emphasisText;\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n forwardRef,\n ElementRef,\n Inject,\n AfterViewInit,\n ViewChild,\n QueryList,\n ViewChildren,\n OnChanges,\n SimpleChanges,\n HostListener,\n signal,\n DOCUMENT\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { ComboboxOption, ComboboxType } from './combobox';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { LayoutBoxComponent } from '../../layout/box/box.component';\nimport { OasysAutofocusDirective } from '../../../directives/autofocus/autofocus.directive';\nimport { IconComponent } from '../../icon/icon.component';\nimport { EmphasisDirective } from '../../../directives/emphasis/emphasis.directive';\nimport { OasysButtonComponent } from '../../button';\n\n@Component({\n selector: 'ui-combobox',\n templateUrl: './combobox.component.html',\n styleUrls: ['./combobox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboboxComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [\n LayoutStackComponent,\n LayoutBoxComponent,\n ReactiveFormsModule,\n FormsModule,\n NgClass,\n OasysAutofocusDirective,\n IconComponent,\n EmphasisDirective,\n OasysButtonComponent,\n ],\n})\nexport class ComboboxComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {\n @Input() label!: string;\n @Input() type: ComboboxType = 'options';\n @Input() options: ComboboxOption[] = [];\n @Input() optional = true;\n\n @Input({ required: false }) hint?: string;\n @Input({ required: false }) header?: string;\n @Input({ required: false }) footer?: string;\n @Input({ required: false }) autofocus = false;\n @Input({ required: false }) disabled = false;\n @Input({ required: false }) selected?: ComboboxOption;\n // Key value from options to be displayed as option label\n @Input({ required: false }) displayKey?: string;\n // Key value from options to be used as icon in option label\n @Input({ required: false }) iconNameKey?: string;\n // Key value from options be be value\n @Input({ required: false }) valueKey?: string;\n // Available for Autocomplete\n @Input({ required: false }) subtextKey?: string;\n @Input({ required: false }) placeholder?: string;\n // Will open the list of options on init\n @Input({ required: false }) showOptions = false;\n\n @Output() didChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n @Output() didSearch: EventEmitter<unknown> = new EventEmitter<unknown>();\n @Output() didEdit: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n textValue = '';\n inputDidChange = false; // only show valdiation after a change event (ie. blur)\n displayOptions: ComboboxOption[] = [];\n private _selectedOption?: ComboboxOption;\n private _focusedOption?: ComboboxOption;\n private _focusedOptionId = 0;\n\n private textInputClicked = false;\n\n id!: string;\n\n /** Whether or not the overlay panel is open. */\n panelOpen = signal(false);\n\n private openedViaKeyboard = false;\n\n /**\n * Selected option\n */\n get selectedOption(): ComboboxOption | undefined {\n return this._selectedOption;\n }\n\n /**\n * Focused Option\n */\n get focusedOption(): ComboboxOption | undefined {\n return this._focusedOption;\n }\n\n /**\n * Return the id of the focused option\n */\n get focusedId(): number {\n return this._focusedOptionId;\n }\n\n get shouldShowFocus(): boolean {\n return this.openedViaKeyboard && this.panelOpen();\n }\n\n get valueOptionKey(): string {\n return this.valueKey ?? 'value';\n }\n\n get displayOptionKey(): string {\n return this.displayKey ?? 'label';\n }\n\n get subtextOptionKey(): string {\n return this.subtextKey ?? 'subtext';\n }\n\n @ViewChild('textinput', { read: ElementRef })\n textInput?: ElementRef<HTMLElement>;\n\n @ViewChild('combobox', { read: ElementRef })\n combobox?: ElementRef<HTMLElement>;\n\n @ViewChildren('option') optionsList?: QueryList<ElementRef<HTMLElement>>;\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n onChange = (_: unknown): void => {}; // eslint-disable-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n onTouched = (): void => {}; // eslint-disable-line @typescript-eslint/no-empty-function\n\n @HostListener('document:click', ['$event.target'])\n\n /**\n * Click outside combobox close the panel\n */\n public onClick(targetElement: Node): void {\n if (this.panelOpen() && this.combobox?.nativeElement) {\n const clickedInside = this.combobox.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.closePanel();\n this.textInputClicked = false;\n }\n }\n }\n\n /**\n * On Change\n * @param changes\n */\n ngOnChanges(changes: SimpleChanges): void {\n // Detects if the autocomplete options list is chnaged after a selection of an option.\n // Example: Address search can have options assigned to a group of options. One postcode to have x number of addreses\n // If Options list is Changed as part of group option we let the options panel open to let user select a single option. This is considered as change input value(similar with type value)\n if (this.type === 'autocomplete') {\n const optionchanges = changes['options'];\n if (\n optionchanges.currentValue !== optionchanges.previousValue &&\n this.options.length !== 0 &&\n !optionchanges.firstChange\n ) {\n this.resetOptionsList();\n this.openPanelWithoutSelectingOption();\n }\n }\n }\n\n /**\n * On Init\n */\n ngOnInit(): void {\n this.id = `${this.label}${Math.random()}`;\n this.resetSelection();\n this.resetOptionsList();\n\n if (\n this.selected &&\n typeof this.selected === 'object' &&\n this.valueOptionKey in this.selected\n ) {\n const selectedValue = (this.selected as unknown as Record<string, unknown>)[\n this.valueOptionKey\n ];\n const selectedIndex = this.options.findIndex((option: ComboboxOption | undefined) => {\n if (option && typeof option === 'object' && this.valueOptionKey in option) {\n return (\n (option as unknown as Record<string, unknown>)[this.valueOptionKey] === selectedValue\n );\n }\n return false;\n });\n if (selectedIndex >= 0) {\n this.selectOption(this.options[selectedIndex], selectedIndex);\n this.closePanel();\n }\n }\n if (this.showOptions) {\n this.openPanelWithoutSelectingOption();\n }\n }\n\n /**\n * After View Init\n */\n ngAfterViewInit(): void {\n this.setupValidationListener();\n }\n\n /**\n * Select Option\n * @param option\n */\n public selectOption(option?: ComboboxOption, index?: number): void {\n this._selectedOption = option;\n this._focusedOptionId = index ?? 0;\n this._focusedOption = option;\n if (option && typeof option === 'object' && this.displayOptionKey in option) {\n this.textValue = (option as unknown as Record<string, unknown>)[\n this.displayOptionKey\n ] as string;\n }\n\n this.onChange(this.textValue);\n this.didChange.emit(this.selectedOption);\n this.onTouched();\n }\n\n /**\n * On Key Navigation\n * @param event\n */\n public onKeyDown(event: KeyboardEvent): void {\n // For 'options' type, keyboard navigation is handled by the combobox container\n // For 'autocomplete' type, keyboard navigation is handled by the input element\n\n const isOptionsType = this.type === 'options';\n const isAutocompleteType = this.type === 'autocomplete';\n const isFromInput = event.target === this.textInput?.nativeElement;\n const isFromCombobox =\n event.target === this.combobox?.nativeElement ||\n this.combobox?.nativeElement.contains(event.target as Node);\n\n // Only handle keyboard navigation from appropriate elements\n if (isOptionsType && !isFromCombobox) {\n return;\n }\n if (isAutocompleteType && !isFromInput && !isFromCombobox) {\n return;\n }\n\n const isPanelOpen = this.panelOpen();\n const hasOptions = this.displayOptions.length > 0;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n event.stopPropagation();\n if (!isPanelOpen && hasOptions) {\n this.openPanelAndSelectOption();\n } else if (isPanelOpen && hasOptions) {\n this.openedViaKeyboard = true;\n this.navigateOptions('down');\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n event.stopPropagation();\n if (!isPanelOpen && hasOptions) {\n this.openPanelAndSelectOption();\n } else if (isPanelOpen && hasOptions) {\n this.openedViaKeyboard = true;\n this.navigateOptions('up');\n }\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n event.stopPropagation();\n if (!isPanelOpen && hasOptions && this.type === 'options') {\n this.openPanelAndSelectOption();\n } else if (!isPanelOpen && hasOptions && this.type === 'autocomplete') {\n this.openPanelWithoutSelectingOption();\n } else if (isPanelOpen) {\n this.pressEnter();\n this.closePanel();\n }\n break;\n\n case 'Escape':\n if (isPanelOpen) {\n event.preventDefault();\n event.stopPropagation();\n this.closePanel();\n } else {\n this.textValue = '';\n this.resetSelection();\n }\n break;\n\n case 'Tab':\n if (isPanelOpen) {\n this.pressEnter();\n this.closePanel();\n }\n break;\n }\n }\n\n /**\n * Toggle Options Panel\n */\n togglePanel(): void {\n this.openedViaKeyboard = false;\n this.panelOpen.set(!this.panelOpen());\n if (this.panelOpen()) {\n this.initSelectedFocus();\n setTimeout(() => {\n this.scrollFocusedOptionIntoView();\n }, 0);\n }\n }\n\n /**\n * Open Options Panel\n */\n openPanelWithoutSelectingOption(event?: Event): void {\n event?.preventDefault();\n if (!this.panelOpen()) {\n this.panelOpen.set(true);\n this._focusedOptionId = -1;\n setTimeout(() => {\n this.scrollFocusedOptionIntoView();\n }, 0);\n }\n }\n\n private openPanelAndSelectOption(): void {\n if (!this.panelOpen() && this.displayOptions.length > 0) {\n this.openedViaKeyboard = true;\n this.panelOpen.set(true);\n\n this.initSelectedFocus();\n\n if (this.combobox?.nativeElement) {\n this.combobox.nativeElement.focus();\n }\n\n setTimeout(() => {\n this.scrollFocusedOptionIntoView();\n }, 0);\n }\n }\n\n /**\n * Close Options Panel\n */\n closePanel(): void {\n this.panelOpen.set(false);\n this.openedViaKeyboard = false;\n this.initSelectedFocus();\n }\n\n /**\n * Get Input display value\n * @param textValue\n */\n writeValue(textValue: string): void {\n if ((this.selected && typeof textValue !== 'string') || textValue === '') {\n if (\n this._selectedOption &&\n typeof this._selectedOption === 'object' &&\n this.displayOptionKey in this._selectedOption\n ) {\n this.textValue = (this._selectedOption as unknown as Record<string, unknown>)[\n this.displayOptionKey\n ] as string;\n }\n } else {\n this.textValue = textValue;\n }\n }\n\n /**\n * Register Form input chnage\n * @param fn\n */\n registerOnChange(fn: (_: unknown) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Register form input touch\n * @param fn\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * On Model Change\n * @param textValue\n */\n onModelChange(textValue: string): void {\n this.textValue = textValue;\n this.inputDidChange = true;\n this.onChange(textValue);\n this.onTouched();\n this.didChange.emit(this.selectedOption);\n }\n\n /**\n * On Model Change\n * @param textValue\n */\n onModelChangeAutocomplete(textValue: string): void {\n this.textValue = textValue;\n this.inputDidChange = true;\n this.onChange(textValue);\n this.onTouched();\n this.didChange.emit(this.selectedOption);\n\n this.onAutocompleteListSearch(textValue);\n }\n\n /**\n * Event handling for Input value\n */\n handleEvent(): void {\n this.inputDidChange = true;\n\n const inputElement = this.document.getElementById(this.id.toString());\n inputElement?.removeEventListener('change', this);\n }\n\n /**\n * Clean Input\n */\n cleanInput(): void {\n this.textValue = '';\n this.resetSelection();\n this.resetOptionsList();\n this.closePanel();\n this.didSearch.emit(this.textValue);\n }\n\n /**\n * On footer action\n */\n onFooterAction(): void {\n this.didEdit.emit();\n }\n\n /**\n * On Focus Input\n */\n onFocusInput(): void {\n this.textInput?.nativeElement.focus();\n }\n\n onTextInputClick(): void {\n if (this.textInputClicked) {\n this.openPanelWithoutSelectingOption();\n } else {\n this.textInputClicked = true;\n }\n }\n\n onScreenReaderFocus(): void {\n const isPanelOpen = this.panelOpen();\n const hasOptions = this.displayOptions.length > 0;\n\n if (!isPanelOpen && hasOptions) {\n this.openPanelAndSelectOption();\n } else if (isPanelOpen) {\n this.pressEnter();\n this.closePanel();\n }\n }\n\n /**\n * Search in Autocomplete\n * @param textValue\n */\n private onAutocompleteListSearch(textValue: string): void {\n if (!textValue) {\n this.closePanel();\n this.resetSelection();\n } else {\n this.openPanelWithoutSelectingOption();\n this.displayOptions = this.options.filter((option: ComboboxOption) => {\n return (\n this.checkIncludesSubstring(option, this.displayOptionKey) ??\n this.checkIncludesSubstring(option, this.subtextOptionKey)\n );\n });\n if (this.displayOptions.length === 0) {\n this.closePanel();\n }\n }\n this.textInput?.nativeElement.focus();\n this.didSearch.emit(this.textValue);\n }\n\n /**\n * Check a susbtring is included in option value\n * @param option\n * @returns\n */\n private checkIncludesSubstring(option: ComboboxOption, key: string): unknown {\n return (option as unknown as Record<string, unknown>)[key]\n ?.toString()\n .toLowerCase()\n .includes(this.textValue.toLowerCase());\n }\n\n /**\n * Set Input Validators\n */\n private setupValidationListener(): void {\n const inputElement = this.document.getElementById(this.id.toString());\n inputElement?.addEventListener('change', this);\n }\n\n /**\n * Init focus mode or set the selected option as focused\n */\n private initSelectedFocus(): void {\n if (this.panelOpen() && this.displayOptions.length > 0) {\n if (this._selectedOption) {\n const selectedIndex = this.displayOptions.findIndex(\n (option) => option === this._selectedOption,\n );\n\n if (selectedIndex >= 0) {\n this._focusedOptionId = selectedIndex;\n this._focusedOption = this._selectedOption;\n return;\n }\n }\n\n this._focusedOptionId = 0;\n this._focusedOption = this.displayOptions[0];\n this.autocompleteOptionTextPreview();\n }\n }\n\n private navigateOptions(direction: 'up' | 'down'): void {\n if (this.displayOptions.length === 0) {\n return;\n }\n\n if (direction === 'down') {\n this._focusedOptionId = Math.min(this._focusedOptionId + 1, this.displayOptions.length - 1);\n } else {\n this._focusedOptionId = Math.max(this._focusedOptionId - 1, 0);\n }\n\n this._focusedOption = this.displayOptions[this._focusedOptionId];\n this.pressEnter();\n this.autocompleteOptionTextPreview();\n this.scrollFocusedOptionIntoView();\n }\n\n private scrollFocusedOptionIntoView(): void {\n if (\n this.optionsList &&\n this._focusedOptionId >= 0 &&\n this._focusedOptionId < this.displayOptions.length\n ) {\n const focusedElement = this.optionsList.get(this._focusedOptionId)?.nativeElement;\n if (focusedElement) {\n focusedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n }\n }\n\n /**\n * Change textValue to preview the option in autocomplete\n */\n private autocompleteOptionTextPreview(): void {\n if (\n this.type === 'autocomplete' &&\n this._focusedOption &&\n typeof this._focusedOption === 'object' &&\n this.displayOptionKey in this._focusedOption\n ) {\n this.textValue = (this._focusedOption as unknown as Record<string, unknown>)[\n this.displayOptionKey\n ] as string;\n }\n }\n\n /**\n * Press Enter inside Options Panel\n */\n private pressEnter(): void {\n if (\n this.panelOpen() &&\n this.displayOptions.length > 0 &&\n this._focusedOptionId >= 0 &&\n this._focusedOptionId < this.displayOptions.length\n ) {\n this.selectOption(this.displayOptions[this._focusedOptionId], this._focusedOptionId);\n }\n }\n\n /**\n * Reset selected option\n */\n private resetSelection(): void {\n this._selectedOption = undefined;\n this._focusedOption = undefined;\n this._focusedOptionId = 0;\n }\n\n /**\n * Reset to original or unfiltered option list\n */\n private resetOptionsList(): void {\n this.displayOptions = this.options;\n }\n}\n","<ui-stack class=\"ui-combobox-container\" stack_gap=\"tight\">\n <div class=\"ui-combobox text-body--default text-body--regular\">\n <!-- Compbobox Options Input -->\n @if (type === 'options') {\n <div\n #combobox\n name=\"combobox\"\n [tabindex]=\"disabled ? -1 : 0\"\n (keydown)=\"onKeyDown($event)\"\n (mousedown)=\"togglePanel()\"\n role=\"combobox\"\n id=\"activedescendent-edit\"\n [attr.aria-label]=\"label\"\n [attr.aria-activedescendant]=\"panelOpen() ? 'activedescendent-opt-' + focusedId : null\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-controls]=\"'activedescendent-list'\"\n [attr.disabled]=\"disabled || null\"\n aria-readonly=\"true\"\n aria-owns=\"activedescendent-list\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [class.keyboard-focus]=\"shouldShowFocus\"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n </div>\n <input\n #textinput\n (focus)=\"onScreenReaderFocus()\"\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"onModelChange(textValue)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'on'\"\n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"selectedOption\"\n [placeholder]=\"placeholder || ''\"\n readonly=\"readonly\"\n tabindex=\"-1\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n <!-- Select Icon Chevron Area -->\n <div class=\"icon-container\" [ngClass]=\"{ expand: panelOpen() }\">\n <ui-icon icon_name=\"chevron-down\"></ui-icon>\n </div>\n </ui-stack>\n </div>\n }\n <!-- Combobox Autocomplete Input -->\n @if (type === 'autocomplete') {\n <div\n #combobox\n name=\"combobox\"\n [tabindex]=\"disabled ? -1 : 0\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocusInput()\"\n role=\"combobox\"\n id=\"activedescendent-edit\"\n [attr.aria-label]=\"label\"\n [attr.aria-activedescendant]=\"panelOpen() ? 'activedescendent-opt-' + focusedId : null\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-controls]=\"'activedescendent-list'\"\n aria-readonly=\"true\"\n aria-owns=\"activedescendent-list\"\n aria-autocomplete=\"list\"\n [class.keyboard-focus]=\"shouldShowFocus\"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (click)=\"onTextInputClick()\"\n (ngModelChange)=\"onModelChangeAutocomplete($event)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'list'\"\n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"textValue\"\n [placeholder]=\"placeholder || ''\"\n role=\"combobox\"\n tabindex=\"-1\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n\n <!-- Combobox Icon Clear Area -->\n <div class=\"icon-container\" [attr.aria-label]=\"'clean'\" (click)=\"cleanInput()\">\n @if (textValue) {\n <ui-icon icon_name=\"close\"></ui-icon>\n }\n </div>\n </ui-stack>\n </div>\n }\n <!-- Combobox Options Panel -->\n @if (panelOpen()) {\n <div\n class=\"ui-combobox-options\"\n [ngClass]=\"{ expand: panelOpen(), 'keyboard-open': shouldShowFocus }\"\n role=\"listbox\"\n id=\"activedescendent-list\"\n >\n <!-- Autocomplete Options Panel Header -->\n @if (header && type === 'autocomplete') {\n <div class=\"ui-combobox-header text-body--supporting\">\n <span>{{ header }}</span>\n </div>\n }\n\n <!-- Options list -->\n @for (option of displayOptions; track option; let i = $index) {\n <div\n #option\n class=\"ui-combobox-option\"\n [ngClass]=\"{\n selected: selectedOption === option && (!shouldShowFocus || focusedOption === option),\n focus: shouldShowFocus && focusedOption === option,\n }\"\n (click)=\"selectOption(option, i)\"\n (keydown)=\"onKeyDown($event)\"\n [id]=\"'activedescendent-opt-' + i\"\n [attr.aria-selected]=\"selectedOption === option\"\n [attr.aria-label]=\"\n selectedOption === option\n ? option[displayOptionKey] + ' is selected'\n : option[displayOptionKey]\n \"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <!-- Option display -->\n <div\n [attr.value]=\"valueKey ? option[valueKey] : option.value\"\n [attr.ngValue]=\"displayKey ? option[displayKey] : option.label\"\n >\n <ui-stack stack_direction=\"x\" stack_align=\"center\" stack_gap=\"tight\">\n @if (option.icon_name || (iconNameKey && option[iconNameKey])) {\n <ui-icon\n [icon_name]=\"iconNameKey ? option[iconNameKey] : option.icon_name\"\n ></ui-icon>\n }\n <!-- Display options label -->\n @if (type === 'options') {\n <span>{{ option[displayOptionKey] }}</span>\n }\n\n <!-- Display autocomplete option information and emphasis-->\n @if (type === 'autocomplete') {\n <ui-stack stack_gap=\"tiny\">\n <span\n ui-emphasis\n [searchText]=\"textValue\"\n [displayParagraph]=\"option[displayOptionKey]\"\n >\n </span>\n <p class=\"foreground-secondary-text\">\n {{ option[subtextOptionKey] }}\n </p>\n </ui-stack>\n }\n </ui-stack>\n </div>\n\n <!-- Selected icon -->\n @if (selectedOption === option) {\n <ui-icon icon_name=\"tick\"></ui-icon>\n }\n </ui-stack>\n </div>\n }\n <!-- Autocomplete Options Panel Footer -->\n @if (footer && type === 'autocomplete') {\n <div class=\"ui-combobox-footer\">\n <ui-button button_type=\"tertiary\" (click)=\"onFooterAction()\">\n {{ footer }}\n </ui-button>\n </div>\n }\n </div>\n }\n </div>\n <ui-stack stack_gap=\"none\">\n <div class=\"input-errors\">\n <div class=\"input-errors-content\">\n <ng-content select=\"ui-form-errors\"></ng-content>\n </div>\n </div>\n @if (hint) {\n <ui-box\n class=\"hint-container\"\n box_background=\"transparent\"\n box_space=\"none\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"near\"\n >\n <div class=\"ui-text-input-hint text-body--supporting text-color--supporting\">\n {{ hint }}\n </div>\n </ui-box>\n }\n </ui-stack>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { ComboboxComponent } from './combobox.component';\n\n@NgModule({\n imports: [ComboboxComponent],\n exports: [ComboboxComponent],\n})\n/**\n * @ngModule OasysComboboxModule\n * @description\n *\n * A combo box is a text box with a list box attached.\n * This type of control enables users to select a predefined value in a list or type their own value in the text box portion of the control.\n *\n * @usageNotes\n *\n * @example of a Combobox Options type\n * <ui-combobox\n * formControlName=\"select\"\n * label=\"Label\"\n * [options]=\"[\n * {value:'option 1', label: '1 week'},\n * {value:'option 2', label: '2 weeks' },\n * {value:'option 3', label: '3 weeks'},\n * {value:'option 4', label: '4 weeks'} ]\"\n * hint=\"Hint!! Please select frequency\"\n * [selected]=\"{value:'option 3', label: '3 weeks' }\"\n * ></ui-combobox>\n *\n * Pug:\n * ui-combobox(\n * formControlName=\"select\"\n * label=\"Label\"\n * [options]=\"[\n * {value:'option 1', label: '1 week'},\n * {value:'option 2', label: '2 weeks' },\n * {value:'option 3', label: '3 weeks'},\n * {value:'option 4', label: '4 weeks'} ]\"\n * hint=\"Hint!! Please select frequency\"\n * [selected]=\"{value:'option 3', label: '3 weeks' }\")\n *\n *\n * @example of a Combobox Autocomplete type\n * <ui-combobox\n * formControlName=\"select\"\n * type=\"autocomplete\"\n * footer=\"Add manual an option\"\n * label=\"Label\"\n * [options]=\"[\n * {value:'option 1', label: '1 week'},\n * {value:'option 2', label: '2 weeks' },\n * {value:'option 3', label: '3 weeks'},\n * {value:'option 4', label: '4 weeks'} ]\"\n * hint=\"Hint!! Please select frequency\"\n * [selected]=\"{value:'option 3', label: '3 weeks' }\"\n * ></ui-combobox>\n *\n * Pug:\n * ui-combobox(\n * formControlName=\"select\"\n * type=\"autocomplete\"\n * footer=\"Add manual an option\"\n * label=\"Label\"\n * [options]=\"[\n * {value:'option 1', label: '1 week'},\n * {value:'option 2', label: '2 weeks' },\n * {value:'option 3', label: '3 weeks'},\n * {value:'option 4', label: '4 weeks'} ]\"\n * hint=\"Hint!! Please select frequency\"\n * [selected]=\"{value:'option 3', label: '3 weeks' }\")\n *\n * @OasysLib\n */\nexport class OasysComboboxModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { LayoutBackgrounds } from '../layout/Layout';\nimport { IconNames } from '../icon/icon';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { NgIf } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\ninterface LabelType {\n type: 'free-delivery' | 'featured' | 'limited-edition' | 'rewards-bonus-points' | '';\n}\n\ntype TextStyle = 'bodySupporting' | 'bodyMicro' | '';\n\n@Component({\n selector: 'ui-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n standalone: true,\n imports: [LayoutBoxComponent, LayoutStackComponent, NgIf, IconComponent],\n})\nexport class LabelComponent implements OnInit {\n @Input() type: LabelType['type'] = '';\n @Input() text: string = '';\n @Input() textStyle: TextStyle = '';\n @Input() showIcon = true;\n @Input() iconOverride: IconNames;\n @Input() backgroundColorOverride: LayoutBackgrounds;\n\n backgroundColour: LayoutBackgrounds = 'tint-highlight';\n iconName: IconNames;\n labelStyle: LayoutBackgrounds;\n\n private readonly textStyleToFontSizeMap: Record<TextStyle, string> = {\n bodySupporting: 'text-body--supporting',\n bodyMicro: 'text-body--micro',\n '': 'text-body--supporting',\n };\n\n get fontSize(): string {\n return this.textStyleToFontSizeMap[this.textStyle as TextStyle] || 'text-body--supporting';\n }\n\n ngOnInit(): void {\n if (this.showIcon && this.iconOverride) {\n this.iconName = this.iconOverride;\n }\n\n switch (this.type) {\n case 'free-delivery':\n this.setLabelProperties('delivery');\n break;\n case 'featured':\n this.setLabelProperties('featured');\n break;\n case 'limited-edition':\n this.setLabelProperties('logomark');\n break;\n case 'rewards-bonus-points':\n this.setLabelProperties('rewards');\n break;\n default:\n this.backgroundColour = 'tint-highlight';\n }\n }\n\n private setLabelProperties(defaultIconName: string): void {\n this.labelStyle = this.backgroundColorOverride || (this.type as LayoutBackgrounds);\n this.iconName = this.iconName || (defaultIconName as IconNames);\n }\n}\n","<ui-box\n class=\"ui-label oasys-label-style-{{ labelStyle }}\"\n box_space=\"tiny\"\n box_space_left=\"tight\"\n box_space_right=\"tight\"\n box_fill_mode=\"fit\"\n [box_background]=\"backgroundColour\"\n>\n <ui-stack stack_direction=\"x\" stack_align=\"center\" stack_gap=\"tiny\">\n <ui-icon *ngIf=\"showIcon\" [icon_name]=\"iconName\" icon_size=\"small\"></ui-icon>\n <span [class]=\"fontSize\">{{ text }}</span>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { LabelComponent } from './label.component';\n\n@NgModule({\n imports: [LabelComponent],\n exports: [LabelComponent],\n})\nexport class OasysLabelModule {}\n","import {\n AfterContentInit,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n standalone: true,\n selector: 'ui-tab',\n template: '<ng-template #tabContent><ng-content></ng-content></ng-template>',\n})\nexport class OasysTabComponent implements AfterContentInit {\n @Input() tab_label = undefined;\n @Input() tab_active: boolean = false;\n @Output() clicked = new EventEmitter<void>();\n\n @ViewChild('tabContent', { static: true }) template!: TemplateRef<void>;\n\n ngAfterContentInit(): void {\n if (!this.template) {\n throw new Error(this.tab_label + ': <ui-tab> can`t be empty');\n }\n }\n}\n","import { Component, input, Input, TemplateRef } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'ui-tab-active',\n template:\n '<div role=\"tabpanel\"> <ng-template [ngTemplateOutlet]=\"templateRef()\"></ng-template></div>',\n})\nexport class OasysTabActiveComponent {\n templateRef = input<TemplateRef<void>>();\n}\n","import { Component, Input, QueryList, Output, EventEmitter, input } from '@angular/core';\nimport { NgClass, NgFor } from '@angular/common';\n\nimport { OasysLayoutModule } from '../../../layout';\nimport { OasysTabComponent } from '../tab/tab.component';\n\n@Component({\n standalone: true,\n imports: [OasysLayoutModule, NgClass, NgFor],\n selector: 'ui-tab-header',\n templateUrl: './tab-header.component.html',\n styleUrl: './tab-header.component.scss',\n})\nexport class OasysTabHeaderComponent {\n @Input() tab_size: 'small' | 'large' = 'small';\n @Input() tabs: QueryList<OasysTabComponent>;\n @Output() tab_clicked = new EventEmitter<OasysTabComponent>();\n tab_active = input<OasysTabComponent>();\n\n activeComponent: OasysTabComponent;\n length: 0;\n domEles;\n /**\n * Get class for the active indicator based os size\n * @returns\n */\n getIndicatorClass(): string {\n return this.tab_size === 'small'\n ? 'ui-tab-header_item-indicator'\n : 'ui-tab-header_item-indicator large';\n }\n\n /**\n * Set active tab\n * @param item\n */\n activateTab(item: OasysTabComponent): void {\n this.tab_clicked.emit(item);\n }\n\n /**\n * Handles keyboard events on the header.\n * @param event\n * @param index\n * @returns\n */\n handleKeydown(event: KeyboardEvent, index: number): void {\n const items = Array.from(\n document.querySelectorAll('.ui-tab-header_item-label'),\n ) as HTMLElement[];\n\n if (!items.length) return;\n\n let newIndex = index;\n\n switch (event.code) {\n case 'Enter':\n this.activateTab(this.tabs.get(index));\n break;\n\n case 'ArrowRight': {\n newIndex = (index + 1) % items.length;\n items[newIndex]?.focus();\n break;\n }\n case 'ArrowLeft': {\n newIndex = (index - 1 + items.length) % items.length;\n items[newIndex]?.focus();\n break;\n }\n }\n }\n}\n","<div role=\"tablist\" aria-orientation=\"horizontal\">\n <ui-stack\n class=\"ui-tab-header\"\n stack_direction=\"x\"\n [stack_wrap]=\"false\"\n stack_gap=\"none\"\n stack_distribute=\"fit\"\n >\n <div class=\"ui-tab-header_item\" *ngFor=\"let tab of tabs; index as i\">\n <div\n class=\"ui-tab-header_item-label\"\n tabindex=\"0\"\n (click)=\"activateTab(tab)\"\n (keydown)=\"handleKeydown($event, i)\"\n role=\"tab\"\n [attr.aria-selected]=\"tab === tab_active()\"\n [attr.aria-label]=\"tab.tab_label\"\n >\n <span\n class=\"text-body--default\"\n [ngClass]=\"{ 'text-body--emphasis': tab === tab_active() }\"\n >{{ tab.tab_label }}</span\n >\n </div>\n <div [class]=\"getIndicatorClass()\" [ngClass]=\"{ active: tab === tab_active() }\"></div>\n </div>\n </ui-stack>\n</div>\n","import {\n Component,\n Input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n AfterContentInit,\n} from '@angular/core';\n\nimport { OasysLayoutModule } from '../../../layout';\nimport { OasysTabComponent } from '../tab/tab.component';\nimport { NgIf } from '@angular/common';\nimport { OasysTabActiveComponent } from '../tab-active/tab-active.component';\nimport { OasysTabHeaderComponent } from '../tab-header/tab-header.component';\n\n@Component({\n standalone: true,\n imports: [OasysLayoutModule, OasysTabActiveComponent, OasysTabHeaderComponent, NgIf],\n selector: 'ui-tab-group',\n templateUrl: './tab-group.component.html',\n encapsulation: ViewEncapsulation.None, // to hide non ui-buttons via css\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OasysTabGroupComponent implements AfterContentInit {\n @Input() tab_size: 'small' | 'large' = 'small';\n\n @ContentChildren(OasysTabComponent) tabs!: QueryList<OasysTabComponent>;\n activeComponent!: OasysTabComponent;\n\n getIndicatorClass(): string {\n return this.tab_size === 'small' ? 'nav-item_indicator line' : 'nav-item_indicator large line';\n }\n\n ngAfterContentInit(): void {\n if (this.tabs.length === 0) {\n throw new Error('<ui-tab-group> requires at least one <ui-tab>');\n }\n const selectedTab = this.tabs?.find((tab): boolean => !!tab.tab_active);\n this.activeComponent = selectedTab ?? this.tabs?.first;\n }\n\n activateTab(tab: OasysTabComponent): void {\n this.activeComponent = tab;\n this.activeComponent.clicked.emit();\n }\n}\n","<div class=\"ui-tab-group\">\n <ui-tab-header\n *ngIf=\"tabs || activeComponent\"\n [tab_size]=\"tab_size\"\n [tabs]=\"tabs\"\n [tab_active]=\"activeComponent\"\n (tab_clicked)=\"activateTab($event)\"\n ></ui-tab-header>\n\n <ui-tab-active [templateRef]=\"activeComponent?.template\"></ui-tab-active>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { OasysTabGroupComponent } from './tab-group.component';\nimport { OasysTabComponent } from '../tab/tab.component';\nimport { OasysTabActiveComponent } from '../tab-active/tab-active.component';\nimport { OasysTabHeaderComponent } from '../tab-header/tab-header.component';\n\n@NgModule({\n imports: [\n OasysTabGroupComponent,\n OasysTabComponent,\n OasysTabActiveComponent,\n OasysTabHeaderComponent,\n ],\n})\nexport class OasysTabsModule {}\n/**\n * @ngModule OasysTabsModule\n * @description\n *\n * Tabs provide a structured way to organize and navigate through different areas of an application.\n *\n * @usageNotes\n *\n * @example\n * <ui-tab-group tab_size=${args['tab_size']} >\n * <!-- Tab -->\n * <ui-tab tab_label=\"${args['tab_label']}\">\n * <!-- Tab content -->\n * </ui-tab>\n *\n * <!-- Tab -->\n * <ui-tab tab_label=\"Tab 2\">\n * <!-- Tab content -->\n * </ui-tab>\n *\n * <!-- Tab -->\n * <ui-tab tab_label=\"Tab 3\" [tab_active]=${args['tab_active']}>\n * <!-- Tab content -->\n * </ui-tab>\n * </ui-tab-group>\n *\n * Pug:\n * ui-tab-group(tab_size=\"${args['tab_size']}\")\n * ui-tab(tab_label=\"${args['tab_label']}\")\n * <!-- Tab content body -->\n *\n * ui-tab(tab_label=\"Tab 2\" tab_active=\"${args['tab_active']}\")\n * <!-- Tab content body -->\n * @OasysLib\n */\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\n\n@Component({\n selector: 'ui-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n standalone: true,\n imports: [CommonModule, LayoutBoxComponent],\n})\nexport class ProgressBarComponent {\n @Input() percentage = 50;\n @Input() style: 'circular' | 'line' = 'circular';\n @Input() text: string = '0 / 3';\n}\n","<!-- Circular Progress Bar -->\n<ui-box\n *ngIf=\"style === 'circular'\"\n box_space=\"none\"\n class=\"bw-cicle-progress-bar\"\n [style.--bw-cicle-progress-bar-progress-size]=\"percentage\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage\"\n [attr.aria-label]=\"text\"\n>\n <svg>\n <circle class=\"full-bar\" />\n <circle class=\"progress-bar\" />\n </svg>\n <div class=\"bw-cicle-progress-bar__content text-body--micro\">\n <span class=\"bw-cicle-progress-bar__content-text\">{{ text }}</span>\n </div>\n</ui-box>\n\n<!-- Line Progress Bar -->\n<ui-box\n *ngIf=\"style === 'line'\"\n box_space=\"none\"\n box_fit_mode=\"fit\"\n class=\"bw-line-progress-bar\"\n [style.--bw-line-progress-bar-progress-size]=\"percentage\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage\"\n [attr.aria-label]=\"text\"\n>\n <svg>\n <rect class=\"full-bar\" />\n <rect class=\"progress-bar\" />\n </svg>\n</ui-box>\n","import { Component, computed, input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { OasysLayoutModule } from '../../../layout';\nimport { OasysAlertModule } from '../../../alert';\nimport { ValidationErrorTypes } from '../../forms';\n\n@Component({\n selector: 'ui-form-errors-summary-item',\n templateUrl: './form-errors-summary-item.component.html',\n styles: '',\n standalone: true,\n imports: [CommonModule, OasysLayoutModule, OasysAlertModule],\n host: {\n style: 'cursor: pointer;',\n },\n})\nexport class OasysFormErrorsSummaryItemComponent {\n abstractControl = input<AbstractControl>();\n error_messages = input<ValidationErrorTypes | undefined>({});\n\n focusOnControl(): void {\n const control = this.abstractControl();\n\n // Log the control name - it's stored in the parent FormGroup\n if (control?.parent) {\n const controlName = Object.keys(control.parent.controls).find(\n (key) => control.parent?.get(key) === control,\n );\n\n if (controlName) {\n // Find the ui-text-input component with the matching ng-reflect-name\n const textInputComponent = document.querySelector(\n `ui-text-input[ng-reflect-name=\"${controlName}\"]`,\n );\n\n if (textInputComponent) {\n // Find the input element inside the ui-text-input component\n const inputElement = textInputComponent.querySelector('input');\n if (inputElement) {\n inputElement.focus();\n inputElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n }\n }\n }\n\n errorMessage = computed((): string | undefined => {\n const currentErrors = this.abstractControl()?.errors;\n const messages = this.error_messages() ?? {};\n\n if (!currentErrors) {\n return undefined;\n }\n const errorKeys = Object.keys(currentErrors);\n const firstErrorKey = errorKeys.length ? errorKeys[0] : undefined;\n return firstErrorKey ? messages[firstErrorKey] : undefined;\n });\n}\n","@if (errorMessage() && !!abstractControl()?.errors) {\n <li\n class=\"text-link--paragraph text-body--supporting\"\n (click)=\"focusOnControl()\"\n (keydown.enter)=\"focusOnControl()\"\n tabindex=\"0\"\n aria-live=\"polite\"\n aria-labelledby=\"errors-summary-title errors-summary-item\"\n >\n <span id=\"errors-summary-item\">\n {{ errorMessage() }}\n </span>\n </li>\n}\n","import {\n Component,\n input,\n AfterContentInit,\n ContentChildren,\n QueryList,\n computed,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { OasysLayoutModule } from '../../layout';\nimport { OasysAlertModule } from '../../alert';\nimport { OasysIconModule } from '../../icon';\nimport { OasysFormErrorsSummaryItemComponent } from './errors-summary-item/form-errors-summary-item.component';\n\n@Component({\n selector: 'ui-form-errors-summary',\n templateUrl: './form-errors-summary.component.html',\n styleUrl: 'form-errors-summary.component.scss',\n standalone: true,\n imports: [CommonModule, OasysLayoutModule, OasysAlertModule, OasysIconModule],\n})\nexport class OasysFormErrorsSummaryComponent implements AfterContentInit {\n formGroup = input.required<FormGroup>();\n\n @ContentChildren(OasysFormErrorsSummaryItemComponent)\n errorsSummaryItems!: QueryList<OasysFormErrorsSummaryItemComponent>;\n\n hasErrorsSummaryItems = computed(() => this.errorsSummaryItems.length > 0);\n\n ngAfterContentInit(): void {\n if (this.errorsSummaryItems.length === 0) {\n console.error(\n 'ui-form-errors-summary: No ui-form-errors-summary-item components found. Please add at least one ui-form-errors-summary-item.',\n );\n }\n }\n}\n","<div #errorsSummary>\n @if (!formGroup().valid && hasErrorsSummaryItems()) {\n <ui-box class=\"ui-form-errors-summary\" box_space=\"near\" box_align_x=\"center\">\n <ui-stack stack_direction=\"x\" stack_gap=\"near\">\n <div class=\"badge\">\n <ui-icon icon_name=\"error\" icon_size_override=\"2\"></ui-icon>\n </div>\n\n <ui-stack stack_gap=\"near\">\n <ui-stack stack_gap=\"tight\" class=\"content\" stack_direction=\"y\">\n <div class=\"text-label--secondary\" id=\"errors-summary-title\">\n <ng-content select=\"ui-form-errors-summary-title\"></ng-content>\n </div>\n <ul>\n <ng-content></ng-content>\n </ul>\n </ui-stack>\n </ui-stack>\n </ui-stack>\n </ui-box>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ui-form-errors-summary-title',\n template: '<ng-content></ng-content>',\n standalone: true,\n imports: [CommonModule],\n host: {\n role: 'alert',\n 'aria-live': 'polite',\n },\n})\nexport class OasysFormErrorsSummaryTitleComponent {}\n","/*\n * Public API Surface of oasys-lib\n */\nexport * from './lib/components/alert';\nexport * from './lib/components/navigation/breadcrumbs';\nexport * from './lib/components/button';\nexport * from './lib/components/button-group';\nexport * from './lib/components/card';\nexport * from './lib/components/divider';\nexport * from './lib/components/form/form-group';\nexport * from './lib/components/form/checkbox';\nexport * from './lib/components/form/radio';\nexport * from './lib/components/form/text-input';\nexport * from './lib/components/form/chip';\nexport * from './lib/components/form/errors';\nexport * from './lib/components/heading';\nexport * from './lib/components/hero';\nexport * from './lib/components/seo-block';\nexport * from './lib/components/icon';\nexport * from './lib/components/image';\nexport * from './lib/components/layout';\nexport * from './lib/components/section';\nexport * from './lib/components/carousel';\nexport * from './lib/components/card';\nexport * from './lib/components/text';\nexport * from './lib/components/banner';\nexport * from './lib/components/pill';\nexport * from './lib/components/pill-group';\nexport * from './lib/services';\nexport * from './lib/components/promo-card';\nexport * from './lib/components/select-card';\nexport * from './lib/components/form/combobox';\nexport * from './lib/components/label';\nexport * from './lib/components/navigation/tabs/tab-group';\nexport * from './lib/components/progress-bar';\nexport * from './lib/components/form/errors-summary';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TokenService","i1.BreakpointService","i2","i1","i1.LayoutBoxComponent","i1.LayoutStackComponent","i2.LayoutStackComponent","i3.IconComponent"],"mappings":"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"}
1
+ {"version":3,"file":"oasys-lib.mjs","sources":["../../../projects/oasys-lib/src/lib/components/alert/alert-cancel.directive.ts","../../../projects/oasys-lib/src/lib/components/alert/alert-confirm.directive.ts","../../../projects/oasys-lib/src/lib/components/alert/alert-content.directive.ts","../../../projects/oasys-lib/src/lib/components/alert/alert-title.directive.ts","../../../projects/oasys-lib/src/lib/services/breakpoint.service.ts","../../../projects/oasys-lib/src/lib/services/token.service.ts","../../../projects/oasys-lib/src/lib/components/layout/box/box.component.ts","../../../projects/oasys-lib/src/lib/components/layout/stack/stack.component.ts","../../../projects/oasys-lib/src/lib/components/icon/icon.component.ts","../../../projects/oasys-lib/src/lib/components/icon/icon.component.html","../../../projects/oasys-lib/src/lib/services/media-base-url.provider.ts","../../../projects/oasys-lib/src/lib/services/routing-handler.provider.ts","../../../projects/oasys-lib/src/lib/services/swiper.provider.ts","../../../projects/oasys-lib/src/lib/directives/href/href.directive.ts","../../../projects/oasys-lib/src/lib/components/button/button.component.ts","../../../projects/oasys-lib/src/lib/components/button/button.component.html","../../../projects/oasys-lib/src/lib/components/alert/alert.component.ts","../../../projects/oasys-lib/src/lib/components/alert/alert.component.html","../../../projects/oasys-lib/src/lib/components/alert/alert.module.ts","../../../projects/oasys-lib/src/lib/components/navigation/breadcrumbs/breadcrumbs.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/breadcrumbs/breadcrumbs.component.html","../../../projects/oasys-lib/src/lib/components/navigation/breadcrumbs/breadcrumbs.module.ts","../../../projects/oasys-lib/src/lib/components/button/button.module.ts","../../../projects/oasys-lib/src/lib/components/button-group/button-group.component.ts","../../../projects/oasys-lib/src/lib/components/button-group/button-group.component.html","../../../projects/oasys-lib/src/lib/components/button-group/button-group.module.ts","../../../projects/oasys-lib/src/lib/services/image.service.ts","../../../projects/oasys-lib/src/lib/components/image/image.component.ts","../../../projects/oasys-lib/src/lib/components/image/image.component.html","../../../projects/oasys-lib/src/lib/components/card/card.component.ts","../../../projects/oasys-lib/src/lib/components/card/card.component.html","../../../projects/oasys-lib/src/lib/components/card/card.module.ts","../../../projects/oasys-lib/src/lib/components/divider/divider.component.ts","../../../projects/oasys-lib/src/lib/components/divider/divider.component.html","../../../projects/oasys-lib/src/lib/components/divider/divider.module.ts","../../../projects/oasys-lib/src/lib/components/form/form-group/form-group.component.ts","../../../projects/oasys-lib/src/lib/components/form/form-group/form-group.component.html","../../../projects/oasys-lib/src/lib/components/form/form-group/form-group.module.ts","../../../projects/oasys-lib/src/lib/components/form/checkbox/checkbox.component.ts","../../../projects/oasys-lib/src/lib/components/form/checkbox/checkbox.component.html","../../../projects/oasys-lib/src/lib/components/form/checkbox/checkbox.module.ts","../../../projects/oasys-lib/src/lib/components/form/radio/radio.component.ts","../../../projects/oasys-lib/src/lib/components/form/radio/radio.component.html","../../../projects/oasys-lib/src/lib/components/form/radio/radio.module.ts","../../../projects/oasys-lib/src/lib/directives/autofocus/autofocus.directive.ts","../../../projects/oasys-lib/src/lib/components/form/text-input/text-input.component.ts","../../../projects/oasys-lib/src/lib/components/form/text-input/text-input.component.html","../../../projects/oasys-lib/src/lib/components/form/text-input/text-input.module.ts","../../../projects/oasys-lib/src/lib/components/form/chip/chip.component.ts","../../../projects/oasys-lib/src/lib/components/form/chip/chip.component.html","../../../projects/oasys-lib/src/lib/components/form/chip/chip.module.ts","../../../projects/oasys-lib/src/lib/components/layout/container/container.component.ts","../../../projects/oasys-lib/src/lib/components/layout/grid/grid-column.component.ts","../../../projects/oasys-lib/src/lib/components/layout/grid/grid.component.ts","../../../projects/oasys-lib/src/lib/components/layout/layout.module.ts","../../../projects/oasys-lib/src/lib/components/form/errors/form-errors.component.ts","../../../projects/oasys-lib/src/lib/components/form/errors/form-errors.component.html","../../../projects/oasys-lib/src/lib/components/form/errors/form-errors.module.ts","../../../projects/oasys-lib/src/lib/components/heading/heading.component.ts","../../../projects/oasys-lib/src/lib/components/heading/heading.component.html","../../../projects/oasys-lib/src/lib/components/heading/heading.module.ts","../../../projects/oasys-lib/src/lib/components/hero/hero.component.ts","../../../projects/oasys-lib/src/lib/components/hero/hero.component.html","../../../projects/oasys-lib/src/lib/components/hero/hero.module.ts","../../../projects/oasys-lib/src/lib/components/seo-block/seo-block.component.ts","../../../projects/oasys-lib/src/lib/components/seo-block/seo-block.component.html","../../../projects/oasys-lib/src/lib/components/seo-block/seo-block.module.ts","../../../projects/oasys-lib/src/lib/components/icon/icon.module.ts","../../../projects/oasys-lib/src/lib/components/image/image.module.ts","../../../projects/oasys-lib/src/lib/components/section/section.component.ts","../../../projects/oasys-lib/src/lib/components/section/section.component.html","../../../projects/oasys-lib/src/lib/components/section/section.module.ts","../../../projects/oasys-lib/src/lib/components/carousel/carousel.component.ts","../../../projects/oasys-lib/src/lib/components/carousel/carousel.component.html","../../../projects/oasys-lib/src/lib/components/carousel/carousel.module.ts","../../../projects/oasys-lib/src/lib/components/text/text.component.ts","../../../projects/oasys-lib/src/lib/components/text/text.component.html","../../../projects/oasys-lib/src/lib/components/text/text.module.ts","../../../projects/oasys-lib/src/lib/components/banner/banner.component.ts","../../../projects/oasys-lib/src/lib/components/banner/banner.component.html","../../../projects/oasys-lib/src/lib/components/banner/banner.module.ts","../../../projects/oasys-lib/src/lib/components/pill/pill.component.ts","../../../projects/oasys-lib/src/lib/components/pill/pill.component.html","../../../projects/oasys-lib/src/lib/components/pill/pill.module.ts","../../../projects/oasys-lib/src/lib/components/pill-group/pill-group.component.ts","../../../projects/oasys-lib/src/lib/components/pill-group/pill-group.component.html","../../../projects/oasys-lib/src/lib/components/pill-group/pill-group.module.ts","../../../projects/oasys-lib/src/lib/components/promo-card/promo-card.component.ts","../../../projects/oasys-lib/src/lib/components/promo-card/promo-card.component.html","../../../projects/oasys-lib/src/lib/components/promo-card/promo-card.module.ts","../../../projects/oasys-lib/src/lib/components/price/price.component.ts","../../../projects/oasys-lib/src/lib/components/price/price.component.html","../../../projects/oasys-lib/src/lib/components/select-card/select-card.component.ts","../../../projects/oasys-lib/src/lib/components/select-card/select-card.component.html","../../../projects/oasys-lib/src/lib/components/select-card/select-card.module.ts","../../../projects/oasys-lib/src/lib/directives/emphasis/emphasis.directive.ts","../../../projects/oasys-lib/src/lib/components/form/combobox/combobox.component.ts","../../../projects/oasys-lib/src/lib/components/form/combobox/combobox.component.html","../../../projects/oasys-lib/src/lib/components/form/combobox/combobox.module.ts","../../../projects/oasys-lib/src/lib/components/label/label.component.ts","../../../projects/oasys-lib/src/lib/components/label/label.component.html","../../../projects/oasys-lib/src/lib/components/label/label.module.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab/tab.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-active/tab-active.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-header/tab-header.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-header/tab-header.component.html","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-group/tab-group.component.ts","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-group/tab-group.component.html","../../../projects/oasys-lib/src/lib/components/navigation/tabs/tab-group/tab-group.module.ts","../../../projects/oasys-lib/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/oasys-lib/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/oasys-lib/src/lib/components/form/errors-summary/errors-summary-item/form-errors-summary-item.component.ts","../../../projects/oasys-lib/src/lib/components/form/errors-summary/errors-summary-item/form-errors-summary-item.component.html","../../../projects/oasys-lib/src/lib/components/form/errors-summary/form-errors-summary.component.ts","../../../projects/oasys-lib/src/lib/components/form/errors-summary/form-errors-summary.component.html","../../../projects/oasys-lib/src/lib/components/form/errors-summary/errors-summary-title/form-errors-summary-title.component.ts","../../../projects/oasys-lib/src/public-api.ts","../../../projects/oasys-lib/src/oasys-lib.ts"],"sourcesContent":["import { AfterContentChecked, Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ui-alert-cancel, [ui-alert-cancel]',\n standalone: true,\n})\nexport class OasysAlertCancelDirective implements AfterContentChecked {\n public text = '';\n private elem? = inject(ElementRef);\n\n public ngAfterContentChecked(): void {\n this.text = this.elem ? (this.elem.nativeElement as HTMLElement).innerText : '';\n }\n\n public focus(): void {\n const element = this.elem ? (this.elem.nativeElement as HTMLElement) : undefined;\n if (element && typeof element.focus === 'function') {\n const buttonElement = element.closest('button') ?? element;\n if (typeof buttonElement.focus === 'function') {\n setTimeout(() => {\n buttonElement.focus();\n }, 500);\n }\n }\n }\n}\n","import { AfterContentChecked, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: 'ui-alert-confirm, [ui-alert-confirm]',\n standalone: true,\n})\nexport class OasysAlertConfirmDirective implements AfterContentChecked {\n public text = '';\n\n constructor(private elem: ElementRef) {}\n\n public ngAfterContentChecked(): void {\n this.text = this.elem.nativeElement.innerText;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ui-alert-content, [ui-alert-content]',\n standalone: true,\n})\nexport class OasysAlertContentDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ui-alert-title, [ui-alert-title]',\n standalone: true,\n})\nexport class OasysAlertTitleDirective {}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport enum Breakpoint {\n MOBILE = '(min-width: 0px)',\n TABLET = '(min-width: 768px)',\n LAPTOP = '(min-width: 1080px)',\n DESKTOP = '(min-width: 1440px)',\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BreakpointService implements OnDestroy {\n public currentSize: BehaviorSubject<Breakpoint> = new BehaviorSubject<Breakpoint>(\n Breakpoint.MOBILE,\n );\n\n private breakpoints = [\n Breakpoint.DESKTOP,\n Breakpoint.LAPTOP,\n Breakpoint.TABLET,\n Breakpoint.MOBILE,\n ];\n\n private readonly isDestroyed = new Subject<void>();\n\n constructor(public breakpointObserver: BreakpointObserver) {\n breakpointObserver\n .observe(this.breakpoints)\n .pipe(takeUntil(this.isDestroyed))\n .subscribe((result): void => {\n for (const match of Object.keys(result.breakpoints)) {\n if (result.breakpoints[match]) {\n return this.currentSize.next(match as Breakpoint);\n }\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.isDestroyed.next();\n this.isDestroyed.complete();\n }\n}\n","\nimport { Inject, Injectable, DOCUMENT } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\n@Injectable()\nexport class TokenService {\n brandCustomPropertyName: string = '--oasys-utility-brand-slug';\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n convertRemToPixels(remString: string): number {\n const remNumber = parseFloat(remString.replace('rem', ''));\n return remNumber * parseFloat(getComputedStyle(this.document.documentElement).fontSize);\n }\n\n /*\n Get the brand name for the currently enable custom property set (ie. /bloomon/variables.css)\n Because variables are scoped via a selector (ie: ':root .bloomon {}')\n we cannot get brand-specific custom properties programatically\n\n Important: Ensure that the component requiring the brand name has locally scoped the custom property:\n | ui-icon {\n | --icon-component-brand: var(--oasys-utility-brand);\n | }\n */\n getBrandName(): Observable<string> {\n return this.waitForElement('[class*=\"brand-tokens\"]').pipe(\n take(1),\n map((el) => this.getTokenValue(this.brandCustomPropertyName, el)),\n );\n }\n\n getTokenValue(tokenName: string, element?: Element): string {\n const rootElement = element || this.document.querySelector('[class*=\"brand-tokens\"]');\n\n if (!rootElement) {\n return '';\n }\n\n return (\n this.document.defaultView.getComputedStyle(rootElement).getPropertyValue(tokenName).trim() ||\n ''\n );\n }\n\n /**\n * Waits for an element to be present in the DOM\n * @param {string} selector\n * @returns {Observable<Element>}\n */\n waitForElement(selector: string): Observable<Element> {\n return new Observable((observer) => {\n let element = this.document.querySelector(selector);\n\n if (element) {\n observer.next(element);\n observer.complete();\n }\n\n new MutationObserver((mutationRecord, mutationObserver) => {\n const el = document.querySelector(selector);\n\n if (el) {\n observer.next(el);\n observer.complete();\n mutationObserver.disconnect();\n }\n }).observe(document.documentElement, {\n childList: true,\n subtree: true,\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n Input,\n Component,\n} from '@angular/core';\nimport { TokenService } from '../../../services/token.service';\nimport {\n LayoutAlignment,\n LayoutBackgrounds,\n LayoutBackgroundsDeprecated,\n LayoutBoxSizes,\n LayoutFillModes,\n} from '../Layout';\nimport { BoxBorderColor, BoxBorderWidth, BoxBorderRadius, BoxBorderStyle } from './box';\n\n@Component({\n selector: 'ui-box',\n template: '<div class=\"ui-box-content\" [attr.role]=\"box_role\"><ng-content></ng-content></div>',\n host: {\n '[class]': 'boxLayoutClasses',\n },\n styleUrls: ['./box.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n providers: [TokenService],\n})\nexport class LayoutBoxComponent implements OnInit, OnChanges {\n @Input() box_space?: LayoutBoxSizes = 'default';\n @Input() box_role?: string | undefined;\n\n @Input() box_space_top?: LayoutBoxSizes;\n @Input() box_space_right?: LayoutBoxSizes;\n @Input() box_space_bottom?: LayoutBoxSizes;\n @Input() box_space_left?: LayoutBoxSizes;\n\n @Input() box_align_x?: LayoutAlignment = 'start';\n @Input() box_align_y?: LayoutAlignment = 'start';\n\n @Input() box_fill_mode?: LayoutFillModes = 'fill';\n\n @Input() box_background: LayoutBackgroundsDeprecated | LayoutBackgrounds = 'primary';\n\n @Input() box_content_fill_width = false;\n\n @Input() box_border_color?: BoxBorderColor = 'primary';\n @Input() box_border_width?: BoxBorderWidth = 'none';\n @Input() box_border_style?: BoxBorderStyle = 'solid';\n @Input() box_border_radius?: BoxBorderRadius = 'none';\n\n didFirstInit = false;\n prefix = 'ui-layout-box';\n boxLayoutClasses?: string[];\n backgroundIsDark = false;\n\n constructor(\n private changes: ChangeDetectorRef,\n private tokenService: TokenService,\n ) {}\n\n /**\n * Check the passed string to see if it contains JSON\n *\n * @param string\n * @returns - boolean\n */\n stringContainsJson(string: string): boolean {\n try {\n JSON.parse(string);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n getSizeClasses(spaceInput?: LayoutBoxSizes, overrideName?: string): string[] {\n if (!spaceInput || spaceInput === undefined) {\n return null;\n }\n\n // Used for responsive spacing, check if the input is either an object or JSON\n if (typeof spaceInput === 'object' || this.stringContainsJson(spaceInput)) {\n // If JSON then convert this to an object\n const spaceInputObject: LayoutBoxSizes =\n typeof spaceInput === 'object' ? spaceInput : JSON.parse(spaceInput);\n\n return Object.keys(spaceInputObject).map(\n (key): string =>\n `${this.prefix}-${spaceInputObject[key]}-${key}${overrideName ? `-${overrideName}` : ''}`,\n );\n }\n\n return [this.prefix, `${this.prefix}-${spaceInput}${overrideName ? `-${overrideName}` : ''}`];\n }\n\n getOverrideClasses(spaceOverrides: LayoutBoxSizes[]): string[][] {\n const spaceTypes = ['top', 'right', 'bottom', 'left'];\n\n return spaceOverrides\n .map((item, index): string[] => this.getSizeClasses(item, spaceTypes[index]))\n .filter(Boolean);\n }\n\n getAlignmentClasses(alignmentOverride: LayoutAlignment[]): string[] {\n const spaceTypes = ['align-x', 'distribute-y'];\n\n return alignmentOverride\n .map((item, index): string =>\n item ? `${this.prefix}-${spaceTypes[index]}-${item}` : undefined,\n )\n .filter(Boolean);\n }\n\n getBackgroundClass(): string {\n const value = this.box_background ? `${this.prefix}-background-${this.box_background}` : '';\n return value;\n }\n\n getBorderColorClass(): string {\n const value = this.box_border_color\n ? `${this.prefix}-border-color-${this.box_border_color}`\n : '';\n return value;\n }\n\n getBorderWidthClass(): string {\n const value = this.box_border_width\n ? `${this.prefix}-border-width-${this.box_border_width}`\n : '';\n return value;\n }\n\n getBorderStyleClass(): string {\n const value = this.box_border_style\n ? `${this.prefix}-border-style-${this.box_border_style}`\n : '';\n return value;\n }\n\n getBorderRadiusClass(): string {\n const value = this.box_border_radius\n ? `${this.prefix}-border-radius-${this.box_border_radius}`\n : '';\n return value;\n }\n\n ngOnChanges(): void {\n if (!this.didFirstInit) {\n return;\n }\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n const spaceOverrides = [\n this.box_space_top,\n this.box_space_right,\n this.box_space_bottom,\n this.box_space_left,\n ];\n const alignmentOverride = [this.box_align_x, this.box_align_y];\n this.backgroundIsDark =\n this.tokenService.getTokenValue(`--oasys-component-box-on-dark-${this.box_background}`) ===\n 'on-dark';\n // Basic basic classes\n this.boxLayoutClasses = [\n 'ui-layout-box',\n this.getSizeClasses(this.box_space),\n this.getOverrideClasses(spaceOverrides),\n this.getAlignmentClasses(alignmentOverride),\n this.getBackgroundClass(),\n this.getBoxModeClass(),\n this.backgroundIsDark ? 'text-color--on-dark' : '',\n this.box_content_fill_width\n ? `${this.prefix}-full-width`\n : `${this.prefix}-content-max-width`,\n this.getBorderColorClass(),\n this.getBorderWidthClass(),\n this.getBorderStyleClass(),\n this.getBorderRadiusClass(),\n ]\n .flat(10)\n .filter(Boolean);\n\n this.didFirstInit = true;\n }\n\n private getBoxModeClass(): string {\n switch (this.box_fill_mode) {\n case 'fit':\n return `${this.prefix}-fit-content`;\n case 'cover':\n return `${this.prefix}-cover-content`;\n default:\n return `${this.prefix}-fill-container`;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LayoutDirections, LayoutAlignment, LayoutGapSizes, LayoutDistribute } from '../Layout';\n\n@Component({\n selector: 'ui-stack',\n template: '<ng-content></ng-content>',\n host: {\n '[class]': 'stackLayoutClasses',\n '[attr.role]': 'stack_as_list ? \"list\" : null',\n },\n styleUrls: ['./stack.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class LayoutStackComponent implements OnInit, OnChanges {\n didFirstInit = false;\n prefix = 'ui-layout-stack';\n stackLayoutClasses?: string[];\n\n @Input() stack_gap: LayoutGapSizes = 'default';\n @Input() stack_align: LayoutAlignment = 'start';\n @Input() stack_direction: LayoutDirections = 'y';\n @Input() stack_distribute?: LayoutDistribute = 'start';\n @Input() stack_wrap?: boolean = false;\n @Input() stack_collapse_below: 'tablet' | 'laptop' | 'desktop' | 'none' = 'none';\n @Input() stack_as_list = false;\n\n constructor(private changes: ChangeDetectorRef) {}\n\n defaultDistribution(): LayoutDistribute {\n if (this.stack_distribute) {\n return this.stack_distribute;\n }\n\n return this.stack_direction === 'x' ? 'fit' : 'fill';\n }\n\n ngOnChanges(): void {\n if (!this.didFirstInit) {\n return;\n }\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n this.stack_distribute = this.defaultDistribution();\n this.stackLayoutClasses = [\n this.prefix,\n `${this.prefix}-${this.stack_gap}`,\n `${this.prefix}-align-${this.stack_align}`,\n `${this.prefix}-distribute-${this.stack_distribute}`,\n `${this.prefix}-direction-${this.stack_direction}`,\n `${this.prefix}-${this.stack_wrap ? 'wrap' : 'no-wrap'}`,\n `${this.prefix}-collapse-below-${this.stack_collapse_below}`,\n ];\n this.didFirstInit = true;\n }\n}\n","import { NgIf, NgClass } from '@angular/common';\nimport { Component, Inject, Input, OnChanges, OnInit, ViewEncapsulation, DOCUMENT } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { IconContext, IconNames } from './icon';\n\n@Component({\n selector: 'ui-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgIf, NgClass],\n providers: [TokenService],\n})\nexport class IconComponent implements OnInit, OnChanges {\n @Input() icon_size: 'small' | 'large' = 'large';\n @Input() icon_size_override?: string;\n @Input() icon_name!: IconNames;\n @Input() icon_context: IconContext = 'none';\n @Input() alt_text = '';\n\n @Input() icon_class?: string;\n\n size?: string;\n iconDisplayClasses: string[];\n iconSizeInPixels: number;\n iconPath: string;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private tokenService: TokenService,\n ) {}\n\n getSizeInPixels(size: string): number {\n const convertedSize = this.tokenService.convertRemToPixels(size);\n if (isNaN(convertedSize)) {\n return this.tokenService.convertRemToPixels('2rem');\n }\n\n return convertedSize;\n }\n\n ngOnChanges(): void {\n this.ngOnInit();\n }\n\n ngOnInit(): void {\n this.tokenService.getBrandName().subscribe((brandName): void => {\n this.iconPath = `./${brandName}/assets/icons/icons.svg#icon-${this.icon_name}`;\n\n this.size =\n this.icon_size_override ?? this.tokenService.getTokenValue('--oasys-size-unit-20');\n\n this.iconDisplayClasses = [\n `icon-context-${this.icon_context}`,\n `icon-size-${this.icon_size}`,\n ];\n\n this.iconSizeInPixels = this.getSizeInPixels(this.size);\n });\n }\n}\n","<div *ngIf=\"iconPath\" class=\"ui-icon\" [ngClass]=\"iconDisplayClasses\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"iconSizeInPixels\"\n [attr.height]=\"iconSizeInPixels\"\n [attr.class]=\"icon_class\"\n [attr.alt]=\"alt_text\"\n [attr.role]=\"alt_text.length > 0 ? 'img' : 'presentation'\"\n >\n <use [attr.xlink:href]=\"iconPath\"></use>\n </svg>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport interface IMediaBaseUrlProvider {\n readonly mediaBaseUrl: string;\n}\n\nexport const MEDIA_BASE_URL_TOKEN = new InjectionToken<IMediaBaseUrlProvider>(\n 'MEDIA_BASE_URL_TOKEN',\n);\n","import { InjectionToken } from '@angular/core';\n\nexport interface IRoutingHandlerService {\n handleRoutingOnClick(element: any, event: any): void;\n handleHrefDomains(element: any): void;\n}\n\nexport const ROUTING_HANDLER = new InjectionToken<IRoutingHandlerService>('ROUTING_HANDLER');\n","import { InjectionToken } from '@angular/core';\nimport { register } from 'swiper/element/bundle';\n\nexport interface ISwiperProvider {\n ensureSwiperRegistered(): void;\n}\n\nexport const SWIPER_PROVIDER_TOKEN = new InjectionToken<ISwiperProvider>('SWIPER_PROVIDER_TOKEN');\n\nlet hasRegistered = false;\n\nexport class SwiperProvider implements ISwiperProvider {\n ensureSwiperRegistered(): void {\n if (!hasRegistered) {\n register();\n hasRegistered = true;\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, inject, Inject } from '@angular/core';\nimport { ROUTING_HANDLER } from '../../services';\n\n@Directive({\n selector: 'a, uiHref, [uiHref]',\n standalone: true,\n})\nexport class OasysHrefDirective implements AfterViewInit {\n private readonly element = inject(ElementRef);\n private readonly routingHandler = inject(ROUTING_HANDLER);\n\n @HostListener('click', ['$event'])\n onClick(event: any): void {\n this.routingHandler.handleRoutingOnClick(this.element.nativeElement, event);\n }\n\n ngAfterViewInit(): void {\n this.routingHandler.handleHrefDomains(this.element.nativeElement);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\nimport {\n Component,\n Output,\n ViewEncapsulation,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n ViewChild,\n AfterViewInit,\n Input,\n OnInit,\n OnChanges,\n} from '@angular/core';\nimport { IconNames, IconContext } from '../icon/icon';\nimport { TextTransform } from '../text/text';\nimport { UIButton, UIButtonBoolean, UIButtonSize, UIButtonType, UIButtonEventType } from './button';\nimport { NgIf, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { OasysHrefDirective } from '../../directives/href/href.directive';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [NgIf, IconComponent, NgClass, NgTemplateOutlet, OasysHrefDirective],\n})\nexport class OasysButtonComponent implements AfterViewInit, OnInit, OnChanges {\n @Output() clicked = new EventEmitter<void>();\n @ViewChild('buttontext') ngContent?: ElementRef<HTMLElement>;\n\n @Input() button_icon: IconNames | undefined;\n @Input() button_icon_placement: IconContext = 'leading';\n @Input() button_size: UIButtonSize = 'large';\n @Input() button_type: UIButtonType = 'primary';\n @Input() button_full_width: UIButtonBoolean = false;\n @Input() button_event_type: UIButtonEventType = 'button';\n @Input() button_disabled: UIButtonBoolean = false;\n @Input() button_selected: UIButtonBoolean = false;\n @Input() button_text_nowrap: UIButtonBoolean = false;\n @Input() aria_label: string | undefined;\n @Input() aria_role = 'button';\n @Input() href: string | undefined;\n\n button?: UIButton;\n iconContext: IconContext = 'none';\n textTransform!: TextTransform;\n outlineButtonTypes = ['secondary', 'secondary-inverse'];\n computedAccessibleButtonContent = '';\n computedButtonDisplayClasses: string[] = [];\n\n constructor(private elementRef?: ElementRef<HTMLInputElement>) {}\n\n onClick(): void {\n this.clicked.emit();\n }\n\n ngOnInit(): void {\n this.computedAccessibleButtonContent = this.accessibleButtonContent();\n this.computedButtonDisplayClasses = this.buttonDisplayClasses();\n }\n\n /**\n * required because signals cannot be used here to force change detection on strings computed from inputs\n * TODO - migrate inputs to InputSignals when Angular supports it within angular 19.\n * Issue - https://github.com/angular/angular/issues/53981\n */\n ngOnChanges(): void {\n this.computedAccessibleButtonContent = this.accessibleButtonContent();\n this.computedButtonDisplayClasses = this.buttonDisplayClasses();\n }\n\n ngAfterViewInit(): void {\n if (!this.aria_label && !this.ngContent && !this.elementRef?.nativeElement.innerText.length) {\n throw new Error(`\n No inner text found. All buttons should have text passed via ng-content to enable accessibility for screen readers, \\\n this includes icon-only buttons.\n Pass content using the example templates:\n // Example 1\n ui-button() Buy All The Things\n // Example 2\n ui-button()\n span Buy All The Things\n `);\n }\n }\n\n private accessibleButtonContent = (): string => {\n if (this.aria_label) {\n return this.aria_label;\n } else if (this.ngContent?.nativeElement?.innerText?.length) {\n return this.ngContent?.nativeElement?.innerText;\n } else if (!this.ngContent && this.elementRef?.nativeElement?.innerText?.length) {\n return this.elementRef?.nativeElement?.innerText;\n }\n return '';\n };\n\n private buttonDisplayClasses = (): string[] =>\n [\n `type-${this.button_type}`,\n `size-${this.button_size}`,\n this.button_icon ? 'button--has-icon' : '',\n this.button_text_nowrap ? 'button--nowrap' : '',\n this.button_full_width ? 'button--full-width' : '',\n this.button_icon ? 'button--icon--' + this.button_icon_placement : '',\n this.outlineButtonTypes.includes(this.button_type) ? 'button--outline' : '',\n this.button_selected ? 'button--selected' : '',\n this.button_type === 'chip' ? 'button--chip' : '',\n ].filter(Boolean);\n}\n","<ng-template #content>\n <div class=\"button-content\">\n <ui-icon\n *ngIf=\"button_icon && button_icon_placement !== 'none'\"\n [icon_name]=\"button_icon\"\n [icon_size]=\"button_size\"\n [icon_class]=\"'buttonIcon'\"\n [icon_context]=\"button_icon_placement\"\n ></ui-icon>\n <span class=\"ui-text\" [ngClass]=\"{ visuallyhidden: button_icon_placement === 'iconOnly' }\">\n <span #buttontext>\n <ng-content></ng-content>\n </span>\n </span>\n </div>\n <div class=\"button-overlay\"></div>\n <div class=\"button-overlay-focus\"></div>\n</ng-template>\n\n<button\n *ngIf=\"!href\"\n (click)=\"onClick()\"\n [type]=\"button_event_type\"\n [ngClass]=\"computedButtonDisplayClasses\"\n [attr.disabled]=\"button_disabled === true || null\"\n [attr.aria-label]=\"computedAccessibleButtonContent\"\n [attr.role]=\"aria_role\"\n [attr.aria-checked]=\"aria_role === 'checkbox' || aria_role === 'switch' ? button_selected : null\"\n>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</button>\n\n<a\n *ngIf=\"href\"\n [href]=\"href\"\n [attr.disabled]=\"button_disabled === true || null\"\n [attr.aria-label]=\"computedAccessibleButtonContent\"\n [ngClass]=\"computedButtonDisplayClasses\"\n>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n","import {\n AfterContentChecked,\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint.service';\nimport { OasysAlertCancelDirective } from './alert-cancel.directive';\nimport { OasysAlertConfirmDirective } from './alert-confirm.directive';\nimport { UIButtonSize } from '../button/button';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault, NgIf } from '@angular/common';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { IconComponent } from '../icon/icon.component';\nimport { OasysButtonComponent } from '../button/button.component';\n\nexport type UIAlertTone = 'positive' | 'neutral' | 'negative';\n\n@Component({\n selector: 'ui-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n NgClass,\n LayoutStackComponent,\n NgSwitch,\n NgSwitchCase,\n IconComponent,\n NgSwitchDefault,\n NgIf,\n OasysButtonComponent,\n ],\n})\nexport class OasysAlertComponent implements AfterContentChecked, AfterViewInit {\n @Input()\n public direction: 'dynamic' | 'vertical' | 'horizontal' = 'dynamic';\n\n @Input()\n public tone: UIAlertTone = 'neutral';\n\n @Input() aria_live: 'polite' | 'assertive' | 'off' = 'polite';\n\n @Input() button_size: UIButtonSize = 'large';\n\n // adding this ignore because changing this value requires a breaking change in FE monolith\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() public cancel: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public confirm: EventEmitter<void> = new EventEmitter<void>();\n\n @ContentChild(OasysAlertCancelDirective)\n public cancelButton?: OasysAlertCancelDirective;\n\n @ContentChild(OasysAlertConfirmDirective)\n public confirmButton?: OasysAlertConfirmDirective;\n\n @ViewChild('cancelbuttoncontainer', { read: ElementRef })\n cancelbuttoncontainer?: ElementRef<HTMLElement>;\n\n @ViewChild('alertHost', { read: ElementRef })\n alertHost?: ElementRef<HTMLElement>;\n\n private wasVisible = false;\n private hasFocusedOnCurrentVisibility = false;\n private ariaLiveElement?: HTMLElement;\n\n constructor(public breakpointService: BreakpointService) {}\n\n get isVertical(): boolean {\n switch (this.direction) {\n case 'vertical':\n return true;\n case 'horizontal':\n return false;\n default: {\n return this.breakpointService.currentSize.value === Breakpoint.MOBILE;\n }\n }\n }\n\n get buttonSize(): UIButtonSize {\n return this.breakpointService.currentSize.value === Breakpoint.MOBILE\n ? 'small'\n : this.button_size;\n }\n\n public cancelled(): void {\n this.cancel.emit();\n }\n\n public confirmed(): void {\n this.confirm.emit();\n }\n\n ngAfterViewInit(): void {\n this.ariaLiveElement = this.alertHost?.nativeElement;\n this.checkVisibilityAndFocus();\n }\n\n ngAfterContentChecked(): void {\n this.checkVisibilityAndFocus();\n }\n\n private checkVisibilityAndFocus(): void {\n const isVisible = this.isComponentVisible();\n if (isVisible && !this.wasVisible && this.ariaLiveElement && !this.cancelButton) {\n // Temporarily remove and re-add aria-live to force screenreader announcement\n // This tricks screenreaders into treating it as a new aria-live region\n const currentAriaLive = this.aria_live;\n this.ariaLiveElement.removeAttribute('aria-live');\n this.ariaLiveElement.removeAttribute('role');\n\n // Use requestAnimationFrame and setTimeout to ensure the DOM update cycle completes\n // This gives screenreaders time to recognize the change\n requestAnimationFrame(() => {\n setTimeout(() => {\n if (this.ariaLiveElement && this.isComponentVisible()) {\n this.ariaLiveElement.setAttribute('aria-live', currentAriaLive);\n this.ariaLiveElement.setAttribute('role', 'alert');\n }\n }, 50);\n });\n }\n\n // only move focus if there is a button that requires focus\n if (!this.cancelButton) {\n this.wasVisible = isVisible;\n return;\n }\n\n // Only focus when transitioning from hidden to visible\n if (isVisible && (!this.wasVisible || !this.hasFocusedOnCurrentVisibility)) {\n // Use setTimeout to ensure the DOM is fully updated before focusing\n // This is (apparently) similar to how aria-live waits for the DOM update cycle\n setTimeout(() => {\n if (this.isComponentVisible() && this.cancelButton) {\n const hostElement = this.alertHost?.nativeElement;\n hostElement?.focus();\n this.hasFocusedOnCurrentVisibility = true;\n }\n }, 0);\n }\n\n // Reset focus flag when component becomes hidden\n if (!isVisible) {\n this.hasFocusedOnCurrentVisibility = false;\n }\n\n this.wasVisible = isVisible;\n }\n\n private isComponentVisible(): boolean {\n const hostElement = this.alertHost?.nativeElement;\n if (!hostElement) return false;\n\n const style = window.getComputedStyle(hostElement);\n\n if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') {\n return false;\n }\n\n // Check if element is in the DOM and has dimensions\n if (hostElement.offsetParent === null && style.position !== 'fixed') {\n return false;\n }\n\n return true;\n }\n}\n","<ui-box class=\"ui-alert\" box_space=\"near\" box_align_x=\"center\" [ngClass]=\"tone\">\n <ui-stack stack_direction=\"x\" stack_gap=\"near\">\n <div class=\"badge\" [ngClass]=\"tone\" [ngSwitch]=\"tone\">\n <ui-icon *ngSwitchCase=\"'negative'\" icon_name=\"error\"></ui-icon>\n <ui-icon *ngSwitchCase=\"'positive'\" icon_name=\"tick\"></ui-icon>\n <ui-icon *ngSwitchDefault icon_name=\"info\"></ui-icon>\n </div>\n\n <ui-stack stack_gap=\"near\" [stack_direction]=\"isVertical ? 'y' : 'x'\">\n <ui-stack\n #alertHost\n class=\"content\"\n stack_direction=\"y\"\n role=\"alert\"\n [attr.aria-live]=\"cancelButton ? 'off' : aria_live\"\n [tabindex]=\"cancelButton ? -1 : 0\"\n >\n <div class=\"text-body--emphasis\">\n <ng-content select=\"ui-alert-title\"></ng-content>\n </div>\n <div>\n <ng-content select=\"ui-alert-content\"></ng-content>\n </div>\n </ui-stack>\n\n <ui-box\n box_space=\"none\"\n box_background=\"transparent\"\n [box_fill_mode]=\"isVertical ? 'fill' : 'fit'\"\n >\n <ui-stack\n [stack_wrap]=\"isVertical\"\n stack_direction=\"x\"\n stack_gap=\"near\"\n stack_distribute=\"end\"\n >\n <ui-button\n *ngIf=\"cancelButton && cancelButton.text\"\n #cancelbuttoncontainer\n button_type=\"tertiary\"\n [button_size]=\"buttonSize\"\n [button_text_nowrap]=\"!isVertical\"\n (clicked)=\"cancelled()\"\n >\n <ng-content select=\"ui-alert-cancel\"></ng-content>\n </ui-button>\n <ui-button\n *ngIf=\"confirmButton && confirmButton.text\"\n button_type=\"secondary\"\n [button_size]=\"buttonSize\"\n [button_text_nowrap]=\"!isVertical\"\n (clicked)=\"confirmed()\"\n >\n <ng-content select=\"ui-alert-confirm\"></ng-content>\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { OasysAlertCancelDirective } from './alert-cancel.directive';\nimport { OasysAlertConfirmDirective } from './alert-confirm.directive';\nimport { OasysAlertContentDirective } from './alert-content.directive';\nimport { OasysAlertTitleDirective } from './alert-title.directive';\nimport { OasysAlertComponent } from './alert.component';\n\n@NgModule({\n imports: [\n OasysAlertCancelDirective,\n OasysAlertConfirmDirective,\n OasysAlertContentDirective,\n OasysAlertTitleDirective,\n OasysAlertComponent,\n ],\n exports: [\n OasysAlertCancelDirective,\n OasysAlertConfirmDirective,\n OasysAlertContentDirective,\n OasysAlertTitleDirective,\n OasysAlertComponent,\n ],\n})\nexport class OasysAlertModule {}\n","import { OnInit, ViewEncapsulation } from '@angular/core';\nimport { Input } from '@angular/core';\nimport { Component } from '@angular/core';\nimport { NgIf, NgFor } from '@angular/common';\nimport { LayoutBoxComponent } from '../../layout/box/box.component';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { OasysButtonComponent } from '../../button/button.component';\nimport { IconComponent } from '../../icon/icon.component';\n\ninterface BreadcrumbsItem {\n href: string;\n name: string;\n}\n@Component({\n selector: 'ui-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n NgIf,\n LayoutBoxComponent,\n LayoutStackComponent,\n NgFor,\n OasysButtonComponent,\n IconComponent,\n ],\n})\nexport class BreadcrumbsComponent implements OnInit {\n @Input() breadcrumbs_values: string | BreadcrumbsItem[];\n values: BreadcrumbsItem[];\n\n ngOnInit(): void {\n if (typeof this.breadcrumbs_values === 'string') {\n this.values = JSON.parse(this.breadcrumbs_values) ?? [];\n } else {\n this.values = this.breadcrumbs_values;\n }\n }\n}\n","<ui-box box_fill_mode=\"fill\" box_space=\"near\" box_background=\"core-secondary\" *ngIf=\"values\">\n <nav aria-label=\"breadcrumbs\">\n <ui-stack stack_gap=\"none\" stack_direction=\"x\" stack_align=\"center\" [stack_wrap]=\"true\">\n <ng-container *ngFor=\"let item of values; let i = index\">\n <!-- Link followed by an icon -->\n <ui-box box_space=\"none\" box_background=\"transparent\" box_fill_mode=\"fit\">\n <ui-stack stack_direction=\"x\" stack_align=\"center\" [stack_wrap]=\"false\" stack_gap=\"none\">\n <ui-button\n *ngIf=\"i < values.length - 1\"\n button_size=\"small\"\n button_type=\"tertiary\"\n href=\"{{ item.href }}\"\n >\n <span> {{ item.name }} </span>\n </ui-button>\n <ui-icon\n *ngIf=\"i < values.length - 1\"\n icon_name=\"chevron-right\"\n icon_size=\"small\"\n icon_class=\"buttonIcon\"\n aria-hidden=\"true\"\n ></ui-icon>\n </ui-stack>\n </ui-box>\n <!-- Last link and current page -->\n <ui-button\n *ngIf=\"i === values.length - 1\"\n button_size=\"small\"\n button_type=\"tertiary\"\n href=\"{{ item.href }}\"\n [attr.aria-current]=\"item.name\"\n >\n <span> {{ item.name }} </span>\n </ui-button>\n </ng-container>\n </ui-stack>\n </nav>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { BreadcrumbsComponent } from './breadcrumbs.component';\n\n@NgModule({\n imports: [BreadcrumbsComponent],\n exports: [BreadcrumbsComponent],\n})\nexport class OasysBreadcrumbModule {}\n","import { NgModule } from '@angular/core';\nimport { OasysButtonComponent } from './button.component';\n\n@NgModule({\n imports: [OasysButtonComponent],\n exports: [OasysButtonComponent],\n})\nexport class OasysButtonModule {}\n","import {\n Component,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnChanges,\n ContentChild,\n ElementRef,\n AfterViewInit,\n Inject,\n HostBinding,\n} from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint.service';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\n\n@Component({\n selector: 'ui-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n encapsulation: ViewEncapsulation.None, // to hide non ui-buttons via css\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [LayoutStackComponent],\n})\nexport class OasysButtonGroupComponent implements OnInit {\n prefix: '';\n\n @Input() button_group_align: 'start' | 'center' | 'end' = 'start';\n @Input() button_group_collapse_below: 'tablet' | 'laptop' | 'desktop' | 'none' = 'tablet';\n\n // Used for only 'ghost' buttons (button_type=\"tertiary\")\n // applies a negative X margin so that the text of a button aligns with\n // other content. Do not use unless all buttons are of type Tertiary.\n @Input() button_group_ghost_align: 'none' | 'small' | 'large' = 'none';\n\n @HostBinding('class') get class() {\n return `\n ui-button-group-ghost-${this.button_group_ghost_align}\n `;\n }\n\n constructor(private breakpointService: BreakpointService) {}\n\n ngOnInit(): void {}\n\n get shouldCollapse(): boolean {\n switch (this.button_group_collapse_below) {\n case 'tablet':\n return this.breakpointService.currentSize.value === Breakpoint.MOBILE;\n case 'laptop':\n return (\n this.breakpointService.currentSize.value === Breakpoint.MOBILE ||\n this.breakpointService.currentSize.value === Breakpoint.TABLET\n );\n case 'desktop':\n return (\n this.breakpointService.currentSize.value === Breakpoint.MOBILE ||\n this.breakpointService.currentSize.value === Breakpoint.TABLET ||\n this.breakpointService.currentSize.value === Breakpoint.LAPTOP\n );\n default:\n return false;\n }\n }\n}\n","<ui-stack\n stack_gap=\"near\"\n stack_direction=\"x\"\n [stack_collapse_below]=\"button_group_collapse_below\"\n [stack_distribute]=\"button_group_align\"\n>\n <ng-content></ng-content>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { OasysButtonGroupComponent } from './button-group.component';\n\n@NgModule({\n imports: [OasysButtonGroupComponent],\n exports: [OasysButtonGroupComponent],\n})\nexport class OasysButtonGroupModule {}\n","import { Injectable, inject } from '@angular/core';\nimport { MEDIA_BASE_URL_TOKEN } from './media-base-url.provider';\n\ntype ImageFormat = 'webp' | 'jpg';\ntype ImageCDNs = 'contentful' | 'thumbor' | undefined;\n\nexport interface ImageResponse {\n srcSetUrls: string;\n fallbackUrl: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ImageService {\n private readonly mediaUrl = inject(MEDIA_BASE_URL_TOKEN).mediaBaseUrl;\n private fallbackBreakpoint = 768;\n\n private breakpoints: number[] = [\n 320, 360, 375, 414, 640, 750, 768, 1080, 1280, 1366, 1440, 1536, 1600, 1680, 1920, 2560, 3440,\n 3840,\n ];\n\n private getQualityForWidth(width: number): number {\n return width > 1440 ? 50 : 75;\n }\n\n private generateUrl(\n baseUrl: string,\n format: ImageFormat,\n width: number,\n quality: number,\n cdnType: ImageCDNs,\n ): string {\n switch (cdnType) {\n case 'thumbor':\n return `${this.mediaUrl}/v1/${width}x0/filters:format(${format}):quality(${quality})/${baseUrl}`;\n case 'contentful':\n return `${baseUrl}?w=${width}&fm=${format}&q=${quality}`;\n default:\n return baseUrl;\n }\n }\n\n private generateUrls(\n baseUrl: string,\n format: ImageFormat,\n sizes: number[],\n isFallback: boolean,\n cdnType: ImageCDNs,\n ): string {\n return sizes\n .map((width) => {\n const quality = isFallback ? 100 : this.getQualityForWidth(width);\n const url = this.generateUrl(baseUrl, format, width, quality, cdnType);\n return isFallback ? url : `${url} ${width}w`;\n })\n .join(', ');\n }\n\n private detectCdnType(baseUrl: string): ImageCDNs {\n if (\n baseUrl.includes('assets-0.bloomandwild.com') ||\n baseUrl.includes('bw-site-images-processed-staging.s3.amazonaws.com')\n ) {\n return 'thumbor';\n } else if (baseUrl.includes('images.ctfassets.net/')) {\n return 'contentful';\n }\n\n return undefined;\n }\n\n private getImageUrlsFromCDN(\n baseUrl: string,\n format: ImageFormat,\n sizes: number[],\n isFallback: boolean,\n ): string {\n const cdnType = this.detectCdnType(baseUrl);\n\n if (isFallback) {\n sizes = [this.fallbackBreakpoint];\n }\n\n return this.generateUrls(baseUrl, format, sizes, isFallback, cdnType);\n }\n\n public generateImageUrl(baseUrl: string): ImageResponse {\n return {\n srcSetUrls: this.getImageUrlsFromCDN(baseUrl, 'webp', this.breakpoints, false),\n fallbackUrl: this.getImageUrlsFromCDN(baseUrl, 'jpg', this.breakpoints, true),\n } as ImageResponse;\n }\n\n public getImageSizes(): string {\n return this.breakpoints.map((size) => `(max-width: ${size}px) ${size}px`).join(', ');\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n signal,\n SimpleChanges,\n} from '@angular/core';\nimport { ImageService } from '../../services/image.service';\nimport { ImageAspectRatio, ImageFetchPriority, ImageLoading, UIImage } from './image';\nimport { NgStyle } from '@angular/common';\n\n/**\n * ImageComponent is a reusable component. Necessary accessibility attributes are set by default for a decorative image.\n * alt text and airia described by text can be set to make the image non-decorative.\n *\n * TODO - migrate inputs to InputSignals when Angular supports it within angular 19.\n * Issue - https://github.com/angular/angular/issues/53981\n */\n@Component({\n standalone: true,\n imports: [NgStyle],\n selector: 'ui-image',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n})\nexport class ImageComponent implements OnInit, OnChanges, OnDestroy {\n @Input({ required: true }) image_src: string;\n @Input() image_alt_text = ''; // Default set here so images are set as decorative by default\n @Input() image_aria_describedby: string | null = null;\n @Input() image_fill = false;\n @Input() fetchpriority: ImageFetchPriority = 'auto';\n @Input() loading: ImageLoading = 'lazy';\n @Input() preload_aspect_ratio: ImageAspectRatio = '1:1';\n @Input() image_width: number | null = null; // source when defining sizes either relates on viewport width or a specificed width in pixels\n\n @Output() readonly image_loaded = new EventEmitter<void>();\n\n private readonly imageService = inject(ImageService);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\n\n readonly image = signal<UIImage | null>(null);\n readonly imageSizes = this.imageService.getImageSizes();\n\n private intersectionObserver: IntersectionObserver | null = null;\n\n @HostBinding('class') get class() {\n return `${this.image_fill ? 'imageFill' : ''}`;\n }\n\n /**\n * On init lifecycle hook to create the image.\n */\n ngOnInit(): void {\n this.createImage();\n void this.setupLazyLoading();\n }\n\n /**\n * On changes, handle any changes in input properties.\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['image_src'] || changes['image_width'] || changes['preload_aspect_ratio']) {\n this.createImage();\n this.cleanupObserver();\n this.setupLazyLoading();\n }\n }\n\n /**\n * Clean up the observer when the component is destroyed.\n */\n ngOnDestroy(): void {\n this.cleanupObserver();\n }\n\n /**\n * Creates the image object with the provided properties.\n */\n createImage(): void {\n const ratios = this.preload_aspect_ratio.split(':');\n const imageUrlResponse = this.imageService.generateImageUrl(this.image_src);\n\n const newImage: UIImage = {\n ...imageUrlResponse,\n ratioWidth: parseInt(ratios[0], 10),\n ratioHeight: parseInt(ratios[1], 10),\n loading: this.loading,\n fill: this.image_fill,\n fetchpriority: this.fetchpriority,\n preloadAspectRatio: this.preload_aspect_ratio,\n width: this.image_width ? `${this.image_width}px` : null,\n altText: this.image_alt_text,\n ariaDescribedby: this.image_aria_describedby ?? null,\n };\n this.image.set(newImage);\n }\n\n /**\n * Sets up lazy loading for the image using IntersectionObserver.\n * This method observes the image element and loads the image when it comes into view.\n * It sets the `src` attribute for the image and the `srcset` attribute for the source element.\n * The observer is configured to remove the image after it has been observed to save memory.\n */\n private setupLazyLoading(): Promise<void> {\n return Promise.resolve().then((): void => {\n // Defer setup until after the view is initialized to ensure the <img> element exists.\n const imageElement = this.el.nativeElement.querySelector('img');\n if (!imageElement) {\n return;\n }\n\n this.intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const img = entry.target as HTMLImageElement;\n const source = img.parentElement?.querySelector('source');\n\n // Move the URL from data-src to src\n const dataSrc = img.getAttribute('data-src');\n if (dataSrc) {\n img.setAttribute('src', dataSrc);\n }\n\n // Move the URLs from data-srcset to srcset\n if (source) {\n const dataSrcset = source.getAttribute('data-srcset');\n if (dataSrcset) {\n source.setAttribute('srcset', dataSrcset);\n }\n }\n\n // Stop observing this image once it's loaded.\n this.intersectionObserver?.unobserve(img);\n }\n });\n },\n {\n root: null,\n rootMargin: '100px',\n threshold: 0.01,\n },\n );\n this.intersectionObserver.observe(imageElement);\n });\n }\n\n /**\n * Cleans up the IntersectionObserver to prevent memory leaks.\n * This method disconnects the observer and sets it to null.\n */\n private cleanupObserver(): void {\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n this.intersectionObserver = null;\n }\n }\n}\n","@if (image()) {\n <picture>\n <source\n [attr.sizes]=\"image().width ?? imageSizes\"\n [attr.srcset]=\"null\"\n [attr.data-srcset]=\"image().srcSetUrls\"\n type=\"image/webp\"\n />\n\n <img\n [class.imageFill]=\"image().fill\"\n [attr.width]=\"image().ratioWidth\"\n [attr.height]=\"image().ratioHeight\"\n [attr.src]=\"null\"\n [attr.data-src]=\"image().fallbackUrl\"\n [attr.loading]=\"image().loading\"\n [attr.fetchpriority]=\"image().fetchpriority\"\n [attr.alt]=\"image().altText\"\n [attr.aria-describedby]=\"image().ariaDescribedby\"\n [ngStyle]=\"{ 'aspect-ratio': image().preloadAspectRatio }\"\n (load)=\"image_loaded.emit()\"\n [attr.role]=\"image().altText?.length > 0 ? 'img' : 'presentation'\"\n />\n </picture>\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { CardImageFormat } from './card';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { NgStyle, NgIf } from '@angular/common';\nimport { ImageComponent } from '../image/image.component';\n@Component({\n selector: 'ui-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n standalone: true,\n imports: [LayoutBoxComponent, LayoutStackComponent, NgStyle, ImageComponent, NgIf],\n providers: [TokenService],\n})\nexport class CardComponent implements OnInit, AfterViewInit {\n // We need to know the label height so that we can adjust the parent stack placement\n @ViewChild('imagelabel', { static: false, read: ElementRef }) imageLabel: ElementRef;\n\n // Card image variables\n @Input() label_text: string;\n @Input() image: string;\n @Input() alt_text: string;\n @Input() image_format: CardImageFormat;\n aspectRatio: string;\n\n // Card content variables\n @Input() small_title_left: string;\n @Input() small_sub_title_right: string;\n @Input() standard_content: string;\n @Input() bold_content: string;\n stackOffset: string;\n\n constructor(private tokenService: TokenService) {}\n\n ngOnInit(): void {\n this.aspectRatio = this.setImageAspectRatio(this.image_format);\n }\n\n ngAfterViewInit(): void {\n this.setStackPlacement();\n }\n\n /**\n * This calculates the stack offset based on the image labels height.\n */\n @HostListener('window:resize', ['$event'])\n setStackPlacement(): void {\n this.stackOffset = `calc(-${\n this.imageLabel?.nativeElement?.offsetHeight / 2\n }px - ${this.tokenService.getTokenValue('--oasys-spacing-tight')}`;\n }\n\n /**\n * This function retrieves the appropriate design token value based on the passed imageFormat choice\n *\n * @param format - The format of the image e.g. square, portrait, landscape\n * @returns - string to be used as the aspect ratio\n */\n setImageAspectRatio(format: CardImageFormat): string {\n switch (format) {\n case 'square':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-square');\n case 'portrait':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-portrait');\n case 'landscape':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-landscape');\n default:\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-portrait');\n }\n }\n}\n","<ui-box class=\"ui-card\" box_background=\"core-primary\" box_space=\"none\">\n <ui-stack stack_align=\"center\" stack_gap=\"tight\">\n <ui-box\n class=\"ui-card__image\"\n [ngStyle]=\"{ 'aspect-ratio': aspectRatio }\"\n box_background=\"transparent\"\n box_align_x=\"center\"\n box_space=\"none\"\n >\n <ui-image [image_src]=\"image\" [image_alt_text]=\"alt_text\" [image_fill]=\"true\"></ui-image>\n </ui-box>\n <ui-stack stack_gap=\"tight\" [ngStyle]=\"{ 'margin-top': stackOffset }\">\n <ui-box\n #imagelabel\n *ngIf=\"label_text\"\n class=\"card__image-label center-content\"\n box_background=\"tint-highlight\"\n box_align_x=\"center\"\n box_align_y=\"center\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"tight\"\n box_space_top=\"tight\"\n >\n <h5>{{ label_text }}</h5>\n </ui-box>\n <ui-box\n *ngIf=\"small_title_left || small_sub_title_right\"\n [box_space_top]=\"label_text ? 'none' : 'tight'\"\n box_space=\"none\"\n box_background=\"transparent\"\n >\n <ui-stack stack_direction=\"x\" stack_distribute=\"space-between\" stack_gap=\"tight\">\n <span class=\"text-body--supporting text-color--supporting\">{{ small_title_left }}</span>\n <span class=\"text-body--supporting text-color--supporting\">{{\n small_sub_title_right\n }}</span>\n </ui-stack>\n </ui-box>\n <p *ngIf=\"standard_content\" class=\"text-label--default center-content\">\n {{ standard_content }}\n </p>\n <p *ngIf=\"bold_content\" class=\"text-label--primary text-body--emphasis\">{{ bold_content }}</p>\n </ui-stack>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { CardComponent } from './card.component';\n\n@NgModule({\n imports: [CardComponent],\n exports: [CardComponent],\n})\nexport class OasysCardModule {}\n","import { Input, ViewEncapsulation } from '@angular/core';\nimport { Component } from '@angular/core';\nimport { DividerType } from './divider';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ui-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [LayoutBoxComponent, NgClass],\n})\nexport class DividerComponent {\n @Input()\n divider_type: DividerType = 'secondary';\n\n getClass(): string {\n return this.divider_type === 'secondary'\n ? `ui-divider--type-${this.divider_type}`\n : `ui-divider--type-${this.divider_type}`;\n }\n}\n","<ui-box\n box_fill_mode=\"fill\"\n box_space=\"none\"\n box_background=\"core-secondary\"\n [ngClass]=\"getClass()\"\n></ui-box>\n","import { NgModule } from '@angular/core';\nimport { DividerComponent } from './divider.component';\n\n@NgModule({\n imports: [DividerComponent],\n exports: [DividerComponent],\n})\nexport class OasysDividerModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\n\n@Component({\n selector: 'ui-form-group',\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass, LayoutStackComponent],\n})\nexport class FormGroupComponent {\n /**\n * Required\n * Set the title to automatically show the correctly styled heading/legend\n */\n @Input() group_title: string;\n\n /**\n * Hide the title of the form group but it remains accessible to screen readers.\n */\n @Input() group_title_hidden: boolean = false;\n\n /**\n * Affects which type title text and input is shown\n */\n @Input() group_type: 'primary' | 'secondary' = 'primary';\n}\n","<fieldset>\n <legend\n [ngClass]=\"{\n 'visually-hidden': group_title_hidden,\n primary: group_type === 'primary',\n secondary: group_type === 'secondary',\n }\"\n >\n {{ group_title }}\n </legend>\n <ui-stack stack_gap=\"near\">\n <ng-content></ng-content>\n </ui-stack>\n</fieldset>\n","import { NgModule } from '@angular/core';\nimport { FormGroupComponent } from './form-group.component';\n\n@NgModule({\n imports: [FormGroupComponent],\n exports: [FormGroupComponent],\n})\nexport class OasysFormGroupModule {}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { TokenService } from '../../../services/token.service';\nimport { IconNames } from '../../icon/icon';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'ui-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n TokenService,\n ],\n standalone: true,\n imports: [LayoutStackComponent, ReactiveFormsModule, FormsModule, NgClass, IconComponent, NgIf],\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit {\n @Input() checkbox_type: 'primary' | 'secondary' = 'primary';\n\n // Required for chip component\n @Input() hide_checkbox: boolean = false;\n @Input() iconName?: IconNames;\n\n @Input() label?: string;\n @Input() checked: boolean;\n @Input() required: boolean;\n @Output() didChange: EventEmitter<boolean> = new EventEmitter();\n\n id: string | number;\n iconSize: string;\n\n constructor(private tokenService: TokenService) {}\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(checked: boolean): void {\n this.checked = checked;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onModelChange(event: boolean) {\n this.checked = event;\n this.onChange(event);\n this.didChange.emit(event);\n this.onTouched();\n }\n\n ngOnInit(): void {\n this.id = this.label + Math.random();\n this.iconSize = this.tokenService.getTokenValue(\n `--oasys-component-checkbox-icon-size-${this.checkbox_type}`,\n );\n }\n}\n","<ui-stack stack_direction=\"x\" stack_gap=\"near\" stack class=\"ui-checkbox\">\n <input\n type=\"checkbox\"\n [required]=\"required\"\n [id]=\"id\"\n [ngModel]=\"checked\"\n (ngModelChange)=\"onModelChange($event)\"\n [attr.checked]=\"checked || null\"\n [ngClass]=\"checkbox_type\"\n />\n <label [for]=\"id\" [ngClass]=\"checkbox_type\">\n <ui-stack\n stack_gap=\"near\"\n [stack_align]=\"hide_checkbox ? 'center' : 'start'\"\n stack_direction=\"x\"\n >\n <div\n class=\"icon-container\"\n [ngClass]=\"{\n 'focus-element': checkbox_type === 'secondary',\n 'icon--hidden': hide_checkbox,\n }\"\n aria-hidden=\"true\"\n >\n <ui-icon\n icon_name=\"tick\"\n [icon_size_override]=\"iconSize\"\n icon_class=\"checkboxIcon\"\n ></ui-icon>\n </div>\n <ui-stack stack_gap=\"tight\">\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n [ngClass]=\"checkbox_type === 'primary' ? 'text-body--default' : 'text-body--supporting'\"\n >\n <ui-icon\n *ngIf=\"hide_checkbox && iconName\"\n [icon_name]=\"iconName\"\n icon_size=\"small\"\n aria-hidden=\"true\"\n ></ui-icon>\n <span class=\"main-label\">{{ label }}</span>\n <ng-content select=\"[tertiary-content]\"></ng-content>\n </ui-stack>\n <span class=\"input-hint text-body--regular text-body--supporting text-color--supporting\"\n ><ng-content></ng-content\n ></span>\n </ui-stack>\n </ui-stack>\n </label>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [CheckboxComponent],\n exports: [CheckboxComponent],\n})\nexport class OasysCheckboxModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { IconNames } from '../../icon/icon';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'ui-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [LayoutStackComponent, ReactiveFormsModule, FormsModule, NgClass, NgIf, IconComponent],\n})\nexport class RadioComponent implements ControlValueAccessor, OnInit {\n @Input() radio_type: 'primary' | 'secondary' = 'primary';\n\n // Required for chip component\n @Input() hide_radio: boolean = false;\n @Input() iconName?: IconNames;\n\n @Input() label?: string;\n @Input() value?: string;\n @Input() name?: string;\n @Input() checked?: boolean;\n\n @Output() didChange: EventEmitter<string> = new EventEmitter();\n\n id: string | number;\n iconSize: string;\n\n selectedValue: string;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n selectOption() {\n this.onChange(this.value);\n this.onTouched();\n }\n\n writeValue(value: string): void {\n this.selectedValue = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onModelChange(event: string) {\n this.value = event;\n this.onChange(event);\n this.didChange.emit(event);\n this.onTouched();\n }\n\n ngOnInit(): void {\n this.id = this.label + Math.random();\n }\n}\n","<ui-stack stack_direction=\"x\" stack_gap=\"near\" stack class=\"ui-radio\">\n <input\n role=\"radio\"\n type=\"radio\"\n [id]=\"id\"\n [value]=\"value\"\n [ngModel]=\"selectedValue\"\n (ngModelChange)=\"onModelChange($event)\"\n [ngClass]=\"radio_type\"\n [name]=\"name\"\n [checked]=\"checked\"\n />\n <label [for]=\"id\" [ngClass]=\"radio_type\">\n <ui-stack stack_gap=\"near\" [stack_align]=\"hide_radio ? 'center' : 'start'\" stack_direction=\"x\">\n <div [ngClass]=\"{ 'icon--hidden': hide_radio, 'icon-container': true }\">\n <div class=\"dot\"></div>\n </div>\n <ui-stack stack_gap=\"tight\">\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_gap=\"near\"\n [ngClass]=\"radio_type === 'primary' ? 'text-body--default' : 'text-body--supporting'\"\n >\n <ui-icon\n *ngIf=\"hide_radio && iconName\"\n [icon_name]=\"iconName\"\n icon_size=\"small\"\n ></ui-icon>\n <span class=\"main-label\" [ngClass]=\"{ 'label--center': hide_radio }\">{{ label }}</span>\n <ng-content select=\"[tertiary-content]\"></ng-content>\n </ui-stack>\n <span\n [attr.aria-details]=\"id\"\n class=\"input-hint text-body--regular text-body--supporting text-color--supporting\"\n ><ng-content></ng-content\n ></span>\n </ui-stack>\n </ui-stack>\n </label>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n imports: [RadioComponent],\n exports: [RadioComponent],\n})\nexport class OasysRadioModule {}\n","import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[autofocus]',\n standalone: true,\n})\nexport class OasysAutofocusDirective {\n private _autofocus;\n\n @Input() set autofocus(condition: boolean) {\n this._autofocus = condition != false;\n }\n\n constructor(private el: ElementRef) {}\n\n ngOnInit() {\n if (this._autofocus || typeof this._autofocus === 'undefined') {\n setTimeout(() => {\n this.el.nativeElement.focus();\n }, 500);\n }\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n forwardRef,\n ElementRef,\n Inject,\n AfterViewInit,\n ViewChild,\n signal,\n computed,\n DOCUMENT\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { AutocompleteType, TextInputType, TextInputMode } from './text-input';\nimport { ValidationErrorTypes } from '../forms';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { OasysAutofocusDirective } from '../../../directives/autofocus/autofocus.directive';\nimport { OasysHrefDirective } from '../../../directives/href/href.directive';\nimport { LayoutBoxComponent } from '../../layout/box/box.component';\n\n@Component({\n selector: 'ui-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof TextInputComponent => TextInputComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [\n LayoutStackComponent,\n ReactiveFormsModule,\n FormsModule,\n NgClass,\n OasysAutofocusDirective,\n OasysHrefDirective,\n LayoutBoxComponent,\n ],\n})\nexport class TextInputComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n @Input() label!: string;\n @Input() hint?: string;\n @Input() optional = true;\n @Input() type: TextInputType = 'text';\n @Input() inputmode?: TextInputMode = 'text';\n\n @Input() autocomplete: AutocompleteType = 'on';\n @Input() autofocus = false;\n @Input() minlength?: number;\n @Input() maxlength = 255;\n @Input() pattern?: string;\n @Input() autocorrect: boolean = this.type === 'text'; // do not spell check emails and passwords\n @Input() disabled = false;\n @Input() aria_label: string | undefined;\n\n @Input() show_password_string = 'Show'; // Pass in translated string\n @Input() hide_password_string = 'Hide'; // Pass in translated string\n\n @Input() validation_messages?: ValidationErrorTypes; // Pass in translated string\n\n @Output() didChange = new EventEmitter<string>();\n\n @ViewChild('textinput', { read: ElementRef }) textInput: ElementRef<HTMLElement>;\n\n @ViewChild('prefaceContent', { read: ElementRef, static: false })\n prefaceContent: ElementRef<HTMLElement>;\n\n textValue = '';\n showPassword = false;\n inputDidChange = false; // only show valdiation after a change event (ie. blur)\n textInputType: TextInputType = 'text';\n isFocused = signal(false); // track focus state for password hint display\n\n id: string;\n\n safariAutocorrect: 'on' | 'off' = 'on';\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n onChange: any = (): void => {};\n onTouched: any = (): void => {};\n\n writeValue(textValue: string): void {\n this.textValue = textValue;\n }\n\n registerOnChange(fn: unknown): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: unknown): void {\n this.onTouched = fn;\n }\n\n onModelChange(textValue: string): void {\n this.textValue = textValue;\n this.onChange(textValue);\n this.didChange.emit(textValue);\n this.onTouched();\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n // Computed signal for hint display logic\n shouldShowHint = computed(() => {\n if (!this.hint) {\n return false;\n }\n\n // For password inputs, only show hint when focused\n if (this.type === 'password') {\n return this.isFocused();\n }\n\n // For all other input types, always show hint\n return true;\n });\n\n toggleShowPassword(): void {\n this.showPassword = !this.showPassword;\n this.textInputType = this.showPassword ? 'text' : 'password';\n }\n\n handleEvent(): void {\n this.inputDidChange = true;\n\n const inputElement = this.document.getElementById(this.id);\n inputElement?.removeEventListener('change', this);\n }\n\n setupValidationListener(): void {\n const inputElement = this.document.getElementById(this.id);\n inputElement?.addEventListener('change', this);\n }\n\n ngAfterViewInit(): void {\n this.setupValidationListener();\n }\n\n ngOnInit(): void {\n this.id = Math.random().toString();\n this.textInputType = this.type;\n this.safariAutocorrect = this.autocorrect ? 'on' : 'off';\n }\n\n accessibleAriaLabel(): string | undefined {\n let prefaceText = '';\n\n if (this.aria_label || this.textInputType !== 'tel') {\n return this.aria_label;\n }\n\n // Get preface content if available\n if (this.prefaceContent?.nativeElement?.textContent?.trim()) {\n prefaceText = ' ' + this.prefaceContent.nativeElement.textContent.trim();\n }\n\n const textValue = this.textValue?.trim() ?? '';\n const telephoneToText = prefaceText + ' ' + textValue.split('').join(' ');\n\n return this.label + telephoneToText;\n }\n\n getInputMode(): string | undefined {\n // For telephone inputs, use tel input mode\n if (this.textInputType === 'tel') {\n return 'tel';\n }\n\n if (this.textInputType === 'number') {\n return 'numeric';\n }\n\n // If inputmode is explicitly set, use it\n if (this.inputmode) {\n return this.inputmode;\n }\n return 'text';\n }\n\n getAriaDescribedBy(): string | undefined {\n const describedBy = [];\n\n // Add error if it exists\n describedBy.push('error_' + this.id);\n\n // Add hint if it exists\n if (this.hint) {\n describedBy.push('hint_' + this.id);\n }\n\n return describedBy.length > 0 ? describedBy.join(' ') : undefined;\n }\n}\n","<ui-stack class=\"ui-text-input-container\" stack_gap=\"tight\">\n <div class=\"ui-text-input\">\n <ui-stack stack_direction=\"x\">\n <div class=\"input-preface\" [attr.id]=\"'preface_' + id\" #prefaceContent>\n <ng-content select=\"[preface]\"></ng-content>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"safariAutocorrect\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"autocomplete || null\"\n [minlength]=\"minlength || null\"\n [maxlength]=\"maxlength\"\n [pattern]=\"pattern || null\"\n [required]=\"!optional\"\n [spellcheck]=\"autocorrect\"\n [type]=\"textInputType\"\n [value]=\"textValue\"\n [attr.inputmode]=\"getInputMode()\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [attr.aria-label]=\"accessibleAriaLabel()\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-stack>\n <ui-stack\n class=\"label-container\"\n stack_direction=\"x\"\n [stack_distribute]=\"type === 'password' ? 'space-between' : 'start'\"\n >\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n @if (type === 'password') {\n <a (click)=\"toggleShowPassword()\" class=\"text-body--supporting text-color--supporting\">\n @if (!showPassword) {\n <span>{{ show_password_string }}</span>\n } @else if (showPassword) {\n <span>{{ hide_password_string }}</span>\n }\n </a>\n }\n </ui-stack>\n </div>\n <ui-stack stack_gap=\"none\">\n <div class=\"input-errors\">\n <div class=\"input-errors-content\" [attr.id]=\"'error_' + id\">\n <ng-content select=\"ui-form-errors\"></ng-content>\n </div>\n </div>\n @if (shouldShowHint()) {\n <ui-box\n class=\"ui-text-input__hint-container\"\n [ngClass]=\"{ 'ui-text-input__hint-expanded': shouldShowHint() }\"\n box_background=\"transparent\"\n box_space=\"none\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"near\"\n >\n <div\n class=\"ui-text-input-hint text-body--supporting text-color--supporting\"\n [attr.id]=\"'hint_' + id\"\n >\n {{ hint }}\n </div>\n </ui-box>\n }\n </ui-stack>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { TextInputComponent } from './text-input.component';\n\n@NgModule({\n imports: [TextInputComponent],\n exports: [TextInputComponent],\n})\nexport class OasysTextInputModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { IconNames } from '../../icon/icon';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { NgIf } from '@angular/common';\nimport { RadioComponent } from '../radio/radio.component';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'ui-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ChipComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [NgIf, RadioComponent, ReactiveFormsModule, FormsModule, CheckboxComponent],\n})\nexport class ChipComponent implements ControlValueAccessor, OnInit {\n @Input() chip_type: 'radio' | 'checkbox' = 'radio';\n\n @Input() icon_name!: IconNames;\n @Input() label?: string;\n @Input() value?: string | boolean;\n\n // Checkbox only\n @Input() required: boolean;\n\n @Output() didChange: EventEmitter<string | boolean> = new EventEmitter();\n\n id: string;\n selectedValue: string | boolean;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n /**\n * On init\n */\n ngOnInit(): void {\n this.id = 'chip' + Math.random();\n }\n\n /**\n * CVA - Write value\n * @param {string | boolean} value\n */\n writeValue(value: string | boolean): void {\n this.selectedValue = value;\n }\n\n /**\n * CVA - Register on change\n * @param {() => void} fn\n */\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n /**\n * CVA - Register on touched\n * @param {() => void} fn\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * On modal interaction and change\n * @param event\n */\n onModalChange(event: string | boolean): void {\n this.value = event;\n this.onChange(event);\n this.didChange.emit(event);\n this.onTouched();\n }\n}\n","<div [id]=\"id\" class=\"ui-chip\">\n <ui-radio\n *ngIf=\"chip_type === 'radio'\"\n [label]=\"label\"\n [value]=\"value?.toString()\"\n radio_type=\"primary\"\n [hide_radio]=\"true\"\n [iconName]=\"icon_name\"\n [ngModel]=\"selectedValue\"\n (didChange)=\"onModalChange($event)\"\n >\n <ng-content ngProjectAs=\"[tertiary-content]\"></ng-content>\n </ui-radio>\n\n <ui-checkbox\n *ngIf=\"chip_type === 'checkbox'\"\n [label]=\"label\"\n [checked]=\"value === true\"\n [required]=\"required\"\n checkbox_type=\"primary\"\n [hide_checkbox]=\"true\"\n [iconName]=\"icon_name\"\n [ngModel]=\"selectedValue\"\n (didChange)=\"onModalChange($event)\"\n >\n <ng-content ngProjectAs=\"[tertiary-content]\"></ng-content>\n </ui-checkbox>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ChipComponent } from './chip.component';\n\n@NgModule({\n imports: [ChipComponent],\n exports: [ChipComponent],\n})\nexport class OasysChipModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Component } from '@angular/core';\nimport { TokenService } from '../../../services/token.service';\nimport { LayoutContainerSizes } from '../Layout';\n@Component({\n selector: 'ui-container',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class]': 'containerLayoutClasses',\n },\n styleUrls: ['./container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class LayoutContainerComponent implements OnInit, OnChanges {\n @Input() container_fluid: boolean = false;\n @Input() container_gutter: true | false | 'true' | 'false' = true;\n prefix = 'ui-layout-container';\n containerLayoutClasses?: string[];\n\n containerGutterNameLarge: string;\n containerGutterNameSmall: string;\n containerHorizontalSizes: LayoutContainerSizes;\n\n constructor(private changes: ChangeDetectorRef) {}\n\n ngOnChanges(): void {\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n this.containerLayoutClasses = [\n this.prefix,\n this.container_fluid ? `${this.prefix}-fluid` : '',\n this.container_gutter === true || this.container_gutter === 'true'\n ? ''\n : `${this.prefix}-no-gutter`,\n ]\n .flat(10)\n .filter(Boolean);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ResponsiveGridColumns } from '../Layout';\n\n@Component({\n selector: 'ui-column',\n template: '<ng-content></ng-content>',\n host: {\n '[class]': 'columnLayoutClasses',\n },\n styleUrls: ['./grid.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class LayoutGridColumnComponent implements OnInit, OnChanges {\n didFirstInit: boolean = false;\n prefix = 'ui-layout-column';\n columnLayoutClasses?: string[];\n\n @Input() columns: ResponsiveGridColumns = 12;\n @Input() column_inset: ResponsiveGridColumns;\n grid_base: number;\n\n constructor(private changes: ChangeDetectorRef) {}\n\n getSizeClasses(columns: ResponsiveGridColumns, classString: string): string[] {\n if (!columns) {\n return [''];\n }\n\n if (typeof columns === 'object') {\n return Object.keys(columns).map((key) => {\n return `${this.prefix}${classString}${key}-${columns[key]}`;\n });\n }\n\n return [this.prefix, `${this.prefix}${classString}${columns}`];\n }\n\n ngOnChanges(): void {\n if (!this.didFirstInit) {\n return;\n }\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n this.columnLayoutClasses = [\n this.prefix,\n this.getSizeClasses(this.columns, '-col-'),\n this.getSizeClasses(this.column_inset, '-col-inset-'),\n ]\n .flat(10)\n .filter(Boolean);\n this.didFirstInit = true;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ui-grid',\n template: '<ng-content></ng-content>',\n host: {\n '[class]': 'gridLayoutClasses',\n '[style.grid-template-columns]': 'gridTemplateColumns',\n },\n styleUrls: ['./grid.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class LayoutGridComponent implements OnInit, OnChanges {\n @Input() grid_auto: boolean = false;\n @Input() grid_collapse_below: 'tablet' | 'laptop' | 'desktop' | 'none' = 'tablet';\n @Input() grid_gap: 'none' | 'tiny' | 'tight' | 'near' | 'default' | 'expanded' = 'default';\n @Input() grid_base: number = 12;\n\n didFirstInit: boolean = false;\n prefix = 'ui-layout-grid';\n gridLayoutClasses?: string[];\n\n constructor(private changes: ChangeDetectorRef) {}\n\n get gridTemplateColumns(): string | null {\n if (this.grid_auto) return null;\n return `repeat(${this.grid_base}, 1fr)`;\n }\n\n ngOnChanges(): void {\n if (!this.didFirstInit) return;\n this.ngOnInit();\n this.changes.markForCheck();\n }\n\n ngOnInit(): void {\n this.gridLayoutClasses = [\n this.prefix,\n `${this.prefix}-${this.grid_gap}`,\n `${this.prefix}-${this.grid_auto ? 'width-auto' : ''}`,\n `${this.prefix}-collapse-below-${this.grid_collapse_below}`,\n ];\n this.didFirstInit = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LayoutBoxComponent } from './box/box.component';\nimport { LayoutContainerComponent } from './container/container.component';\nimport { LayoutGridColumnComponent } from './grid/grid-column.component';\nimport { LayoutGridComponent } from './grid/grid.component';\nimport { LayoutStackComponent } from './stack/stack.component';\n\n@NgModule({\n imports: [\n LayoutBoxComponent,\n LayoutContainerComponent,\n LayoutGridComponent,\n LayoutGridColumnComponent,\n LayoutStackComponent,\n ],\n exports: [\n LayoutBoxComponent,\n LayoutContainerComponent,\n LayoutGridColumnComponent,\n LayoutGridComponent,\n LayoutStackComponent,\n ],\n})\nexport class OasysLayoutModule {}\n","import { Component, computed, input } from '@angular/core';\nimport { ValidationErrorTypes } from '../forms';\nimport { ValidationErrors } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { OasysLayoutModule } from '../../layout';\n\n@Component({\n selector: 'ui-form-errors',\n templateUrl: './form-errors.component.html',\n standalone: true,\n imports: [CommonModule, OasysLayoutModule],\n})\nexport class FormErrorsComponent {\n errors = input<ValidationErrors | null | undefined>(null);\n error_messages = input<ValidationErrorTypes | undefined>({});\n\n errorMessage = computed((): string => {\n const currentErrors = this.errors();\n const messages = this.error_messages() || {};\n\n if (!currentErrors) {\n return undefined;\n }\n const errorKeys = Object.keys(currentErrors);\n const firstErrorKey = errorKeys.length ? errorKeys[0] : undefined;\n return firstErrorKey ? messages[firstErrorKey] : undefined;\n });\n}\n","@if (errorMessage()) {\n <ui-box\n box_background=\"transparent\"\n box_space=\"none\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"near\"\n >\n <div class=\"text-color--error\">{{ errorMessage() }}</div>\n </ui-box>\n}\n","import { NgModule } from '@angular/core';\nimport { FormErrorsComponent } from './form-errors.component';\n\n@NgModule({\n imports: [FormErrorsComponent],\n exports: [FormErrorsComponent],\n})\nexport class OasysFormErrorsModule {}\n","import { Component, Input, OnInit, ViewEncapsulation, HostBinding } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { HeadingAlignment, HeadingGap, HeadingLevel, HeadingType, UIBoolean } from './heading';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { NgIf, NgClass, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ui-heading',\n templateUrl: './heading.component.html',\n styleUrls: ['./heading.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [LayoutStackComponent, NgIf, NgClass, NgTemplateOutlet],\n providers: [TokenService],\n})\nexport class OasysHeadingComponent implements OnInit {\n @Input() heading_type: HeadingType = 'primary';\n @Input() heading_on_dark: UIBoolean;\n @Input() heading_title: string;\n @Input() heading_seo_priority: boolean = false;\n @Input() heading_priority?: 1 | 2 | 3 | 4 | 5 | 6;\n @Input() heading_alignment_override?: HeadingAlignment;\n @Input() heading_subtitle?: string = '';\n @Input() heading_surtitle?: string = '';\n @Input() heading_level?: HeadingLevel;\n\n computed_heading_level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n headingAlignment: HeadingAlignment;\n headingGap: HeadingGap;\n\n constructor(private tokenService: TokenService) {}\n\n @HostBinding('class') get class(): string {\n return `\n ${this.heading_on_dark ? 'text-color--on-dark' : ''}\n ui-heading-alignment-${this.headingAlignment}\n `;\n }\n\n setComputedHeadingLevel(): void {\n if (this.heading_level) {\n this.computed_heading_level = this.heading_level;\n } else if (this.heading_priority) {\n this.computed_heading_level = `h${this.heading_priority}`;\n } else if (this.heading_seo_priority) {\n this.computed_heading_level = 'h1';\n } else {\n this.computed_heading_level = 'h2';\n }\n }\n\n headingTypeIsFunctional(headingType: HeadingType): boolean {\n return (headingType || '').indexOf('functional') !== -1;\n }\n\n setupHeadingStackAlignment(headingType: HeadingType): void {\n if (this.heading_alignment_override) {\n this.headingAlignment = this.heading_alignment_override;\n return;\n }\n\n const alignment = this.tokenService.getTokenValue(\n '--oasys-component-heading-alignment-default',\n ) as HeadingAlignment;\n const functionalAlignment = this.tokenService.getTokenValue(\n '--oasys-component-heading-alignment-functional',\n ) as HeadingAlignment;\n\n this.headingAlignment = this.headingTypeIsFunctional(headingType)\n ? functionalAlignment\n : alignment;\n }\n\n setupHeadingStackGap(headingType: HeadingType): void {\n if (this.headingTypeIsFunctional(headingType)) {\n this.headingGap = this.tokenService.getTokenValue(\n '--oasys-component-heading-gap-functional',\n ) as HeadingGap;\n return;\n }\n\n if (this.heading_type === 'secondary') {\n this.headingGap = this.tokenService.getTokenValue(\n '--oasys-component-heading-gap-secondary',\n ) as HeadingGap;\n return;\n }\n\n if (this.heading_type === 'primary') {\n this.headingGap = this.tokenService.getTokenValue(\n '--oasys-component-heading-gap-primary',\n ) as HeadingGap;\n return;\n }\n\n // Hero gap\n this.headingGap = this.tokenService.getTokenValue(\n '--oasys-component-heading-gap-default',\n ) as HeadingGap;\n }\n\n ngOnInit(): void {\n this.setupHeadingStackAlignment(this.heading_type);\n this.setupHeadingStackGap(this.heading_type);\n this.setComputedHeadingLevel();\n }\n}\n","<div>\n <ui-stack [stack_align]=\"headingAlignment\" [stack_gap]=\"headingGap\">\n <p\n *ngIf=\"heading_surtitle && heading_surtitle.length\"\n class=\"heading-surtitle text-body--supporting text-color--supporting\"\n >\n {{ heading_surtitle }}\n </p>\n\n <ng-template #content>\n <span\n class=\"heading-title\"\n [ngClass]=\"{\n 'text-heading': !headingTypeIsFunctional(heading_type),\n 'text-heading--functional': headingTypeIsFunctional(heading_type),\n\n 'text-heading--hero': heading_type === 'hero',\n 'text-heading--primary': heading_type === 'primary',\n 'text-heading--secondary': heading_type === 'secondary',\n 'text-heading--functional--primary': heading_type === 'functional-primary',\n 'text-heading--functional--secondary': heading_type === 'functional-secondary',\n }\"\n >{{ heading_title }}</span\n >\n </ng-template>\n\n <!-- Title -->\n <h1 *ngIf=\"computed_heading_level === 'h1'\" role=\"heading\" class=\"seo-h1\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h1>\n <h2 *ngIf=\"computed_heading_level === 'h2'\" role=\"heading\" class=\"seo-h2\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h2>\n <h3 *ngIf=\"computed_heading_level === 'h3'\" role=\"heading\" class=\"seo-h3\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h3>\n <h4 *ngIf=\"computed_heading_level === 'h4'\" role=\"heading\" class=\"seo-h4\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h4>\n <h5 *ngIf=\"computed_heading_level === 'h5'\" role=\"heading\" class=\"seo-h5\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h5>\n <h6 *ngIf=\"computed_heading_level === 'h6'\" role=\"heading\" class=\"seo-h6\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </h6>\n\n <!-- Subtitle -->\n <h2\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h1'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h2>\n <h3\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h2'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h3>\n <h4\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h3'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h4>\n <h5\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h4'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h5>\n <h6\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h5'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></h6>\n <p\n *ngIf=\"heading_subtitle && heading_subtitle.length && computed_heading_level === 'h6'\"\n class=\"heading-subtitle ui-prose\"\n [innerHTML]=\"heading_subtitle\"\n [ngClass]=\"{\n 'text-body--hero': heading_type === 'hero',\n 'text-body--default': heading_type !== 'hero',\n }\"\n ></p>\n </ui-stack>\n</div>\n","import { NgModule } from '@angular/core';\nimport { OasysHeadingComponent } from './heading.component';\n\n@NgModule({\n imports: [OasysHeadingComponent],\n exports: [OasysHeadingComponent],\n})\nexport class OasysHeadingModule {}\n","import { Component, Input, OnInit, AfterViewInit, ElementRef, ViewChild } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { LayoutAlignment, LayoutBackgrounds } from '../layout/Layout';\nimport { HeadingLevel } from '../heading/heading';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutGridComponent } from '../layout/grid/grid.component';\nimport { NgStyle, NgClass, NgIf } from '@angular/common';\nimport { LayoutGridColumnComponent } from '../layout/grid/grid-column.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { OasysHeadingComponent } from '../heading/heading.component';\nimport { OasysButtonComponent } from '../button/button.component';\n@Component({\n selector: 'ui-hero',\n templateUrl: './hero.component.html',\n styleUrls: ['./hero.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n LayoutGridComponent,\n NgStyle,\n LayoutGridColumnComponent,\n NgClass,\n LayoutStackComponent,\n OasysHeadingComponent,\n NgIf,\n OasysButtonComponent,\n ],\n providers: [TokenService],\n})\nexport class HeroComponent implements OnInit, AfterViewInit {\n @ViewChild('herobox', { read: ElementRef }) herobox: ElementRef;\n\n // Style input variables\n @Input() min_container_height: number;\n @Input() image_left_desktop: boolean = false;\n @Input() image_top_mobile: boolean = true;\n @Input() background_colour: LayoutBackgrounds;\n @Input() non_brand_background_colour: string;\n\n // Content input variables\n @Input() heading_title: string;\n @Input() heading_subtitle: string;\n @Input() heading_surtitle: string;\n @Input() primary_cta_text: string;\n @Input() secondary_cta_text: string;\n @Input() image: string;\n @Input() alt_text: string;\n @Input() media_type: 'image' | 'video' = 'image';\n @Input() text_on_dark_override: string;\n @Input() heading_level: HeadingLevel = 'h1';\n\n // Event input variables\n @Input() href_primary_cta: string = '';\n @Input() href_secondary_cta: string = '';\n\n // Design token variables\n heroCtaAlignment: LayoutAlignment;\n heroInsetSpaceSmall: string;\n heroInsetSpaceLarge: string;\n\n constructor(private tokenService: TokenService) {}\n\n setNonBrandBackgroundColour(): void {\n this.herobox.nativeElement.style.background = this.non_brand_background_colour;\n }\n\n ngAfterViewInit(): void {\n if (this.non_brand_background_colour) {\n this.setNonBrandBackgroundColour();\n }\n }\n\n ngOnInit(): void {\n this.heroCtaAlignment = this.tokenService.getTokenValue(\n '--oasys-component-hero-actions-alignment',\n ) as LayoutAlignment;\n this.heroInsetSpaceSmall = this.tokenService.getTokenValue(\n '--oasys-component-hero-inset-spacing-small',\n );\n this.heroInsetSpaceLarge = this.tokenService.getTokenValue(\n '--oasys-component-hero-inset-spacing-large',\n );\n }\n}\n","<ui-box [box_background]=\"background_colour\" box_space=\"none\" #herobox>\n <ui-grid\n [ngStyle]=\"{ 'min-height': min_container_height ? min_container_height + 'px' : 'auto' }\"\n grid_gap=\"none\"\n grid_collapse_below=\"tablet\"\n >\n <ui-column\n [columns]=\"5\"\n [ngClass]=\"{ 'image-left': image_left_desktop, 'image-top': image_top_mobile }\"\n >\n <ui-box\n box_fill_mode=\"fill\"\n box_align_y=\"center\"\n box_background=\"transparent\"\n [box_space]=\"{\n mobile: heroInsetSpaceSmall,\n tablet: heroInsetSpaceSmall,\n laptop: heroInsetSpaceLarge,\n desktop: heroInsetSpaceLarge,\n }\"\n >\n <ui-stack\n stack_direction=\"y\"\n stack_align=\"center\"\n stack_distribute=\"center\"\n stack_gap=\"default\"\n >\n <ui-heading\n heading_type=\"primary\"\n [heading_on_dark]=\"\n herobox.backgroundIsDark || text_on_dark_override === 'true' ? true : false\n \"\n [heading_title]=\"heading_title\"\n [heading_seo_priority]=\"true\"\n [heading_subtitle]=\"heading_subtitle\"\n [heading_surtitle]=\"heading_surtitle\"\n [heading_level]=\"heading_level\"\n >\n </ui-heading>\n <!-- TODO: replace with ui-button-group once built-->\n <ui-stack\n *ngIf=\"primary_cta_text\"\n class=\"cta-container\"\n stack_direction=\"x\"\n [stack_align]=\"heroCtaAlignment\"\n [stack_distribute]=\"heroCtaAlignment\"\n [stack_wrap]=\"true\"\n stack_gap=\"near\"\n >\n <ui-button\n bwtrackas=\"oasys.hero-block.primary-cta\"\n button_size=\"large\"\n [button_type]=\"\n herobox.backgroundIsDark || text_on_dark_override === 'true'\n ? 'primary-inverse'\n : 'primary'\n \"\n [href]=\"href_primary_cta\"\n >\n <span>{{ primary_cta_text }}</span>\n </ui-button>\n <ui-button\n *ngIf=\"secondary_cta_text\"\n bwtrackas=\"oasys.hero-block.secondary-cta\"\n button-size=\"large\"\n [button_type]=\"\n herobox.backgroundIsDark || text_on_dark_override === 'true'\n ? 'secondary-inverse'\n : 'secondary'\n \"\n [href]=\"href_secondary_cta\"\n >\n <span>{{ secondary_cta_text }}</span>\n </ui-button>\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n <ui-column [columns]=\"7\">\n <picture *ngIf=\"media_type === 'image'\">\n <source\n [srcset]=\"\n image + '?w=880&h=880&fm=webp&q=75 1x,' + image + '?w=1760&h=1760&fm=webp&q=75 2x'\n \"\n media=\"(min-width: 1440px)\"\n type=\"image/webp\"\n />\n <source\n [srcset]=\"\n image + '?w=720&h=720&fm=webp&q=75 1x,' + image + '?w=1440&h=1440&fm=webp&q=75 2x'\n \"\n media=\"(min-width: 1200px)\"\n type=\"image/webp\"\n />\n <source\n [srcset]=\"\n image + '?w=580&h=580&fm=webp&q=75 1x,' + image + '?w=1160&h=1160&fm=webp&q=75 2x'\n \"\n media=\"(min-width: 992px)\"\n type=\"image/webp\"\n />\n <source\n [srcset]=\"\n image + '?w=430&h=430&fm=webp&q=75 1x,' + image + '?w=860&h=860&fm=webp&q=75 2x'\n \"\n media=\"(min-width: 768px)\"\n type=\"image/webp\"\n />\n <source\n [srcset]=\"image + '?w=720&h=720&fm=webp&q=75 2x'\"\n media=\"(min-width: 454px)\"\n type=\"image/webp\"\n />\n <img\n fetchpriority=\"high\"\n [src]=\"image + '?w=430&h=430&fm=webp&q=75'\"\n [attr.alt]=\"alt_text\"\n width=\"100%\"\n height=\"100%\"\n style=\"object-fit: cover\"\n />\n </picture>\n <ng-content *ngIf=\"media_type === 'video'\"></ng-content>\n </ui-column>\n </ui-grid>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { HeroComponent } from './hero.component';\n\n@NgModule({\n imports: [HeroComponent],\n exports: [HeroComponent],\n})\nexport class OasysHeroModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutGridComponent } from '../layout/grid/grid.component';\nimport { LayoutGridColumnComponent } from '../layout/grid/grid-column.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { OasysHeadingComponent } from '../heading/heading.component';\nimport { NgIf, NgStyle, NgFor, NgClass } from '@angular/common';\nimport { OasysHrefDirective } from '../../directives/href/href.directive';\ninterface linkItem {\n href: string;\n name: string;\n}\n@Component({\n selector: 'ui-seo-block',\n templateUrl: './seo-block.component.html',\n styleUrls: ['./seo-block.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n LayoutGridComponent,\n LayoutGridColumnComponent,\n LayoutStackComponent,\n OasysHeadingComponent,\n NgIf,\n OasysHrefDirective,\n NgStyle,\n NgFor,\n NgClass,\n ],\n})\nexport class SeoBlockComponent implements OnInit {\n @Input() heading_paragraph: string;\n @Input() heading_links: string;\n @Input() main_content: string;\n @Input() expanded_content: string;\n @Input() links: string | linkItem[];\n\n @Input() read_more_content_text: string;\n @Input() read_less_content_text: string;\n @Input() show_more_links_text: string;\n @Input() show_less_links_text: string;\n\n linksColumnsNumber: number;\n expandedLinksVisible: boolean = false;\n expandedContentVisible: boolean = false;\n linksValues: linkItem[];\n\n showMoreLinks(flag: boolean): void {\n this.expandedLinksVisible = flag;\n }\n\n showMoreContent(flag: boolean): void {\n this.expandedContentVisible = flag;\n }\n\n ngOnInit(): void {\n // This is to fix a bug in Oasys that threats arrays as string initially\n if (typeof this.links === 'string') {\n this.linksValues = JSON.parse(this.links) ?? [];\n } else {\n this.linksValues = this.links;\n }\n\n if (this.linksValues.length <= 10) {\n this.linksColumnsNumber = 1;\n } else if (this.linksValues.length <= 20) {\n this.linksColumnsNumber = 2;\n } else {\n this.linksColumnsNumber = 3;\n }\n }\n}\n","<ui-box>\n <ui-grid>\n <ui-column [columns]=\"6\">\n <ui-box\n box_space=\"none\"\n [box_space_right]=\"{\n mobile: 'none',\n tablet: 'expanded',\n laptop: 'expanded',\n desktop: 'expanded',\n }\"\n >\n <ui-stack stack_gap=\"near\">\n <ui-box box_space=\"none\">\n <ui-heading\n heading_type=\"functional-primary\"\n heading_title=\"{{ heading_paragraph }}\"\n heading_level=\"h2\"\n ></ui-heading>\n </ui-box>\n <ui-box box_space=\"none\">\n <p>\n <span class=\"text-body--default\" class=\"ui-prose\" [innerHTML]=\"main_content\"></span>\n <span\n id=\"expanded-content\"\n class=\"text-body--default\"\n class=\"ui-prose\"\n *ngIf=\"expandedContentVisible\"\n [innerHTML]=\"expanded_content\"\n ></span>\n </p>\n </ui-box>\n <ui-box box_space=\"none\" *ngIf=\"expanded_content\">\n <button\n (click)=\"showMoreContent(!expandedContentVisible)\"\n class=\"text-link text-link--standalone\"\n [attr.aria-expanded]=\"expandedContentVisible\"\n [attr.aria-controls]=\"'expanded-content'\"\n >\n {{ expandedContentVisible ? read_less_content_text : read_more_content_text }}\n </button>\n </ui-box>\n </ui-stack>\n </ui-box>\n </ui-column>\n <ui-column [columns]=\"6\">\n <ui-box box_space=\"none\">\n <ui-stack stack_gap=\"near\">\n <ui-box box_space=\"none\">\n <ui-heading\n heading_type=\"functional-secondary\"\n heading_level=\"h3\"\n heading_title=\"{{ heading_links }}\"\n ></ui-heading>\n </ui-box>\n <ui-stack stack_gap=\"tight\">\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [ngStyle]=\"{ 'column-count': linksColumnsNumber }\"\n class=\"links-container text-body--supporting\"\n box_role=\"list\"\n id=\"expanded-links\"\n >\n <ng-container *ngFor=\"let link of linksValues; index as i\">\n <li>\n <ui-box\n box_space=\"none\"\n box_space_bottom=\"tight\"\n box_fill_mode=\"fit\"\n class=\"link-container\"\n [ngClass]=\"{ 'hidden-mobile': i > 4 && !expandedLinksVisible }\"\n >\n <a href=\"{{ link.href }}\">\n {{ link.name }}\n </a>\n </ui-box>\n </li>\n </ng-container>\n </ui-box>\n <ui-box\n box_space=\"none\"\n class=\"hidden-desktop hidden-tablet\"\n *ngIf=\"linksValues.length > 4\"\n >\n <button\n (click)=\"showMoreLinks(!expandedLinksVisible)\"\n class=\"text-link text-link--standalone\"\n [attr.aria-expanded]=\"expandedLinksVisible\"\n [attr.aria-controls]=\"'expanded-links'\"\n >\n {{ expandedLinksVisible ? show_less_links_text : show_more_links_text }}\n </button>\n </ui-box>\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n </ui-grid>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { SeoBlockComponent } from './seo-block.component';\n\n@NgModule({\n imports: [SeoBlockComponent],\n exports: [SeoBlockComponent],\n})\nexport class OasysSeoBlockModule {}\n","import { NgModule } from '@angular/core';\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [IconComponent],\n exports: [IconComponent],\n})\nexport class OasysIconModule {}\n","import { NgModule } from '@angular/core';\nimport { ImageComponent } from './image.component';\n\n@NgModule({\n imports: [ImageComponent],\n exports: [ImageComponent],\n})\nexport class OasysImageModule {}\n","import { Component, Input, OnInit, AfterViewInit } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { LayoutBackgrounds } from '../layout/Layout';\nimport { ImageAspectRatio } from '../image/image';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutGridComponent } from '../layout/grid/grid.component';\nimport { LayoutGridColumnComponent } from '../layout/grid/grid-column.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { ImageComponent } from '../image/image.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { OasysHeadingComponent } from '../heading/heading.component';\nimport { OasysHrefDirective } from '../../directives/href/href.directive';\n\n@Component({\n selector: 'ui-section',\n templateUrl: './section.component.html',\n styleUrls: ['./section.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n LayoutGridComponent,\n LayoutGridColumnComponent,\n NgClass,\n ImageComponent,\n LayoutStackComponent,\n OasysHeadingComponent,\n OasysHrefDirective,\n NgIf,\n ],\n providers: [TokenService],\n})\nexport class SectionComponent implements OnInit, AfterViewInit {\n // Style input variables\n @Input() brand_background_colour: LayoutBackgrounds;\n @Input() non_brand_background_colour: string;\n @Input() text_on_dark_override: boolean = false; // This is for custom/non-brand BG colours\n @Input() image_on_left: boolean = false;\n @Input() section_type: 'spotlight' | 'inform' = 'inform';\n\n // Content input variables\n @Input() heading_title: string;\n @Input() heading_subtitle: string;\n @Input() primary_cta_text: string;\n @Input() secondary_cta_text: string;\n @Input() image: string;\n @Input() alt_text: string;\n\n // Event input variables\n @Input() href_primary_cta: string = '';\n @Input() href_secondary_cta: string = '';\n\n backgroundIsDark: string;\n isSpotLight: string;\n uiBoxId: string; // To randomise the box id\n outterContainer: any = {};\n innerContainer: any = {};\n\n containerInsetSpaceSmall: string;\n containerInsetSpaceLarge: string;\n\n contentInsetSpaceSmall: string;\n contentInsetSpaceLarge: string;\n\n imageAspectRatio: ImageAspectRatio;\n\n constructor(private tokenService: TokenService) {}\n\n ngAfterViewInit(): void {\n if (this.non_brand_background_colour) {\n this.setNonBrandBackgroundColour();\n }\n\n // This doesn't appear to be used anywhere\n this.backgroundIsDark = this.tokenService.getTokenValue(\n `--oasys-component-box-on-dark-${this.brand_background_colour}`,\n );\n }\n\n ngOnInit(): void {\n this.containerInsetSpaceSmall = this.tokenService.getTokenValue(\n `--oasys-component-section-inset-spacing-container-small`,\n );\n this.containerInsetSpaceLarge = this.tokenService.getTokenValue(\n `--oasys-component-section-inset-spacing-container-large`,\n );\n\n this.contentInsetSpaceSmall = this.tokenService.getTokenValue(\n `--oasys-component-section-inset-spacing-content-small-${this.section_type}`,\n );\n this.contentInsetSpaceLarge = this.tokenService.getTokenValue(\n `--oasys-component-section-inset-spacing-content-large-${this.section_type}`,\n );\n\n this.imageAspectRatio = this.tokenService.getTokenValue(\n `--oasys-component-section-image-aspect-ratio-${this.section_type}`,\n ) as ImageAspectRatio;\n\n // Setting a unique ID, this is important & needed to apply\n // styles to ui-box\n this.uiBoxId = Date.now() + '-' + Math.random();\n }\n\n /**\n * Users are able to set custom non brand background colours\n * If a non brand background colour is provided we ignore branded colours\n * even if they are provided.\n */\n setNonBrandBackgroundColour(): void {\n const box = document.getElementById(`ui-box-${this.uiBoxId}`);\n\n if (box) {\n this.brand_background_colour = undefined;\n box.style.background = this.non_brand_background_colour;\n\n if (this.text_on_dark_override) {\n box.classList.add('text-color--on-dark');\n }\n }\n }\n}\n","<ui-box\n id=\"ui-box-{{ uiBoxId }}\"\n [box_background]=\"brand_background_colour\"\n [box_space_left]=\"section_type === 'spotlight' && !image_on_left ? 'none' : undefined\"\n [box_space_right]=\"section_type === 'spotlight' && image_on_left ? 'none' : undefined\"\n [box_space]=\"\n section_type === 'spotlight'\n ? 'none'\n : {\n mobile: containerInsetSpaceSmall,\n tablet: containerInsetSpaceLarge,\n laptop: containerInsetSpaceLarge,\n desktop: containerInsetSpaceLarge,\n }\n \"\n>\n <ui-grid [grid_gap]=\"section_type === 'spotlight' ? 'none' : 'default'\">\n <ui-column\n [columns]=\"6\"\n [ngClass]=\"{ 'image-left': image_on_left, 'image-top-mobile': image_on_left }\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\" box_align_y=\"center\">\n <ui-image\n [image_src]=\"image\"\n [image_alt_text]=\"alt_text\"\n [preload_aspect_ratio]=\"imageAspectRatio\"\n ></ui-image>\n </ui-box>\n </ui-column>\n\n <ui-column [columns]=\"6\">\n <ui-box\n [box_background]=\"brand_background_colour\"\n box_align_y=\"center\"\n [box_space]=\"\n section_type === 'spotlight'\n ? {\n mobile: contentInsetSpaceSmall,\n tablet: contentInsetSpaceLarge,\n laptop: contentInsetSpaceLarge,\n desktop: contentInsetSpaceLarge,\n }\n : {\n mobile: contentInsetSpaceSmall,\n tablet: contentInsetSpaceSmall,\n laptop: contentInsetSpaceLarge,\n desktop: contentInsetSpaceLarge,\n }\n \"\n >\n <ui-stack\n stack_direction=\"y\"\n stack_align=\"center\"\n stack_distribute=\"center\"\n [stack_wrap]=\"true\"\n >\n <ui-heading\n [heading_type]=\"section_type === 'spotlight' ? 'primary' : 'functional-primary'\"\n [heading_title]=\"heading_title\"\n [heading_subtitle]=\"heading_subtitle\"\n >\n </ui-heading>\n\n <ui-stack\n stack_direction=\"x\"\n stack_align=\"start\"\n [stack_distribute]=\"section_type === 'spotlight' ? 'center' : 'start'\"\n [stack_wrap]=\"true\"\n stack_gap=\"near\"\n >\n <a\n class=\"text-link text-link--standalone\"\n [href]=\"href_primary_cta\"\n bwtrackas=\"oasys.story-block.primary-cta\"\n >{{ primary_cta_text }}</a\n >\n <a\n *ngIf=\"\n section_type !== 'spotlight' &&\n href_secondary_cta.length > 0 &&\n href_secondary_cta.length > 0\n \"\n class=\"text-link text-link--standalone\"\n [href]=\"href_secondary_cta\"\n bwtrackas=\"oasys.story-block.secondary-cta\"\n >{{ secondary_cta_text }}</a\n >\n </ui-stack>\n </ui-stack>\n </ui-box>\n </ui-column>\n </ui-grid>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { SectionComponent } from './section.component';\n\n@NgModule({\n imports: [SectionComponent],\n exports: [SectionComponent],\n})\nexport class SectionModule {}\n","import { NgClass, NgIf } from '@angular/common';\nimport {\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n Inject,\n EventEmitter,\n Output,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n DOCUMENT\n} from '@angular/core';\nimport Swiper from 'swiper';\nimport { SwiperOptions } from 'swiper/types';\nimport { TokenService } from '../../services/token.service';\nimport { SwiperContainer } from 'swiper/element';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { OasysButtonComponent } from '../button/button.component';\nimport { SWIPER_PROVIDER_TOKEN } from '../../services';\n\n/* This component wraps around the swiper.js library WebComponent */\n\n@Component({\n selector: 'ui-carousel',\n templateUrl: './carousel.component.html',\n styleUrls: ['./carousel.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [LayoutBoxComponent, NgClass, LayoutStackComponent, NgIf, OasysButtonComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n providers: [TokenService],\n})\nexport class CarouselComponent implements OnInit {\n // The swiper instance\n @ViewChild('swiper', { static: true }) swiper: ElementRef<SwiperContainer>;\n @ViewChild('carouselscrollbarplaceholder', { static: false, read: ElementRef })\n carouselscrollbarplaceholder: ElementRef;\n @ViewChild('carouselctastack', { static: false, read: ElementRef }) carouselctastack: ElementRef;\n\n // Rewinds the slides back to the start when the user reaches the end when set to true\n @Input() rewind: boolean = false;\n\n @Input() carousel_overflow: boolean = false;\n\n @Input() carousel_gap: 'default' | 'tight' | 'near' | 'none' = 'default';\n\n @Input() carousel_pagination: 'scroll-arrows' | 'none' | 'scroll-bar' | 'small-arrows' = 'none';\n\n @Input() carousel_slides_per_view_desktop: number = 4;\n @Input() carousel_slides_per_view_laptop: number = 3;\n @Input() carousel_slides_per_view_tablet: number = 2.5;\n @Input() carousel_slides_per_view_mobile: number = 1.25;\n @Input() text_for_left_arrow: string = 'previous slide';\n @Input() text_for_right_arrow: string = 'next slide';\n\n @Input() carousel_rows_per_row_mobile: 1 | 2 = 1; // Required for CATEGORY_CARD experiment. Remove if experiment fails.\n\n @Input() carousel_loading: 'lazy' | 'eager' = 'lazy'; // If we don't have multiple carousels on page and want to prioritise UI loading on time\n @Input() carousel_free_mode: boolean = false; // Enables scrolling with mousewheel / smoother momentum swiping experience\n @Input() center_insufficient_slides: boolean = true; // Centers the slides if there are not enough to fill the space\n @Input() center_active_slide: boolean = false; // Centers the active slide\n @Input() start_slide: number = 0; // Start slide index\n @Input() offset_scrollbar_top: boolean = false; // Offset the scrollbar to the top of the carousel\n\n @Output() activeIndexOnSlideChange = new EventEmitter<number>();\n\n constructor(\n private tokenService: TokenService,\n @Inject(DOCUMENT) private document: Document,\n private element: ElementRef,\n ) {\n inject(SWIPER_PROVIDER_TOKEN).ensureSwiperRegistered();\n }\n\n ngOnInit(): void {\n if (this.carousel_loading === 'lazy') {\n this.setUpIntersectionObserver();\n } else {\n this.initSwiper();\n }\n }\n\n /**\n * Set up the intersection observer with the relevant options\n */\n setUpIntersectionObserver(): void {\n // Set IntersectionObserver options\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: 0.5,\n once: true,\n };\n // Set up the IntersectionObserver\n const observer = new IntersectionObserver(this.onIntersection.bind(this), options);\n observer.observe(this.element.nativeElement);\n }\n\n /**\n * This function gets called just before the user scrolls this component into view\n * @param entries - An array of interswection observer entries\n * @param observer - Intersection observer\n */\n onIntersection(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void {\n entries.forEach((entry): void => {\n if (entry.isIntersecting) {\n // Initialise swiper\n this.initSwiper();\n observer.unobserve(entry.target);\n }\n });\n }\n\n getStyle(element: HTMLElement, style: string): string {\n return this.document.defaultView.getComputedStyle(element, null).getPropertyValue(style);\n }\n\n /**\n * Set the scrollbar placement and width based on carouselscrollbarplaceholder and carouselctastack\n */\n setupScrollbarLayoutProperties(): void {\n if (this.carousel_pagination === 'none') {\n return;\n }\n\n const carouselStack: HTMLElement = this.carouselctastack?.nativeElement;\n const scrollbarElement: HTMLElement = this.carouselscrollbarplaceholder?.nativeElement;\n\n const scrollbarHeight = this.document.defaultView\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--swiper-scrollbar-size');\n\n if (carouselStack && this.carousel_pagination === 'scroll-arrows') {\n this.element?.nativeElement?.style?.setProperty(\n '--ui-carousel-scrollbar-width',\n `${scrollbarElement?.offsetWidth - parseInt(this.getStyle(carouselStack, 'gap'), 10)}px`,\n );\n\n this.element?.nativeElement?.style?.setProperty(\n '--ui-carousel-scrollbar-offset-top',\n `${parseInt(this.getStyle(carouselStack, 'gap'), 10) + scrollbarElement?.offsetHeight / 2 + parseInt(scrollbarHeight, 10) / 2}px`,\n );\n\n this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-height', '2px');\n }\n\n if (carouselStack && this.carousel_pagination === 'scroll-bar') {\n this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-width', '100%');\n\n this.element?.nativeElement?.style?.setProperty(\n '--ui-carousel-scrollbar-offset-top',\n `${this.offset_scrollbar_top ? parseInt(this.getStyle(carouselStack, 'gap'), 10) + 'px' : '0px'}`,\n );\n\n this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-height', '4px');\n\n this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-left', '0px');\n }\n }\n\n /**\n * Set the dynamic swiper params and initialise the swiper instance\n */\n // eslint-disable-next-line complexity\n initSwiper(): void {\n // Colour overides\n const scrollbarBackgroundColour = this.tokenService.getTokenValue(\n '--oasys-color-linen-grey-200',\n );\n const scrollbarSliderColour = this.tokenService.getTokenValue(\n '--oasys-color-brand-foreground-primary',\n );\n\n // swiper element\n const swiperEl = this.swiper.nativeElement;\n\n const carouselGap = this.tokenService.getTokenValue(`--oasys-spacing-${this.carousel_gap}`);\n\n // swiper parameters\n const swiperParams: SwiperOptions = {\n rewind: this.rewind,\n grabCursor: true,\n spaceBetween: parseInt(carouselGap.replace('.', ''), 10) || 0,\n centeredSlides: this.center_active_slide,\n initialSlide: this.start_slide,\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n centerInsufficientSlides: this.center_insufficient_slides,\n freeMode: this.carousel_free_mode\n ? {\n enabled: true,\n sticky: true,\n momentumVelocityRatio: 0.75,\n momentumRatio: 0.75,\n }\n : false,\n mousewheel: this.carousel_free_mode\n ? {\n forceToAxis: true,\n }\n : false,\n injectStyles: [\n `\n .swiper {\n overflow: ${this.carousel_overflow ? 'visible' : 'hidden'} !important;\n }\n\n .swiper-scrollbar.swiper-scrollbar-horizontal {\n position: relative;\n top: var(--ui-carousel-scrollbar-offset-top);\n width: var(--ui-carousel-scrollbar-width);\n height: var(--ui-carousel-scrollbar-height);\n left: ${this.carousel_pagination === 'scroll-bar' ? 'var(--ui-carousel-scrollbar-left)' : '1%'};\n background: ${scrollbarBackgroundColour}\n }\n\n .swiper-scrollbar-drag {\n background: ${scrollbarSliderColour}\n }`,\n ],\n breakpoints: {\n 0: {\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' ||\n this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n slidesPerView: this.carousel_slides_per_view_mobile,\n grid: {\n rows: this.carousel_rows_per_row_mobile,\n fill: 'row',\n },\n },\n 767: {\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' ||\n this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n slidesPerView: this.carousel_slides_per_view_tablet,\n },\n 1080: {\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' ||\n this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n slidesPerView: this.carousel_slides_per_view_laptop,\n },\n 1440: {\n scrollbar: {\n enabled:\n this.carousel_pagination === 'scroll-arrows' ||\n this.carousel_pagination === 'scroll-bar',\n draggable: true,\n },\n slidesPerView: this.carousel_slides_per_view_desktop,\n },\n },\n on: {\n slideChange: this.onSlideChange.bind(this),\n },\n };\n\n // now we need to assign all parameters to the Swiper element\n Object.assign(swiperEl, swiperParams);\n\n // and now initialize it\n swiperEl.initialize();\n\n // Set up scrollbar and ensure this is recalculated on resize events\n this.setupScrollbarLayoutProperties();\n\n swiperEl.addEventListener('resize', (): void => {\n this.setupScrollbarLayoutProperties();\n });\n }\n\n /**\n * Move the carousel on to the next slide\n */\n nextSlide(): void {\n this.swiper.nativeElement.swiper.slideNext();\n }\n\n /**\n * Move the carousel back to the previous slide\n */\n previousSlide(): void {\n this.swiper.nativeElement.swiper.slidePrev();\n }\n\n /**\n * Emit event when the slide changes\n * @param swiper\n */\n onSlideChange(swiper: Swiper): void {\n this.activeIndexOnSlideChange.emit(swiper.activeIndex);\n }\n}\n","<ui-box\n class=\"ui-carousel\"\n [ngClass]=\"{ 'ui-carousel-overflow': carousel_overflow }\"\n box_align_y=\"center\"\n box_space=\"none\"\n [box_content_fill_width]=\"true\"\n box_background=\"transparent\"\n>\n <ui-stack #carouselctastack>\n <!-- Custom navigation buttons -->\n <ui-stack\n *ngIf=\"carousel_pagination === 'small-arrows'\"\n stack_direction=\"x\"\n stack_align=\"center\"\n stack_distribute=\"end\"\n >\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n box_space_bottom=\"none\"\n [box_space_right]=\"{ mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none' }\"\n box_background=\"transparent\"\n >\n <div\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n class=\"ui-carousel__small-arrows\"\n >\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"small\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"tertiary\"\n [aria_label]=\"text_for_left_arrow\"\n (clicked)=\"previousSlide()\"\n >\n Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"small\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"tertiary\"\n [aria_label]=\"text_for_right_arrow\"\n (clicked)=\"nextSlide()\"\n >\n Next slide\n </ui-button>\n </div>\n </ui-box>\n </ui-stack>\n\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\"\n >\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack\n stack_direction=\"x\"\n stack_align=\"center\"\n *ngIf=\"carousel_pagination === 'scroll-arrows' || carousel_pagination === 'scroll-bar'\"\n >\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n *ngIf=\"carousel_pagination === 'scroll-arrows'\"\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{ mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none' }\"\n box_background=\"transparent\"\n >\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\"\n >\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n [aria_label]=\"text_for_left_arrow\"\n (clicked)=\"previousSlide()\"\n >\n Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n [aria_label]=\"text_for_right_arrow\"\n (clicked)=\"nextSlide()\"\n >\n Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { CarouselComponent } from './carousel.component';\n\n@NgModule({\n imports: [CarouselComponent],\n exports: [CarouselComponent],\n})\nexport class OasysCarouselModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { TextTransform } from './text';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ui-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass],\n})\nexport class TextComponent implements OnInit {\n @Input() textAlign: 'left' | 'center' | 'right' = 'left';\n @Input() textWeight: 'normal' | 'medium' | 'bold' = 'normal';\n @Input() textTransform: TextTransform = 'none';\n\n uiTextClasses!: string;\n\n ngOnInit(): void {\n this.uiTextClasses = [\n `ui-text--align-${this.textAlign}`,\n `ui-text--weight-${this.textWeight}`,\n `ui-text--transform-${this.textTransform}`,\n ].join(' ');\n }\n}\n","<span class=\"ui-text\" [ngClass]=\"uiTextClasses\"><ng-content></ng-content></span>\n","import { NgModule } from '@angular/core';\nimport { TextComponent } from './text.component';\n\n@NgModule({\n imports: [TextComponent],\n exports: [TextComponent],\n})\nexport class OasysTextModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { LayoutBackgrounds, LayoutBackgroundsDeprecated } from '../layout/Layout';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutGridComponent } from '../layout/grid/grid.component';\nimport { LayoutGridColumnComponent } from '../layout/grid/grid-column.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { NgIf } from '@angular/common';\nimport { OasysHeadingComponent } from '../heading/heading.component';\nimport { OasysButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'ui-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n LayoutGridComponent,\n LayoutGridColumnComponent,\n LayoutStackComponent,\n NgIf,\n OasysHeadingComponent,\n OasysButtonComponent,\n ],\n providers: [TokenService],\n})\nexport class BannerComponent implements OnInit {\n // Design token variables;\n public mobilePadding: string;\n\n @Input() background_colour: LayoutBackgrounds | LayoutBackgroundsDeprecated = 'highlight';\n @Input() cta_text: string;\n @Input() banner_title: string;\n @Input() banner_surtitle: string;\n @Input() banner_subtitle: string;\n\n // CTA actions\n @Input() cta_link: string;\n @Output() cta_clicked: EventEmitter<void> = new EventEmitter();\n\n constructor(private tokenService: TokenService) {}\n\n ngOnInit(): void {\n this.mobilePadding = this.tokenService.getTokenValue('--oasys-component-banner-spacing-mobile');\n }\n\n onCtaClicked(): void {\n this.cta_clicked.emit();\n }\n}\n","<ui-box\n [box_background]=\"background_colour\"\n box_space_left=\"none\"\n box_space_right=\"none\"\n box_fill_mode=\"fill\"\n box_align_x=\"center\"\n class=\"ui-banner\"\n #bannerbox\n>\n <ui-grid grid_collapse_below=\"tablet\">\n <ui-column\n [columns]=\"{ mobile: 12, tablet: 10, laptop: 8, desktop: 8 }\"\n [column_inset]=\"{ mobile: 0, tablet: 1, laptop: 2, desktop: 2 }\"\n class=\"ui-banner__content\"\n >\n <ui-box\n [box_space]=\"{ mobile: mobilePadding, tablet: 'none' }\"\n box_space_top=\"none\"\n box_space_bottom=\"none\"\n box_background=\"transparent\"\n >\n <ui-stack\n class=\"content__stack\"\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_gap=\"near\"\n stack_collapse_below=\"tablet\"\n >\n <ui-stack\n class=\"content__stack\"\n stack_direction=\"x\"\n stack_align=\"center\"\n stack_gap=\"near\"\n >\n <!-- This is a stack as the icon will go here above the ui-heading -->\n <ui-heading\n *ngIf=\"banner_title || banner_surtitle || banner_subtitle\"\n heading_type=\"functional-primary\"\n [heading_title]=\"banner_title\"\n [heading_surtitle]=\"banner_surtitle\"\n [heading_subtitle]=\"banner_subtitle\"\n >\n </ui-heading>\n </ui-stack>\n <ui-button\n *ngIf=\"cta_text\"\n bwtrackas=\"oasys.hva-banner.cta\"\n button_size=\"large\"\n [button_type]=\"bannerbox.backgroundIsDark ? 'primary-inverse' : 'primary'\"\n [href]=\"cta_link\"\n (clicked)=\"onCtaClicked()\"\n >\n <span>{{ cta_text }}</span>\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-column>\n </ui-grid>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { BannerComponent } from './banner.component';\n\n@NgModule({\n imports: [BannerComponent],\n exports: [BannerComponent],\n})\nexport class OasysBannerModule {}\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { PillTone } from './pill';\n\n@Component({\n selector: 'ui-pill',\n templateUrl: './pill.component.html',\n styleUrls: ['./pill.component.scss'],\n standalone: true,\n host: {\n '[class]': '\"ui-pill-\" + tone',\n },\n})\nexport class OasysPillComponent {\n @Input() tone: PillTone = 'neutral';\n @Input() pill_role?: string | undefined = 'none';\n\n @HostBinding('attr.role') role: string | undefined = this.pill_role;\n}\n","<div role=\"status\" class=\"text-body--supporting text-body--emphasis\"><ng-content></ng-content></div>\n","import { NgModule } from '@angular/core';\nimport { OasysPillComponent } from './pill.component';\n\n@NgModule({\n imports: [OasysPillComponent],\n exports: [OasysPillComponent],\n})\nexport class OasysPillModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint.service';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\n\n@Component({\n selector: 'ui-pill-group',\n templateUrl: './pill-group.component.html',\n styleUrls: ['./pill-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [LayoutStackComponent],\n})\nexport class OasysPillGroupComponent {\n @Input() pill_group_align: 'start' | 'center' | 'end' = 'start';\n @Input() pill_group_collapse_below: 'tablet' | 'laptop' | 'desktop' | 'none' = 'tablet';\n\n constructor(private breakpointService: BreakpointService) {}\n\n get shouldCollapse(): boolean {\n switch (this.pill_group_collapse_below) {\n case 'tablet':\n return this.breakpointService.currentSize.value === Breakpoint.MOBILE;\n case 'laptop':\n return (\n this.breakpointService.currentSize.value === Breakpoint.MOBILE ||\n this.breakpointService.currentSize.value === Breakpoint.TABLET\n );\n case 'desktop':\n return (\n this.breakpointService.currentSize.value === Breakpoint.MOBILE ||\n this.breakpointService.currentSize.value === Breakpoint.TABLET ||\n this.breakpointService.currentSize.value === Breakpoint.LAPTOP\n );\n default:\n return false;\n }\n }\n}\n","<ui-stack\n stack_gap=\"near\"\n stack_direction=\"x\"\n [stack_collapse_below]=\"pill_group_collapse_below\"\n [stack_distribute]=\"pill_group_align\"\n [stack_wrap]=\"true\"\n [stack_as_list]=\"true\"\n>\n <ng-content></ng-content>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { OasysPillGroupComponent } from './pill-group.component';\n\n@NgModule({\n imports: [OasysPillGroupComponent],\n exports: [OasysPillGroupComponent],\n})\nexport class OasysPillGroupModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { LayoutAlignment, LayoutGapSizes } from '../layout';\nimport { ImageAspectRatio } from '../image/image';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { NgStyle, NgClass } from '@angular/common';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { ImageComponent } from '../image/image.component';\nimport { OasysHrefDirective } from '../../directives/href/href.directive';\n\nexport type PromoCardLayout = 'default' | 'compact';\n\nconst PROMO_CARD_LAYOUTS: Record<\n PromoCardLayout,\n {\n headingType: string;\n bodyType: string;\n spacing: LayoutGapSizes;\n }\n> = {\n default: {\n headingType: 'secondary',\n bodyType: 'body-default',\n spacing: 'default',\n },\n compact: {\n headingType: 'body-expressive',\n bodyType: 'body-supporting',\n spacing: 'near',\n },\n};\n\n@Component({\n selector: 'ui-promo-card',\n templateUrl: './promo-card.component.html',\n styleUrls: ['./promo-card.component.scss'],\n standalone: true,\n imports: [\n LayoutBoxComponent,\n NgStyle,\n LayoutStackComponent,\n ImageComponent,\n NgClass,\n OasysHrefDirective,\n ],\n providers: [TokenService],\n})\nexport class PromoCardComponent implements OnInit {\n // Image\n @Input() image: string;\n @Input() alt_text: string;\n\n // Content\n @Input() title: string;\n @Input() subtitle: string;\n\n // CTAs\n @Input() primary_cta_text: string;\n @Input() href_primary_cta: string = '';\n\n // Style\n @Input() background_colour: string;\n @Input() font_colour: string;\n\n // Layout\n @Input() layout: PromoCardLayout = 'default';\n\n @Output() cta_clicked: EventEmitter<void> = new EventEmitter();\n\n aspectRatio: ImageAspectRatio;\n alignment: LayoutAlignment;\n layoutConfig = PROMO_CARD_LAYOUTS['default'];\n\n constructor(private tokenService: TokenService) {}\n\n ngOnInit(): void {\n this.layoutConfig = PROMO_CARD_LAYOUTS[this.layout] ?? PROMO_CARD_LAYOUTS['default'];\n this.aspectRatio = this.tokenService.getTokenValue(\n '--oasys-component-promo-card-image-aspect-ratio',\n ) as ImageAspectRatio;\n this.alignment = this.tokenService.getTokenValue(\n '--oasys-component-promo-card-heading-alignment',\n ) as LayoutAlignment;\n }\n\n ctaClicked(): void {\n this.cta_clicked.emit();\n }\n}\n","<ui-box box_space=\"none\" [ngStyle]=\"{ 'background-color': background_colour, color: font_colour }\">\n <ui-stack [stack_gap]=\"layoutConfig.spacing\" stack_align=\"center\">\n <ui-box box_space=\"none\">\n <ui-image\n [image_fill]=\"true\"\n [image_src]=\"image\"\n [image_alt_text]=\"alt_text\"\n [preload_aspect_ratio]=\"aspectRatio\"\n ></ui-image>\n </ui-box>\n <ui-box\n [box_align_y]=\"alignment\"\n box_space_top=\"none\"\n [box_space]=\"layoutConfig.spacing\"\n [ngStyle]=\"{ 'background-color': background_colour }\"\n >\n <ui-stack stack_gap=\"near\" stack_distribute=\"center\" [stack_align]=\"alignment\">\n <h3\n [ngClass]=\"{\n 'text-heading--body--expressive': layoutConfig.headingType === 'body-expressive',\n 'text-heading--secondary': layoutConfig.headingType === 'secondary',\n }\"\n role=\"heading\"\n class=\"seo-h2\"\n >\n <span class=\"heading-title text-heading\">{{ title }}</span>\n </h3>\n <p\n [ngClass]=\"{\n 'text-body--default': layoutConfig.bodyType === 'body-default',\n 'text-body--supporting': layoutConfig.bodyType === 'body-supporting',\n }\"\n >\n {{ subtitle }}\n </p>\n <a\n class=\"text-link text-link--standalone\"\n bwtrackas=\"component.modular-content-card.cta\"\n href=\"{{ href_primary_cta }}\"\n (click)=\"ctaClicked()\"\n >{{ primary_cta_text }}</a\n >\n </ui-stack>\n </ui-box>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { PromoCardComponent } from './promo-card.component';\n\n@NgModule({\n imports: [PromoCardComponent],\n exports: [PromoCardComponent],\n})\nexport class OasysPromoCardModule {}\n","import { NgClass, NgIf } from '@angular/common';\nimport { Component, ElementRef, HostBinding, Input, OnInit } from '@angular/core';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\n\n@Component({\n selector: 'ui-price',\n templateUrl: './price.component.html',\n styleUrls: ['./price.component.scss'],\n standalone: true,\n imports: [NgClass, LayoutStackComponent, NgIf],\n})\nexport class OasysPriceComponent {\n @HostBinding('class') get class() {\n return `\n ${this.price_type === 'hero' ? 'text-body--hero' : ''}\n ${this.price_type === 'primary' ? 'text-body--default' : ''}\n ${this.price_type === 'supporting' ? 'text-body--supporting' : ''}\n `;\n }\n\n @Input() price: string;\n @Input() price_before_discount?: string;\n\n @Input() price_type: 'hero' | 'primary' | 'supporting' = 'primary';\n}\n","<div class=\"ui-price\" [ngClass]=\"price_type\">\n <ui-stack\n stack_direction=\"x\"\n stack_gap=\"near\"\n stack_align=\"center\"\n [ngClass]=\"{ 'oasys-price-has-discount': price_before_discount }\"\n >\n <div [attr.aria-hidden]=\"true\" *ngIf=\"price_before_discount\" class=\"text-body--line-through\">\n {{ price_before_discount }}\n </div>\n <div itemprop=\"price\" class=\"price-to-pay\">{{ price }}</div>\n </ui-stack>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { TokenService } from '../../services/token.service';\nimport { NgClass, NgStyle, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { ImageComponent } from '../image/image.component';\nimport { OasysPriceComponent } from '../price/price.component';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type ISelectCardType = 'product-card' | 'gift-card';\n\n@Component({\n selector: 'ui-select-card',\n templateUrl: './select-card.component.html',\n styleUrls: ['./select-card.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n NgClass,\n LayoutBoxComponent,\n LayoutStackComponent,\n NgStyle,\n NgIf,\n ImageComponent,\n NgTemplateOutlet,\n OasysPriceComponent,\n IconComponent,\n ],\n providers: [TokenService],\n})\nexport class SelectCardComponent implements OnInit {\n // Image\n @Input() image?: string;\n @Input() alt_text?: string = '';\n @Input() image_format: string;\n\n // Content\n @Input() title: string;\n @Input() primary_copy: string;\n @Input() secondary_copy: string;\n @Input() price: string;\n @Input() price_before_discount: string;\n @Input() selected = false;\n @Input() select_card_type: ISelectCardType = 'gift-card';\n\n @Output() clicked = new EventEmitter<void>();\n\n aspectRatio: string;\n alignment: string;\n\n constructor(private tokenService: TokenService) {}\n\n ngOnInit(): void {\n if (!this.image) {\n return;\n }\n\n this.aspectRatio = this.setImageAspectRatio(this.image_format);\n }\n\n onClick(): void {\n this.clicked.emit();\n }\n\n /**\n *\n * @param format\n * @returns\n */\n setImageAspectRatio(format: string): string {\n switch (format) {\n case 'square':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-square');\n case 'portrait':\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-portrait');\n default:\n return this.tokenService.getTokenValue('--oasys-component-card-aspect-ratio-portrait');\n }\n }\n}\n","<button\n role=\"button\"\n class=\"ui-select-card--{{ select_card_type }}\"\n tabindex=\"0\"\n [ngClass]=\"{ selected: selected }\"\n [attr.aria-pressed]=\"selected ? 'true' : 'false'\"\n (click)=\"onClick()\"\n>\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <ui-stack stack_gap=\"none\" stack_align=\"center\">\n <ui-box\n class=\"ui-select-card__image\"\n [ngStyle]=\"{ 'aspect-ratio': aspectRatio }\"\n box_background=\"transparent\"\n box_align_x=\"center\"\n box_space=\"none\"\n >\n <ui-image\n *ngIf=\"image\"\n [image_src]=\"image\"\n [image_alt_text]=\"alt_text\"\n [image_fill]=\"true\"\n ></ui-image>\n <ng-content></ng-content>\n </ui-box>\n <ng-template\n *ngIf=\"select_card_type === 'gift-card'\"\n [ngTemplateOutlet]=\"giftcard\"\n ></ng-template>\n <ng-template\n *ngIf=\"select_card_type === 'product-card'\"\n [ngTemplateOutlet]=\"productcard\"\n ></ng-template>\n </ui-stack>\n </ui-box>\n</button>\n\n<!--- GIFT CARD TEMPLATE -->\n<ng-template #giftcard>\n <ui-box box_space=\"tight\" box_background=\"transparent\">\n <ui-stack class=\"ui-select-card__text-stack\" stack_direction=\"y\" stack_gap=\"tight\">\n <span class=\"ui-select-card__text-body text-label--primary\">{{ title }}</span>\n\n <ui-price\n [price]=\"price\"\n [price_before_discount]=\"price_before_discount\"\n price_type=\"primary\"\n ></ui-price>\n </ui-stack>\n </ui-box>\n</ng-template>\n\n<!--- PRODUCT CARD TEMPLATE -->\n<ng-template #productcard>\n <ui-box box_fill_mode=\"fit\" box_space=\"near\" box_background=\"transparent\">\n <ui-stack stack_direction=\"y\" stack_gap=\"near\">\n <ui-stack class=\"ui-select-card__text-stack\" stack_direction=\"y\" stack_gap=\"none\">\n <h5>{{ title }}</h5>\n <ui-stack stack_direction=\"x\" stack_gap=\"near\" stack_align=\"center\">\n <ui-price\n [price]=\"price\"\n [price_before_discount]=\"price_before_discount\"\n price_type=\"hero\"\n ></ui-price>\n <ui-icon\n *ngIf=\"price_before_discount\"\n class=\"ui-select-card--product-card__discount-icon\"\n icon_name=\"tag\"\n icon_size_override=\"1.5\"\n ></ui-icon>\n </ui-stack>\n </ui-stack>\n <ui-stack stack_gap=\"near\">\n <p class=\"text-body--supporting\">{{ secondary_copy }}</p>\n <p class=\"text-body--default\">{{ primary_copy }}</p>\n </ui-stack>\n </ui-stack>\n </ui-box>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { SelectCardComponent } from './select-card.component';\n\n@NgModule({\n imports: [SelectCardComponent],\n exports: [SelectCardComponent],\n})\nexport class OasysSelectCardModule {}\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[ui-emphasis]',\n standalone: true,\n})\nexport class EmphasisDirective implements OnChanges {\n @Input() searchText: string = '';\n @Input() displayParagraph: string = '';\n\n constructor(private element: ElementRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['searchText'] || changes['displayParagraph']) {\n this.boldsearchText();\n }\n }\n\n private boldsearchText() {\n if (!this.searchText || !this.displayParagraph) {\n this.element.nativeElement.innerHTML = this.displayParagraph;\n return;\n }\n\n const regex = new RegExp(`${this.searchText}`, 'gi');\n const emphasisText = this.displayParagraph.replace(\n regex,\n (match) => `<span class=\"text-body--emphasis\">${match}</span>`,\n );\n this.element.nativeElement.innerHTML = emphasisText;\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n forwardRef,\n ElementRef,\n Inject,\n AfterViewInit,\n ViewChild,\n QueryList,\n ViewChildren,\n OnChanges,\n SimpleChanges,\n HostListener,\n signal,\n DOCUMENT\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n FormsModule,\n} from '@angular/forms';\nimport { ComboboxOption, ComboboxType } from './combobox';\nimport { LayoutStackComponent } from '../../layout/stack/stack.component';\nimport { LayoutBoxComponent } from '../../layout/box/box.component';\nimport { OasysAutofocusDirective } from '../../../directives/autofocus/autofocus.directive';\nimport { IconComponent } from '../../icon/icon.component';\nimport { EmphasisDirective } from '../../../directives/emphasis/emphasis.directive';\nimport { OasysButtonComponent } from '../../button';\n\n@Component({\n selector: 'ui-combobox',\n templateUrl: './combobox.component.html',\n styleUrls: ['./combobox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboboxComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [\n LayoutStackComponent,\n LayoutBoxComponent,\n ReactiveFormsModule,\n FormsModule,\n NgClass,\n OasysAutofocusDirective,\n IconComponent,\n EmphasisDirective,\n OasysButtonComponent,\n ],\n})\nexport class ComboboxComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {\n @Input() label!: string;\n @Input() type: ComboboxType = 'options';\n @Input() options: ComboboxOption[] = [];\n @Input() optional = true;\n\n @Input({ required: false }) hint?: string;\n @Input({ required: false }) header?: string;\n @Input({ required: false }) footer?: string;\n @Input({ required: false }) autofocus = false;\n @Input({ required: false }) disabled = false;\n @Input({ required: false }) selected?: ComboboxOption;\n // Key value from options to be displayed as option label\n @Input({ required: false }) displayKey?: string;\n // Key value from options to be used as icon in option label\n @Input({ required: false }) iconNameKey?: string;\n // Key value from options be be value\n @Input({ required: false }) valueKey?: string;\n // Available for Autocomplete\n @Input({ required: false }) subtextKey?: string;\n @Input({ required: false }) placeholder?: string;\n // Will open the list of options on init\n @Input({ required: false }) showOptions = false;\n\n @Output() didChange: EventEmitter<unknown> = new EventEmitter<unknown>();\n @Output() didSearch: EventEmitter<unknown> = new EventEmitter<unknown>();\n @Output() didEdit: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n textValue = '';\n inputDidChange = false; // only show valdiation after a change event (ie. blur)\n displayOptions: ComboboxOption[] = [];\n private _selectedOption?: ComboboxOption;\n private _focusedOption?: ComboboxOption;\n private _focusedOptionId = 0;\n\n private textInputClicked = false;\n\n id!: string;\n\n /** Whether or not the overlay panel is open. */\n panelOpen = signal(false);\n\n private openedViaKeyboard = false;\n\n /**\n * Selected option\n */\n get selectedOption(): ComboboxOption | undefined {\n return this._selectedOption;\n }\n\n /**\n * Focused Option\n */\n get focusedOption(): ComboboxOption | undefined {\n return this._focusedOption;\n }\n\n /**\n * Return the id of the focused option\n */\n get focusedId(): number {\n return this._focusedOptionId;\n }\n\n get shouldShowFocus(): boolean {\n return this.openedViaKeyboard && this.panelOpen();\n }\n\n get valueOptionKey(): string {\n return this.valueKey ?? 'value';\n }\n\n get displayOptionKey(): string {\n return this.displayKey ?? 'label';\n }\n\n get subtextOptionKey(): string {\n return this.subtextKey ?? 'subtext';\n }\n\n @ViewChild('textinput', { read: ElementRef })\n textInput?: ElementRef<HTMLElement>;\n\n @ViewChild('combobox', { read: ElementRef })\n combobox?: ElementRef<HTMLElement>;\n\n @ViewChildren('option') optionsList?: QueryList<ElementRef<HTMLElement>>;\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n onChange = (_: unknown): void => {}; // eslint-disable-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n onTouched = (): void => {}; // eslint-disable-line @typescript-eslint/no-empty-function\n\n @HostListener('document:click', ['$event.target'])\n\n /**\n * Click outside combobox close the panel\n */\n public onClick(targetElement: Node): void {\n if (this.panelOpen() && this.combobox?.nativeElement) {\n const clickedInside = this.combobox.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.closePanel();\n this.textInputClicked = false;\n }\n }\n }\n\n /**\n * On Change\n * @param changes\n */\n ngOnChanges(changes: SimpleChanges): void {\n // Detects if the autocomplete options list is chnaged after a selection of an option.\n // Example: Address search can have options assigned to a group of options. One postcode to have x number of addreses\n // If Options list is Changed as part of group option we let the options panel open to let user select a single option. This is considered as change input value(similar with type value)\n if (this.type === 'autocomplete') {\n const optionchanges = changes['options'];\n if (\n optionchanges.currentValue !== optionchanges.previousValue &&\n this.options.length !== 0 &&\n !optionchanges.firstChange\n ) {\n this.resetOptionsList();\n this.openPanelWithoutSelectingOption();\n }\n }\n }\n\n /**\n * On Init\n */\n ngOnInit(): void {\n this.id = `${this.label}${Math.random()}`;\n this.resetSelection();\n this.resetOptionsList();\n\n if (\n this.selected &&\n typeof this.selected === 'object' &&\n this.valueOptionKey in this.selected\n ) {\n const selectedValue = (this.selected as unknown as Record<string, unknown>)[\n this.valueOptionKey\n ];\n const selectedIndex = this.options.findIndex((option: ComboboxOption | undefined) => {\n if (option && typeof option === 'object' && this.valueOptionKey in option) {\n return (\n (option as unknown as Record<string, unknown>)[this.valueOptionKey] === selectedValue\n );\n }\n return false;\n });\n if (selectedIndex >= 0) {\n this.selectOption(this.options[selectedIndex], selectedIndex);\n this.closePanel();\n }\n }\n if (this.showOptions) {\n this.openPanelWithoutSelectingOption();\n }\n }\n\n /**\n * After View Init\n */\n ngAfterViewInit(): void {\n this.setupValidationListener();\n }\n\n /**\n * Select Option\n * @param option\n */\n public selectOption(option?: ComboboxOption, index?: number): void {\n this._selectedOption = option;\n this._focusedOptionId = index ?? 0;\n this._focusedOption = option;\n if (option && typeof option === 'object' && this.displayOptionKey in option) {\n this.textValue = (option as unknown as Record<string, unknown>)[\n this.displayOptionKey\n ] as string;\n }\n\n this.onChange(this.textValue);\n this.didChange.emit(this.selectedOption);\n this.onTouched();\n }\n\n /**\n * On Key Navigation\n * @param event\n */\n public onKeyDown(event: KeyboardEvent): void {\n // For 'options' type, keyboard navigation is handled by the combobox container\n // For 'autocomplete' type, keyboard navigation is handled by the input element\n\n const isOptionsType = this.type === 'options';\n const isAutocompleteType = this.type === 'autocomplete';\n const isFromInput = event.target === this.textInput?.nativeElement;\n const isFromCombobox =\n event.target === this.combobox?.nativeElement ||\n this.combobox?.nativeElement.contains(event.target as Node);\n\n // Only handle keyboard navigation from appropriate elements\n if (isOptionsType && !isFromCombobox) {\n return;\n }\n if (isAutocompleteType && !isFromInput && !isFromCombobox) {\n return;\n }\n\n const isPanelOpen = this.panelOpen();\n const hasOptions = this.displayOptions.length > 0;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n event.stopPropagation();\n if (!isPanelOpen && hasOptions) {\n this.openPanelAndSelectOption();\n } else if (isPanelOpen && hasOptions) {\n this.openedViaKeyboard = true;\n this.navigateOptions('down');\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n event.stopPropagation();\n if (!isPanelOpen && hasOptions) {\n this.openPanelAndSelectOption();\n } else if (isPanelOpen && hasOptions) {\n this.openedViaKeyboard = true;\n this.navigateOptions('up');\n }\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n event.stopPropagation();\n if (!isPanelOpen && hasOptions && this.type === 'options') {\n this.openPanelAndSelectOption();\n } else if (!isPanelOpen && hasOptions && this.type === 'autocomplete') {\n this.openPanelWithoutSelectingOption();\n } else if (isPanelOpen) {\n this.pressEnter();\n this.closePanel();\n }\n break;\n\n case 'Escape':\n if (isPanelOpen) {\n event.preventDefault();\n event.stopPropagation();\n this.closePanel();\n } else {\n this.textValue = '';\n this.resetSelection();\n }\n break;\n\n case 'Tab':\n if (isPanelOpen) {\n this.pressEnter();\n this.closePanel();\n }\n break;\n }\n }\n\n /**\n * Toggle Options Panel\n */\n togglePanel(): void {\n this.openedViaKeyboard = false;\n this.panelOpen.set(!this.panelOpen());\n if (this.panelOpen()) {\n this.initSelectedFocus();\n setTimeout(() => {\n this.scrollFocusedOptionIntoView();\n }, 0);\n }\n }\n\n /**\n * Open Options Panel\n */\n openPanelWithoutSelectingOption(event?: Event): void {\n event?.preventDefault();\n if (!this.panelOpen()) {\n this.panelOpen.set(true);\n this._focusedOptionId = -1;\n setTimeout(() => {\n this.scrollFocusedOptionIntoView();\n }, 0);\n }\n }\n\n private openPanelAndSelectOption(): void {\n if (!this.panelOpen() && this.displayOptions.length > 0) {\n this.openedViaKeyboard = true;\n this.panelOpen.set(true);\n\n this.initSelectedFocus();\n\n if (this.combobox?.nativeElement) {\n this.combobox.nativeElement.focus();\n }\n\n setTimeout(() => {\n this.scrollFocusedOptionIntoView();\n }, 0);\n }\n }\n\n /**\n * Close Options Panel\n */\n closePanel(): void {\n this.panelOpen.set(false);\n this.openedViaKeyboard = false;\n this.initSelectedFocus();\n }\n\n /**\n * Get Input display value\n * @param textValue\n */\n writeValue(textValue: string): void {\n if ((this.selected && typeof textValue !== 'string') || textValue === '') {\n if (\n this._selectedOption &&\n typeof this._selectedOption === 'object' &&\n this.displayOptionKey in this._selectedOption\n ) {\n this.textValue = (this._selectedOption as unknown as Record<string, unknown>)[\n this.displayOptionKey\n ] as string;\n }\n } else {\n this.textValue = textValue;\n }\n }\n\n /**\n * Register Form input chnage\n * @param fn\n */\n registerOnChange(fn: (_: unknown) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Register form input touch\n * @param fn\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * On Model Change\n * @param textValue\n */\n onModelChange(textValue: string): void {\n this.textValue = textValue;\n this.inputDidChange = true;\n this.onChange(textValue);\n this.onTouched();\n this.didChange.emit(this.selectedOption);\n }\n\n /**\n * On Model Change\n * @param textValue\n */\n onModelChangeAutocomplete(textValue: string): void {\n this.textValue = textValue;\n this.inputDidChange = true;\n this.onChange(textValue);\n this.onTouched();\n this.didChange.emit(this.selectedOption);\n\n this.onAutocompleteListSearch(textValue);\n }\n\n /**\n * Event handling for Input value\n */\n handleEvent(): void {\n this.inputDidChange = true;\n\n const inputElement = this.document.getElementById(this.id.toString());\n inputElement?.removeEventListener('change', this);\n }\n\n /**\n * Clean Input\n */\n cleanInput(): void {\n this.textValue = '';\n this.resetSelection();\n this.resetOptionsList();\n this.closePanel();\n this.didSearch.emit(this.textValue);\n }\n\n /**\n * On footer action\n */\n onFooterAction(): void {\n this.didEdit.emit();\n }\n\n /**\n * On Focus Input\n */\n onFocusInput(): void {\n this.textInput?.nativeElement.focus();\n }\n\n onTextInputClick(): void {\n if (this.textInputClicked) {\n this.openPanelWithoutSelectingOption();\n } else {\n this.textInputClicked = true;\n }\n }\n\n onScreenReaderFocus(): void {\n const isPanelOpen = this.panelOpen();\n const hasOptions = this.displayOptions.length > 0;\n\n if (!isPanelOpen && hasOptions) {\n this.openPanelAndSelectOption();\n } else if (isPanelOpen) {\n this.pressEnter();\n this.closePanel();\n }\n }\n\n /**\n * Search in Autocomplete\n * @param textValue\n */\n private onAutocompleteListSearch(textValue: string): void {\n if (!textValue) {\n this.closePanel();\n this.resetSelection();\n } else {\n this.openPanelWithoutSelectingOption();\n this.displayOptions = this.options.filter((option: ComboboxOption) => {\n return (\n this.checkIncludesSubstring(option, this.displayOptionKey) ??\n this.checkIncludesSubstring(option, this.subtextOptionKey)\n );\n });\n if (this.displayOptions.length === 0) {\n this.closePanel();\n }\n }\n this.textInput?.nativeElement.focus();\n this.didSearch.emit(this.textValue);\n }\n\n /**\n * Check a susbtring is included in option value\n * @param option\n * @returns\n */\n private checkIncludesSubstring(option: ComboboxOption, key: string): unknown {\n return (option as unknown as Record<string, unknown>)[key]\n ?.toString()\n .toLowerCase()\n .includes(this.textValue.toLowerCase());\n }\n\n /**\n * Set Input Validators\n */\n private setupValidationListener(): void {\n const inputElement = this.document.getElementById(this.id.toString());\n inputElement?.addEventListener('change', this);\n }\n\n /**\n * Init focus mode or set the selected option as focused\n */\n private initSelectedFocus(): void {\n if (this.panelOpen() && this.displayOptions.length > 0) {\n if (this._selectedOption) {\n const selectedIndex = this.displayOptions.findIndex(\n (option) => option === this._selectedOption,\n );\n\n if (selectedIndex >= 0) {\n this._focusedOptionId = selectedIndex;\n this._focusedOption = this._selectedOption;\n return;\n }\n }\n\n this._focusedOptionId = 0;\n this._focusedOption = this.displayOptions[0];\n this.autocompleteOptionTextPreview();\n }\n }\n\n private navigateOptions(direction: 'up' | 'down'): void {\n if (this.displayOptions.length === 0) {\n return;\n }\n\n if (direction === 'down') {\n this._focusedOptionId = Math.min(this._focusedOptionId + 1, this.displayOptions.length - 1);\n } else {\n this._focusedOptionId = Math.max(this._focusedOptionId - 1, 0);\n }\n\n this._focusedOption = this.displayOptions[this._focusedOptionId];\n this.pressEnter();\n this.autocompleteOptionTextPreview();\n this.scrollFocusedOptionIntoView();\n }\n\n private scrollFocusedOptionIntoView(): void {\n if (\n this.optionsList &&\n this._focusedOptionId >= 0 &&\n this._focusedOptionId < this.displayOptions.length\n ) {\n const focusedElement = this.optionsList.get(this._focusedOptionId)?.nativeElement;\n if (focusedElement) {\n focusedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n }\n }\n\n /**\n * Change textValue to preview the option in autocomplete\n */\n private autocompleteOptionTextPreview(): void {\n if (\n this.type === 'autocomplete' &&\n this._focusedOption &&\n typeof this._focusedOption === 'object' &&\n this.displayOptionKey in this._focusedOption\n ) {\n this.textValue = (this._focusedOption as unknown as Record<string, unknown>)[\n this.displayOptionKey\n ] as string;\n }\n }\n\n /**\n * Press Enter inside Options Panel\n */\n private pressEnter(): void {\n if (\n this.panelOpen() &&\n this.displayOptions.length > 0 &&\n this._focusedOptionId >= 0 &&\n this._focusedOptionId < this.displayOptions.length\n ) {\n this.selectOption(this.displayOptions[this._focusedOptionId], this._focusedOptionId);\n }\n }\n\n /**\n * Reset selected option\n */\n private resetSelection(): void {\n this._selectedOption = undefined;\n this._focusedOption = undefined;\n this._focusedOptionId = 0;\n }\n\n /**\n * Reset to original or unfiltered option list\n */\n private resetOptionsList(): void {\n this.displayOptions = this.options;\n }\n}\n","<ui-stack class=\"ui-combobox-container\" stack_gap=\"tight\">\n <div class=\"ui-combobox text-body--default text-body--regular\">\n <!-- Compbobox Options Input -->\n @if (type === 'options') {\n <div\n #combobox\n name=\"combobox\"\n [tabindex]=\"disabled ? -1 : 0\"\n (keydown)=\"onKeyDown($event)\"\n (mousedown)=\"togglePanel()\"\n role=\"combobox\"\n id=\"activedescendent-edit\"\n [attr.aria-label]=\"label\"\n [attr.aria-activedescendant]=\"panelOpen() ? 'activedescendent-opt-' + focusedId : null\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-controls]=\"'activedescendent-list'\"\n [attr.disabled]=\"disabled || null\"\n aria-readonly=\"true\"\n aria-owns=\"activedescendent-list\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [class.keyboard-focus]=\"shouldShowFocus\"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n </div>\n <input\n #textinput\n (focus)=\"onScreenReaderFocus()\"\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"onModelChange(textValue)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'on'\"\n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"selectedOption\"\n [placeholder]=\"placeholder || ''\"\n readonly=\"readonly\"\n tabindex=\"-1\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n <!-- Select Icon Chevron Area -->\n <div class=\"icon-container\" [ngClass]=\"{ expand: panelOpen() }\">\n <ui-icon icon_name=\"chevron-down\"></ui-icon>\n </div>\n </ui-stack>\n </div>\n }\n <!-- Combobox Autocomplete Input -->\n @if (type === 'autocomplete') {\n <div\n #combobox\n name=\"combobox\"\n [tabindex]=\"disabled ? -1 : 0\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocusInput()\"\n role=\"combobox\"\n id=\"activedescendent-edit\"\n [attr.aria-label]=\"label\"\n [attr.aria-activedescendant]=\"panelOpen() ? 'activedescendent-opt-' + focusedId : null\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-controls]=\"'activedescendent-list'\"\n aria-readonly=\"true\"\n aria-owns=\"activedescendent-list\"\n aria-autocomplete=\"list\"\n [class.keyboard-focus]=\"shouldShowFocus\"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (click)=\"onTextInputClick()\"\n (ngModelChange)=\"onModelChangeAutocomplete($event)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'list'\"\n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"textValue\"\n [placeholder]=\"placeholder || ''\"\n role=\"combobox\"\n tabindex=\"-1\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n\n <!-- Combobox Icon Clear Area -->\n <div class=\"icon-container\" [attr.aria-label]=\"'clean'\" (click)=\"cleanInput()\">\n @if (textValue) {\n <ui-icon icon_name=\"close\"></ui-icon>\n }\n </div>\n </ui-stack>\n </div>\n }\n <!-- Combobox Options Panel -->\n @if (panelOpen()) {\n <div\n class=\"ui-combobox-options\"\n [ngClass]=\"{ expand: panelOpen(), 'keyboard-open': shouldShowFocus }\"\n role=\"listbox\"\n id=\"activedescendent-list\"\n >\n <!-- Autocomplete Options Panel Header -->\n @if (header && type === 'autocomplete') {\n <div class=\"ui-combobox-header text-body--supporting\">\n <span>{{ header }}</span>\n </div>\n }\n\n <!-- Options list -->\n @for (option of displayOptions; track option; let i = $index) {\n <div\n #option\n class=\"ui-combobox-option\"\n [ngClass]=\"{\n selected: selectedOption === option && (!shouldShowFocus || focusedOption === option),\n focus: shouldShowFocus && focusedOption === option,\n }\"\n (click)=\"selectOption(option, i)\"\n (keydown)=\"onKeyDown($event)\"\n [id]=\"'activedescendent-opt-' + i\"\n [attr.aria-selected]=\"selectedOption === option\"\n [attr.aria-label]=\"\n selectedOption === option\n ? option[displayOptionKey] + ' is selected'\n : option[displayOptionKey]\n \"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <!-- Option display -->\n <div\n [attr.value]=\"valueKey ? option[valueKey] : option.value\"\n [attr.ngValue]=\"displayKey ? option[displayKey] : option.label\"\n >\n <ui-stack stack_direction=\"x\" stack_align=\"center\" stack_gap=\"tight\">\n @if (option.icon_name || (iconNameKey && option[iconNameKey])) {\n <ui-icon\n [icon_name]=\"iconNameKey ? option[iconNameKey] : option.icon_name\"\n ></ui-icon>\n }\n <!-- Display options label -->\n @if (type === 'options') {\n <span>{{ option[displayOptionKey] }}</span>\n }\n\n <!-- Display autocomplete option information and emphasis-->\n @if (type === 'autocomplete') {\n <ui-stack stack_gap=\"tiny\">\n <span\n ui-emphasis\n [searchText]=\"textValue\"\n [displayParagraph]=\"option[displayOptionKey]\"\n >\n </span>\n <p class=\"foreground-secondary-text\">\n {{ option[subtextOptionKey] }}\n </p>\n </ui-stack>\n }\n </ui-stack>\n </div>\n\n <!-- Selected icon -->\n @if (selectedOption === option) {\n <ui-icon icon_name=\"tick\"></ui-icon>\n }\n </ui-stack>\n </div>\n }\n <!-- Autocomplete Options Panel Footer -->\n @if (footer && type === 'autocomplete') {\n <div class=\"ui-combobox-footer\">\n <ui-button button_type=\"tertiary\" (click)=\"onFooterAction()\">\n {{ footer }}\n </ui-button>\n </div>\n }\n </div>\n }\n </div>\n <ui-stack stack_gap=\"none\">\n <div class=\"input-errors\">\n <div class=\"input-errors-content\">\n <ng-content select=\"ui-form-errors\"></ng-content>\n </div>\n </div>\n @if (hint) {\n <ui-box\n class=\"hint-container\"\n box_background=\"transparent\"\n box_space=\"none\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"near\"\n >\n <div class=\"ui-text-input-hint text-body--supporting text-color--supporting\">\n {{ hint }}\n </div>\n </ui-box>\n }\n </ui-stack>\n</ui-stack>\n","import { NgModule } from '@angular/core';\nimport { ComboboxComponent } from './combobox.component';\n\n@NgModule({\n imports: [ComboboxComponent],\n exports: [ComboboxComponent],\n})\n/**\n * @ngModule OasysComboboxModule\n * @description\n *\n * A combo box is a text box with a list box attached.\n * This type of control enables users to select a predefined value in a list or type their own value in the text box portion of the control.\n *\n * @usageNotes\n *\n * @example of a Combobox Options type\n * <ui-combobox\n * formControlName=\"select\"\n * label=\"Label\"\n * [options]=\"[\n * {value:'option 1', label: '1 week'},\n * {value:'option 2', label: '2 weeks' },\n * {value:'option 3', label: '3 weeks'},\n * {value:'option 4', label: '4 weeks'} ]\"\n * hint=\"Hint!! Please select frequency\"\n * [selected]=\"{value:'option 3', label: '3 weeks' }\"\n * ></ui-combobox>\n *\n * Pug:\n * ui-combobox(\n * formControlName=\"select\"\n * label=\"Label\"\n * [options]=\"[\n * {value:'option 1', label: '1 week'},\n * {value:'option 2', label: '2 weeks' },\n * {value:'option 3', label: '3 weeks'},\n * {value:'option 4', label: '4 weeks'} ]\"\n * hint=\"Hint!! Please select frequency\"\n * [selected]=\"{value:'option 3', label: '3 weeks' }\")\n *\n *\n * @example of a Combobox Autocomplete type\n * <ui-combobox\n * formControlName=\"select\"\n * type=\"autocomplete\"\n * footer=\"Add manual an option\"\n * label=\"Label\"\n * [options]=\"[\n * {value:'option 1', label: '1 week'},\n * {value:'option 2', label: '2 weeks' },\n * {value:'option 3', label: '3 weeks'},\n * {value:'option 4', label: '4 weeks'} ]\"\n * hint=\"Hint!! Please select frequency\"\n * [selected]=\"{value:'option 3', label: '3 weeks' }\"\n * ></ui-combobox>\n *\n * Pug:\n * ui-combobox(\n * formControlName=\"select\"\n * type=\"autocomplete\"\n * footer=\"Add manual an option\"\n * label=\"Label\"\n * [options]=\"[\n * {value:'option 1', label: '1 week'},\n * {value:'option 2', label: '2 weeks' },\n * {value:'option 3', label: '3 weeks'},\n * {value:'option 4', label: '4 weeks'} ]\"\n * hint=\"Hint!! Please select frequency\"\n * [selected]=\"{value:'option 3', label: '3 weeks' }\")\n *\n * @OasysLib\n */\nexport class OasysComboboxModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { LayoutBackgrounds } from '../layout/Layout';\nimport { IconNames } from '../icon/icon';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\nimport { LayoutStackComponent } from '../layout/stack/stack.component';\nimport { NgIf } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\ninterface LabelType {\n type: 'free-delivery' | 'featured' | 'limited-edition' | 'rewards-bonus-points' | '';\n}\n\ntype TextStyle = 'bodySupporting' | 'bodyMicro' | '';\n\n@Component({\n selector: 'ui-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n standalone: true,\n imports: [LayoutBoxComponent, LayoutStackComponent, NgIf, IconComponent],\n})\nexport class LabelComponent implements OnInit {\n @Input() type: LabelType['type'] = '';\n @Input() text: string = '';\n @Input() textStyle: TextStyle = '';\n @Input() showIcon = true;\n @Input() iconOverride: IconNames;\n @Input() backgroundColorOverride: LayoutBackgrounds;\n\n backgroundColour: LayoutBackgrounds = 'tint-highlight';\n iconName: IconNames;\n labelStyle: LayoutBackgrounds;\n\n private readonly textStyleToFontSizeMap: Record<TextStyle, string> = {\n bodySupporting: 'text-body--supporting',\n bodyMicro: 'text-body--micro',\n '': 'text-body--supporting',\n };\n\n get fontSize(): string {\n return this.textStyleToFontSizeMap[this.textStyle as TextStyle] || 'text-body--supporting';\n }\n\n ngOnInit(): void {\n if (this.showIcon && this.iconOverride) {\n this.iconName = this.iconOverride;\n }\n\n switch (this.type) {\n case 'free-delivery':\n this.setLabelProperties('delivery');\n break;\n case 'featured':\n this.setLabelProperties('featured');\n break;\n case 'limited-edition':\n this.setLabelProperties('logomark');\n break;\n case 'rewards-bonus-points':\n this.setLabelProperties('rewards');\n break;\n default:\n this.backgroundColour = 'tint-highlight';\n }\n }\n\n private setLabelProperties(defaultIconName: string): void {\n this.labelStyle = this.backgroundColorOverride || (this.type as LayoutBackgrounds);\n this.iconName = this.iconName || (defaultIconName as IconNames);\n }\n}\n","<ui-box\n class=\"ui-label oasys-label-style-{{ labelStyle }}\"\n box_space=\"tiny\"\n box_space_left=\"tight\"\n box_space_right=\"tight\"\n box_fill_mode=\"fit\"\n [box_background]=\"backgroundColour\"\n>\n <ui-stack stack_direction=\"x\" stack_align=\"center\" stack_gap=\"tiny\">\n <ui-icon *ngIf=\"showIcon\" [icon_name]=\"iconName\" icon_size=\"small\"></ui-icon>\n <span [class]=\"fontSize\">{{ text }}</span>\n </ui-stack>\n</ui-box>\n","import { NgModule } from '@angular/core';\nimport { LabelComponent } from './label.component';\n\n@NgModule({\n imports: [LabelComponent],\n exports: [LabelComponent],\n})\nexport class OasysLabelModule {}\n","import {\n AfterContentInit,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n standalone: true,\n selector: 'ui-tab',\n template: '<ng-template #tabContent><ng-content></ng-content></ng-template>',\n})\nexport class OasysTabComponent implements AfterContentInit {\n @Input() tab_label = undefined;\n @Input() tab_active: boolean = false;\n @Output() clicked = new EventEmitter<void>();\n\n @ViewChild('tabContent', { static: true }) template!: TemplateRef<void>;\n\n ngAfterContentInit(): void {\n if (!this.template) {\n throw new Error(this.tab_label + ': <ui-tab> can`t be empty');\n }\n }\n}\n","import { Component, input, Input, TemplateRef } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'ui-tab-active',\n template:\n '<div role=\"tabpanel\"> <ng-template [ngTemplateOutlet]=\"templateRef()\"></ng-template></div>',\n})\nexport class OasysTabActiveComponent {\n templateRef = input<TemplateRef<void>>();\n}\n","import { Component, Input, QueryList, Output, EventEmitter, input } from '@angular/core';\nimport { NgClass, NgFor } from '@angular/common';\n\nimport { OasysLayoutModule } from '../../../layout';\nimport { OasysTabComponent } from '../tab/tab.component';\n\n@Component({\n standalone: true,\n imports: [OasysLayoutModule, NgClass, NgFor],\n selector: 'ui-tab-header',\n templateUrl: './tab-header.component.html',\n styleUrl: './tab-header.component.scss',\n})\nexport class OasysTabHeaderComponent {\n @Input() tab_size: 'small' | 'large' = 'small';\n @Input() tabs: QueryList<OasysTabComponent>;\n @Output() tab_clicked = new EventEmitter<OasysTabComponent>();\n tab_active = input<OasysTabComponent>();\n\n activeComponent: OasysTabComponent;\n length: 0;\n domEles;\n /**\n * Get class for the active indicator based os size\n * @returns\n */\n getIndicatorClass(): string {\n return this.tab_size === 'small'\n ? 'ui-tab-header_item-indicator'\n : 'ui-tab-header_item-indicator large';\n }\n\n /**\n * Set active tab\n * @param item\n */\n activateTab(item: OasysTabComponent): void {\n this.tab_clicked.emit(item);\n }\n\n /**\n * Handles keyboard events on the header.\n * @param event\n * @param index\n * @returns\n */\n handleKeydown(event: KeyboardEvent, index: number): void {\n const items = Array.from(\n document.querySelectorAll('.ui-tab-header_item-label'),\n ) as HTMLElement[];\n\n if (!items.length) return;\n\n let newIndex = index;\n\n switch (event.code) {\n case 'Enter':\n this.activateTab(this.tabs.get(index));\n break;\n\n case 'ArrowRight': {\n newIndex = (index + 1) % items.length;\n items[newIndex]?.focus();\n break;\n }\n case 'ArrowLeft': {\n newIndex = (index - 1 + items.length) % items.length;\n items[newIndex]?.focus();\n break;\n }\n }\n }\n}\n","<div role=\"tablist\" aria-orientation=\"horizontal\">\n <ui-stack\n class=\"ui-tab-header\"\n stack_direction=\"x\"\n [stack_wrap]=\"false\"\n stack_gap=\"none\"\n stack_distribute=\"fit\"\n >\n <div class=\"ui-tab-header_item\" *ngFor=\"let tab of tabs; index as i\">\n <div\n class=\"ui-tab-header_item-label\"\n tabindex=\"0\"\n (click)=\"activateTab(tab)\"\n (keydown)=\"handleKeydown($event, i)\"\n role=\"tab\"\n [attr.aria-selected]=\"tab === tab_active()\"\n [attr.aria-label]=\"tab.tab_label\"\n >\n <span\n class=\"text-body--default\"\n [ngClass]=\"{ 'text-body--emphasis': tab === tab_active() }\"\n >{{ tab.tab_label }}</span\n >\n </div>\n <div [class]=\"getIndicatorClass()\" [ngClass]=\"{ active: tab === tab_active() }\"></div>\n </div>\n </ui-stack>\n</div>\n","import {\n Component,\n Input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n AfterContentInit,\n} from '@angular/core';\n\nimport { OasysLayoutModule } from '../../../layout';\nimport { OasysTabComponent } from '../tab/tab.component';\nimport { NgIf } from '@angular/common';\nimport { OasysTabActiveComponent } from '../tab-active/tab-active.component';\nimport { OasysTabHeaderComponent } from '../tab-header/tab-header.component';\n\n@Component({\n standalone: true,\n imports: [OasysLayoutModule, OasysTabActiveComponent, OasysTabHeaderComponent, NgIf],\n selector: 'ui-tab-group',\n templateUrl: './tab-group.component.html',\n encapsulation: ViewEncapsulation.None, // to hide non ui-buttons via css\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OasysTabGroupComponent implements AfterContentInit {\n @Input() tab_size: 'small' | 'large' = 'small';\n\n @ContentChildren(OasysTabComponent) tabs!: QueryList<OasysTabComponent>;\n activeComponent!: OasysTabComponent;\n\n getIndicatorClass(): string {\n return this.tab_size === 'small' ? 'nav-item_indicator line' : 'nav-item_indicator large line';\n }\n\n ngAfterContentInit(): void {\n if (this.tabs.length === 0) {\n throw new Error('<ui-tab-group> requires at least one <ui-tab>');\n }\n const selectedTab = this.tabs?.find((tab): boolean => !!tab.tab_active);\n this.activeComponent = selectedTab ?? this.tabs?.first;\n }\n\n activateTab(tab: OasysTabComponent): void {\n this.activeComponent = tab;\n this.activeComponent.clicked.emit();\n }\n}\n","<div class=\"ui-tab-group\">\n <ui-tab-header\n *ngIf=\"tabs || activeComponent\"\n [tab_size]=\"tab_size\"\n [tabs]=\"tabs\"\n [tab_active]=\"activeComponent\"\n (tab_clicked)=\"activateTab($event)\"\n ></ui-tab-header>\n\n <ui-tab-active [templateRef]=\"activeComponent?.template\"></ui-tab-active>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { OasysTabGroupComponent } from './tab-group.component';\nimport { OasysTabComponent } from '../tab/tab.component';\nimport { OasysTabActiveComponent } from '../tab-active/tab-active.component';\nimport { OasysTabHeaderComponent } from '../tab-header/tab-header.component';\n\n@NgModule({\n imports: [\n OasysTabGroupComponent,\n OasysTabComponent,\n OasysTabActiveComponent,\n OasysTabHeaderComponent,\n ],\n})\nexport class OasysTabsModule {}\n/**\n * @ngModule OasysTabsModule\n * @description\n *\n * Tabs provide a structured way to organize and navigate through different areas of an application.\n *\n * @usageNotes\n *\n * @example\n * <ui-tab-group tab_size=${args['tab_size']} >\n * <!-- Tab -->\n * <ui-tab tab_label=\"${args['tab_label']}\">\n * <!-- Tab content -->\n * </ui-tab>\n *\n * <!-- Tab -->\n * <ui-tab tab_label=\"Tab 2\">\n * <!-- Tab content -->\n * </ui-tab>\n *\n * <!-- Tab -->\n * <ui-tab tab_label=\"Tab 3\" [tab_active]=${args['tab_active']}>\n * <!-- Tab content -->\n * </ui-tab>\n * </ui-tab-group>\n *\n * Pug:\n * ui-tab-group(tab_size=\"${args['tab_size']}\")\n * ui-tab(tab_label=\"${args['tab_label']}\")\n * <!-- Tab content body -->\n *\n * ui-tab(tab_label=\"Tab 2\" tab_active=\"${args['tab_active']}\")\n * <!-- Tab content body -->\n * @OasysLib\n */\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutBoxComponent } from '../layout/box/box.component';\n\n@Component({\n selector: 'ui-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n standalone: true,\n imports: [CommonModule, LayoutBoxComponent],\n})\nexport class ProgressBarComponent {\n @Input() percentage = 50;\n @Input() style: 'circular' | 'line' = 'circular';\n @Input() text: string = '0 / 3';\n}\n","<!-- Circular Progress Bar -->\n<ui-box\n *ngIf=\"style === 'circular'\"\n box_space=\"none\"\n class=\"bw-cicle-progress-bar\"\n [style.--bw-cicle-progress-bar-progress-size]=\"percentage\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage\"\n [attr.aria-label]=\"text\"\n>\n <svg>\n <circle class=\"full-bar\" />\n <circle class=\"progress-bar\" />\n </svg>\n <div class=\"bw-cicle-progress-bar__content text-body--micro\">\n <span class=\"bw-cicle-progress-bar__content-text\">{{ text }}</span>\n </div>\n</ui-box>\n\n<!-- Line Progress Bar -->\n<ui-box\n *ngIf=\"style === 'line'\"\n box_space=\"none\"\n box_fit_mode=\"fit\"\n class=\"bw-line-progress-bar\"\n [style.--bw-line-progress-bar-progress-size]=\"percentage\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage\"\n [attr.aria-label]=\"text\"\n>\n <svg>\n <rect class=\"full-bar\" />\n <rect class=\"progress-bar\" />\n </svg>\n</ui-box>\n","import { Component, computed, input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { OasysLayoutModule } from '../../../layout';\nimport { OasysAlertModule } from '../../../alert';\nimport { ValidationErrorTypes } from '../../forms';\n\n@Component({\n selector: 'ui-form-errors-summary-item',\n templateUrl: './form-errors-summary-item.component.html',\n styles: '',\n standalone: true,\n imports: [CommonModule, OasysLayoutModule, OasysAlertModule],\n host: {\n style: 'cursor: pointer;',\n },\n})\nexport class OasysFormErrorsSummaryItemComponent {\n abstractControl = input<AbstractControl>();\n error_messages = input<ValidationErrorTypes | undefined>({});\n\n focusOnControl(): void {\n const control = this.abstractControl();\n\n // Log the control name - it's stored in the parent FormGroup\n if (control?.parent) {\n const controlName = Object.keys(control.parent.controls).find(\n (key) => control.parent?.get(key) === control,\n );\n\n if (controlName) {\n // Find the ui-text-input component with the matching ng-reflect-name\n const textInputComponent = document.querySelector(\n `ui-text-input[ng-reflect-name=\"${controlName}\"]`,\n );\n\n if (textInputComponent) {\n // Find the input element inside the ui-text-input component\n const inputElement = textInputComponent.querySelector('input');\n if (inputElement) {\n inputElement.focus();\n inputElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n }\n }\n }\n\n errorMessage = computed((): string | undefined => {\n const currentErrors = this.abstractControl()?.errors;\n const messages = this.error_messages() ?? {};\n\n if (!currentErrors) {\n return undefined;\n }\n const errorKeys = Object.keys(currentErrors);\n const firstErrorKey = errorKeys.length ? errorKeys[0] : undefined;\n return firstErrorKey ? messages[firstErrorKey] : undefined;\n });\n}\n","@if (errorMessage() && !!abstractControl()?.errors) {\n <li\n class=\"text-link--paragraph text-body--supporting\"\n (click)=\"focusOnControl()\"\n (keydown.enter)=\"focusOnControl()\"\n tabindex=\"0\"\n aria-live=\"polite\"\n aria-labelledby=\"errors-summary-title errors-summary-item\"\n >\n <span id=\"errors-summary-item\">\n {{ errorMessage() }}\n </span>\n </li>\n}\n","import {\n Component,\n input,\n AfterContentInit,\n ContentChildren,\n QueryList,\n computed,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { OasysLayoutModule } from '../../layout';\nimport { OasysAlertModule } from '../../alert';\nimport { OasysIconModule } from '../../icon';\nimport { OasysFormErrorsSummaryItemComponent } from './errors-summary-item/form-errors-summary-item.component';\n\n@Component({\n selector: 'ui-form-errors-summary',\n templateUrl: './form-errors-summary.component.html',\n styleUrl: 'form-errors-summary.component.scss',\n standalone: true,\n imports: [CommonModule, OasysLayoutModule, OasysAlertModule, OasysIconModule],\n})\nexport class OasysFormErrorsSummaryComponent implements AfterContentInit {\n formGroup = input.required<FormGroup>();\n\n @ContentChildren(OasysFormErrorsSummaryItemComponent)\n errorsSummaryItems!: QueryList<OasysFormErrorsSummaryItemComponent>;\n\n hasErrorsSummaryItems = computed(() => this.errorsSummaryItems.length > 0);\n\n ngAfterContentInit(): void {\n if (this.errorsSummaryItems.length === 0) {\n console.error(\n 'ui-form-errors-summary: No ui-form-errors-summary-item components found. Please add at least one ui-form-errors-summary-item.',\n );\n }\n }\n}\n","<div #errorsSummary>\n @if (!formGroup().valid && hasErrorsSummaryItems()) {\n <ui-box class=\"ui-form-errors-summary\" box_space=\"near\" box_align_x=\"center\">\n <ui-stack stack_direction=\"x\" stack_gap=\"near\">\n <div class=\"badge\">\n <ui-icon icon_name=\"error\" icon_size_override=\"2\"></ui-icon>\n </div>\n\n <ui-stack stack_gap=\"near\">\n <ui-stack stack_gap=\"tight\" class=\"content\" stack_direction=\"y\">\n <div class=\"text-label--secondary\" id=\"errors-summary-title\">\n <ng-content select=\"ui-form-errors-summary-title\"></ng-content>\n </div>\n <ul>\n <ng-content></ng-content>\n </ul>\n </ui-stack>\n </ui-stack>\n </ui-stack>\n </ui-box>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ui-form-errors-summary-title',\n template: '<ng-content></ng-content>',\n standalone: true,\n imports: [CommonModule],\n host: {\n role: 'alert',\n 'aria-live': 'polite',\n },\n})\nexport class OasysFormErrorsSummaryTitleComponent {}\n","/*\n * Public API Surface of oasys-lib\n */\nexport * from './lib/components/alert';\nexport * from './lib/components/navigation/breadcrumbs';\nexport * from './lib/components/button';\nexport * from './lib/components/button-group';\nexport * from './lib/components/card';\nexport * from './lib/components/divider';\nexport * from './lib/components/form/form-group';\nexport * from './lib/components/form/checkbox';\nexport * from './lib/components/form/radio';\nexport * from './lib/components/form/text-input';\nexport * from './lib/components/form/chip';\nexport * from './lib/components/form/errors';\nexport * from './lib/components/heading';\nexport * from './lib/components/hero';\nexport * from './lib/components/seo-block';\nexport * from './lib/components/icon';\nexport * from './lib/components/image';\nexport * from './lib/components/layout';\nexport * from './lib/components/section';\nexport * from './lib/components/carousel';\nexport * from './lib/components/card';\nexport * from './lib/components/text';\nexport * from './lib/components/banner';\nexport * from './lib/components/pill';\nexport * from './lib/components/pill-group';\nexport * from './lib/services';\nexport * from './lib/components/promo-card';\nexport * from './lib/components/select-card';\nexport * from './lib/components/form/combobox';\nexport * from './lib/components/label';\nexport * from './lib/components/navigation/tabs/tab-group';\nexport * from './lib/components/progress-bar';\nexport * from './lib/components/form/errors-summary';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TokenService","i1.BreakpointService","i2","i1","i1.LayoutBoxComponent","i1.LayoutStackComponent","i2.LayoutStackComponent","i3.IconComponent"],"mappings":"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"}