| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, HostListener, NgModule } from '@angular/core';
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
- import { CommonModule } from '@angular/common';
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /** @type {?} */
- const RATING_CONTROL_VALUE_ACCESSOR = {
- provide: NG_VALUE_ACCESSOR,
- /* tslint:disable-next-line: no-use-before-declare */
- useExisting: forwardRef((/**
- * @return {?}
- */
- () => RatingComponent)),
- multi: true
- };
- class RatingComponent {
- /**
- * @param {?} changeDetection
- */
- constructor(changeDetection) {
- this.changeDetection = changeDetection;
- /**
- * number of icons
- */
- this.max = 5;
- /**
- * fired when icon selected, $event:number equals to selected rating
- */
- this.onHover = new EventEmitter();
- /**
- * fired when icon selected, $event:number equals to previous rating value
- */
- this.onLeave = new EventEmitter();
- // tslint:disable-next-line:no-any
- this.onChange = Function.prototype;
- // tslint:disable-next-line:no-any
- this.onTouched = Function.prototype;
- }
- /**
- * @param {?} event
- * @return {?}
- */
- onKeydown(event) {
- /* tslint:disable-next-line: deprecation */
- if ([37, 38, 39, 40].indexOf(event.which) === -1) {
- return;
- }
- event.preventDefault();
- event.stopPropagation();
- /* tslint:disable-next-line: deprecation */
- /** @type {?} */
- const sign = event.which === 38 || event.which === 39 ? 1 : -1;
- this.rate(this.value + sign);
- }
- /**
- * @return {?}
- */
- ngOnInit() {
- this.max = typeof this.max !== 'undefined' ? this.max : 5;
- this.titles =
- typeof this.titles !== 'undefined' && this.titles.length > 0
- ? this.titles
- : [];
- this.range = this.buildTemplateObjects(this.max);
- }
- // model -> view
- /**
- * @param {?} value
- * @return {?}
- */
- writeValue(value) {
- if (value % 1 !== value) {
- this.value = Math.round(value);
- this.preValue = value;
- this.changeDetection.markForCheck();
- return;
- }
- this.preValue = value;
- this.value = value;
- this.changeDetection.markForCheck();
- }
- /**
- * @param {?} value
- * @return {?}
- */
- enter(value) {
- if (!this.readonly) {
- this.value = value;
- this.changeDetection.markForCheck();
- this.onHover.emit(value);
- }
- }
- /**
- * @return {?}
- */
- reset() {
- this.value = this.preValue;
- this.changeDetection.markForCheck();
- this.onLeave.emit(this.value);
- }
- /**
- * @param {?} fn
- * @return {?}
- */
- registerOnChange(fn) {
- this.onChange = fn;
- }
- /**
- * @param {?} fn
- * @return {?}
- */
- registerOnTouched(fn) {
- this.onTouched = fn;
- }
- /**
- * @param {?} value
- * @return {?}
- */
- rate(value) {
- if (!this.readonly && value >= 0 && value <= this.range.length) {
- this.writeValue(value);
- this.onChange(value);
- }
- }
- /**
- * @protected
- * @param {?} max
- * @return {?}
- */
- buildTemplateObjects(max) {
- /** @type {?} */
- const result = [];
- for (let i = 0; i < max; i++) {
- result.push({
- index: i,
- title: this.titles[i] || i + 1
- });
- }
- return result;
- }
- }
- RatingComponent.decorators = [
- { type: Component, args: [{
- selector: 'rating',
- template: "<span (mouseleave)=\"reset()\" (keydown)=\"onKeydown($event)\" tabindex=\"0\"\n role=\"slider\" aria-valuemin=\"0\" [attr.aria-valuemax]=\"range.length\"\n [attr.aria-valuenow]=\"value\">\n <ng-template #star let-value=\"value\" let-index=\"index\">{{ index < value ? '★' : '☆' }}</ng-template>\n <ng-template ngFor let-r [ngForOf]=\"range\" let-index=\"index\">\n <span class=\"sr-only\">({{ index < value ? '*' : ' ' }})</span>\n <span class=\"bs-rating-star\"\n (mouseenter)=\"enter(index + 1)\"\n (click)=\"rate(index + 1)\"\n [title]=\"r.title\"\n [style.cursor]=\"readonly ? 'default' : 'pointer'\"\n [class.active]=\"index < value\">\n <ng-template [ngTemplateOutlet]=\"customTemplate || star\"\n [ngTemplateOutletContext]=\"{index: index, value: value}\">\n </ng-template>\n </span>\n </ng-template>\n</span>\n",
- providers: [RATING_CONTROL_VALUE_ACCESSOR],
- changeDetection: ChangeDetectionStrategy.OnPush
- }] }
- ];
- /** @nocollapse */
- RatingComponent.ctorParameters = () => [
- { type: ChangeDetectorRef }
- ];
- RatingComponent.propDecorators = {
- max: [{ type: Input }],
- readonly: [{ type: Input }],
- titles: [{ type: Input }],
- customTemplate: [{ type: Input }],
- onHover: [{ type: Output }],
- onLeave: [{ type: Output }],
- onKeydown: [{ type: HostListener, args: ['keydown', ['$event'],] }]
- };
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- class RatingModule {
- /**
- * @return {?}
- */
- static forRoot() {
- return {
- ngModule: RatingModule,
- providers: []
- };
- }
- }
- RatingModule.decorators = [
- { type: NgModule, args: [{
- imports: [CommonModule],
- declarations: [RatingComponent],
- exports: [RatingComponent]
- },] }
- ];
- export { RatingComponent, RatingModule, RATING_CONTROL_VALUE_ACCESSOR as ɵa };
- //# sourceMappingURL=ngx-bootstrap-rating.js.map
|