{"version":3,"file":"obliczeniowo-elementary-dropdown-select.mjs","sources":["../../../../projects/components/dropdown-select/components/drag-bar/drag-bar.component.ts","../../../../projects/components/dropdown-select/components/drag-bar/drag-bar.component.html","../../../../projects/components/dropdown-select/components/dropdown-select/dropdown-select.component.ts","../../../../projects/components/dropdown-select/components/dropdown-select/dropdown-select.component.html","../../../../projects/components/dropdown-select/dropdown-select.module.ts","../../../../projects/components/dropdown-select/obliczeniowo-elementary-dropdown-select.ts"],"sourcesContent":["import { Component, HostListener, Output, EventEmitter } from '@angular/core';\n\n@Component({\n    selector: 'obl-drag-bar',\n    templateUrl: './drag-bar.component.html',\n    styleUrls: ['./drag-bar.component.scss'],\n    standalone: false\n})\nexport class DragBarComponent {\n  touchedDragBar = false;\n\n  // tslint:disable-next-line: no-output-on-prefix\n  @Output() onTouched: EventEmitter<boolean> = new EventEmitter<boolean>();\n  // tslint:disable-next-line: no-output-on-prefix\n  @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\n\n  @HostListener('click', ['$event']) click(event: any): void {\n    this.touchedDragBar = true;\n    this.onTouched.emit(this.touchedDragBar);\n  }\n}\n","<div [class.touched]=\"touchedDragBar\"></div>\n@if (touchedDragBar) {\n  <button (click)=\"onClose.emit()\">\n    <svg width=\"10\" height=\"10\" viewBox=\"0 0 6.3499999 6.3500002\">\n      <path\n        d=\"M 6 3 L 4 5 L 10.5 11.5 L 4 18 L 6 20 L 12.5 13.5 L 19 20 L 21 18 L 14.5 11.5 L 21 5 L 19 3 L 12.5 9.5 L 6 3 z \"\n        transform=\"scale(0.26458333)\"\n      />\n    </svg>\n  </button>\n}\n","import { Subscription } from 'rxjs';\nimport { Animations } from '@obliczeniowo/elementary/animations';\nimport { DragBarComponent } from './../drag-bar/drag-bar.component';\nimport {\n  Component,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  EventEmitter,\n  HostBinding,\n  OnDestroy,\n  SimpleChanges,\n  input,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  NG_VALUE_ACCESSOR,\n  FormControl,\n} from '@angular/forms';\nimport { debounceTime } from 'rxjs/operators';\nimport { cloneDeep } from 'lodash';\n\nimport {\n  AbstractSearchDomain,\n  DefaultSearchDomain,\n} from '@obliczeniowo/elementary/classes';\nimport { InputWrappersDefaultSettingsService } from '@obliczeniowo/elementary/input';\n\nexport interface DropdownSelectItem<T> {\n  id: string | number;\n  text: string;\n  templateData?: T;\n}\n\n@Component({\n    selector: 'obl-dropdown-select',\n    templateUrl: './dropdown-select.component.html',\n    styleUrls: ['./dropdown-select.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            multi: true,\n            useExisting: DropdownSelectComponent,\n        },\n    ],\n    animations: [Animations.rotate180deg],\n    standalone: false\n})\nexport class DropdownSelectComponent\n  implements OnInit, OnDestroy, ControlValueAccessor\n{\n  protected touchedDragBar = false;\n\n  /**\n   * Control the select items data flow.\n   *\n   * If you want to override this one for getting data from BE source for example just create\n   * own class that extends AbstractSearchModel and do what you need to do to filter out items\n   * list\n   */\n  model = input<AbstractSearchDomain<DropdownSelectItem<any>>>(new DefaultSearchDomain<DropdownSelectItem<any>>([]));\n\n  @Input()\n  items!: DropdownSelectItem<any>[];\n\n  /** Label to display over the field (default undefined so it will have no label at all) */\n  label = input<string>();\n\n  /**\n   * Enable type text animation for label\n   */\n  @Input() labelAnimation = false;\n\n  /** Template for suffix, if exist display after select item */\n  templateSuffix = input<TemplateRef<any>>();\n\n  /** Template for prefix, if exist display before select item */\n  templatePrefix = input<TemplateRef<any>>();\n\n  /** Define if search control should shows up */\n  @Input()\n  search = false;\n\n  @Input()\n  regExp?: { on?: boolean };\n\n  /** */\n  @Input()\n  select!: string | number;\n\n  /** disable choosing element, search (if added) is available and dropdown list too */\n  @Input()\n  @HostBinding('class.disabled')\n  disabled = false;\n\n  /** emit when selected item is changed by user */\n  @Output()\n  changed: EventEmitter<DropdownSelectItem<any>> = new EventEmitter<\n    DropdownSelectItem<any>\n  >();\n\n  /** search control */\n  searchControl: FormControl = new FormControl('');\n\n  /** selected item */\n  selected: DropdownSelectItem<any> | undefined;\n\n  /** define if list is opened */\n  isOpen = false;\n  /** define if element is touched */\n  touched = false;\n\n  protected subscription!: Subscription;\n\n  constructor(private readonly settings: InputWrappersDefaultSettingsService) {\n    this.subscription = this.searchControl.valueChanges\n      .pipe(debounceTime(500))\n      .subscribe((value) => {\n        this.model().search(value);\n      });\n    this.labelAnimation = this.settings.labelAnimation.select;\n  }\n\n  onChange = (value: string | number) => {};\n\n  onTouched = () => {};\n\n  registerOnValidatorChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  toggleReg() {\n    this.model().regExpOn = !this.model().regExpOn;\n    this.model().search(this.searchControl.getRawValue());\n  }\n\n  writeValue(id: number | string): void {\n    const select = this.model().filtered.find((item) => item.id === id);\n    if (select) {\n      this.selected = select;\n      this.select = select.id;\n    }\n  }\n\n  registerOnChange(onChange: any): void {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any): void {\n    this.onTouched = onTouched;\n  }\n\n  markAsTouched(): void {\n    if (this.disabled) {\n      return;\n    }\n    if (!this.touched) {\n      this.onTouched();\n      this.touched = true;\n    }\n  }\n\n  ngOnInit(): void {\n    if (!this.selected && this.model().filtered.length) {\n      this.selected =\n        this.select !== undefined\n          // eslint-disable-next-line eqeqeq\n          ? this.model().filtered.find((item) => item.id == this.select)\n          : this.model().filtered[0];\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.items) {\n      this.model().items = this.items;\n      this.model().filtered = this.items;\n      if (\n        this.selected &&\n        !this.model().items.find((item) => item.id === this.selected?.id)\n      ) {\n        this.selected = undefined;\n      }\n    }\n    if (changes.select) {\n      this.selected =\n        this.select !== undefined\n          // eslint-disable-next-line eqeqeq\n          ? this.model().filtered.find((item) => item.id == this.select)\n          : this.model().filtered[0];\n    }\n    if (changes.regExp) {\n      if (this.regExp) {\n        this.model().regExpOn = this.regExp.on || false;\n        this.model().search(this.searchControl.getRawValue());\n      }\n    }\n    if (changes.search && !changes.search.firstChange) {\n      if (!this.search) {\n        this.searchControl.setValue('');\n        this.model().search(this.searchControl.getRawValue());\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.subscription?.closed) {\n      this.subscription.unsubscribe();\n    }\n  }\n\n  close(touched = this.touchedDragBar): void {\n    if (!touched) {\n      this.isOpen = false;\n      this.touchedDragBar = false;\n    } else {\n      this.touchedDragBar = touched;\n    }\n  }\n\n  open(): void {\n    if (!this.isOpen) {\n      this.isOpen = true;\n      this.touchedDragBar = false;\n    }\n  }\n\n  toggle(event: any, touched = this.touchedDragBar): void {\n    if (touched) {\n      return;\n    }\n    event.stopPropagation();\n    this.touchedDragBar = false;\n    this.isOpen = !this.isOpen;\n  }\n\n  onSelect(item: DropdownSelectItem<any>, dragBar: DragBarComponent): void {\n    if (this.disabled) {\n      return;\n    }\n    this.selected = item;\n    this.onChange(this.selected.id);\n    this.close(dragBar.touchedDragBar);\n    this.changed.emit({\n      ...this.selected,\n      templateData: this.selected.templateData\n        ? cloneDeep(this.selected.templateData)\n        : undefined,\n    });\n  }\n\n  onTouchedDragBar(touched: boolean, element: any): void {\n    this.touchedDragBar = touched;\n    element.parentElement.style.width = 0;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n}\n","<obl-input-wrapper\n  [label]=\"label() || ''\"\n  [labelAnimation]=\"labelAnimation\"\n  class=\"select-content\"\n  cdkOverlayOrigin\n  #dropDown=\"cdkOverlayOrigin\"\n  #parent\n>\n  @if (templatePrefix()) {\n    <ng-container\n      *ngTemplateOutlet=\"templatePrefix()!; context: { $implicit: selected }\"\n    ></ng-container>\n  }\n  <input\n    type=\"text\"\n    readonly\n    oblInput\n    [value]=\"(selected && selected.text) || ''\"\n    (click)=\"toggle($event, false)\"\n  />\n  @if (templateSuffix()) {\n    <ng-container\n      *ngTemplateOutlet=\"templateSuffix()!; context: { $implicit: selected }\"\n    ></ng-container>\n  }\n  <ng-content select=\"[suffix]\"></ng-content>\n  <obl-expand-button\n    [isOpen]=\"isOpen\"\n    class=\"dropdown\"\n    (click)=\"toggle($event, false)\"\n  ></obl-expand-button>\n</obl-input-wrapper>\n\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"dropDown\"\n  [cdkConnectedOverlayOpen]=\"isOpen\"\n  [cdkConnectedOverlayOffsetX]=\"2\"\n  (overlayOutsideClick)=\"toggle($event)\"\n>\n  <div\n    class=\"dropdown-list\"\n    [class.disabled]=\"disabled\"\n    [style.min-width.px]=\"parent.elementRef.nativeElement.clientWidth - 7\"\n    #list\n    cdkDrag\n  >\n    <obl-drag-bar\n      (onTouched)=\"onTouchedDragBar($event, list)\"\n      (onClose)=\"close(false)\"\n      cdkDragHandle\n      #dragBar\n    ></obl-drag-bar>\n    @if (search) {\n      <obl-input-wrapper\n        [display]=\"'underlined'\"\n        [cancellable]=\"true\"\n      >\n        <input oblInput type=\"search\" [formControl]=\"searchControl\" />\n        @if (regExp) {\n          <button\n            oblButton\n            [selected]=\"model().regExpOn\"\n            (click)=\"toggleReg()\"\n          >\n            Reg\n          </button>\n        }\n      </obl-input-wrapper>\n    }\n    <div class=\"list\">\n      @for (item of model().filtered; track item.id) {\n        @if (item !== selected) {\n          <div\n            class=\"item-container\"\n            (click)=\"onSelect(item, dragBar)\"\n          >\n            @if (templatePrefix()) {\n              <ng-container\n                *ngTemplateOutlet=\"templatePrefix()!; context: { $implicit: item }\"\n              ></ng-container>\n            }\n            <div class=\"item\">{{ item.text }}</div>\n            @if(templateSuffix()) {\n              <ng-container\n                *ngTemplateOutlet=\"templateSuffix()!; context: { $implicit: item }\"\n              ></ng-container>\n            }\n          </div>\n        }\n      }\n    </div>\n  </div>\n</ng-template>\n","import { InputModule } from '@obliczeniowo/elementary/input';\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownSelectComponent } from './components/dropdown-select/dropdown-select.component';\nimport { DragBarComponent } from './components/drag-bar/drag-bar.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n  declarations: [\n    DropdownSelectComponent,\n    DragBarComponent\n  ],\n  imports: [\n    CommonModule,\n    OverlayModule,\n    DragDropModule,\n    FormsModule,\n    ButtonsModule,\n    InputModule,\n    ReactiveFormsModule\n  ],\n  exports: [\n    DropdownSelectComponent,\n    DragBarComponent\n  ]\n})\nexport class DropdownSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7.DragBarComponent"],"mappings":"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"}