import { Component, Input, Output, ElementRef, EventEmitter } from '@angular/core'; import { RdComponent } from "../../base/rdComponent"; import { StyleLoaderService } from '../../library/style-loader.service'; import { ScriptLoaderService } from '../../library/script-loader.service'; @Component({ selector: 'rd-star-rating', template: ` ` }) export class StarRating extends RdComponent { constructor(private script: ScriptLoaderService, private style: StyleLoaderService, private element: ElementRef) { super(); this.style.load(["./assets/css/star-rating.min.css"]); this.script.load(["./assets/js/star-rating.min.js"]).then(() => { this.setStarRating() }); } @Input("rd-value") value: number = 0; @Input("rd-count") count: number = 5; @Input("rd-step") step: number = 1; @Output("rd-value-change") valueChange: EventEmitter = new EventEmitter(); setStarRating() { this.jQuery(this.element.nativeElement).find("#starRating").rating({ min: 0, max: this.count, step: this.step, stars: this.count, filledStar: '', emptyStar: '', clearButton: '' }); this.jQuery('.rating').on("change", (e) => this.valueChange.emit(e.target.value)); } }