{"version":3,"file":"axulus-uikit-treeselect.mjs","sources":["../../src/app/components/treeselect/treeselect.ts","../../src/app/components/treeselect/axulus-uikit-treeselect.ts"],"sourcesContent":["import { AnimationEvent } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  NgModule,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OverlayOptions, OverlayService, PrimeNGConfig, PrimeTemplate, SharedModule, TreeNode } from '@axulus/uikit/api';\nimport { DomHandler } from '@axulus/uikit/dom';\nimport { Overlay, OverlayModule } from '@axulus/uikit/overlay';\nimport { RippleModule } from '@axulus/uikit/ripple';\nimport { Tree, TreeModule } from '@axulus/uikit/tree';\nimport { ObjectUtils } from '@axulus/uikit/utils';\n\nexport const TREESELECT_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => TreeSelect),\n  multi: true\n};\n\n@Component({\n  selector: 'p-treeSelect',\n  template: `\n    <div #container [ngClass]=\"containerClass()\" [class]=\"containerStyleClass\" [ngStyle]=\"containerStyle\" (click)=\"onClick($event)\">\n      <div class=\"p-hidden-accessible\">\n        <input\n          #focusInput\n          type=\"text\"\n          role=\"listbox\"\n          [attr.id]=\"inputId\"\n          readonly\n          [disabled]=\"disabled\"\n          (focus)=\"onFocus()\"\n          (blur)=\"onBlur()\"\n          (keydown)=\"onKeyDown($event)\"\n          [attr.tabindex]=\"tabindex\"\n          aria-haspopup=\"true\"\n          [attr.aria-expanded]=\"overlayVisible\"\n          [attr.aria-labelledby]=\"ariaLabelledBy\"\n        />\n      </div>\n      <div class=\"p-treeselect-label-container\">\n        <div [ngClass]=\"labelClass()\" [class]=\"labelStyleClass\" [ngStyle]=\"labelStyle\">\n          <ng-container *ngIf=\"valueTemplate; else defaultValueTemplate\">\n            <ng-container *ngTemplateOutlet=\"valueTemplate; context: { $implicit: value, placeholder: placeholder }\"></ng-container>\n          </ng-container>\n          <ng-template #defaultValueTemplate>\n            <ng-container *ngIf=\"display === 'comma'; else chipsValueTemplate\">\n              {{ label || 'empty' }}\n            </ng-container>\n            <ng-template #chipsValueTemplate>\n              <div *ngFor=\"let node of value\" class=\"p-treeselect-token\">\n                <span class=\"p-treeselect-token-label\">{{ node.label }}</span>\n              </div>\n              <ng-container *ngIf=\"emptyValue\">{{ placeholder || 'empty' }}</ng-container>\n            </ng-template>\n          </ng-template>\n        </div>\n        <i *ngIf=\"checkValue() && !disabled && showClear\" class=\"p-treeselect-clear-icon pi pi-times\" (click)=\"clear($event)\"></i>\n      </div>\n      <div class=\"p-treeselect-trigger\">\n        <span class=\"p-treeselect-trigger-icon pi pi-chevron-down\"></span>\n      </div>\n      <p-overlay\n        #overlay\n        [(visible)]=\"overlayVisible\"\n        [options]=\"overlayOptions\"\n        [target]=\"'@parent'\"\n        [appendTo]=\"appendTo\"\n        [showTransitionOptions]=\"showTransitionOptions\"\n        [hideTransitionOptions]=\"hideTransitionOptions\"\n        (onAnimationStart)=\"onOverlayAnimationStart($event)\"\n        (onShow)=\"onShow.emit($event)\"\n        (onHide)=\"hide($event)\"\n      >\n        <ng-template pTemplate=\"content\">\n          <div #panel class=\"p-treeselect-panel p-component\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\" [ngClass]=\"panelClass\">\n            <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: value, options: options }\"></ng-container>\n            <div class=\"p-treeselect-header\" *ngIf=\"filter\">\n              <div class=\"p-treeselect-filter-container\">\n                <input\n                  #filter\n                  type=\"text\"\n                  autocomplete=\"off\"\n                  class=\"p-treeselect-filter p-inputtext p-component\"\n                  [attr.placeholder]=\"filterPlaceholder\"\n                  (keydown.enter)=\"$event.preventDefault()\"\n                  (input)=\"onFilterInput($event)\"\n                  [value]=\"filterValue\"\n                />\n                <span class=\"p-treeselect-filter-icon pi pi-search\"></span>\n              </div>\n              <button class=\"p-treeselect-close p-link\" (click)=\"hide()\">\n                <span class=\"p-treeselect-filter-icon pi pi-times\"></span>\n              </button>\n            </div>\n            <div class=\"p-treeselect-items-wrapper\" [ngStyle]=\"{ 'max-height': scrollHeight }\">\n              <p-tree\n                #tree\n                [value]=\"options\"\n                [propagateSelectionDown]=\"propagateSelectionDown\"\n                [propagateSelectionUp]=\"propagateSelectionUp\"\n                [selectionMode]=\"selectionMode\"\n                (selectionChange)=\"onSelectionChange($event)\"\n                [selection]=\"value\"\n                [metaKeySelection]=\"metaKeySelection\"\n                (onNodeExpand)=\"nodeExpand($event)\"\n                (onNodeCollapse)=\"nodeCollapse($event)\"\n                (onNodeSelect)=\"onSelect($event)\"\n                [emptyMessage]=\"emptyMessage\"\n                (onNodeUnselect)=\"onUnselect($event)\"\n                [filterBy]=\"filterBy\"\n                [filterMode]=\"filterMode\"\n                [filterPlaceholder]=\"filterPlaceholder\"\n                [filterLocale]=\"filterLocale\"\n                [filteredNodes]=\"filteredNodes\"\n                [_templateMap]=\"templateMap\"\n              >\n                <ng-container *ngIf=\"emptyTemplate\">\n                  <ng-template pTemplate=\"empty\">\n                    <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                  </ng-template>\n                </ng-container>\n              </p-tree>\n            </div>\n            <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: value, options: options }\"></ng-container>\n          </div>\n        </ng-template>\n      </p-overlay>\n    </div>\n  `,\n  styleUrls: ['./treeselect.css'],\n  host: {\n    class: 'p-element p-inputwrapper',\n    '[class.p-inputwrapper-filled]': '!emptyValue',\n    '[class.p-inputwrapper-focus]': 'focused || overlayVisible',\n    '[class.p-treeselect-clearable]': 'showClear && !disabled'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [TREESELECT_VALUE_ACCESSOR],\n  encapsulation: ViewEncapsulation.None\n})\nexport class TreeSelect implements AfterContentInit {\n  @Input() type: string = 'button';\n\n  @Input() inputId: string;\n\n  @Input() scrollHeight: string = '400px';\n\n  @Input() disabled: boolean;\n\n  @Input() metaKeySelection: boolean = true;\n\n  @Input() display: string = 'comma';\n\n  @Input() selectionMode: string = 'single';\n\n  @Input() tabindex: string;\n\n  @Input() ariaLabelledBy: string;\n\n  @Input() placeholder: string;\n\n  @Input() panelClass: string;\n\n  @Input() panelStyle: any;\n\n  @Input() panelStyleClass: string;\n\n  @Input() containerStyle: object;\n\n  @Input() containerStyleClass: string;\n\n  @Input() labelStyle: object;\n\n  @Input() labelStyleClass: string;\n\n  @Input() overlayOptions: OverlayOptions;\n\n  @Input() emptyMessage: string = '';\n\n  @Input() appendTo: any;\n\n  @Input() filter: boolean = false;\n\n  @Input() filterBy: string = 'label';\n\n  @Input() filterMode: string = 'lenient';\n\n  @Input() filterPlaceholder: string;\n\n  @Input() filterLocale: string;\n\n  @Input() filterInputAutoFocus: boolean = true;\n\n  @Input() propagateSelectionDown: boolean = true;\n\n  @Input() propagateSelectionUp: boolean = true;\n\n  @Input() showClear: boolean = false;\n\n  @Input() resetFilterOnHide: boolean = true;\n\n  @Input() get options(): any[] {\n    return this._options;\n  }\n  set options(options) {\n    this._options = options;\n    this.updateTreeState();\n  }\n\n  @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n  @ViewChild('container') containerEl: ElementRef;\n\n  @ViewChild('focusInput') focusInput: ElementRef;\n\n  @ViewChild('filter') filterViewChild: ElementRef;\n\n  @ViewChild('tree') treeViewChild: Tree;\n\n  @ViewChild('panel') panelEl: ElementRef;\n\n  @ViewChild('overlay') overlayViewChild: Overlay;\n\n  @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n  @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n  @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n  @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n  @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n  @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n  @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n  @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n  /* @deprecated */\n  _showTransitionOptions: string;\n  @Input() get showTransitionOptions(): string {\n    return this._showTransitionOptions;\n  }\n  set showTransitionOptions(val: string) {\n    this._showTransitionOptions = val;\n    console.warn('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n  }\n\n  /* @deprecated */\n  _hideTransitionOptions: string;\n  @Input() get hideTransitionOptions(): string {\n    return this._hideTransitionOptions;\n  }\n  set hideTransitionOptions(val: string) {\n    this._hideTransitionOptions = val;\n    console.warn('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n  }\n\n  public filteredNodes: TreeNode[];\n\n  filterValue: string = null;\n\n  serializedValue: any[];\n\n  valueTemplate: TemplateRef<any>;\n\n  headerTemplate: TemplateRef<any>;\n\n  emptyTemplate: TemplateRef<any>;\n\n  footerTemplate: TemplateRef<any>;\n\n  focused: boolean;\n\n  overlayVisible: boolean;\n\n  selfChange: boolean;\n\n  value;\n\n  expandedNodes: any[] = [];\n\n  _options: any[];\n\n  public templateMap: any;\n\n  onModelChange: Function = () => {};\n\n  onModelTouched: Function = () => {};\n\n  constructor(public config: PrimeNGConfig, public cd: ChangeDetectorRef, public el: ElementRef, public overlayService: OverlayService) {}\n\n  ngOnInit() {\n    this.updateTreeState();\n  }\n\n  ngAfterContentInit() {\n    if (this.templates.length) {\n      this.templateMap = {};\n    }\n\n    this.templates.forEach((item) => {\n      switch (item.getType()) {\n        case 'value':\n          this.valueTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'empty':\n          this.emptyTemplate = item.template;\n          break;\n\n        case 'footer':\n          this.footerTemplate = item.template;\n          break;\n\n        default: //TODO: @deprecated Used \"value\" template instead\n          if (item.name) this.templateMap[item.name] = item.template;\n          else this.valueTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  onOverlayAnimationStart(event: AnimationEvent) {\n    switch (event.toState) {\n      case 'visible':\n        if (this.filter) {\n          ObjectUtils.isNotEmpty(this.filterValue) && this.treeViewChild?._filter(this.filterValue);\n          this.filterInputAutoFocus && this.filterViewChild.nativeElement.focus();\n        }\n\n        break;\n    }\n  }\n\n  onSelectionChange(event) {\n    this.value = event;\n    this.onModelChange(this.value);\n    this.cd.markForCheck();\n  }\n\n  onClick(event) {\n    if (this.disabled) {\n      return;\n    }\n\n    if (!this.overlayViewChild?.el?.nativeElement?.contains(event.target) && !DomHandler.hasClass(event.target, 'p-treeselect-close')) {\n      if (this.overlayVisible) {\n        this.hide();\n      } else {\n        this.show();\n      }\n\n      this.focusInput.nativeElement.focus();\n    }\n  }\n\n  onKeyDown(event) {\n    switch (event.which) {\n      //down\n      case 40:\n        if (!this.overlayVisible && event.altKey) {\n          this.show();\n          event.preventDefault();\n        } else if (this.overlayVisible && this.panelEl?.nativeElement) {\n          let focusableElements = DomHandler.getFocusableElements(this.panelEl.nativeElement);\n\n          if (focusableElements && focusableElements.length > 0) {\n            focusableElements[0].focus();\n          }\n\n          event.preventDefault();\n        }\n        break;\n\n      //space\n      case 32:\n        if (!this.overlayVisible) {\n          this.show();\n          event.preventDefault();\n        }\n        break;\n\n      //enter and escape\n      case 13:\n      case 27:\n        if (this.overlayVisible) {\n          this.hide();\n          event.preventDefault();\n        }\n        break;\n\n      //tab\n      case 9:\n        this.hide();\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  onFilterInput(event) {\n    this.filterValue = event.target.value;\n    this.treeViewChild?._filter(this.filterValue);\n    this.onFilter.emit({\n      originalEvent: event,\n      filteredValue: this.treeViewChild?.filteredNodes\n    });\n  }\n\n  show() {\n    this.overlayVisible = true;\n  }\n\n  hide(event?: any) {\n    this.overlayVisible = false;\n    this.resetFilter();\n\n    this.onHide.emit(event);\n    this.cd.markForCheck();\n  }\n\n  clear(event) {\n    this.value = null;\n    this.resetExpandedNodes();\n    this.resetPartialSelected();\n    this.onModelChange(this.value);\n    this.onClear.emit();\n\n    event.stopPropagation();\n  }\n\n  checkValue() {\n    return this.value !== null && ObjectUtils.isNotEmpty(this.value);\n  }\n\n  resetFilter() {\n    if (this.filter && !this.resetFilterOnHide) {\n      this.filteredNodes = this.treeViewChild?.filteredNodes;\n      this.treeViewChild?.resetFilter();\n    } else {\n      this.filterValue = null;\n    }\n  }\n\n  updateTreeState() {\n    if (this.value) {\n      let selectedNodes = this.selectionMode === 'single' ? [this.value] : [...this.value];\n      this.resetExpandedNodes();\n      this.resetPartialSelected();\n      if (selectedNodes && this.options) {\n        this.updateTreeBranchState(null, null, selectedNodes);\n      }\n    }\n  }\n\n  updateTreeBranchState(node, path, selectedNodes) {\n    if (node) {\n      if (this.isSelected(node)) {\n        this.expandPath(path);\n        selectedNodes.splice(selectedNodes.indexOf(node), 1);\n      }\n\n      if (selectedNodes.length > 0 && node.children) {\n        for (let childNode of node.children) {\n          this.updateTreeBranchState(childNode, [...path, node], selectedNodes);\n        }\n      }\n    } else {\n      for (let childNode of this.options) {\n        this.updateTreeBranchState(childNode, [], selectedNodes);\n      }\n    }\n  }\n\n  expandPath(expandedNodes) {\n    for (let node of expandedNodes) {\n      node.expanded = true;\n    }\n\n    this.expandedNodes = [...expandedNodes];\n  }\n\n  nodeExpand(event) {\n    this.onNodeExpand.emit(event);\n    this.expandedNodes.push(event.node);\n  }\n\n  nodeCollapse(event) {\n    this.onNodeCollapse.emit(event);\n    this.expandedNodes.splice(this.expandedNodes.indexOf(event.node), 1);\n  }\n\n  resetExpandedNodes() {\n    for (let node of this.expandedNodes) {\n      node.expanded = false;\n    }\n\n    this.expandedNodes = [];\n  }\n\n  resetPartialSelected(nodes = this.options): void {\n    if (!nodes) {\n      return;\n    }\n\n    for (let node of nodes) {\n      node.partialSelected = false;\n\n      if (node.children && node.children?.length > 0) {\n        this.resetPartialSelected(node.children);\n      }\n    }\n  }\n\n  findSelectedNodes(node, keys, selectedNodes) {\n    if (node) {\n      if (this.isSelected(node)) {\n        selectedNodes.push(node);\n        delete keys[node.key];\n      }\n\n      if (Object.keys(keys).length && node.children) {\n        for (let childNode of node.children) {\n          this.findSelectedNodes(childNode, keys, selectedNodes);\n        }\n      }\n    } else {\n      for (let childNode of this.options) {\n        this.findSelectedNodes(childNode, keys, selectedNodes);\n      }\n    }\n  }\n\n  isSelected(node: TreeNode) {\n    return this.findIndexInSelection(node) != -1;\n  }\n\n  findIndexInSelection(node: TreeNode) {\n    let index: number = -1;\n\n    if (this.value) {\n      if (this.selectionMode === 'single') {\n        let areNodesEqual = (this.value.key && this.value.key === node.key) || this.value == node;\n        index = areNodesEqual ? 0 : -1;\n      } else {\n        for (let i = 0; i < this.value.length; i++) {\n          let selectedNode = this.value[i];\n          let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n          if (areNodesEqual) {\n            index = i;\n            break;\n          }\n        }\n      }\n    }\n\n    return index;\n  }\n\n  onSelect(node) {\n    this.onNodeSelect.emit(node);\n\n    if (this.selectionMode === 'single') {\n      this.hide();\n    }\n  }\n\n  onUnselect(node) {\n    this.onNodeUnselect.emit(node);\n  }\n\n  onFocus() {\n    this.focused = true;\n  }\n\n  onBlur() {\n    this.focused = false;\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.updateTreeState();\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(val: boolean): void {\n    this.disabled = val;\n    this.cd.markForCheck();\n  }\n\n  containerClass() {\n    return {\n      'p-treeselect p-component p-inputwrapper': true,\n      'p-treeselect-chip': this.display === 'chip',\n      'p-disabled': this.disabled,\n      'p-focus': this.focused\n    };\n  }\n\n  labelClass() {\n    return {\n      'p-treeselect-label': true,\n      'p-placeholder': this.label === this.placeholder,\n      'p-treeselect-label-empty': !this.placeholder && this.emptyValue\n    };\n  }\n\n  get emptyValue() {\n    return !this.value || Object.keys(this.value).length === 0;\n  }\n\n  get emptyOptions() {\n    return !this.options || this.options.length === 0;\n  }\n\n  get label() {\n    let value = this.value || [];\n    return value.length\n      ? value.map((node) => node.label).join(', ')\n      : this.selectionMode === 'single' && this.value\n      ? value.label\n      : this.placeholder;\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, RippleModule, SharedModule, TreeModule],\n  exports: [TreeSelect, OverlayModule, SharedModule],\n  declarations: [TreeSelect]\n})\nexport class TreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}