{"version":3,"file":"acorex-components-number-box.mjs","sources":["../../../../packages/components/number-box/src/lib/number-box.component.ts","../../../../packages/components/number-box/src/lib/number-box.component.html","../../../../packages/components/number-box/src/lib/number-box.module.ts","../../../../packages/components/number-box/src/acorex-components-number-box.ts"],"sourcesContent":["import { AXInputMaskDirective, type AXInputMaskEvent } from '@acorex/cdk/input-mask';\nimport {\n  Component,\n  ElementRef,\n  HostBinding,\n  ViewEncapsulation,\n  afterNextRender,\n  computed,\n  effect,\n  forwardRef,\n  inject,\n  input,\n  model,\n  signal,\n  viewChild,\n} from '@angular/core';\n\nimport {\n  AXClearableComponent,\n  AXComponent,\n  AXFocusableComponent,\n  AXValuableComponent,\n  MXInputBaseValueComponent,\n  MXLookComponent,\n} from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\n\n/**\n * The NumberBox is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-number-box',\n  templateUrl: './number-box.component.html',\n  styleUrls: ['./number-box.component.css'],\n  inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id', 'look'],\n  outputs: [\n    'valueChange',\n    'stateChange',\n    'onValueChanged',\n    'onBlur',\n    'onFocus',\n    'readonlyChange',\n    'disabledChange',\n    'onKeyDown',\n    'onKeyUp',\n    'onKeyPress',\n  ],\n\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { provide: AXComponent, useExisting: AXNumberBoxComponent },\n    { provide: AXFocusableComponent, useExisting: AXNumberBoxComponent },\n    { provide: AXClearableComponent, useExisting: AXNumberBoxComponent },\n    { provide: AXValuableComponent, useExisting: AXNumberBoxComponent },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AXNumberBoxComponent),\n      multi: true,\n    },\n  ],\n  imports: [FormsModule, AXInputMaskDirective, AXButtonModule, AXDecoratorModule, AXFormModule],\n})\nexport class AXNumberBoxComponent extends classes(MXInputBaseValueComponent<number>, MXLookComponent) {\n  minValue = input<number>(null);\n  maxValue = input<number>(null);\n  showSpinButtons = input(true);\n  thousandsSeparator = model<string>(null);\n  decimals = input(0);\n  changeOnScroll = input(false);\n  step = input(1);\n  protected mode = signal<'digits' | 'thousandsSeparator' | 'decimal'>('digits');\n  protected decimalPlaces = computed(() => Math.max(this.decimals(), this.getFractionDigits(this.step())));\n  private input = viewChild<ElementRef<HTMLInputElement>>('input');\n  protected stringValue = signal('');\n  private translationService = inject(AXTranslationService);\n\n  protected validateFn = async (val: number) => {\n    const min = this.minValue();\n    if (min != null && val != null && val < min) {\n      const message = await this.translationService.translateAsync('@acorex:validation.messages.min', {\n        params: { value: min },\n      });\n\n      return {\n        result: false,\n        message,\n      };\n    }\n\n    const max = this.maxValue();\n    if (max != null && val != null && val > max) {\n      const message = await this.translationService.translateAsync('@acorex:validation.messages.max', {\n        params: { value: max },\n      });\n\n      return {\n        result: false,\n        message,\n      };\n    }\n\n    return { result: true };\n  };\n\n  protected override internalValueChanged(value: number | undefined | null): void {\n    if (value === undefined || value === null) {\n      this.stringValue.set('');\n    } else {\n      this.stringValue.set(this.formatDisplayValue(value));\n    }\n\n    setTimeout(() => {\n      const inputElement = this.input()?.nativeElement;\n      if (inputElement) {\n        inputElement.dispatchEvent(new Event('input', { bubbles: true }));\n      }\n    }, 0);\n  }\n\n  #init = afterNextRender(() => {\n    this.onFocus.subscribe(() => {\n      this.input().nativeElement.select();\n    });\n  });\n\n  #eff = effect(() => {\n    if (this.thousandsSeparator()) {\n      this.mode.set('thousandsSeparator');\n    } else if (this.decimalPlaces() > 0) {\n      this.mode.set('decimal');\n    } else {\n      this.mode.set('digits');\n    }\n  });\n\n  private plusValue() {\n    if (this.disabled || this.readonly) {\n      return;\n    }\n\n    const currentValue = this.getNumericValue();\n    const nextValue = this.clampToRange(this.getSteppedValue(currentValue, 1));\n    this.commitValue(nextValue, true);\n  }\n\n  private minusValue() {\n    if (this.disabled || this.readonly) {\n      return;\n    }\n\n    const currentValue = this.getNumericValue();\n    const nextValue = this.clampToRange(this.getSteppedValue(currentValue, -1));\n    this.commitValue(nextValue, true);\n  }\n\n  private getNumericValue(): number {\n    if (this.mode() === 'thousandsSeparator') {\n      return +(this.stringValue().split(this.thousandsSeparator()).join('') || '0');\n    }\n\n    return +(this.stringValue() || '0');\n  }\n\n  private getSteppedValue(currentValue: number, direction: 1 | -1): number {\n    const step = this.step();\n    const precision = Math.max(this.decimalPlaces(), this.getFractionDigits(currentValue));\n    const scale = 10 ** precision;\n    const currentUnits = Math.round(currentValue * scale);\n    const stepUnits = Math.round(step * scale) * direction;\n\n    return (currentUnits + stepUnits) / scale;\n  }\n\n  private formatDisplayValue(value: number): string {\n    if (this.mode() === 'thousandsSeparator') {\n      const formatted = value.toLocaleString(undefined, {\n        minimumFractionDigits: 0,\n        maximumFractionDigits: this.decimalPlaces(),\n      });\n      return formatted.split(',').join(this.thousandsSeparator());\n    }\n\n    if (this.decimalPlaces() > 0) {\n      return value.toFixed(this.decimalPlaces());\n    }\n\n    return value.toString();\n  }\n\n  private clampToRange(value: number): number {\n    const min = this.minValue();\n    const max = this.maxValue();\n\n    if (min != null && value < min) {\n      return min;\n    }\n\n    if (max != null && value > max) {\n      return max;\n    }\n\n    return value;\n  }\n\n  private getFractionDigits(value: number): number {\n    if (!Number.isFinite(value)) {\n      return 0;\n    }\n\n    const normalizedValue = value.toString().toLowerCase();\n    if (!normalizedValue.includes('e-')) {\n      return normalizedValue.split('.')[1]?.length ?? 0;\n    }\n\n    const [, exponent] = normalizedValue.split('e-');\n    return Number(exponent);\n  }\n\n  protected handleOnKeydownEvent(e: KeyboardEvent) {\n    if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown') return;\n    if (this.disabled || this.readonly) return;\n    if (e.key === 'ArrowUp') {\n      this.plusValue();\n    } else if (e.key === 'ArrowDown') {\n      this.minusValue();\n    }\n  }\n\n  protected handleUpClick() {\n    if (this.disabled || this.readonly) return;\n    this.plusValue();\n  }\n  protected handleDownClick() {\n    if (this.disabled || this.readonly) return;\n    this.minusValue();\n  }\n\n  protected handleOnMaskChanged(e: AXInputMaskEvent) {\n    if (!e.unmasked || e.unmasked === '-' || isNaN(+e.unmasked)) {\n      this.commitValue(null, true);\n      return;\n    }\n\n    this.commitValue(this.clampToRange(+e.unmasked), true);\n  }\n\n  protected onWheel(event: WheelEvent) {\n    if (this.changeOnScroll()) {\n      event.preventDefault();\n      if (!this.disabled && !this.readonly) {\n        if (event.deltaY > 0) {\n          this.minusValue();\n        } else {\n          this.plusValue();\n        }\n      }\n    }\n  }\n\n  override reset(): void {\n    this.stringValue.set('0');\n    this.commitValue(0);\n    super.reset(true);\n  }\n\n  @HostBinding('attr.name')\n  private get __hostName(): string {\n    return this.name;\n  }\n}\n","<div\n  class=\"ax-editor-container  ax-default  {{ look }}\"\n  [class.ax-state-disabled]=\"disabled\"\n  [class.ax-state-readonly]=\"readonly\"\n>\n  <ng-content select=\"ax-prefix\"> </ng-content>\n  <input\n    #input\n    [name]=\"name\"\n    axInputMask\n    (onMaskChanged)=\"handleOnMaskChanged($event)\"\n    [maskMode]=\"mode()\"\n    inputmode=\"numeric\"\n    class=\"ax-input\"\n    [separator]=\"thousandsSeparator()\"\n    [decimal]=\"decimalPlaces()\"\n    [minValue]=\"minValue()\"\n    [maxValue]=\"maxValue()\"\n    [id]=\"id\"\n    [attr.placeholder]=\"placeholder\"\n    [attr.autocomplete]=\"'off'\"\n    [class.ax-state-disabled]=\"disabled\"\n    [class.ax-state-readonly]=\"readonly\"\n    [disabled]=\"disabled\"\n    [readonly]=\"readonly\"\n    [tabindex]=\"tabIndex\"\n    [(ngModel)]=\"stringValue\"\n    (keydown)=\"handleOnKeydownEvent($event)\"\n    (keyup)=\"emitOnKeyupEvent($event)\"\n    (keypress)=\"emitOnKeypressEvent($event)\"\n    (focus)=\"emitOnFocusEvent($event)\"\n    (blur)=\"emitOnBlurEvent($event)\"\n    (wheel)=\"onWheel($event)\"\n  />\n  @if (input.value && !disabled && !readonly) {\n    <ng-content select=\"ax-clear-button\"></ng-content>\n  }\n  @if (showSpinButtons()) {\n    <div class=\"ax-general-button-control\">\n      <button\n        type=\"button\"\n        class=\"ax-general-button-icon\"\n        [class.ax-state-disabled]=\"disabled\"\n        (click)=\"handleUpClick()\"\n        tabindex=\"-1\"\n        [disabled]=\"disabled\"\n      >\n        <span class=\"ax-icon ax-icon-chevron-up ax-arrow-button\"></span>\n      </button>\n      <button\n        type=\"button\"\n        class=\"ax-general-button-icon\"\n        [class.ax-state-disabled]=\"disabled\"\n        (click)=\"handleDownClick()\"\n        tabindex=\"-1\"\n        [disabled]=\"disabled\"\n      >\n        <span class=\"ax-icon ax-icon-chevron-down ax-arrow-button\"></span>\n      </button>\n    </div>\n  }\n\n  <ng-content select=\"ax-suffix\"> </ng-content>\n</div>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n@if (minValue() != null || maxValue() != null) {\n  <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateFn }\"></ax-validation-rule>\n}\n<div class=\"ax-error-container\"></div>\n","import { AXInputMaskDirective } from '@acorex/cdk/input-mask';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXNumberBoxComponent } from './number-box.component';\n\nconst COMPONENT = [AXNumberBoxComponent];\nconst MODULES = [FormsModule, AXInputMaskDirective, AXButtonModule, AXDecoratorModule];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [],\n})\nexport class AXNumberBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}