UNPKG

ngx-star-rating-input

Version:

An Angular library for displaying star ratings.

1 lines 7.79 kB
{"version":3,"file":"ngx-star-rating-input.mjs","sources":["../../../projects/star-rating/src/lib/star-rating/star-rating.component.ts","../../../projects/star-rating/src/lib/star-rating/star-rating.component.html","../../../projects/star-rating/src/lib/star-rating.module.ts","../../../projects/star-rating/src/public-api.ts","../../../projects/star-rating/src/ngx-star-rating-input.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, SimpleChanges, OnChanges, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ngx-star-rating',\r\n templateUrl: './star-rating.component.html',\r\n styleUrl: './star-rating.component.css',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => StarRatingComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class StarRatingComponent implements OnChanges, ControlValueAccessor {\r\n @Input() count: number = 5;\r\n @Input() filledColor: string = 'gold';\r\n @Input() emptyColor: string = 'lightgray';\r\n @Input() fillOnHover: boolean = true;\r\n @Input() size: number = 14;\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() ratingChange = new EventEmitter<number>();\r\n\r\n stars: number[] = [];\r\n selectedRating = 0;\r\n hoveredRating: number | null = null;\r\n\r\n private onChange = (value: number) => { };\r\n private onTouched = () => { };\r\n\r\n constructor() {\r\n this.updateStars();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['count']) {\r\n this.updateStars();\r\n }\r\n }\r\n\r\n private updateStars(): void {\r\n this.stars = Array.from({ length: this.count }, (_, i) => i + 1);\r\n }\r\n\r\n isStarFilled(index: number): boolean {\r\n return !this.disabled && index <= (this.hoveredRating ?? this.selectedRating);\r\n }\r\n\r\n onMouseEnter(rating: number): void {\r\n if (!this.disabled && this.fillOnHover) {\r\n this.hoveredRating = rating;\r\n }\r\n }\r\n\r\n onMouseLeave(): void {\r\n if (!this.disabled && this.fillOnHover) {\r\n this.hoveredRating = null;\r\n }\r\n }\r\n\r\n onStarClick(rating: number): void {\r\n if (!this.disabled) {\r\n this.selectedRating = rating;\r\n this.ratingChange.emit(this.selectedRating);\r\n this.onChange(this.selectedRating);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n // ControlValueAccessor methods\r\n writeValue(value: number): void {\r\n this.selectedRating = value || 0;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"rating-box {{disabled ? 'disabled' : ''}}\">\r\n @for (star of stars;let i = $index; track i) {\r\n <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" [attr.width]=\"size\"\r\n (click)=\"onStarClick(star)\" [attr.height]=\"size\" (mouseenter)=\"onMouseEnter(star)\" (mouseleave)=\"onMouseLeave()\"\r\n viewBox=\"0 0 64 64\" enable-background=\"new 0 0 64 64\" xml:space=\"preserve\">\r\n <path [attr.fill]=\"isStarFilled(star) ? filledColor : emptyColor\" d=\"M63.893,24.277c-0.238-0.711-0.854-1.229-1.595-1.343l-19.674-3.006L33.809,1.15\r\n\t C33.479,0.448,32.773,0,31.998,0s-1.48,0.448-1.811,1.15l-8.815,18.778L1.698,22.935c-0.741,0.113-1.356,0.632-1.595,1.343\r\n\t c-0.238,0.71-0.059,1.494,0.465,2.031l14.294,14.657L11.484,61.67c-0.124,0.756,0.195,1.517,0.822,1.957\r\n\t c0.344,0.243,0.747,0.366,1.151,0.366c0.332,0,0.666-0.084,0.968-0.25l17.572-9.719l17.572,9.719c0.302,0.166,0.636,0.25,0.968,0.25\r\n\t c0.404,0,0.808-0.123,1.151-0.366c0.627-0.44,0.946-1.201,0.822-1.957l-3.378-20.704l14.294-14.657\r\n\t C63.951,25.771,64.131,24.987,63.893,24.277z\" />\r\n </svg>\r\n }\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { StarRatingComponent } from './star-rating/star-rating.component';\r\n\r\n@NgModule({\r\n declarations: [StarRatingComponent],\r\n exports: [StarRatingComponent]\r\n})\r\nexport class NgxStarRating { }\r\n","/*\r\n * Public API Surface of star-rating\r\n */\r\n\r\nexport * from './lib/star-rating.module';\r\nexport * from './lib/star-rating/star-rating.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}