{"version":3,"file":"axulus-uikit-orderlist.mjs","sources":["../../src/app/components/orderlist/orderlist.ts","../../src/app/components/orderlist/axulus-uikit-orderlist.ts"],"sourcesContent":["import { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgModule,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { FilterService, PrimeTemplate, SharedModule } from '@axulus/uikit/api';\nimport { ButtonModule } from '@axulus/uikit/button';\nimport { DomHandler } from '@axulus/uikit/dom';\nimport { RippleModule } from '@axulus/uikit/ripple';\nimport { ObjectUtils, UniqueComponentId } from '@axulus/uikit/utils';\n\nexport interface OrderListFilterOptions {\n  filter?: (value?: any) => void;\n  reset?: () => void;\n}\n@Component({\n  selector: 'p-orderList',\n  template: `\n    <div\n      [ngClass]=\"{\n        'p-orderlist p-component': true,\n        'p-orderlist-striped': stripedRows,\n        'p-orderlist-controls-left': controlsPosition === 'left',\n        'p-orderlist-controls-right': controlsPosition === 'right'\n      }\"\n      [ngStyle]=\"style\"\n      [class]=\"styleClass\"\n    >\n      <div class=\"p-orderlist-controls\">\n        <button type=\"button\" [disabled]=\"moveDisabled()\" pButton pRipple icon=\"pi pi-angle-up\" (click)=\"moveUp()\"></button>\n        <button type=\"button\" [disabled]=\"moveDisabled()\" pButton pRipple icon=\"pi pi-angle-double-up\" (click)=\"moveTop()\"></button>\n        <button type=\"button\" [disabled]=\"moveDisabled()\" pButton pRipple icon=\"pi pi-angle-down\" (click)=\"moveDown()\"></button>\n        <button type=\"button\" [disabled]=\"moveDisabled()\" pButton pRipple icon=\"pi pi-angle-double-down\" (click)=\"moveBottom()\"></button>\n      </div>\n      <div class=\"p-orderlist-list-container\">\n        <div class=\"p-orderlist-header\" *ngIf=\"header || headerTemplate\">\n          <div class=\"p-orderlist-title\" *ngIf=\"!headerTemplate\">{{ header }}</div>\n          <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n        </div>\n        <div class=\"p-orderlist-filter-container\" *ngIf=\"filterBy\">\n          <ng-container *ngIf=\"filterTemplate; else builtInFilterElement\">\n            <ng-container *ngTemplateOutlet=\"filterTemplate; context: { options: filterOptions }\"></ng-container>\n          </ng-container>\n          <ng-template #builtInFilterElement>\n            <div class=\"p-orderlist-filter\">\n              <input\n                #filter\n                type=\"text\"\n                role=\"textbox\"\n                (keyup)=\"onFilterKeyup($event)\"\n                [disabled]=\"disabled\"\n                class=\"p-orderlist-filter-input p-inputtext p-component\"\n                [attr.placeholder]=\"filterPlaceholder\"\n                [attr.aria-label]=\"ariaFilterLabel\"\n              />\n              <span class=\"p-orderlist-filter-icon pi pi-search\"></span>\n            </div>\n          </ng-template>\n        </div>\n        <ul #listelement cdkDropList (cdkDropListDropped)=\"onDrop($event)\" class=\"p-orderlist-list\" [ngStyle]=\"listStyle\">\n          <ng-template ngFor [ngForTrackBy]=\"trackBy\" let-item [ngForOf]=\"value\" let-i=\"index\" let-l=\"last\">\n            <li\n              class=\"p-orderlist-item\"\n              tabindex=\"0\"\n              [ngClass]=\"{ 'p-highlight': isSelected(item), 'p-disabled': disabled }\"\n              cdkDrag\n              pRipple\n              [cdkDragData]=\"item\"\n              [cdkDragDisabled]=\"!dragdrop\"\n              (click)=\"onItemClick($event, item, i)\"\n              (touchend)=\"onItemTouchEnd()\"\n              (keydown)=\"onItemKeydown($event, item, i)\"\n              *ngIf=\"isItemVisible(item)\"\n              role=\"option\"\n              [attr.aria-selected]=\"isSelected(item)\"\n            >\n              <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, index: i }\"></ng-container>\n            </li>\n          </ng-template>\n          <ng-container *ngIf=\"isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)\">\n            <li *ngIf=\"!filterValue || !emptyFilterMessageTemplate\" class=\"p-orderlist-empty-message\">\n              <ng-container *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n            </li>\n            <li *ngIf=\"filterValue\" class=\"p-orderlist-empty-message\">\n              <ng-container *ngTemplateOutlet=\"emptyFilterMessageTemplate\"></ng-container>\n            </li>\n          </ng-container>\n        </ul>\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./orderlist.css'],\n  host: {\n    class: 'p-element'\n  }\n})\nexport class OrderList implements AfterViewChecked, AfterContentInit {\n  @Input() header: string;\n\n  @Input() style: any;\n\n  @Input() styleClass: string;\n\n  @Input() listStyle: any;\n\n  @Input() responsive: boolean;\n\n  @Input() filterBy: string;\n\n  @Input() filterPlaceholder: string;\n\n  @Input() filterLocale: string;\n\n  @Input() metaKeySelection: boolean = true;\n\n  @Input() dragdrop: boolean = false;\n\n  @Input() controlsPosition: string = 'left';\n\n  @Input() ariaFilterLabel: string;\n\n  @Input() filterMatchMode: string = 'contains';\n\n  @Input() breakpoint: string = '960px';\n\n  @Input() stripedRows: boolean;\n\n  @Input() disabled: boolean = false;\n\n  @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n  @Input() trackBy: Function = (index: number, item: any) => item;\n\n  @Output() onReorder: EventEmitter<any> = new EventEmitter();\n\n  @Output() onSelectionChange: EventEmitter<any> = new EventEmitter();\n\n  @Output() onFilterEvent: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('listelement') listViewChild: ElementRef;\n\n  @ViewChild('filter') filterViewChild: ElementRef;\n\n  @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n  public itemTemplate: TemplateRef<any>;\n\n  public headerTemplate: TemplateRef<any>;\n\n  public emptyMessageTemplate: TemplateRef<any>;\n\n  public emptyFilterMessageTemplate: TemplateRef<any>;\n\n  public filterTemplate: TemplateRef<any>;\n\n  filterOptions: OrderListFilterOptions;\n\n  _selection: any[] = [];\n\n  movedUp: boolean;\n\n  movedDown: boolean;\n\n  itemTouched: boolean;\n\n  styleElement: any;\n\n  id: string = UniqueComponentId();\n\n  public filterValue: string;\n\n  public visibleOptions: any[];\n\n  public _value: any[];\n\n  constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService) {}\n\n  get selection(): any[] {\n    return this._selection;\n  }\n\n  @Input() set selection(val: any[]) {\n    this._selection = val;\n  }\n\n  ngOnInit() {\n    if (this.responsive) {\n      this.createStyle();\n    }\n\n    if (this.filterBy) {\n      this.filterOptions = {\n        filter: (value) => this.onFilterKeyup(value),\n        reset: () => this.resetFilter()\n      };\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach((item) => {\n      switch (item.getType()) {\n        case 'item':\n          this.itemTemplate = item.template;\n          break;\n\n        case 'empty':\n          this.emptyMessageTemplate = item.template;\n          break;\n\n        case 'emptyfilter':\n          this.emptyFilterMessageTemplate = item.template;\n          break;\n\n        case 'filter':\n          this.filterTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        default:\n          this.itemTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  ngAfterViewChecked() {\n    if (this.movedUp || this.movedDown) {\n      let listItems = DomHandler.find(this.listViewChild.nativeElement, 'li.p-highlight');\n      let listItem;\n\n      if (listItems.length > 0) {\n        if (this.movedUp) listItem = listItems[0];\n        else listItem = listItems[listItems.length - 1];\n\n        DomHandler.scrollInView(this.listViewChild.nativeElement, listItem);\n      }\n      this.movedUp = false;\n      this.movedDown = false;\n    }\n  }\n\n  get value(): any[] {\n    return this._value;\n  }\n\n  @Input() set value(val: any[]) {\n    this._value = val;\n    if (this.filterValue) {\n      this.filter();\n    }\n  }\n\n  onItemClick(event, item, index) {\n    this.itemTouched = false;\n    let selectedIndex = ObjectUtils.findIndexInList(item, this.selection);\n    let selected = selectedIndex != -1;\n    let metaSelection = this.itemTouched ? false : this.metaKeySelection;\n\n    if (metaSelection) {\n      let metaKey = event.metaKey || event.ctrlKey || event.shiftKey;\n\n      if (selected && metaKey) {\n        this._selection = this._selection.filter((val, index) => index !== selectedIndex);\n      } else {\n        this._selection = metaKey ? (this._selection ? [...this._selection] : []) : [];\n        ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);\n      }\n    } else {\n      if (selected) {\n        this._selection = this._selection.filter((val, index) => index !== selectedIndex);\n      } else {\n        this._selection = this._selection ? [...this._selection] : [];\n        ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);\n      }\n    }\n\n    //binding\n    this.selectionChange.emit(this._selection);\n\n    //event\n    this.onSelectionChange.emit({ originalEvent: event, value: this._selection });\n  }\n\n  onFilterKeyup(event) {\n    this.filterValue = ((<HTMLInputElement>event.target).value.trim() as any).toLocaleLowerCase(this.filterLocale);\n    this.filter();\n\n    this.onFilterEvent.emit({\n      originalEvent: event,\n      value: this.visibleOptions\n    });\n  }\n\n  filter() {\n    let searchFields: string[] = this.filterBy.split(',');\n    this.visibleOptions = this.filterService.filter(this.value, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n  }\n\n  resetFilter() {\n    this.filterValue = null;\n    this.filterViewChild && ((<HTMLInputElement>this.filterViewChild.nativeElement).value = '');\n  }\n\n  isItemVisible(item: any): boolean {\n    if (this.filterValue && this.filterValue.trim().length) {\n      for (let i = 0; i < this.visibleOptions.length; i++) {\n        if (item == this.visibleOptions[i]) {\n          return true;\n        }\n      }\n    } else {\n      return true;\n    }\n  }\n\n  onItemTouchEnd() {\n    this.itemTouched = true;\n  }\n\n  isSelected(item: any) {\n    return ObjectUtils.findIndexInList(item, this.selection) != -1;\n  }\n\n  isEmpty() {\n    return this.filterValue ? !this.visibleOptions || this.visibleOptions.length === 0 : !this.value || this.value.length === 0;\n  }\n\n  moveUp() {\n    if (this.selection) {\n      for (let i = 0; i < this.selection.length; i++) {\n        let selectedItem = this.selection[i];\n        let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n        if (selectedItemIndex != 0) {\n          let movedItem = this.value[selectedItemIndex];\n          let temp = this.value[selectedItemIndex - 1];\n          this.value[selectedItemIndex - 1] = movedItem;\n          this.value[selectedItemIndex] = temp;\n        } else {\n          break;\n        }\n      }\n\n      if (this.dragdrop && this.filterValue) this.filter();\n\n      this.movedUp = true;\n      this.onReorder.emit(this.selection);\n    }\n  }\n\n  moveTop() {\n    if (this.selection) {\n      for (let i = this.selection.length - 1; i >= 0; i--) {\n        let selectedItem = this.selection[i];\n        let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n        if (selectedItemIndex != 0) {\n          let movedItem = this.value.splice(selectedItemIndex, 1)[0];\n          this.value.unshift(movedItem);\n        } else {\n          break;\n        }\n      }\n\n      if (this.dragdrop && this.filterValue) this.filter();\n\n      this.onReorder.emit(this.selection);\n      this.listViewChild.nativeElement.scrollTop = 0;\n    }\n  }\n\n  moveDown() {\n    if (this.selection) {\n      for (let i = this.selection.length - 1; i >= 0; i--) {\n        let selectedItem = this.selection[i];\n        let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n        if (selectedItemIndex != this.value.length - 1) {\n          let movedItem = this.value[selectedItemIndex];\n          let temp = this.value[selectedItemIndex + 1];\n          this.value[selectedItemIndex + 1] = movedItem;\n          this.value[selectedItemIndex] = temp;\n        } else {\n          break;\n        }\n      }\n\n      if (this.dragdrop && this.filterValue) this.filter();\n\n      this.movedDown = true;\n      this.onReorder.emit(this.selection);\n    }\n  }\n\n  moveBottom() {\n    if (this.selection) {\n      for (let i = 0; i < this.selection.length; i++) {\n        let selectedItem = this.selection[i];\n        let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n        if (selectedItemIndex != this.value.length - 1) {\n          let movedItem = this.value.splice(selectedItemIndex, 1)[0];\n          this.value.push(movedItem);\n        } else {\n          break;\n        }\n      }\n\n      if (this.dragdrop && this.filterValue) this.filter();\n\n      this.onReorder.emit(this.selection);\n      this.listViewChild.nativeElement.scrollTop = this.listViewChild.nativeElement.scrollHeight;\n    }\n  }\n\n  onDrop(event: CdkDragDrop<string[]>) {\n    let previousIndex = event.previousIndex;\n    let currentIndex = event.currentIndex;\n\n    if (previousIndex !== currentIndex) {\n      if (this.visibleOptions) {\n        if (this.filterValue) {\n          previousIndex = ObjectUtils.findIndexInList(event.item.data, this.value);\n          currentIndex = ObjectUtils.findIndexInList(this.visibleOptions[currentIndex], this.value);\n        }\n\n        moveItemInArray(this.visibleOptions, event.previousIndex, event.currentIndex);\n      }\n\n      moveItemInArray(this.value, previousIndex, currentIndex);\n      this.onReorder.emit([event.item.data]);\n    }\n  }\n\n  onItemKeydown(event: KeyboardEvent, item, index: Number) {\n    let listItem = <HTMLLIElement>event.currentTarget;\n\n    switch (event.which) {\n      //down\n      case 40:\n        var nextItem = this.findNextItem(listItem);\n        if (nextItem) {\n          nextItem.focus();\n        }\n\n        event.preventDefault();\n        break;\n\n      //up\n      case 38:\n        var prevItem = this.findPrevItem(listItem);\n        if (prevItem) {\n          prevItem.focus();\n        }\n\n        event.preventDefault();\n        break;\n\n      //enter\n      case 13:\n        this.onItemClick(event, item, index);\n        event.preventDefault();\n        break;\n    }\n  }\n\n  findNextItem(item) {\n    let nextItem = item.nextElementSibling;\n\n    if (nextItem)\n      return !DomHandler.hasClass(nextItem, 'p-orderlist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;\n    else return null;\n  }\n\n  findPrevItem(item) {\n    let prevItem = item.previousElementSibling;\n\n    if (prevItem)\n      return !DomHandler.hasClass(prevItem, 'p-orderlist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;\n    else return null;\n  }\n\n  moveDisabled() {\n    if (this.disabled || !this.selection.length) {\n      return true;\n    }\n  }\n\n  createStyle() {\n    if (!this.styleElement) {\n      this.el.nativeElement.children[0].setAttribute(this.id, '');\n      this.styleElement = document.createElement('style');\n      this.styleElement.type = 'text/css';\n      document.head.appendChild(this.styleElement);\n\n      let innerHTML = `\n                @media screen and (max-width: ${this.breakpoint}) {\n                    .p-orderlist[${this.id}] {\n                        flex-direction: column;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls {\n                        padding: var(--content-padding);\n                        flex-direction: row;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button {\n                        margin-right: var(--inline-spacing);\n                        margin-bottom: 0;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button:last-child {\n                        margin-right: 0;\n                    }\n                }\n            `;\n\n      this.styleElement.innerHTML = innerHTML;\n    }\n  }\n\n  destroyStyle() {\n    if (this.styleElement) {\n      document.head.removeChild(this.styleElement);\n      this.styleElement = null;\n      ``;\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroyStyle();\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule],\n  exports: [OrderList, SharedModule],\n  declarations: [OrderList]\n})\nexport class OrderListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}