All files / lib/text-range-input-field text-range-input-field.component.ts

98.94% Statements 94/95
90.9% Branches 10/11
100% Functions 3/3
98.94% Lines 94/95

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 961x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 39x 36x   36x 3x 3x 39x 22x 22x 22x 22x 1x 1x  
/*******************************************************************************
 * Copyright bei
 * Entwicklungs- und Pflegeverbund für das gemeinsame Fachverfahren gefa
 *
 *******************************************************************************/
import { Component, Input, ViewChild } from '@angular/core';
 
import { InvalidControlValue, WidgetKeySet } from '../utils/util.types';
import { createWidgetKeySet } from '../utils/utilities';
 
import { BaseRangeInputFieldComponent } from '../base-range-input-field/base-range-input-field.component';
import { TextInputComponent } from '../text-input-field/text-input-field.component';
import { TextInputFormatter } from '../text-input-field/text-input-field.formatters';
 
/**
 * `gc-text-range-input-field` can be used to enter a range between two text values.
 */
@Component({
  selector: 'gc-text-range-input-field',
  templateUrl: './text-range-input-field.component.html',
  styleUrls: ['./text-range-input-field.component.css'],
  standalone: false,
})
export class TextRangeInputFieldComponent extends BaseRangeInputFieldComponent<
  string | InvalidControlValue
> {
  /**
   * Start slot value
   */
  @Input()
  public startSlotValue: string | InvalidControlValue = '';
 
  /**
   * End slot value
   */
  @Input()
  public endSlotValue: string | InvalidControlValue = '';
 
  /**
   * Formatter to display the value in a custom format and convert user input to the internal representation (used for both fields)
   */
  @Input()
  public formatter?: TextInputFormatter;
 
  /**
   * Enables setting of the value on the start slot only when the Promise resolves with value "true".
   */
  @Input()
  public permitValueChangeStart?: (
    v: string | InvalidControlValue,
  ) => Promise<boolean> | boolean;
 
  /**
   * Enables setting of the value on the end slot only when the Promise resolves with value "true".
   */
  @Input()
  public permitValueChangeEnd?: (
    v: string | InvalidControlValue,
  ) => Promise<boolean> | boolean;
 
  /**
   * Sets the maximum number of characters permitted for both input fields
   */
  @Input()
  public maxLength?: number;
 
  /**
   * Hint text for maximum characters allowed, shows only if `maxLength` is applied
   */
  @Input()
  public maxLengthHint?: string;
 
  /** @ignore */
  @ViewChild('startSlotEl')
  protected startSlotElement!: TextInputComponent;
 
  /** @ignore */
  @ViewChild('endSlotEl')
  protected endSlotElement!: TextInputComponent;
 
  /** @ignore */
  protected get maxLengthText(): string {
    if (this.maxLength && this.maxLengthHint) {
      return this.hint.length > 0
        ? ` \u2013 ${this.maxLengthHint}`
        : this.maxLengthHint;
    }
    return '';
  }
 
  /** @ignore */
  protected readonly _widgetKeys: WidgetKeySet = createWidgetKeySet(
    'gc-text-range-input',
  );
}