{"version":3,"file":"daffodil-design-quantity-field.mjs","sources":["../../../libs/design/quantity-field/src/quantity-input/quantity-input.component.ts","../../../libs/design/quantity-field/src/quantity-input/quantity-input.component.html","../../../libs/design/quantity-field/src/quantity-select/quantity-select.component.ts","../../../libs/design/quantity-field/src/quantity-select/quantity-select.component.html","../../../libs/design/quantity-field/src/quantity-field.component.ts","../../../libs/design/quantity-field/src/quantity-field.component.html","../../../libs/design/quantity-field/src/quantity-field.module.ts","../../../libs/design/quantity-field/src/daffodil-design-quantity-field.ts"],"sourcesContent":["import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n  Component,\n  Input,\n  ViewChild,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  OnInit,\n  OnDestroy,\n} from '@angular/core';\nimport {\n  UntypedFormControl,\n  NgControl,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { DaffInputComponent } from '@daffodil/design/input';\n\n@Component({\n  selector: 'daff-quantity-input',\n  templateUrl: './quantity-input.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    DaffInputComponent,\n    ReactiveFormsModule,\n  ],\n})\nexport class DaffQuantityInputComponent implements OnInit, OnDestroy {\n  @ViewChild(DaffInputComponent) input: DaffInputComponent;\n\n  /**\n   * @docs\n   * The minimum number for the quantity input field\n   */\n  @Input() min = 1;\n\n  /**\n   * @docs\n   * The maximum number for the quantity input field\n   */\n  @Input() max = 10;\n\n  /**\n   * A new control for the nested native input.\n   * We don't bind the native input directly to the inherited form control\n   * to avoid triggering updates on the input event.\n   * Instead, we listen for the change event and manually patch form control values.\n   */\n  _inputControl = new UntypedFormControl();\n\n  get focused(): boolean {\n    return this.input?.focused;\n  }\n\n  _destroyed = new Subject();\n\n  get value() {\n    return this.ngControl.control.value;\n  }\n  set value(value) {\n    const val = Math.min(Math.round(coerceNumberProperty(value)), this.max);\n    this.ngControl.control.patchValue(val);\n    this._inputControl.patchValue(val);\n    this.changeDetectorRef.markForCheck();\n  }\n\n  get disabled() {\n    return this.ngControl.control.disabled;\n  }\n\n  constructor(\n    public ngControl: NgControl,\n    private changeDetectorRef: ChangeDetectorRef,\n  ) {}\n\n  /**\n   * @docs-private\n   */\n  ngOnInit() {\n    this._inputControl.patchValue(this.ngControl.control.value);\n    this.setInputDisabled();\n    this.ngControl.statusChanges.pipe(\n      takeUntil(this._destroyed),\n    ).subscribe(() => {\n      this.setInputDisabled();\n    });\n  }\n\n  ngOnDestroy() {\n    this._destroyed.next(true);\n  }\n\n  focus() {\n    this.input.focus();\n  }\n\n  onFocus() {\n    this.ngControl.control.markAsTouched();\n  }\n\n  onBlur() {\n    if (this.value === null || this.value === undefined) {\n      this.value = 1;\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * Callback function fired when the value changes.\n   * Used to pass the value back up to the ngControl.\n   */\n  onValueChange(e: any) {\n    this.value = e.target.value;\n  }\n\n  private setInputDisabled() {\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n    this.ngControl.disabled\n      ? this._inputControl.disable()\n      : this._inputControl.enable();\n  }\n}\n","<input daff-input\n  type=\"number\"\n  [attr.max]=\"max\"\n  [attr.min]=\"min\"\n  [attr.step]=\"1\"\n  (focus)=\"onFocus()\"\n  (blur)=\"onBlur()\"\n  (change)=\"onValueChange($event)\"\n  [formControl]=\"_inputControl\"\n>\n","import {\n  Component,\n  Input,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  ViewChild,\n} from '@angular/core';\nimport {\n  NgControl,\n  ReactiveFormsModule,\n} from '@angular/forms';\n\nimport { DaffNativeSelectComponent } from '@daffodil/design/native-select';\n\n/**\n * Create an array of numbers from min to max, not including max.\n */\nexport const makeValueArray = (min: number, max: number, increment: number) =>\n  Array(max - min).fill(0).map((x, i) => (i * increment) + min);\n\n@Component({\n  selector: 'daff-quantity-select',\n  templateUrl: './quantity-select.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    DaffNativeSelectComponent,\n    ReactiveFormsModule,\n  ],\n})\nexport class DaffQuantitySelectComponent {\n\n  @ViewChild(DaffNativeSelectComponent) select: DaffNativeSelectComponent;\n\n  /**\n   * @docs\n   * The minimum number selectable.\n   */\n  @Input() min = 1;\n\n  /**\n   * @docs\n   * The maximum number selectable;\n   */\n  @Input() max = 10;\n\n  /**\n   * @docs\n   * Property used to determine whether or not the DaffQuantitySelectComponent is\n   * used in a situation whether the `max` isn't a true max.\n   */\n  @Input() extendable = true;\n\n  /**\n   * The amount to increment between \"min\" and \"max\".\n   */\n  private increment = 1;\n\n  _value = 1;\n\n  get value() {\n    return this._value;\n  }\n  set value(value) {\n    this._value = value;\n    this.ngControl.control.patchValue(this._value);\n    this.changeDetectorRef.markForCheck();\n  }\n\n  constructor(public ngControl: NgControl, private changeDetectorRef: ChangeDetectorRef) {}\n\n  /**\n   * Callback function fired when the value changes.\n   * Used to pass the value back up to the ngControl.\n   */\n  onValueChange(e) {\n    this.value = e.target.value;\n  }\n\n  get focused(): boolean {\n    return this.select.focused;\n  }\n\n  focus() {\n    this.select.focus();\n  }\n\n  onFocus() {\n    this.ngControl.control.markAsTouched();\n  }\n\n  /**\n   * A helper function for easily making options for the `select`.\n   */\n  get valueArray() {\n    return makeValueArray(this.min, this.max, this.increment);\n  }\n}\n","<select daff-native-select\n  [formControl]=\"ngControl.control\"\n  (focus)=\"onFocus()\"\n  >\n  @for (item of valueArray; track item) {\n    <option [value]=\"item\">{{ item }}</option>\n  }\n  @if (extendable) {\n    <option [value]=\"max\">{{ max }}+</option>\n  } @else {\n    <option [value]=\"max\">{{ max }}</option>\n  }\n</select>\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n  Component,\n  Input,\n  ChangeDetectionStrategy,\n  Optional,\n  Self,\n  ViewChild,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  NgControl,\n} from '@angular/forms';\n\nimport { DaffFormFieldControl } from '@daffodil/design/form-field';\n\nimport { DaffQuantityInputComponent } from './quantity-input/quantity-input.component';\nimport { DaffQuantitySelectComponent } from './quantity-select/quantity-select.component';\n\n/**\n * @deprecated in favor of DaffSfQuantityFieldComponent. Deprecated in version 0.92.0. Will be removed in version 0.95.0.\n */\n@Component({\n  selector: 'daff-quantity-field',\n  templateUrl: './quantity-field.component.html',\n  providers: [\n    {\n      provide: DaffFormFieldControl,\n\n      useExisting: DaffQuantityFieldComponent,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    DaffQuantityInputComponent,\n    DaffQuantitySelectComponent,\n  ],\n})\nexport class DaffQuantityFieldComponent extends DaffFormFieldControl<number> implements ControlValueAccessor, DaffFormFieldControl<number> {\n\n  @ViewChild(DaffQuantityInputComponent) input: DaffQuantityInputComponent;\n  @ViewChild(DaffQuantitySelectComponent) select: DaffQuantitySelectComponent;\n\n  /**\n   * @docs\n   * The minimum valid value of the quantity field.\n   * Must be greater than or equal to 1.\n   */\n  @Input() min = 1;\n\n  /**\n   * @docs\n   * The maximum valid value of the quantity field.\n   * Must be greater than min.\n   */\n  @Input() max = 500;\n\n  /**\n   * @docs\n   * The range of numbers acceptable in a quantity dropdown\n   * before it becomes an input element.\n   */\n  @Input() selectMax = 10;\n\n  @Input() id = '';\n\n  get focused(): boolean {\n    return !!(this.input?.focused || this.select?.focused);\n  }\n\n  /**\n   * @docs-private\n   *\n   * TODO: Update functionality to match other control during refactor.\n   */\n  disabled = false;\n\n  /**\n   * @docs-private\n   * TODO: Update functionality to match other control during refactor.\n   */\n  required = false;\n\n  private _quantity = 1;\n  private _inputHasBeenShown = false;\n\n  get quantity() {\n    return this._quantity;\n  }\n  set quantity(value: number) {\n    this._quantity = coerceNumberProperty(value, 1);\n  }\n\n  /**\n   * Returns the lesser of max and selectMax.\n   */\n  get _maxFloor(): number {\n    return Math.min(this.max, this.selectMax);\n  }\n\n  get controlType() {\n    // TODO: use enum\n    return this.showInputField\n      ? 'native-input'\n      : 'native-select';\n  }\n\n  get showInputField(): boolean {\n    const ret = this._inputHasBeenShown || (this.ngControl\n      ? this.ngControl.value >= this.selectMax\n      : this.quantity >= this.selectMax);\n\n    if (ret) {\n      this._inputHasBeenShown = true;\n    }\n\n    return ret;\n  }\n\n  get showSelectField(): boolean {\n    return !this.showInputField;\n  }\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    private cd: ChangeDetectorRef,\n  ) {\n    super(ngControl);\n\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  private onChange(quantity: number): void {};\n  private onTouched(quantity: number): void {};\n\n  writeValue(quantity: number): void {\n    this.quantity = quantity;\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: (quantity: number) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  focus() {\n    if(this.select) {\n      this.select.focus();\n    }\n    if(this.input) {\n      this.input.focus();\n    }\n  }\n\n  get value() {\n    if(this.select) {\n      return this.select.value;\n    }\n    if(this.input) {\n      return this.input.value;\n    }\n  }\n}\n","@if (showSelectField) {\n  <daff-quantity-select\n    [min]=\"min\"\n    [max]=\"_maxFloor\"\n    [extendable]=\"max > selectMax\"\n    [id]=\"id\">\n  </daff-quantity-select>\n}\n@if (showInputField) {\n  <daff-quantity-input\n    [min]=\"min\"\n    [max]=\"max\"\n    [id]=\"id\">\n  </daff-quantity-input>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffQuantityFieldComponent } from './quantity-field.component';\n\n/**\n * @deprecated in favor of DaffSfQuantityFieldComponent. Deprecated in version 0.92.0. Will be removed in version 0.95.0.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    DaffQuantityFieldComponent,\n  ],\n  exports: [\n    DaffQuantityFieldComponent,\n  ],\n})\nexport class DaffQuantityFieldModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}