UNPKG

7.57 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../../src/rating/rating.config.ts","../../../../src/rating/rating.component.ts","../../../../src/rating/rating.module.ts"],"names":["this","ariaLabel","Injectable","args","providedIn","RATING_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","RatingComponent","multi","changeDetection","config","max","readonly","titles","onHover","EventEmitter","onLeave","onChange","Function","prototype","onTouched","range","value","Object","assign","onKeydown","event","indexOf","which","preventDefault","stopPropagation","sign","rate","ngOnInit","length","buildTemplateObjects","writeValue","Math","round","preValue","markForCheck","enter","emit","reset","registerOnChange","fn","registerOnTouched","result","i","push","index","title","Component","selector","template","providers","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","RatingConfig","Input","Output","HostListener","RatingModule","forRoot","ngModule","NgModule","imports","CommonModule","declarations","exports"],"mappings":"gfAGA,WAKEA,KAAAC,UAAY,yHALbC,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,eCaDC,EAA0C,CACrDC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAC,KAC9BC,OAAO,gBAgCP,SAAAD,EAAoBE,EAAoCC,GAApCb,KAAAY,gBAAAA,EArBXZ,KAAAc,IAAM,EAENd,KAAAe,UAAW,EAEXf,KAAAgB,OAAmB,GAKlBhB,KAAAiB,QAAU,IAAIC,EAAAA,aAEdlB,KAAAmB,QAAU,IAAID,EAAAA,aAExBlB,KAAAoB,SAAWC,SAASC,UACpBtB,KAAAuB,UAAYF,SAASC,UAErBtB,KAAAC,UAAY,SACZD,KAAAwB,MAAyB,GACzBxB,KAAAyB,MAAQ,EAINC,OAAOC,OAAO3B,KAAMa,UAItBH,EAAAY,UAAAM,UAAA,SAAUC,GACR,IAA+C,IAA3C,CAAC,GAAI,GAAI,GAAI,IAAIC,QAAQD,EAAME,OAAnC,CAIAF,EAAMG,iBACNH,EAAMI,kBACN,IAAMC,EAAuB,KAAhBL,EAAME,OAAgC,KAAhBF,EAAME,MAAe,GAAK,EAC7D/B,KAAKmC,KAAKnC,KAAKyB,MAAQS,KAGzBxB,EAAAY,UAAAc,SAAA,WACEpC,KAAKc,IAAMd,KAAKc,KAAO,EACvBd,KAAKgB,YACoB,IAAhBhB,KAAKgB,QAA0BhB,KAAKgB,OAAOqB,OAAS,EACvDrC,KAAKgB,OACL,GACNhB,KAAKwB,MAAQxB,KAAKsC,qBAAqBtC,KAAKc,MAI9CJ,EAAAY,UAAAiB,WAAA,SAAWd,GACT,GAAIA,EAAQ,IAAMA,EAKhB,OAJAzB,KAAKyB,MAAQe,KAAKC,MAAMhB,GACxBzB,KAAK0C,SAAWjB,OAChBzB,KAAKY,gBAAgB+B,eAKvB3C,KAAK0C,SAAWjB,EAChBzB,KAAKyB,MAAQA,EACbzB,KAAKY,gBAAgB+B,gBAGvBjC,EAAAY,UAAAsB,MAAA,SAAMnB,GACCzB,KAAKe,WACRf,KAAKyB,MAAQA,EACbzB,KAAKY,gBAAgB+B,eACrB3C,KAAKiB,QAAQ4B,KAAKpB,KAItBf,EAAAY,UAAAwB,MAAA,WAC+B,iBAAlB9C,KAAK0C,WACd1C,KAAKyB,MAAQe,KAAKC,MAAMzC,KAAK0C,UAC7B1C,KAAKY,gBAAgB+B,eACrB3C,KAAKmB,QAAQ0B,KAAK7C,KAAKyB,SAI3Bf,EAAAY,UAAAyB,iBAAA,SAAiBC,GACfhD,KAAKoB,SAAW4B,GAGlBtC,EAAAY,UAAA2B,kBAAA,SAAkBD,GAChBhD,KAAKuB,UAAYyB,GAGnBtC,EAAAY,UAAAa,KAAA,SAAKV,IACEzB,KAAKe,UAAYf,KAAKwB,OACtBC,GAAS,GAAKA,GAASzB,KAAKwB,MAAMa,SACrCrC,KAAKuC,WAAWd,GAChBzB,KAAKoB,SAASK,KAIRf,EAAAY,UAAAgB,qBAAA,SAAqBxB,GAG7B,IAFA,IAAMoC,EAA0B,GAEvBC,EAAI,EAAGA,EAAIrC,EAAKqC,IACvBD,EAAOE,KAAK,CACVC,MAAOF,EACPG,MAAOtD,KAAKgB,OAAOmC,IAAMA,EAAI,IAIjC,OAAOD,4BA/GVK,EAAAA,UAASpD,KAAA,CAAC,CACTqD,SAAU,SACVC,SAAA,g8BACAC,UAAW,CAACrD,GACZO,gBAAiB+C,EAAAA,wBAAwBC,oDAzBzCC,EAAAA,yBAaOC,kCAgBNC,EAAAA,wBAEAA,EAAAA,sBAEAA,EAAAA,8BAGAA,EAAAA,uBAEAC,EAAAA,wBAEAA,EAAAA,0BAcAC,EAAAA,aAAY9D,KAAA,CAAC,UAAW,CAAC,+BC9C5B,SAAA+D,YACSA,EAAAC,QAAP,WACE,MAAO,CACLC,SAAUF,EACVR,UAAW,8BAThBW,EAAAA,SAAQlE,KAAA,CAAC,CACRmE,QAAS,CAACC,EAAAA,cACVC,aAAc,CAAC9D,GACf+D,QAAS,CAAC/D","sourcesContent":["import { Injectable } from '@angular/core';\n\n/** Default values provider for rating */\n@Injectable({\n providedIn: 'root'\n})\nexport class RatingConfig {\n /** aria label for rating */\n ariaLabel = 'rating';\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n OnInit,\n Output,\n Provider,\n TemplateRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RatingResults } from './models';\nimport { RatingConfig } from './rating.config';\n\nexport const RATING_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RatingComponent),\n multi: true\n};\n\n@Component({\n selector: 'rating',\n templateUrl: './rating.component.html',\n providers: [RATING_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RatingComponent implements ControlValueAccessor, OnInit {\n /** number of icons */\n @Input() max = 5;\n /** if true will not react on any user events */\n @Input() readonly = false;\n /** array of icons titles, default: ([\"one\", \"two\", \"three\", \"four\", \"five\"]) */\n @Input() titles: string[] = [];\n /** custom template for icons */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() customTemplate?: TemplateRef<any>;\n /** fired when icon selected, $event:number equals to selected rating */\n @Output() onHover = new EventEmitter<number>();\n /** fired when icon selected, $event:number equals to previous rating value */\n @Output() onLeave = new EventEmitter<number>();\n\n onChange = Function.prototype;\n onTouched = Function.prototype;\n /** aria label for rating */\n ariaLabel = 'rating';\n range: RatingResults[] = [];\n value = 0;\n protected preValue?: number;\n\n constructor(private changeDetection: ChangeDetectorRef, config: RatingConfig) {\n Object.assign(this, config);\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if ([37, 38, 39, 40].indexOf(event.which) === -1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const sign = event.which === 38 || event.which === 39 ? 1 : -1;\n this.rate(this.value + sign);\n }\n\n ngOnInit(): void {\n this.max = this.max || 5;\n this.titles =\n typeof this.titles !== 'undefined' && this.titles.length > 0\n ? this.titles\n : [];\n this.range = this.buildTemplateObjects(this.max);\n }\n\n // model -> view\n writeValue(value: number): void {\n if (value % 1 !== value) {\n this.value = Math.round(value);\n this.preValue = value;\n this.changeDetection.markForCheck();\n\n return;\n }\n\n this.preValue = value;\n this.value = value;\n this.changeDetection.markForCheck();\n }\n\n enter(value: number): void {\n if (!this.readonly) {\n this.value = value;\n this.changeDetection.markForCheck();\n this.onHover.emit(value);\n }\n }\n\n reset(): void {\n if (typeof this.preValue === 'number') {\n this.value = Math.round(this.preValue);\n this.changeDetection.markForCheck();\n this.onLeave.emit(this.value);\n }\n }\n\n registerOnChange(fn: (_: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n rate(value: number): void {\n if (!this.readonly && this.range\n && value >= 0 && value <= this.range.length) {\n this.writeValue(value);\n this.onChange(value);\n }\n }\n\n protected buildTemplateObjects(max: number): RatingResults[] {\n const result: RatingResults[] = [];\n\n for (let i = 0; i < max; i++) {\n result.push({\n index: i,\n title: this.titles[i] || i + 1\n });\n }\n\n return result;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { RatingComponent } from './rating.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [RatingComponent],\n exports: [RatingComponent]\n})\nexport class RatingModule {\n static forRoot(): ModuleWithProviders<RatingModule> {\n return {\n ngModule: RatingModule,\n providers: []\n };\n }\n}\n"]}
\No newline at end of file