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