angular-dual-listbox
Version:
Angular dual listbox
1 lines • 44.6 kB
Source Map (JSON)
{"version":3,"file":"angular-dual-listbox.mjs","sources":["../../../projects/angular-dual-listbox/src/lib/basic-list.ts","../../../projects/angular-dual-listbox/src/lib/dual-list.component.ts","../../../projects/angular-dual-listbox/src/lib/dual-list.component.html","../../../projects/angular-dual-listbox/src/lib/angular-dual-listbox.module.ts","../../../projects/angular-dual-listbox/src/public-api.ts","../../../projects/angular-dual-listbox/src/angular-dual-listbox.ts"],"sourcesContent":["export class BasicList {\n\t/** Name of the list */\n\tprivate _name: string;\n\t/** Last element touched */\n\tlast: any;\n\t/** text filter */\n\tpicker: string;\n\n\tdragStart: boolean;\n\tdragOver: boolean;\n\n\tpick: Array<any>;\n\tlist: Array<any>;\n\tsift: Array<any>;\n\n\tconstructor(name: string) {\n\t\tthis._name = name;\n\t\tthis.last = null;\n\t\tthis.picker = '';\n\t\tthis.dragStart = false;\n\t\tthis.dragOver = false;\n\n\t\t// Arrays will contain objects of { _id, _name }.\n\t\tthis.pick = [];\n\t\tthis.list = [];\n\t\tthis.sift = [];\n\t}\n\n\tget name(): string {\n\t\treturn this._name;\n\t}\n}\n","import { Component, DoCheck, EventEmitter, Input, IterableDiffers, OnChanges,\n\tOutput, SimpleChange } from '@angular/core';\n\nimport { BasicList } from './basic-list';\n\nexport type compareFunction = (a: any, b: any) => number;\n\nvar nextId = 0;\n\n@Component({\n\tselector: 'dual-list',\n\ttemplateUrl: './dual-list.component.html',\n\tstyleUrls: [ './dual-list.component.css' ]\n})\n\nexport class DualListComponent implements DoCheck, OnChanges {\n\tstatic AVAILABLE_LIST_NAME = 'available';\n\tstatic CONFIRMED_LIST_NAME = 'confirmed';\n\n\tstatic LTR = 'left-to-right';\n\tstatic RTL = 'right-to-left';\n\n\tstatic DEFAULT_FORMAT = {\n\t\tadd: 'Add',\n\t\tremove: 'Remove',\n\t\tall: 'All',\n\t\tnone: 'None',\n\t\tdirection: DualListComponent.LTR,\n\t\tdraggable: true,\n\t\tlocale: undefined\n\t};\n\n\t@Input() id = `dual-list-${nextId++}`;\n\t@Input() key = '_id';\n\t@Input() display: any = '_name';\n\t@Input() height = '100px';\n\t@Input() filter = false;\n\t@Input() format = DualListComponent.DEFAULT_FORMAT;\n\t@Input() sort = false;\n\t@Input() compare: compareFunction;\n\t@Input() disabled = false;\n\t@Input() source: Array<any>;\n\t@Input() destination: Array<any>;\n\t@Output() destinationChange = new EventEmitter();\n\n\tavailable: BasicList;\n\tconfirmed: BasicList;\n\n\tsourceDiffer: any;\n\tdestinationDiffer: any;\n\n\tprivate sorter = (a: any, b: any) => { return (a._name < b._name) ? -1 : ((a._name > b._name) ? 1 : 0); };\n\n\tconstructor(private differs: IterableDiffers) {\n\t\tthis.available = new BasicList(DualListComponent.AVAILABLE_LIST_NAME);\n\t\tthis.confirmed = new BasicList(DualListComponent.CONFIRMED_LIST_NAME);\n\t}\n\n\tngOnChanges(changeRecord: {[key: string]: SimpleChange}) {\n\t\tif (changeRecord['filter']) {\n\t\t\tif (changeRecord['filter'].currentValue === false) {\n\t\t\t\tthis.clearFilter(this.available);\n\t\t\t\tthis.clearFilter(this.confirmed);\n\t\t\t}\n\t\t}\n\n\t\tif (changeRecord['sort']) {\n\t\t\tif (changeRecord['sort'].currentValue === true && this.compare === undefined) {\n\t\t\t\tthis.compare = this.sorter;\n\t\t\t} else if (changeRecord['sort'].currentValue === false) {\n\t\t\t\tthis.compare = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif (changeRecord['format']) {\n\t\t\tthis.format = changeRecord['format'].currentValue;\n\n\t\t\tif (typeof(this.format.direction) === 'undefined') {\n\t\t\t\tthis.format.direction = DualListComponent.LTR;\n\t\t\t}\n\n\t\t\tif (typeof(this.format.add) === 'undefined') {\n\t\t\t\tthis.format.add = DualListComponent.DEFAULT_FORMAT.add;\n\t\t\t}\n\n\t\t\tif (typeof(this.format.remove) === 'undefined') {\n\t\t\t\tthis.format.remove = DualListComponent.DEFAULT_FORMAT.remove;\n\t\t\t}\n\n\t\t\tif (typeof(this.format.all) === 'undefined') {\n\t\t\t\tthis.format.all = DualListComponent.DEFAULT_FORMAT.all;\n\t\t\t}\n\n\t\t\tif (typeof(this.format.none) === 'undefined') {\n\t\t\t\tthis.format.none = DualListComponent.DEFAULT_FORMAT.none;\n\t\t\t}\n\n\t\t\tif (typeof(this.format.draggable) === 'undefined') {\n\t\t\t\tthis.format.draggable = DualListComponent.DEFAULT_FORMAT.draggable;\n\t\t\t}\n\t\t}\n\n\t\tif (changeRecord['source']) {\n\t\t\tthis.available = new BasicList(DualListComponent.AVAILABLE_LIST_NAME);\n\t\t\tthis.updatedSource();\n\t\t\tthis.updatedDestination();\n\t\t}\n\n\t\tif (changeRecord['destination']) {\n\t\t\tthis.confirmed = new BasicList(DualListComponent.CONFIRMED_LIST_NAME);\n\t\t\tthis.updatedDestination();\n\t\t\tthis.updatedSource();\n\t\t}\n\t}\n\n\tngDoCheck() {\n\t\tif (this.source && this.buildAvailable(this.source)) {\n\t\t\tthis.onFilter(this.available);\n\t\t}\n\t\tif (this.destination && this.buildConfirmed(this.destination)) {\n\t\t\tthis.onFilter(this.confirmed);\n\t\t}\n\t}\n\n\tbuildAvailable(source: Array<any>): boolean {\n\t\tconst sourceChanges = this.sourceDiffer.diff(source);\n\t\tif (sourceChanges) {\n\t\t\tsourceChanges.forEachRemovedItem((r: any) => {\n\t\t\t\tconst idx = this.findItemIndex(this.available.list, r.item, this.key);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tthis.available.list.splice(idx, 1);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsourceChanges.forEachAddedItem((r: any) => {\n\t\t\t\t// Do not add duplicates even if source has duplicates.\n\t\t\t\tif (this.findItemIndex(this.available.list, r.item, this.key) === -1) {\n\t\t\t\t\tthis.available.list.push( { _id: this.makeId(r.item), _name: this.makeName(r.item) });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.compare !== undefined) {\n\t\t\t\tthis.available.list.sort(this.compare);\n\t\t\t}\n\t\t\tthis.available.sift = this.available.list;\n\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tbuildConfirmed(destination: Array<any>): boolean {\n\t\tlet moved = false;\n\t\tconst destChanges = this.destinationDiffer.diff(destination);\n\t\tif (destChanges) {\n\t\t\tdestChanges.forEachRemovedItem((r: any) => {\n\t\t\t\tconst idx = this.findItemIndex(this.confirmed.list, r.item, this.key);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tif (!this.isItemSelected(this.confirmed.pick, this.confirmed.list[idx])) {\n\t\t\t\t\t\tthis.selectItem(this.confirmed.pick, this.confirmed.list[idx]);\n\t\t\t\t\t}\n\t\t\t\t\tthis.moveItem(this.confirmed, this.available, this.confirmed.list[idx], false);\n\t\t\t\t\tmoved = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdestChanges.forEachAddedItem((r: any) => {\n\t\t\t\tconst idx = this.findItemIndex(this.available.list, r.item, this.key);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tif (!this.isItemSelected(this.available.pick, this.available.list[idx])) {\n\t\t\t\t\t\tthis.selectItem(this.available.pick, this.available.list[idx]);\n\t\t\t\t\t}\n\t\t\t\t\tthis.moveItem(this.available, this.confirmed, this.available.list[idx], false);\n\t\t\t\t\tmoved = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.compare !== undefined) {\n\t\t\t\tthis.confirmed.list.sort(this.compare);\n\t\t\t}\n\t\t\tthis.confirmed.sift = this.confirmed.list;\n\n\t\t\tif (moved) {\n\t\t\t\tthis.trueUp();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tupdatedSource() {\n\t\tthis.available.list.length = 0;\n\t\tthis.available.pick.length = 0;\n\n\t\tif (this.source !== undefined) {\n\t\t\tthis.sourceDiffer = this.differs.find(this.source).create(null);\n\t\t}\n\t}\n\n\tupdatedDestination() {\n\t\tif (this.destination !== undefined) {\n\t\t\tthis.destinationDiffer = this.differs.find(this.destination).create(null);\n\t\t}\n\t}\n\n\tdirection() {\n\t\treturn this.format.direction === DualListComponent.LTR;\n\t}\n\n\tdragEnd(list: BasicList = null): boolean {\n\t\tif (list) {\n\t\t\tlist.dragStart = false;\n\t\t} else {\n\t\t\tthis.available.dragStart = false;\n\t\t\tthis.confirmed.dragStart = false;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdrag(event: DragEvent, item: any, list: BasicList) {\n\t\tif (!this.isItemSelected(list.pick, item)) {\n\t\t\tthis.selectItem(list.pick, item);\n\t\t}\n\t\tlist.dragStart = true;\n\n\t\t// Set a custom type to be this dual-list's id.\n\t\tevent.dataTransfer.setData(this.id, item['_id']);\n\t}\n\n\tallowDrop(event: DragEvent, list: BasicList): boolean {\n\t\tif (event.dataTransfer.types.length && (event.dataTransfer.types[0] === this.id)) {\n\t\t\tevent.preventDefault();\n\t\t\tif (!list.dragStart) {\n\t\t\t\tlist.dragOver = true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tdragLeave() {\n\t\tthis.available.dragOver = false;\n\t\tthis.confirmed.dragOver = false;\n\t}\n\n\tdrop(event: DragEvent, list: BasicList) {\n\t\tif (event.dataTransfer.types.length && (event.dataTransfer.types[0] === this.id)) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.dragLeave();\n\t\t\tthis.dragEnd();\n\n\t\t\tif (list === this.available) {\n\t\t\t\tthis.moveItem(this.available, this.confirmed);\n\t\t\t} else {\n\t\t\t\tthis.moveItem(this.confirmed, this.available);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate trueUp() {\n\t\tlet changed = false;\n\n\t\t// Clear removed items.\n\t\tlet pos = this.destination.length;\n\t\twhile ((pos -= 1) >= 0) {\n\t\t\tconst mv = this.confirmed.list.filter( conf => {\n\t\t\t\tif (typeof this.destination[pos] === 'object') {\n\t\t\t\t\treturn conf._id === this.destination[pos][this.key];\n\t\t\t\t} else {\n\t\t\t\t\treturn conf._id === this.destination[pos];\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (mv.length === 0) {\n\t\t\t\t// Not found so remove.\n\t\t\t\tthis.destination.splice(pos, 1);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\n\t\t// Push added items.\n\t\tfor (let i = 0, len = this.confirmed.list.length; i < len; i += 1) {\n\t\t\tlet mv = this.destination.filter( (d: any) => {\n\t\t\t\tif (typeof d === 'object') {\n\t\t\t\t\treturn (d[this.key] === this.confirmed.list[i]._id);\n\t\t\t\t} else {\n\t\t\t\t\treturn (d === this.confirmed.list[i]._id);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (mv.length === 0) {\n\t\t\t\t// Not found so add.\n\t\t\t\tmv = this.source.filter( (o: any) => {\n\t\t\t\t\tif (typeof o === 'object') {\n\t\t\t\t\t\treturn (o[this.key] === this.confirmed.list[i]._id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn (o === this.confirmed.list[i]._id);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (mv.length > 0) {\n\t\t\t\t\tthis.destination.push(mv[0]);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (changed) {\n\t\t\tthis.destinationChange.emit(this.destination);\n\t\t}\n\t}\n\n\tfindItemIndex(list: Array<any>, item: any, key: any = '_id') {\n\t\tlet idx = -1;\n\n\t\tfunction matchObject(e: any) {\n\t\t\tif (e._id === item[key]) {\n\t\t\t\tidx = list.indexOf(e);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction match(e: any) {\n\t\t\tif (e._id === item) {\n\t\t\t\tidx = list.indexOf(e);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Assumption is that the arrays do not have duplicates.\n\t\tif (typeof item === 'object') {\n\t\t\tlist.filter(matchObject);\n\t\t} else {\n\t\t\tlist.filter(match);\n\t\t}\n\n\t\treturn idx;\n\t}\n\n\tprivate makeUnavailable(source: BasicList, item: any) {\n\t\tconst idx = source.list.indexOf(item);\n\t\tif (idx !== -1) {\n\t\t\tsource.list.splice(idx, 1);\n\t\t}\n\t}\n\n\tmoveItem(source: BasicList, target: BasicList, item: any = null, trueup = true) {\n\t\tlet i = 0;\n\t\tlet len = source.pick.length;\n\n\t\tif (item) {\n\t\t\ti = source.list.indexOf(item);\n\t\t\tlen = i + 1;\n\t\t}\n\n\t\tfor (; i < len; i += 1) {\n\t\t\t// Is the pick still in list?\n\t\t\tlet mv: Array<any> = [];\n\t\t\tif (item) {\n\t\t\t\tconst idx = this.findItemIndex(source.pick, item);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tmv[0] = source.pick[idx];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmv = source.list.filter( src => {\n\t\t\t\t\treturn (src._id === source.pick[i]._id);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Should only ever be 1\n\t\t\tif (mv.length === 1) {\n\t\t\t\t// Add if not already in target.\n\t\t\t\tif (target.list.filter(trg => trg._id === mv[0]._id).length === 0) {\n\t\t\t\t\ttarget.list.push( mv[0] );\n\t\t\t\t}\n\n\t\t\t\tthis.makeUnavailable(source, mv[0]);\n\t\t\t}\n\t\t}\n\n\t\tif (this.compare !== undefined) {\n\t\t\ttarget.list.sort(this.compare);\n\t\t}\n\n\t\tsource.pick.length = 0;\n\n\t\t// Update destination\n\t\tif (trueup) {\n\t\t\tthis.trueUp();\n\t\t}\n\n\t\t// Delay ever-so-slightly to prevent race condition.\n\t\tsetTimeout( () => {\n\t\t\tthis.onFilter(source);\n\t\t\tthis.onFilter(target);\n\t\t}, 10);\n\t}\n\n\tisItemSelected(list: Array<any>, item: any): boolean {\n\t\tif (list.filter(e => Object.is(e, item)).length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tshiftClick(event: MouseEvent, index: number, source: BasicList, item: any) {\n\t\tif (event.shiftKey && source.last && !Object.is(item, source.last)) {\n\t\t\tconst idx = source.sift.indexOf(source.last);\n\t\t\tif (index > idx) {\n\t\t\t\tfor (let i = (idx + 1); i < index; i += 1) {\n\t\t\t\t\tthis.selectItem(source.pick, source.sift[i]);\n\t\t\t\t}\n\t\t\t} else if (idx !== -1) {\n\t\t\t\tfor (let i = (index + 1); i < idx; i += 1) {\n\t\t\t\t\tthis.selectItem(source.pick, source.sift[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsource.last = item;\n\t}\n\n\tselectItem(list: Array<any>, item: any) {\n\t\tconst pk = list.filter( (e: any) => {\n\t\t\treturn Object.is(e, item);\n\t\t});\n\t\tif (pk.length > 0) {\n\t\t\t// Already in list, so deselect.\n\t\t\tfor (let i = 0, len = pk.length; i < len; i += 1) {\n\t\t\t\tconst idx = list.indexOf(pk[i]);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tlist.splice(idx, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tlist.push(item);\n\t\t}\n\t}\n\n\tselectAll(source: BasicList) {\n\t\tsource.pick.length = 0;\n\t\tsource.pick = source.sift.slice(0);\n\t}\n\n\tselectNone(source: BasicList) {\n\t\tsource.pick.length = 0;\n\t}\n\n\tisAllSelected(source: BasicList): boolean {\n\t\tif (source.list.length === 0 || source.list.length === source.pick.length) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tisAnySelected(source: BasicList): boolean {\n\t\tif (source.pick.length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate unpick(source: BasicList) {\n\t\tfor (let i = source.pick.length - 1; i >= 0; i -= 1) {\n\t\t\tif (source.sift.indexOf(source.pick[i]) === -1) {\n\t\t\t\tsource.pick.splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tclearFilter(source: BasicList) {\n\t\tif (source) {\n\t\t\tsource.picker = '';\n\t\t\tthis.onFilter(source);\n\t\t}\n\t}\n\n\tonFilter(source: BasicList) {\n\t\tif (source.picker.length > 0) {\n\t\t\ttry {\n\t\t\t\tconst filtered = source.list.filter( (item: any) => {\n\t\t\t\t\tif (Object.prototype.toString.call(item) === '[object Object]') {\n\t\t\t\t\t\tif (item._name !== undefined) {\n\t\t\t\t\t\t\t// @ts-ignore: remove when d.ts has locale as an argument.\n\t\t\t\t\t\t\treturn item._name.toLocaleLowerCase(this.format.locale).indexOf(source.picker.toLocaleLowerCase(this.format.locale)) !== -1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// @ts-ignore: remove when d.ts has locale as an argument.\n\t\t\t\t\t\t\treturn JSON.stringify(item).toLocaleLowerCase(this.format.locale).indexOf(source.picker.toLocaleLowerCase(this.format.locale)) !== -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// @ts-ignore: remove when d.ts has locale as an argument.\n\t\t\t\t\t\treturn item.toLocaleLowerCase(this.format.locale).indexOf(source.picker.toLocaleLowerCase(this.format.locale)) !== -1;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tsource.sift = filtered;\n\t\t\t\tthis.unpick(source);\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof RangeError) {\n\t\t\t\t\tthis.format.locale = undefined;\n\t\t\t\t}\n\t\t\t\tsource.sift = source.list;\n\t\t\t}\n\t\t} else {\n\t\t\tsource.sift = source.list;\n\t\t}\n\t}\n\n\tprivate makeId(item: any): string | number {\n\t\tif (typeof item === 'object') {\n\t\t\treturn item[this.key];\n\t\t} else {\n\t\t\treturn item;\n\t\t}\n\t}\n\n\t// Allow for complex names by passing an array of strings.\n\t// Example: [display]=\"[ '_type.substring(0,1)', '_name' ]\"\n\tprotected makeName(item: any, separator = '_'): string {\n\t\tconst display = this.display;\n\n\t\tfunction fallback(itm: any) {\n\t\t\tswitch (Object.prototype.toString.call(itm)) {\n\t\t\tcase '[object Number]':\n\t\t\t\treturn itm;\n\t\t\tcase '[object String]':\n\t\t\t\treturn itm;\n\t\t\tdefault:\n\t\t\t\tif (itm !== undefined) {\n\t\t\t\t\treturn itm[display];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'undefined';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet str = '';\n\n\t\tif (this.display !== undefined) {\n\t\t\tswitch (Object.prototype.toString.call(this.display)) {\n\t\t\tcase '[object Function]':\n\t\t\t\tstr = this.display(item);\n\t\t\t\tbreak;\n\n\t\t\tcase '[object Array]':\n\t\t\t\tfor (let i = 0, len = this.display.length; i < len; i += 1) {\n\t\t\t\t\tif (str.length > 0) {\n\t\t\t\t\t\tstr = str + separator;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.display[i].indexOf('.') === -1) {\n\t\t\t\t\t\t// Simple, just add to string.\n\t\t\t\t\t\tstr = str + item[this.display[i]];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Complex, some action needs to be performed\n\t\t\t\t\t\tconst parts = this.display[i].split('.');\n\n\t\t\t\t\t\tconst s = item[parts[0]];\n\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t// Use brute force\n\t\t\t\t\t\t\tif (parts[1].indexOf('substring') !== -1) {\n\t\t\t\t\t\t\t\tconst nums = (parts[1].substring(parts[1].indexOf('(') + 1, parts[1].indexOf(')'))).split(',');\n\n\t\t\t\t\t\t\t\tswitch (nums.length) {\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\tstr = str + s.substring(parseInt(nums[0], 10));\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\tstr = str + s.substring(parseInt(nums[0], 10), parseInt(nums[1], 10));\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tstr = str + s;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// method not approved, so just add s.\n\t\t\t\t\t\t\t\tstr = str + s;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tstr = fallback(item);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tstr = fallback(item);\n\t\t}\n\n\t\treturn str;\n\t}\n}\n","<div class=\"dual-list\">\n\t<div class=\"listbox\" [ngStyle]=\"{ 'order' : direction() ? 1 : 2, 'margin-left' : direction() ? 0 : '10px' }\">\n\t\t<button type=\"button\" name=\"addBtn\" class=\"btn btn-primary btn-block\"\n\t\t\t(click)=\"moveItem(available, confirmed)\" [ngClass]=\"direction() ? 'point-right' : 'point-left'\"\n\t\t\t[disabled]=\"available.pick.length === 0\">{{format.add}}</button>\n\n\t\t<form *ngIf=\"filter\" class=\"filter\">\n\t\t\t<input class=\"form-control\" name=\"filterSource\" [(ngModel)]=\"available.picker\" (ngModelChange)=\"onFilter(available)\">\n\t\t</form>\n\n\t\t<div class=\"record-picker\">\n\t\t\t<ul [ngStyle]=\"{'max-height': height, 'min-height': height}\" [ngClass]=\"{over:available.dragOver}\"\n\t\t\t\t(drop)=\"drop($event, confirmed)\" (dragover)=\"allowDrop($event, available)\" (dragleave)=\"dragLeave()\">\n\t\t\t\t<li *ngFor=\"let item of available.sift; let idx=index;\"\n\t\t\t\t\t(click)=\"disabled ? null : selectItem(available.pick, item); shiftClick($event, idx, available, item)\"\n\t\t\t\t\t[ngClass]=\"{selected: isItemSelected(available.pick, item), disabled: disabled}\"\n\t\t\t\t\t[draggable]=\"!disabled && format.draggable\" (dragstart)=\"drag($event, item, available)\" (dragend)=\"dragEnd(available)\"\n\t\t\t\t><label>{{item._name}}</label></li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t<div class=\"button-bar\">\n\t\t\t<button type=\"button\" class=\"btn btn-primary pull-left\" (click)=\"selectAll(available)\"\n\t\t\t\t[disabled]=\"disabled || isAllSelected(available)\">{{format.all}}</button>\n\t\t\t<button type=\"button\" class=\"btn btn-default pull-right\" (click)=\"selectNone(available)\"\n\t\t\t\t[disabled]=\"!isAnySelected(available)\">{{format.none}}</button>\n\t\t</div>\n\t</div>\n\n\t<div class=\"listbox\" [ngStyle]=\"{ 'order' : direction() ? 2 : 1, 'margin-left' : direction() ? '10px' : 0 }\">\n\t\t<button type=\"button\" name=\"removeBtn\" class=\"btn btn-primary btn-block\"\n\t\t\t(click)=\"moveItem(confirmed, available)\" [ngClass]=\"direction() ? 'point-left' : 'point-right'\"\n\t\t\t[disabled]=\"confirmed.pick.length === 0\">{{format.remove}}</button>\n\n\t\t<form *ngIf=\"filter\" class=\"filter\">\n\t\t\t<input class=\"form-control\" name=\"filterDestination\" [(ngModel)]=\"confirmed.picker\" (ngModelChange)=\"onFilter(confirmed)\">\n\t\t</form>\n\n\t\t<div class=\"record-picker\">\n\t\t\t<ul [ngStyle]=\"{'max-height': height, 'min-height': height}\" [ngClass]=\"{over:confirmed.dragOver}\"\n\t\t\t\t(drop)=\"drop($event, available)\" (dragover)=\"allowDrop($event, confirmed)\" (dragleave)=\"dragLeave()\">\n\t\t\t\t<li #itmConf *ngFor=\"let item of confirmed.sift; let idx=index;\"\n\t\t\t\t\t(click)=\"disabled ? null : selectItem(confirmed.pick, item); shiftClick($event, idx, confirmed, item)\"\n\t\t\t\t\t[ngClass]=\"{selected: isItemSelected(confirmed.pick, item), disabled: disabled}\"\n\t\t\t\t\t[draggable]=\"!disabled && format.draggable\" (dragstart)=\"drag($event, item, confirmed)\" (dragend)=\"dragEnd(confirmed)\"\n\t\t\t\t><label>{{item._name}}</label></li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t<div class=\"button-bar\">\n\t\t\t<button type=\"button\" class=\"btn btn-primary pull-left\" (click)=\"selectAll(confirmed)\"\n\t\t\t\t[disabled]=\"disabled || isAllSelected(confirmed)\">{{format.all}}</button>\n\t\t\t<button type=\"button\" class=\"btn btn-default pull-right\" (click)=\"selectNone(confirmed)\"\n\t\t\t\t[disabled]=\"!isAnySelected(confirmed)\">{{format.none}}</button>\n\t\t</div>\n\t</div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { DualListComponent } from './dual-list.component';\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule\n\t],\n\tdeclarations: [ DualListComponent ],\n\texports: [ DualListComponent ]\n})\nexport class AngularDualListBoxModule {}\n\n","/*\n * Public API Surface of angular-dual-listbox\n */\n\nexport * from './lib/basic-list';\nexport * from './lib/dual-list.component';\nexport * from './lib/angular-dual-listbox.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}