ngx-stars-rating
Version:
## Overview Ngx Stars Rating is a straightforward Angular module designed for Angular 14 and above. It offers customizable star icons using Material Icons, Antd Icons, and other options.
1 lines • 9.45 kB
Source Map (JSON)
{"version":3,"file":"ngx-stars-rating.mjs","sources":["../../../projects/ngx-stars-rating/src/lib/globals/default-options.ts","../../../projects/ngx-stars-rating/src/lib/ngx-stars-rating.component.ts","../../../projects/ngx-stars-rating/src/lib/ngx-stars-rating.module.ts","../../../projects/ngx-stars-rating/src/public-api.ts","../../../projects/ngx-stars-rating/src/ngx-stars-rating.ts"],"sourcesContent":["import { IRatingOptions } from \"../models\";\n\nexport const DEFAULT_RATING_OPTIONS: IRatingOptions = {\n starsCount: 5\n}","import { Component, Input, OnInit, Output, TemplateRef, EventEmitter, ViewEncapsulation } from '@angular/core';\n\nimport { DEFAULT_RATING_OPTIONS } from './globals';\nimport { IRatingOptions } from './models';\n\n@Component({\n selector: 'ngx-stars-rating',\n template: `\n <div class=\"rating-wrapper\" (mouseleave)=\"onMouseLeave()\">\n <div class=\"stars-container\">\n <span class=\"star-item-wrapper\" *ngFor=\"let item of starItems; let ind=index\" (click)=\"onClickRating(ind)\">\n <span class=\"star-item\" [class.star-item-hoverable]=\"options.hoverable\" [class.active-star]=\"ind <= activeStarIndex || ind<=hoveringStarIndex\" (mouseenter)=\"onStarHover(ind)\">\n <ng-container *ngIf=\"!starTemplate;else starTemplateRef\">\n ★\n </ng-container>\n <ng-template #starTemplateRef [ngTemplateOutlet]=\"starTemplate\">\n </ng-template>\n </span>\n <span class=\"star-item star-item-fill\" *ngIf=\"halfStarIndex === ind && !isHovering\"\n [style.width.%]=\"starFillPercentage\">\n <ng-container *ngIf=\"!starTemplate;else starTemplateRef\">\n ★\n </ng-container>\n <ng-template #starTemplateRef [ngTemplateOutlet]=\"starTemplate\">\n </ng-template>\n </span>\n </span>\n </div>\n </div>\n `,\n styles: [\n `\n .rating-wrapper {\n width: 150px;\n position: relative;\n color: transparent;\n }\n .rating-wrapper .stars-container {\n white-space: nowrap;\n display: flex;\n }\n .rating-wrapper .star-item-wrapper {\n position: relative;\n }\n .rating-wrapper .star-item-wrapper .star-item {\n font-size: 30px;\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n display: flex;\n color: #bdbdbd;\n }\n .rating-wrapper .star-item-wrapper .star-item-hoverable:hover {\n color: gold;\n }\n .rating-wrapper .star-item-wrapper .star-item-fill {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n width: 0;\n color: gold;\n }\n .rating-wrapper .active-star {\n color: gold !important;\n } \n `\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class NgxStarsRatingComponent implements OnInit {\n private _options: IRatingOptions;\n private _rate: number = 0;\n @Input() set options($event: IRatingOptions) {\n if (!$event) {\n return;\n }\n this._options = $event;\n }\n @Input() set rate($event: number) {\n this._rate = $event;\n this._calculateStartIndexes();\n }\n @Input() public starTemplate!: TemplateRef<any>;\n @Output('onRate') private _onRateEvent: EventEmitter<number> = new EventEmitter<number>();\n public isHovering: boolean = false;\n public starItems: number[] = [];\n public activeStarIndex!: number;\n public halfStarIndex!: number;\n public starFillPercentage!: number;\n public hoveringStarIndex!: number;\n\n get options(): IRatingOptions {\n return this._options;\n }\n\n constructor() {\n this._options = DEFAULT_RATING_OPTIONS;\n }\n\n ngOnInit(): void {\n this._setStarItems();\n }\n\n private _setStarItems(): void {\n const { starsCount } = this._options;\n this.starItems = Array.from(Array(starsCount));\n this._calculateStartIndexes();\n }\n\n public onStarHover(starIndex: number): void {\n if (!this._options.hoverable) {\n return;\n }\n this.hoveringStarIndex = starIndex;\n this.isHovering = true;\n }\n\n public onMouseLeave(): void {\n if (!this._options.hoverable) {\n return;\n }\n this.hoveringStarIndex = -1;\n this.isHovering = false;\n }\n\n public onClickRating(rateIndex: number): void {\n if (!this._options.clickable) {\n return;\n }\n const rate: number = rateIndex + 1;\n this._onRateEvent.emit(rate);\n }\n\n private _calculateStartIndexes(): void {\n this.activeStarIndex = Math.floor(this._rate) - 1;\n this.halfStarIndex = Math.ceil(this._rate) - 1;\n this.starFillPercentage = (this._rate - Math.floor(this._rate)) * 100;\n if (this.starFillPercentage > 100) {\n this.starFillPercentage = 100;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgxStarsRatingComponent } from './ngx-stars-rating.component';\n\n\n\n@NgModule({\n declarations: [\n NgxStarsRatingComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgxStarsRatingComponent\n ]\n})\nexport class NgxStarsRatingModule { }\n","/*\n * Public API Surface of ngx-stars-rating\n */\n\nexport * from './lib/ngx-stars-rating.component';\nexport * from './lib/ngx-stars-rating.module';\nexport * from './lib/models/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}