ng-star-rate
Version:
A simple star rating library
125 lines (117 loc) • 10.9 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('ng-star-rate', ['exports', '@angular/core', '@angular/platform-browser', '@angular/common'], factory) :
(factory((global['ng-star-rate'] = {}),global.ng.core,global.ng.platformBrowser,global.ng.common));
}(this, (function (exports,core,platformBrowser,common) { 'use strict';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var RatingComponent = (function () {
function RatingComponent(el) {
this.el = el;
this.ratingSelection = new core.EventEmitter();
}
/**
* @return {?}
*/
RatingComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var /** @type {?} */ style = "\n .active {color :" + this.selctedColor + "; }\n .list:hover .star {color: " + this.selctedColor + "; }\n ";
this.createStyle(style);
this.generateRating();
};
/**
* @param {?} style
* @return {?}
*/
RatingComponent.prototype.createStyle = /**
* @param {?} style
* @return {?}
*/
function (style) {
var /** @type {?} */ styleElement = document.createElement('style');
styleElement.appendChild(document.createTextNode(style));
this.el.nativeElement.appendChild(styleElement);
};
/**
* @return {?}
*/
RatingComponent.prototype.generateRating = /**
* @return {?}
*/
function () {
this.stars = Array.from({ length: this.maxRating }, function (v, k) { return k + 1; });
};
/**
* @param {?} item
* @return {?}
*/
RatingComponent.prototype.rate = /**
* @param {?} item
* @return {?}
*/
function (item) {
this.star = (item <= this.maxRating && item >= 0) ?
(this.star = this.star === item ? item - 1 : item) : this.star;
this.ratingSelection.emit(this.star);
};
RatingComponent.decorators = [
{ type: core.Component, args: [{
selector: 'lib-star-rate',
// templateUrl: './rating.component.html',
template: "\n <div class=\"rating\">\n <ul class=\"list\">\n <li\n id=\"starId\"\n class=\"star\"\n *ngFor=\"let item of stars\"\n [ngClass]=\"{'active': item <= star}\"\n (click)=\"rate(item)\">\n <i class=\"fa\" [ngClass]=\"item <= star ? 'fa-star' : 'fa-star-o'\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n <span *ngIf=\"showRatingCounter\">{{ star }} of {{ maxRating }}</span>\n </div>\n ",
styles: [
"\n .rating {\n font-family: \"Avenir\", Helvetica, Arial, sans-serif;\n font-size: 22px;\n color: #a7a8a8;\n }\n .list {\n margin: 0 0 5px 0;\n padding: 0;\n list-style-type: none;\n }\n .star {\n display: inline-block;\n cursor: pointer;\n }\n .star:hover ~ .star:not(.active) {\n color: inherit;\n }\n "
]
},] },
];
/** @nocollapse */
RatingComponent.ctorParameters = function () {
return [
{ type: core.ElementRef }
];
};
RatingComponent.propDecorators = {
selctedColor: [{ type: core.Input }],
star: [{ type: core.Input }],
maxRating: [{ type: core.Input }],
showRatingCounter: [{ type: core.Input }],
ratingSelection: [{ type: core.Output }]
};
return RatingComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var StarRateModule = (function () {
function StarRateModule() {
}
StarRateModule.decorators = [
{ type: core.NgModule, args: [{
declarations: [RatingComponent],
imports: [
platformBrowser.BrowserModule,
common.CommonModule
],
exports: [RatingComponent]
},] },
];
return StarRateModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
exports.StarRateModule = StarRateModule;
exports.RatingComponent = RatingComponent;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc3Rhci1yYXRlLnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmctc3Rhci1yYXRlL2xpYi9yYXRpbmcvcmF0aW5nLmNvbXBvbmVudC50cyIsIm5nOi8vbmctc3Rhci1yYXRlL2xpYi9zdGFyLXJhdGUubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN0YXItcmF0ZScsXG4gIC8vIHRlbXBsYXRlVXJsOiAnLi9yYXRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IGNsYXNzPVwicmF0aW5nXCI+XG4gICAgPHVsIGNsYXNzPVwibGlzdFwiPlxuICAgICAgPGxpXG4gICAgICAgIGlkPVwic3RhcklkXCJcbiAgICAgICAgY2xhc3M9XCJzdGFyXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3RhcnNcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGl0ZW0gPD0gc3Rhcn1cIlxuICAgICAgICAoY2xpY2spPVwicmF0ZShpdGVtKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhXCIgW25nQ2xhc3NdPVwiaXRlbSA8PSBzdGFyID8gJ2ZhLXN0YXInIDogJ2ZhLXN0YXItbydcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHNwYW4gKm5nSWY9XCJzaG93UmF0aW5nQ291bnRlclwiPnt7IHN0YXIgfX0gb2Yge3sgbWF4UmF0aW5nIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnJhdGluZyB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIkF2ZW5pclwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgIGNvbG9yOiAjYTdhOGE4O1xuICAgICAgfVxuICAgICAgLmxpc3Qge1xuICAgICAgICBtYXJnaW46IDAgMCA1cHggMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgfVxuICAgICAgLnN0YXIge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgIC5zdGFyOmhvdmVyIH4gLnN0YXI6bm90KC5hY3RpdmUpIHtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICB9XG4gIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSYXRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZWxjdGVkQ29sb3I6IHN0cmluZztcbiAgQElucHV0KCkgc3RhcjogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhSYXRpbmc6IG51bWJlcjtcbiAgQElucHV0KCkgc2hvd1JhdGluZ0NvdW50ZXI6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSByYXRpbmdTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIHN0YXJzOiBBcnJheTxudW1iZXI+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHN0eWxlID0gYFxuICAgIC5hY3RpdmUge2NvbG9yIDoke3RoaXMuc2VsY3RlZENvbG9yfTsgfVxuICAgIC5saXN0OmhvdmVyIC5zdGFyIHtjb2xvcjogJHt0aGlzLnNlbGN0ZWRDb2xvcn07IH1cbiAgIGA7XG4gICAgdGhpcy5jcmVhdGVTdHlsZShzdHlsZSk7XG4gICAgdGhpcy5nZW5lcmF0ZVJhdGluZygpO1xuICB9XG5cbiAgY3JlYXRlU3R5bGUoc3R5bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0eWxlKSk7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG4gIH1cblxuICBnZW5lcmF0ZVJhdGluZygpIHtcbiAgICB0aGlzLnN0YXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5tYXhSYXRpbmcgfSwgKHYsIGspID0+IGsgKyAxKTtcbiAgfVxuXG4gIHJhdGUoaXRlbTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFyID0gKGl0ZW0gPD0gdGhpcy5tYXhSYXRpbmcgJiYgaXRlbSA+PSAwKSA/XG4gICAgICAodGhpcy5zdGFyID0gdGhpcy5zdGFyID09PSBpdGVtID8gaXRlbSAtIDEgOiBpdGVtKSA6IHRoaXMuc3RhcjtcbiAgICB0aGlzLnJhdGluZ1NlbGVjdGlvbi5lbWl0KHRoaXMuc3Rhcik7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmF0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9yYXRpbmcvcmF0aW5nLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1JhdGluZ0NvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBCcm93c2VyTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbUmF0aW5nQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBTdGFyUmF0ZU1vZHVsZSB7IH1cbiJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiSW5wdXQiLCJPdXRwdXQiLCJOZ01vZHVsZSIsIkJyb3dzZXJNb2R1bGUiLCJDb21tb25Nb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtRQWtERSx5QkFBb0IsRUFBYztZQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7bUNBSGdCLElBQUlBLGlCQUFZLEVBQVU7U0FHckM7Ozs7UUFFdkMsa0NBQVE7OztZQUFSO2dCQUNFLHFCQUFNLEtBQUssR0FBRywyQkFDSSxJQUFJLENBQUMsWUFBWSwyQ0FDUCxJQUFJLENBQUMsWUFBWSxhQUM3QyxDQUFDO2dCQUNELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2Qjs7Ozs7UUFFRCxxQ0FBVzs7OztZQUFYLFVBQVksS0FBYTtnQkFDdkIscUJBQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELFlBQVksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDakQ7Ozs7UUFFRCx3Q0FBYzs7O1lBQWQ7Z0JBQ0UsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssT0FBQSxDQUFDLEdBQUcsQ0FBQyxHQUFBLENBQUMsQ0FBQzthQUN0RTs7Ozs7UUFFRCw4QkFBSTs7OztZQUFKLFVBQUssSUFBWTtnQkFDZixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLENBQUM7cUJBQzdDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDakUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3RDOztvQkF6RUZDLGNBQVMsU0FBQzt3QkFDVCxRQUFRLEVBQUUsZUFBZTs7d0JBRXpCLFFBQVEsRUFBRSxnY0FjVDt3QkFDRCxNQUFNLEVBQUU7NEJBQ04sMFpBa0JEO3lCQUNBO3FCQUNGOzs7Ozt3QkF6Q3dEQyxlQUFVOzs7O21DQTJDaEVDLFVBQUs7MkJBQ0xBLFVBQUs7Z0NBQ0xBLFVBQUs7d0NBQ0xBLFVBQUs7c0NBQ0xDLFdBQU07OzhCQS9DVDs7Ozs7OztBQ0FBOzs7O29CQUtDQyxhQUFRLFNBQUM7d0JBQ1IsWUFBWSxFQUFFLENBQUMsZUFBZSxDQUFDO3dCQUMvQixPQUFPLEVBQUU7NEJBQ1BDLDZCQUFhOzRCQUNiQyxtQkFBWTt5QkFDYjt3QkFDRCxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7cUJBQzNCOzs2QkFaRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9