{"version":3,"file":"fundamental-ngx-core-rating-indicator.mjs","sources":["../../../../libs/core/rating-indicator/constants.ts","../../../../libs/core/rating-indicator/pipes/rating-star-label.pipe.ts","../../../../libs/core/rating-indicator/components/rating-indicator.component.ts","../../../../libs/core/rating-indicator/components/rating-indicator.component.html","../../../../libs/core/rating-indicator/rating-indicator.module.ts","../../../../libs/core/rating-indicator/fundamental-ngx-core-rating-indicator.ts"],"sourcesContent":["export const INDICATOR_PREFIX = 'fd-rating-indicator';\n\nexport const INDICATOR_CLASSES = {\n    halves: `${INDICATOR_PREFIX}--half-star`,\n    icon: `${INDICATOR_PREFIX}--icon`,\n    hideDynamicText: `${INDICATOR_PREFIX}--hide-dynamic-text`\n};\nexport const INDICATOR_DEFAULT_CAPACITY = 5;\n\nexport type RatingIndicatorSize = 'xs' | 'sm' | 'md' | 'lg' | 'cozy' | 'compact' | 'condensed';\nexport enum RatingIndicatorSizeEnum {\n    'xs',\n    'sm',\n    'md',\n    'lg',\n    'cozy',\n    'compact',\n    'condensed'\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';\n\n@Pipe({\n    name: 'ratingStarLabel'\n})\nexport class RatingStarLabelPipe implements PipeTransform {\n    /** @hidden */\n    private readonly _translationResolver = new TranslationResolver();\n\n    /** Transforms the value to a rating value string. */\n    transform(index: number, controlsCount: number, useHalves: boolean, currentLanguage: FdLanguage): string {\n        const ofTranslation = this._translationResolver.resolve(currentLanguage, 'coreRatingIndicator.ariaLabelValue');\n\n        if (useHalves) {\n            return `${index / 2 + 0.5} ${ofTranslation} ${controlsCount / 2}`;\n        }\n        return `${index + 1} ${ofTranslation} ${controlsCount}`;\n    }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    ViewEncapsulation,\n    booleanAttribute,\n    computed,\n    effect,\n    forwardRef,\n    inject,\n    input,\n    output,\n    signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\nimport { PopoverComponent, PopoverTriggerDirective } from '@fundamental-ngx/core/popover';\nimport { FD_LANGUAGE_SIGNAL, FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n    INDICATOR_CLASSES,\n    INDICATOR_DEFAULT_CAPACITY,\n    INDICATOR_PREFIX,\n    RatingIndicatorSize,\n    RatingIndicatorSizeEnum\n} from '../constants';\nimport { RatingStarLabelPipe } from '../pipes/rating-star-label.pipe';\n\nlet ratingUID = 0;\n\ninterface NumberKey<T> {\n    [key: number]: T;\n}\n\ninterface RatingViewItem {\n    rate: number;\n    votes: number;\n}\n\n@Component({\n    selector: 'fd-rating-indicator',\n    templateUrl: './rating-indicator.component.html',\n    styleUrl: './rating-indicator.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => RatingIndicatorComponent),\n            multi: true\n        },\n        registerFormItemControl(RatingIndicatorComponent)\n    ],\n    imports: [NgTemplateOutlet, PopoverTriggerDirective, PopoverComponent, RatingStarLabelPipe, FdTranslatePipe],\n    host: {\n        '[class]': 'cssClass()',\n        '[attr.aria-label]': 'ariaLabel()',\n        '[attr.aria-labelledby]': 'ariaLabelledBy()',\n        '[attr.disabled]': 'disabled()'\n    }\n})\nexport class RatingIndicatorComponent implements ControlValueAccessor, FormItemControl, HasElementRef {\n    /** Sets [name] attribute of input. */\n    readonly name = input<string>();\n\n    /**\n     * Sets the aria-label attribute to the element.\n     */\n    readonly ariaLabel = input<string | null>();\n\n    /**\n     * Sets the aria-labelledby attribute to the element.\n     */\n    readonly ariaLabelledBy = input<string | null | undefined>();\n\n    /**\n     * Sets the aria-roledescription attribute to the element.\n     */\n    readonly ariaRoledescription = input<string | null | undefined>();\n\n    /**\n     * Input for disabled state from parent component.\n     * Sets the aria-disabled attribute to the element.\n     * Sets the is-disabled class to the element.\n     */\n    readonly disabled = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the rating indicator is in displayMode\n     */\n    readonly displayMode = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the rating indicator is in non-interactive state.\n     */\n    readonly nonInteractive = input(false, { transform: booleanAttribute });\n\n    /**\n     * Number of rates to display\n     */\n    readonly indicatorCapacity = input(INDICATOR_DEFAULT_CAPACITY, {\n        transform: (value: number) => {\n            const val = coerceNumberProperty(value, INDICATOR_DEFAULT_CAPACITY);\n            return val < 1 ? INDICATOR_DEFAULT_CAPACITY : val;\n        }\n    });\n\n    /**\n     * Whether or not to display half values.\n     */\n    readonly allowHalves = input(false, { transform: booleanAttribute });\n\n    /**\n     * User's value number of ratings. If provided, Overrides ratingAverage.\n     */\n    readonly value = input(0);\n\n    /**\n     * Total number of ratings. If provided, will display text showing the total number of ratings.\n     */\n    readonly totalRatings = input<number | undefined | null>(undefined);\n\n    /**\n     * Rating average\n     */\n    readonly ratingAverage = input<number | undefined | null>(undefined);\n\n    /**\n     * Object containing key-value pairs where the key is the rating and the value is the total sum of those ratings.\n     * Overrides totalRatings and ratingAverage.\n     */\n    readonly ratings = input<NumberKey<number> | undefined | null>(undefined);\n\n    /**\n     * Whether or not to display the popover that shows the sum of each rating. Requires [ratings] object.\n     */\n    readonly displayAllRatings = input(false, { transform: booleanAttribute });\n\n    /**\n     * Icon class for rated icon from fundamental-styles lib https://sap.github.io/fundamental-styles/?path=/docs/components-icon--sizes\n     */\n    readonly ratedIcon = input<string | undefined>(undefined);\n\n    /**\n     * Icon class for unrated icon from fundamental-styles lib https://sap.github.io/fundamental-styles/?path=/docs/components-icon--sizes\n     */\n    readonly unratedIcon = input<string | undefined>(undefined);\n\n    /**\n     * Possible values are 'xs', 'sm', 'md', 'lg', 'cozy', 'compact', 'condensed'\n     */\n    readonly size = input<RatingIndicatorSize>('md');\n\n    /**\n     * Text divider label between view value and indicator count.\n     */\n    readonly dynamicTextIndicator = input('of');\n\n    /**\n     * Whether to display the dynamic text (rating value and count) after the rating indicator.\n     * When false, only the star rating UI is shown without any text.\n     */\n    readonly showDynamicText = input(true, { transform: booleanAttribute });\n\n    /**\n     * Fired when the user sets or changes their rating.\n     */\n    readonly ratingChanged = output<number>();\n\n    /** @hidden */\n    readonly elementRef = inject(ElementRef<HTMLElement>);\n\n    /** Computed display value - returns the current internal value */\n    readonly displayValue = computed(() => this.internalValue());\n\n    /** @hidden Current language signal for i18n */\n    protected readonly language = inject(FD_LANGUAGE_SIGNAL);\n\n    /** @hidden Internal mutable value for CVA and computed display value */\n    protected readonly internalValue = signal(0);\n\n    /**\n     * Internal mutable disabled state.\n     * Allows ControlValueAccessor to modify disabled state independently of input.\n     */\n    protected readonly internalDisabled = signal(false);\n\n    /** @hidden Internal total ratings for computed state */\n    protected readonly internalTotalRatings = signal<number | undefined | null>(undefined);\n\n    /** @hidden Internal rating average for computed state */\n    protected readonly internalRatingAverage = signal<number | undefined | null>(undefined);\n\n    /** @hidden Rating items for popover content */\n    protected readonly ratingItems = signal<RatingViewItem[]>([]);\n\n    /** @hidden Unique ID for this rating indicator instance */\n    protected readonly ratingUID = ratingUID++;\n\n    /** @hidden Computed size class based on size input */\n    protected readonly sizeClass = computed(() => this._getSizeClass(this.size()));\n\n    /** @hidden Computed rates array based on capacity and halves setting */\n    protected readonly rates = computed(() => this._getRates());\n\n    /** @hidden Computed signal to determine if dynamic text should be hidden */\n    protected readonly hideDynamicText = computed(() => {\n        const value = this.displayValue();\n        const totalRatings = this.computedTotalRatings;\n        // Only hide if value is 0 AND we don't have total ratings to show\n        return !value && (totalRatings === undefined || totalRatings === null);\n    });\n\n    /** @hidden Computed CSS classes for host binding */\n    protected readonly cssClass = computed(() => {\n        const classes: string[] = [\n            INDICATOR_PREFIX,\n            this.sizeClass(),\n            this.allowHalves() ? INDICATOR_CLASSES.halves : '',\n            this.ratedIcon() && this.unratedIcon() ? INDICATOR_CLASSES.icon : '',\n            this.hideDynamicText() ? INDICATOR_CLASSES.hideDynamicText : '',\n            this.disabled() || this.internalDisabled() ? 'is-disabled' : '',\n            this.displayMode() ? 'fd-rating-indicator--display-mode' : '',\n            this.nonInteractive() ? 'fd-rating-indicator--non-interactive' : ''\n        ];\n        return classes.filter(Boolean).join(' ');\n    });\n\n    /** @hidden */\n    constructor() {\n        // Sync ratings input with internal state\n        effect(() => {\n            const ratingsInput = this.ratings();\n            if (ratingsInput) {\n                this._generateRatings(ratingsInput);\n            }\n        });\n\n        // Initialize internalValue from inputs once, then let CVA handle updates\n        let initialized = false;\n        effect(() => {\n            // Only run once for initialization\n            if (initialized) {\n                return;\n            }\n\n            // Read all potential sources\n            const inputValue = this.value();\n            const internalAvg = this.internalRatingAverage();\n            const avgValue = this.ratingAverage();\n\n            // Determine source value with proper priority\n            let sourceValue = 0;\n            if (inputValue && inputValue !== 0) {\n                sourceValue = inputValue;\n            } else if (internalAvg !== undefined && internalAvg !== null) {\n                sourceValue = internalAvg;\n            } else if (avgValue !== undefined && avgValue !== null) {\n                sourceValue = avgValue;\n            }\n\n            const parsedValue = this._parseValue(sourceValue);\n            this.internalValue.set(parsedValue);\n            initialized = true;\n        });\n    }\n\n    /** @hidden CVA onChange callback */\n    onChange: (value: number) => void = () => {};\n\n    /** @hidden CVA onTouched callback */\n    onTouched = (): void => {};\n\n    /**\n     * @deprecated Use `displayValue()` signal directly instead\n     * @hidden Backward compatibility getter\n     */\n    get viewValue(): number {\n        return this.displayValue();\n    }\n\n    /**\n     * @deprecated Use `ratingUID` property directly instead\n     * @hidden Backward compatibility getter\n     */\n    get viewRatingUID(): number {\n        return this.ratingUID;\n    }\n\n    /**\n     * @deprecated Use `indicatorCapacity()` signal directly instead\n     * @hidden Backward compatibility getter\n     */\n    get indicatorCount(): number {\n        return this.indicatorCapacity();\n    }\n\n    /** Public getter for computed rating average value. */\n    get computedRatingAverage(): number | undefined | null {\n        return this.internalRatingAverage() ?? this.ratingAverage();\n    }\n\n    /** Public getter for computed total ratings value. */\n    get computedTotalRatings(): number | undefined | null {\n        return this.internalTotalRatings() ?? this.totalRatings();\n    }\n\n    /** @hidden CVA writeValue - updates internal value signal */\n    writeValue(value: number): void {\n        this.internalValue.set(this._parseValue(value));\n    }\n\n    /** @hidden */\n    registerOnChange(fn: (value: number) => void): void {\n        this.onChange = fn;\n    }\n    /** @hidden */\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    /** @hidden */\n    setDisabledState(isDisabled: boolean): void {\n        this.internalDisabled.set(isDisabled);\n    }\n\n    /** @hidden User selection handler */\n    protected onSelect(value: number): void {\n        this.internalValue.set(value);\n        this.onChange(value);\n        this.onTouched();\n        this.ratingChanged.emit(value);\n    }\n\n    /**\n     * @hidden\n     * Generate rating items for popover content from ratings object\n     */\n    private _generateRatings(ratingsInput: NumberKey<number>): void {\n        const ratings = Object.entries(ratingsInput)\n            .filter(([rate, vote]) => {\n                const numRate = +rate;\n                const numVote = +vote;\n                return !isNaN(numRate) && !isNaN(numVote) && numRate > 0;\n            })\n            .map(([rate, votes]) => ({ rate: +rate, votes }));\n\n        if (ratings.length === 0) {\n            return;\n        }\n\n        const { totalVotes, totalRating } = ratings.reduce(\n            (acc, rating) => ({\n                totalVotes: acc.totalVotes + rating.votes,\n                totalRating: acc.totalRating + rating.rate * rating.votes\n            }),\n            { totalVotes: 0, totalRating: 0 }\n        );\n\n        this.ratingItems.set(ratings);\n        this.internalRatingAverage.set(totalRating / totalVotes);\n        this.internalTotalRatings.set(totalVotes);\n    }\n\n    /**\n     * @hidden\n     * get converted value from original to view value with depends on halves\n     * For example,\n     *  original value is equal to 2.34, you will get and render 2\n     *  original value is equal to 3.74, you will get and render 4\n     */\n    private _parseValue(value: number): number {\n        if (!value || value === 0) {\n            return 0;\n        }\n        const integer = Math.floor(value);\n        const fractional = value % 1;\n        let v = integer;\n\n        if (this.allowHalves() && fractional > 0.25 && fractional <= 0.5) {\n            v = integer + 0.5;\n        } else if (fractional > 0.5) {\n            v = integer + 1;\n        }\n\n        return Math.min(this.indicatorCapacity(), v);\n    }\n\n    /**\n     * @hidden\n     * get rating icons array with value and unique id\n     */\n    private _getRates(): { id: string; value: number }[] {\n        const withHalves = this.allowHalves() ? 2 : 1;\n        const capacity = this.indicatorCapacity();\n        return Array(capacity * withHalves)\n            .fill(`rating-${this.ratingUID}`)\n            .map((name, index) => ({\n                id: `${name}-${index + 1}`,\n                value: (index + 1) / withHalves\n            }));\n    }\n\n    /**\n     * @hidden\n     * Get size class for the rating indicator\n     */\n    private _getSizeClass(size: RatingIndicatorSize): string {\n        return `${INDICATOR_PREFIX}--${size in RatingIndicatorSizeEnum ? size : 'md'}`;\n    }\n}\n","<ng-template #zeroRate let-halves=\"halves\">\n    <input\n        [attr.aria-label]=\"('coreRatingIndicator.ariaLabelReset' | fdTranslate)()\"\n        role=\"button\"\n        type=\"radio\"\n        class=\"fd-rating-indicator__input fd-rating-indicator__input--zero-rating\"\n        (change)=\"onSelect(0)\"\n        [disabled]=\"disabled() || nonInteractive() || displayMode()\"\n        name=\"rating-{{ ratingUID }}{{ halves ? '-halves' : '' }}\"\n        [attr.checked]=\"displayValue() === 0 ? true : null\"\n        value=\"0\"\n    />\n    <label class=\"fd-rating-indicator__label fd-rating-indicator__label--zero-rating\" aria-hidden=\"true\"></label>\n</ng-template>\n<!--  role=\"application\" is used in order to let user to change value with left/right arrows in JAWS, since JAWS ovverrides these actions -->\n<div\n    class=\"fd-rating-indicator__container\"\n    role=\"application\"\n    [attr.aria-roledescription]=\"ariaRoledescription() || ('coreRatingIndicator.ariaRoleDescription' | fdTranslate)()\"\n>\n    <!-- Zero value if we don't have provided value from user, `ratingAverage` or `ratings` -->\n    <ng-template [ngTemplateOutlet]=\"zeroRate\"></ng-template>\n    <!-- Available rate values -->\n    @for (rate of rates(); track rate.id; let i = $index) {\n        <input\n            [attr.aria-label]=\"i | ratingStarLabel: rates().length : allowHalves() : language()\"\n            role=\"button\"\n            type=\"radio\"\n            class=\"fd-rating-indicator__input\"\n            [disabled]=\"disabled() || nonInteractive() || displayMode()\"\n            [id]=\"rate.id\"\n            name=\"rating-{{ ratingUID }}\"\n            [value]=\"rate.value\"\n            [attr.checked]=\"displayValue() === rate.value ? true : null\"\n            (change)=\"onSelect(rate.value)\"\n        />\n        <label class=\"fd-rating-indicator__label\" [for]=\"rate.id\" aria-hidden=\"true\">\n            @if (ratedIcon()) {\n                <i class=\"fd-rating-indicator__label-rated\" [class]=\"unratedIcon()\"></i>\n            }\n            @if (unratedIcon()) {\n                <i class=\"fd-rating-indicator__label-unrated\" [class]=\"ratedIcon()\"></i>\n            }\n        </label>\n    }\n</div>\n<!-- Popover if displayAllRatings is true and we have ratings object -->\n@if (showDynamicText()) {\n    @if (displayAllRatings() && ratingItems().length) {\n        <span [fdPopoverTrigger]=\"allRatingContent\" class=\"fd-rating-indicator__dynamic-text\">\n            (<span [attr.aria-label]=\"('coreRatingIndicator.ariaLabelTotalRating' | fdTranslate)()\" fd-link>{{\n                computedTotalRatings\n            }}</span\n            >)\n        </span>\n    } @else if (computedTotalRatings !== undefined && computedTotalRatings !== null) {\n        <span class=\"fd-rating-indicator__dynamic-text\">({{ computedTotalRatings }})</span>\n    } @else {\n        <span class=\"fd-rating-indicator__dynamic-text\"\n            >({{ displayValue() }} {{ dynamicTextIndicator() }} {{ indicatorCapacity() }})</span\n        >\n    }\n}\n<fd-popover\n    #allRatingContent\n    [triggers]=\"['mouseenter', 'mouseleave']\"\n    [noArrow]=\"false\"\n    placement=\"top\"\n    additionalBodyClass=\"fd-rating-indicator__popover\"\n>\n    @for (rating of ratingItems(); track rating) {\n        <div class=\"fd-rating-indicator__sum-row\" [class]=\"sizeClass()\">\n            <div class=\"fd-rating-indicator__container\">\n                @for (rate of rates(); track rate.id) {\n                    <span\n                        [class.fd-rating-indicator__input-checked]=\"rate.value === rating.rate\"\n                        class=\"fd-rating-indicator__input\"\n                    ></span>\n                    <label class=\"fd-rating-indicator__label\">\n                        @if (ratedIcon()) {\n                            <i class=\"fd-rating-indicator__label-rated\" [class]=\"unratedIcon()\"></i>\n                        }\n                        @if (unratedIcon()) {\n                            <i class=\"fd-rating-indicator__label-unrated\" [class]=\"ratedIcon()\"></i>\n                        }\n                    </label>\n                }\n            </div>\n            ({{ rating.votes }})\n        </div>\n    }\n</fd-popover>\n","import { NgModule } from '@angular/core';\n\nimport { RatingIndicatorComponent } from './components/rating-indicator.component';\nimport { RatingStarLabelPipe } from './pipes/rating-star-label.pipe';\n\n/**\n * @deprecated\n * Use direct import of `RatingIndicatorComponent`\n */\n@NgModule({\n    imports: [RatingIndicatorComponent, RatingStarLabelPipe],\n    exports: [RatingIndicatorComponent, RatingStarLabelPipe]\n})\nexport class RatingIndicatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}