{"version":3,"file":"usitsdasdesign-dds-ng-textarea.mjs","sources":["../../src/app/dds/textarea/directives/textarea.directive.ts","../../src/app/dds/textarea/textarea/constants.ts","../../src/app/dds/textarea/textarea/textarea.component.ts","../../src/app/dds/textarea/textarea/textarea.component.html","../../src/app/dds/textarea/textarea.module.ts","../../src/app/dds/textarea/usitsdasdesign-dds-ng-textarea.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Optional, Self } from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { FocusHandlerDirective } from '@usitsdasdesign/dds-ng/core/focus-handler';\n\n@Directive({\n  selector: '[ddsTextarea]',\n  hostDirectives: [FocusHandlerDirective],\n  standalone: true,\n})\nexport class TextAreaFieldDirective {\n  @HostBinding(`class.dds-textarea__field`) textareaField = true;\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    @Optional() public parentForm: NgForm,\n    @Optional() public parentFormGroup: FormGroupDirective,\n    public elementRef: ElementRef<HTMLTextAreaElement>\n  ) { }\n}\n","import { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\nimport { Size } from '@usitsdasdesign/dds-ng/shared';\n\nexport const TEXTAREA_ACTIVE_STATE = 'dds-textarea__field_active';\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Size]: {\n    [Size.sm]: 'dds-textarea_sm',\n    [Size.lg]: 'dds-textarea_lg',\n  },\n};\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Optional,\n  Output,\n  Renderer2,\n  Self,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm, ReactiveFormsModule } from '@angular/forms';\nimport {\n  DestroyCtor,\n  DestroyMixin,\n  ErrorStateCtor,\n  ErrorStateMixin,\n  FormAccessorCtor,\n  FormAccessorMixin,\n  I18nCtor,\n  I18nMixin,\n} from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { coerceBooleanProperty, generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { AdditionalClass, ErrorState, LabelPosition, MaxLengthPositions, Size } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { I18nModule, I18nService, ITranslation } from '@usitsdasdesign/dds-ng/shared/i18n';\nimport { fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TextAreaFieldDirective } from '../directives/textarea.directive';\nimport { TEXTAREA_ACTIVE_STATE, themeClassesMap } from './constants';\n\nconst TextareaBase: DestroyCtor & I18nCtor & FormAccessorCtor & ErrorStateCtor = DestroyMixin(\n  I18nMixin(FormAccessorMixin(ErrorStateMixin()))\n);\n\n@Component({\n  selector: 'dds-textarea',\n  templateUrl: './textarea.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule, ThemeModule, I18nModule, ReactiveFormsModule],\n})\nexport class TextareaComponent extends TextareaBase implements OnChanges, OnInit {\n  // Binds the 'disabled' class to the host element when the 'disabled' input is true.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // Binds the 'focus' class to the host element when the 'isFocused' input is true.\n  @HostBinding(`class.${AdditionalClass.focus}`) @Input() isFocused: boolean | undefined;\n\n  // Binds the 'data-is-empty' attribute to the host element based on the 'isEmptyValue' property.\n  @HostBinding(`attr.data-is-empty`) isEmptyValue: boolean; // WalkMe\n\n  // Reference to the internal textarea element.\n  @ViewChild('textareaField') textareaField: ElementRef<HTMLTextAreaElement>;\n\n  // Reference to an external TextAreaFieldDirective if provided.\n  @ContentChild(TextAreaFieldDirective) textAreaFieldExternal: TextAreaFieldDirective;\n\n  // Label for the textarea.\n  @Input() label: string | undefined;\n\n  // Description for the textarea.\n  @Input() description: string | undefined;\n\n  // Error message to display when the textarea is in an error state.\n  @Input() errorMessage: string | undefined;\n\n  // Custom CSS class to apply to the textarea.\n  @Input() customClass: string | undefined;\n\n  // Position of the label relative to the textarea.\n  @Input() labelPosition: LabelPosition | string | undefined = this.ddsConfig.getConfig().labelPosition;\n\n  // Size of the textarea.\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n\n  // Position of the max length indicator.\n  @Input() maxLengthPosition: MaxLengthPositions | string | undefined = MaxLengthPositions.topLeft;\n\n  // Minimum height of the textarea.\n  @Input() minHeight: number | undefined;\n\n  // Maximum length of the textarea input.\n  @Input() maxLength: number | undefined;\n\n  // Error state configuration for the textarea.\n  @Input() errorState: string | ErrorState | undefined = this.ddsConfig.getConfig().errorState;\n\n  // Placeholder text for the textarea.\n  @Input() placeholder: string | undefined = '';\n\n  // ARIA label for accessibility.\n  @Input() ariaLabel: string | undefined;\n\n  // Indicates if the textarea is in an error state.\n  @Input() isError: boolean | undefined;\n\n  // Indicates if the textarea should use inverse styling.\n  @Input() isInverse: boolean | undefined;\n\n  // Indicates if the textarea is required.\n  @Input() isRequired: boolean | undefined = false;\n\n  // Indicates if the textarea is read-only.\n  @Input() readonly: boolean | undefined = false;\n\n  // Sets the value of the textarea and updates related properties.\n  @Input()\n  set value(value: string | undefined) {\n    this._value = value;\n    this.checkIsEmpty();\n    this.genMaxLengthText();\n  }\n\n  // Gets the value of the textarea.\n  get value(): string | undefined {\n    return this._value;\n  }\n\n  // Event emitted when the value of the textarea changes.\n  @Output() valueChanged = new EventEmitter<string>();\n\n  // Event emitted when the textarea loses focus.\n  @Output() onBlur = new EventEmitter<string>();\n\n  // Event emitted when the textarea gains focus.\n  @Output() onFocus = new EventEmitter<string>();\n\n  // Theme configuration for the textarea.\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n\n  // Text indicating the current and maximum length of the textarea input.\n  public maxLengthText: string;\n\n  // Indicates if the label is external.\n  public isExternalLabel: boolean;\n\n  // Array of strings for character limit text.\n  public characterLimitText: string[] = [];\n\n  // Text indicating the maximum limit.\n  public maxLimitText: string;\n\n  // Unique identifier for the textarea.\n  public id: string;\n\n  // Internal value of the textarea.\n  private _value = '';\n\n  // Indicates if the header should be shown.\n  get isHeaderShown(): boolean {\n    return (this.label && this.isExternalLabel) || !!this.description || Boolean(this.maxLength);\n  }\n\n  // Indicates if the error message should be shown.\n  get isErrorMessageShown(): boolean {\n    return !!(this._isError && this.errorMessage);\n  }\n\n  // Indicates if the maximum length error is present.\n  get maxLengthError(): boolean {\n    return this.value && this.value.length === this.maxLength;\n  }\n\n  // Indicates if the max length indicator is positioned to the right.\n  get isMaxLengthRight(): boolean {\n    return this.maxLengthPosition === MaxLengthPositions.topRight || this.maxLengthPosition === MaxLengthPositions.bottomRight;\n  }\n\n  // Indicates if the max length indicator is positioned at the top right.\n  get isMaxLengthTopRight(): boolean {\n    return this.maxLength && this.maxLengthPosition === MaxLengthPositions.topRight;\n  }\n\n  // Indicates if the max length indicator is positioned at the top left.\n  get isMaxLengthTopLeft(): boolean {\n    return this.maxLength && this.maxLengthPosition === MaxLengthPositions.topLeft;\n  }\n\n  // Indicates if the max length indicator is positioned at the bottom.\n  get isMaxLengthBottom(): boolean {\n    return (\n      this.maxLength &&\n      (this.maxLengthPosition === MaxLengthPositions.bottomLeft || this.maxLengthPosition === MaxLengthPositions.bottomRight)\n    );\n  }\n\n  // Indicates if the max length indicator is positioned at the bottom right.\n  get isMaxLengthBottomRight(): boolean {\n    return this.maxLengthPosition === MaxLengthPositions.bottomRight;\n  }\n\n  // Indicates if the footer max length indicator should be shown.\n  get isFooterMaxLengthShown(): boolean {\n    return this.isMaxLengthBottom && (!this.isErrorMessageShown || this.isMaxLengthBottomRight);\n  }\n\n  // Indicates if the textarea field has a scroll bar.\n  get fieldHasScroll(): boolean {\n    if (this.textareaField) {\n      const textareaEl = this.textareaField.nativeElement;\n\n      return textareaEl.clientHeight < textareaEl.scrollHeight;\n    }\n  }\n\n  // Gets the ARIA description for the textarea.\n  get ariaDescription(): string {\n    return this.maxLength ? this.maxLimitText?.replace('{{counter}}', `${this.maxLength}`) : '';\n  }\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    @Optional() public parentForm: NgForm,\n    @Optional() public parentFormGroup: FormGroupDirective,\n    public cdr: ChangeDetectorRef,\n    public i18n: I18nService,\n    private ddsConfig: DdsConfigService,\n    private renderer: Renderer2\n  ) {\n    super();\n\n    if (this.ngControl !== null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  public ngOnInit(): void {\n    this.id = generateId();\n    this.checkIsEmpty();\n    this.checkLabelPosition(this.labelPosition);\n    super.ngOnInit();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.value || changes.maxLength) {\n      this.genMaxLengthText();\n    }\n\n    if (changes.isRequired) {\n      this.isRequired = coerceBooleanProperty(changes.isRequired.currentValue);\n    }\n\n    super.ngOnChanges(changes);\n\n    this.checkLabelPosition(changes.labelPosition);\n\n    if (changes.disabled && this.textAreaFieldExternal) {\n      const textareaFieldExternalEl = this.textAreaFieldExternal.elementRef.nativeElement;\n\n      this.disabled\n        ? this.renderer.setAttribute(textareaFieldExternalEl, 'disabled', 'disabled')\n        : this.renderer.removeAttribute(textareaFieldExternalEl, 'disabled');\n    }\n  }\n\n  public ngDoCheck() {\n    super.ngDoCheck();\n\n    if (this.ngControl && this.textAreaFieldExternal) {\n      if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\n        this.disabled = this.ngControl.disabled;\n        this.cdr.markForCheck();\n      }\n    }\n  }\n\n  public ngAfterContentInit(): void {\n    if (this.textAreaFieldExternal) {\n      this.ngControl = this.textAreaFieldExternal.ngControl;\n      this.parentForm = this.textAreaFieldExternal.parentForm;\n      this.parentFormGroup = this.textAreaFieldExternal.parentFormGroup;\n\n      this.externalTextareaSetAttr();\n    }\n  }\n\n  // Handles the change event of the textarea.\n  public changeHandle(e: Event): void {\n    if ((e.target as HTMLTextAreaElement).value.length > this.maxLength && this.maxLength) {\n      (e.target as HTMLTextAreaElement).value = (e.target as HTMLTextAreaElement).value.slice(0, this.maxLength);\n    } else {\n      this.value = (e.target as HTMLTextAreaElement).value;\n      this.onModelChange(this.value);\n      this.valueChanged.emit(this.value);\n    }\n\n    this.genMaxLengthText();\n    this.checkError();\n  }\n\n  // Writes a new value to the element.\n  public writeValue(value: string): void {\n    this.value = value;\n    this.genMaxLengthText();\n    super.writeValue(value);\n    this.cdr.markForCheck();\n  }\n\n  // Sets the disabled state of the textarea.\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  // Resets the value of the textarea.\n  public reset(): void {\n    this.value = null;\n    this.onModelChange(null);\n    this.valueChanged.emit(null);\n    this.cdr.markForCheck();\n    this.checkError();\n  }\n\n  // Handles the blur event of the textarea.\n  public blur(): void {\n    this.isFocused = false;\n\n    if (this.textAreaFieldExternal) {\n      const externalTextareaEl = this.textAreaFieldExternal.elementRef.nativeElement;\n      this.renderer.removeClass(externalTextareaEl, TEXTAREA_ACTIVE_STATE);\n    }\n\n    this.onBlur.emit(this.value);\n    this.onModelTouched();\n\n    if (this.errorState === ErrorState.focusOut) this.checkError();\n  }\n\n  // Handles the focus event of the textarea.\n  public focus(): void {\n    this.isFocused = true;\n\n    if (this.textAreaFieldExternal) {\n      const externalTextareaEl = this.textAreaFieldExternal.elementRef.nativeElement;\n      externalTextareaEl.focus();\n      this.renderer.addClass(externalTextareaEl, TEXTAREA_ACTIVE_STATE);\n    } else {\n      this.textareaField.nativeElement.focus();\n    }\n\n    this.onFocus.emit(this.value);\n  }\n\n  // Gets the ARIA label for the textarea.\n  public getAriaLabel(): string {\n    return this.ariaLabel || this.label;\n  }\n\n  // Generates the max length text based on the current value and max length.\n  private genMaxLengthText(): void {\n    if (this.maxLength) {\n      this.maxLengthText = `${this.value ? this.value.length : 0}/${Math.round(this.maxLength)}`;\n      this.cdr.markForCheck();\n    }\n  }\n\n  // Sets attributes for the external textarea element.\n  private externalTextareaSetAttr(): void {\n    const externalTextareaEl = this.textAreaFieldExternal.elementRef.nativeElement;\n\n    if (externalTextareaEl.maxLength > 0) {\n      this.maxLength = externalTextareaEl.maxLength;\n      this.genMaxLengthText();\n    } else if (this.maxLength) {\n      this.renderer.setAttribute(externalTextareaEl, 'maxLength', `${this.maxLength}`);\n    }\n\n    this.renderer.setAttribute(externalTextareaEl, 'id', this.id);\n\n    fromEvent(externalTextareaEl, 'keyup')\n      .pipe(takeUntil(this.destroy))\n      .subscribe((e) => (this.value = (e.target as HTMLInputElement).value));\n\n    fromEvent(externalTextareaEl, 'focus')\n      .pipe(takeUntil(this.destroy))\n      .subscribe(() => this.focus());\n\n    fromEvent(externalTextareaEl, 'blur')\n      .pipe(takeUntil(this.destroy))\n      .subscribe((e) => this.blur());\n  }\n\n  // Checks if the textarea value is empty and updates the 'isEmptyValue' property.\n  private checkIsEmpty(): void {\n    this.isEmptyValue = !(this._value && this._value.length);\n  }\n\n  // Checks the label position and updates the 'isExternalLabel' property.\n  private checkLabelPosition(labelPosition: unknown): void {\n    if (labelPosition) {\n      this.isExternalLabel = this.labelPosition === LabelPosition.external;\n    }\n  }\n\n  // Sets the internationalization texts for the component.\n  protected setI18nTexts(translation: ITranslation): void {\n    this.maxLimitText = translation.INPUT.MAX_LIMIT_TEXT;\n    this.characterLimitText = this.i18n.splitByValue('{{counter}}', translation.INPUT.MAX_LIMIT_TEXT);\n    this.cdr.detectChanges();\n  }\n}\n","<div [ngClass]=\"{\n        'dds-textarea_external': isExternalLabel,\n        'dds-textarea_disabled': disabled,\n        'dds-textarea_with-label': label,\n        'dds-textarea_error': _isError,\n        'dds-textarea_counter-align-right': isMaxLengthRight,\n        'dds-textarea_has-scroll': fieldHasScroll,\n        'dds-textarea_inverse': isInverse,\n        'dds-textarea_readonly': readonly\n      }\"\n     [size]=\"size\"\n     [ddsTheme]=\"themeConfig\"\n     class=\"dds-textarea {{customClass}}\">\n\n  @if (isHeaderShown) {\n    <div class=\"dds-textarea__header\">\n      @if (isExternalLabel) {\n        <div class=\"dds-textarea__info\">\n          @if (label) {\n            <label [for]=\"id\"\n                   class=\"dds-textarea__label\">{{ label }}\n              @if (isRequired) {\n                <span class=\"dds-required\"></span>\n              }\n            </label>\n          }\n          @if (isMaxLengthTopRight) {\n            <span class=\"dds-textarea__length-limit\">\n              <ng-container *ngTemplateOutlet=\"maxLengthCounter\"></ng-container>\n            </span>\n          }\n        </div>\n      }\n      @if (description) {\n        <span class=\"dds-textarea__description\">{{ description }}</span>\n      }\n      @if (isMaxLengthTopLeft) {\n        <div class=\"dds-textarea__length-limit\">\n          {{characterLimitText[0]}}\n          <ng-container *ngTemplateOutlet=\"maxLengthCounter\"></ng-container>\n          {{characterLimitText[1]}}\n        </div>\n      }\n    </div>\n  }\n\n  <div class=\"dds-textarea__wrap\">\n    @if (!isExternalLabel) {\n      <div class=\"dds-textarea__info dds-textarea__info_internal\">\n        @if (label) {\n          <label [for]=\"id\"\n                 class=\"dds-textarea__label dds-textarea__label_internal\">{{ label }}\n            @if (isRequired) {\n              <span class=\"dds-required\"></span>\n            }\n          </label>\n        }\n        @if (isMaxLengthTopRight) {\n          <div class=\"dds-textarea__length-limit\">\n            <ng-container *ngTemplateOutlet=\"maxLengthCounter\"></ng-container>\n          </div>\n        }\n      </div>\n    }\n    @if (textAreaFieldExternal) {\n      <ng-content></ng-content>\n    } @else {\n      <textarea [ngStyle]=\"{'min-height': minHeight + 'px'}\"\n                [ngClass]=\"{\n                  'dds-textarea__field_active': isFocused\n                }\"\n                [placeholder]=\"placeholder\"\n                [value]=\"value || ''\"\n                [disabled]=\"disabled\"\n                [attr.maxLength]=\"maxLength\"\n                [attr.aria-disabled]=\"disabled\"\n                [attr.aria-invalid]=\"_isError\"\n                [attr.aria-label]=\"getAriaLabel()\"\n                [attr.aria-description]=\"ariaDescription\"\n                [attr.aria-required]=\"isRequired || _isFormControlRequired\"\n                [required]=\"isRequired\"\n                [id]=\"id\"\n                [readonly]=\"readonly\"\n                ddsFocus\n                class=\"dds-textarea__field\"\n                (input)=\"changeHandle($event)\"\n                (focus)=\"focus()\"\n                (blur)=\"blur()\"\n                #textareaField>{{value}}</textarea>\n    }\n\n  </div>\n\n  @if (isErrorMessageShown || isFooterMaxLengthShown) {\n    <div class=\"dds-textarea__footer\">\n      @if (isErrorMessageShown) {\n        <span class=\"dds-textarea__error-message\">{{errorMessage}}</span>\n      }\n      @if (isFooterMaxLengthShown) {\n        <div class=\"dds-textarea__length-limit\">\n          <ng-container *ngTemplateOutlet=\"maxLengthCounter\"></ng-container>\n        </div>\n      }\n    </div>\n  }\n</div>\n\n<ng-template #maxLengthCounter>\n  <span [ngClass]=\"{\n    'dds-textarea__symbols-count_error': maxLengthError,\n    'dds-textarea__symbols-count_right': isMaxLengthRight\n  }\"\n        class=\"dds-textarea__symbols-count\">{{ maxLengthText }}</span>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { TextAreaFieldDirective } from './directives/textarea.directive';\nimport { TextareaComponent } from './textarea/textarea.component';\n\n@NgModule({\n  declarations: [],\n  imports: [TextareaComponent, TextAreaFieldDirective],\n  exports: [TextareaComponent, TextAreaFieldDirective],\n})\nexport class TextareaModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i5"],"mappings":"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"}