UNPKG

8.94 kBSource Map (JSON)View Raw
1{"version":3,"file":"rating.component.js","sourceRoot":"","sources":["../../src/rating/rating.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, HostListener, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const RATING_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RatingComponent),\n multi: true\n};\n\n\nexport class RatingComponent implements ControlValueAccessor, OnInit {\n /** number of icons */\n public max: number = 5;\n /** selected icon class */\n public stateOn: string;\n /** unselected icon class */\n public stateOff: string;\n /** if true will not react on any user events */\n public readonly: boolean;\n /** array of icons titles, default: ([\"one\", \"two\", \"three\", \"four\", \"five\"]) */\n public titles: string[];\n /** array of custom icons classes */\n public ratingStates: {stateOn: string, stateOff: string}[];\n /** fired when icon selected, $event:number equals to selected rating */\n public onHover: EventEmitter<number> = new EventEmitter();\n /** fired when icon selected, $event:number equals to previous rating value */\n public onLeave: EventEmitter<number> = new EventEmitter();\n\n public onChange: any = Function.prototype;\n public onTouched: any = Function.prototype;\n\n public range: any[];\n public value: number;\n protected preValue: number;\n\n \n public onKeydown(event: any): void {\n if ([37, 38, 39, 40].indexOf(event.which) === -1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n let sign = event.which === 38 || event.which === 39 ? 1 : -1;\n this.rate(this.value + sign);\n }\n\n public ngOnInit(): void {\n this.max = typeof this.max !== 'undefined' ? this.max : 5;\n this.readonly = this.readonly === true;\n this.stateOn = typeof this.stateOn !== 'undefined'\n ? this.stateOn\n : 'glyphicon-star';\n this.stateOff = typeof this.stateOff !== 'undefined'\n ? this.stateOff\n : 'glyphicon-star-empty';\n this.titles = typeof this.titles !== 'undefined' && this.titles.length > 0\n ? this.titles\n : ['one', 'two', 'three', 'four', 'five'];\n this.range = this.buildTemplateObjects(this.ratingStates, this.max);\n }\n\n // model -> view\n public writeValue(value: number): void {\n if (value % 1 !== value) {\n this.value = Math.round(value);\n this.preValue = value;\n return;\n }\n\n this.preValue = value;\n this.value = value;\n }\n\n public enter(value: number): void {\n if (!this.readonly) {\n this.value = value;\n this.onHover.emit(value);\n }\n }\n\n public reset(): void {\n this.value = this.preValue;\n this.onLeave.emit(this.value);\n }\n\n public registerOnChange(fn: (_: any) => {}): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n public rate(value: number): void {\n if (!this.readonly && value >= 0 && value <= this.range.length) {\n this.writeValue(value);\n this.onChange(value);\n }\n }\n\n protected buildTemplateObjects(ratingStates: any[], max: number): any[] {\n ratingStates = ratingStates || [];\n let count = ratingStates.length || max;\n let result: any[] = [];\n for (let i = 0; i < count; i++) {\n result.push(Object.assign({\n index: i,\n stateOn: this.stateOn,\n stateOff: this.stateOff,\n title: this.titles[i] || i + 1\n }, ratingStates[i] || {}));\n }\n return result;\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n selector: 'rating',\n template: `\n <span (mouseleave)=\"reset()\" (keydown)=\"onKeydown($event)\" tabindex=\"0\" role=\"slider\" aria-valuemin=\"0\" [attr.aria-valuemax]=\"range.length\" [attr.aria-valuenow]=\"value\">\n <template ngFor let-r [ngForOf]=\"range\" let-index=\"index\">\n <span class=\"sr-only\">({{ index < value ? '*' : ' ' }})</span>\n <i (mouseenter)=\"enter(index + 1)\" (click)=\"rate(index + 1)\" class=\"glyphicon\" [ngClass]=\"index < value ? r.stateOn : r.stateOff\" [title]=\"r.title\" ></i>\n </template>\n </span>\n `,\n providers: [RATING_CONTROL_VALUE_ACCESSOR]\n}, ] },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'max': [{ type: Input },],\n'stateOn': [{ type: Input },],\n'stateOff': [{ type: Input },],\n'readonly': [{ type: Input },],\n'titles': [{ type: Input },],\n'ratingStates': [{ type: Input },],\n'onHover': [{ type: Output },],\n'onLeave': [{ type: Output },],\n'onKeydown': [{ type: HostListener, args: ['keydown', ['$event'], ] },],\n};\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
\No newline at end of file