{"version":3,"file":"guachos-rating.mjs","sources":["../../../projects/guachos-rating/src/lib/guachos-rating.component.ts","../../../projects/guachos-rating/src/lib/guachos-rating.component.html","../../../projects/guachos-rating/src/lib/guachos-rating.module.ts","../../../projects/guachos-rating/src/public-api.ts","../../../projects/guachos-rating/src/guachos-rating.ts"],"sourcesContent":["import {Component, Input, forwardRef, OnInit} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\n\r\nexport interface StarConfig {\r\n  size?: string;\r\n  colorFill?: string;\r\n  label?: string;\r\n  readOnly?: boolean;\r\n  showNumber?: boolean;\r\n  showClearBtn?: boolean;\r\n  stars?: number;\r\n}\r\n\r\n@Component({\r\n  // tslint:disable-next-line: component-selector\r\n  selector: 'guachos-rating',\r\n  templateUrl: './guachos-rating.component.html',\r\n  styleUrls: ['./guachos-rating.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => GuachosRatingComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class GuachosRatingComponent implements ControlValueAccessor, OnInit {\r\n  get rating() {\r\n    return this._rating;\r\n  }\r\n\r\n  set rating(val) {\r\n    this._rating = val;\r\n    this.propagateChange(this._rating);\r\n  }\r\n\r\n  @Input() _rating: number = 0.0; // notice the '_\r\n\r\n  @Input() set value(value) {\r\n    this.rating = value;\r\n  }\r\n\r\n  @Input() set config(value: StarConfig) {\r\n    this.processConfig(value);\r\n  }\r\n\r\n  public _config: StarConfig = {\r\n    size: '1rem',\r\n    colorFill: '#ffc107',\r\n    showNumber: false,\r\n    readOnly: false,\r\n    label: '',\r\n    showClearBtn: false,\r\n    stars: 5,\r\n  };\r\n\r\n  arrayFill = [];\r\n\r\n  propagateChange = (_: any) => {\r\n  };\r\n\r\n  registerOnChange(fn): void {\r\n    this.propagateChange = fn;\r\n  }\r\n\r\n  registerOnTouched(): void {\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    if (value !== undefined && value !== '') {\r\n      this.rating = value;\r\n    }\r\n  }\r\n\r\n  processConfig(value: StarConfig): void {\r\n    if (value?.size) {\r\n      this._config.size = value.size;\r\n    }\r\n    if (value?.colorFill) {\r\n      this._config.colorFill = value.colorFill;\r\n    }\r\n    if (value?.readOnly) {\r\n      this._config.readOnly = value.readOnly;\r\n    }\r\n    if (value?.showNumber) {\r\n      this._config.showNumber = value.showNumber;\r\n    }\r\n    if (value?.label) {\r\n      this._config.label = value.label;\r\n    }\r\n    if (value?.showClearBtn) {\r\n      this._config.showClearBtn = value.showClearBtn;\r\n    }\r\n    if (value?.stars) {\r\n      this._config.stars = value.stars;\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    for (let i = 1; i <= this._config?.stars; i++) {\r\n      this.arrayFill.push(i);\r\n    }\r\n  }\r\n\r\n  onMark(item): void {\r\n    if (this._config?.readOnly) {\r\n      return;\r\n    }\r\n    if (item !== this.rating) {\r\n      this.rating = +item;\r\n      return;\r\n    }\r\n    if (item === this.rating) {\r\n      this.rating -= 0.5;\r\n      return;\r\n    }\r\n  }\r\n\r\n  onClear(): void {\r\n    if (this._config?.readOnly) {\r\n      return;\r\n    }\r\n    this.rating = 0.0;\r\n  }\r\n}\r\n","<div class=\"container-stars\">\r\n  <mat-icon (click)=\"onClear()\" *ngIf=\"_config.showClearBtn\" class=\"clearBtn\"\r\n    [ngStyle]=\"{'width': _config.size,'height': _config.size,'font-size':_config.size,'cursor':(!_config.readOnly)?'pointer':'initial'}\">\r\n    cancel\r\n  </mat-icon>\r\n\r\n  <ng-container *ngFor=\"let item of arrayFill\">\r\n    <mat-icon (click)=\"onMark(item)\" class=\"icon-star\" [matTooltip]=\"item +' '+ _config.label\"\r\n      [ngClass]=\"{'starEmpty':!(rating < item && rating> (item-1)) && (rating < item)}\"\r\n      [ngStyle]=\"{'color':_config.colorFill,'width': _config.size,'height': _config.size,'font-size':_config.size,'cursor':(!_config.readOnly)?'pointer':'initial'}\">\r\n      <ng-container *ngIf=\"rating >= item\">\r\n        star\r\n      </ng-container>\r\n      <ng-container *ngIf=\"(rating < item && rating> (item-1));else elseBlock\">\r\n        star_half\r\n      </ng-container>\r\n      <ng-template #elseBlock>\r\n        <ng-container *ngIf=\"rating < item\">\r\n          star_border\r\n        </ng-container>\r\n      </ng-template>\r\n    </mat-icon>\r\n  </ng-container>\r\n\r\n  <ng-container *ngIf=\"_config.showNumber\">\r\n    &nbsp;<span style=\"transform: scale(0.8);\" [ngStyle]=\"{'fontSize':_config.size}\">{{rating}}</span>\r\n  </ng-container>\r\n</div>\r\n","import { GuachosRatingComponent } from './guachos-rating.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n  declarations: [GuachosRatingComponent],\r\n  imports: [CommonModule, MatIconModule, MatTooltipModule],\r\n  exports: [GuachosRatingComponent],\r\n})\r\nexport class GuachosRatingModule {}\r\n","/*\r\n * Public API Surface of guachos-rating\r\n */\r\n\r\nexport * from './lib/guachos-rating.component';\r\nexport * from './lib/guachos-rating.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;MA0Ba,sBAAsB;IAbnC;QAuBW,YAAO,GAAW,GAAG,CAAC;QAUxB,YAAO,GAAe;YAC3B,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,cAAS,GAAG,EAAE,CAAC;QAEf,oBAAe,GAAG,CAAC,CAAM;SACxB,CAAC;KAiEH;IAjGC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,IAAI,MAAM,CAAC,GAAG;QACZ,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;IAID,IAAa,KAAK,CAAC,KAAK;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAED,IAAa,MAAM,CAAC,KAAiB;QACnC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3B;IAiBD,gBAAgB,CAAC,EAAE;QACjB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB;KAChB;IAED,UAAU,CAAC,KAAU;QACnB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;YACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;KACF;IAED,aAAa,CAAC,KAAiB;QAC7B,IAAI,KAAK,EAAE,IAAI,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;SAChC;QACD,IAAI,KAAK,EAAE,SAAS,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;SAC1C;QACD,IAAI,KAAK,EAAE,QAAQ,EAAE;YACnB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;SACxC;QACD,IAAI,KAAK,EAAE,UAAU,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;SAC5C;QACD,IAAI,KAAK,EAAE,KAAK,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SAClC;QACD,IAAI,KAAK,EAAE,YAAY,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;SAChD;QACD,IAAI,KAAK,EAAE,KAAK,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SAClC;KACF;IAED,QAAQ;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;KACF;IAED,MAAM,CAAC,IAAI;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;YAC1B,OAAO;SACR;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;YACpB,OAAO;SACR;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;YACnB,OAAO;SACR;KACF;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;YAC1B,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;KACnB;;mHAjGU,sBAAsB;uGAAtB,sBAAsB,2GARtB;QACT;YACE,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;YACrD,KAAK,EAAE,IAAI;SACZ;KACF,0BCxBH,0zCA4BA;2FDFa,sBAAsB;kBAblC,SAAS;+BAEE,gBAAgB,aAGf;wBACT;4BACE,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;4BACrD,KAAK,EAAE,IAAI;yBACZ;qBACF;8BAYQ,OAAO;sBAAf,KAAK;gBAEO,KAAK;sBAAjB,KAAK;gBAIO,MAAM;sBAAlB,KAAK;;;ME/BK,mBAAmB;;gHAAnB,mBAAmB;iHAAnB,mBAAmB,iBAJf,sBAAsB,aAC3B,YAAY,EAAE,aAAa,EAAE,gBAAgB,aAC7C,sBAAsB;iHAErB,mBAAmB,YAHrB,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC;2FAG7C,mBAAmB;kBAL/B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC;oBACxD,OAAO,EAAE,CAAC,sBAAsB,CAAC;iBAClC;;;ACVD;;;;ACAA;;;;;;"}