diff --git a/.gitignore b/.gitignore index 2930af1..10094a4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules/ bower_components/ .vscode/ +yarn.lock diff --git a/dist/vue-mover.js b/dist/vue-mover.js index e13ec64..ee027a3 100644 --- a/dist/vue-mover.js +++ b/dist/vue-mover.js @@ -72,8 +72,8 @@ ------------------- by Rick Strahl, West Wind Technologies - Version 0.3.2 - February 9th, 2018 + Version 0.3.3 + January 10th, 2019 depends on: ----------- @@ -92,6 +92,10 @@ :right-items="unselectedItems" title-left="Available Items" title-right="Selected Items" + move-all-right-label="Select All" + move-right-label="Select" + move-all-left-label="Unselect All" + move-left-label="Unselect" moved-item-location="top" :font-awesome="true" targetId="MyMover" @@ -144,6 +148,22 @@ var vue = Vue.component("mover", { type: String, default: 'Selected' }, + moveAllRightLabel: { + type: String, + default: 'Move All Right' + }, + moveRightLabel: { + type: String, + default: 'Move Right' + }, + moveAllLeftLabel: { + type: String, + default: 'Move All Left' + }, + moveLeftLabel: { + type: String, + default: 'Move Left' + }, // Location where moved items are dropped: top, bottom movedItemLocation: { type: String, @@ -188,19 +208,19 @@ var vue = Vue.component("mover", { ' ' + '\n' + '' + '\n' + '
' + '\n' + - ' ' + '\n' + - ' ' + '\n' + - ' ' + '\n' + - ' ' + '\n' + diff --git a/dist/vue-mover.min.js b/dist/vue-mover.min.js index aae9d4b..d27b100 100644 --- a/dist/vue-mover.min.js +++ b/dist/vue-mover.min.js @@ -1 +1 @@ -!function(e){function t(s){if(n[s])return n[s].exports;var i=n[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,s){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t){if(!Sortable)throw new Error("[vue-mover] cannot locate `Sortablejs` dependency.");var n=Vue.component("mover",{vue:n,props:{titleLeft:{type:String,default:"Available"},titleRight:{type:String,default:"Selected"},movedItemLocation:{type:String,default:"top"},leftItems:Array,rightItems:Array,targetId:{type:String,default:"Mover"},normalizeLists:{type:Boolean,default:!0},fontAwesome:{type:Boolean,default:!0}},methods:{raiseItemMoved:function(e,t,n){this.lastMovedItem={item:e,targetList:t,listType:n},this.$emit("item-moved",this.lastMovedItem)}},template:'
\n
\n
{{titleLeft}}
\n
\n
{{item.displayValue}}
\n
\n
\n\n
\n \n \n \n \n\n
\n\n
\n
{{titleRight}}
\n
\n
{{item.displayValue}}
\n
\n
\n
\n',data:function(){var e={selectedSortable:null,selectedItem:{},selectedList:null,selectedItems:this.rightItems,unselectedItems:this.leftItems,lastMovedItem:null,initialize:function(t){var n={group:"_mvgp_"+(new Date).getTime(),ghostClass:"mover-ghost",chosenClass:"mover-selected",onAdd:e.onListDrop,onUpdate:e.onSorted},s=t.targetId,i=document.getElementById(s+"LeftItems");e.unselectedSortable=Sortable.create(i,n);var l=document.getElementById(s+"RightItems");e.selectedSortable=Sortable.create(l,n),t.normalizeLists&&e.normalizeListValues()},selectItem:function(t,n){(t||(n.length>0&&(t=n[0]),t))&&(n.forEach(function(e){e.isSelected=!1}),t.isSelected=!0,e.selectedItem=t,e.selectedList=n)},moveRight:function(n,s){if(!n)var n=e.unselectedItems.find(function(e){return e.isSelected});if(n){var i=e.unselectedItems.findIndex(function(e){return e.value==n.value});if(e.unselectedItems.splice(i,1),e.unselectedItems.length>0&&e.selectItem(e.unselectedItems[i],e.unselectedItems),"number"==typeof s)e.selectedItems.splice(s,0,n);else if("top"==t.movedItemLocation)e.selectedItems.unshift(n);else{e.selectedItems.push(n);var l=this.$el.querySelector(".mover-right>.mover-panel");setTimeout(function(){l.scrollTop=l.scrollHeight})}setTimeout(function(){e.selectItem(n,e.selectedItems),t.raiseItemMoved(n,e.selectedItems,"right")},10)}},moveLeft:function(n,s){if(n=e.selectedItems.find(function(e){return e.isSelected})){var i=e.selectedItems.findIndex(function(e){return e.value==n.value});if(e.selectedItems.splice(i,1),e.selectedItems.length>0&&e.selectItem(e.selectedItems[i],e.selectedItems),"number"==typeof s)e.unselectedItems.splice(s,0,n);else if("top"==t.movedItemLocation)e.unselectedItems.unshift(n);else{e.unselectedItems.push(n);var l=this.$el.querySelector(".mover-left>.mover-panel");setTimeout(function(){l.scrollTop=l.scrollHeight})}setTimeout(function(){e.selectItem(n,e.unselectedItems),t.raiseItemMoved(n,e.unselectedItems,"left")},10)}},moveAllRight:function(){for(var t=e.unselectedItems.length-1;t>=0;t--){var n=e.unselectedItems[t];e.unselectedItems.splice(t,1),e.selectedItems.push(n)}},moveAllLeft:function(){for(var t=e.selectedItems.length-1;t>=0;t--){var n=e.selectedItems[t];e.selectedItems.splice(t,1),e.unselectedItems.push(n)}},refreshListDisplay:function(){setTimeout(function(){var t=e.selectedItems;e.selectedItems=[],e.selectedItems=t,t=e.unselectedItems,e.unselectedItems=[],e.unselectedItems=t},10)},onSorted:function(t){var n,s=t.item.dataset.id,i=t.item.dataset.side;"left"==i?(n=e.unselectedItems,e.unselectedItems=[]):(n=e.selectedItems,e.selectedItems=[]);var l=n.find(function(e){return e.value==s});l&&setTimeout(function(){n.splice(t.oldIndex,1),n.splice(t.newIndex,0,l),"left"==i?(e.unselectedItems=n,e.selectItem(l,e.unselectedItems)):(e.selectedItems=n,e.selectItem(l,e.selectedItems))})},onListDrop:function(t){var n=t.item.dataset.id,s=t.item.dataset.side,i=t.newIndex;if("left"==s){var l=e.unselectedItems.find(function(e){return e.value==n});e.moveRight(l,i),l.isSelected=!0;o=e.unselectedItems;e.unselectedItems=[],setTimeout(function(){e.unselectedItems=o})}else{(l=e.selectedItems.find(function(e){return e.value==n})).isSelected=!0,e.moveLeft(l,i);var o=e.selectedItems;e.selectedItems=[],setTimeout(function(){e.selectedItems=o})}},normalizeListValues:function(){if(e.selectedItems&&0!=e.selectedItems.length&&e.unselectedItems&&0!=e.unselectedItems.length)for(var t=0;t-1&&e.unselectedItems.splice(s,1)}}},t=this;return setTimeout(function(){e.initialize(t)}),e}});Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var s=arguments[1],i=0;i>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var s=arguments[1],i=0;i\n
\n
{{titleLeft}}
\n
\n
{{item.displayValue}}
\n
\n
\n\n
\n \n \n \n \n\n
\n\n
\n
{{titleRight}}
\n
\n
{{item.displayValue}}
\n
\n
\n
\n',data:function(){var e={selectedSortable:null,selectedItem:{},selectedList:null,selectedItems:this.rightItems,unselectedItems:this.leftItems,lastMovedItem:null,initialize:function(t){var n={group:"_mvgp_"+(new Date).getTime(),ghostClass:"mover-ghost",chosenClass:"mover-selected",onAdd:e.onListDrop,onUpdate:e.onSorted},s=t.targetId,l=document.getElementById(s+"LeftItems");e.unselectedSortable=Sortable.create(l,n);var i=document.getElementById(s+"RightItems");e.selectedSortable=Sortable.create(i,n),t.normalizeLists&&e.normalizeListValues()},selectItem:function(t,n){(t||(n.length>0&&(t=n[0]),t))&&(n.forEach(function(e){e.isSelected=!1}),t.isSelected=!0,e.selectedItem=t,e.selectedList=n)},moveRight:function(n,s){if(!n)n=e.unselectedItems.find(function(e){return e.isSelected});if(n){var l=e.unselectedItems.findIndex(function(e){return e.value==n.value});if(e.unselectedItems.splice(l,1),e.unselectedItems.length>0&&e.selectItem(e.unselectedItems[l],e.unselectedItems),"number"==typeof s)e.selectedItems.splice(s,0,n);else if("top"==t.movedItemLocation)e.selectedItems.unshift(n);else{e.selectedItems.push(n);var i=this.$el.querySelector(".mover-right>.mover-panel");setTimeout(function(){i.scrollTop=i.scrollHeight})}setTimeout(function(){e.selectItem(n,e.selectedItems),t.raiseItemMoved(n,e.selectedItems,"right")},10)}},moveLeft:function(n,s){if(n=e.selectedItems.find(function(e){return e.isSelected})){var l=e.selectedItems.findIndex(function(e){return e.value==n.value});if(e.selectedItems.splice(l,1),e.selectedItems.length>0&&e.selectItem(e.selectedItems[l],e.selectedItems),"number"==typeof s)e.unselectedItems.splice(s,0,n);else if("top"==t.movedItemLocation)e.unselectedItems.unshift(n);else{e.unselectedItems.push(n);var i=this.$el.querySelector(".mover-left>.mover-panel");setTimeout(function(){i.scrollTop=i.scrollHeight})}setTimeout(function(){e.selectItem(n,e.unselectedItems),t.raiseItemMoved(n,e.unselectedItems,"left")},10)}},moveAllRight:function(){for(var t=e.unselectedItems.length-1;t>=0;t--){var n=e.unselectedItems[t];e.unselectedItems.splice(t,1),e.selectedItems.push(n)}},moveAllLeft:function(){for(var t=e.selectedItems.length-1;t>=0;t--){var n=e.selectedItems[t];e.selectedItems.splice(t,1),e.unselectedItems.push(n)}},refreshListDisplay:function(){setTimeout(function(){var t=e.selectedItems;e.selectedItems=[],e.selectedItems=t,t=e.unselectedItems,e.unselectedItems=[],e.unselectedItems=t},10)},onSorted:function(t){var n,s=t.item.dataset.id,l=t.item.dataset.side;"left"==l?(n=e.unselectedItems,e.unselectedItems=[]):(n=e.selectedItems,e.selectedItems=[]);var i=n.find(function(e){return e.value==s});i&&setTimeout(function(){n.splice(t.oldIndex,1),n.splice(t.newIndex,0,i),"left"==l?(e.unselectedItems=n,e.selectItem(i,e.unselectedItems)):(e.selectedItems=n,e.selectItem(i,e.selectedItems))})},onListDrop:function(t){var n=t.item.dataset.id,s=t.item.dataset.side,l=t.newIndex;if("left"==s){var i=e.unselectedItems.find(function(e){return e.value==n});e.moveRight(i,l),i.isSelected=!0;var o=e.unselectedItems;e.unselectedItems=[],setTimeout(function(){e.unselectedItems=o})}else{(i=e.selectedItems.find(function(e){return e.value==n})).isSelected=!0,e.moveLeft(i,l);o=e.selectedItems;e.selectedItems=[],setTimeout(function(){e.selectedItems=o})}},normalizeListValues:function(){if(e.selectedItems&&0!=e.selectedItems.length&&e.unselectedItems&&0!=e.unselectedItems.length)for(var t=0;t-1&&e.unselectedItems.splice(s,1)}}},t=this;return setTimeout(function(){e.initialize(t)}),e}});Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var s=arguments[1],l=0;l>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var s=arguments[1],l=0;l' + '\n' + '' + '\n' + '
' + '\n' + - ' ' + '\n' + - ' ' + '\n' + - ' ' + '\n' + - ' ' + '\n' +