angular-star-rating
Advanced tools
Comparing version 2.0.0-beta.2 to 2.0.0-beta3
118
package.json
{ | ||
"name": "angular-star-rating", | ||
"version": "2.0.0-beta.2", | ||
"license": "MIT", | ||
"description": "Angular Star Rating is a Angular2 component written in typescript.", | ||
"version": "2.0.0-beta3", | ||
"scripts": { | ||
"build": "ngc -p tsconfig.json", | ||
"lint": "tslint --type-check --project tsconfig.json src/**/*.ts", | ||
"test": "npm run tsc && karma start", | ||
"prepublish": "npm run tsc", | ||
"tsc": "npm run deleteDist && tsc && npm run copyAsstes", | ||
"deleteDist":"rimraf dist", | ||
"copyAsstes" : "copyfiles assets/**/* dist", | ||
"coverage": "http-server -c-1 -o -p 9875 ./coverage", | ||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", | ||
"release": "npm publish" | ||
}, | ||
"homepage": "https://github.com/BioPhoton/angular-star-rating#readme", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/BioPhoton/angular-star-rating" | ||
}, | ||
"author": { | ||
"name": "Michael Hladky", | ||
"email": "michael@hladky.at" | ||
}, | ||
"contributors": [ | ||
{ | ||
"name": "Michael Hladky", | ||
"email": "michael@hladky.at" | ||
} | ||
], | ||
"keywords": [ | ||
@@ -11,4 +39,2 @@ "Rating", | ||
"Starrating", | ||
"Angular", | ||
"Angular Component", | ||
"Icon", | ||
@@ -20,60 +46,44 @@ "SVG", | ||
"JavaScript", | ||
"Typescript", | ||
"Material Star Rating" | ||
"Angular", | ||
"Angular Component", | ||
"Angular2", | ||
"Angular2 Component", | ||
"Typescript" | ||
], | ||
"description": "Angular Star Rating is a >2 Angular component written in typescript, based on css only techniques utilizing scss and css3 features", | ||
"author": "Michael Hladky", | ||
"contributors": [ | ||
{ | ||
"name": "Michael Hladky", | ||
"email": "michael@hladky.at" | ||
} | ||
], | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/BioPhoton/angular-star-rating.git" | ||
}, | ||
"license": "MIT", | ||
"bugs": { | ||
"url": "https://github.com/BioPhoton/angular-star-rating/issues" | ||
}, | ||
"homepage": "https://github.com/BioPhoton/angular-star-rating#readme", | ||
"main": "src/star-rating.module.ts", | ||
"scripts": { | ||
"start": "ng server", | ||
"postinstall": "typings install", | ||
"lint": "tslint \"src/**/*.ts\"", | ||
"format": "clang-format -i -style=file --glob=src/**/*.ts", | ||
"pree2e": "webdriver-manager update", | ||
"e2e": "protractor" | ||
}, | ||
"main": "./dist/index.js", | ||
"dependencies": { | ||
"@angular/common": "2.0.0-rc.1", | ||
"@angular/compiler": "2.0.0-rc.1", | ||
"@angular/core": "2.0.0-rc.1", | ||
"@angular/platform-browser": "2.0.0-rc.1", | ||
"@angular/platform-browser-dynamic": "2.0.0-rc.1", | ||
"@angular/router": "2.0.0-rc.1", | ||
"es6-shim": "^0.35.0", | ||
"reflect-metadata": "0.1.3", | ||
"rxjs": "5.0.0-beta.6", | ||
"systemjs": "0.19.26", | ||
"zone.js": "^0.6.12", | ||
"css-star-rating": "^1.1" | ||
}, | ||
"devDependencies": { | ||
"angular-cli": "0.0.*", | ||
"clang-format": "^1.0.35", | ||
"codelyzer": "0.0.14", | ||
"ember-cli-inject-live-reload": "^1.4.0", | ||
"jasmine-core": "^2.4.1", | ||
"jasmine-spec-reporter": "^2.4.0", | ||
"karma": "^0.13.15", | ||
"karma-chrome-launcher": "^0.2.3", | ||
"karma-jasmine": "^0.3.8", | ||
"protractor": "^3.3.0", | ||
"ts-node": "^0.5.5", | ||
"tslint": "^3.6.0", | ||
"typescript": "^1.8.10", | ||
"typings": "^0.8.1" | ||
"@angular/common": "^4.0.0", | ||
"@angular/compiler": "^4.0.0", | ||
"@angular/compiler-cli": "^4.0.0", | ||
"@angular/core": "^4.0.0", | ||
"@angular/platform-browser": "^4.0.0", | ||
"@angular/platform-browser-dynamic": "^4.0.0", | ||
"@types/jasmine": "2.5.38", | ||
"@types/node": "~6.0.60", | ||
"codelyzer": "~2.0.0", | ||
"core-js": "^2.4.1", | ||
"jasmine-core": "~2.5.2", | ||
"jasmine-spec-reporter": "~3.2.0", | ||
"karma": "~1.4.1", | ||
"karma-chrome-launcher": "~2.0.0", | ||
"karma-cli": "~1.0.1", | ||
"karma-jasmine": "~1.1.0", | ||
"karma-jasmine-html-reporter": "^0.2.2", | ||
"karma-coverage-istanbul-reporter": "^0.2.0", | ||
"protractor": "~5.1.0", | ||
"rxjs": "^5.1.0", | ||
"ts-node": "~2.0.0", | ||
"tslint": "~4.5.0", | ||
"typescript": "~2.2.0", | ||
"zone.js": "^0.8.4" | ||
}, | ||
"engines": { | ||
"node": ">=6.9.0" | ||
} | ||
} |
import {Injectable} from '@angular/core'; | ||
import { | ||
IStarRatingCompBindings, | ||
starRatingSizes, | ||
@@ -17,3 +16,3 @@ starRatingSpeed, | ||
@Injectable() | ||
export class StarRatingConfig implements IStarRatingCompBindings { | ||
export class StarRatingConfig { | ||
@@ -20,0 +19,0 @@ classEmpty: string = "default-star-empty-icon"; |
@@ -8,24 +8,2 @@ export type starRatingSizes = "small" | "medium" | "large"; | ||
export interface IStarRatingCompBindings { | ||
//Inputs (< bindings) | ||
id?: string; | ||
labelText?: string; | ||
staticColor?: starRatingColors; | ||
labelPosition?: starRatingPosition; | ||
speed?: starRatingSpeed; | ||
size?: starRatingSizes; | ||
starType?: starRatingStarTypes; | ||
space?: starRatingStarSpace; | ||
readOnly?: boolean; | ||
disabled?: boolean; | ||
showHalfStars?: boolean; | ||
rating?: number; | ||
numOfStars?: number; | ||
getHalfStarVisible?(rating: number): boolean; | ||
getColor?(rating: number, numOfStars: number, staticColor?: starRatingColors): starRatingColors; | ||
//Outputs (& bindings) | ||
onClick?: ($event: any) => IStarRatingOnClickEvent; | ||
onUpdate?: ($event: any) => IStarRatingOnRatingChangeEvent; | ||
} | ||
export interface IStarRatingOnClickEvent { | ||
@@ -35,4 +13,4 @@ rating: number; | ||
export interface IStarRatingOnRatingChangeEvent { | ||
export interface IStarRatingOnRatingChangeEven { | ||
rating: number; | ||
} |
@@ -1,11 +0,11 @@ | ||
import {Component, OnInit, Input, Output, OnChanges, EventEmitter, SimpleChanges} from '@angular/core'; | ||
import {Component, Input, OnChanges, Output, EventEmitter} from "@angular/core"; | ||
import { | ||
starRatingSizes, | ||
starRatingSpeed, | ||
starRatingColors, | ||
starRatingPosition, | ||
starRatingStarSpace, | ||
starRatingStarTypes, | ||
IStarRatingOnClickEvent, | ||
IStarRatingOnRatingChangeEvent | ||
starRatingSizes, | ||
starRatingSpeed, | ||
starRatingColors, | ||
starRatingPosition, | ||
starRatingStarSpace, | ||
starRatingStarTypes, | ||
IStarRatingOnClickEvent, | ||
IStarRatingOnRatingChangeEven | ||
} from "./star-rating-struct"; | ||
@@ -15,512 +15,540 @@ import {StarRatingConfig} from "./star-rating-config"; | ||
@Component({ | ||
moduleId: module.id, | ||
selector: 'star-rating-comp', | ||
templateUrl: 'star-rating.component.html', | ||
styleUrls: ['star-rating.css'] | ||
selector: 'star-rating-comp', | ||
//templateUrl: 'star-rating.component.html', | ||
template: ` | ||
<div id="{{id}}" | ||
class="rating {{rating?'value-'+ratingAsInteger:'value-0'}} {{readOnly?'read-only':''}} {{disabled?'disabled':''}} {{halfStarVisible?'half':''}} {{space?'space-'+space:''}} {{labelVisible?'label-'+labelVisible:''}} {{labelPosition?'label-'+labelPosition:''}} {{color?'color-'+color:''}} {{starType?'star-'+starType:''}} {{speed}} {{size}}" | ||
> | ||
<div *ngIf="labelText" class="label-value">{{labelText}}</div> | ||
<div class="star-container"> | ||
<div class="star" | ||
*ngFor="let star of stars" | ||
(click)="onStarClicked(star)"> | ||
<i *ngIf="!svgVisible()" class="star-empty {{classEmpty}}"></i> | ||
<i *ngIf="!svgVisible()" class="star-empty {{classHalf}}"></i> | ||
<i *ngIf="!svgVisible()" class="star-filled {{classFilled}}"></i> | ||
<svg *ngIf="svgVisible()" class="star-empty default-star-empty-icon"> | ||
<use xmlns:xlink="http://www.w3.org/1999/xlink" [attr.xlink:href]="pathEmpty"></use> | ||
</svg> | ||
<svg *ngIf="svgVisible()" class="star-half default-star-half-icon"> | ||
<use xmlns:xlink="http://www.w3.org/1999/xlink" [attr.xlink:href]="pathHalf"></use> | ||
</svg> | ||
<svg *ngIf="svgVisible()" class="star-filled default-star-filled-icon"> | ||
<use xmlns:xlink="http://www.w3.org/1999/xlink" [attr.xlink:href]="pathFilled"></use> | ||
</svg> | ||
</div> | ||
</div> | ||
</div> | ||
`, | ||
styles: [` | ||
.center-all,.star{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.star{position:relative;width:20px;height:20px}.star i,.star svg{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;font-style:normal}.star i.star-filled,.star i.star-half,.star svg.star-filled,.star svg.star-half{opacity:0}.star i{top:1px;display:none}.rating.star-icon i,.star.icon i{font-size:25px;line-height:25px}.rating.star-icon i.star-empty:before,.star.icon i.star-empty:before{content:"☆"}.rating.star-icon i.star-filled:before,.rating.star-icon i.star-half:before,.star.icon i.star-filled:before,.star.icon i.star-half:before{content:"★"}.rating.star-custom-icon i,.rating.theme-kununu .star-container .star i,.star.custom-icon i{font-size:18px;line-height:18px}.star.empty i.star-filled,.star.empty i.star-half,.star.empty svg.star-filled,.star.empty svg.star-half{opacity:0}.star.empty i.star-empty,.star.empty svg.star-empty{opacity:1}.rating.value-0.half .star:nth-child(1) i.star-empty,.rating.value-0.half .star:nth-child(1) i.star-filled,.rating.value-0.half .star:nth-child(1) svg.star-empty,.rating.value-0.half .star:nth-child(1) svg.star-filled,.rating.value-1.half .star-container .star:nth-child(2) i.star-empty,.rating.value-1.half .star-container .star:nth-child(2) i.star-filled,.rating.value-1.half .star-container .star:nth-child(2) svg.star-empty,.rating.value-1.half .star-container .star:nth-child(2) svg.star-filled,.rating.value-2.half .star-container .star:nth-child(3) i.star-empty,.rating.value-2.half .star-container .star:nth-child(3) i.star-filled,.rating.value-2.half .star-container .star:nth-child(3) svg.star-empty,.rating.value-2.half .star-container .star:nth-child(3) svg.star-filled,.rating.value-3.half .star-container .star:nth-child(4) i.star-empty,.rating.value-3.half .star-container .star:nth-child(4) i.star-filled,.rating.value-3.half .star-container .star:nth-child(4) svg.star-empty,.rating.value-3.half .star-container .star:nth-child(4) svg.star-filled,.rating.value-4.half .star-container .star:nth-child(5) i.star-empty,.rating.value-4.half .star-container .star:nth-child(5) i.star-filled,.rating.value-4.half .star-container .star:nth-child(5) svg.star-empty,.rating.value-4.half .star-container .star:nth-child(5) svg.star-filled,.rating.value-5.half .star-container .star:nth-child(6) i.star-empty,.rating.value-5.half .star-container .star:nth-child(6) i.star-filled,.rating.value-5.half .star-container .star:nth-child(6) svg.star-empty,.rating.value-5.half .star-container .star:nth-child(6) svg.star-filled,.star.half i.star-empty,.star.half i.star-filled,.star.half svg.star-empty,.star.half svg.star-filled{opacity:0}.rating.value-0.half .star:nth-child(1) i.star-half,.rating.value-0.half .star:nth-child(1) svg.star-half,.rating.value-1.half .star-container .star:nth-child(2) i.star-half,.rating.value-1.half .star-container .star:nth-child(2) svg.star-half,.rating.value-2.half .star-container .star:nth-child(3) i.star-half,.rating.value-2.half .star-container .star:nth-child(3) svg.star-half,.rating.value-3.half .star-container .star:nth-child(4) i.star-half,.rating.value-3.half .star-container .star:nth-child(4) svg.star-half,.rating.value-4.half .star-container .star:nth-child(5) i.star-half,.rating.value-4.half .star-container .star:nth-child(5) svg.star-half,.rating.value-5.half .star-container .star:nth-child(6) i.star-half,.rating.value-5.half .star-container .star:nth-child(6) svg.star-half,.star.half i.star-half,.star.half svg.star-half{opacity:1}.rating.value-1 .star-container .star:nth-child(-n+1) i.star-empty,.rating.value-1 .star-container .star:nth-child(-n+1) i.star-filled,.rating.value-1 .star-container .star:nth-child(-n+1) svg.star-empty,.rating.value-1 .star-container .star:nth-child(-n+1) svg.star-filled,.rating.value-2 .star-container .star:nth-child(-n+2) i.star-empty,.rating.value-2 .star-container .star:nth-child(-n+2) i.star-filled,.rating.value-2 .star-container .star:nth-child(-n+2) svg.star-empty,.rating.value-2 .star-container .star:nth-child(-n+2) svg.star-filled,.rating.value-3 .star-container .star:nth-child(-n+3) i.star-empty,.rating.value-3 .star-container .star:nth-child(-n+3) i.star-filled,.rating.value-3 .star-container .star:nth-child(-n+3) svg.star-empty,.rating.value-3 .star-container .star:nth-child(-n+3) svg.star-filled,.rating.value-4 .star-container .star:nth-child(-n+4) i.star-empty,.rating.value-4 .star-container .star:nth-child(-n+4) i.star-filled,.rating.value-4 .star-container .star:nth-child(-n+4) svg.star-empty,.rating.value-4 .star-container .star:nth-child(-n+4) svg.star-filled,.rating.value-5 .star-container .star:nth-child(-n+5) i.star-empty,.rating.value-5 .star-container .star:nth-child(-n+5) i.star-filled,.rating.value-5 .star-container .star:nth-child(-n+5) svg.star-empty,.rating.value-5 .star-container .star:nth-child(-n+5) svg.star-filled,.rating.value-6 .star-container .star:nth-child(-n+6) i.star-empty,.rating.value-6 .star-container .star:nth-child(-n+6) i.star-filled,.rating.value-6 .star-container .star:nth-child(-n+6) svg.star-empty,.rating.value-6 .star-container .star:nth-child(-n+6) svg.star-filled,.rating.value-7 .star-container .star:nth-child(-n+7) i.star-empty,.rating.value-7 .star-container .star:nth-child(-n+7) i.star-filled,.rating.value-7 .star-container .star:nth-child(-n+7) svg.star-empty,.rating.value-7 .star-container .star:nth-child(-n+7) svg.star-filled,.rating.value-8 .star-container .star:nth-child(-n+8) i.star-empty,.rating.value-8 .star-container .star:nth-child(-n+8) i.star-filled,.rating.value-8 .star-container .star:nth-child(-n+8) svg.star-empty,.rating.value-8 .star-container .star:nth-child(-n+8) svg.star-filled,.rating.value-9 .star-container .star:nth-child(-n+9) i.star-empty,.rating.value-9 .star-container .star:nth-child(-n+9) i.star-filled,.rating.value-9 .star-container .star:nth-child(-n+9) svg.star-empty,.rating.value-9 .star-container .star:nth-child(-n+9) svg.star-filled,.rating.value-10 .star-container .star:nth-child(-n+10) i.star-empty,.rating.value-10 .star-container .star:nth-child(-n+10) i.star-filled,.rating.value-10 .star-container .star:nth-child(-n+10) svg.star-empty,.rating.value-10 .star-container .star:nth-child(-n+10) svg.star-filled,.rating.value-11 .star-container .star:nth-child(-n+11) i.star-empty,.rating.value-11 .star-container .star:nth-child(-n+11) i.star-filled,.rating.value-11 .star-container .star:nth-child(-n+11) svg.star-empty,.rating.value-11 .star-container .star:nth-child(-n+11) svg.star-filled,.rating.value-12 .star-container .star:nth-child(-n+12) i.star-empty,.rating.value-12 .star-container .star:nth-child(-n+12) i.star-filled,.rating.value-12 .star-container .star:nth-child(-n+12) svg.star-empty,.rating.value-12 .star-container .star:nth-child(-n+12) svg.star-filled,.star.filled i.star-empty,.star.filled i.star-filled,.star.filled svg.star-empty,.star.filled svg.star-filled{opacity:0}.rating.value-1 .star-container .star:nth-child(-n+1) i.star-filled,.rating.value-1 .star-container .star:nth-child(-n+1) svg.star-filled,.rating.value-2 .star-container .star:nth-child(-n+2) i.star-filled,.rating.value-2 .star-container .star:nth-child(-n+2) svg.star-filled,.rating.value-3 .star-container .star:nth-child(-n+3) i.star-filled,.rating.value-3 .star-container .star:nth-child(-n+3) svg.star-filled,.rating.value-4 .star-container .star:nth-child(-n+4) i.star-filled,.rating.value-4 .star-container .star:nth-child(-n+4) svg.star-filled,.rating.value-5 .star-container .star:nth-child(-n+5) i.star-filled,.rating.value-5 .star-container .star:nth-child(-n+5) svg.star-filled,.rating.value-6 .star-container .star:nth-child(-n+6) i.star-filled,.rating.value-6 .star-container .star:nth-child(-n+6) svg.star-filled,.rating.value-7 .star-container .star:nth-child(-n+7) i.star-filled,.rating.value-7 .star-container .star:nth-child(-n+7) svg.star-filled,.rating.value-8 .star-container .star:nth-child(-n+8) i.star-filled,.rating.value-8 .star-container .star:nth-child(-n+8) svg.star-filled,.rating.value-9 .star-container .star:nth-child(-n+9) i.star-filled,.rating.value-9 .star-container .star:nth-child(-n+9) svg.star-filled,.rating.value-10 .star-container .star:nth-child(-n+10) i.star-filled,.rating.value-10 .star-container .star:nth-child(-n+10) svg.star-filled,.rating.value-11 .star-container .star:nth-child(-n+11) i.star-filled,.rating.value-11 .star-container .star:nth-child(-n+11) svg.star-filled,.rating.value-12 .star-container .star:nth-child(-n+12) i.star-filled,.rating.value-12 .star-container .star:nth-child(-n+12) svg.star-filled,.star.filled i.star-filled,.star.filled svg.star-filled{opacity:1}.star-container .star svg,.star.default svg{fill:#999}.star-container .star i,.star.default i{color:#999}.rating.value-0.half .star svg,.rating.value-1 .star-container .star svg,.rating.value-1.half .star-container .rating.value-0.star:nth-child(2) .star svg,.rating.value-2 .star-container .star svg,.rating.value-2.half .star-container .rating.value-0.star:nth-child(3) .star svg,.rating.value-3.half .star-container .rating.value-0.star:nth-child(4) .star svg,.rating.value-4.half .star-container .rating.value-0.star:nth-child(5) .star svg,.rating.value-5.half .star-container .rating.value-0.star:nth-child(6) .star svg,.star.negative svg{fill:#f03c56}.rating.value-0.half .star i,.rating.value-1 .star-container .star i,.rating.value-1.half .star-container .rating.value-0.star:nth-child(2) .star i,.rating.value-2 .star-container .star i,.rating.value-2.half .star-container .rating.value-0.star:nth-child(3) .star i,.rating.value-3.half .star-container .rating.value-0.star:nth-child(4) .star i,.rating.value-4.half .star-container .rating.value-0.star:nth-child(5) .star i,.rating.value-5.half .star-container .rating.value-0.star:nth-child(6) .star i,.star.negative i{color:#f03c56}.rating.value-3 .star-container .star svg,.star.middle svg{fill:#ffc058}.rating.value-3 .star-container .star i,.star.middle i{color:#ffc058}.rating.value-4 .star-container .star svg,.rating.value-5 .star-container .star svg,.rating.value-6 .star-container .star svg,.rating.value-7 .star-container .star svg,.rating.value-8 .star-container .star svg,.rating.value-9 .star-container .star svg,.rating.value-10 .star-container .star svg,.rating.value-11 .star-container .star svg,.rating.value-12 .star-container .star svg,.star.positive svg{fill:#7ed321}.rating.value-4 .star-container .star i,.rating.value-5 .star-container .star i,.rating.value-6 .star-container .star i,.rating.value-7 .star-container .star i,.rating.value-8 .star-container .star i,.rating.value-9 .star-container .star i,.rating.value-10 .star-container .star i,.rating.value-11 .star-container .star i,.rating.value-12 .star-container .star i,.star.positive i{color:#7ed321}.rating.star-svg i,.star.svg i{display:none}.rating.star-svg svg,.star.svg svg{display:-webkit-box;display:-ms-flexbox;display:flex}.rating.star-custom-icon svg,.rating.star-icon svg,.rating.theme-kununu .star-container .star svg,.star.custom-icon svg,.star.icon svg{display:none}.rating.star-custom-icon i,.rating.star-icon i,.rating.theme-kununu .star-container .star i,.star.custom-icon i,.star.icon i{display:-webkit-box;display:-ms-flexbox;display:flex}.rating.small .star,.star.small{width:10px;height:9,5px}.rating.small .star i,.star.small i{font-size:11px;line-height:10px}.rating.medium .star,.star.medium{width:20px;height:20px}.rating.medium .star i,.star.medium i{font-size:25px;line-height:25px}.rating.large .star,.star.large{width:35px;height:33.3px}.rating.large .star i,.star.large i{font-size:36px;line-height:35px}.rating.disabled .star-container .star,.star.disabled{opacity:.5}.rating.direction-rtl .star-container .star i.star-half,.rating.direction-rtl .star-container .star svg.star-half,.star-container.direction-rtl .star i.star-half,.star-container.direction-rtl .star svg.star-half,.star.direction-rtl i.star-half,.star.direction-rtl svg.star-half{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.star-container.direction-ltr .star i.star-half,.star-container.direction-ltr .star svg.star-half,.star.direction-ltr i.star-half,.star.direction-ltr svg.star-half{-webkit-transform:scale(1);transform:scale(1)}.label-value{font-size:18px;line-height:18px}.label-value.small,.rating.small .label-value{font-size:9.5px;line-height:9.5px}.label-value.medium,.rating.medium .label-value{font-size:18px;line-height:25px}.label-value.large,.rating.large .label-value{font-size:28px;line-height:35px}.label-value.disabled,.rating.disabled .label-value{opacity:.5}.star-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:5px;margin-right:5px;-webkit-transition:all .3s ease;transition:all .3s ease}.star-container+.star{margin-left:5px}.star-container .star,.star-container .star i,.star-container .star svg{-webkit-transition:all .3s ease;transition:all .3s ease}.star-container svg{z-index:2}.star-container i{z-index:1}.rating.direction-rtl .star-container,.star-container.direction-rtl{direction:rtl}.star-container.direction-ltr{direction:ltr}.rating.space-no .star-container,.star-container.space-no{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.rating.space-between .star-container,.star-container.space-between{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.rating.space-around .star-container,.star-container.space-around{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-pack:distribute;justify-content:space-around}.rating{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:5px}.rating.label-hidden .label-value{display:none}.rating.label-visible{display:-webkit-box;display:-ms-flexbox;display:flex}.rating.label-top{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rating.label-top .label-value+.star-container{margin-left:0;margin-right:0;margin-top:5px}.rating.label-left .label-value{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.rating.label-left .label-value+.star-container{margin-left:5px;margin-right:0}.rating.label-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.rating.label-right .label-value+.star-container{margin-left:0;margin-right:5px}.rating.label-bottom{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.rating.label-bottom .label-value+.star-container{margin-left:0;margin-right:0;margin-bottom:5px}.rating.direction-rtl{direction:rtl}.rating.direction-ltr{direction:ltr}.rating.color-default .star-container .star svg{fill:#999}.rating.color-default .star-container .star i{color:#999}.rating.color-ok .star-container .star svg{fill:#ffc058}.rating.color-ok .star-container .star i{color:#ffc058}.rating.color-positive .star-container .star svg{fill:#7ed321}.rating.color-positive .star-container .star i{color:#7ed321}.rating.color-negative .star-container .star svg{fill:#f03c56}.rating.color-negative .star-container .star i{color:#f03c56}.rating.immediately .star-container{-webkit-transition:all none;transition:all none}.rating.immediately .star-container .star,.rating.immediately .star-container .star i,.rating.immediately .star-container .star svg{-webkit-transition:none;transition:none}.rating.noticeable .star-container,.rating.noticeable .star-container .star,.rating.noticeable .star-container .star i,.rating.noticeable .star-container .star svg{-webkit-transition:all .3s ease;transition:all .3s ease}.rating.slow .star-container,.rating.slow .star-container .star,.rating.slow .star-container .star i,.rating.slow .star-container .star svg{-webkit-transition:all .8s ease;transition:all .8s ease}.rating.theme-kununu{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:78px}.rating.theme-kununu .label-value,.rating.theme-kununu .star-container{width:100%}.rating.theme-kununu .label-value{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px 6px 0 0;height:50px;border:1px solid #e9ecec;border-bottom:0;font-size:18px;font-weight:700;color:#2f3940;letter-spacing:-1px;background-color:#f8f8f8}.rating.theme-kununu .star-container{border-radius:0 0 6px 6px;padding:2px 0 4px;margin-left:0;margin-right:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background-color:#99c613;border:1px solid #99c613;border-bottom:0}.rating.theme-kununu .star-container .star{height:11px;width:11px}.rating.theme-kununu .star-container .star i{font-size:11px;color:#fff;text-align:center}.rating.theme-google-places .label-value{color:#e7711b;font-family:arial,sans-serif;font-size:13px;line-height:15px}.rating.theme-google-places .star-container{width:65px;margin-left:2px}.rating.theme-google-places .star-container .star i{font-size:17px;color:#e7711b!important}.rating.theme-google-places .star-container .star i.star-empty{opacity:1!important;color:#e1e1e1!important}.rating.theme-google-places .star-container .star i.star-empty:before{content:"★"}.rating.theme-google-places .star-container .star i.star-half{width:7px;overflow:hidden}.rating.theme-google-places .star-container .star i.star-filled:before,.rating.theme-google-places .star-container .star i.star-half:before{content:"★"}.rating.theme-rolling-stars .star-container .star{-webkit-transition:-webkit-transform 1s;transition:-webkit-transform 1s;transition:transform 1s;transition:transform 1s,-webkit-transform 1s;-webkit-transform:rotate(0deg);transform:rotate(0deg)}.rating.theme-rolling-stars.value-0.half .star:nth-child(1),.rating.theme-rolling-stars.value-1 .star-container .star:nth-child(-n+1),.rating.theme-rolling-stars.value-1.half .star-container .star:nth-child(2),.rating.theme-rolling-stars.value-2 .star-container .star:nth-child(-n+2),.rating.theme-rolling-stars.value-2.half .star-container .star:nth-child(3),.rating.theme-rolling-stars.value-3 .star-container .star:nth-child(-n+3),.rating.theme-rolling-stars.value-3.half .star-container .star:nth-child(4),.rating.theme-rolling-stars.value-4 .star-container .star:nth-child(-n+4),.rating.theme-rolling-stars.value-4.half .star-container .star:nth-child(5),.rating.theme-rolling-stars.value-5 .star-container .star:nth-child(-n+5),.rating.theme-rolling-stars.value-5.half .star-container .star:nth-child(6),.rating.theme-rolling-stars.value-6 .star-container .star:nth-child(-n+6),.rating.value-0.half .rating.theme-rolling-stars.value-0.star:nth-child(1) .star:nth-child(1),.rating.value-0.half .rating.theme-rolling-stars.value-1.star:nth-child(1) .star-container .star:nth-child(2),.rating.value-0.half .rating.theme-rolling-stars.value-2.star:nth-child(1) .star-container .star:nth-child(3),.rating.value-0.half .rating.theme-rolling-stars.value-3.star:nth-child(1) .star-container .star:nth-child(4),.rating.value-0.half .rating.theme-rolling-stars.value-4.star:nth-child(1) .star-container .star:nth-child(5),.rating.value-0.half .rating.theme-rolling-stars.value-5.star:nth-child(1) .star-container .star:nth-child(6),.rating.value-1.half .star-container .rating.theme-rolling-stars.value-0.star:nth-child(2) .star:nth-child(1),.rating.value-1.half .star-container .rating.theme-rolling-stars.value-1.star:nth-child(2) .star-container .star:nth-child(2),.rating.value-1.half .star-container .rating.theme-rolling-stars.value-2.star:nth-child(2) .star-container .star:nth-child(3),.rating.value-1.half .star-container .rating.theme-rolling-stars.value-3.star:nth-child(2) .star-container .star:nth-child(4),.rating.value-1.half .star-container .rating.theme-rolling-stars.value-4.star:nth-child(2) .star-container .star:nth-child(5),.rating.value-1.half .star-container .rating.theme-rolling-stars.value-5.star:nth-child(2) .star-container .star:nth-child(6),.rating.value-2.half .star-container .rating.theme-rolling-stars.value-0.star:nth-child(3) .star:nth-child(1),.rating.value-2.half .star-container .rating.theme-rolling-stars.value-1.star:nth-child(3) .star-container .star:nth-child(2),.rating.value-2.half .star-container .rating.theme-rolling-stars.value-2.star:nth-child(3) .star-container .star:nth-child(3),.rating.value-2.half .star-container .rating.theme-rolling-stars.value-3.star:nth-child(3) .star-container .star:nth-child(4),.rating.value-2.half .star-container .rating.theme-rolling-stars.value-4.star:nth-child(3) .star-container .star:nth-child(5),.rating.value-2.half .star-container .rating.theme-rolling-stars.value-5.star:nth-child(3) .star-container .star:nth-child(6),.rating.value-3.half .star-container .rating.theme-rolling-stars.value-0.star:nth-child(4) .star:nth-child(1),.rating.value-3.half .star-container .rating.theme-rolling-stars.value-1.star:nth-child(4) .star-container .star:nth-child(2),.rating.value-3.half .star-container .rating.theme-rolling-stars.value-2.star:nth-child(4) .star-container .star:nth-child(3),.rating.value-3.half .star-container .rating.theme-rolling-stars.value-3.star:nth-child(4) .star-container .star:nth-child(4),.rating.value-3.half .star-container .rating.theme-rolling-stars.value-4.star:nth-child(4) .star-container .star:nth-child(5),.rating.value-3.half .star-container .rating.theme-rolling-stars.value-5.star:nth-child(4) .star-container .star:nth-child(6),.rating.value-4.half .star-container .rating.theme-rolling-stars.value-0.star:nth-child(5) .star:nth-child(1),.rating.value-4.half .star-container .rating.theme-rolling-stars.value-1.star:nth-child(5) .star-container .star:nth-child(2),.rating.value-4.half .star-container .rating.theme-rolling-stars.value-2.star:nth-child(5) .star-container .star:nth-child(3),.rating.value-4.half .star-container .rating.theme-rolling-stars.value-3.star:nth-child(5) .star-container .star:nth-child(4),.rating.value-4.half .star-container .rating.theme-rolling-stars.value-4.star:nth-child(5) .star-container .star:nth-child(5),.rating.value-4.half .star-container .rating.theme-rolling-stars.value-5.star:nth-child(5) .star-container .star:nth-child(6),.rating.value-5.half .star-container .rating.theme-rolling-stars.value-0.star:nth-child(6) .star:nth-child(1),.rating.value-5.half .star-container .rating.theme-rolling-stars.value-1.star:nth-child(6) .star-container .star:nth-child(2),.rating.value-5.half .star-container .rating.theme-rolling-stars.value-2.star:nth-child(6) .star-container .star:nth-child(3),.rating.value-5.half .star-container .rating.theme-rolling-stars.value-3.star:nth-child(6) .star-container .star:nth-child(4),.rating.value-5.half .star-container .rating.theme-rolling-stars.value-4.star:nth-child(6) .star-container .star:nth-child(5),.rating.value-5.half .star-container .rating.theme-rolling-stars.value-5.star:nth-child(6) .star-container .star:nth-child(6){-webkit-transition:-webkit-transform 1s;transition:-webkit-transform 1s;transition:transform 1s;transition:transform 1s,-webkit-transform 1s;-webkit-transform:rotate(1turn);transform:rotate(1turn)} | ||
`], | ||
}) | ||
export class StarRatingComponent implements OnInit, OnChanges { | ||
export class StarRatingComponent implements OnChanges { | ||
//Static methods | ||
/////////////////////////////////////////////////////////////////////////////////////////// | ||
//Static methods | ||
/////////////////////////////////////////////////////////////////////////////////////////// | ||
/** | ||
* _getStarsArray | ||
* | ||
* returns an array of increasing numbers starting at 1 | ||
* | ||
* @param numOfStars | ||
* @returns {Array} | ||
*/ | ||
static _getStarsArray(numOfStars: number): Array<number> { | ||
let stars: Array<number> = []; | ||
for (let i = 0; i < numOfStars; i++) { | ||
stars.push(i + 1); | ||
/** | ||
* _getStarsArray | ||
* | ||
* returns an array of increasing numbers starting at 1 | ||
* | ||
* @param numOfStars | ||
* @returns {Array} | ||
*/ | ||
static _getStarsArray(numOfStars: number): Array<number> { | ||
let stars: Array<number> = []; | ||
for (let i = 0; i < numOfStars; i++) { | ||
stars.push(i + 1); | ||
} | ||
return stars; | ||
} | ||
return stars; | ||
} | ||
/** | ||
* _getHalfStarVisible | ||
* | ||
* Returns true if there should be a half star visible, and false if not. | ||
* | ||
* @param rating | ||
* @returns {boolean} | ||
*/ | ||
static _getHalfStarVisible(rating: number): boolean { | ||
return Math.abs(rating % 1) > 0; | ||
} | ||
/** | ||
* _getHalfStarVisible | ||
* | ||
* Returns true if there should be a half star visible, and false if not. | ||
* | ||
* @param rating | ||
* @returns {boolean} | ||
*/ | ||
static _getHalfStarVisible(rating: number): boolean { | ||
return Math.abs(rating % 1) > 0; | ||
} | ||
/** | ||
* _getColor | ||
* | ||
* The default function for color calculation | ||
* based on the current rating and the the number of stars possible. | ||
* If a staticColor is set the function will use it as return value. | ||
* | ||
* @param rating | ||
* @param numOfStars | ||
* @param staticColor | ||
* @returns {starRatingColors} | ||
*/ | ||
static _getColor(rating: number, numOfStars: number, staticColor?: starRatingColors): starRatingColors { | ||
rating = rating || 0; | ||
/** | ||
* _getColor | ||
* | ||
* The default function for color calculation | ||
* based on the current rating and the the number of stars possible. | ||
* If a staticColor is set the function will use it as return value. | ||
* | ||
* @param rating | ||
* @param numOfStars | ||
* @param staticColor | ||
* @returns {starRatingColors} | ||
*/ | ||
static _getColor(rating: number, numOfStars: number, staticColor?: starRatingColors): starRatingColors { | ||
rating = rating || 0; | ||
//if a fix color is set use this one | ||
if (staticColor) { | ||
return staticColor; | ||
//if a fix color is set use this one | ||
if (staticColor) { | ||
return staticColor; | ||
} | ||
//calculate size of smallest fraction | ||
let fractionSize = numOfStars / 3; | ||
//apply color by fraction | ||
let color: starRatingColors = 'default'; | ||
if (rating > 0) { | ||
color = 'negative'; | ||
} | ||
if (rating > fractionSize) { | ||
color = 'ok'; | ||
} | ||
if (rating > fractionSize * 2) { | ||
color = 'positive'; | ||
} | ||
return color; | ||
} | ||
//calculate size of smallest fraction | ||
let fractionSize = numOfStars / 3; | ||
protected config:any; | ||
//apply color by fraction | ||
let color: starRatingColors = 'default'; | ||
if (rating > 0) { | ||
color = 'negative'; | ||
//Inputs | ||
/////////////////////////////////////////////////////////////////////////////////////////// | ||
/** | ||
* id property to identify the DOM element | ||
*/ | ||
protected _id: string; | ||
get id(): string { | ||
return this._id; | ||
} | ||
if (rating > fractionSize) { | ||
color = 'ok'; | ||
@Input() | ||
set id(value: string) { | ||
this._id = value || ''; | ||
} | ||
if (rating > fractionSize * 2) { | ||
color = 'positive'; | ||
///////////////////////////////////////////// | ||
/** | ||
* labelText | ||
*/ | ||
protected _labelText: string; | ||
get labelText(): string { | ||
return this._labelText; | ||
} | ||
return color; | ||
} | ||
@Input() | ||
set labelText(value: string) { | ||
this._labelText = value; | ||
} | ||
//Inputs | ||
/////////////////////////////////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////// | ||
/** | ||
* id property to identify the DOM element | ||
*/ | ||
protected _id: string; | ||
get id(): string { | ||
return this._id; | ||
} | ||
/** | ||
* labelPosition | ||
*/ | ||
protected _labelPosition: starRatingPosition; | ||
get labelPosition(): starRatingPosition { | ||
return this._labelPosition; | ||
} | ||
@Input() | ||
set id(value: string) { | ||
this._id = value || ''; | ||
} | ||
@Input() | ||
set labelPosition(value: starRatingPosition) { | ||
this._labelPosition = value || this.config.labelPosition; | ||
} | ||
///////////////////////////////////////////// | ||
///////////////////////////////////////////// | ||
/** | ||
* labelText | ||
*/ | ||
protected _labelText: string; | ||
get labelText(): string { | ||
return this._labelText; | ||
} | ||
/** | ||
* staticColor | ||
*/ | ||
protected _staticColor: starRatingColors; | ||
@Input() | ||
set labelText(value: string) { | ||
this._labelText = value; | ||
} | ||
get staticColor(): starRatingColors { | ||
return this._staticColor; | ||
} | ||
///////////////////////////////////////////// | ||
@Input() | ||
set staticColor(value: starRatingColors) { | ||
this._staticColor = value || undefined; | ||
/** | ||
* labelPosition | ||
*/ | ||
protected _labelPosition: starRatingPosition; | ||
get labelPosition(): starRatingPosition { | ||
return this._labelPosition; | ||
} | ||
//update color. | ||
this.setColor(); | ||
} | ||
@Input() | ||
set labelPosition(value: starRatingPosition) { | ||
this._labelPosition = value || this.config.labelPosition; | ||
} | ||
///////////////////////////////////////////// | ||
///////////////////////////////////////////// | ||
/** | ||
* numOfStars | ||
*/ | ||
protected _numOfStars: number; | ||
/** | ||
* staticColor | ||
*/ | ||
protected _staticColor: starRatingColors; | ||
get numOfStars(): number { | ||
return this._numOfStars; | ||
} | ||
get staticColor(): starRatingColors { | ||
return this._staticColor; | ||
} | ||
@Input() | ||
set numOfStars(value: number) { | ||
this._numOfStars = (value > 0) ? value : this.config.numOfStars; | ||
@Input() | ||
set staticColor(value: starRatingColors) { | ||
this._staticColor = value || undefined; | ||
//update stars array | ||
this.stars = StarRatingComponent._getStarsArray(this.numOfStars); | ||
//update color. | ||
this.setColor(); | ||
} | ||
//update color | ||
this.setColor(); | ||
} | ||
///////////////////////////////////////////// | ||
///////////////////////////////////////////// | ||
/** | ||
* numOfStars | ||
*/ | ||
protected _numOfStars: number; | ||
/** | ||
* speed | ||
*/ | ||
protected _speed: starRatingSpeed; | ||
get numOfStars(): number { | ||
return this._numOfStars; | ||
} | ||
get speed(): starRatingSpeed { | ||
return this._speed; | ||
} | ||
@Input() | ||
set numOfStars(value: number) { | ||
this._numOfStars = (value > 0) ? value : this.config.numOfStars; | ||
@Input() | ||
set speed(value: starRatingSpeed) { | ||
this._speed = value || this.config.speed; | ||
} | ||
//update stars array | ||
this.stars = StarRatingComponent._getStarsArray(this.numOfStars); | ||
///////////////////////////////////////////// | ||
//update color | ||
this.setColor(); | ||
} | ||
/** | ||
* size | ||
*/ | ||
protected _size: starRatingSizes; | ||
///////////////////////////////////////////// | ||
get size(): starRatingSizes { | ||
return this._size; | ||
} | ||
/** | ||
* speed | ||
*/ | ||
protected _speed: starRatingSpeed; | ||
@Input() | ||
set size(value: starRatingSizes) { | ||
this._size = value || this.config.size; | ||
} | ||
get speed(): starRatingSpeed { | ||
return this._speed; | ||
} | ||
///////////////////////////////////////////// | ||
@Input() | ||
set speed(value: starRatingSpeed) { | ||
this._speed = value || this.config.speed; | ||
} | ||
/** | ||
* starType | ||
*/ | ||
protected _starType: starRatingStarTypes; | ||
///////////////////////////////////////////// | ||
get starType(): starRatingStarTypes { | ||
return this._starType; | ||
} | ||
/** | ||
* size | ||
*/ | ||
protected _size: starRatingSizes; | ||
@Input() | ||
set starType(value: starRatingStarTypes) { | ||
this._starType = value || this.config.starType; | ||
} | ||
get size(): starRatingSizes { | ||
return this._size; | ||
} | ||
///////////////////////////////////////////// | ||
@Input() | ||
set size(value: starRatingSizes) { | ||
this._size = value || this.config.size; | ||
} | ||
/** | ||
* space | ||
*/ | ||
protected _space: starRatingStarSpace; | ||
///////////////////////////////////////////// | ||
get space(): starRatingStarSpace { | ||
return this._space; | ||
} | ||
/** | ||
* starType | ||
*/ | ||
protected _starType: starRatingStarTypes; | ||
@Input() | ||
set space(value: starRatingStarSpace) { | ||
this._space = value; | ||
} | ||
get starType(): starRatingStarTypes { | ||
return this._starType; | ||
} | ||
///////////////////////////////////////////// | ||
@Input() | ||
set starType(value: starRatingStarTypes) { | ||
this._starType = value || this.config.starType; | ||
} | ||
/** | ||
* readOnly | ||
*/ | ||
protected _readOnly: boolean; | ||
///////////////////////////////////////////// | ||
get readOnly(): boolean { | ||
return this._readOnly; | ||
} | ||
/** | ||
* space | ||
*/ | ||
protected _space: starRatingStarSpace; | ||
@Input() | ||
set readOnly(value: boolean) { | ||
this._readOnly = !!value; | ||
} | ||
get space(): starRatingStarSpace { | ||
return this._space; | ||
} | ||
///////////////////////////////////////////// | ||
@Input() | ||
set space(value: starRatingStarSpace) { | ||
this._space = value; | ||
} | ||
/** | ||
* disabled | ||
*/ | ||
protected _disabled: boolean; | ||
///////////////////////////////////////////// | ||
get disabled(): boolean { | ||
return this._disabled; | ||
} | ||
/** | ||
* readOnly | ||
*/ | ||
protected _readOnly: boolean; | ||
@Input() | ||
set disabled(value: boolean) { | ||
this._disabled = !!value; | ||
} | ||
get readOnly(): boolean { | ||
return this._readOnly; | ||
} | ||
///////////////////////////////////////////// | ||
@Input() | ||
set readOnly(value: boolean) { | ||
this._readOnly = !!value; | ||
} | ||
/** | ||
* rating | ||
*/ | ||
protected _rating: number; | ||
///////////////////////////////////////////// | ||
get rating(): number { | ||
return this._rating; | ||
} | ||
/** | ||
* disabled | ||
*/ | ||
protected _disabled: boolean; | ||
@Input() | ||
set rating(value: number) { | ||
//validate and apply newRating | ||
let newRating: number = 0; | ||
if (value >= 0 | ||
&& value <= this.numOfStars) { | ||
newRating = value; | ||
} | ||
//limit max value to max number of stars | ||
if (value > this.numOfStars) { | ||
newRating = this.numOfStars; | ||
} | ||
this._rating = newRating; | ||
get disabled(): boolean { | ||
return this._disabled; | ||
} | ||
//update ratingAsInteger. rating parsed to int for the value-[n] modifier | ||
this.ratingAsInteger = parseInt(this._rating.toString()); | ||
@Input() | ||
set disabled(value: boolean) { | ||
this._disabled = !!value; | ||
} | ||
//update halfStarsVisible | ||
this.setHalfStarVisible(); | ||
///////////////////////////////////////////// | ||
//update calculated Color | ||
this.setColor(); | ||
/** | ||
* rating | ||
*/ | ||
protected _rating: number; | ||
get rating(): number { | ||
return this._rating; | ||
} | ||
@Input() | ||
set rating(value: number) { | ||
//validate and apply newRating | ||
let newRating: number = 0; | ||
if (value >= 0 | ||
&& value <= this.numOfStars) { | ||
newRating = value; | ||
//fire onRatingChange event | ||
let $event: IStarRatingOnRatingChangeEven = {rating: this._rating}; | ||
this.onRatingChange.emit($event); | ||
} | ||
//limit max value to max number of stars | ||
if (value > this.numOfStars) { | ||
newRating = this.numOfStars; | ||
} | ||
this._rating = newRating; | ||
//update ratingAsInteger. rating parsed to int for the value-[n] modifier | ||
this.ratingAsInteger = parseInt(this._rating.toString()); | ||
//update halfStarsVisible | ||
this.setHalfStarVisible(); | ||
/** | ||
* showHalfStars | ||
*/ | ||
protected _showHalfStars: boolean; | ||
//update calculated Color | ||
this.setColor(); | ||
get showHalfStars(): boolean { | ||
return this._showHalfStars; | ||
} | ||
@Input() | ||
set showHalfStars(value: boolean) { | ||
this._showHalfStars = !!value; | ||
//fire onRatingChange event | ||
let $event: IStarRatingOnRatingChangeEvent = {rating: this._rating}; | ||
this.onRatingChange.emit($event); | ||
} | ||
//update halfStarVisible | ||
this.setHalfStarVisible(); | ||
} | ||
///////////////////////////////////////////// | ||
/** | ||
* showHalfStars | ||
*/ | ||
protected _showHalfStars: boolean; | ||
/** | ||
* getColor | ||
*/ | ||
@Input() | ||
getColor: (rating: number, numOfStars: number, staticColor?: starRatingColors) => starRatingColors; | ||
///////////////////////////////////////////// | ||
get showHalfStars(): boolean { | ||
return this._showHalfStars; | ||
} | ||
/** | ||
* getHalfStarVisible | ||
*/ | ||
@Input() | ||
getHalfStarVisible: (rating: number) => boolean; | ||
///////////////////////////////////////////// | ||
@Input() | ||
set showHalfStars(value: boolean) { | ||
this._showHalfStars = !!value; | ||
//Output | ||
/////////////////////////////////////////////////////////////////////////////////////////// | ||
@Output() | ||
onClick: EventEmitter<IStarRatingOnClickEvent> = new EventEmitter<IStarRatingOnClickEvent>(); | ||
//update halfStarVisible | ||
this.setHalfStarVisible(); | ||
} | ||
@Output() | ||
onRatingChange: EventEmitter<IStarRatingOnRatingChangeEven> = new EventEmitter<IStarRatingOnRatingChangeEven>(); | ||
///////////////////////////////////////////// | ||
//CTRL ONLY | ||
/////////////////////////////////////////////////////////////////////////////////////////// | ||
classEmpty: string; | ||
classHalf: string; | ||
classFilled: string; | ||
/** | ||
* getColor | ||
*/ | ||
@Input() | ||
getColor: (rating: number, numOfStars: number, staticColor?: starRatingColors) => starRatingColors; | ||
///////////////////////////////////////////// | ||
pathEmpty: string; | ||
pathHalf: string; | ||
pathFilled: string; | ||
/** | ||
* getHalfStarVisible | ||
*/ | ||
@Input() | ||
getHalfStarVisible: (rating: number) => boolean; | ||
///////////////////////////////////////////// | ||
color: starRatingColors; | ||
stars: Array<number>; | ||
ratingAsInteger: number; | ||
halfStarVisible: boolean; | ||
//Output | ||
/////////////////////////////////////////////////////////////////////////////////////////// | ||
@Output() | ||
onClick: EventEmitter<IStarRatingOnClickEvent> = new EventEmitter<IStarRatingOnClickEvent>(); | ||
constructor() { | ||
@Output() | ||
onRatingChange: EventEmitter<IStarRatingOnRatingChangeEvent> = new EventEmitter<IStarRatingOnRatingChangeEvent>(); | ||
let config = new StarRatingConfig(); | ||
//CTRL ONLY | ||
/////////////////////////////////////////////////////////////////////////////////////////// | ||
classEmpty: string; | ||
classHalf: string; | ||
classFilled: string; | ||
//set default ctrl props | ||
this.classEmpty = config.classEmpty; | ||
this.classHalf = config.classHalf; | ||
this.classFilled = config.classFilled; | ||
this.pathEmpty = config.svgPathEmpty; | ||
this.pathHalf = config.svgPathHalf; | ||
this.pathFilled = config.svgPathFilled; | ||
pathEmpty: string; | ||
pathHalf: string; | ||
pathFilled: string; | ||
//set default Component Inputs | ||
if ('getColor' in config && typeof config.getColor === "function") { | ||
this.getColor = config.getColor; | ||
} | ||
color: starRatingColors; | ||
stars: Array<number>; | ||
ratingAsInteger: number; | ||
halfStarVisible: boolean; | ||
if ('getHalfStarVisible' in config && typeof config.getHalfStarVisible === "function") { | ||
this.getHalfStarVisible = config.getHalfStarVisible; | ||
} | ||
constructor(protected config: StarRatingConfig) { | ||
this.numOfStars = config.numOfStars; | ||
this.rating = 0; | ||
//set default ctrl props | ||
this.classEmpty = config.classEmpty; | ||
this.classHalf = config.classHalf; | ||
this.classFilled = config.classFilled; | ||
this.pathEmpty = config.svgPathEmpty; | ||
this.pathHalf = config.svgPathHalf; | ||
this.pathFilled = config.svgPathFilled; | ||
} | ||
//set default Component Inputs | ||
if ('getColor' in config && typeof config.getColor === "function") { | ||
this.getColor = config.getColor; | ||
svgVisible():boolean { | ||
return this.starType === "svg"; | ||
} | ||
if ('getHalfStarVisible' in config && typeof config.getHalfStarVisible === "function") { | ||
this.getHalfStarVisible = config.getHalfStarVisible; | ||
setColor(): void { | ||
//check if custom function is given | ||
if (typeof this.getColor === "function") { | ||
this.color = this.getColor(this.rating, this.numOfStars, this.staticColor); | ||
} | ||
else { | ||
this.color = StarRatingComponent._getColor(this.rating, this.numOfStars, this.staticColor); | ||
} | ||
} | ||
this.numOfStars = config.numOfStars; | ||
this.rating = 0; | ||
setHalfStarVisible(): void { | ||
//update halfStarVisible | ||
if (this.showHalfStars) { | ||
//check if custom function is given | ||
if (typeof this.getHalfStarVisible === "function") { | ||
this.halfStarVisible = this.getHalfStarVisible(this.rating); | ||
} else { | ||
this.halfStarVisible = StarRatingComponent._getHalfStarVisible(this.rating); | ||
} | ||
} | ||
} | ||
else { | ||
this.halfStarVisible = false; | ||
} | ||
} | ||
/** | ||
* onStarClicked | ||
* | ||
* Is fired when a star is clicked. And updated the rating value. | ||
* This function returns if the disabled or readOnly | ||
* property is set. If provided it emits the onClick event | ||
* handler with the actual rating value. | ||
* | ||
* @param rating | ||
*/ | ||
protected onStarClicked(rating: number): void { | ||
setColor(): void { | ||
//check if custom function is given | ||
if (typeof this.getColor === "function") { | ||
this.color = this.getColor(this.rating, this.numOfStars, this.staticColor); | ||
} | ||
else { | ||
this.color = StarRatingComponent._getColor(this.rating, this.numOfStars, this.staticColor); | ||
} | ||
} | ||
//fire onClick event | ||
let $event: IStarRatingOnClickEvent = {rating: rating}; | ||
setHalfStarVisible(): void { | ||
//update halfStarVisible | ||
if (this.showHalfStars) { | ||
//check if custom function is given | ||
if (typeof this.getHalfStarVisible === "function") { | ||
this.halfStarVisible = this.getHalfStarVisible(this.rating); | ||
} else { | ||
this.halfStarVisible = StarRatingComponent._getHalfStarVisible(this.rating); | ||
} | ||
if (this.readOnly || this.disabled) { | ||
return; | ||
} | ||
} | ||
else { | ||
this.halfStarVisible = false; | ||
} | ||
} | ||
this.rating = rating; | ||
/** | ||
* onStarClicked | ||
* | ||
* Is fired when a star is clicked. And updated the rating value. | ||
* This function returns if the disabled or readOnly | ||
* property is set. If provided it emits the onClick event | ||
* handler with the actual rating value. | ||
* | ||
* @param rating | ||
*/ | ||
protected onStarClicked(rating: number): void { | ||
let onClickEventObject: IStarRatingOnClickEvent = { | ||
rating: this.rating | ||
}; | ||
this.onClick.emit(onClickEventObject); | ||
//fire onClick event | ||
let $event: IStarRatingOnClickEvent = {rating: rating}; | ||
//this.onClick.emit($event); | ||
if (this.readOnly || this.disabled) { | ||
return; | ||
} | ||
this.rating = rating; | ||
ngOnChanges(changes: any): void { | ||
let onClickEventObject:IStarRatingOnClickEvent = { | ||
rating:this.rating | ||
}; | ||
this.onClick.emit(onClickEventObject); | ||
let valueChanged = function (key: string, changes: any): boolean { | ||
if (key in changes) { | ||
if ( | ||
//(changes[key].previousValue != 'UNINITIALIZED_VALUE' && changes[key].currentValue !== undefined) | ||
changes[key].currentValue != changes[key].previousValue) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
}; | ||
} | ||
//--------------------------------------- | ||
ngOnInit() { | ||
//functions | ||
} | ||
//boolean | ||
if (valueChanged('showHalfStars', changes)) { | ||
this.showHalfStars = changes['showHalfStars'].currentValue; | ||
} | ||
ngOnChanges(changes: SimpleChanges): void { | ||
if (valueChanged('space', changes)) { | ||
this.space = changes['space'].currentValue; | ||
} | ||
let valueChanged = function (key: string, changes: SimpleChanges): boolean { | ||
if (key in changes) { | ||
if ( | ||
//(changes[key].previousValue != 'UNINITIALIZED_VALUE' && changes[key].currentValue !== undefined) | ||
changes[key].currentValue != changes[key].previousValue) { | ||
return true; | ||
if (valueChanged('readOnly', changes)) { | ||
this.readOnly = changes['readOnly'].currentValue; | ||
} | ||
} | ||
return false; | ||
}; | ||
//--------------------------------------- | ||
if (valueChanged('disabled', changes)) { | ||
this.disabled = !!changes['disabled'].currentValue; | ||
} | ||
//functions | ||
//number | ||
if (valueChanged('rating', changes)) { | ||
this.rating = changes['rating'].currentValue; | ||
} | ||
//boolean | ||
if (valueChanged('showHalfStars', changes)) { | ||
this.showHalfStars = changes['showHalfStars'].currentValue; | ||
} | ||
if (valueChanged('numOfStars', changes)) { | ||
this.numOfStars = changes['numOfStars'].currentValue; | ||
} | ||
if (valueChanged('space', changes)) { | ||
this.space = changes['space'].currentValue; | ||
} | ||
//string | ||
if (valueChanged('labelText', changes)) { | ||
this.labelText = changes['labelText'].currentValue; | ||
} | ||
if (valueChanged('readOnly', changes)) { | ||
this.readOnly = changes['readOnly'].currentValue; | ||
} | ||
if (valueChanged('staticColor', changes)) { | ||
this.staticColor = changes['staticColor'].currentValue; | ||
} | ||
if (valueChanged('disabled', changes)) { | ||
this.disabled = !!changes['disabled'].currentValue; | ||
} | ||
if (valueChanged('size', changes)) { | ||
this.size = changes['size'].currentValue; | ||
} | ||
//number | ||
if (valueChanged('rating', changes)) { | ||
this.rating = changes['rating'].currentValue; | ||
} | ||
if (valueChanged('speed', changes)) { | ||
this.speed = changes['speed'].currentValue; | ||
} | ||
if (valueChanged('numOfStars', changes)) { | ||
this.numOfStars = changes['numOfStars'].currentValue; | ||
} | ||
if (valueChanged('labelPosition', changes)) { | ||
this.labelPosition = changes['labelPosition'].currentValue; | ||
} | ||
//string | ||
if (valueChanged('labelText', changes)) { | ||
this.labelText = changes['labelText'].currentValue; | ||
} | ||
if (valueChanged('starType', changes)) { | ||
this.starType = changes['starType'].currentValue; | ||
} | ||
if (valueChanged('staticColor', changes)) { | ||
this.staticColor = changes['staticColor'].currentValue; | ||
} | ||
if (valueChanged('size', changes)) { | ||
this.size = changes['size'].currentValue; | ||
} | ||
if (valueChanged('speed', changes)) { | ||
this.speed = changes['speed'].currentValue; | ||
} | ||
if (valueChanged('labelPosition', changes)) { | ||
this.labelPosition = changes['labelPosition'].currentValue; | ||
} | ||
if (valueChanged('starType', changes)) { | ||
this.starType = changes['starType'].currentValue; | ||
} | ||
} | ||
} |
@@ -0,0 +0,0 @@ import { NgModule } from '@angular/core'; |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Install scripts
Supply chain riskInstall scripts are run when the package is installed. The majority of malware in npm is hidden in install scripts.
Found 1 instance in 1 package
1738370
0
95
2198
313
0
24
- Removed@angular/common@2.0.0-rc.1
- Removed@angular/compiler@2.0.0-rc.1
- Removed@angular/core@2.0.0-rc.1
- Removed@angular/platform-browser@2.0.0-rc.1
- Removed@angular/router@2.0.0-rc.1
- Removedcss-star-rating@^1.1
- Removedes6-shim@^0.35.0
- Removedreflect-metadata@0.1.3
- Removedrxjs@5.0.0-beta.6
- Removedsystemjs@0.19.26
- Removedzone.js@^0.6.12
- Removed@angular/common@2.0.0-rc.1(transitive)
- Removed@angular/compiler@2.0.0-rc.1(transitive)
- Removed@angular/core@2.0.0-rc.1(transitive)
- Removed@angular/platform-browser@2.0.0-rc.1(transitive)
- Removed@angular/platform-browser-dynamic@2.0.0-rc.1(transitive)
- Removed@angular/router@2.0.0-rc.1(transitive)
- Removedcss-star-rating@1.3.1(transitive)
- Removedes6-shim@0.35.8(transitive)
- Removedreflect-metadata@0.1.3(transitive)
- Removedrxjs@5.0.0-beta.6(transitive)
- Removedsystemjs@0.19.26(transitive)
- Removedwhen@3.7.8(transitive)
- Removedzone.js@0.6.26(transitive)