{"version":3,"file":"eui-components-eui-rating.mjs","sources":["../../eui-rating/eui-rating.component.ts","../../eui-rating/eui-rating.component.html","../../eui-rating/index.ts","../../eui-rating/eui-components-eui-rating.ts"],"sourcesContent":["import {\n    Component,\n    HostBinding,\n    ChangeDetectionStrategy,\n    Input,\n    Output,\n    EventEmitter,\n    ChangeDetectorRef,\n    booleanAttribute,\n    numberAttribute,\n    OnInit,\n    forwardRef,\n    inject,\n    ViewChildren,\n    QueryList,\n    ElementRef,\n    AfterViewInit,\n    OnDestroy,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\n\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\n\n/**\n * @description\n * Interactive star rating component for collecting user feedback and displaying rating values.\n * Implements ControlValueAccessor for seamless integration with Angular reactive and template-driven forms.\n * Supports keyboard navigation with arrow keys, Home, and End for accessibility.\n * Provides customizable number of stars and visual feedback for current rating state.\n * Commonly used for product reviews, feedback forms, and quality assessments.\n *\n * @usageNotes\n * ### Basic usage\n * ```html\n * <eui-rating [(rating)]=\"userRating\"></eui-rating>\n * ```\n *\n * ### With reactive forms\n * ```typescript\n * ratingControl = new FormControl(3);\n * ```\n * ```html\n * <eui-rating [formControl]=\"ratingControl\" [numberOfStars]=\"5\"></eui-rating>\n * ```\n *\n * ### Disabled state\n * ```html\n * <eui-rating [rating]=\"4\" [euiDisabled]=\"true\"></eui-rating>\n * ```\n *\n * ### Accessibility\n * - Full keyboard navigation: Arrow keys to change rating, Home/End for first/last\n * - ARIA radiogroup role with proper labeling\n * - Each star is focusable and announces its value to screen readers\n * - Visual focus indicators for keyboard users\n *\n * ### Notes\n * - Click same star again to clear rating (set to 0)\n * - Only one star is focusable at a time (roving tabindex pattern)\n * - Emits `ratingChange` event on user interaction\n */\n\n@Component({\n    templateUrl: './eui-rating.component.html',\n    selector: 'eui-rating',\n    styleUrl: './eui-rating.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n        },\n    ],\n    imports: [ReactiveFormsModule, ...EUI_ICON, ...EUI_BUTTON],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => EuiRatingComponent),\n            multi: true,\n        },\n    ],\n})\nexport class EuiRatingComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {\n    /** CSS classes applied to the host element */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [this.baseStatesDirective.getCssClasses('eui-rating')].join(' ').trim();\n    }\n\n    /**\n     * Unique identifier for the toggle\n     * @default Generated unique ID with 'eui-rating-' prefix\n     */\n    // @Input() id = `eui-rating-${uniqueId()}`;\n\n    /**\n     * Whether the toggle is disabled\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiDisabled = false;\n\n    /**\n     * Current numbers of stars rating to display\n     * @default 5\n     */\n    @Input({ transform: numberAttribute }) numberOfStars = 5;\n\n    /**\n     * Current rating number\n     * @default 0\n     */\n    @Input({ transform: numberAttribute }) rating = 0;\n\n    /**\n     * Event emitted when toggle state changes\n     * @emits boolean - The new toggle state\n     */\n    @Output() ratingChange = new EventEmitter<number>();\n\n    @ViewChildren('euiRatingButtonRef', { read: ElementRef }) ratingButtons: QueryList<ElementRef>;\n\n    /**\n     * Binds the aria-label attribute to the component.\n     * @default 'eUI Rating'\n     */\n    @HostBinding('attr.aria-label') @Input() ariaLabel = 'eUI Rating';\n\n    /**\n     * Binds the role attribute to the component.\n     * @default 'radiogroup'\n     */\n    @HostBinding('attr.role') role = 'radiogroup';\n\n    // eslint-disable-next-line\n    protected numbers: any[] = [];\n\n    protected baseStatesDirective = inject(BaseStatesDirective);\n    protected cd = inject(ChangeDetectorRef);\n\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n\n    ngOnInit(): void {\n        this.initState();\n    }\n\n    ngAfterViewInit(): void {\n        this.ratingButtons.toArray().forEach((buttonRef) => {\n            fromEvent(buttonRef.nativeElement, 'blur').pipe(takeUntil(this.destroy$)).subscribe(() => {\n                this.onTouch();\n            });\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    /**\n     * Implements ControlValueAccessor\n     * Updates the toggle's checked state\n     */\n    public writeValue(value: number): void {\n        this.rating = value;\n        this.updateState();\n        this.cd.detectChanges();\n    }\n\n    /**\n     * Implements ControlValueAccessor\n     * Updates the rating's disabled state\n     */\n    public setDisabledState(isDisabled: boolean): void {\n        this.euiDisabled = isDisabled;\n        this.cd.detectChanges();\n    }\n\n    /**\n     * Handles focus out event\n     * Notifies form control of touch event\n     */\n    public onFocusOut(): void {\n        this.onTouch();\n    }\n\n    /**\n     * Implements ControlValueAccessor\n     * Registers change handler\n     * @todo Improve type definition or make generic\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public registerOnChange(fn: any): void {\n        this.onChange = fn;\n    }\n\n    /**\n     * Implements ControlValueAccessor\n     * Registers touch handler\n     * @todo Improve type definition or make generic\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public registerOnTouched(fn: any): void {\n        this.onTouch = fn;\n    }\n\n    /**\n     * Actions applied upon a keydown event\n     *\n     * @param event The keyboard event\n     * @param index The index of the current star button\n     */\n    protected onKeydown(event: KeyboardEvent, index: number): void {\n        switch (event.key) {\n            case 'Home': {\n                // Focus the first star\n                this.ratingButtons.toArray()[0].nativeElement.focus();\n                event.preventDefault();\n                this.updateRating(0, false);\n                break;\n            }\n            case 'End': {\n                // Focus the last star\n                this.ratingButtons.toArray()[this.numberOfStars - 1].nativeElement.focus();\n                event.preventDefault();\n                this.updateRating(this.numberOfStars, false);\n                break;\n            }\n            case 'ArrowRight': {\n                // Focus the next star button\n                if (this.rating < this.numberOfStars) {\n                    this.ratingButtons.toArray()[index].nativeElement.focus();\n                    // Update the rating\n                    if (this.rating === 0) {\n                        this.updateRating(2, false);\n                    } else {\n                        this.updateRating(this.rating + 1, false);\n                    }\n                }\n                break;\n            }\n            case 'ArrowLeft': {\n                // Focus the previous star\n                if (this.rating === 1) {\n                    this.ratingButtons.toArray()[0].nativeElement.focus();\n                } else if (this.rating > 1) {\n                    this.ratingButtons.toArray()[index - 2].nativeElement.focus();\n                    this.updateRating(this.rating - 1, false);\n                }\n                break;\n            }\n        }\n    }\n\n    /**\n     * Toggles the current state if not disabled\n     * Emits the new state and notifies form control\n     */\n    protected onUpdate(rating: number): void {\n        this.updateRating(rating, true);\n    }\n    /**\n     * Updates the checked state of the star button based on the index\n     * @param index The index of the star button\n     * @returns boolean - true if the index matches the rating, false otherwise\n     */\n    protected updateCheckedState(index: number): boolean {\n        return index === this.rating;\n    }\n    /**\n     * Returns the tab index value based on the current rating and index\n     * @param index The index of the star button\n     * @returns number - 0 if the star is focusable, -1 otherwise\n     */\n    protected getTabIndexValue(index: number): number {\n        if (this.rating === 0) {\n            return index === 1 ? 0 : -1; // Only the first star is focusable when no rating is set\n        } else {\n            return index === this.rating ? 0 : -1; // Only the current star is focusable\n        }\n    }\n\n    private initState(): void {\n        for (let i = 1; i < this.numberOfStars + 1; i++) {\n            this.numbers.push({\n                index: i,\n                value: i <= this.rating,\n            });\n        }\n    }\n    private updateState(): void {\n        for (let i = 1; i < this.numberOfStars + 1; i++) {\n            this.numbers[i - 1].value = i <= this.rating;\n        }\n    }\n    private updateRating(rating: number, clearifSame = false): void {\n        if (!this.euiDisabled) {\n            if (this.rating === rating && clearifSame) {\n                this.rating = 0;\n            } else {\n                this.rating = rating;\n            }\n            this.updateState();\n            this.onChange(this.rating);\n            this.ratingChange.next(this.rating);\n        }\n    }\n\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private onChange: any = () => {\n        /* empty */\n    };\n\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private onTouch: any = () => {\n        /* empty */\n    };\n}\n","@for (n of numbers; track n.index) {\n<button\n    #euiRatingButtonRef\n    euiButton\n    euiPrimary\n    euiRounded\n    euiBasicButton\n    euiIconButton\n    euiSizeS\n    hasNoFocusRing\n    isCompact\n    [euiDisabled]=\"euiDisabled\"\n    (click)=\"onUpdate(n.index)\"\n    (keydown)=\"onKeydown($event, n.index)\"\n    [attr.tabindex]=\"getTabIndexValue(n.index)\"\n    [attr.aria-label]=\"'Rating star ' + n.index + ' - ' + (n.value ? 'Selected' : 'Not selected')\"\n    role=\"radio\"\n    [attr.aria-checked]=\"updateCheckedState(n.index)\">\n    @if (n.value) {\n        <eui-icon-svg icon=\"eui-star-fill\" fillColor=\"primary\" />\n    } @else {\n        <eui-icon-svg icon=\"eui-star\" fillColor=\"primary\" />\n    }\n</button>\n}\n","import { EuiRatingComponent } from './eui-rating.component';\n\nexport * from './eui-rating.component';\n\nexport const EUI_RATING = [\n    EuiRatingComponent,\n] as const;\n\n// export { EuiRatingComponent as EuiRating } from './eui-rating.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}