@fundamental-ngx/core 0.61.2-rc.8 → 0.61.2

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.
Files changed (114) hide show
  1. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
  2. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
  4. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
  6. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
  8. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
  10. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
  12. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
  14. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
  16. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
  18. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
  20. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
  22. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  24. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
  26. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
  28. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  30. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
  32. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  34. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-menu.mjs +1 -3
  36. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
  38. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +17 -23
  40. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-multi-input.mjs +2 -2
  42. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
  44. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
  46. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  48. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  50. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  52. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
  54. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
  56. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-popover.mjs +6 -0
  58. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
  60. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
  62. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
  64. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
  66. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
  68. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
  70. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  72. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  74. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  76. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
  78. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
  80. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
  82. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
  84. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
  86. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
  88. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
  90. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
  92. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
  94. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
  96. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  97. package/package.json +3 -3
  98. package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
  99. package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
  100. package/types/fundamental-ngx-core-combobox.d.ts +2 -4
  101. package/types/fundamental-ngx-core-datetime.d.ts +5 -1
  102. package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
  103. package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
  104. package/types/fundamental-ngx-core-menu.d.ts +0 -2
  105. package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
  106. package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
  107. package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
  108. package/types/fundamental-ngx-core-notification.d.ts +7 -5
  109. package/types/fundamental-ngx-core-pagination.d.ts +4 -3
  110. package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
  111. package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
  112. package/types/fundamental-ngx-core-slider.d.ts +1 -1
  113. package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
  114. package/types/fundamental-ngx-core-token.d.ts +4 -4
@@ -1 +1 @@
1
- {"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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"}
1
+ {"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 { toSignal } from '@angular/core/rxjs-interop';\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, FdLanguage, FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Observable } from 'rxjs';\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 = toSignal(inject<Observable<FdLanguage>>(FD_LANGUAGE), {\n initialValue: {} as FdLanguage\n });\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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"}
@@ -6,7 +6,7 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
6
  import * as i1 from '@fundamental-ngx/cdk/utils';
7
7
  import { RtlService, destroyObservable, KeyUtil, FocusableItemDirective, FocusableListDirective } from '@fundamental-ngx/cdk/utils';
8
8
  import { FD_BUTTON_COMPONENT } from '@fundamental-ngx/core/button';
