diff --git a/angular-dropdowns.js b/angular-dropdowns.js index b777831..9e65f15 100644 --- a/angular-dropdowns.js +++ b/angular-dropdowns.js @@ -73,7 +73,8 @@ dropdownModel: '=', dropdownItemLabel: '@', dropdownOnchange: '&', - dropdownDisabled: '=' + dropdownDisabled: '=', + dropdownForm: '=' }, controller: ['$scope', '$element', function ($scope, $element) { @@ -84,6 +85,7 @@ this.select = function (selected) { if (!angular.equals(selected, $scope.dropdownModel)) { $scope.dropdownModel = selected; + $scope.dropdownForm.$setDirty(); } $scope.dropdownOnchange({ selected: selected diff --git a/dist/angular-dropdowns.js b/dist/angular-dropdowns.js index b777831..9e65f15 100644 --- a/dist/angular-dropdowns.js +++ b/dist/angular-dropdowns.js @@ -73,7 +73,8 @@ dropdownModel: '=', dropdownItemLabel: '@', dropdownOnchange: '&', - dropdownDisabled: '=' + dropdownDisabled: '=', + dropdownForm: '=' }, controller: ['$scope', '$element', function ($scope, $element) { @@ -84,6 +85,7 @@ this.select = function (selected) { if (!angular.equals(selected, $scope.dropdownModel)) { $scope.dropdownModel = selected; + $scope.dropdownForm.$setDirty(); } $scope.dropdownOnchange({ selected: selected diff --git a/dist/angular-dropdowns.min.js b/dist/angular-dropdowns.min.js index 296676b..31c620c 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){"use strict";var d=o.module("ngDropdowns",[]);d.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("")),e.put("ngDropdowns/templates/dropdownMenuWrap.html",'
    ')}]),d.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[0].blur()},n.bind("click",function(o){o.stopPropagation(),d.dropdownDisabled||e.toggleActive(n)}),d.$on("$destroy",function(){e.unregister(n)})}],templateUrl:"ngDropdowns/templates/dropdownSelect.html"}}]),d.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"}}]),d.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(t.get("ngDropdowns/templates/dropdownMenuWrap.html")))(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)})}]}}]),d.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"}}]),d.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.clearActive=function(){o.forEach(t,function(e){e.removeClass("active")})},n.isActive=function(e){return e.hasClass("active")},n}])}(window,window.angular); \ No newline at end of file +!function(e,o){"use strict";var d=o.module("ngDropdowns",[]);d.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("")),e.put("ngDropdowns/templates/dropdownMenuWrap.html",'
    ')}]),d.directive("dropdownSelect",["DropdownService",function(e){return{restrict:"A",replace:!0,scope:{dropdownSelect:"=",dropdownModel:"=",dropdownItemLabel:"@",dropdownOnchange:"&",dropdownDisabled:"=",dropdownForm:"="},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.dropdownForm.$setDirty()),d.dropdownOnchange({selected:e}),n[0].blur()},n.bind("click",function(o){o.stopPropagation(),d.dropdownDisabled||e.toggleActive(n)}),d.$on("$destroy",function(){e.unregister(n)})}],templateUrl:"ngDropdowns/templates/dropdownSelect.html"}}]),d.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"}}]),d.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(t.get("ngDropdowns/templates/dropdownMenuWrap.html")))(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)})}]}}]),d.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"}}]),d.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.clearActive=function(){o.forEach(t,function(e){e.removeClass("active")})},n.isActive=function(e){return e.hasClass("active")},n}])}(window,window.angular); \ No newline at end of file