{"version":3,"file":"samotics-ngx-treeview.mjs","sources":["../../../projects/ngx-treeview/src/lib/directives/dropdown.directive.ts","../../../projects/ngx-treeview/src/lib/directives/dropdown-menu.directive.ts","../../../projects/ngx-treeview/src/lib/directives/dropdown-toggle.directive.ts","../../../projects/ngx-treeview/src/lib/helpers/treeview-helper.ts","../../../projects/ngx-treeview/src/lib/models/treeview-item.ts","../../../projects/ngx-treeview/src/lib/models/treeview-i18n.ts","../../../projects/ngx-treeview/src/lib/models/treeview-config.ts","../../../projects/ngx-treeview/src/lib/helpers/treeview-event-parser.ts","../../../projects/ngx-treeview/src/lib/components/treeview-item/treeview-item.component.ts","../../../projects/ngx-treeview/src/lib/components/treeview-item/treeview-item.component.html","../../../projects/ngx-treeview/src/lib/components/treeview/treeview.component.ts","../../../projects/ngx-treeview/src/lib/components/treeview/treeview.component.html","../../../projects/ngx-treeview/src/lib/components/dropdown-treeview/dropdown-treeview.component.ts","../../../projects/ngx-treeview/src/lib/components/dropdown-treeview/dropdown-treeview.component.html","../../../projects/ngx-treeview/src/lib/pipes/treeview.pipe.ts","../../../projects/ngx-treeview/src/lib/treeview.module.ts","../../../projects/ngx-treeview/src/public-api.ts","../../../projects/ngx-treeview/src/samotics-ngx-treeview.ts"],"sourcesContent":["import { Directive, Input, Output, HostBinding, HostListener, EventEmitter } from '@angular/core';\nimport { isNil } from 'lodash';\n\n@Directive({\n  selector: '[ngxDropdown]',\n  exportAs: 'ngxDropdown'\n})\nexport class DropdownDirective {\n  toggleElement: any;\n  @Input('open') internalOpen = false;\n  @Output() openChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.show') get isOpen(): boolean {\n    return this.internalOpen;\n  }\n\n  @HostListener('keyup.esc')\n  onKeyupEsc(): void {\n    this.close();\n  }\n\n  @HostListener('document:click', ['$event'])\n  onDocumentClick(event: MouseEvent): void {\n    if (event.button !== 2 && !this.isEventFromToggle(event)) {\n      this.close();\n    }\n  }\n\n  open(): void {\n    if (!this.internalOpen) {\n      this.internalOpen = true;\n      this.openChange.emit(true);\n    }\n  }\n\n  close(): void {\n    if (this.internalOpen) {\n      this.internalOpen = false;\n      this.openChange.emit(false);\n    }\n  }\n\n  toggle(): void {\n    if (this.isOpen) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  private isEventFromToggle(event: MouseEvent): boolean {\n    return !isNil(this.toggleElement) && this.toggleElement.contains(event.target);\n  }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { DropdownDirective } from './dropdown.directive';\n\n@Directive({\n  selector: '[ngxDropdownMenu]',\n  host: {\n    '[class.dropdown-menu]': 'true',\n    '[class.show]': 'dropdown.isOpen'\n  }\n})\nexport class DropdownMenuDirective {\n  constructor(\n    public dropdown: DropdownDirective\n  ) { }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { DropdownDirective } from './dropdown.directive';\n\n@Directive({\n  selector: '[ngxDropdownToggle]',\n  host: {\n    class: 'dropdown-toggle',\n    'aria-haspopup': 'true',\n    '[attr.aria-expanded]': 'dropdown.isOpen',\n    '(click)': 'dropdown.toggle()'\n  }\n})\nexport class DropdownToggleDirective {\n  constructor(\n    public dropdown: DropdownDirective,\n    elementRef: ElementRef\n  ) {\n    dropdown.toggleElement = elementRef.nativeElement;\n  }\n}\n","import { concat, isNil, pull } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\n\nexport const TreeviewHelper = {\n  findItem,\n  findItemInList,\n  findParent,\n  removeItem,\n  concatSelection\n};\n\nfunction findItem(root: TreeviewItem, value: any): TreeviewItem {\n  if (isNil(root)) {\n    return undefined;\n  }\n\n  if (root.value === value) {\n    return root;\n  }\n\n  if (root.children) {\n    for (const child of root.children) {\n      const foundItem = findItem(child, value);\n      if (foundItem) {\n        return foundItem;\n      }\n    }\n  }\n\n  return undefined;\n}\n\nfunction findItemInList(list: TreeviewItem[], value: any): TreeviewItem {\n  if (isNil(list)) {\n    return undefined;\n  }\n\n  for (const item of list) {\n    const foundItem = findItem(item, value);\n    if (foundItem) {\n      return foundItem;\n    }\n  }\n\n  return undefined;\n}\n\nfunction findParent(root: TreeviewItem, item: TreeviewItem): TreeviewItem {\n  if (isNil(root) || isNil(root.children)) {\n    return undefined;\n  }\n\n  for (const child of root.children) {\n    if (child === item) {\n      return root;\n    } else {\n      const parent = findParent(child, item);\n      if (parent) {\n        return parent;\n      }\n    }\n  }\n\n  return undefined;\n}\n\nfunction removeItem(root: TreeviewItem, item: TreeviewItem): boolean {\n  const parent = findParent(root, item);\n  if (parent) {\n    pull(parent.children, item);\n    if (parent.children.length === 0) {\n      parent.children = undefined;\n    } else {\n      parent.correctChecked();\n    }\n    return true;\n  }\n\n  return false;\n}\n\nfunction concatSelection(items: TreeviewItem[], checked: TreeviewItem[], unchecked: TreeviewItem[]): { [k: string]: TreeviewItem[] } {\n  let checkedItems = [...checked];\n  let uncheckedItems = [...unchecked];\n  for (const item of items) {\n    const selection = item.getSelection();\n    checkedItems = concat(checkedItems, selection.checkedItems);\n    uncheckedItems = concat(uncheckedItems, selection.uncheckedItems);\n  }\n  return {\n    checked: checkedItems,\n    unchecked: uncheckedItems\n  };\n}\n","import { isBoolean, isNil, isString } from 'lodash';\nimport { TreeviewHelper } from '../helpers/treeview-helper';\n\nexport interface TreeviewSelection {\n  checkedItems: TreeviewItem[];\n  uncheckedItems: TreeviewItem[];\n}\n\nexport interface TreeItem {\n  text: string;\n  value: any;\n  disabled?: boolean;\n  checked?: boolean;\n  collapsed?: boolean;\n  children?: TreeItem[];\n}\n\nexport class TreeviewItem {\n  private internalDisabled = false;\n  private internalChecked = true;\n  private internalCollapsed = false;\n  private internalChildren: TreeviewItem[];\n  text: string;\n  value: any;\n\n  constructor(item: TreeItem, autoCorrectChecked = false) {\n    if (isNil(item)) {\n      throw new Error('Item must be defined');\n    }\n    if (isString(item.text)) {\n      this.text = item.text;\n    } else {\n      throw new Error('A text of item must be string object');\n    }\n    this.value = item.value;\n    if (isBoolean(item.checked)) {\n      this.checked = item.checked;\n    }\n    if (isBoolean(item.collapsed)) {\n      this.collapsed = item.collapsed;\n    }\n    if (isBoolean(item.disabled)) {\n      this.disabled = item.disabled;\n    }\n    if (!isNil(item.children) && item.children.length > 0) {\n      this.children = item.children.map(child => {\n        if (this.disabled === true) {\n          child.disabled = true;\n        }\n\n        return new TreeviewItem(child);\n      });\n    }\n\n    if (autoCorrectChecked) {\n      this.correctChecked();\n    }\n  }\n\n  get checked(): boolean {\n    return this.internalChecked;\n  }\n\n  set checked(value: boolean) {\n    if (!this.internalDisabled) {\n      if (this.internalChecked !== value) {\n        this.internalChecked = value;\n      }\n    }\n  }\n\n  get indeterminate(): boolean {\n    return this.checked === undefined;\n  }\n\n  setCheckedRecursive(value: boolean): void {\n    if (!this.internalDisabled) {\n      this.internalChecked = value;\n      if (!isNil(this.internalChildren)) {\n        this.internalChildren.forEach(child => child.setCheckedRecursive(value));\n      }\n    }\n  }\n\n  get disabled(): boolean {\n    return this.internalDisabled;\n  }\n\n  set disabled(value: boolean) {\n    if (this.internalDisabled !== value) {\n      this.internalDisabled = value;\n      if (!isNil(this.internalChildren)) {\n        this.internalChildren.forEach(child => child.disabled = value);\n      }\n    }\n  }\n\n  get collapsed(): boolean {\n    return this.internalCollapsed;\n  }\n\n  set collapsed(value: boolean) {\n    if (this.internalCollapsed !== value) {\n      this.internalCollapsed = value;\n    }\n  }\n\n  setCollapsedRecursive(value: boolean): void {\n    this.internalCollapsed = value;\n    if (!isNil(this.internalChildren)) {\n      this.internalChildren.forEach(child => child.setCollapsedRecursive(value));\n    }\n  }\n\n  get children(): TreeviewItem[] {\n    return this.internalChildren;\n  }\n\n  set children(value: TreeviewItem[]) {\n    if (this.internalChildren !== value) {\n      if (!isNil(value) && value.length === 0) {\n        throw new Error('Children must be not an empty array');\n      }\n      this.internalChildren = value;\n      if (!isNil(this.internalChildren)) {\n        let checked = null;\n        this.internalChildren.forEach(child => {\n          if (checked === null) {\n            checked = child.checked;\n          } else {\n            if (child.checked !== checked) {\n              checked = undefined;\n              return;\n            }\n          }\n        });\n        this.internalChecked = checked;\n      }\n    }\n  }\n\n  getSelection(): TreeviewSelection {\n    let checkedItems: TreeviewItem[] = [];\n    let uncheckedItems: TreeviewItem[] = [];\n    if (isNil(this.internalChildren)) {\n      if (this.internalChecked) {\n        checkedItems.push(this);\n      } else {\n        uncheckedItems.push(this);\n      }\n    } else {\n      const selection = TreeviewHelper.concatSelection(this.internalChildren, checkedItems, uncheckedItems);\n      checkedItems = selection.checked;\n      uncheckedItems = selection.unchecked;\n    }\n\n    return {\n      checkedItems,\n      uncheckedItems\n    };\n  }\n\n  correctChecked(): void {\n    this.internalChecked = this.getCorrectChecked();\n  }\n\n  private getCorrectChecked(): boolean {\n    let checked: boolean = null;\n    if (!isNil(this.internalChildren)) {\n      for (const child of this.internalChildren) {\n        child.internalChecked = child.getCorrectChecked();\n        if (checked === null) {\n          checked = child.internalChecked;\n        } else if (checked !== child.internalChecked) {\n          checked = undefined;\n          break;\n        }\n      }\n    } else {\n      checked = this.checked;\n    }\n\n    return checked;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { TreeviewSelection } from './treeview-item';\n\n@Injectable()\nexport abstract class TreeviewI18n {\n  abstract getText(selection: TreeviewSelection): string;\n  abstract getAllCheckboxText(): string;\n  abstract getFilterPlaceholder(): string;\n  abstract getFilterNoItemsFoundText(): string;\n  abstract getTooltipCollapseExpandText(isCollapse: boolean): string;\n}\n\n@Injectable()\nexport class DefaultTreeviewI18n extends TreeviewI18n {\n  getText(selection: TreeviewSelection): string {\n    if (selection.uncheckedItems.length === 0) {\n      if (selection.checkedItems.length > 0) {\n        return this.getAllCheckboxText();\n      } else {\n        return '';\n      }\n    }\n\n    switch (selection.checkedItems.length) {\n      case 0:\n        return 'Select options';\n      case 1:\n        return selection.checkedItems[0].text;\n      default:\n        return `${selection.checkedItems.length} options selected`;\n    }\n  }\n\n  getAllCheckboxText(): string {\n    return 'All';\n  }\n\n  getFilterPlaceholder(): string {\n    return 'Filter';\n  }\n\n  getFilterNoItemsFoundText(): string {\n    return 'No items found';\n  }\n\n  getTooltipCollapseExpandText(isCollapse: boolean): string {\n    return isCollapse ? 'Expand' : 'Collapse';\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class TreeviewConfig {\n  hasAllCheckBox = true;\n  hasFilter = false;\n  hasCollapseExpand = false;\n  decoupleChildFromParent = false;\n  maxHeight = 500;\n\n  get hasDivider(): boolean {\n    return this.hasFilter || this.hasAllCheckBox || this.hasCollapseExpand;\n  }\n\n  public static create(fields?: {\n    hasAllCheckBox?: boolean,\n    hasFilter?: boolean,\n    hasCollapseExpand?: boolean,\n    decoupleChildFromParent?: boolean\n    maxHeight?: number,\n  }): TreeviewConfig {\n    const config = new TreeviewConfig();\n    Object.assign(config, fields);\n    return config;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\nimport { TreeviewComponent } from '../components/treeview/treeview.component';\n\n@Injectable()\nexport abstract class TreeviewEventParser {\n  abstract getSelectedChange(component: TreeviewComponent): any[];\n}\n\n@Injectable()\nexport class DefaultTreeviewEventParser extends TreeviewEventParser {\n  getSelectedChange(component: TreeviewComponent): any[] {\n    const checkedItems = component.selection.checkedItems;\n    if (!isNil(checkedItems)) {\n      return checkedItems.map(item => item.value);\n    }\n\n    return [];\n  }\n}\n\nexport interface DownlineTreeviewItem {\n  item: TreeviewItem;\n  parent: DownlineTreeviewItem;\n}\n\n@Injectable()\nexport class DownlineTreeviewEventParser extends TreeviewEventParser {\n  getSelectedChange(component: TreeviewComponent): any[] {\n    const items = component.items;\n    if (!isNil(items)) {\n      let result: DownlineTreeviewItem[] = [];\n      items.forEach(item => {\n        const links = this.getLinks(item, null);\n        if (!isNil(links)) {\n          result = result.concat(links);\n        }\n      });\n\n      return result;\n    }\n\n    return [];\n  }\n\n  private getLinks(item: TreeviewItem, parent: DownlineTreeviewItem): DownlineTreeviewItem[] {\n    if (!isNil(item.children)) {\n      const link = {\n        item,\n        parent\n      };\n      let result: DownlineTreeviewItem[] = [];\n      item.children.forEach(child => {\n        const links = this.getLinks(child, link);\n        if (!isNil(links)) {\n          result = result.concat(links);\n        }\n      });\n\n      return result;\n    }\n\n    if (item.checked) {\n      return [{\n        item,\n        parent\n      }];\n    }\n\n    return null;\n  }\n}\n\n@Injectable()\nexport class OrderDownlineTreeviewEventParser extends TreeviewEventParser {\n  private currentDownlines: DownlineTreeviewItem[] = [];\n  private parser = new DownlineTreeviewEventParser();\n\n  getSelectedChange(component: TreeviewComponent): any[] {\n    const newDownlines: DownlineTreeviewItem[] = this.parser.getSelectedChange(component);\n    if (this.currentDownlines.length === 0) {\n      this.currentDownlines = newDownlines;\n    } else {\n      const intersectDownlines: DownlineTreeviewItem[] = [];\n      this.currentDownlines.forEach(downline => {\n        let foundIndex = -1;\n        const length = newDownlines.length;\n        for (let i = 0; i < length; i++) {\n          if (downline.item.value === newDownlines[i].item.value) {\n            foundIndex = i;\n            break;\n          }\n        }\n\n        if (foundIndex !== -1) {\n          intersectDownlines.push(newDownlines[foundIndex]);\n          newDownlines.splice(foundIndex, 1);\n        }\n      });\n\n      this.currentDownlines = intersectDownlines.concat(newDownlines);\n    }\n\n    return this.currentDownlines;\n  }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\n\n@Component({\n  selector: 'ngx-treeview-item',\n  templateUrl: './treeview-item.component.html',\n  styleUrls: ['./treeview-item.component.scss']\n})\nexport class TreeviewItemComponent {\n  @Input() config: TreeviewConfig;\n  @Input() template: TemplateRef<TreeviewItemTemplateContext>;\n  @Input() item: TreeviewItem;\n  @Output() checkedChange = new EventEmitter<boolean>();\n\n  constructor(\n    private defaultConfig: TreeviewConfig\n  ) {\n    this.config = this.defaultConfig;\n  }\n\n  onCollapseExpand = () => {\n    this.item.collapsed = !this.item.collapsed;\n  }\n\n  onCheckedChange = () => {\n    const checked = this.item.checked;\n    if (!isNil(this.item.children) && !this.config.decoupleChildFromParent) {\n      this.item.children.forEach(child => child.setCheckedRecursive(checked));\n    }\n    this.checkedChange.emit(checked);\n  }\n\n  onChildCheckedChange(child: TreeviewItem, checked: boolean): void {\n    if (!this.config.decoupleChildFromParent) {\n      let itemChecked: boolean = null;\n      for (const childItem of this.item.children) {\n        if (itemChecked === null) {\n          itemChecked = childItem.checked;\n        } else if (itemChecked !== childItem.checked) {\n          itemChecked = undefined;\n          break;\n        }\n      }\n\n      if (itemChecked === null) {\n        itemChecked = false;\n      }\n\n      if (this.item.checked !== itemChecked) {\n        this.item.checked = itemChecked;\n      }\n\n    }\n\n    this.checkedChange.emit(checked);\n  }\n}\n","<div *ngIf=\"item\" class=\"treeview-item\">\n  <ng-template [ngTemplateOutlet]=\"template\"\n    [ngTemplateOutletContext]=\"{item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange}\">\n  </ng-template>\n  <div *ngIf=\"!item.collapsed\">\n    <ngx-treeview-item [config]=\"config\" *ngFor=\"let child of item.children\" [item]=\"child\" [template]=\"template\"\n      (checkedChange)=\"onChildCheckedChange(child, $event)\">\n    </ngx-treeview-item>\n  </div>\n</div>\n","import { Component, Input, Output, EventEmitter, SimpleChanges, OnChanges, TemplateRef, OnInit } from '@angular/core';\nimport { isNil, includes } from 'lodash';\nimport { TreeviewI18n } from '../../models/treeview-i18n';\nimport { TreeviewItem, TreeviewSelection } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewHeaderTemplateContext } from '../../models/treeview-header-template-context';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\nimport { TreeviewHelper } from '../../helpers/treeview-helper';\nimport { TreeviewEventParser } from '../../helpers/treeview-event-parser';\n\nclass FilterTreeviewItem extends TreeviewItem {\n  private readonly refItem: TreeviewItem;\n  constructor(item: TreeviewItem) {\n    super({\n      text: item.text,\n      value: item.value,\n      disabled: item.disabled,\n      checked: item.checked,\n      collapsed: item.collapsed,\n      children: item.children\n    });\n    this.refItem = item;\n  }\n\n  updateRefChecked(): void {\n    this.children.forEach(child => {\n      if (child instanceof FilterTreeviewItem) {\n        child.updateRefChecked();\n      }\n    });\n\n    let refChecked = this.checked;\n    if (refChecked) {\n      for (const refChild of this.refItem.children) {\n        if (!refChild.checked) {\n          refChecked = false;\n          break;\n        }\n      }\n    }\n    this.refItem.checked = refChecked;\n  }\n}\n\n@Component({\n  selector: 'ngx-treeview',\n  templateUrl: './treeview.component.html',\n  styleUrls: ['./treeview.component.scss']\n})\nexport class TreeviewComponent implements OnChanges, OnInit {\n  @Input() headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;\n  @Input() itemTemplate: TemplateRef<TreeviewItemTemplateContext>;\n  @Input() items: TreeviewItem[];\n  @Input() config: TreeviewConfig;\n  @Output() selectedChange = new EventEmitter<any[]>();\n  @Output() filterChange = new EventEmitter<string>();\n  headerTemplateContext: TreeviewHeaderTemplateContext;\n  allItem: TreeviewItem;\n  filterText = '';\n  filterItems: TreeviewItem[];\n  selection: TreeviewSelection;\n\n  constructor(\n    public i18n: TreeviewI18n,\n    private defaultConfig: TreeviewConfig,\n    private eventParser: TreeviewEventParser\n  ) {\n    this.config = this.defaultConfig;\n    this.allItem = new TreeviewItem({ text: 'All', value: undefined });\n  }\n\n  get hasFilterItems(): boolean {\n    return !isNil(this.filterItems) && this.filterItems.length > 0;\n  }\n\n  get maxHeight(): string {\n    return `${this.config.maxHeight}`;\n  }\n\n  ngOnInit(): void {\n    this.createHeaderTemplateContext();\n    this.generateSelection();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const itemsSimpleChange = changes.items;\n    if (!isNil(itemsSimpleChange) && !isNil(this.items)) {\n      this.updateFilterItems();\n      this.updateCollapsedOfAll();\n      this.raiseSelectedChange();\n    }\n  }\n\n  onAllCollapseExpand(): void {\n    this.allItem.collapsed = !this.allItem.collapsed;\n    this.filterItems.forEach(item => item.setCollapsedRecursive(this.allItem.collapsed));\n  }\n\n  onFilterTextChange(text: string): void {\n    this.filterText = text;\n    this.filterChange.emit(text);\n    this.updateFilterItems();\n  }\n\n  onAllCheckedChange(): void {\n    const checked = this.allItem.checked;\n    this.filterItems.forEach(item => {\n      item.setCheckedRecursive(checked);\n      if (item instanceof FilterTreeviewItem) {\n        item.updateRefChecked();\n      }\n    });\n\n    this.raiseSelectedChange();\n  }\n\n  onItemCheckedChange(item: TreeviewItem, checked: boolean): void {\n    if (item instanceof FilterTreeviewItem) {\n      item.updateRefChecked();\n    }\n\n    this.updateCheckedOfAll();\n    this.raiseSelectedChange();\n  }\n\n  raiseSelectedChange(): void {\n    this.generateSelection();\n    const values = this.eventParser.getSelectedChange(this);\n    setTimeout(() => {\n      this.selectedChange.emit(values);\n    });\n  }\n\n  private createHeaderTemplateContext(): void {\n    this.headerTemplateContext = {\n      config: this.config,\n      item: this.allItem,\n      onCheckedChange: () => this.onAllCheckedChange(),\n      onCollapseExpand: () => this.onAllCollapseExpand(),\n      onFilterTextChange: (text) => this.onFilterTextChange(text)\n    };\n  }\n\n  private generateSelection(): void {\n    let checkedItems: TreeviewItem[] = [];\n    let uncheckedItems: TreeviewItem[] = [];\n    if (!isNil(this.items)) {\n      const selection = TreeviewHelper.concatSelection(this.items, checkedItems, uncheckedItems);\n      checkedItems = selection.checked;\n      uncheckedItems = selection.unchecked;\n    }\n\n    this.selection = {\n      checkedItems,\n      uncheckedItems\n    };\n  }\n\n  private updateFilterItems(): void {\n    if (this.filterText !== '') {\n      const filterItems: TreeviewItem[] = [];\n      const filterText = this.filterText.toLowerCase();\n      this.items.forEach(item => {\n        const newItem = this.filterItem(item, filterText);\n        if (!isNil(newItem)) {\n          filterItems.push(newItem);\n        }\n      });\n      this.filterItems = filterItems;\n    } else {\n      this.filterItems = this.items;\n    }\n\n    this.updateCheckedOfAll();\n  }\n\n  private filterItem(item: TreeviewItem, filterText: string): TreeviewItem {\n    const isMatch = includes(item.text.toLowerCase(), filterText);\n    if (isMatch) {\n      return item;\n    } else {\n      if (!isNil(item.children)) {\n        const children: TreeviewItem[] = [];\n        item.children.forEach(child => {\n          const newChild = this.filterItem(child, filterText);\n          if (!isNil(newChild)) {\n            children.push(newChild);\n          }\n        });\n        if (children.length > 0) {\n          const newItem = new FilterTreeviewItem(item);\n          newItem.collapsed = false;\n          newItem.children = children;\n          return newItem;\n        }\n      }\n    }\n\n    return undefined;\n  }\n\n  private updateCheckedOfAll(): void {\n    let itemChecked: boolean = null;\n    for (const filterItem of this.filterItems) {\n      if (itemChecked === null) {\n        itemChecked = filterItem.checked;\n      } else if (itemChecked !== filterItem.checked) {\n        itemChecked = undefined;\n        break;\n      }\n    }\n\n    if (itemChecked === null) {\n      itemChecked = false;\n    }\n\n    this.allItem.checked = itemChecked;\n  }\n\n  private updateCollapsedOfAll(): void {\n    let hasItemExpanded = false;\n    for (const filterItem of this.filterItems) {\n      if (!filterItem.collapsed) {\n        hasItemExpanded = true;\n        break;\n      }\n    }\n\n    this.allItem.collapsed = !hasItemExpanded;\n  }\n}\n","<ng-template #defaultItemTemplate let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n  let-onCheckedChange=\"onCheckedChange\">\n  <div class=\"form-inline row-item\">\n    <i *ngIf=\"item.children\" (click)=\"onCollapseExpand()\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n      <svg *ngSwitchCase=\"true\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-right-fill\"\n        fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path\n          d=\"M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\" />\n      </svg>\n      <svg *ngSwitchCase=\"false\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-down-fill\"\n        fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path\n          d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n      </svg>\n    </i>\n    <div class=\"form-check\">\n      <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n        [disabled]=\"item.disabled\" [indeterminate]=\"item.indeterminate\" />\n      <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n        {{item.text}}\n      </label>\n    </div>\n  </div>\n</ng-template>\n<ng-template #defaultHeaderTemplate let-config=\"config\" let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n  let-onCheckedChange=\"onCheckedChange\" let-onFilterTextChange=\"onFilterTextChange\">\n  <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\n    <div class=\"col-12\">\n      <input class=\"form-control\" type=\"text\" [placeholder]=\"i18n.getFilterPlaceholder()\" [(ngModel)]=\"filterText\"\n        (ngModelChange)=\"onFilterTextChange($event)\" />\n    </div>\n  </div>\n  <div *ngIf=\"hasFilterItems\">\n    <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row row-all\">\n      <div class=\"col-12\">\n        <div class=\"form-check form-check-inline\" *ngIf=\"config.hasAllCheckBox\">\n          <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n            [indeterminate]=\"item.indeterminate\" />\n          <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n            {{i18n.getAllCheckboxText()}}\n          </label>\n        </div>\n        <label *ngIf=\"config.hasCollapseExpand\" class=\"float-right form-check-label\" (click)=\"onCollapseExpand()\">\n          <i [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n            <svg *ngSwitchCase=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-expand\"\n              fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path fill-rule=\"evenodd\"\n                d=\"M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n              <path fill-rule=\"evenodd\"\n                d=\"M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n              <path fill-rule=\"evenodd\"\n                d=\"M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z\" />\n            </svg>\n            <svg *ngSwitchCase=\"false\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-contract\"\n              fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path fill-rule=\"evenodd\"\n                d=\"M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n              <path fill-rule=\"evenodd\"\n                d=\"M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n              <path fill-rule=\"evenodd\"\n                d=\"M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z\" />\n            </svg>\n          </i>\n        </label>\n      </div>\n    </div>\n    <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\n  </div>\n</ng-template>\n<div class=\"treeview-header\">\n  <ng-template [ngTemplateOutlet]=\"headerTemplate || defaultHeaderTemplate\"\n    [ngTemplateOutletContext]=\"headerTemplateContext\">\n  </ng-template>\n</div>\n<div [ngSwitch]=\"hasFilterItems\">\n  <div *ngSwitchCase=\"true\" class=\"treeview-container\" [style.max-height.px]=\"maxHeight\">\n    <ngx-treeview-item *ngFor=\"let item of filterItems\" [config]=\"config\" [item]=\"item\"\n      [template]=\"itemTemplate || defaultItemTemplate\" (checkedChange)=\"onItemCheckedChange(item, $event)\">\n    </ngx-treeview-item>\n  </div>\n  <div *ngSwitchCase=\"false\" class=\"treeview-text\">\n    {{i18n.getFilterNoItemsFoundText()}}\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewChild, TemplateRef } from '@angular/core';\nimport { TreeviewI18n } from '../../models/treeview-i18n';\nimport { TreeviewItem } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewComponent } from '../treeview/treeview.component';\nimport { TreeviewHeaderTemplateContext } from '../../models/treeview-header-template-context';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\n\n@Component({\n  selector: 'ngx-dropdown-treeview',\n  templateUrl: './dropdown-treeview.component.html',\n  styleUrls: ['./dropdown-treeview.component.scss']\n})\nexport class DropdownTreeviewComponent {\n  @Input() buttonClass = 'btn-outline-secondary';\n  @Input() headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;\n  @Input() itemTemplate: TemplateRef<TreeviewItemTemplateContext>;\n  @Input() items: TreeviewItem[];\n  @Input() config: TreeviewConfig;\n  @Output() selectedChange = new EventEmitter<any[]>(true);\n  @Output() filterChange = new EventEmitter<string>();\n  @ViewChild(TreeviewComponent, { static: false }) treeviewComponent: TreeviewComponent;\n  buttonLabel: string;\n\n  constructor(\n    public i18n: TreeviewI18n,\n    private defaultConfig: TreeviewConfig\n  ) {\n    this.config = this.defaultConfig;\n  }\n\n  onSelectedChange(values: any[]): void {\n    this.buttonLabel = this.i18n.getText(this.treeviewComponent.selection);\n    this.selectedChange.emit(values);\n  }\n\n  onFilterChange(text: string): void {\n    this.filterChange.emit(text);\n  }\n}\n","<div class=\"dropdown\" ngxDropdown>\n  <button class=\"btn\" [ngClass]=\"buttonClass\" type=\"button\" role=\"button\" ngxDropdownToggle>\n    {{buttonLabel}}\n  </button>\n  <div ngxDropdownMenu aria-labelledby=\"dropdownMenu\" (click)=\"$event.stopPropagation()\">\n    <div class=\"dropdown-container\">\n      <ngx-treeview [config]=\"config\" [headerTemplate]=\"headerTemplate\" [items]=\"items\" [itemTemplate]=\"itemTemplate\"\n        (selectedChange)=\"onSelectedChange($event)\" (filterChange)=\"onFilterChange($event)\">\n      </ngx-treeview>\n    </div>\n  </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\n\n@Pipe({\n  name: 'ngxTreeview'\n})\nexport class TreeviewPipe implements PipeTransform {\n  transform(objects: any[], textField: string): TreeviewItem[] {\n    if (isNil(objects)) {\n      return undefined;\n    }\n\n    return objects.map(object => new TreeviewItem({ text: object[textField], value: object }));\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DropdownDirective } from './directives/dropdown.directive';\nimport { DropdownMenuDirective } from './directives/dropdown-menu.directive';\nimport { DropdownToggleDirective } from './directives/dropdown-toggle.directive';\nimport { DropdownTreeviewComponent } from './components/dropdown-treeview/dropdown-treeview.component';\nimport { TreeviewComponent } from './components/treeview/treeview.component';\nimport { TreeviewItemComponent } from './components/treeview-item/treeview-item.component';\nimport { TreeviewPipe } from './pipes/treeview.pipe';\nimport { TreeviewI18n, DefaultTreeviewI18n } from './models/treeview-i18n';\nimport { TreeviewConfig } from './models/treeview-config';\nimport { TreeviewEventParser, DefaultTreeviewEventParser } from './helpers/treeview-event-parser';\n\n@NgModule({\n  imports: [\n    FormsModule,\n    CommonModule\n  ],\n  declarations: [\n    TreeviewComponent,\n    TreeviewItemComponent,\n    TreeviewPipe,\n    DropdownDirective,\n    DropdownMenuDirective,\n    DropdownToggleDirective,\n    DropdownTreeviewComponent\n  ], exports: [\n    TreeviewComponent,\n    TreeviewPipe,\n    DropdownTreeviewComponent\n  ]\n})\nexport class TreeviewModule {\n  static forRoot(): ModuleWithProviders<TreeviewModule> {\n    return {\n      ngModule: TreeviewModule,\n      providers: [\n        TreeviewConfig,\n        { provide: TreeviewI18n, useClass: DefaultTreeviewI18n },\n        { provide: TreeviewEventParser, useClass: DefaultTreeviewEventParser }\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-treeview\n */\n\nexport * from './lib/treeview.module';\nexport * from './lib/components/treeview/treeview.component';\nexport * from './lib/components/dropdown-treeview/dropdown-treeview.component';\nexport * from './lib/pipes/treeview.pipe';\nexport * from './lib/directives/dropdown-toggle.directive';\nexport * from './lib/directives/dropdown.directive';\nexport * from './lib/models/treeview-item';\nexport * from './lib/models/treeview-config';\nexport * from './lib/models/treeview-i18n';\nexport * from './lib/models/treeview-item-template-context';\nexport * from './lib/helpers/treeview-event-parser';\nexport * from './lib/helpers/treeview-helper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DropdownDirective","i1.TreeviewConfig","i2","i1.TreeviewI18n","i2.TreeviewConfig","i3.TreeviewEventParser","i6.TreeviewItemComponent","i3","i4.TreeviewComponent","i5.DropdownDirective","i6.DropdownMenuDirective","i7.DropdownToggleDirective"],"mappings":"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"}