{"version":3,"file":"obliczeniowo-elementary-filters.mjs","sources":["../../../../projects/components/filters/services/filters.service.ts","../../../../projects/components/filters/components/filter/filter.component.ts","../../../../projects/components/filters/components/filter/filter.component.html","../../../../projects/components/filters/components/filters/filters.component.ts","../../../../projects/components/filters/components/filters/filters.component.html","../../../../projects/components/filters/filters.module.ts","../../../../projects/components/filters/obliczeniowo-elementary-filters.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-argument */\r\nimport { Injectable } from '@angular/core';\r\nimport { Filter } from '../interfaces/filter';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class FiltersService {\r\n  checkItemCondition(item: { [key: string]: any }, filters: Filter): boolean {\r\n    let condition: any;\r\n\r\n    if (filters?.filters?.length) {\r\n      filters.filters.forEach((filter) => {\r\n        const checked = filter.filters?.length\r\n          ? this.checkItemCondition(item, filter)\r\n          : this.operation(filter, item);\r\n\r\n        if (filters?.filterType === 'or') {\r\n          condition = condition !== undefined ? condition || checked : checked;\r\n        } else if (filters?.filterType === 'and') {\r\n          condition = condition !== undefined ? condition && checked : checked;\r\n        } else {\r\n          condition = checked;\r\n        }\r\n      });\r\n      return condition;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  operation(filter: Filter, item: { [key: string]: any }): boolean {\r\n    const value = item[filter.valueName];\r\n    const filterValue = filter.filterValue;\r\n    switch (filter.filterType) {\r\n      case 'less':\r\n        return value < +filterValue;\r\n      case 'more':\r\n        return value > +filterValue;\r\n      case 'more-eq':\r\n        return value >= +filterValue;\r\n      case 'less-eq':\r\n        return value <= +filterValue;\r\n      case 'eq':\r\n        return value.toString() === filterValue.toString();\r\n      case 'not-eq':\r\n        return value.toString() !== filterValue.toString();\r\n      case 'like':\r\n        return value?.includes(filterValue) || false;\r\n      case 'regex':\r\n        {\r\n          const reg = new RegExp(filterValue.toString(), 'g');\r\n          return !!value?.toString().match(reg);\r\n        }\r\n      case 'not-regex':\r\n        {\r\n          const reg = new RegExp(filterValue.toString(), 'g');\r\n          return !value?.toString().match(reg);\r\n        }\r\n      default:\r\n        return false;\r\n    }\r\n  }\r\n\r\n  filter(input: { [key: string]: any }, filters: Filter) {\r\n    return input.filter((item: any) => this.checkItemCondition(item, filters));\r\n  }\r\n}\r\n","/* eslint-disable @typescript-eslint/consistent-type-assertions */\r\nimport {\r\n  Component,\r\n  computed,\r\n  EventEmitter,\r\n  input,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n} from '@angular/core';\r\nimport { DropdownSelectItem } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { Filter } from '../../interfaces/filter';\r\nimport { FilterNameItem } from '../../interfaces/filter-name-item';\r\n\r\n@Component({\r\n    selector: 'obl-filter',\r\n    templateUrl: './filter.component.html',\r\n    styleUrl: './filter.component.scss',\r\n    standalone: false\r\n})\r\nexport class FilterComponent {\r\n  filter = input<Partial<Filter>>({});\r\n\r\n  names = input<FilterNameItem[]>([]);\r\n\r\n  haveParent = input<boolean>(true);\r\n\r\n  mode = input<'adding' | 'removing'>('removing');\r\n\r\n  translations = input<{ [en: string]: string }>({});\r\n\r\n  suffix = input<TemplateRef<any>>();\r\n\r\n  labelAnimation = input<boolean>(false);\r\n\r\n  filtersType = input<'full' | 'no-regex'>('full');\r\n\r\n  /** filters changed */\r\n  @Output() changed = new EventEmitter<Filter>();\r\n  /** filter added */\r\n  @Output() add = new EventEmitter<Filter>();\r\n  /** filter remove */\r\n  @Output() remove = new EventEmitter<Filter>();\r\n\r\n  expanded = true;\r\n\r\n  protected nameItems: DropdownSelectItem<FilterNameItem>[] = [];\r\n  protected filtersItems: DropdownSelectItem<any>[] = [];\r\n  protected group = ['and', 'or'];\r\n  protected numeric = ['less', 'less-eq', 'eq', 'not-eq', 'more-eq', 'more'];\r\n  protected text = computed(() => {\r\n    switch (this.filtersType()) {\r\n      case 'no-regex': {\r\n        return ['like', 'eq', 'not-eq'];\r\n      }\r\n      default: {\r\n        return ['like', 'eq', 'not-eq', 'regex', 'not-regex']\r\n      }\r\n    }\r\n  });\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.names && this.names()) {\r\n      this.nameItems = this.names().map((name) => ({\r\n        id: name.name,\r\n        text: name.text,\r\n        templateData: name,\r\n      }));\r\n\r\n      if (this.nameItems.length) {\r\n        const selected = this.nameItems.find(\r\n          (name) => name.id === this.filter().valueName\r\n        );\r\n        if (selected) {\r\n          const map = {\r\n            number: this.numeric,\r\n            text: this.text(),\r\n            group: this.group,\r\n          };\r\n          this.filtersItems = map[selected.templateData?.type || 'group'].map(\r\n            (type: string) => ({\r\n              id: type,\r\n              text: this.translations()[type] || type,\r\n            })\r\n          );\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  setName(name: DropdownSelectItem<FilterNameItem>) {\r\n    this.filter().valueName = name.id as string;\r\n    const map = {\r\n      number: this.numeric,\r\n      text: this.text(),\r\n      group: this.group,\r\n    };\r\n    const nameItem = this.nameItems.find(\r\n      (item) => item.id === this.filter().valueName\r\n    );\r\n\r\n    if (name.templateData?.type === 'number') {\r\n      this.filter().filterValue = 0;\r\n    }\r\n\r\n    this.filtersItems = map[nameItem?.templateData?.type || 'group'].map(\r\n      (type: string) => ({\r\n        id: type,\r\n        text: this.translations()[type] || type,\r\n      })\r\n    );\r\n    if (\r\n      this.filter().valueName &&\r\n      this.filter().filterType &&\r\n      this.filter().filterValue\r\n    ) {\r\n      this.changed.emit(this.filter() as Filter);\r\n    }\r\n  }\r\n\r\n  setFilter(filter: DropdownSelectItem<any>) {\r\n    this.filter().filterType = filter.id as any;\r\n    if (\r\n      this.filter().valueName &&\r\n      this.filter().filterType &&\r\n      this.filter().filterValue\r\n    ) {\r\n      this.changed.emit(this.filter() as Filter);\r\n    }\r\n  }\r\n\r\n  setValue = (value: string | number) => {\r\n    const nameItem = this.nameItems.find(\r\n      (item) => item.id === this.filter().valueName\r\n    );\r\n    if (\r\n      nameItem?.templateData?.type === 'number' &&\r\n      typeof value === 'string'\r\n    ) {\r\n      value = parseFloat(value);\r\n    }\r\n    this.filter().filterValue = value;\r\n    this.changed.emit();\r\n  };\r\n\r\n  action() {\r\n    if (\r\n      this.filter().valueName &&\r\n      this.filter()?.filterType &&\r\n      this.filter().filterValue !== null\r\n    ) {\r\n      if (this.mode() === 'adding') {\r\n        this.add.emit({ ...this.filter() } as Filter);\r\n      } else {\r\n        this.remove.emit({ ...this.filter() } as Filter);\r\n      }\r\n    }\r\n  }\r\n\r\n  onRemove(filter: Filter) {\r\n    this.filter().filters = (this.filter().filters || []).filter(\r\n      (f) => f.id !== filter.id\r\n    );\r\n    this.filter().filters?.forEach((filter, index) => (filter.id = index));\r\n    this.changed.emit(this.filter() as Filter);\r\n  }\r\n\r\n  onAdd(filter: Filter) {\r\n    if (filter.id === undefined) {\r\n      filter.id = new Date().getTime();\r\n    }\r\n    this.filter().filters = [...(this.filter().filters || []), filter];\r\n    this.changed.emit(this.filter() as Filter);\r\n  }\r\n\r\n  addGroup() {\r\n    this.filter().filters?.unshift({\r\n      id: this.filter().filters?.length || 0,\r\n      valueName: `group ${this.filter().filters?.length}`,\r\n      filterValue: 0,\r\n      filterType: 'and',\r\n      filters: [],\r\n    });\r\n    this.filter().filters?.forEach((f, i) => (f.id = i));\r\n    this.changed.emit();\r\n  }\r\n\r\n  setGroupType(orAnd: boolean) {\r\n    this.filter().filterType = orAnd ? 'and' : 'or';\r\n    this.changed.emit();\r\n  }\r\n\r\n  removeGroup() {\r\n    this.remove.emit(this.filter() as Filter);\r\n  }\r\n}\r\n","@if (!filter().filters) {\r\n  <div class=\"row record\">\r\n    <div class=\"row\">\r\n      <obl-dropdown-select\r\n        [label]=\"'Filter by' | oblTranslation : translations()\"\r\n        [labelAnimation]=\"labelAnimation()\"\r\n        [items]=\"nameItems\"\r\n        [select]=\"filter().valueName || ''\"\r\n        (changed)=\"setName($event)\"\r\n        #name\r\n      ></obl-dropdown-select>\r\n\r\n      <obl-dropdown-select\r\n        [label]=\"'Filter type' | oblTranslation : translations()\"\r\n        [labelAnimation]=\"labelAnimation()\"\r\n        [items]=\"filtersItems\"\r\n        [select]=\"filter().filterType || ''\"\r\n        (changed)=\"setFilter($event)\"\r\n      ></obl-dropdown-select>\r\n\r\n      @if (name.selected) {\r\n        <obl-input-wrapper\r\n          [label]=\"'Value' | oblTranslation : translations()\"\r\n          [labelAnimation]=\"labelAnimation()\"\r\n          [step]=\"name.selected.templateData.options?.step\"\r\n        >\r\n          <input\r\n            oblInput\r\n            [type]=\"name.selected.templateData.type\"\r\n            [min]=\"name.selected.templateData.options?.min\"\r\n            [max]=\"name.selected.templateData.options?.max\"\r\n            [value]=\"\r\n              filter().filterValue ??\r\n              (name.selected.templateData.type === 'text' ? '' : 0)\r\n            \"\r\n            (change)=\"setValue(value.value)\"\r\n            #value\r\n          />\r\n          @if(suffix()) {\r\n            <ng-container\r\n              suffix\r\n              *ngTemplateOutlet=\"\r\n                suffix()!;\r\n                context: {\r\n                  value:\r\n                    filter().filterValue ??\r\n                    name.selected.templateData.options?.default ||\r\n                      (name.selected.templateData.type === 'text' ? '' : 0),\r\n                  type: name.selected.templateData.type,\r\n                  valueName: filter().valueName,\r\n                  setValue\r\n                }\r\n              \"\r\n            ></ng-container>\r\n          }\r\n        </obl-input-wrapper>\r\n      }\r\n    </div>\r\n\r\n    <button\r\n      oblButton\r\n      [icon]=\"mode() === 'adding' ? 'add' : 'subtract'\"\r\n      (click)=\"action()\"\r\n    ></button>\r\n  </div>\r\n} @else {\r\n  <div>\r\n    <div class=\"head\">\r\n      <span\r\n        >{{ 'Start of group name:' | oblTranslation : translations() }}\r\n        {{ filter().valueName }}</span\r\n      >\r\n      <div class=\"row\">\r\n        <obl-switcher\r\n          on=\"And\"\r\n          off=\"Or\"\r\n          [value]=\"filter().filterType === 'and'\"\r\n          (valueChanged)=\"setGroupType($event)\"\r\n        ></obl-switcher>\r\n        <button\r\n          oblButton\r\n          icon=\"add\"\r\n          [title]=\"'Add group' | oblTranslation : translations()\"\r\n          (click)=\"addGroup()\"\r\n        ></button>\r\n        @if (haveParent()) {\r\n          <button\r\n            oblButton\r\n            icon=\"subtract\"\r\n            [title]=\"'Remove group' | oblTranslation : translations()\"\r\n            title=\"Remove group\"\r\n            (click)=\"removeGroup()\"\r\n          ></button>\r\n        }\r\n        <obl-expand-button\r\n          [isOpen]=\"expanded\"\r\n          (click)=\"expanded = !expanded\"\r\n        ></obl-expand-button>\r\n      </div>\r\n    </div>\r\n\r\n    @if (filter().filters) {\r\n      <div class=\"filters\" [class.expanded]=\"expanded\">\r\n        @for (filter of filter().filters; track filter.id) {\r\n          <obl-filter\r\n            [filter]=\"filter\"\r\n            [names]=\"names()\"\r\n            [translations]=\"translations()\"\r\n            [suffix]=\"suffix()\"\r\n            [labelAnimation]=\"labelAnimation()\"\r\n            [filtersType]=\"filtersType()\"\r\n            (remove)=\"onRemove($event)\"\r\n            (changed)=\"changed.emit(filter)\"\r\n          ></obl-filter>\r\n        }\r\n\r\n        <obl-filter\r\n          class=\"adding\"\r\n          [names]=\"names()\"\r\n          [translations]=\"translations()\"\r\n          [suffix]=\"suffix()\"\r\n          [labelAnimation]=\"labelAnimation()\"\r\n          [filtersType]=\"filtersType()\"\r\n          mode=\"adding\"\r\n          (add)=\"onAdd($event)\"\r\n        ></obl-filter>\r\n\r\n        <div class=\"head\">\r\n          {{ 'End of group name:' | oblTranslation : translations() }}\r\n          {{ filter().valueName }}\r\n        </div>\r\n      </div>\r\n    }\r\n  </div>\r\n}\r\n","import {\r\n  Component,\r\n  effect,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  input,\r\n  Input,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { cloneDeep } from 'lodash';\r\n\r\nimport { Filter } from '../../interfaces/filter';\r\nimport { FilterNameItem } from '../../interfaces/filter-name-item';\r\n\r\nimport {\r\n  DropdownSelectComponent,\r\n  DropdownSelectItem,\r\n} from '@obliczeniowo/elementary/dropdown-select';\r\nimport { keys, keysValues } from '@obliczeniowo/elementary/objects';\r\nimport { FiltersService } from '../../services/filters.service';\r\nimport { InputWrappersDefaultSettingsService } from '@obliczeniowo/elementary/input';\r\n\r\n@Component({\r\n    selector: 'obl-filters',\r\n    templateUrl: './filters.component.html',\r\n    styleUrl: './filters.component.scss',\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            multi: true,\r\n            useExisting: FiltersComponent,\r\n        },\r\n    ],\r\n    standalone: false\r\n})\r\nexport class FiltersComponent implements ControlValueAccessor {\r\n  protected touchedDragBar = false;\r\n\r\n  protected settingsItems: DropdownSelectItem<Filter>[] = [];\r\n\r\n  protected errors: { [key: string]: { [key: string]: boolean } | null } = {};\r\n\r\n  /** define if list is opened */\r\n  isOpen = false;\r\n  /** define if element is touched */\r\n  touched = false;\r\n\r\n  @Input() filters?: Filter;\r\n\r\n  @Input() settings?: { [name: string]: Filter };\r\n\r\n  translations = input<{ [en: string]: string }>({});\r\n\r\n  names = input<FilterNameItem[]>([]);\r\n\r\n  input = input<{ [key: string]: any }[]>();\r\n\r\n  suffix = input<TemplateRef<any>>();\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  filtersType = input<'full' | 'no-regex'>('full');\r\n\r\n  @Output() settingsChanged = new EventEmitter<{ [name: string]: Filter }>();\r\n\r\n  @Output() changed = new EventEmitter<Filter>();\r\n\r\n  @Output() output = new EventEmitter<{ [key: string]: any }[]>();\r\n\r\n  @ViewChild('selectedSetting') selected?: DropdownSelectComponent;\r\n  @ViewChild('settingsName') settingsName?: ElementRef<HTMLInputElement>;\r\n\r\n  constructor(\r\n    protected filtersService: FiltersService,\r\n    protected readonly globalSettings: InputWrappersDefaultSettingsService\r\n  ) {\r\n    effect(() => {\r\n      this.filterInput();\r\n    })\r\n    this.labelAnimation = this.globalSettings.labelAnimation.filters;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.settings) {\r\n      if (this.settings) {\r\n        this.updateSettingsItems();\r\n      } else {\r\n        this.settingsItems = [];\r\n      }\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    if (this.isOpen) {\r\n      this.isOpen = false;\r\n    } else {\r\n      this.open();\r\n    }\r\n  }\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      setTimeout(() => {\r\n        this.checkSettingSelection();\r\n      });\r\n    }\r\n  }\r\n\r\n  onChange = (value: Filter) => {};\r\n\r\n  onTouched = () => {};\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  checkSettingSelection() {\r\n    if (\r\n      this.selected?.selected &&\r\n      JSON.stringify(this.selected.selected.templateData) !==\r\n        JSON.stringify(this.filters)\r\n    ) {\r\n      this.selected.selected = undefined;\r\n    }\r\n  }\r\n\r\n  writeValue(value: Filter): void {\r\n    this.filters = value;\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  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n\r\n  saveSettings(input: HTMLInputElement) {\r\n    const name = input.value;\r\n    if (name && name !== '' && this.filters) {\r\n      if (!keys(this.settings || {}).find((key) => key === name)) {\r\n        this.settings = {\r\n          ...(this.settings || {}),\r\n          [name]: cloneDeep(this.filters),\r\n        };\r\n      } else {\r\n        if (this.settings) {\r\n          this.settings[name] = cloneDeep(this.filters);\r\n        }\r\n      }\r\n      this.updateSettingsItems();\r\n      this.settingsChanged.emit(this.settings);\r\n      setTimeout(() => {\r\n        if (this.selected) {\r\n          this.selected.selected = this.selected.items.find(\r\n            (item) => item.id === name\r\n          );\r\n        }\r\n      });\r\n    } else {\r\n      this.errors.settingsName = {\r\n        settingsNameError: !name || name === '',\r\n      };\r\n      input.classList.add('ng-touched');\r\n    }\r\n  }\r\n\r\n  check() {\r\n    const value = this.settingsName?.nativeElement.value;\r\n    const err = !value || value === '';\r\n    this.errors.settingsName =\r\n      (err && {\r\n        settingsNameError: !value || value === '',\r\n      }) ||\r\n      null;\r\n  }\r\n\r\n  onChanged() {\r\n    this.checkSettingSelection();\r\n    this.changed.emit(this.filters);\r\n\r\n    this.filterInput();\r\n  }\r\n\r\n  protected setSettings(item: DropdownSelectItem<Filter>) {\r\n    if (item.templateData) {\r\n      this.filters = cloneDeep(item.templateData);\r\n      if (this.settingsName) {\r\n        this.settingsName.nativeElement.value = item.id.toString();\r\n      }\r\n\r\n      this.changed.emit(this.filters);\r\n    }\r\n  }\r\n\r\n  protected removeSettings(name?: string | number) {\r\n    if (name && this.settings?.[name]) {\r\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\r\n      delete this.settings[name];\r\n      this.updateSettingsItems();\r\n      this.settingsChanged.emit(this.settings);\r\n    }\r\n  }\r\n\r\n  protected filterInput() {\r\n    const input = this.input();\r\n    if (input) {\r\n      const filtered = this.filters\r\n        ? this.filtersService.filter(input, this.filters)\r\n        : input;\r\n      this.output.emit(filtered);\r\n    }\r\n  }\r\n\r\n  protected updateSettingsItems() {\r\n    this.settingsItems = keysValues(this.settings || {}).map(\r\n      ([key, value]) => ({\r\n        id: key,\r\n        text: key,\r\n        templateData: value,\r\n      })\r\n    );\r\n    this.filterInput();\r\n  }\r\n}\r\n","<button\r\n  oblButton\r\n  icon=\"filter\"\r\n  cdkOverlayOrigin\r\n  [disabled]=\"disabled\"\r\n  oblBadge\r\n  [show]=\"!!filters?.filters?.length\"\r\n  #dropDown=\"cdkOverlayOrigin\"\r\n  (click)=\"toggle($event, false)\"\r\n  #parent\r\n></button>\r\n\r\n<ng-template\r\n  cdkConnectedOverlay\r\n  [cdkConnectedOverlayOrigin]=\"dropDown\"\r\n  [cdkConnectedOverlayOpen]=\"isOpen\"\r\n  [cdkConnectedOverlayOffsetX]=\"2\"\r\n  (overlayOutsideClick)=\"toggle($event)\"\r\n>\r\n  <div\r\n    class=\"dropdown-list\"\r\n    [style.min-width.px]=\"647\"\r\n    [style.max-width]=\"'100vw'\"\r\n    #list\r\n    cdkDrag\r\n  >\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 (filters) {\r\n      <div class=\"list\">\r\n        @if (settings) {\r\n          <div class=\"row\">\r\n            @if (settingsItems.length) {\r\n              <obl-dropdown-select\r\n                [label]=\"'Saved filters:' | oblTranslation : translations()\"\r\n                [labelAnimation]=\"labelAnimation\"\r\n                [items]=\"settingsItems\"\r\n                (changed)=\"setSettings($event)\"\r\n                #selectedSetting\r\n              >\r\n                @if (selectedSetting.selected) {\r\n                  <ng-container suffix>\r\n                    <button\r\n                      oblButton\r\n                      icon=\"subtract\"\r\n                      (click)=\"removeSettings(selectedSetting?.selected?.id)\"\r\n                    ></button>\r\n                  </ng-container>\r\n                }\r\n              </obl-dropdown-select>\r\n            }\r\n            <obl-input-wrapper\r\n              [label]=\"'Setting name:' | oblTranslation : translations()\"\r\n              [labelAnimation]=\"labelAnimation\"\r\n              [errors]=\"errors['settingsName']\"\r\n              [translations]=\"translations()\"\r\n            >\r\n              <input\r\n                oblInput\r\n                type=\"text\"\r\n                [required]=\"errors['settingsName']\"\r\n                (change)=\"check()\"\r\n                #settingsName\r\n              />\r\n              <button\r\n                suffix\r\n                oblButton\r\n                icon=\"save\"\r\n                (click)=\"saveSettings(settingsName)\"\r\n              ></button>\r\n            </obl-input-wrapper>\r\n          </div>\r\n        }\r\n        <obl-filter\r\n          [filter]=\"filters\"\r\n          [labelAnimation]=\"labelAnimation\"\r\n          [names]=\"names()\"\r\n          [haveParent]=\"false\"\r\n          [translations]=\"translations()\"\r\n          [suffix]=\"suffix()\"\r\n          [filtersType]=\"filtersType()\"\r\n          (changed)=\"onChanged()\"\r\n        ></obl-filter>\r\n      </div>\r\n    }\r\n  </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DropdownSelectModule } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { InputModule } from '@obliczeniowo/elementary/input';\r\n\r\nimport { FiltersComponent } from './components/filters/filters.component';\r\nimport { FilterComponent } from './components/filter/filter.component';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\nimport { SwitcherModule } from '@obliczeniowo/elementary/switcher';\r\nimport { TextPipesModule } from '@obliczeniowo/elementary/text-pipes';\r\nimport { BadgeDirective } from '@obliczeniowo/elementary/badge';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    FiltersComponent,\r\n    FilterComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    DropdownSelectModule,\r\n    InputModule,\r\n    ButtonsModule,\r\n    SwitcherModule,\r\n    OverlayModule,\r\n    DragDropModule,\r\n    TextPipesModule,\r\n    BadgeDirective\r\n  ],\r\n  exports: [\r\n    FiltersComponent\r\n  ]\r\n})\r\nexport class FiltersModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1.FiltersService","i5","i6","i8.FilterComponent","i9"],"mappings":"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"}