ngx-stars
Version:
Simple stars rating component for Angular >= 2
1 lines • 16.6 kB
Source Map (JSON)
{"version":3,"file":"ngx-stars.mjs","sources":["../../../projects/ngx-stars/src/lib/ngx-stars.component.ts","../../../projects/ngx-stars/src/lib/ngx-stars.component.html","../../../projects/ngx-stars/src/lib/ngx-stars.module.ts","../../../projects/ngx-stars/src/public_api.ts","../../../projects/ngx-stars/src/ngx-stars.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'ngx-stars',\n templateUrl: './ngx-stars.component.html',\n styleUrls: [ './ngx-stars.component.css' ],\n})\nexport class NgxStarsComponent implements OnInit, OnDestroy {\n\n @Input()\n maxStars: number = 5;\n\n @Input()\n initialStars: number = 0;\n\n @Input()\n readonly: boolean;\n\n @Input()\n size: number;\n\n @Input()\n customSize: string;\n\n @Input()\n color: string;\n\n @Input()\n animation: boolean;\n\n @Input()\n animationSpeed: number = 100;\n\n @Input()\n customPadding: string;\n\n @Input()\n wholeStars: boolean = false;\n\n @Input()\n customStarIcons: { empty: string, half: string, full: string };\n\n @Input()\n rtl: boolean = false;\n\n @Output()\n ratingOutput: EventEmitter<number> = new EventEmitter();\n\n rating: number;\n editableStars: EditableStar[];\n animationInterval: any;\n animationRunning: boolean;\n\n private customCssClasses: HTMLStyleElement[];\n private customClassIdentifier = Math.random().toString(36).substring(2);\n\n ngOnInit(): void {\n this.setupStarImages();\n this.editableStars = Array.from(new Array(this.maxStars)).map((elem, index) => new EditableStar(index));\n if (this.rtl) {\n this.editableStars = this.editableStars.reverse();\n }\n this.setRating(this.initialStars);\n\n if (this.animation) {\n this.animationInterval = setInterval(this.starAnimation.bind(this), this.animationSpeed);\n }\n }\n\n ngOnDestroy(): void {\n // remove the three custom classes we created if custom image urls were provided\n if (this.customCssClasses) {\n this.customCssClasses.forEach(style => {\n if (style && style.parentNode) {\n style.parentNode.removeChild(style);\n }\n });\n }\n }\n\n private setupStarImages() {\n if (this.customStarIcons) {\n this.customCssClasses = [];\n Object.keys(this.customStarIcons).map(key => key as StarType).forEach(starType => {\n const classname = this.getStarClass(starType);\n this.createCssClass(classname, starType);\n });\n }\n }\n\n private createCssClass(classname: string, starType: StarType) {\n const clazz = document.createElement('style');\n clazz.type = 'text/css';\n clazz.innerHTML = `.${classname} {\n -webkit-mask-image: url(${this.customStarIcons[starType]});\n mask-image: url(${this.customStarIcons[starType]});\n }`;\n document.getElementsByTagName('head')[0].appendChild(clazz);\n this.customCssClasses.push(clazz);\n }\n\n starPadding(): { [p: string]: string } {\n return { 'margin-right': this.customPadding || `calc(${this.starSize().width} / 10)` };\n }\n\n starColorAndSize(): { [p: string]: string } {\n return Object.assign({}, this.starColor(), this.starSize());\n }\n\n private starColor(): { [p: string]: string } {\n return { 'background-color': this.color || 'crimson' };\n }\n\n starSize(): { [p: string]: string } {\n return {\n height: this.customSize || `${15 * this.safeSize()}px`,\n width: this.customSize || `${16 * this.safeSize()}px`,\n };\n }\n\n zeroStarLeft(): string {\n if (this.rtl) {\n const width = this.starSize()['width'];\n return `calc(${width} * ${this.maxStars})`;\n }\n return '-16px';\n }\n\n private safeSize = () => (Number.isInteger(this.size) && this.size > 0 && this.size < 6) ? this.size : 1;\n\n starAnimation(): void {\n this.animationRunning = true;\n if (this.rating < this.maxStars) {\n this.setRating(this.rating += 0.5);\n }\n else {\n this.setRating(0);\n }\n }\n\n cancelStarAnimation(): void {\n if (this.animationRunning) {\n clearInterval(this.animationInterval);\n this.rating = 0;\n this.animationRunning = false;\n }\n }\n\n setRating(rating: number) {\n this.rating = Math.round(rating * 2) / 2;\n this.onStarsUnhover();\n }\n\n onStarHover(event: MouseEvent, clickedStar: EditableStar): void {\n this.cancelStarAnimation();\n\n const clickedInFirstHalf = this.clickedInFirstHalf(event);\n\n // fill in either a half or whole star depending on where user clicked\n clickedStar.classname = (!this.wholeStars && clickedInFirstHalf) ? this.getStarClass('half') : this.getStarClass('full');\n\n // fill in all stars in previous positions and clear all in later ones\n this.editableStars.forEach(star => {\n if (star.position > clickedStar.position) {\n star.classname = this.getStarClass('empty');\n }\n else if (star.position < clickedStar.position) {\n star.classname = this.getStarClass('full');\n }\n });\n }\n\n onStarClick(event: MouseEvent, clickedStar: EditableStar): void {\n this.cancelStarAnimation();\n\n // lock in current rating\n const clickedInFirstHalf = this.clickedInFirstHalf(event);\n this.rating = clickedStar.position + ((!this.wholeStars && clickedInFirstHalf) ? 0.5 : 1);\n this.ratingOutput.emit(this.rating);\n }\n\n // hidden star to left of first star lets user click there to set to 0\n onZeroStarClick(): void {\n this.setRating(0);\n this.ratingOutput.emit(this.rating);\n }\n\n onZeroStarHover(): void {\n // clear all stars\n this.editableStars.forEach(star => star.classname = this.getStarClass('empty'));\n }\n\n onStarsUnhover() {\n // when user stops hovering we want to make stars reflect the last rating applied by clicking\n this.editableStars.forEach(star => {\n const starNumber = star.position + 1;\n if (this.rating >= starNumber) {\n star.classname = this.getStarClass('full');\n }\n else if (this.rating > starNumber - 1 && this.rating < starNumber) {\n star.classname = this.getStarClass('half');\n }\n else {\n star.classname = this.getStarClass('empty');\n }\n });\n }\n\n private clickedInFirstHalf(event: MouseEvent): boolean {\n const starIcon = event.target as HTMLElement;\n if (this.rtl) {\n return event.pageX > starIcon.getBoundingClientRect().right - starIcon.offsetWidth / 2;\n }\n else {\n return event.pageX < starIcon.getBoundingClientRect().left + starIcon.offsetWidth / 2;\n }\n }\n\n noop(): void {}\n\n private getStarClass(starType: StarType) {\n if (this.customCssClasses) {\n return `ngx-stars-star-${starType}-${this.customClassIdentifier}`;\n }\n return `star-${starType}`;\n }\n\n // this and the aria-labels and role in the html inspired by https://stackoverflow.com/q/55966205\n getAriaLabel(): string {\n return `Rating: ${this.rating} out of ${this.maxStars} stars ${this.readonly ? '' : '. Can be edited.'}`;\n }\n}\n\nexport type StarType = 'empty' | 'half' | 'full';\n\nexport class EditableStar {\n position: number;\n classname: string;\n\n constructor(position: number) {\n this.position = position;\n }\n}\n","<div class=\"stars-line\" (mouseleave)=\"readonly ? noop() : onStarsUnhover()\" role=\"img\" [attr.aria-label]=\"getAriaLabel()\">\n <span class=\"star zero-star\" [ngStyle]=\"starSize()\" [style.left]=\"zeroStarLeft()\" aria-hidden=\"true\" (click)=\"readonly ? noop() : onZeroStarClick()\" (mousemove)=\"readonly ? noop() : onZeroStarHover()\"></span>\n <div *ngFor=\"let star of editableStars;\" [ngStyle]=\"starPadding()\" aria-hidden=\"true\" (click)=\"readonly ? noop() : onStarClick($event, star)\" (mousemove)=\"readonly ? noop() : onStarHover($event, star)\">\n <span class=\"star\" [class.star-rtl]=\"rtl\" [ngClass]=\"star.classname\" [ngStyle]=\"starColorAndSize()\" aria-hidden=\"true\"></span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NgxStarsComponent } from './ngx-stars.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n NgxStarsComponent\n ],\n exports: [\n NgxStarsComponent\n ]\n})\nexport class NgxStarsModule { }\n","/*\n * Public API Surface of ngx-stars\n */\n\nexport * from './lib/ngx-stars.component';\nexport * from './lib/ngx-stars.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}