{"version":3,"file":"pv-frontend-pv-shared-components-increment-decrement-button.mjs","sources":["../../../projects/pv-shared-components/increment-decrement-button/increment-decrement-button.component.ts","../../../projects/pv-shared-components/increment-decrement-button/increment-decrement-button.component.html","../../../projects/pv-shared-components/increment-decrement-button/increment-decrement-button.module.ts","../../../projects/pv-shared-components/increment-decrement-button/pv-frontend-pv-shared-components-increment-decrement-button.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { OverrideStyleConfig } from '@pv-frontend/pv-shared-components/common/types';\n\nexport interface IncrementDecrementStyleOverride {\n  container?: OverrideStyleConfig;\n  incrementButton?: OverrideStyleConfig;\n  decrementButton?: OverrideStyleConfig;\n  valueView?: OverrideStyleConfig;\n}\n\n@Component({\n  selector: 'pv-increment-decrement-button',\n  templateUrl: './increment-decrement-button.component.html',\n  styleUrls: ['./increment-decrement-button.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: IncrementDecrementButtonComponent,\n      multi: true,\n    },\n  ],\n})\nexport class IncrementDecrementButtonComponent implements ControlValueAccessor {\n  public onChange?: (value: number) => void;\n  public onTouched?: () => void;\n  public _input = new FormControl(0);\n  public _isDisabled = false;\n\n  @Input()\n  public isRounded: boolean = true;\n\n  @Input()\n  public minAllowedValue: number = 0;\n\n  @Input()\n  public maxAllowedValue: number = 100;\n\n  @Input()\n  public style?: IncrementDecrementStyleOverride = {};\n\n  @Input()\n  public styleClass?: string = '';\n\n  public clickHandler(event: MouseEvent, isIncrement: boolean = false): void {\n    if (!this._isDisabled) {\n      isIncrement\n        ? this.updateInputValue(this.getInputValue() + 1)\n        : this.updateInputValue(this.getInputValue() - 1);\n    }\n  }\n\n  public writeValue(value?: number | null): void {\n    this._input.setValue(value ?? 0);\n  }\n\n  public registerOnChange(fn: (value: number) => void): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this._isDisabled = isDisabled;\n  }\n\n  private updateInputValue(newValue: number): void {\n    // in case value is beyond allowed limits, reject updating the value\n    if (newValue < this.minAllowedValue || newValue > this.maxAllowedValue) {\n      return;\n    }\n\n    this._input.setValue(newValue);\n\n    // update the form about new value\n    this.onChange?.(newValue);\n  }\n\n  private getInputValue(): number {\n    return this._input.value ?? 0;\n  }\n}\n","<div\n  class=\"pv-increment-decrement-button-container flex flex-row pv-border-solid surface-action-icon-low-contrast w-max\"\n  [class.border-round-3xl]=\"this.isRounded\"\n  [style]=\"this.style?.container\"\n  [ngClass]=\"this.styleClass\">\n  <button\n    class=\"pv-inc-dec-button cursor-pointer pv-decrement-button p-2\"\n    (click)=\"this.clickHandler($event)\"\n    [disabled]=\"\n      (this._input.value ?? 0) <= this.minAllowedValue || this._isDisabled\n    \"\n    [style]=\"this.style?.incrementButton\">\n    <pv-svg-icon name=\"minus\" styleClass=\"fill-primary-color\"></pv-svg-icon>\n  </button>\n\n  <span\n    class=\"pv-count-value surface-text-normal-low-contrast font-bold flex align-items-center justify-content-center mx-1\"\n    [style]=\"this.style?.valueView\">\n    {{ this._input.value }}\n  </span>\n\n  <button\n    class=\"pv-inc-dec-button cursor-pointer pv-increment-button p-2\"\n    (click)=\"this.clickHandler($event, true)\"\n    [disabled]=\"\n      (this._input.value ?? 0) >= this.maxAllowedValue || this._isDisabled\n    \"\n    [style]=\"this.style?.decrementButton\">\n    <pv-svg-icon name=\"plus\" styleClass=\"fill-primary-color\"></pv-svg-icon>\n  </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PvButtonModule } from '@pv-frontend/pv-shared-components/button';\nimport { SvgIconModule } from '@pv-frontend/pv-shared-components/svg-icon';\n\nimport { IncrementDecrementButtonComponent } from './increment-decrement-button.component';\n\n@NgModule({\n  imports: [CommonModule, ReactiveFormsModule, SvgIconModule, PvButtonModule],\n  declarations: [IncrementDecrementButtonComponent],\n  exports: [IncrementDecrementButtonComponent],\n})\nexport class PvIncrementDecrementButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}