{"version":3,"file":"usitsdasdesign-dds-ng-rating.mjs","sources":["../../src/app/dds/rating/rating/constants.ts","../../src/app/dds/rating/rating/rating.component.ts","../../src/app/dds/rating/rating/rating.component.html","../../src/app/dds/rating/rating.module.ts","../../src/app/dds/rating/usitsdasdesign-dds-ng-rating.ts"],"sourcesContent":["import { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\nimport { Themes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const MIN_VALUE = 1;\nexport const MAX_VALUE = 5;\nexport const INIT_INDEX = -1;\nexport const ARIA_LABEL = 'Rating';\nexport const DEFAULT_ICON = 'dds-icon_star-border';\nexport const DEFAULT_FILLED_ICON = 'dds-icon_star-filled';\n\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Themes]: {\n    [Themes.green]: 'dds-rating_green',\n    [Themes.blue]: 'dds-rating_blue',\n    [Themes.dark]: 'dds-rating_dark',\n  },\n};\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  QueryList,\n  Renderer2,\n  ViewChild,\n  ViewChildren\n} from '@angular/core';\nimport { DestroyCtor, DestroyMixin, FormAccessorCtor, FormAccessorMixin, valueAccessor } from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ListItem, ListManager } from '@usitsdasdesign/dds-ng/core/list-manager';\nimport { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { AdditionalClass, KeyCodes, Themes } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { takeUntil } from 'rxjs';\nimport { RatingStar } from '../typings';\nimport { ARIA_LABEL, DEFAULT_FILLED_ICON, DEFAULT_ICON, INIT_INDEX, MAX_VALUE, MIN_VALUE, themeClassesMap } from './constants';\n\nconst RatingBase: DestroyCtor & FormAccessorCtor = DestroyMixin(FormAccessorMixin());\n\n@Component({\n  selector: 'dds-rating',\n  templateUrl: './rating.component.html',\n  providers: [valueAccessor(RatingComponent as Component)],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule, ThemeModule],\n})\nexport class RatingComponent extends RatingBase implements AfterViewInit {\n  // Binds the disabled class to the host element when the component is disabled.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // Query list of star elements.\n  @ViewChildren('starEl') starEls: QueryList<ElementRef<HTMLElement>>;\n\n  // Reference to the rating wrapper element.\n  @ViewChild('ratingWrap') ratingWrap: ElementRef<HTMLElement>;\n\n  // Aria label for accessibility.\n  @Input() ariaLabel: string | undefined = ARIA_LABEL;\n\n  // Icon for the stars.\n  @Input() icon: string | undefined = DEFAULT_ICON;\n\n  // Icon for filled stars.\n  @Input() filledIcon: string | undefined = DEFAULT_FILLED_ICON;\n\n  // Theme for the rating component.\n  @Input() theme: Themes | string | undefined = this.ddsConfig.getConfig().theme;\n\n  // Custom CSS class for the component.\n  @Input() customClass: string | undefined;\n\n  // Indicates if the rating component is in inverse mode.\n  @Input() isInverse: boolean | undefined;\n\n  // Indicates if the rating component is selectable.\n  @Input() isSelectable: boolean | undefined = true;\n\n  // The current rating value.\n  @Input()\n  get value(): number | undefined {\n    return this._value;\n  }\n  set value(value: number | undefined) {\n    if (value && this.stars) {\n      this._value = this.valueLimits(value);\n      const valueIndex = this._value - 1;\n      this.changeActiveValue(valueIndex);\n    } else {\n      this._value = null;\n      this.changeActiveValue(this._value);\n    }\n    this.cdr.markForCheck();\n  }\n\n  // Event emitted when the rating value changes.\n  @Output() valueChanged: EventEmitter<number> = new EventEmitter();\n\n  // Theme configuration for the component.\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n\n  // Array of rating stars.\n  public stars: RatingStar[] = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }, { value: 5 }];\n\n  private activeStarValue: number;\n  private _value: number;\n  private activeStarIndex = INIT_INDEX;\n  private keyManager: ListManager<ListItem>;\n\n  // Tab index for the component.\n  get tabIndex(): number {\n    return this.disabled || !this.isSelectable ? -1 : 0;\n  }\n\n  constructor(public cdr: ChangeDetectorRef, private ddsConfig: DdsConfigService, private renderer: Renderer2, public elementRef: ElementRef) {\n    super();\n  }\n\n  // Lifecycle hook that is called after the component's view has been initialized.\n  public ngAfterViewInit(): void {\n    this.initKeyManager();\n  }\n\n  // Writes a new value to the component.\n  public writeValue(value: number): void {\n    this.value = value;\n  }\n\n  // Sets the disabled state of the component.\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  // Changes the active star based on the given index.\n  public changeActiveStar(index: number): void {\n    if (this.activeStarIndex === index) {\n      this.activeStarIndex = INIT_INDEX;\n\n      this.stars.forEach((star) => (star.active = star.hovered = false));\n\n      this.valueChanged.emit(null);\n      this.onModelChange(null);\n    } else {\n      this.changeActiveValue(index);\n\n      this.valueChanged.emit(this.activeStarValue);\n      this.onModelChange(this.activeStarValue);\n      this.onModelTouched();\n    }\n  }\n\n  // Handles the hover state of the stars.\n  public starHovered(index?: number): void {\n    this.stars.forEach((star, i) => {\n      if (typeof index === 'number') {\n        if (i <= index) {\n          star.hovered = true;\n        } else {\n          star.hovered = false;\n        }\n      } else {\n        if (i <= this.activeStarIndex) {\n          star.hovered = true;\n        } else {\n          star.hovered = false;\n        }\n      }\n    });\n  }\n\n  // Picks the active star based on the given index.\n  public pickActiveStar(index: number): void {\n    this.changeActiveStar(index);\n  }\n\n  // Gets the aria label for a star based on its index.\n  public getAriaLabel(i: number): string {\n    return `${i + 1} out of ${this.stars.length} ratings`;\n  }\n\n  // Changes the active value based on the given index.\n  private changeActiveValue(index: number): void {\n    this.stars.forEach((star, i) => {\n      if (i === index) {\n        star.active = true;\n        star.hovered = true;\n        this.activeStarIndex = index;\n        this.activeStarValue = star.value;\n      } else if (i < index) {\n        star.active = false;\n        star.hovered = true;\n      } else {\n        star.active = false;\n        star.hovered = false;\n      }\n    });\n  }\n\n  // Limits the value to be within the allowed range.\n  private valueLimits(value: number): number {\n    return Math.max(Math.min(Math.floor(Number(value)), MAX_VALUE), MIN_VALUE);\n  }\n\n  // Handles the focus event for the component.\n  public handleFocus(): void {\n    const isActiveElem = this.stars.some((star) => star.active);\n\n    if (!isActiveElem) {\n      this.keyManager.setFirstItemActive();\n      this.focus(Array.from(this.starEls)[0]);\n    }\n\n    this.stars.forEach((star, id) => {\n      Array.from(this.starEls).forEach((item, i) => {\n        if (star.active && id === i) {\n          this.keyManager.setActiveItem(i);\n          this.focus(item);\n        }\n      });\n    });\n  }\n\n  // Handles the keydown event for the component.\n  public handleKeydown(event: KeyboardEvent) {\n    this.keyManager.onKeydown(event, false);\n\n    if (event.keyCode === KeyCodes.TAB) {\n      this.unFocusWrap();\n    }\n\n    if (event.keyCode === KeyCodes.TAB && event.shiftKey) {\n      this.ratingWrap.nativeElement.tabIndex = -1;\n      this.unFocusWrap();\n      setTimeout(() => { this.ratingWrap.nativeElement.tabIndex = 0; });\n    }\n  }\n\n  // Initializes the key manager for keyboard navigation.\n  private initKeyManager(): void {\n    this.keyManager = new ListManager(Array.from(this.starEls) as ListItem[]).withHomeAndEnd();\n\n    this.keyManager.change.pipe(takeUntil(this.destroy)).subscribe(() => {\n      if (this.keyManager.previousActiveItem) this.unFocus(this.keyManager.previousActiveItem as ElementRef);\n      if (this.keyManager.activeItem) {\n        this.focus(this.keyManager.activeItem as ElementRef);\n      }\n    });\n  }\n\n  // Unfocuses the rating wrapper element.\n  public unFocusWrap(): void {\n    if (this.keyManager?.activeItem) this.unFocus(this.keyManager.activeItem as ElementRef);\n    this.ratingWrap.nativeElement.blur();\n  }\n\n  // Focuses the given element.\n  public focus(elem: ElementRef): void {\n    this.renderer.addClass(elem.nativeElement, AdditionalClass.keyboardFocus);\n    elem.nativeElement.focus();\n  }\n\n  // Unfocuses the given element.\n  public unFocus(elem: ElementRef): void {\n    this.renderer.removeClass(elem.nativeElement, AdditionalClass.keyboardFocus);\n    elem.nativeElement.blur();\n  }\n\n  // Handles the blur event for the given element.\n  public onBlur(elem: HTMLButtonElement): void {\n    this.renderer.removeClass(elem, AdditionalClass.keyboardFocus);\n    elem.blur();\n  }\n}\n","<div [ngClass]=\"{\n       'dds-rating_blocked': !isSelectable,\n       'dds-rating_inverse': isInverse,\n       'dds-rating_disabled': disabled\n     }\"\n     [ddsTheme]=\"themeConfig\"\n     [theme]=\"theme\"\n     [attr.aria-disabled]=\"disabled\"\n     [attr.aria-label]=\"ariaLabel\"\n     data-qa=\"rating\"\n     role=\"radiogroup\"\n     class=\"dds-rating {{customClass}}\"\n     [attr.tabindex]=\"tabIndex\"\n     (focus)=\"handleFocus()\"\n     (keydown)=\"handleKeydown($event)\"\n     (mouseleave)=\"starHovered()\"\n     #ratingWrap>\n  @for (star of stars; track star; let i = $index) {\n    <button [ngClass]=\"{\n            'dds-rating__btn_active': star.active\n          }\"\n            [disabled]=\"disabled || !isSelectable\"\n            [attr.aria-disabled]=\"disabled\"\n            [attr.aria-checked]=\"star.active\"\n            [attr.aria-label]=\"getAriaLabel(i)\"\n            data-qa=\"star\"\n            role=\"radio\"\n            class=\"dds-rating__btn\"\n            tabindex=\"-1\"\n            (blur)=\"onBlur(starEl)\"\n            (mouseover)=\"starHovered(i)\"\n            (click)=\"changeActiveStar(i)\"\n            #starEl>\n      <span role=\"presentation\"\n            class=\"dds-rating__icon dds-icon {{star.hovered ? filledIcon : icon}}\"\n            (keyup.Enter)=\"pickActiveStar(i)\"\n            (keyup.Space)=\"pickActiveStar(i)\"></span>\n    </button>\n  }\n</div>\n","import { NgModule } from '@angular/core';\nimport { RatingComponent } from './rating/rating.component';\n\n@NgModule({\n  declarations: [],\n  imports: [RatingComponent],\n  exports: [RatingComponent],\n})\nexport class RatingModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}