UNPKG

@gmerabishvili/ngx-picklist

Version:
1 lines 25.1 kB
{"version":3,"file":"gmerabishvili-ngx-picklist.mjs","sources":["../../../projects/ngx-picklist/src/lib/ngx-picklist.service.ts","../../../projects/ngx-picklist/src/lib/ngx-picklist.component.ts","../../../projects/ngx-picklist/src/lib/ngx-picklist.component.html","../../../projects/ngx-picklist/src/lib/ngx-picklist.module.ts","../../../projects/ngx-picklist/src/public-api.ts","../../../projects/ngx-picklist/src/gmerabishvili-ngx-picklist.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxPicklistService {\n\n constructor() { }\n}\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';\nimport {CdkDragDrop, moveItemInArray, transferArrayItem} from \"@angular/cdk/drag-drop\";\n\n@Component({\n selector: 'ngx-picklist',\n templateUrl: './ngx-picklist.component.html',\n styleUrls: ['./ngx-picklist.component.scss']\n})\nexport class NgxPicklistComponent implements OnInit {\n selectedItemsSource: any[] = [];\n selectedItemsTarget: any[] = [];\n\n readonly SOURCE_LIST = -1;\n readonly TARGET_LIST = 1;\n\n @Input() source!: any[];\n @Input() target!: any[];\n\n @Input() sourceHeaderTemplate!: TemplateRef<any>;\n @Input() targetHeaderTemplate!: TemplateRef<any>;\n @Input() itemTemplate!: TemplateRef<any>;\n\n @Input() showControls: boolean = true;\n @Input() showResetControl: boolean = false;\n\n @Input() styleClass!: string;\n\n @Input() disabled: boolean = false;\n @Input() dragdropDisabled: boolean = false;\n\n @Input() trackBy: any = (index: number, item: any) => item;\n\n @Output() movedToTarget: EventEmitter<any> = new EventEmitter();\n @Output() movedAllToTarget: EventEmitter<any> = new EventEmitter();\n\n @Output() movedToSource: EventEmitter<any> = new EventEmitter();\n @Output() movedAllToSource: EventEmitter<any> = new EventEmitter();\n\n @Output() targetReordered: EventEmitter<any> = new EventEmitter();\n @Output() sourceReordered: EventEmitter<any> = new EventEmitter();\n\n @Output() targetSelected: EventEmitter<any> = new EventEmitter();\n @Output() sourceSelected: EventEmitter<any> = new EventEmitter();\n\n @Output() reset: EventEmitter<any> = new EventEmitter();\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n // Controls\n\n moveToTarget() {\n if (this.selectedItemsSource && this.selectedItemsSource.length) {\n for (let i = 0; i < this.selectedItemsSource.length; i++) {\n let selectedItem = this.selectedItemsSource[i];\n if (this.findIndexInList(selectedItem, this.target) == -1) {\n this.target.push(this.source.splice(this.findIndexInList(selectedItem, this.source), 1)[0]);\n }\n }\n\n this.movedToTarget.emit({\n items: this.selectedItemsSource\n });\n\n this.selectedItemsSource = [];\n }\n }\n\n moveAllToTarget() {\n if (this.source) {\n let movedItems = [];\n\n for (let i = 0; i < this.source.length; i++) {\n let removedItem = this.source.splice(i, 1)[0];\n this.target.push(removedItem);\n movedItems.push(removedItem);\n i--;\n }\n\n this.movedAllToTarget.emit({\n items: movedItems\n });\n\n this.selectedItemsSource = [];\n }\n }\n\n moveToSource() {\n if (this.selectedItemsTarget && this.selectedItemsTarget.length) {\n for (let i = 0; i < this.selectedItemsTarget.length; i++) {\n let selectedItem = this.selectedItemsTarget[i];\n if (this.findIndexInList(selectedItem, this.source) == -1) {\n this.source.push(this.target.splice(this.findIndexInList(selectedItem, this.target), 1)[0]);\n\n }\n }\n\n this.movedToSource.emit({\n items: this.selectedItemsTarget\n });\n\n this.selectedItemsTarget = [];\n }\n }\n\n moveAllToSource() {\n if (this.target) {\n let movedItems = [];\n\n for (let i = 0; i < this.target.length; i++) {\n let removedItem = this.target.splice(i, 1)[0];\n this.source.push(removedItem);\n movedItems.push(removedItem);\n i--;\n }\n\n this.movedAllToSource.emit({\n items: movedItems\n });\n\n this.selectedItemsTarget = [];\n }\n }\n\n resetItems() {\n this.reset.emit();\n }\n\n // Events\n\n onItemClick(event: any, item: any, selectedItems: any[], callback: EventEmitter<any>) {\n if (this.disabled) {\n return;\n }\n\n let index = this.findIndexInSelection(item, selectedItems);\n let selected = (index != -1);\n\n let metaKey = (event.metaKey || event.ctrlKey || event.shiftKey);\n\n if (selected && metaKey) {\n selectedItems.splice(index, 1);\n } else {\n if (!metaKey) {\n selectedItems.length = 0;\n }\n selectedItems.push(item);\n }\n\n callback.emit({originalEvent: event, items: selectedItems});\n }\n\n onItemKeydown(event: KeyboardEvent, item: any, selectedItems: any[], callback: EventEmitter<any>) {\n let listItem = <any>event.currentTarget;\n\n switch (event.which) {\n //down\n case 40:\n var nextItem = listItem.nextElementSibling;\n if (nextItem) {\n nextItem.focus();\n }\n\n event.preventDefault();\n break;\n\n //up\n case 38:\n var prevItem = listItem.previousElementSibling;\n if (prevItem) {\n prevItem.focus();\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n this.onItemClick(event, item, selectedItems, callback);\n event.preventDefault();\n break;\n }\n }\n\n onSourceItemDblClick() {\n if (this.disabled) {\n return;\n }\n\n this.moveToTarget();\n }\n\n onTargetItemDblClick() {\n if (this.disabled) {\n return;\n }\n\n this.moveToSource();\n }\n\n // Drag n Drop\n\n onDrop(event: CdkDragDrop<string[]>, listType: number) {\n const isTransfer = event.previousContainer !== event.container;\n\n if (listType === this.SOURCE_LIST) {\n if (isTransfer) {\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n let selectedItemIndex = this.findIndexInList(event.item.data, this.selectedItemsTarget);\n\n if (selectedItemIndex != -1) {\n this.selectedItemsTarget.splice(selectedItemIndex, 1);\n }\n\n this.movedToSource.emit({items: [event.item.data]});\n } else {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n this.sourceReordered.emit({items: [event.item.data]});\n }\n } else {\n if (isTransfer) {\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n\n let selectedItemIndex = this.findIndexInList(event.item.data, this.selectedItemsSource);\n\n if (selectedItemIndex != -1) {\n this.selectedItemsSource.splice(selectedItemIndex, 1);\n }\n\n\n this.movedToTarget.emit({items: [event.item.data]});\n } else {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n this.targetReordered.emit({items: [event.item.data]});\n }\n }\n }\n\n // Validations\n\n sourceMoveDisabled(): any {\n if (this.disabled || !this.selectedItemsSource.length) {\n return true;\n }\n }\n\n moveToTargetDisabled() {\n return this.disabled || this.isEmpty(this.selectedItemsSource);\n }\n\n moveAllToTargetDisabled() {\n return this.disabled || this.isEmpty(this.source);\n }\n\n moveToSourceDisabled() {\n return this.disabled || this.isEmpty(this.selectedItemsTarget);\n }\n\n moveAllToSourceDisabled() {\n return this.disabled || this.isEmpty(this.target);\n }\n\n resetDisabled() {\n return this.disabled;\n }\n\n // Utils\n\n isSelected(item: any, selectedItems: any[]) {\n return this.findIndexInSelection(item, selectedItems) != -1;\n }\n\n findIndexInSelection(item: any, selectedItems: any[]): number {\n return this.findIndexInList(item, selectedItems);\n }\n\n findIndexInList(item: any, list: any): number {\n let index: number = -1;\n\n if (list) {\n for (let i = 0; i < list.length; i++) {\n if (list[i] == item) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n isEmpty(value: any) {\n return (\n value === null || value === undefined || value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (!(value instanceof Date) && typeof value === 'object' && Object.keys(value).length === 0)\n );\n }\n\n}\n","<div class=\"ngx-picklist\" [class]=\"styleClass\" cdkDropListGroup>\n <div class=\"ngx-picklist-list-wrapper source-wrapper\">\n <div class=\"ngx-picklist-header\" *ngIf=\"sourceHeaderTemplate\">\n <ng-container *ngTemplateOutlet=\"sourceHeaderTemplate\"></ng-container>\n </div>\n <ul class=\"ngx-picklist-list source\"\n cdkDropList\n [cdkDropListData]=\"source\"\n (cdkDropListDropped)=\"onDrop($event, SOURCE_LIST)\"\n role=\"listbox\"\n aria-multiselectable=\"multiple\">\n <ng-template ngFor let-item [ngForOf]=\"source\" [ngForTrackBy]=\"trackBy\" let-i=\"index\">\n <li\n [ngClass]=\"{'ngx-picklist-item':true, 'highlight':isSelected(item,selectedItemsSource), 'disabled': disabled}\"\n cdkDrag [cdkDragData]=\"item\" [cdkDragDisabled]=\"dragdropDisabled || disabled\"\n (click)=\"onItemClick($event, item, selectedItemsSource, sourceSelected)\"\n (dblclick)=\"onSourceItemDblClick()\"\n (keydown)=\"onItemKeydown($event, item, selectedItemsSource, sourceSelected)\"\n tabindex=\"0\" role=\"option\"\n [attr.aria-selected]=\"isSelected(item, selectedItemsSource)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n </li>\n </ng-template>\n </ul>\n </div>\n\n <div class=\"ngx-picklist-buttons\" *ngIf=\"showControls\">\n <button type=\"button\" class=\"move-to-target\" aria-label=\"Move to target\"\n [disabled]=\"moveToTargetDisabled()\"\n (click)=\"moveToTarget()\">\n <i class=\"material-icons\" aria-label=\"chevron_right\">chevron_right</i>\n </button>\n <button type=\"button\" class=\"move-all-to-target\" aria-label=\"Move all to target\"\n [disabled]=\"moveAllToTargetDisabled()\"\n (click)=\"moveAllToTarget()\">\n <i class=\"material-icons\" aria-label=\"chevron_right\">keyboard_double_arrow_right</i>\n </button>\n <button type=\"button\" class=\"move-to-source\" aria-label=\"Move to source\"\n [disabled]=\"moveToSourceDisabled()\"\n (click)=\"moveToSource()\">\n <i class=\"material-icons\" aria-label=\"chevron_right\">chevron_left</i>\n </button>\n <button type=\"button\" class=\"move-all-to-source\" aria-label=\"Move all to source\"\n [disabled]=\"moveAllToSourceDisabled()\"\n (click)=\"moveAllToSource()\">\n <i class=\"material-icons\" aria-label=\"chevron_right\">keyboard_double_arrow_left</i>\n </button>\n <button type=\"button\" class=\"reset\" aria-label=\"Reset\" *ngIf=\"showResetControl\"\n [disabled]=\"resetDisabled()\"\n (click)=\"resetItems()\">\n <i class=\"material-icons\" aria-label=\"refresh\">refresh</i>\n </button>\n </div>\n\n <div class=\"ngx-picklist-list-wrapper target-wrapper\">\n <div class=\"ngx-picklist-header\" *ngIf=\"targetHeaderTemplate\">\n <ng-container *ngTemplateOutlet=\"targetHeaderTemplate\"></ng-container>\n </div>\n <ul class=\"ngx-picklist-list target\"\n cdkDropList\n [cdkDropListData]=\"target\"\n (cdkDropListDropped)=\"onDrop($event, TARGET_LIST)\"\n role=\"listbox\"\n aria-multiselectable=\"multiple\">\n <ng-template ngFor let-item [ngForOf]=\"target\" [ngForTrackBy]=\"trackBy\" let-i=\"index\">\n <li\n [ngClass]=\"{'ngx-picklist-item':true, 'highlight':isSelected(item, selectedItemsTarget),'disabled': disabled}\"\n cdkDrag [cdkDragData]=\"item\" [cdkDragDisabled]=\"dragdropDisabled || disabled\"\n (click)=\"onItemClick($event, item, selectedItemsTarget, targetSelected)\"\n (dblclick)=\"onTargetItemDblClick()\"\n (keydown)=\"onItemKeydown($event, item, selectedItemsTarget, targetSelected)\"\n tabindex=\"0\" role=\"option\"\n [attr.aria-selected]=\"isSelected(item, selectedItemsTarget)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n </li>\n </ng-template>\n </ul>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NgxPicklistComponent } from './ngx-picklist.component';\nimport {DragDropModule} from \"@angular/cdk/drag-drop\";\nimport {CommonModule} from \"@angular/common\";\n\n\n\n@NgModule({\n declarations: [\n NgxPicklistComponent\n ],\n imports: [\n CommonModule,\n DragDropModule\n ],\n exports: [\n NgxPicklistComponent\n ]\n})\nexport class NgxPicklistModule { }\n","/*\n * Public API Surface of ngx-picklist\n */\n\nexport * from './lib/ngx-picklist.service';\nexport * from './lib/ngx-picklist.component';\nexport * from './lib/ngx-picklist.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}