{"version":3,"file":"obliczeniowo-elementary-input.mjs","sources":["../../../../projects/components/input/directives/text-area.directive.ts","../../../../projects/components/input/services/input-wrappers-default-settings.service.ts","../../../../projects/components/input/components/text-areawrapper/textarea-wrapper.component.ts","../../../../projects/components/input/components/text-areawrapper/textarea-wrapper.component.html","../../../../projects/components/input/directives/input.directive.ts","../../../../projects/components/input/components/input-wrapper/input-wrapper.component.ts","../../../../projects/components/input/components/input-wrapper/input-wrapper.component.html","../../../../projects/components/input/input.module.ts","../../../../projects/components/input/obliczeniowo-elementary-input.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n    selector: 'textarea[oblTextArea]',\n    exportAs: 'oblTextArea',\n    standalone: false\n})\nexport class TextAreaDirective {\n  @Input()\n  @HostBinding('class.obl-text-area-outline') outlined!: boolean;\n\n  @Input()\n  @HostBinding('class.obl-text-area-no-resize') noResize!: boolean;\n\n  constructor(renderer: Renderer2, elementRef: ElementRef<HTMLInputElement>) {\n    renderer.addClass(elementRef.nativeElement, 'obl-text-area');\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InputWrappersDefaultSettingsService {\n  labelAnimation = {\n    inputWrapper: false,\n    editInput: false,\n    select: false,\n    filters: false,\n    sort: false\n  }\n}\n","import { Component, ElementRef, Input, input } from '@angular/core';\n\nimport { InputWrappersDefaultSettingsService } from '../../services/input-wrappers-default-settings.service';\n\n@Component({\n    selector: 'obl-textarea-wrapper',\n    templateUrl: './textarea-wrapper.component.html',\n    styleUrls: ['./textarea-wrapper.component.scss'],\n    standalone: false\n})\nexport class TextAreaWrapperComponent {\n  /**\n   * Label text to display\n   */\n  label = input<string>();\n  /**\n   * Style of displayed input\n   */\n  display = input<'outlined' | 'underlined' | 'none'>('outlined');\n  /**\n   * reference to textarea element\n   */\n  textArea: HTMLTextAreaElement | undefined | null;\n  /**\n   * Enable type text animation for label\n   */\n  @Input() labelAnimation = false;\n\n  constructor(\n    public elementRef: ElementRef<HTMLElement>,\n    private readonly settings: InputWrappersDefaultSettingsService\n  ) {\n    this.labelAnimation = this.settings.labelAnimation.inputWrapper;\n  }\n\n  ngAfterContentInit(): void {\n    this.textArea = this.elementRef.nativeElement.querySelector('textarea');\n  }\n}\n","<fieldset\n  [ngClass]=\"{\n    label: label(),\n    outlined: display() === 'outlined',\n    underlined: display() === 'underlined',\n    none: display() === 'none',\n  }\"\n>\n  @if (label()) {\n    <legend>\n      @if (labelAnimation) {\n        <obl-type-text [text]=\"label() || ''\" [interval]=\"40\"></obl-type-text>\n      } @else {\n        {{ label() }}\n      }\n    </legend>\n  }\n  <ng-content></ng-content>\n</fieldset>\n","import { Directive, Renderer2, ElementRef, Input, HostBinding } from '@angular/core';\n\n@Directive({\n    selector: 'input[oblInput]',\n    exportAs: 'oblInput',\n    standalone: false\n})\nexport class InputDirective {\n  @Input()\n  @HostBinding('class.obl-input-outline') outlined!: boolean;\n\n  constructor(renderer: Renderer2, elementRef: ElementRef<HTMLInputElement>) {\n    renderer.addClass(elementRef.nativeElement, 'obl-input');\n    renderer.setStyle(elementRef.nativeElement, 'display', 'flex');\n    renderer.setStyle(elementRef.nativeElement, 'width', '100%');\n  }\n}\n","import { SsrService } from '@obliczeniowo/elementary/ssr';\nimport {\n  Component,\n  Input,\n  ElementRef,\n  AfterContentInit,\n  EventEmitter,\n  Output,\n  HostBinding,\n  input,\n} from '@angular/core';\nimport { InputWrappersDefaultSettingsService } from '../../services/input-wrappers-default-settings.service';\nimport { keysValues } from '@obliczeniowo/elementary/objects';\n\n@Component({\n    selector: 'obl-input-wrapper',\n    templateUrl: './input-wrapper.component.html',\n    styleUrls: ['./input-wrapper.component.scss'],\n    standalone: false\n})\nexport class InputWrapperComponent implements AfterContentInit {\n  protected files: File[] = [];\n  /**\n   * Label text to display\n   */\n  label = input<string>();\n  /**\n   * Style of displayed input\n   */\n  display = input<'outlined' | 'underlined' | 'none'>('outlined');\n  /**\n   * If you want to display button for clear input (only for input:not([type=file]))\n   */\n  cancellable = input<boolean>(false);\n  /**\n   * step for numeric only\n   */\n  step = input<number>();\n  /**\n   * errors keys from form control\n   */\n  @Input() errors: { [name: string]: boolean | { [param: string]: number | string } } | null | undefined = null;\n  /**\n   * translations\n   */\n  translations = input<{ [name: string]: string }>({});\n  /**\n   * Enable type text animation for label\n   */\n  @Input() labelAnimation = false;\n\n  @Input()\n  @HostBinding('attr.small')\n  small?: boolean;\n\n  @HostBinding('attr.disabled') disable?: any;\n\n  /**\n   * Emit array of files when it's change, work only with input[type=file]\n   */\n  @Output() loaded = new EventEmitter<File[]>();\n\n  input: HTMLInputElement | undefined | null;\n\n  observer?: any;\n\n  get touched() {\n    return this.input?.classList.contains('ng-touched')\n  }\n\n  protected get invalid() {\n    return this.input?.classList.contains('ng-invalid')\n  }\n\n  constructor(\n    public elementRef: ElementRef<HTMLElement>,\n    private readonly ssr: SsrService,\n    private readonly settings: InputWrappersDefaultSettingsService\n  ) {\n    this.labelAnimation = this.settings.labelAnimation.inputWrapper;\n  }\n\n  protected onBlur = () => this.input?.classList.add('ng-touched')\n\n  ngAfterContentInit(): void {\n    this.input = this.elementRef.nativeElement.querySelector('input');\n    if (this.input?.type === 'file') {\n      this.input.style.display = 'none';\n      this.input.onchange = this.onChange;\n    }\n\n    if (this.input) {\n      this.input.addEventListener('blur', this.onBlur);\n    }\n\n    if (this.ssr.isBrowser()) {\n      if (!this.observer) {\n        this.observer = new MutationObserver((list: MutationRecord[]) => {\n          list.forEach((mutation) => {\n            if (\n              mutation.type === 'attributes' &&\n              mutation?.attributeName === 'disabled'\n            ) {\n              this.disable = this.input?.disabled || undefined;\n            }\n          });\n        });\n      }\n\n      if (this.input) {\n        this.disable = this.input.disabled || undefined;\n        this.observer.observe(this.input, {\n          childList: true,\n          subtree: true,\n          attributes: true,\n          characterData: false,\n        });\n      } else {\n        this.observer.disconnect();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.observer?.disconnect();\n  }\n\n  onChange = () => {\n    this.input?.classList.add('ng-touched');\n    this.files = Array.from(this.input?.files || []);\n    this.loaded.emit(this.files);\n  };\n\n  stepUp(): void {\n    if (this.input) {\n      this.input.classList.add('ng-touched');\n      this.input.classList.remove('ng-untouched');\n      const step = this.step();\n      if (!step) {\n        this.input.stepUp();\n      } else {\n        this.input.valueAsNumber += step;\n      }\n      this.input.dispatchEvent(\n        new Event('input', {\n          bubbles: true,\n          cancelable: true,\n        })\n      );\n      this.input.dispatchEvent(\n        new Event('change', {\n          bubbles: true,\n          cancelable: true,\n        })\n      );\n    }\n  }\n\n  stepDown(): void {\n    if (this.input) {\n      this.input.classList.add('ng-touched');\n      this.input.classList.remove('ng-untouched');\n      const step = this.step();\n      if (!step) {\n        this.input.stepDown();\n      } else {\n        this.input.valueAsNumber -= step;\n      }\n      this.input.dispatchEvent(\n        new Event('input', {\n          bubbles: true,\n          cancelable: true,\n        })\n      );\n      this.input.dispatchEvent(\n        new Event('change', {\n          bubbles: true,\n          cancelable: true,\n        })\n      );\n    }\n  }\n\n  type(): string | undefined | null {\n    return this.input?.type;\n  }\n\n  min(): number | undefined {\n    return (this.input?.min !== undefined && +this.input?.min) || undefined;\n  }\n\n  max(): number | undefined | null {\n    return (this.input?.max !== undefined && +this.input?.max) || undefined;\n  }\n\n  inputStep(): string | undefined | null {\n    return this.input?.step;\n  }\n\n  disabled(): any | undefined {\n    return this.input?.disabled || undefined;\n  }\n\n  checkErrors(): boolean {\n    return keysValues(this.errors || {}).some(keyValue => keyValue[1]);\n  }\n\n  valid(): boolean | undefined {\n    if (this.ssr.isServer()) {\n      return undefined;\n    }\n\n    if (!this.touched) {\n      return true;\n    }\n\n    if (this.checkErrors()) {\n      return false;\n    }\n    if (this.type() === 'number') {\n      const min = this.min();\n      const max = this.max();\n      if (min && min > +this.getValue()) {\n        return false;\n      }\n      if (max && max < +this.getValue()) {\n        return false;\n      }\n      return true;\n    }\n\n    return this.input?.checkValidity();\n  }\n\n  reset(): void {\n    if (this.input) {\n      this.input.value = '';\n      this.input.classList.remove('ng-touched');\n      this.input.dispatchEvent(\n        new Event('input', {\n          bubbles: true,\n          cancelable: true,\n        })\n      );\n      this.input.dispatchEvent(\n        new Event('change', {\n          bubbles: true,\n          cancelable: true,\n        })\n      );\n    }\n  }\n\n  getValue(): string {\n    return this.input?.value || '';\n  }\n\n  clicked() {\n    this.input?.click();\n  }\n\n  delete(index: number) {\n    this.files = this.files.filter((_, i) => i !== index);\n    this.loaded.emit(this.files);\n  }\n}\n","<fieldset\n  [ngClass]=\"{\n    label: label(),\n    outlined: display() === 'outlined',\n    underlined: display() === 'underlined',\n    none: display() === 'none',\n    invalid: !valid() || ((checkErrors() || invalid) && this.touched),\n    file: input?.type === 'file'\n  }\"\n>\n  @if (label()) {\n    <legend>\n      @if (labelAnimation) {\n        <obl-type-text [text]=\"label() || ''\" [interval]=\"40\"></obl-type-text>\n      } @else {\n        {{ label() }}\n      }\n    </legend>\n  }\n\n  @if (type() === 'search') {\n    <obl-icon [width]=\"20\" name=\"search\"></obl-icon>\n  }\n\n  <ng-content select=\"[prefix]\"></ng-content>\n\n  <ng-content></ng-content>\n\n  <ng-content select=\"[suffix]\"></ng-content>\n\n  @if (type() === 'number' && (inputStep() !== 'any' || step())) {\n    <button class=\"btn-text\" [attr.small]=\"small\" oblButton [attr.disabled]=\"disabled()\" (click)=\"stepUp()\">\n      <obl-icon [width]=\"20\" name=\"add\"></obl-icon>\n    </button>\n    <button class=\"btn-text\" [attr.small]=\"small\" oblButton [attr.disabled]=\"disabled()\" (click)=\"stepDown()\">\n      <obl-icon [width]=\"20\" name=\"subtract\"></obl-icon>\n    </button>\n  }\n  @if (cancellable() && getValue().length) {\n    <button class=\"btn-text\" [attr.small]=\"small\" oblButton [attr.disabled]=\"disabled()\" (click)=\"reset()\">\n      <obl-icon [width]=\"15\" name=\"cancel\"></obl-icon>\n    </button>\n  }\n\n  @if (type() === 'file') {\n    <button oblButton [attr.small]=\"small\" [attr.disabled]=\"disabled()\" (click)=\"clicked()\">{{ translations()['Browse'] || 'Browse' }}</button>\n    @for (file of files; track $index) {\n      <button class=\"file\" oblButton [attr.small]=\"small\">\n        {{file.name}}\n        <button oblButton [attr.disabled]=\"disabled()\" (click)=\"delete($index)\">\n          <obl-icon name=\"cancel\" [width]=\"10\"></obl-icon>\n        </button>\n      </button>\n    }\n  }\n</fieldset>\n\n@if (errors && !valid()) {\n  <div class=\"errors\">\n    @for (error of errors | keyvalue; track error.key) {\n      @if (error.value) {\n        <div class=\"error\">\n          <obl-type-text [text]=\"error.key | oblTranslation : translations() : (error.value !== true ? error.value : undefined)\" [interval]=\"30\"></obl-type-text>\n        </div>\n      }\n    }\n  </div>\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TextAreaDirective } from './directives/text-area.directive';\n\nimport { IconsModule } from '@obliczeniowo/elementary/icons';\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\nimport { AnimationsModule } from '@obliczeniowo/elementary/animations';\nimport { TextPipesModule } from '@obliczeniowo/elementary/text-pipes';\n\nimport { TextAreaWrapperComponent } from './components/text-areawrapper/textarea-wrapper.component';\nimport { InputDirective } from './directives/input.directive';\nimport { InputWrapperComponent } from './components/input-wrapper/input-wrapper.component';\n\n@NgModule({\n  declarations: [\n    InputDirective,\n    InputWrapperComponent,\n    TextAreaDirective,\n    TextAreaWrapperComponent\n  ],\n  imports: [\n    CommonModule,\n    ButtonsModule,\n    IconsModule,\n    AnimationsModule,\n    AnimationsModule,\n    TextPipesModule,\n  ],\n  exports: [\n    InputDirective,\n    TextAreaDirective,\n    InputWrapperComponent,\n    TextAreaWrapperComponent\n  ]\n})\nexport class InputModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InputWrappersDefaultSettingsService","i2","i3","i2.InputWrappersDefaultSettingsService","i6"],"mappings":"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"}