9
- import { FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';
9
+ import { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
10
10
  import { Subject, merge, EMPTY, asyncScheduler, fromEvent } from 'rxjs';
11
11
  import { startWith, observeOn, filter, tap, takeUntil } from 'rxjs/operators';
12
12
 
@@ -43,7 +43,7 @@ class SegmentedButtonComponent {
43
43
  /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */
44
44
  this._onRefresh$ = new Subject();
45
45
  /** @hidden */
46
- this._langSignal = inject(FD_LANGUAGE_SIGNAL);
46
+ this._lang$ = inject(FD_LANGUAGE);
47
47
  /** @hidden */
48
48
  this._translationResolver = inject(TranslationResolver);
49
49
  /** @hidden */
@@ -62,14 +62,6 @@ class SegmentedButtonComponent {
62
62
  this._focusedItemId.set(item.id);
63
63
  });
64
64
  this._destroyRef.onDestroy(() => itemFocusedSubscription.unsubscribe());
65
- // Effect for language changes
66
- effect(() => {
67
- const lang = this._langSignal();
68
- this._groupRoleDescription = this._translationResolver.resolve(lang, 'segmentedButton.groupRoleDescription');
69
- this._buttonRoleDescription = this._translationResolver.resolve(lang, 'segmentedButton.buttonRoleDescription');
70
- this._updateButtonRoleDescriptions();
71
- this._changeDetRef.markForCheck();
72
- });
73
65
  }
74
66
  /** @hidden */
75
67
  _click(event) {
@@ -78,6 +70,15 @@ class SegmentedButtonComponent {
78
70
  }
79
71
  }
80
72
  /** @hidden */
73
+ ngOnInit() {
74
+ this._lang$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((lang) => {
75
+ this._groupRoleDescription = this._translationResolver.resolve(lang, 'segmentedButton.groupRoleDescription');
76
+ this._buttonRoleDescription = this._translationResolver.resolve(lang, 'segmentedButton.buttonRoleDescription');
77
+ this._updateButtonRoleDescriptions();
78
+ this._changeDetRef.markForCheck();
79
+ });
80
+ }
81
+ /** @hidden */
81
82
  ngAfterViewInit() {
82
83
  this._listenToButtonChanges();
83
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-segmented-button.mjs","sources":["../../../../libs/core/segmented-button/segmented-button.component.ts","../../../../libs/core/segmented-button/segmented-button.module.ts","../../../../libs/core/segmented-button/fundamental-ngx-core-segmented-button.ts"],"sourcesContent":["import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n Host,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n FocusableItemDirective,\n FocusableListDirective,\n KeyUtil,\n Nullable,\n RtlService,\n destroyObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent, FD_BUTTON_COMPONENT } from '@fundamental-ngx/core/button';\nimport { FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { EMPTY, Subject, asyncScheduler, fromEvent, merge } from 'rxjs';\nimport { filter, observeOn, startWith, takeUntil, tap } from 'rxjs/operators';\n\nexport type SegmentedButtonValue = string | (string | null)[] | null;\n\n/**\n * Container for grouped buttons.\n *\n * ```html\n * <fd-segmented-button [(ngModel)]=\"value\">\n * <button fd-button value=\"first\">Button</button>\n * <button fd-button value=\"second\">Button</button>\n * <button fd-button value=\"third\">Button</button>\n * </fd-segmented-button>\n * ```\n */\n@Component({\n selector: 'fd-segmented-button',\n template: `<ng-content></ng-content>`,\n styleUrl: './segmented-button.component.scss',\n host: {\n role: 'listbox',\n '[class.fd-segmented-button]': 'true',\n '[class.fd-segmented-button--vertical]': 'vertical',\n '[attr.aria-multiselectable]': 'toggle',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[attr.aria-roledescription]': '_groupRoleDescription',\n '[attr.aria-activedescendant]': '_focusedItemId()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentedButtonComponent),\n multi: true\n }\n ],\n hostDirectives: [FocusableListDirective]\n})\nexport class SegmentedButtonComponent implements AfterViewInit, ControlValueAccessor, OnDestroy, OnChanges {\n /** Whether segmented button is on toggle mode, which allows to toggle more than 1 button */\n @Input({ transform: booleanAttribute })\n toggle = false;\n\n /**\n * Whether segmented button is on vertical mode,\n * which allows to display buttons vertically\n **/\n @Input({ transform: booleanAttribute })\n vertical = false;\n\n /** @hidden */\n @ContentChildren(FD_BUTTON_COMPONENT)\n _buttons: QueryList<ButtonComponent>;\n\n /** @hidden */\n @ContentChildren(FocusableItemDirective)\n _focusableItems: QueryList<FocusableItemDirective>;\n\n /** @hidden */\n _groupRoleDescription: string;\n\n /** @hidden */\n _buttonRoleDescription: string;\n\n /** @hidden */\n protected _focusedItemId = signal<string | null | undefined>(null);\n\n /**\n * Value of segmented button can have 2 types:\n * - string, when there is no toggle mode and only 1 value can be chosen.\n * - array of strings, when there is toggle mode and more than 1 value can be chosen.\n */\n private _currentValue: SegmentedButtonValue;\n\n /** @hidden */\n private _isDisabled = false;\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n /** @hidden */\n private _translationResolver = inject(TranslationResolver);\n\n /** @hidden */\n private renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private readonly _changeDetRef: ChangeDetectorRef,\n private readonly _elementRef: ElementRef,\n private readonly _destroyRef: DestroyRef,\n private readonly _ngZone: NgZone,\n @Host() private _focusableList: FocusableListDirective\n ) {\n this._focusableList.navigationDirection.set(this.vertical ? 'vertical' : 'horizontal');\n effect(() => {\n this._focusableList.contentDirection.set(this._rtlService?.rtl() ? 'rtl' : 'ltr');\n });\n const itemFocusedSubscription = this._focusableList.itemFocused.subscribe((item) => {\n this._focusedItemId.set(item.id);\n });\n this._destroyRef.onDestroy(() => itemFocusedSubscription.unsubscribe());\n\n // Effect for language changes\n effect(() => {\n const lang = this._langSignal();\n this._groupRoleDescription = this._translationResolver.resolve(\n lang,\n 'segmentedButton.groupRoleDescription'\n );\n this._buttonRoleDescription = this._translationResolver.resolve(\n lang,\n 'segmentedButton.buttonRoleDescription'\n );\n this._updateButtonRoleDescriptions();\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n protected _click(event: MouseEvent): void {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n\n /** @hidden */\n onChange: (value: SegmentedButtonValue) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenToButtonChanges();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.vertical) {\n this._focusableList.navigationDirection.set(this.vertical ? 'vertical' : 'horizontal');\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onRefresh$.complete();\n this._buttons = null as any;\n this._focusableItems = null as any;\n }\n\n /** @hidden */\n writeValue(values: string[] | string): void {\n this._currentValue = values;\n this._pickButtonsByValues(values);\n }\n\n /**\n * @hidden\n * @param fn User defined function that handles the *onChange* event of the SegmentedButtons.\n */\n registerOnChange(fn: (value: SegmentedButtonValue) => void): void {\n this.onChange = fn;\n }\n\n /**\n * @hidden\n * @param fn User defined function that handles the *onTouch* event of the SegmentedButtons.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * @hidden\n * @param isDisabled Sets the value of the *disabled* property of the SegmentedButtons.\n */\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled = isDisabled;\n this._toggleDisableButtons(isDisabled);\n this._onRefresh$.next();\n\n if (!isDisabled) {\n this._ngZone.run(() => {\n if (this._buttons) {\n this._listenToButtonChanges();\n this._pickButtonsByValues(this._currentValue);\n }\n });\n }\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _listenToButtonChanges(): void {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._onRefresh$.next();\n\n merge(this._buttons.changes ?? EMPTY, this._focusableItems.changes ?? EMPTY)\n .pipe(startWith(1), observeOn(asyncScheduler), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._toggleDisableButtons(this._isDisabled);\n this._pickButtonsByValues(this._currentValue);\n this._buttons.forEach((button, index) => {\n this._setButtonAttributes(button, index);\n this._listenToTriggerEvents(button);\n });\n });\n }\n\n /** @hidden */\n private _listenToTriggerEvents(buttonComponent: ButtonComponent): void {\n const htmlElement = buttonComponent.elementRef.nativeElement;\n\n const refresh$ = merge(destroyObservable(this._destroyRef), this._onRefresh$);\n\n const triggerEvents$ = merge(\n fromEvent(htmlElement, 'click'),\n fromEvent<KeyboardEvent>(htmlElement, 'keydown').pipe(\n filter((event) => KeyUtil.isKeyCode(event, [ENTER, SPACE])),\n tap((event) => {\n event.preventDefault();\n this.onTouched();\n })\n )\n );\n\n triggerEvents$.pipe(takeUntil(refresh$)).subscribe(() => this._handleTriggerOnButton(buttonComponent));\n }\n\n /** @hidden */\n private _setButtonAttributes(buttonComponent: ButtonComponent, index: number): void {\n const el = buttonComponent.elementRef.nativeElement;\n this.renderer.setAttribute(el, 'role', 'option');\n this.renderer.setAttribute(el, 'aria-roledescription', this._buttonRoleDescription);\n this.renderer.setAttribute(el, 'aria-posinset', String(index + 1));\n this.renderer.setAttribute(el, 'aria-setsize', String(this._buttons.length));\n }\n\n private _updateButtonRoleDescriptions(): void {\n if (!this._buttons) {\n return;\n }\n this._buttons.forEach((button) => {\n this.renderer.setAttribute(\n button.elementRef.nativeElement,\n 'aria-roledescription',\n this._buttonRoleDescription\n );\n });\n }\n\n /** @hidden */\n private _handleTriggerOnButton(buttonComponent: ButtonComponent): void {\n if (!this._isButtonDisabled(buttonComponent)) {\n if (!this.toggle) {\n this._buttons.forEach((button) => this._deselectButton(button));\n this._selectButton(buttonComponent);\n this._propagateChange();\n this._changeDetRef.markForCheck();\n } else {\n this._toggleButton(buttonComponent);\n this._propagateChange();\n this._changeDetRef.markForCheck();\n }\n }\n }\n\n /** @hidden */\n private _propagateChange(): void {\n const selectedValue = this._getValuesBySelected();\n this.onChange(selectedValue);\n this._currentValue = selectedValue;\n }\n\n /** @hidden */\n private _toggleButton(buttonComponent: ButtonComponent): void {\n if (this._isButtonSelected(buttonComponent)) {\n this._deselectButton(buttonComponent);\n } else {\n this._selectButton(buttonComponent);\n }\n }\n\n /** @hidden */\n private _pickButtonsByValues(values: SegmentedButtonValue): void {\n if (!this._buttons) {\n return;\n }\n this._buttons.forEach((button) => this._deselectButton(button));\n this._getButtonsByValues(values).forEach((button) => this._selectButton(button));\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _getButtonsByValues(values: SegmentedButtonValue): ButtonComponent[] {\n if (!values) {\n return [];\n }\n\n if (Array.isArray(values)) {\n return this._buttons.filter((button) => !!values.find((value) => this._getButtonValue(button) === value));\n } else {\n return this._buttons.filter((button) => this._getButtonValue(button) === values);\n }\n }\n\n /** @hidden */\n private _selectButton(buttonComponent: ButtonComponent): void {\n buttonComponent.setSelected(true);\n }\n\n /** @hidden */\n private _deselectButton(buttonComponent: ButtonComponent): void {\n buttonComponent.setSelected(false);\n }\n\n /** @hidden */\n private _isButtonSelected(buttonComponent: ButtonComponent): Nullable<boolean> {\n return !!buttonComponent.isSelected();\n }\n\n /** @hidden */\n private _isButtonDisabled(buttonComponent: ButtonComponent): boolean {\n return buttonComponent.isDisabled() || buttonComponent.ariaDisabled();\n }\n\n /** @hidden */\n private _toggleDisableButtons(disable: boolean): void {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._buttons.forEach((button) => button.setDisabled(disable));\n\n this._focusableItems.forEach((focusableItemDirective) => {\n focusableItemDirective.setTabbable(!disable);\n focusableItemDirective.setFocusable(!disable);\n });\n if (disable) {\n this._buttons.forEach((button) => {\n button.elementRef.nativeElement.role = 'option';\n this._listenToTriggerEvents(button);\n });\n }\n\n this._changeDetRef.markForCheck();\n }\n\n /** @hidden */\n private _getButtonValue(buttonComponent: ButtonComponent): string | null {\n const element = buttonComponent.elementRef.nativeElement;\n if (element instanceof HTMLButtonElement) {\n return element.value;\n }\n return element.getAttribute('value');\n }\n\n /** @hidden\n * Returns values depending on selected state of buttons\n */\n private _getValuesBySelected(): SegmentedButtonValue {\n if (!this._buttons) {\n return [];\n }\n\n const resButtons = this._buttons\n .filter((button) => !!this._isButtonSelected(button))\n .map((button) => this._getButtonValue(button));\n if (!this.toggle) {\n return resButtons.length === 1 ? resButtons[0] : null;\n } else {\n return resButtons;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SegmentedButtonComponent } from './segmented-button.component';\n\n/**\n * @deprecated\n * Use direct `SegmentedButtonComponent` import instead.\n */\n@NgModule({\n imports: [SegmentedButtonComponent],\n exports: [SegmentedButtonComponent]\n})\nexport class SegmentedButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-segmented-button.mjs","sources":["../../../../libs/core/segmented-button/segmented-button.component.ts","../../../../libs/core/segmented-button/segmented-button.module.ts","../../../../libs/core/segmented-button/fundamental-ngx-core-segmented-button.ts"],"sourcesContent":["import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n Host,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n FocusableItemDirective,\n FocusableListDirective,\n KeyUtil,\n Nullable,\n RtlService,\n destroyObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent, FD_BUTTON_COMPONENT } from '@fundamental-ngx/core/button';\nimport { FD_LANGUAGE, FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { EMPTY, Subject, asyncScheduler, fromEvent, merge } from 'rxjs';\nimport { filter, observeOn, startWith, takeUntil, tap } from 'rxjs/operators';\n\nexport type SegmentedButtonValue = string | (string | null)[] | null;\n\n/**\n * Container for grouped buttons.\n *\n * ```html\n * <fd-segmented-button [(ngModel)]=\"value\">\n * <button fd-button value=\"first\">Button</button>\n * <button fd-button value=\"second\">Button</button>\n * <button fd-button value=\"third\">Button</button>\n * </fd-segmented-button>\n * ```\n */\n@Component({\n selector: 'fd-segmented-button',\n template: `<ng-content></ng-content>`,\n styleUrl: './segmented-button.component.scss',\n host: {\n role: 'listbox',\n '[class.fd-segmented-button]': 'true',\n '[class.fd-segmented-button--vertical]': 'vertical',\n '[attr.aria-multiselectable]': 'toggle',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[attr.aria-roledescription]': '_groupRoleDescription',\n '[attr.aria-activedescendant]': '_focusedItemId()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentedButtonComponent),\n multi: true\n }\n ],\n hostDirectives: [FocusableListDirective]\n})\nexport class SegmentedButtonComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnDestroy, OnChanges {\n /** Whether segmented button is on toggle mode, which allows to toggle more than 1 button */\n @Input({ transform: booleanAttribute })\n toggle = false;\n\n /**\n * Whether segmented button is on vertical mode,\n * which allows to display buttons vertically\n **/\n @Input({ transform: booleanAttribute })\n vertical = false;\n\n /** @hidden */\n @ContentChildren(FD_BUTTON_COMPONENT)\n _buttons: QueryList<ButtonComponent>;\n\n /** @hidden */\n @ContentChildren(FocusableItemDirective)\n _focusableItems: QueryList<FocusableItemDirective>;\n\n /** @hidden */\n _groupRoleDescription: string;\n\n /** @hidden */\n _buttonRoleDescription: string;\n\n /** @hidden */\n protected _focusedItemId = signal<string | null | undefined>(null);\n\n /**\n * Value of segmented button can have 2 types:\n * - string, when there is no toggle mode and only 1 value can be chosen.\n * - array of strings, when there is toggle mode and more than 1 value can be chosen.\n */\n private _currentValue: SegmentedButtonValue;\n\n /** @hidden */\n private _isDisabled = false;\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _lang$ = inject(FD_LANGUAGE);\n\n /** @hidden */\n private _translationResolver = inject(TranslationResolver);\n\n /** @hidden */\n private renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private readonly _changeDetRef: ChangeDetectorRef,\n private readonly _elementRef: ElementRef,\n private readonly _destroyRef: DestroyRef,\n private readonly _ngZone: NgZone,\n @Host() private _focusableList: FocusableListDirective\n ) {\n this._focusableList.navigationDirection.set(this.vertical ? 'vertical' : 'horizontal');\n effect(() => {\n this._focusableList.contentDirection.set(this._rtlService?.rtl() ? 'rtl' : 'ltr');\n });\n const itemFocusedSubscription = this._focusableList.itemFocused.subscribe((item) => {\n this._focusedItemId.set(item.id);\n });\n this._destroyRef.onDestroy(() => itemFocusedSubscription.unsubscribe());\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n protected _click(event: MouseEvent): void {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._lang$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((lang: FdLanguage) => {\n this._groupRoleDescription = this._translationResolver.resolve(\n lang,\n 'segmentedButton.groupRoleDescription'\n );\n this._buttonRoleDescription = this._translationResolver.resolve(\n lang,\n 'segmentedButton.buttonRoleDescription'\n );\n this._updateButtonRoleDescriptions();\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n onChange: (value: SegmentedButtonValue) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenToButtonChanges();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.vertical) {\n this._focusableList.navigationDirection.set(this.vertical ? 'vertical' : 'horizontal');\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onRefresh$.complete();\n this._buttons = null as any;\n this._focusableItems = null as any;\n }\n\n /** @hidden */\n writeValue(values: string[] | string): void {\n this._currentValue = values;\n this._pickButtonsByValues(values);\n }\n\n /**\n * @hidden\n * @param fn User defined function that handles the *onChange* event of the SegmentedButtons.\n */\n registerOnChange(fn: (value: SegmentedButtonValue) => void): void {\n this.onChange = fn;\n }\n\n /**\n * @hidden\n * @param fn User defined function that handles the *onTouch* event of the SegmentedButtons.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * @hidden\n * @param isDisabled Sets the value of the *disabled* property of the SegmentedButtons.\n */\n setDisabledState(isDisabled: boolean): void {\n this._isDisabled = isDisabled;\n this._toggleDisableButtons(isDisabled);\n this._onRefresh$.next();\n\n if (!isDisabled) {\n this._ngZone.run(() => {\n if (this._buttons) {\n this._listenToButtonChanges();\n this._pickButtonsByValues(this._currentValue);\n }\n });\n }\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _listenToButtonChanges(): void {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._onRefresh$.next();\n\n merge(this._buttons.changes ?? EMPTY, this._focusableItems.changes ?? EMPTY)\n .pipe(startWith(1), observeOn(asyncScheduler), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._toggleDisableButtons(this._isDisabled);\n this._pickButtonsByValues(this._currentValue);\n this._buttons.forEach((button, index) => {\n this._setButtonAttributes(button, index);\n this._listenToTriggerEvents(button);\n });\n });\n }\n\n /** @hidden */\n private _listenToTriggerEvents(buttonComponent: ButtonComponent): void {\n const htmlElement = buttonComponent.elementRef.nativeElement;\n\n const refresh$ = merge(destroyObservable(this._destroyRef), this._onRefresh$);\n\n const triggerEvents$ = merge(\n fromEvent(htmlElement, 'click'),\n fromEvent<KeyboardEvent>(htmlElement, 'keydown').pipe(\n filter((event) => KeyUtil.isKeyCode(event, [ENTER, SPACE])),\n tap((event) => {\n event.preventDefault();\n this.onTouched();\n })\n )\n );\n\n triggerEvents$.pipe(takeUntil(refresh$)).subscribe(() => this._handleTriggerOnButton(buttonComponent));\n }\n\n /** @hidden */\n private _setButtonAttributes(buttonComponent: ButtonComponent, index: number): void {\n const el = buttonComponent.elementRef.nativeElement;\n this.renderer.setAttribute(el, 'role', 'option');\n this.renderer.setAttribute(el, 'aria-roledescription', this._buttonRoleDescription);\n this.renderer.setAttribute(el, 'aria-posinset', String(index + 1));\n this.renderer.setAttribute(el, 'aria-setsize', String(this._buttons.length));\n }\n\n private _updateButtonRoleDescriptions(): void {\n if (!this._buttons) {\n return;\n }\n this._buttons.forEach((button) => {\n this.renderer.setAttribute(\n button.elementRef.nativeElement,\n 'aria-roledescription',\n this._buttonRoleDescription\n );\n });\n }\n\n /** @hidden */\n private _handleTriggerOnButton(buttonComponent: ButtonComponent): void {\n if (!this._isButtonDisabled(buttonComponent)) {\n if (!this.toggle) {\n this._buttons.forEach((button) => this._deselectButton(button));\n this._selectButton(buttonComponent);\n this._propagateChange();\n this._changeDetRef.markForCheck();\n } else {\n this._toggleButton(buttonComponent);\n this._propagateChange();\n this._changeDetRef.markForCheck();\n }\n }\n }\n\n /** @hidden */\n private _propagateChange(): void {\n const selectedValue = this._getValuesBySelected();\n this.onChange(selectedValue);\n this._currentValue = selectedValue;\n }\n\n /** @hidden */\n private _toggleButton(buttonComponent: ButtonComponent): void {\n if (this._isButtonSelected(buttonComponent)) {\n this._deselectButton(buttonComponent);\n } else {\n this._selectButton(buttonComponent);\n }\n }\n\n /** @hidden */\n private _pickButtonsByValues(values: SegmentedButtonValue): void {\n if (!this._buttons) {\n return;\n }\n this._buttons.forEach((button) => this._deselectButton(button));\n this._getButtonsByValues(values).forEach((button) => this._selectButton(button));\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _getButtonsByValues(values: SegmentedButtonValue): ButtonComponent[] {\n if (!values) {\n return [];\n }\n\n if (Array.isArray(values)) {\n return this._buttons.filter((button) => !!values.find((value) => this._getButtonValue(button) === value));\n } else {\n return this._buttons.filter((button) => this._getButtonValue(button) === values);\n }\n }\n\n /** @hidden */\n private _selectButton(buttonComponent: ButtonComponent): void {\n buttonComponent.setSelected(true);\n }\n\n /** @hidden */\n private _deselectButton(buttonComponent: ButtonComponent): void {\n buttonComponent.setSelected(false);\n }\n\n /** @hidden */\n private _isButtonSelected(buttonComponent: ButtonComponent): Nullable<boolean> {\n return !!buttonComponent.isSelected();\n }\n\n /** @hidden */\n private _isButtonDisabled(buttonComponent: ButtonComponent): boolean {\n return buttonComponent.isDisabled() || buttonComponent.ariaDisabled();\n }\n\n /** @hidden */\n private _toggleDisableButtons(disable: boolean): void {\n if (!this._buttons || !this._focusableItems) {\n return;\n }\n\n this._buttons.forEach((button) => button.setDisabled(disable));\n\n this._focusableItems.forEach((focusableItemDirective) => {\n focusableItemDirective.setTabbable(!disable);\n focusableItemDirective.setFocusable(!disable);\n });\n if (disable) {\n this._buttons.forEach((button) => {\n button.elementRef.nativeElement.role = 'option';\n this._listenToTriggerEvents(button);\n });\n }\n\n this._changeDetRef.markForCheck();\n }\n\n /** @hidden */\n private _getButtonValue(buttonComponent: ButtonComponent): string | null {\n const element = buttonComponent.elementRef.nativeElement;\n if (element instanceof HTMLButtonElement) {\n return element.value;\n }\n return element.getAttribute('value');\n }\n\n /** @hidden\n * Returns values depending on selected state of buttons\n */\n private _getValuesBySelected(): SegmentedButtonValue {\n if (!this._buttons) {\n return [];\n }\n\n const resButtons = this._buttons\n .filter((button) => !!this._isButtonSelected(button))\n .map((button) => this._getButtonValue(button));\n if (!this.toggle) {\n return resButtons.length === 1 ? resButtons[0] : null;\n } else {\n return resButtons;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SegmentedButtonComponent } from './segmented-button.component';\n\n/**\n * @deprecated\n * Use direct `SegmentedButtonComponent` import instead.\n */\n@NgModule({\n imports: [SegmentedButtonComponent],\n exports: [SegmentedButtonComponent]\n})\nexport class SegmentedButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}