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