From 0619163d2809013d76554a3377292ff54429daa1 Mon Sep 17 00:00:00 2001 From: Jeff Huijsmans Date: Tue, 21 Jul 2015 16:38:10 +0200 Subject: [PATCH 1/3] Multiple selections --- angular-dropdowns.js | 37 +++++++++++++++++++++++++++++++++-- dist/angular-dropdowns.js | 37 +++++++++++++++++++++++++++++++++-- dist/angular-dropdowns.min.js | 2 +- example/app.js | 14 +++++++++++++ example/index.html | 8 ++++++++ 5 files changed, 93 insertions(+), 5 deletions(-) diff --git a/angular-dropdowns.js b/angular-dropdowns.js index 94c3938..a5d2afd 100644 --- a/angular-dropdowns.js +++ b/angular-dropdowns.js @@ -79,6 +79,7 @@ DropdownService.register($element); this.select = function (selected) { + console.log("SELECTED 2"); if (!angular.equals(selected, $scope.dropdownModel)) { $scope.dropdownModel = selected; } @@ -88,6 +89,7 @@ }; $element.bind('click', function (event) { + console.log("CLICK 2"); event.stopPropagation(); if (!$scope.dropdownDisabled) { DropdownService.toggleActive($element); @@ -137,7 +139,8 @@ dropdownModel: '=', dropdownItemLabel: '@', dropdownOnchange: '&', - dropdownDisabled: '=' + dropdownDisabled: '=', + dropdownMultiple: '=' }, controller: ['$scope', '$element', function ($scope, $element) { @@ -156,18 +159,41 @@ $wrap.append($element); $wrap.append($template); + if($scope.dropdownMultiple) { + $scope.dropdownModel.multiple = []; + } + DropdownService.register(tpl); this.select = function (selected) { - if (!angular.equals(selected, $scope.dropdownModel)) { + if (!angular.equals(selected, $scope.dropdownModel) && !$scope.dropdownMultiple) { $scope.dropdownModel = selected; } + + if($scope.dropdownMultiple) { + var exists = -1; + for(var i = 0; i < $scope.dropdownModel.multiple.length; i++) { + if($scope.dropdownModel.multiple[i] === selected) { + exists = i; + break; + } + } + if(exists == -1) { + $scope.dropdownModel.multiple.push(selected); + } else { + $scope.dropdownModel.multiple.splice(exists, 1); + } + } + $scope.dropdownOnchange({ selected: selected }); + + console.log("SELECT 1"); }; $element.bind('click', function (event) { + console.log("CLICK 1"); event.stopPropagation(); if (!$scope.dropdownDisabled) { DropdownService.toggleActive(tpl); @@ -175,6 +201,7 @@ }); $scope.$on('$destroy', function () { + console.log("DESTROY 1"); DropdownService.unregister(tpl); }); }] @@ -201,6 +228,12 @@ }; }, + controller: ['$element', function ($element) { + $element.bind('click', function (event) { + event.stopPropagation(); + }) + }], + templateUrl: 'ngDropdowns/templates/dropdownMenuItem.html' }; } diff --git a/dist/angular-dropdowns.js b/dist/angular-dropdowns.js index 94c3938..a5d2afd 100644 --- a/dist/angular-dropdowns.js +++ b/dist/angular-dropdowns.js @@ -79,6 +79,7 @@ DropdownService.register($element); this.select = function (selected) { + console.log("SELECTED 2"); if (!angular.equals(selected, $scope.dropdownModel)) { $scope.dropdownModel = selected; } @@ -88,6 +89,7 @@ }; $element.bind('click', function (event) { + console.log("CLICK 2"); event.stopPropagation(); if (!$scope.dropdownDisabled) { DropdownService.toggleActive($element); @@ -137,7 +139,8 @@ dropdownModel: '=', dropdownItemLabel: '@', dropdownOnchange: '&', - dropdownDisabled: '=' + dropdownDisabled: '=', + dropdownMultiple: '=' }, controller: ['$scope', '$element', function ($scope, $element) { @@ -156,18 +159,41 @@ $wrap.append($element); $wrap.append($template); + if($scope.dropdownMultiple) { + $scope.dropdownModel.multiple = []; + } + DropdownService.register(tpl); this.select = function (selected) { - if (!angular.equals(selected, $scope.dropdownModel)) { + if (!angular.equals(selected, $scope.dropdownModel) && !$scope.dropdownMultiple) { $scope.dropdownModel = selected; } + + if($scope.dropdownMultiple) { + var exists = -1; + for(var i = 0; i < $scope.dropdownModel.multiple.length; i++) { + if($scope.dropdownModel.multiple[i] === selected) { + exists = i; + break; + } + } + if(exists == -1) { + $scope.dropdownModel.multiple.push(selected); + } else { + $scope.dropdownModel.multiple.splice(exists, 1); + } + } + $scope.dropdownOnchange({ selected: selected }); + + console.log("SELECT 1"); }; $element.bind('click', function (event) { + console.log("CLICK 1"); event.stopPropagation(); if (!$scope.dropdownDisabled) { DropdownService.toggleActive(tpl); @@ -175,6 +201,7 @@ }); $scope.$on('$destroy', function () { + console.log("DESTROY 1"); DropdownService.unregister(tpl); }); }] @@ -201,6 +228,12 @@ }; }, + controller: ['$element', function ($element) { + $element.bind('click', function (event) { + event.stopPropagation(); + }) + }], + templateUrl: 'ngDropdowns/templates/dropdownMenuItem.html' }; } diff --git a/dist/angular-dropdowns.min.js b/dist/angular-dropdowns.min.js index 2d3a1c2..da1b654 100644 --- a/dist/angular-dropdowns.min.js +++ b/dist/angular-dropdowns.min.js @@ -1,4 +1,4 @@ /** * @license MIT http://jseppi.mit-license.org/license.html */ -!function(e,o,d){"use strict";var n=o.module("ngDropdowns",[]);n.run(["$templateCache",function(e){e.put("ngDropdowns/templates/dropdownSelect.html",['
','{{dropdownModel[labelField]}}','","
"].join("")),e.put("ngDropdowns/templates/dropdownSelectItem.html",["
  • ",'',"{{dropdownSelectItem[dropdownItemLabel]}}","",'',"{{dropdownSelectItem[dropdownItemLabel]}}","","
  • "].join("")),e.put("ngDropdowns/templates/dropdownMenu.html",['"].join("")),e.put("ngDropdowns/templates/dropdownMenuItem.html",["
  • ",'',"{{dropdownMenuItem[dropdownItemLabel]}}","",'',"{{dropdownMenuItem[dropdownItemLabel]}}","","
  • "].join(""))}]),n.directive("dropdownSelect",["DropdownService",function(e){return{restrict:"A",replace:!0,scope:{dropdownSelect:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"="},controller:["$scope","$element",function(d,n){d.labelField=d.dropdownItemLabel||"text",e.register(n),this.select=function(e){o.equals(e,d.dropdownModel)||(d.dropdownModel=e),d.dropdownOnchange({selected:e})},n.bind("click",function(o){o.stopPropagation(),d.dropdownDisabled||e.toggleActive(n)}),d.$on("$destroy",function(){e.unregister(n)})}],templateUrl:"ngDropdowns/templates/dropdownSelect.html"}}]),n.directive("dropdownSelectItem",[function(){return{require:"^dropdownSelect",replace:!0,scope:{dropdownItemLabel:"=",dropdownSelectItem:"="},link:function(e,o,d,n){e.selectItem=function(){e.dropdownSelectItem.href||n.select(e.dropdownSelectItem)}},templateUrl:"ngDropdowns/templates/dropdownSelectItem.html"}}]),n.directive("dropdownMenu",["$parse","$compile","DropdownService","$templateCache",function(e,d,n,t){return{restrict:"A",replace:!1,scope:{dropdownMenu:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"="},controller:["$scope","$element",function(e,r){e.labelField=e.dropdownItemLabel||"text";var l=o.element(t.get("ngDropdowns/templates/dropdownMenu.html"));l.data("$dropdownMenuController",this);var i=d(l)(e),p=d(o.element('
    '))(e);r.replaceWith(p),p.append(r),p.append(l),n.register(i),this.select=function(d){o.equals(d,e.dropdownModel)||(e.dropdownModel=d),e.dropdownOnchange({selected:d})},r.bind("click",function(o){o.stopPropagation(),e.dropdownDisabled||n.toggleActive(i)}),e.$on("$destroy",function(){n.unregister(i)})}]}}]),n.directive("dropdownMenuItem",[function(){return{require:"^dropdownMenu",replace:!0,scope:{dropdownMenuItem:"=",dropdownItemLabel:"="},link:function(e,o,d,n){e.selectItem=function(){e.dropdownMenuItem.href||n.select(e.dropdownMenuItem)}},templateUrl:"ngDropdowns/templates/dropdownMenuItem.html"}}]),n.factory("DropdownService",["$document",function(e){var d=e.find("body"),n={},t=[];return d.bind("click",function(){o.forEach(t,function(e){e.removeClass("active")})}),n.register=function(e){t.push(e)},n.unregister=function(e){var o;o=t.indexOf(e),o>-1&&t.splice(o,1)},n.toggleActive=function(e){o.forEach(t,function(o){o!==e&&o.removeClass("active")}),e.toggleClass("active")},n}])}(window,window.angular); \ No newline at end of file +!function(e,o,d){"use strict";var n=o.module("ngDropdowns",[]);n.run(["$templateCache",function(e){e.put("ngDropdowns/templates/dropdownSelect.html",['
    ','{{dropdownModel[labelField]}}','","
    "].join("")),e.put("ngDropdowns/templates/dropdownSelectItem.html",["
  • ",'',"{{dropdownSelectItem[dropdownItemLabel]}}","",'',"{{dropdownSelectItem[dropdownItemLabel]}}","","
  • "].join("")),e.put("ngDropdowns/templates/dropdownMenu.html",['"].join("")),e.put("ngDropdowns/templates/dropdownMenuItem.html",["
  • ",'',"{{dropdownMenuItem[dropdownItemLabel]}}","",'',"{{dropdownMenuItem[dropdownItemLabel]}}","","
  • "].join(""))}]),n.directive("dropdownSelect",["DropdownService",function(e){return{restrict:"A",replace:!0,scope:{dropdownSelect:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"="},controller:["$scope","$element",function(d,n){d.labelField=d.dropdownItemLabel||"text",e.register(n),this.select=function(e){console.log("SELECTED 2"),o.equals(e,d.dropdownModel)||(d.dropdownModel=e),d.dropdownOnchange({selected:e})},n.bind("click",function(o){console.log("CLICK 2"),o.stopPropagation(),d.dropdownDisabled||e.toggleActive(n)}),d.$on("$destroy",function(){e.unregister(n)})}],templateUrl:"ngDropdowns/templates/dropdownSelect.html"}}]),n.directive("dropdownSelectItem",[function(){return{require:"^dropdownSelect",replace:!0,scope:{dropdownItemLabel:"=",dropdownSelectItem:"="},link:function(e,o,d,n){e.selectItem=function(){e.dropdownSelectItem.href||n.select(e.dropdownSelectItem)}},templateUrl:"ngDropdowns/templates/dropdownSelectItem.html"}}]),n.directive("dropdownMenu",["$parse","$compile","DropdownService","$templateCache",function(e,d,n,t){return{restrict:"A",replace:!1,scope:{dropdownMenu:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"=",dropdownMultiple:"="},controller:["$scope","$element",function(e,l){e.labelField=e.dropdownItemLabel||"text";var r=o.element(t.get("ngDropdowns/templates/dropdownMenu.html"));r.data("$dropdownMenuController",this);var p=d(r)(e),i=d(o.element('
    '))(e);l.replaceWith(i),i.append(l),i.append(r),e.dropdownMultiple&&(e.dropdownModel.multiple=[]),n.register(p),this.select=function(d){if(o.equals(d,e.dropdownModel)||e.dropdownMultiple||(e.dropdownModel=d),e.dropdownMultiple){for(var n=-1,t=0;t-1&&t.splice(o,1)},n.toggleActive=function(e){o.forEach(t,function(o){o!==e&&o.removeClass("active")}),e.toggleClass("active")},n}])}(window,window.angular); \ No newline at end of file diff --git a/example/app.js b/example/app.js index 1118277..be3477d 100644 --- a/example/app.js +++ b/example/app.js @@ -74,4 +74,18 @@ app.controller('AppCtrl', function($scope) { ]; $scope.ddMenuSelected3 = {}; + + $scope.ddMenuOptions4 = [ + { + text: 'Option4-1' + }, { + text: 'Option4-2' + }, { + text: 'Option4-3' + }, { + text: 'Option4-4' + } + ]; + + $scope.ddMenuSelected4 = {}; }); diff --git a/example/index.html b/example/index.html index 657d2a8..ca79998 100644 --- a/example/index.html +++ b/example/index.html @@ -46,6 +46,14 @@

    On an Anchor

    Menu +
    + +

    Multiple selections

    +

    You have selected: {{ddMenuSelected4}}

    + +




























    From 2e4bbccd6c77424bcd0ceacfc4343cfcccb5f323 Mon Sep 17 00:00:00 2001 From: Jeff Huijsmans Date: Wed, 22 Jul 2015 10:46:55 +0200 Subject: [PATCH 2/3] Multiple selections now possible on both dd-select and dd-menu --- angular-dropdowns.css | 10 ++++ angular-dropdowns.js | 87 +++++++++++++++++++++++++--------- dist/angular-dropdowns.css | 10 ++++ dist/angular-dropdowns.js | 87 +++++++++++++++++++++++++--------- dist/angular-dropdowns.min.css | 2 +- dist/angular-dropdowns.min.js | 2 +- example/app.js | 23 +++++++++ example/index.html | 13 +++-- 8 files changed, 183 insertions(+), 51 deletions(-) diff --git a/angular-dropdowns.css b/angular-dropdowns.css index 34343bf..c76c310 100644 --- a/angular-dropdowns.css +++ b/angular-dropdowns.css @@ -98,6 +98,11 @@ background: #f3f8f8; } +.wrap-dd-select .dropdown li.selected { + background-color: #ffaaaa; + border-radius: 7px; +} + .wrap-dd-select .dropdown:after { content: ""; width: 0; @@ -167,6 +172,11 @@ padding: 10px 0; } +.wrap-dd-menu .dropdown li.selected { + background-color: #ffaaaa; + border-radius: 7px; +} + .wrap-dd-menu .dropdown li a { display: block; padding: 10px; diff --git a/angular-dropdowns.js b/angular-dropdowns.js index a5d2afd..506b6e0 100644 --- a/angular-dropdowns.js +++ b/angular-dropdowns.js @@ -9,19 +9,21 @@ dd.run(['$templateCache', function ($templateCache) { $templateCache.put('ngDropdowns/templates/dropdownSelect.html', [ '
    ', - '{{dropdownModel[labelField]}}', + '{{dropdownModel[labelField]}}', + '{{list(dropdownModel)}}', '', '
    ' ].join('')); $templateCache.put('ngDropdowns/templates/dropdownSelectItem.html', [ - '
  • ', + '
  • ', '', + ' dropdown-menu-item="item"', + ' dropdown-menu-item-multiple="dropdownMultiple">', '
  • ', '' ].join('')); $templateCache.put('ngDropdowns/templates/dropdownMenuItem.html', [ - '
  • ', + '
  • ', '', - '{{dropdownModel[labelField]}}', + '{{dropdownModel[labelField]}}', + '{{list(dropdownModel)}}', '', '' ].join('')); $templateCache.put('ngDropdowns/templates/dropdownSelectItem.html', [ - '
  • ', + '
  • ', '', + ' dropdown-menu-item="item"', + ' dropdown-menu-item-multiple="dropdownMultiple">', '
  • ', '' ].join('')); $templateCache.put('ngDropdowns/templates/dropdownMenuItem.html', [ - '
  • ', + '
  • ', '','{{dropdownModel[labelField]}}','",""].join("")),e.put("ngDropdowns/templates/dropdownSelectItem.html",["
  • ",'',"{{dropdownSelectItem[dropdownItemLabel]}}","",'',"{{dropdownSelectItem[dropdownItemLabel]}}","","
  • "].join("")),e.put("ngDropdowns/templates/dropdownMenu.html",['"].join("")),e.put("ngDropdowns/templates/dropdownMenuItem.html",["
  • ",'',"{{dropdownMenuItem[dropdownItemLabel]}}","",'',"{{dropdownMenuItem[dropdownItemLabel]}}","","
  • "].join(""))}]),n.directive("dropdownSelect",["DropdownService",function(e){return{restrict:"A",replace:!0,scope:{dropdownSelect:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"="},controller:["$scope","$element",function(d,n){d.labelField=d.dropdownItemLabel||"text",e.register(n),this.select=function(e){console.log("SELECTED 2"),o.equals(e,d.dropdownModel)||(d.dropdownModel=e),d.dropdownOnchange({selected:e})},n.bind("click",function(o){console.log("CLICK 2"),o.stopPropagation(),d.dropdownDisabled||e.toggleActive(n)}),d.$on("$destroy",function(){e.unregister(n)})}],templateUrl:"ngDropdowns/templates/dropdownSelect.html"}}]),n.directive("dropdownSelectItem",[function(){return{require:"^dropdownSelect",replace:!0,scope:{dropdownItemLabel:"=",dropdownSelectItem:"="},link:function(e,o,d,n){e.selectItem=function(){e.dropdownSelectItem.href||n.select(e.dropdownSelectItem)}},templateUrl:"ngDropdowns/templates/dropdownSelectItem.html"}}]),n.directive("dropdownMenu",["$parse","$compile","DropdownService","$templateCache",function(e,d,n,t){return{restrict:"A",replace:!1,scope:{dropdownMenu:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"=",dropdownMultiple:"="},controller:["$scope","$element",function(e,l){e.labelField=e.dropdownItemLabel||"text";var r=o.element(t.get("ngDropdowns/templates/dropdownMenu.html"));r.data("$dropdownMenuController",this);var p=d(r)(e),i=d(o.element('
    '))(e);l.replaceWith(i),i.append(l),i.append(r),e.dropdownMultiple&&(e.dropdownModel.multiple=[]),n.register(p),this.select=function(d){if(o.equals(d,e.dropdownModel)||e.dropdownMultiple||(e.dropdownModel=d),e.dropdownMultiple){for(var n=-1,t=0;t-1&&t.splice(o,1)},n.toggleActive=function(e){o.forEach(t,function(o){o!==e&&o.removeClass("active")}),e.toggleClass("active")},n}])}(window,window.angular); \ No newline at end of file +!function(e,o,d){"use strict";var n=o.module("ngDropdowns",[]);n.run(["$templateCache",function(e){e.put("ngDropdowns/templates/dropdownSelect.html",['
    ','{{dropdownModel[labelField]}}','{{list(dropdownModel)}}','","
    "].join("")),e.put("ngDropdowns/templates/dropdownSelectItem.html",["
  • ",'',"{{dropdownSelectItem[dropdownItemLabel]}}","",'',"{{dropdownSelectItem[dropdownItemLabel]}}","","
  • "].join("")),e.put("ngDropdowns/templates/dropdownMenu.html",['"].join("")),e.put("ngDropdowns/templates/dropdownMenuItem.html",["
  • ",'',"{{dropdownMenuItem[dropdownItemLabel]}}","",'',"{{dropdownMenuItem[dropdownItemLabel]}}","","
  • "].join(""))}]),n.directive("dropdownSelect",["DropdownService",function(e){return{restrict:"A",replace:!0,scope:{dropdownSelect:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"=",dropdownMultiple:"=",dropdownMultipleStandardLabel:"@"},controller:["$scope","$element",function(d,n){d.labelField=d.dropdownItemLabel||"text",d.dropdownMultiple&&(d.dropdownModel=[]),e.register(n),this.select=function(e){if(o.equals(e,d.dropdownModel)||d.dropdownMultiple||(d.dropdownModel=e),d.dropdownMultiple){for(var n=-1,t=0;t'))(e);l.replaceWith(i),i.append(l),i.append(r),e.dropdownMultiple&&(e.dropdownModel=[]),n.register(p),this.select=function(d){if(o.equals(d,e.dropdownModel)||e.dropdownMultiple||(e.dropdownModel=d),e.dropdownMultiple){for(var n=-1,t=0;t-1&&t.splice(o,1)},n.toggleActive=function(e){o.forEach(t,function(o){o!==e&&o.removeClass("active")}),e.toggleClass("active")},n}])}(window,window.angular); \ No newline at end of file diff --git a/example/app.js b/example/app.js index be3477d..adf4470 100644 --- a/example/app.js +++ b/example/app.js @@ -26,6 +26,29 @@ app.controller('AppCtrl', function($scope) { text: "Select an Option" }; + $scope.ddSelectOptions2 = [ + { + text: 'Label', + divider: true + }, { + text: 'Option1', + value: 'one', + iconCls: 'someicon' + }, { + text: 'Option2', + someprop: 'somevalue' + }, { + divider: true + }, { + text: 'Option4', + href: 'http://www.google.com' + } + ]; + + $scope.ddSelectSelected2 = { + text: "Select an Option" + }; + $scope.ddMenuOptions = [ { text: 'Label', diff --git a/example/index.html b/example/index.html index ca79998..4448e81 100644 --- a/example/index.html +++ b/example/index.html @@ -19,10 +19,16 @@

    Dropdown Select

    - + +

    Single

    You have selected: {{ddSelectSelected}}

    +

    Multiple

    +

    You have selected: {{ddSelectSelected2}}

    +
    + +

    Dropdown Menu

    @@ -46,14 +52,11 @@

    On an Anchor

    Menu -
    - -

    Multiple selections

    +

    Multiple selections

    You have selected: {{ddMenuSelected4}}

    -




























    From 0c2ef3f9269995d18721e01c2b6cbc7fc5881c8b Mon Sep 17 00:00:00 2001 From: Jeff Huijsmans Date: Wed, 22 Jul 2015 10:49:44 +0200 Subject: [PATCH 3/3] Code warnings resolved --- angular-dropdowns.js | 18 ++++++++++-------- dist/angular-dropdowns.js | 18 ++++++++++-------- dist/angular-dropdowns.min.js | 2 +- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/angular-dropdowns.js b/angular-dropdowns.js index 506b6e0..f4344fd 100644 --- a/angular-dropdowns.js +++ b/angular-dropdowns.js @@ -101,7 +101,7 @@ } } - if(exists == -1) { + if(exists === -1) { selected.selected = true; $scope.dropdownModel.push(selected); } else { @@ -130,9 +130,9 @@ var returnString = ""; $scope.dropdownModel.forEach(function(obj) { returnString += obj.text + ", "; - }) + }); return returnString !== ""? returnString.substring(0, returnString.length - 2) : $scope.dropdownMultipleStandardLabel; - } + }; }], templateUrl: 'ngDropdowns/templates/dropdownSelect.html' }; @@ -161,9 +161,10 @@ controller: ['$scope', '$element', function ($scope, $element) { $element.bind('click', function (event) { - if($scope.dropdownSelectItemMultiple) + if($scope.dropdownSelectItemMultiple) { event.stopPropagation(); - }) + } + }); }], templateUrl: 'ngDropdowns/templates/dropdownSelectItem.html' @@ -221,7 +222,7 @@ } } - if(exists == -1) { + if(exists === -1) { selected.selected = true; $scope.dropdownModel.push(selected); } else { @@ -272,9 +273,10 @@ controller: ['$scope', '$element', function ($scope, $element) { $element.bind('click', function (event) { - if($scope.dropdownMenuItemMultiple) + if($scope.dropdownMenuItemMultiple) { event.stopPropagation(); - }) + } + }); }], templateUrl: 'ngDropdowns/templates/dropdownMenuItem.html' diff --git a/dist/angular-dropdowns.js b/dist/angular-dropdowns.js index 506b6e0..f4344fd 100644 --- a/dist/angular-dropdowns.js +++ b/dist/angular-dropdowns.js @@ -101,7 +101,7 @@ } } - if(exists == -1) { + if(exists === -1) { selected.selected = true; $scope.dropdownModel.push(selected); } else { @@ -130,9 +130,9 @@ var returnString = ""; $scope.dropdownModel.forEach(function(obj) { returnString += obj.text + ", "; - }) + }); return returnString !== ""? returnString.substring(0, returnString.length - 2) : $scope.dropdownMultipleStandardLabel; - } + }; }], templateUrl: 'ngDropdowns/templates/dropdownSelect.html' }; @@ -161,9 +161,10 @@ controller: ['$scope', '$element', function ($scope, $element) { $element.bind('click', function (event) { - if($scope.dropdownSelectItemMultiple) + if($scope.dropdownSelectItemMultiple) { event.stopPropagation(); - }) + } + }); }], templateUrl: 'ngDropdowns/templates/dropdownSelectItem.html' @@ -221,7 +222,7 @@ } } - if(exists == -1) { + if(exists === -1) { selected.selected = true; $scope.dropdownModel.push(selected); } else { @@ -272,9 +273,10 @@ controller: ['$scope', '$element', function ($scope, $element) { $element.bind('click', function (event) { - if($scope.dropdownMenuItemMultiple) + if($scope.dropdownMenuItemMultiple) { event.stopPropagation(); - }) + } + }); }], templateUrl: 'ngDropdowns/templates/dropdownMenuItem.html' diff --git a/dist/angular-dropdowns.min.js b/dist/angular-dropdowns.min.js index cb9710e..0fcb268 100644 --- a/dist/angular-dropdowns.min.js +++ b/dist/angular-dropdowns.min.js @@ -1,4 +1,4 @@ /** * @license MIT http://jseppi.mit-license.org/license.html */ -!function(e,o,d){"use strict";var n=o.module("ngDropdowns",[]);n.run(["$templateCache",function(e){e.put("ngDropdowns/templates/dropdownSelect.html",['
    ','{{dropdownModel[labelField]}}','{{list(dropdownModel)}}','","
    "].join("")),e.put("ngDropdowns/templates/dropdownSelectItem.html",["
  • ",'',"{{dropdownSelectItem[dropdownItemLabel]}}","",'',"{{dropdownSelectItem[dropdownItemLabel]}}","","
  • "].join("")),e.put("ngDropdowns/templates/dropdownMenu.html",['"].join("")),e.put("ngDropdowns/templates/dropdownMenuItem.html",["
  • ",'',"{{dropdownMenuItem[dropdownItemLabel]}}","",'',"{{dropdownMenuItem[dropdownItemLabel]}}","","
  • "].join(""))}]),n.directive("dropdownSelect",["DropdownService",function(e){return{restrict:"A",replace:!0,scope:{dropdownSelect:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"=",dropdownMultiple:"=",dropdownMultipleStandardLabel:"@"},controller:["$scope","$element",function(d,n){d.labelField=d.dropdownItemLabel||"text",d.dropdownMultiple&&(d.dropdownModel=[]),e.register(n),this.select=function(e){if(o.equals(e,d.dropdownModel)||d.dropdownMultiple||(d.dropdownModel=e),d.dropdownMultiple){for(var n=-1,t=0;t'))(e);l.replaceWith(i),i.append(l),i.append(r),e.dropdownMultiple&&(e.dropdownModel=[]),n.register(p),this.select=function(d){if(o.equals(d,e.dropdownModel)||e.dropdownMultiple||(e.dropdownModel=d),e.dropdownMultiple){for(var n=-1,t=0;t-1&&t.splice(o,1)},n.toggleActive=function(e){o.forEach(t,function(o){o!==e&&o.removeClass("active")}),e.toggleClass("active")},n}])}(window,window.angular); \ No newline at end of file +!function(e,o,d){"use strict";var n=o.module("ngDropdowns",[]);n.run(["$templateCache",function(e){e.put("ngDropdowns/templates/dropdownSelect.html",['
    ','{{dropdownModel[labelField]}}','{{list(dropdownModel)}}','","
    "].join("")),e.put("ngDropdowns/templates/dropdownSelectItem.html",["
  • ",'',"{{dropdownSelectItem[dropdownItemLabel]}}","",'',"{{dropdownSelectItem[dropdownItemLabel]}}","","
  • "].join("")),e.put("ngDropdowns/templates/dropdownMenu.html",['"].join("")),e.put("ngDropdowns/templates/dropdownMenuItem.html",["
  • ",'',"{{dropdownMenuItem[dropdownItemLabel]}}","",'',"{{dropdownMenuItem[dropdownItemLabel]}}","","
  • "].join(""))}]),n.directive("dropdownSelect",["DropdownService",function(e){return{restrict:"A",replace:!0,scope:{dropdownSelect:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"=",dropdownMultiple:"=",dropdownMultipleStandardLabel:"@"},controller:["$scope","$element",function(d,n){d.labelField=d.dropdownItemLabel||"text",d.dropdownMultiple&&(d.dropdownModel=[]),e.register(n),this.select=function(e){if(o.equals(e,d.dropdownModel)||d.dropdownMultiple||(d.dropdownModel=e),d.dropdownMultiple){for(var n=-1,t=0;t'))(e);l.replaceWith(i),i.append(l),i.append(r),e.dropdownMultiple&&(e.dropdownModel=[]),n.register(p),this.select=function(d){if(o.equals(d,e.dropdownModel)||e.dropdownMultiple||(e.dropdownModel=d),e.dropdownMultiple){for(var n=-1,t=0;t-1&&t.splice(o,1)},n.toggleActive=function(e){o.forEach(t,function(o){o!==e&&o.removeClass("active")}),e.toggleClass("active")},n}])}(window,window.angular); \ No newline at end of file