{"version":3,"file":"obliczeniowo-elementary-dropdown-multi-select.mjs","sources":["../../../../projects/components/dropdown-multi-select/components/single-select-item/single-select-item.component.ts","../../../../projects/components/dropdown-multi-select/components/single-select-item/single-select-item.component.html","../../../../projects/components/dropdown-multi-select/components/dropdown-multi-select/dropdown-multi-select.component.ts","../../../../projects/components/dropdown-multi-select/components/dropdown-multi-select/dropdown-multi-select.component.html","../../../../projects/components/dropdown-multi-select/dropdown-multi-select.module.ts","../../../../projects/components/dropdown-multi-select/validators/multi-select-validator.ts","../../../../projects/components/dropdown-multi-select/obliczeniowo-elementary-dropdown-multi-select.ts"],"sourcesContent":["import { Component, EventEmitter, input, Output, TemplateRef } from '@angular/core';\n\nexport interface DropdownMultiSelectItem<T> {\n  id: string | number;\n  text: string;\n  selected?: boolean;\n  templateData?: T;\n}\n\n@Component({\n    selector: 'obl-single-select-item',\n    templateUrl: './single-select-item.component.html',\n    styleUrls: ['./single-select-item.component.scss'],\n    standalone: false\n})\nexport class SingleSelectItemComponent {\n  item = input.required<DropdownMultiSelectItem<any>>();\n\n  templateSuffix = input<TemplateRef<any>>();\n\n  @Output() remove = new EventEmitter<void>();\n}\n","@if (item()) {\n  <div [class.template]=\"templateSuffix()\">\n    {{ item().text }}\n  </div>\n  <button oblButton icon=\"cancel\" (click)=\"remove.emit()\"></button>\n  @if (templateSuffix()) {\n    <ng-container\n      *ngTemplateOutlet=\"templateSuffix()!; context: { $implicit: item() }\"\n    ></ng-container>\n  }\n}","/* eslint-disable @typescript-eslint/brace-style */\n\nimport { DragBarComponent } from '@obliczeniowo/elementary/dropdown-select';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  input,\n  Input,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  effect\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormControl,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\n\nimport { Animations } from '@obliczeniowo/elementary/animations';\nimport {\n  AbstractSearchDomain,\n  ClickDataEvent,\n  DefaultSearchDomain,\n} from '@obliczeniowo/elementary/classes';\n\nimport { DropdownMultiSelectItem } from '../single-select-item/single-select-item.component';\nimport { Subscription, debounceTime } from 'rxjs';\nimport { InputWrappersDefaultSettingsService } from '@obliczeniowo/elementary/input';\n\n@Component({\n    selector: 'obl-dropdown-multi-select',\n    templateUrl: './dropdown-multi-select.component.html',\n    styleUrls: ['./dropdown-multi-select.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            multi: true,\n            useExisting: DropdownMultiSelectComponent,\n        },\n        {\n            provide: NG_VALIDATORS,\n            multi: true,\n            useExisting: DropdownMultiSelectComponent,\n        },\n    ],\n    animations: [Animations.rotate180deg],\n    standalone: false\n})\nexport class DropdownMultiSelectComponent\n  implements OnInit, ControlValueAccessor, Validator\n{\n  touchedDragBar = false;\n\n  @Input()\n  value: (number | string)[] = [];\n\n  label = input<string>();\n\n  @Input()\n  items: DropdownMultiSelectItem<any>[] = [];\n\n  placeholder = input<string>();\n\n  templateSuffix = input<TemplateRef<any>>();\n\n  /** Define if search control should shows up */\n  @Input() search = false;\n\n  /**\n   * Enable type text animation for label\n   */\n  @Input() labelAnimation = false;\n\n  @Input()\n  @HostBinding('class.disabled')\n  disabled = false;\n\n  wrap = input<boolean>(false);\n\n  regExp = input<{ on?: boolean }>();\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  @Input()\n  model: AbstractSearchDomain<DropdownMultiSelectItem<any>> =\n    new DefaultSearchDomain<DropdownMultiSelectItem<any>>([]);\n\n  @HostBinding('class.error') get error(): ValidationErrors | null {\n    return (\n      (this.abstractControl &&\n        (!this.abstractControl.pristine || this.abstractControl.touched) &&\n        this.abstractControl.errors) ||\n      null\n    );\n  }\n\n  @Output()\n  changed: EventEmitter<DropdownMultiSelectItem<any>[]> = new EventEmitter<\n    DropdownMultiSelectItem<any>[]\n  >();\n\n  @Output() itemClicked = new EventEmitter<\n    ClickDataEvent<DropdownMultiSelectItem<any>>\n  >();\n\n  @Output() regChanged = new EventEmitter<boolean>();\n\n  /** search control */\n  searchControl: FormControl = new FormControl('');\n\n  protected abstractControl: AbstractControl | undefined;\n\n  protected subscription: Subscription;\n\n  selected: DropdownMultiSelectItem<any>[] = [];\n\n  isOpen = false;\n\n  onChange = (value: (string | number)[]) => {};\n\n  onTouched = () => {};\n\n  constructor(\n    private readonly elementRef: ElementRef<HTMLElement>,\n    private readonly settings: InputWrappersDefaultSettingsService\n  ) {\n    this.labelAnimation = this.settings.labelAnimation.select;\n    this.subscription = this.searchControl.valueChanges\n      .pipe(debounceTime(500))\n      .subscribe((value: string) => {\n        this.model.search(value);\n      });\n    effect(() => {\n      this.model.regExpOn = this.regExp()?.on || false;\n      this.model.search(this.searchControl.getRawValue() as string);\n    })\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if ((changes.value && this.items) || (changes.items && this.value)) {\n      this.selected = this.items.filter((item) => {\n        item.selected = this.value.includes(item.id);\n        return item.selected;\n      });\n    }\n    if (changes.items) {\n      this.model.items = this.items;\n      this.model.filtered = this.items;\n    }\n    if (changes.search && !changes.search.firstChange) {\n      if (!this.search) {\n        this.searchControl.setValue('');\n        this.model.search(this.searchControl.getRawValue() as string);\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  getWidth(): number {\n    return this.elementRef.nativeElement.clientWidth;\n  }\n\n  validate(control: AbstractControl): ValidationErrors | null {\n    this.abstractControl = control;\n    return null;\n  }\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() as string);\n    this.regChanged.emit(this.model.regExpOn);\n  }\n\n  writeValue(ids: (number | string)[] | { value: (number | string)[] }): void {\n    (Array.isArray(ids) ? ids : ids.value).forEach((id) => {\n      const selected = this.items.find((item) => item.id === id);\n      if (selected) {\n        selected.selected = true;\n        this.selected.push(selected);\n      }\n    });\n    this.onChange(this.selected.map((i) => i.id));\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  ngOnInit(): void {}\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(\n    item: DropdownMultiSelectItem<any>,\n    dragBar: DragBarComponent\n  ): void {\n    if (this.disabled) {\n      return;\n    }\n    item.selected = !item.selected;\n    if (item.selected) {\n      this.selected = [...this.selected, item];\n    } else {\n      this.selected = this.selected.filter((i) => i.id !== item.id);\n    }\n    this.onChange(this.selected.map((i) => i.id));\n    this.touchedDragBar = dragBar.touchedDragBar;\n    this.changed.emit([...this.selected]);\n  }\n\n  onTouchedDragBar(touched: boolean, element: any): void {\n    this.touchedDragBar = touched;\n    element.parentElement.style.width = 0;\n  }\n\n  onItemClicked(event: MouseEvent, item: DropdownMultiSelectItem<any>) {\n    this.itemClicked.emit({ event, data: item });\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  remove(item: DropdownMultiSelectItem<any>) {\n    this.selected = this.selected.filter((el) => el.id !== item.id);\n    item.selected = false;\n    this.changed.emit(this.selected);\n  }\n}\n","<fieldset\n  class=\"select-content\"\n  [ngClass]=\"{ legend: label() }\"\n  cdkOverlayOrigin\n  #dropDown=\"cdkOverlayOrigin\"\n  #parent\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  <div class=\"selected\" [class.wrap]=\"wrap()\">\n    @for (item of selected | oblTake : 50; track item.id) {\n      <obl-single-select-item\n        [item]=\"item\"\n        [templateSuffix]=\"templateSuffix()\"\n        (remove)=\"remove(item)\"\n        (click)=\"onItemClicked($event, item)\"\n      ></obl-single-select-item>\n    }\n\n    @if (selected.length > 50) {\n      <span>... +{{ selected.length - 50 }}</span>\n    } @else if (selected.length === 0) {\n      <span>{{ placeholder() }}</span>\n    }\n\n  </div>\n  <div class=\"suffix\" #suffix>\n    <div class=\"count\">\n      <sup>{{ selected.length | oblUnits }}</sup>\n    </div>\n    <obl-expand-button\n      [isOpen]=\"isOpen\"\n      (click)=\"toggle($event, false)\"\n    ></obl-expand-button>\n  </div>\n</fieldset>\n\n<ng-template\n  #dropdownTmpl\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"dropDown\"\n  [cdkConnectedOverlayOpen]=\"isOpen\"\n  (overlayOutsideClick)=\"toggle($event)\"\n>\n  <div class=\"dropdown-list\" [style.min-width.px]=\"getWidth() - 5\" #list cdkDrag>\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        <div class=\"item-container\" (click)=\"onSelect(item, dragBar)\">\n          <obl-checkbox\n            [value]=\"!!item.selected\"\n            (changed)=\"(item.selected)\"\n            [disabled]=\"disabled\"\n            >{{ item.text }}</obl-checkbox\n          >\n          @if (templateSuffix()) {\n            <ng-container\n              *ngTemplateOutlet=\"templateSuffix()!; context: { $implicit: item }\"\n            ></ng-container>\n          }\n        </div>\n      }\n    </div>\n  </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { InputModule } from '@obliczeniowo/elementary/input';\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\nimport { CheckboxModule } from '@obliczeniowo/elementary/checkbox';\nimport { DropdownSelectModule } from '@obliczeniowo/elementary/dropdown-select';\nimport { UnitsPipe } from '@obliczeniowo/elementary/numeric-pipes';\nimport { TakePipe } from '@obliczeniowo/elementary/array-pipes';\nimport { ToAsyncPipe } from '@obliczeniowo/elementary/async-pipes';\nimport { AnimationsModule } from '@obliczeniowo/elementary/animations';\n\nimport { SingleSelectItemComponent } from './components/single-select-item/single-select-item.component';\nimport { DropdownMultiSelectComponent } from './components/dropdown-multi-select/dropdown-multi-select.component';\n\n@NgModule({\n  declarations: [\n    DropdownMultiSelectComponent,\n    SingleSelectItemComponent\n  ],\n  imports: [\n    CommonModule,\n    OverlayModule,\n    DropdownSelectModule,\n    CheckboxModule,\n    DragDropModule,\n    ButtonsModule,\n    InputModule,\n    ReactiveFormsModule,\n    UnitsPipe,\n    TakePipe,\n    ToAsyncPipe,\n    AnimationsModule\n  ],\n  exports: [\n    DropdownMultiSelectComponent,\n    SingleSelectItemComponent\n  ]\n})\nexport class DropdownMultiSelectModule { }\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class MultiSelectValidators {\n  static min(min: number): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      const arr = control.value && (Array.isArray(control.value) && control.value || control.value.value);\n      return arr?.length < min ? { min: true } : null;\n    };\n  }\n\n  static max(max: number): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      const arr = control.value && (Array.isArray(control.value) && control.value || control.value.value);\n      return arr?.length > max ? { max: true } : null;\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i10.SingleSelectItemComponent"],"mappings":"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"}