{"version":3,"file":"ngx-redi-core-RediTransposeList.mjs","sources":["../../../projects/ngx-redi-core/RediTransposeList/src/components/redi-transpose-list/redi-transpose-list.component.ts","../../../projects/ngx-redi-core/RediTransposeList/src/components/redi-transpose-list/redi-transpose-list.component.html","../../../projects/ngx-redi-core/RediTransposeList/public-api.ts","../../../projects/ngx-redi-core/RediTransposeList/ngx-redi-core-RediTransposeList.ts"],"sourcesContent":["import { Component, Input, TemplateRef } from '@angular/core';\r\nimport {\r\n  CdkDragDrop,\r\n  moveItemInArray,\r\n  transferArrayItem,\r\n  CdkDrag,\r\n  CdkDropList,\r\n} from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\n    selector: 'redi-transposed-list',\n    imports: [CdkDropList, CdkDrag, CommonModule],\n    templateUrl: './redi-transpose-list.component.html',\n    styleUrl: './redi-transpose-list.component.scss'\n})\r\nexport class RediTransposeListComponent<T> {\r\n  @Input()\r\n  public rightList: Array<T>;\r\n\r\n  @Input()\r\n  public leftList: Array<T>;\r\n\r\n  @Input()\r\n  public templateItem!: TemplateRef<unknown>;\r\n\r\n  constructor() {\r\n    this.rightList = [];\r\n    this.leftList = [];\r\n  }\r\n\r\n  public drop(event: CdkDragDrop<T[]>): void {\r\n    if (event.previousContainer === event.container) {\r\n      moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n    } else {\r\n      transferArrayItem(\r\n        event.previousContainer.data,\r\n        event.container.data,\r\n        event.previousIndex,\r\n        event.currentIndex,\r\n      );\r\n    }\r\n  }\r\n\r\n  public select(index: number, list: string): void {\r\n    this.selectedList = list;\r\n    this.selectedIndex = index;\r\n  }\r\n\r\n  public selectedList!: string;\r\n  public selectedIndex: number = -1;\r\n\r\n  public moveRight(): void {\r\n    this.toggleSelectDirection('right', this.leftList);\r\n    this.moveAnSelectItem('left', this.leftList, this.rightList)\r\n    this.selectTogleLastItem('right', this.rightList);\r\n  }\r\n\r\n  public moveLeft(): void {\r\n    this.toggleSelectDirection('left', this.rightList);\r\n    this.moveAnSelectItem('right', this.rightList, this.leftList)\r\n    this.selectTogleLastItem('left', this.leftList);\r\n  }\r\n\r\n  private selectTogleLastItem(direction: string, list: Array<T>): void {\r\n    if (this.selectedIndex === -1) {\r\n      this.selectedList = direction;\r\n      this.selectedIndex = list.length - 1;\r\n    }\r\n  }\r\n\r\n  private toggleSelectDirection(direction: string, list: Array<T>): void {\r\n    if (this.selectedList === direction) {\r\n      this.selectedIndex = list.length;\r\n    }\r\n  }\r\n\r\n  private moveAnSelectItem(direction: string, source: Array<T>, target: Array<T>): void {\r\n    if (this.selectedIndex > -1) {\r\n      transferArrayItem(\r\n        source,\r\n        target,\r\n        this.selectedIndex,\r\n        target.length,\r\n      );\r\n      this.selectedList = direction;\r\n      this.scrollBottom(direction);\r\n      if (this.selectedIndex >= source.length) {\r\n        this.selectedIndex = source.length - 1;\r\n      }\r\n    }\r\n  }\r\n\r\n  private scrollBottom(direction: string) {\r\n    let divList = document.querySelector(`.${direction === 'right' ? 'left' : 'right'}`);\r\n    if (!divList) {\r\n      return\r\n    }\r\n    setTimeout(() => {\r\n      divList.scrollTop = divList.scrollHeight + 30;\r\n    })\r\n  }\r\n\r\n  public reset(): void {\r\n    this.leftList = [];\r\n    this.rightList = [];\r\n    this.selectedIndex = -1;\r\n  }\r\n}\r\n","<div class=\"title\">\r\n    <div>\r\n        <ng-content select=\"[titleLeft]\"></ng-content>\r\n    </div>\r\n    <div>\r\n        <ng-content select=\"[titleRight]\"></ng-content>\r\n    </div>\r\n</div>\r\n<div class=\"container\">\r\n    <div class=\"list left\" cdkDropList #leftlist=\"cdkDropList\" [cdkDropListData]=\"leftList\"\r\n        [cdkDropListConnectedTo]=\"[rightlist]\" (cdkDropListDropped)=\"drop($event)\">\r\n        @for (item of leftList; track item; let index = $index) {\r\n        <div cdkDrag class=\"drag\" [class.selected]=\"selectedList ==='left' && selectedIndex === index\"\r\n            (click)=\"select(index,'left')\" onKeyDown>\r\n            <ng-container *ngTemplateOutlet=\"templateItem; context: {element: item}\"></ng-container>\r\n        </div>\r\n        }\r\n\r\n    </div>\r\n    <div class=\"controls\">\r\n        <span (click)=\"moveRight()\" onKeyDown class=\"material-symbols-outlined\">\r\n            arrow_circle_right\r\n        </span>\r\n        <span (click)=\"moveLeft()\" onKeyDown class=\"material-symbols-outlined\">\r\n            arrow_circle_left\r\n        </span>\r\n    </div>\r\n    <div class=\"list right\" cdkDropList #rightlist=\"cdkDropList\" [cdkDropListData]=\"rightList\"\r\n        [cdkDropListConnectedTo]=\"[leftlist]\" (cdkDropListDropped)=\"drop($event)\">\r\n        @for (item of rightList; track item; let index = $index) {\r\n        <div class=\"drag\" cdkDrag (click)=\"select(index,'right')\" onKeyDown\r\n            [class.selected]=\"selectedList === 'right'&& selectedIndex === index\">\r\n            <ng-container *ngTemplateOutlet=\"templateItem; context: {element: item}\"></ng-container>\r\n        </div>\r\n        }\r\n    </div>\r\n</div>","/** Componentes */\r\nexport * from './src/components/redi-transpose-list/redi-transpose-list.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}