UNPKG

@period-year-norway/ngx-bootstrap

Version:
1 lines 11.4 kB
{"version":3,"file":"period-year-norway-ngx-bootstrap-rating.mjs","sources":["../../../../src/rating/rating.config.ts","../../../../src/rating/rating.component.ts","../../../../src/rating/rating.component.html","../../../../src/rating/rating.module.ts","../../../../src/rating/period-year-norway-ngx-bootstrap-rating.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n/** Default values provider for rating */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RatingConfig {\r\n /** aria label for rating */\r\n ariaLabel = 'rating';\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n Provider,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { RatingResults } from './models';\r\nimport { RatingConfig } from './rating.config';\r\n\r\nexport const RATING_CONTROL_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RatingComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\n selector: 'rating',\n templateUrl: './rating.component.html',\n providers: [RATING_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\r\nexport class RatingComponent implements ControlValueAccessor, OnInit {\r\n /** number of icons */\r\n @Input() max = 5;\r\n /** if true will not react on any user events */\r\n @Input() readonly = false;\r\n /** array of icons titles, default: ([\"one\", \"two\", \"three\", \"four\", \"five\"]) */\r\n @Input() titles: string[] = [];\r\n /** custom template for icons */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Input() customTemplate?: TemplateRef<any>;\r\n /** fired when icon selected, $event:number equals to selected rating */\r\n @Output() onHover = new EventEmitter<number>();\r\n /** fired when icon selected, $event:number equals to previous rating value */\r\n @Output() onLeave = new EventEmitter<number>();\r\n\r\n onChange = Function.prototype;\r\n onTouched = Function.prototype;\r\n /** aria label for rating */\r\n ariaLabel = 'rating';\r\n range: RatingResults[] = [];\r\n value = 0;\r\n protected preValue?: number;\r\n\r\n constructor(private changeDetection: ChangeDetectorRef, config: RatingConfig) {\r\n Object.assign(this, config);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydown(event: KeyboardEvent): void {\r\n if ([37, 38, 39, 40].indexOf(event.which) === -1) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const sign = event.which === 38 || event.which === 39 ? 1 : -1;\r\n this.rate(this.value + sign);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.max = this.max || 5;\r\n this.titles =\r\n typeof this.titles !== 'undefined' && this.titles.length > 0\r\n ? this.titles\r\n : [];\r\n this.range = this.buildTemplateObjects(this.max);\r\n }\r\n\r\n // model -> view\r\n writeValue(value: number): void {\r\n if (value % 1 !== value) {\r\n this.value = Math.round(value);\r\n this.preValue = value;\r\n this.changeDetection.markForCheck();\r\n\r\n return;\r\n }\r\n\r\n this.preValue = value;\r\n this.value = value;\r\n this.changeDetection.markForCheck();\r\n }\r\n\r\n enter(value: number): void {\r\n if (!this.readonly) {\r\n this.value = value;\r\n this.changeDetection.markForCheck();\r\n this.onHover.emit(value);\r\n }\r\n }\r\n\r\n reset(): void {\r\n if (typeof this.preValue === 'number') {\r\n this.value = Math.round(this.preValue);\r\n this.changeDetection.markForCheck();\r\n this.onLeave.emit(this.value);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (_: number) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n rate(value: number): void {\r\n if (!this.readonly && this.range\r\n && value >= 0 && value <= this.range.length) {\r\n this.writeValue(value);\r\n this.onChange(value);\r\n }\r\n }\r\n\r\n protected buildTemplateObjects(max: number): RatingResults[] {\r\n const result: RatingResults[] = [];\r\n\r\n for (let i = 0; i < max; i++) {\r\n result.push({\r\n index: i,\r\n title: this.titles[i] || i + 1\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","<span (mouseleave)=\"reset()\" (keydown)=\"onKeydown($event)\" tabindex=\"0\"\r\n role=\"slider\" aria-valuemin=\"0\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-valuemax]=\"range.length\"\r\n [attr.aria-valuenow]=\"value\">\r\n <ng-template #star let-value=\"value\" let-index=\"index\">{{ index < value ? '&#9733;' : '&#9734;' }}</ng-template>\r\n <ng-template ngFor let-r [ngForOf]=\"range\" let-index=\"index\">\r\n <span class=\"sr-only visually-hidden\">({{ index < value ? '*' : ' ' }})</span>\r\n <span class=\"bs-rating-star\"\r\n (mouseenter)=\"enter(index + 1)\"\r\n (click)=\"rate(index + 1)\"\r\n [title]=\"r.title\"\r\n [style.cursor]=\"readonly ? 'default' : 'pointer'\"\r\n [class.active]=\"index < value\">\r\n <ng-template [ngTemplateOutlet]=\"customTemplate || star\"\r\n [ngTemplateOutletContext]=\"{index: index, value: value}\">\r\n </ng-template>\r\n </span>\r\n </ng-template>\r\n</span>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { RatingComponent } from './rating.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [RatingComponent],\r\n exports: [RatingComponent]\r\n})\r\nexport class RatingModule {\r\n static forRoot(): ModuleWithProviders<RatingModule> {\r\n return {\r\n ngModule: RatingModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RatingConfig"],"mappings":"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"}