UNPKG

@guajiritos/rating

Version:

Angular Library that uses material design icons for editing and showing rating variables.

1 lines 8.04 kB
{"version":3,"file":"guajiritos-rating.mjs","sources":["../../../projects/guachos-rating/src/lib/guajiritos-rating.component.ts","../../../projects/guachos-rating/src/lib/guajiritos-rating.component.html","../../../projects/guachos-rating/src/public-api.ts","../../../projects/guachos-rating/src/guajiritos-rating.ts"],"sourcesContent":["import { Component, forwardRef, Input, signal, WritableSignal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\n\nexport interface GuajiritosRatingConfig {\n stars: number;\n color?: ThemePalette;\n size?: string;\n label?: string;\n readOnly?: boolean;\n showNumber?: boolean;\n showClearBtn?: boolean;\n}\n\n@Component({\n selector: 'guajiritos-rating',\n templateUrl: './guajiritos-rating.component.html',\n styleUrls: ['./guajiritos-rating.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuajiritosRating),\n multi: true\n }\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatTooltipModule\n ]\n})\nexport class GuajiritosRating implements ControlValueAccessor {\n public rating: WritableSignal<number> = signal(0.0);\n public _config: WritableSignal<GuajiritosRatingConfig> = signal({\n size: '1rem',\n color: 'accent',\n showNumber: false,\n readOnly: false,\n label: '',\n showClearBtn: false,\n stars: 5\n });\n public arrayFill: WritableSignal<number[]> = signal([]);\n\n @Input() set value(value: number) {\n if (value) {\n this.rating.set(value);\n }\n }\n\n @Input({ required: true }) set config(value: Partial<GuajiritosRatingConfig>) {\n this.processConfig(value);\n }\n\n private processConfig(value: Partial<GuajiritosRatingConfig>): void {\n this._config.set({\n ...this._config(),\n ...value\n });\n\n const stars: number = this._config()?.stars;\n if (stars) {\n this.arrayFill.set(Array.from({ length: stars }, (_, index: number) => index + 1));\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n propagateChange = (fn: any) => {\n };\n\n registerOnChange(fn: (_: any) => void): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(): void {\n }\n\n writeValue(value: any): void {\n if (value !== undefined && value !== '') {\n this.rating.set(value);\n }\n }\n\n public onMark(item: number): void {\n if (this._config()?.readOnly) {\n return;\n }\n\n if (item !== this.rating()) {\n this.rating.set(+item);\n } else {\n this.rating.set(this.rating() - 0.5);\n }\n\n this.propagateChange(this.rating());\n }\n\n public onClear(): void {\n if (this._config()?.readOnly) {\n return;\n }\n this.rating.set(0.0);\n\n this.propagateChange(this.rating());\n }\n}\n","<div class=\"container-stars\">\n @if (_config().showClearBtn) {\n <mat-icon (click)=\"onClear()\" class=\"clear-btn\"\n [ngStyle]=\"{'width': _config()?.size,'height': _config()?.size,'font-size': _config()?.size,'cursor':(!_config()?.readOnly) ? 'pointer' : 'initial'}\">\n cancel\n </mat-icon>\n }\n\n @for (item of arrayFill(); track item) {\n <mat-icon (click)=\"onMark(item)\" class=\"icon-star\" [matTooltip]=\"item +' '+ _config()?.label\"\n [ngClass]=\"{'star-empty':!(rating() < item && rating()> (item-1)) && (rating() < item), 'primary': _config()?.color === 'primary', 'accent': _config()?.color === 'accent', 'warn': _config()?.color === 'warn'}\"\n [ngStyle]=\"{'width': _config().size,'height': _config().size,'font-size':_config().size,'cursor':(!_config().readOnly)?'pointer':'initial'}\">\n @if (rating() >= item) {\n star\n }\n @if ((rating() < item && rating() > (item - 1))) {\n star_half\n } @else {\n @if (rating() < item) {\n star_border\n }\n }\n </mat-icon>\n }\n\n @if (_config()?.showNumber) {\n &nbsp;<span style=\"transform: scale(0.8);\" [ngStyle]=\"{'fontSize':_config()?.size}\">{{ rating() }}</span>\n }\n</div>\n","/*\n * Public API Surface of guachos-rating\n */\n\nexport * from './lib/guajiritos-rating.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}