From 0ba8c677032dbc35ed0e8403cccebd02eadb914d Mon Sep 17 00:00:00 2001 From: pkempenaers Date: Fri, 10 Feb 2017 15:07:18 +0100 Subject: [PATCH] Remove MyForce references and update versions to be higher than myforce-angularjs-dropdown-multiselect --- README.md | 10 ++- bower.json | 4 +- development_index.html | 10 +-- dist/angularjs-dropdown-multiselect.min.js | 2 +- index.html | 8 +-- package.json | 76 ++++++++++----------- pages/images/myforcelogokleur.png | Bin 3492 -> 0 bytes pages/javascripts/pages/home/home.html | 6 +- src/angularjs-dropdown-multiselect.js | 8 +-- 9 files changed, 57 insertions(+), 67 deletions(-) delete mode 100644 pages/images/myforcelogokleur.png diff --git a/README.md b/README.md index d5611257..1ba92e8b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,3 @@ -# AngularJS Dropdown Multiselect -[![CDNJS](https://img.shields.io/cdnjs/v/myforce-angularjs-dropdown-multiselect.svg)](https://cdnjs.com/libraries/myforce-angularjs-dropdown-multiselect) - This directive gives you a Bootstrap Dropdown with the power of AngularJS directives. # Features @@ -16,9 +13,10 @@ This directive gives you a Bootstrap Dropdown with the power of AngularJS direct - Callback events. - Translation texts. - Scrollable list (useful for big lists) +- Keyboard controls ## Demo -http://myforce.github.io/angularjs-dropdown-multiselect/ +http://dotansimha.github.io/angularjs-dropdown-multiselect/ ## Dependencies - required: AngularJS >= 1.2, Bootstrap >= 3.0 @@ -30,7 +28,7 @@ http://myforce.github.io/angularjs-dropdown-multiselect/ 1. Download the files 1. Using bower: - Just run `bower install myforce-angularjs-dropdown-multiselect` + Just run `bower install angularjs-dropdown-multiselect` 2. Using npm : Just run `npm install angularjs-dropdown-multiselect` 3. Manually: @@ -43,4 +41,4 @@ http://myforce.github.io/angularjs-dropdown-multiselect/ ## Usage and Documentation See the documentation and examples in the GitHub pages: -http://myforce.github.io/angularjs-dropdown-multiselect/ +http://dotansimha.github.io/angularjs-dropdown-multiselect/ diff --git a/bower.json b/bower.json index 861de75d..26672bf6 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { - "name": "myforce-angularjs-dropdown-multiselect", - "version": "1.10.2", + "name": "angularjs-dropdown-multiselect", + "version": "1.11.0", "authors": [ "Dotan Simha ", "Pieter Kempenaers " diff --git a/development_index.html b/development_index.html index 3e145c9a..d5eda495 100644 --- a/development_index.html +++ b/development_index.html @@ -1,4 +1,4 @@ - + @@ -25,13 +25,13 @@ - AngularJS Dropdown Multiselect by MyForce + AngularJS Dropdown Multiselect
diff --git a/dist/angularjs-dropdown-multiselect.min.js b/dist/angularjs-dropdown-multiselect.min.js index 3ec31c6b..5acfc3e1 100644 --- a/dist/angularjs-dropdown-multiselect.min.js +++ b/dist/angularjs-dropdown-multiselect.min.js @@ -1 +1 @@ -"use strict";function contains(collection,target){var containsTarget=!1;return collection.some(function(object){return object===target?(containsTarget=!0,!0):void 0}),containsTarget}function find(collection,properties){var target;return collection.some(function(object){var hasAllSameProperties=!0;return Object.keys(properties).forEach(function(key){object[key]!==properties[key]&&(hasAllSameProperties=!1)}),hasAllSameProperties?(target=object,!0):void 0}),target}function findIndex(collection,properties){var index=-1,counter=-1;return collection.some(function(object){var hasAllSameProperties=!0;return counter+=1,Object.keys(properties).forEach(function(key){object[key]!==properties[key]&&(hasAllSameProperties=!1)}),hasAllSameProperties?(index=counter,!0):void 0}),index}var directiveModule=angular.module("angularjs-dropdown-multiselect",[]);directiveModule.directive("mfDropdownStaticInclude",["$compile",function($compile){return function(scope,element,attrs){var template=attrs.mfDropdownStaticInclude,contents=element.html(template).contents();$compile(contents)(scope)}}]),directiveModule.directive("ngDropdownMultiselect",["$filter","$document","$compile","$parse",function($filter,$document,$compile,$parse){return{restrict:"AE",scope:{selectedModel:"=",options:"=",extraSettings:"=",events:"=",searchFilter:"=?",translationTexts:"=",groupBy:"@",disabled:"="},template:function(element,attrs){var checkboxes=attrs.checkboxes?!0:!1,groups=attrs.groupBy?!0:!1,template='"},link:function($scope,$element,$attrs){function getFindObj(id){var findObj={};return""===$scope.settings.externalIdProp?findObj[$scope.settings.idProp]=id:findObj[$scope.settings.externalIdProp]=id,findObj}function clearObject(object){for(var prop in object)delete object[prop]}var $dropdownTrigger=$element.children()[0];$scope.toggleDropdown=function(){$scope.open?$scope.close():$scope.open=!0,$scope.settings.keyboardControls&&$scope.open&&(1===$scope.settings.selectionLimit&&$scope.settings.enableSearch?setTimeout(function(){angular.element($element)[0].querySelector(".searchField").focus()},0):setTimeout(function(){angular.element($element)[0].querySelector(".option").focus()},0))},$scope.checkboxClick=function($event,id){$scope.setSelectedItem(id,!1,!0),$event.stopImmediatePropagation()},$scope.externalEvents={onItemSelect:angular.noop,onItemDeselect:angular.noop,onSelectAll:angular.noop,onDeselectAll:angular.noop,onInitDone:angular.noop,onMaxSelectionReached:angular.noop,onSelectionChanged:angular.noop,onClose:angular.noop},$scope.settings={dynamicTitle:!0,scrollable:!1,scrollableHeight:"300px",closeOnBlur:!0,displayProp:"label",idProp:"id",externalIdProp:"id",enableSearch:!1,selectionLimit:0,showCheckAll:!0,showUncheckAll:!0,showEnableSearchButton:!1,closeOnSelect:!1,buttonClasses:"btn btn-default",closeOnDeselect:!1,groupBy:$attrs.groupBy||void 0,groupByTextProvider:null,smartButtonMaxItems:0,smartButtonTextConverter:angular.noop,styleActive:!1,keyboardControls:!1,template:"{{getPropertyForObject(option, settings.displayProp)}}",searchField:"$",showAllSelectedText:!1},$scope.texts={checkAll:"Check All",uncheckAll:"Uncheck All",selectionCount:"checked",selectionOf:"/",searchPlaceholder:"Search...",buttonDefaultText:"Select",dynamicButtonTextSuffix:"checked",disableSearch:"Disable search",enableSearch:"Enable search",selectGroup:"Select all:",allSelectedText:"All"},$scope.input={searchFilter:$scope.searchFilter||""},angular.isDefined($scope.settings.groupBy)&&$scope.$watch("options",function(newValue){angular.isDefined(newValue)&&($scope.orderedItems=$filter("orderBy")(newValue,$scope.settings.groupBy))}),$scope.$watch("selectedModel",function(newValue){Array.isArray(newValue)?$scope.singleSelection=!1:$scope.singleSelection=!0}),$scope.close=function(){$scope.open=!1,$scope.externalEvents.onClose()},$scope.selectCurrentGroup=function(currentGroup){$scope.selectedModel.splice(0,$scope.selectedModel.length),$scope.orderedItems&&$scope.orderedItems.forEach(function(item){item[$scope.groupBy]===currentGroup&&$scope.setSelectedItem($scope.getPropertyForObject(item,$scope.settings.idProp),!1,!1)}),$scope.externalEvents.onSelectionChanged()},angular.extend($scope.settings,$scope.extraSettings||[]),angular.extend($scope.externalEvents,$scope.events||[]),angular.extend($scope.texts,$scope.translationTexts),$scope.singleSelection=1===$scope.settings.selectionLimit,$scope.singleSelection&&angular.isArray($scope.selectedModel)&&0===$scope.selectedModel.length&&clearObject($scope.selectedModel),$scope.settings.closeOnBlur&&$document.on("click",function(e){if($scope.open){for(var target=e.target.parentElement,parentFound=!1;angular.isDefined(target)&&null!==target&&!parentFound;)target.className.split&&contains(target.className.split(" "),"multiselect-parent")&&!parentFound&&target===$dropdownTrigger&&(parentFound=!0),target=target.parentElement;parentFound||$scope.$apply(function(){$scope.close()})}}),$scope.getGroupLabel=function(groupValue){return null!==$scope.settings.groupByTextProvider?$scope.settings.groupByTextProvider(groupValue):groupValue},$scope.getButtonText=function(){if($scope.settings.dynamicTitle&&($scope.selectedModel.length>0||angular.isObject($scope.selectedModel)&&Object.keys($scope.selectedModel).length>0)){if($scope.settings.smartButtonMaxItems>0){var itemsText=[];return angular.forEach($scope.options,function(optionItem){if($scope.isChecked($scope.getPropertyForObject(optionItem,$scope.settings.idProp))){var displayText=$scope.getPropertyForObject(optionItem,$scope.settings.displayProp),converterResponse=$scope.settings.smartButtonTextConverter(displayText,optionItem);itemsText.push(converterResponse?converterResponse:displayText)}}),$scope.selectedModel.length>$scope.settings.smartButtonMaxItems&&(itemsText=itemsText.slice(0,$scope.settings.smartButtonMaxItems),itemsText.push("...")),itemsText.join(", ")}var totalSelected;return totalSelected=$scope.singleSelection?null!==$scope.selectedModel&&angular.isDefined($scope.selectedModel[$scope.settings.idProp])?1:0:angular.isDefined($scope.selectedModel)?$scope.selectedModel.length:0,0===totalSelected?$scope.texts.buttonDefaultText:$scope.settings.showAllSelectedText&&totalSelected===$scope.options.length?$scope.texts.allSelectedText:totalSelected+" "+$scope.texts.dynamicButtonTextSuffix}return $scope.texts.buttonDefaultText},$scope.getPropertyForObject=function(object,property){return angular.isDefined(object)&&object.hasOwnProperty(property)?object[property]:void 0},$scope.selectAll=function(){var searchResult;$scope.deselectAll(!0),$scope.externalEvents.onSelectAll(),searchResult=$filter("filter")($scope.options,$scope.getFilter($scope.input.searchFilter)),angular.forEach(searchResult,function(value){$scope.setSelectedItem(value[$scope.settings.idProp],!0,!1)}),$scope.externalEvents.onSelectionChanged(),$scope.selectedGroup=null},$scope.deselectAll=function(dontSendEvent){dontSendEvent=dontSendEvent||!1,dontSendEvent||$scope.externalEvents.onDeselectAll(),$scope.singleSelection?clearObject($scope.selectedModel):$scope.selectedModel.splice(0,$scope.selectedModel.length),dontSendEvent||$scope.externalEvents.onSelectionChanged(),$scope.selectedGroup=null},$scope.setSelectedItem=function(id,dontRemove,fireSelectionChange){var findObj=getFindObj(id),finalObj=null;if(finalObj=""===$scope.settings.externalIdProp?find($scope.options,findObj):findObj,$scope.singleSelection)clearObject($scope.selectedModel),angular.extend($scope.selectedModel,finalObj),fireSelectionChange&&$scope.externalEvents.onItemSelect(finalObj),($scope.settings.closeOnSelect||$scope.settings.closeOnDeselect)&&$scope.close();else{dontRemove=dontRemove||!1;var exists=-1!==findIndex($scope.selectedModel,findObj);!dontRemove&&exists?($scope.selectedModel.splice(findIndex($scope.selectedModel,findObj),1),$scope.externalEvents.onItemDeselect(findObj),$scope.settings.closeOnDeselect&&$scope.close()):!exists&&(0===$scope.settings.selectionLimit||$scope.selectedModel.length<$scope.settings.selectionLimit)&&($scope.selectedModel.push(finalObj),fireSelectionChange&&$scope.externalEvents.onItemSelect(finalObj),$scope.settings.closeOnSelect&&$scope.close(),$scope.settings.selectionLimit>0&&$scope.selectedModel.length===$scope.settings.selectionLimit&&$scope.externalEvents.onMaxSelectionReached())}fireSelectionChange&&$scope.externalEvents.onSelectionChanged(),$scope.selectedGroup=null},$scope.isChecked=function(id){return $scope.singleSelection?null!==$scope.selectedModel&&angular.isDefined($scope.selectedModel[$scope.settings.externalIdProp])&&$scope.selectedModel[$scope.settings.externalIdProp]===getFindObj(id)[$scope.settings.externalIdProp]:-1!==findIndex($scope.selectedModel,getFindObj(id))},$scope.externalEvents.onInitDone(),$scope.keyDownLink=function(event){var nextOption,sourceScope=angular.element(event.target).scope(),parent=event.target.parentNode;if($scope.settings.keyboardControls)if(13===event.keyCode||32===event.keyCode)event.preventDefault(),sourceScope.option?$scope.setSelectedItem($scope.getPropertyForObject(sourceScope.option,$scope.settings.idProp),!1,!0):"deselectAll"===event.target.id?$scope.deselectAll():"selectAll"===event.target.id&&$scope.selectAll();else if(38===event.keyCode){for(event.preventDefault(),parent.previousElementSibling&&(nextOption=parent.previousElementSibling.querySelector("a")||parent.previousElementSibling.querySelector("input"));!nextOption&&parent;)parent=parent.previousElementSibling,parent&&(nextOption=parent.querySelector("a")||parent.querySelector("input"));nextOption&&nextOption.focus()}else if(40===event.keyCode){for(event.preventDefault(),parent.nextElementSibling&&(nextOption=parent.nextElementSibling.querySelector("a")||parent.nextElementSibling.querySelector("input"));!nextOption&&parent;)parent=parent.nextElementSibling,parent&&(nextOption=parent.querySelector("a")||parent.querySelector("input"));nextOption&&nextOption.focus()}else 27===event.keyCode&&(event.preventDefault(),$scope.toggleDropdown())},$scope.keyDownSearchDefault=function(event){var nextOption,parent=event.target.parentNode.parentNode;if($scope.settings.keyboardControls)if(9===event.keyCode||40===event.keyCode)event.preventDefault(),setTimeout(function(){angular.element($element)[0].querySelector(".option").focus()},0);else if(38===event.keyCode){for(event.preventDefault(),parent.previousElementSibling&&(nextOption=parent.previousElementSibling.querySelector("a")||parent.previousElementSibling.querySelector("input"));!nextOption&&parent;)parent=parent.previousElementSibling,parent&&(nextOption=parent.querySelector("a")||parent.querySelector("input"));nextOption&&nextOption.focus()}else 27===event.keyCode&&(event.preventDefault(),$scope.toggleDropdown())},$scope.keyDownSearch=function(event,searchFilter){var searchResult;$scope.settings.keyboardControls&&13===event.keyCode&&(1===$scope.settings.selectionLimit&&$scope.settings.enableSearch?(searchResult=$filter("filter")($scope.options,$scope.getFilter(searchFilter)),1===searchResult.length&&$scope.setSelectedItem($scope.getPropertyForObject(searchResult[0],$scope.settings.idProp),!1,!0)):$scope.settings.enableSearch&&$scope.selectAll())},$scope.getFilter=function(searchFilter){var filter={};return filter[$scope.settings.searchField]=searchFilter,filter},$scope.toggleSearch=function($event){$event&&$event.stopPropagation(),$scope.settings.enableSearch=!$scope.settings.enableSearch,$scope.settings.enableSearch||($scope.input.searchFilter="")},$scope.keyDownToggleSearch=function(){$scope.settings.keyboardControls&&13===event.keyCode&&($scope.toggleSearch(),$scope.settings.enableSearch?setTimeout(function(){angular.element($element)[0].querySelector(".searchField").focus()},0):angular.element($element)[0].querySelector(".option").focus())}}}}]); \ No newline at end of file +!function(angular){"use strict";function contains(collection,target){var containsTarget=!1;return collection.some(function(object){return object===target?(containsTarget=!0,!0):void 0}),containsTarget}function find(collection,properties){var target;return collection.some(function(object){var hasAllSameProperties=!0;return Object.keys(properties).forEach(function(key){object[key]!==properties[key]&&(hasAllSameProperties=!1)}),hasAllSameProperties?(target=object,!0):void 0}),target}function findIndex(collection,properties){var index=-1,counter=-1;return collection.some(function(object){var hasAllSameProperties=!0;return counter+=1,Object.keys(properties).forEach(function(key){object[key]!==properties[key]&&(hasAllSameProperties=!1)}),hasAllSameProperties?(index=counter,!0):void 0}),index}var directiveModule=angular.module("angularjs-dropdown-multiselect",[]);directiveModule.directive("dmDropdownStaticInclude",["$compile",function($compile){return function(scope,element,attrs){var template=attrs.dmDropdownStaticInclude,contents=element.html(template).contents();$compile(contents)(scope)}}]),directiveModule.directive("ngDropdownMultiselect",["$filter","$document","$compile","$parse",function($filter,$document,$compile,$parse){return{restrict:"AE",scope:{selectedModel:"=",options:"=",extraSettings:"=",events:"=",searchFilter:"=?",translationTexts:"=",groupBy:"@",disabled:"="},template:function(element,attrs){var checkboxes=attrs.checkboxes?!0:!1,groups=attrs.groupBy?!0:!1,template='"},link:function($scope,$element,$attrs){function getFindObj(id){var findObj={};return""===$scope.settings.externalIdProp?findObj[$scope.settings.idProp]=id:findObj[$scope.settings.externalIdProp]=id,findObj}function clearObject(object){for(var prop in object)delete object[prop]}function textWidth(text){var $btn=$element.find("button"),canvas=document.createElement("canvas"),ctx=canvas.getContext("2d");return ctx.font=$btn.css("font-size")+$btn.css("font-family"),ctx.originalFont=$btn.css("font-size")+$btn.css("font-family"),ctx.fillStyle="#000000",ctx.measureText(text).width}var $dropdownTrigger=$element.children()[0];$scope.toggleDropdown=function(){$scope.open?$scope.close():$scope.open=!0,$scope.settings.keyboardControls&&$scope.open&&(1===$scope.settings.selectionLimit&&$scope.settings.enableSearch?setTimeout(function(){angular.element($element)[0].querySelector(".searchField").focus()},0):setTimeout(function(){angular.element($element)[0].querySelector(".option").focus()},0))},$scope.checkboxClick=function($event,id){$scope.setSelectedItem(id,!1,!0),$event.stopImmediatePropagation()},$scope.externalEvents={onItemSelect:angular.noop,onItemDeselect:angular.noop,onSelectAll:angular.noop,onDeselectAll:angular.noop,onInitDone:angular.noop,onMaxSelectionReached:angular.noop,onSelectionChanged:angular.noop,onClose:angular.noop},$scope.settings={dynamicTitle:!0,scrollable:!1,scrollableHeight:"300px",closeOnBlur:!0,displayProp:"label",idProp:"id",externalIdProp:"id",enableSearch:!1,selectionLimit:0,showCheckAll:!0,showUncheckAll:!0,showEnableSearchButton:!1,closeOnSelect:!1,buttonClasses:"btn btn-default",closeOnDeselect:!1,groupBy:$attrs.groupBy||void 0,groupByTextProvider:null,smartButtonMaxItems:0,smartButtonTextConverter:angular.noop,styleActive:!1,keyboardControls:!1,template:"{{getPropertyForObject(option, settings.displayProp)}}",searchField:"$",showAllSelectedText:!1},$scope.texts={checkAll:"Check All",uncheckAll:"Uncheck All",selectionCount:"checked",selectionOf:"/",searchPlaceholder:"Search...",buttonDefaultText:"Select",dynamicButtonTextSuffix:"checked",disableSearch:"Disable search",enableSearch:"Enable search",selectGroup:"Select all:",allSelectedText:"All"},$scope.input={searchFilter:$scope.searchFilter||""},angular.isDefined($scope.settings.groupBy)&&$scope.$watch("options",function(newValue){angular.isDefined(newValue)&&($scope.orderedItems=$filter("orderBy")(newValue,$scope.settings.groupBy))}),$scope.$watch("selectedModel",function(newValue){Array.isArray(newValue)?$scope.singleSelection=!1:$scope.singleSelection=!0}),$scope.close=function(){$scope.open=!1,$scope.externalEvents.onClose()},$scope.selectCurrentGroup=function(currentGroup){$scope.selectedModel.splice(0,$scope.selectedModel.length),$scope.orderedItems&&$scope.orderedItems.forEach(function(item){item[$scope.groupBy]===currentGroup&&$scope.setSelectedItem($scope.getPropertyForObject(item,$scope.settings.idProp),!1,!1)}),$scope.externalEvents.onSelectionChanged()},angular.extend($scope.settings,$scope.extraSettings||[]),angular.extend($scope.externalEvents,$scope.events||[]),angular.extend($scope.texts,$scope.translationTexts),$scope.singleSelection=1===$scope.settings.selectionLimit,$scope.singleSelection&&angular.isArray($scope.selectedModel)&&0===$scope.selectedModel.length&&clearObject($scope.selectedModel),$scope.settings.closeOnBlur&&$document.on("click",function(e){if($scope.open){for(var target=e.target.parentElement,parentFound=!1;angular.isDefined(target)&&null!==target&&!parentFound;)target.className.split&&contains(target.className.split(" "),"multiselect-parent")&&!parentFound&&target===$dropdownTrigger&&(parentFound=!0),target=target.parentElement;parentFound||$scope.$apply(function(){$scope.close()})}}),$scope.getGroupLabel=function(groupValue){return null!==$scope.settings.groupByTextProvider?$scope.settings.groupByTextProvider(groupValue):groupValue},$scope.getButtonText=function(){if($scope.settings.dynamicTitle&&($scope.selectedModel.length>0||angular.isObject($scope.selectedModel)&&Object.keys($scope.selectedModel).length>0)){if($scope.settings.smartButtonMaxItems>0){var paddingWidth=24,borderWidth=2,dropdownIconWidth=8,widthLimit=(textWidth("..."),$element[0].offsetWidth-paddingWidth-borderWidth-dropdownIconWidth),itemsText=[];angular.forEach($scope.options,function(optionItem){if($scope.isChecked($scope.getPropertyForObject(optionItem,$scope.settings.idProp))){var displayText=$scope.getPropertyForObject(optionItem,$scope.settings.displayProp),converterResponse=$scope.settings.smartButtonTextConverter(displayText,optionItem);itemsText.push(converterResponse?converterResponse:displayText)}}),$scope.selectedModel.length>$scope.settings.smartButtonMaxItems&&(itemsText=itemsText.slice(0,$scope.settings.smartButtonMaxItems),itemsText.push("..."));for(var result=itemsText.join(", "),index=result.length-4;textWidth(result)>widthLimit;)"..."!==itemsText[itemsText.length-1]&&(itemsText.push("..."),result+="..."),result=result.slice(0,index)+result.slice(index+1),index--;return result}var totalSelected;return totalSelected=$scope.singleSelection?null!==$scope.selectedModel&&angular.isDefined($scope.selectedModel[$scope.settings.idProp])?1:0:angular.isDefined($scope.selectedModel)?$scope.selectedModel.length:0,0===totalSelected?$scope.texts.buttonDefaultText:$scope.settings.showAllSelectedText&&totalSelected===$scope.options.length?$scope.texts.allSelectedText:totalSelected+" "+$scope.texts.dynamicButtonTextSuffix}return $scope.texts.buttonDefaultText},$scope.getPropertyForObject=function(object,property){return angular.isDefined(object)&&object.hasOwnProperty(property)?object[property]:void 0},$scope.selectAll=function(){var searchResult;$scope.deselectAll(!0),$scope.externalEvents.onSelectAll(),searchResult=$filter("filter")($scope.options,$scope.getFilter($scope.input.searchFilter)),angular.forEach(searchResult,function(value){$scope.setSelectedItem(value[$scope.settings.idProp],!0,!1)}),$scope.externalEvents.onSelectionChanged(),$scope.selectedGroup=null},$scope.deselectAll=function(dontSendEvent){dontSendEvent=dontSendEvent||!1,dontSendEvent||$scope.externalEvents.onDeselectAll(),$scope.singleSelection?clearObject($scope.selectedModel):$scope.selectedModel.splice(0,$scope.selectedModel.length),dontSendEvent||$scope.externalEvents.onSelectionChanged(),$scope.selectedGroup=null},$scope.setSelectedItem=function(id,dontRemove,fireSelectionChange){var findObj=getFindObj(id),finalObj=null;if(finalObj=""===$scope.settings.externalIdProp?find($scope.options,findObj):findObj,$scope.singleSelection)clearObject($scope.selectedModel),angular.extend($scope.selectedModel,finalObj),fireSelectionChange&&$scope.externalEvents.onItemSelect(finalObj),($scope.settings.closeOnSelect||$scope.settings.closeOnDeselect)&&$scope.close();else{dontRemove=dontRemove||!1;var exists=-1!==findIndex($scope.selectedModel,findObj);!dontRemove&&exists?($scope.selectedModel.splice(findIndex($scope.selectedModel,findObj),1),$scope.externalEvents.onItemDeselect(findObj),$scope.settings.closeOnDeselect&&$scope.close()):!exists&&(0===$scope.settings.selectionLimit||$scope.selectedModel.length<$scope.settings.selectionLimit)&&($scope.selectedModel.push(finalObj),fireSelectionChange&&$scope.externalEvents.onItemSelect(finalObj),$scope.settings.closeOnSelect&&$scope.close(),$scope.settings.selectionLimit>0&&$scope.selectedModel.length===$scope.settings.selectionLimit&&$scope.externalEvents.onMaxSelectionReached())}fireSelectionChange&&$scope.externalEvents.onSelectionChanged(),$scope.selectedGroup=null},$scope.isChecked=function(id){return $scope.singleSelection?null!==$scope.selectedModel&&angular.isDefined($scope.selectedModel[$scope.settings.externalIdProp])&&$scope.selectedModel[$scope.settings.externalIdProp]===getFindObj(id)[$scope.settings.externalIdProp]:-1!==findIndex($scope.selectedModel,getFindObj(id))},$scope.externalEvents.onInitDone(),$scope.keyDownLink=function(event){var nextOption,sourceScope=angular.element(event.target).scope(),parent=event.target.parentNode;if($scope.settings.keyboardControls)if(13===event.keyCode||32===event.keyCode)event.preventDefault(),sourceScope.option?$scope.setSelectedItem($scope.getPropertyForObject(sourceScope.option,$scope.settings.idProp),!1,!0):"deselectAll"===event.target.id?$scope.deselectAll():"selectAll"===event.target.id&&$scope.selectAll();else if(38===event.keyCode){for(event.preventDefault(),parent.previousElementSibling&&(nextOption=parent.previousElementSibling.querySelector("a")||parent.previousElementSibling.querySelector("input"));!nextOption&&parent;)parent=parent.previousElementSibling,parent&&(nextOption=parent.querySelector("a")||parent.querySelector("input"));nextOption&&nextOption.focus()}else if(40===event.keyCode){for(event.preventDefault(),parent.nextElementSibling&&(nextOption=parent.nextElementSibling.querySelector("a")||parent.nextElementSibling.querySelector("input"));!nextOption&&parent;)parent=parent.nextElementSibling,parent&&(nextOption=parent.querySelector("a")||parent.querySelector("input"));nextOption&&nextOption.focus()}else 27===event.keyCode&&(event.preventDefault(),$scope.toggleDropdown())},$scope.keyDownSearchDefault=function(event){var nextOption,parent=event.target.parentNode.parentNode;if($scope.settings.keyboardControls)if(9===event.keyCode||40===event.keyCode)event.preventDefault(),setTimeout(function(){angular.element($element)[0].querySelector(".option").focus()},0);else if(38===event.keyCode){for(event.preventDefault(),parent.previousElementSibling&&(nextOption=parent.previousElementSibling.querySelector("a")||parent.previousElementSibling.querySelector("input"));!nextOption&&parent;)parent=parent.previousElementSibling,parent&&(nextOption=parent.querySelector("a")||parent.querySelector("input"));nextOption&&nextOption.focus()}else 27===event.keyCode&&(event.preventDefault(),$scope.toggleDropdown())},$scope.keyDownSearch=function(event,searchFilter){var searchResult;$scope.settings.keyboardControls&&13===event.keyCode&&(1===$scope.settings.selectionLimit&&$scope.settings.enableSearch?(searchResult=$filter("filter")($scope.options,$scope.getFilter(searchFilter)),1===searchResult.length&&$scope.setSelectedItem($scope.getPropertyForObject(searchResult[0],$scope.settings.idProp),!1,!0)):$scope.settings.enableSearch&&$scope.selectAll())},$scope.getFilter=function(searchFilter){var filter={};return filter[$scope.settings.searchField]=searchFilter,filter},$scope.toggleSearch=function($event){$event&&$event.stopPropagation(),$scope.settings.enableSearch=!$scope.settings.enableSearch,$scope.settings.enableSearch||($scope.input.searchFilter="")},$scope.keyDownToggleSearch=function(){$scope.settings.keyboardControls&&13===event.keyCode&&($scope.toggleSearch(),$scope.settings.enableSearch?setTimeout(function(){angular.element($element)[0].querySelector(".searchField").focus()},0):angular.element($element)[0].querySelector(".option").focus())}}}}])}(angular); \ No newline at end of file diff --git a/index.html b/index.html index 8b4d4876..181948f8 100644 --- a/index.html +++ b/index.html @@ -25,13 +25,13 @@ - AngularJS Dropdown Multiselect by MyForce + AngularJS Dropdown Multiselect
diff --git a/package.json b/package.json index 6486b3e4..8d1d6c9b 100644 --- a/package.json +++ b/package.json @@ -1,40 +1,40 @@ { - "author": "pkempenaers@myforce.be", - "name": "angularjs-dropdown-multiselect", - "version": "1.10.2", - "description": "This directive gives you a Bootstrap Dropdown with the power of AngularJS directives.", - "homepage": "http://myforce.github.io/angularjs-dropdown-multiselect/#/", - "dependencies": { - "angular": "~1" - }, - "devDependencies": { - "express": "~3.4.4", - "grunt": "^0.4.5", - "grunt-build-control": "^0.1.3", - "grunt-contrib-concat": "~0.3.0", - "grunt-contrib-cssmin": "~0.7.0", - "grunt-contrib-jshint": "~0.7.0", - "grunt-contrib-less": "~0.8.1", - "grunt-contrib-uglify": "~0.2.5", - "grunt-karma": "~0.6.2" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/myforce/angularjs-dropdown-multiselect.git" - }, - "engines": { - "node": "0.10.10" - }, - "main": "src/angularjs-dropdown-multiselect.js", - "keywords": [ - "angular", - "multiselect" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/myforce/angularjs-dropdown-multiselect/issues" - } + "author": "pkempenaers@myforce.be", + "name": "angularjs-dropdown-multiselect", + "version": "1.11.0", + "description": "This directive gives you a Bootstrap Dropdown with the power of AngularJS directives.", + "homepage": "http://dotansimha.github.io/angularjs-dropdown-multiselect/#/", + "dependencies": { + "angular": "~1" + }, + "devDependencies": { + "express": "~3.4.4", + "grunt": "^0.4.5", + "grunt-build-control": "^0.1.3", + "grunt-contrib-concat": "~0.3.0", + "grunt-contrib-cssmin": "~0.7.0", + "grunt-contrib-jshint": "~0.7.0", + "grunt-contrib-less": "~0.8.1", + "grunt-contrib-uglify": "~0.2.5", + "grunt-karma": "~0.6.2" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dotansimha/angularjs-dropdown-multiselect.git" + }, + "engines": { + "node": "0.10.10" + }, + "main": "src/angularjs-dropdown-multiselect.js", + "keywords": [ + "angular", + "multiselect" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/dotansimha/angularjs-dropdown-multiselect/issues" + } } diff --git a/pages/images/myforcelogokleur.png b/pages/images/myforcelogokleur.png deleted file mode 100644 index a6b8030ed70f830ab7858d006c95a361b4cf2414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3492 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 diff --git a/pages/javascripts/pages/home/home.html b/pages/javascripts/pages/home/home.html index f3ecfce3..737791f6 100644 --- a/pages/javascripts/pages/home/home.html +++ b/pages/javascripts/pages/home/home.html @@ -12,12 +12,12 @@

What is AngularJS Dropdown Multiselect?

Download

There are several options to do that:
    -
  1. Using bower: `bower install myforce-angular-dropdown-multiselect`
  2. +
  3. Using bower: `bower install angular-dropdown-multiselect`
  4. - Download the .zip file from here + Download the .zip file from here
  5. - Using it from GitHub raw using this link + Using it from GitHub raw using this link
diff --git a/src/angularjs-dropdown-multiselect.js b/src/angularjs-dropdown-multiselect.js index 0923eb02..6c83532d 100644 --- a/src/angularjs-dropdown-multiselect.js +++ b/src/angularjs-dropdown-multiselect.js @@ -4,9 +4,9 @@ var directiveModule = angular.module('angularjs-dropdown-multiselect', []); -directiveModule.directive('mfDropdownStaticInclude', ['$compile', function($compile) { +directiveModule.directive('dmDropdownStaticInclude', ['$compile', function($compile) { return function(scope, element, attrs) { - var template = attrs.mfDropdownStaticInclude; + var template = attrs.dmDropdownStaticInclude; var contents = element.html(template).contents(); $compile(contents)(scope); }; @@ -54,9 +54,9 @@ directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$co template += ''; if (checkboxes) { - template += '
'; + template += '
'; } else { - template += ' '; + template += ' '; } template += '';