diff --git a/bower.json b/bower.json index 4440666..96f519f 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "nya-bootstrap-select", - "version": "2.0.0", + "version": "2.0.1", "main": [ "dist/js/nya-bs-select.js", "dist/css/nya-bs-select.css" diff --git a/dist/css/nya-bs-select.css b/dist/css/nya-bs-select.css index 620fe75..9c12074 100644 --- a/dist/css/nya-bs-select.css +++ b/dist/css/nya-bs-select.css @@ -1,5 +1,5 @@ /** - * nya-bootstrap-select v2.0.0 + * nya-bootstrap-select v2.0.1 * Copyright 2014 Nyasoft * Licensed under MIT license */ diff --git a/dist/css/nya-bs-select.min.css b/dist/css/nya-bs-select.min.css index 8744335..cd6d773 100644 --- a/dist/css/nya-bs-select.min.css +++ b/dist/css/nya-bs-select.min.css @@ -1,5 +1,5 @@ /** - * nya-bootstrap-select v2.0.0 + * nya-bootstrap-select v2.0.1 * Copyright 2014 Nyasoft * Licensed under MIT license */ diff --git a/dist/js/nya-bs-select.js b/dist/js/nya-bs-select.js index 65489d3..5dffc9f 100644 --- a/dist/js/nya-bs-select.js +++ b/dist/js/nya-bs-select.js @@ -1,5 +1,5 @@ /** - * nya-bootstrap-select v2.0.0 + * nya-bootstrap-select v2.0.1 * Copyright 2014 Nyasoft * Licensed under MIT license */ @@ -426,23 +426,24 @@ nyaBsSelect.directive('nyaBsSelect', ['$parse', '$document', '$timeout', functio return !value || value.length === 0; }; } - - $scope.$watch($attrs.disabled, function(disabled){ - if(!!disabled) { - dropdownToggle.addClass('disabled'); - previousTabIndex = dropdownToggle.attr('tabindex'); - dropdownToggle.attr('tabindex', '-1'); - isDisabled = true; - } else { - dropdownToggle.removeClass('disabled'); - if(previousTabIndex) { - dropdownToggle.attr('tabindex', previousTabIndex); + if(typeof $attrs.disabled !== 'undefined') { + $scope.$watch($attrs.disabled, function(disabled){ + if(!!disabled) { + dropdownToggle.addClass('disabled'); + previousTabIndex = dropdownToggle.attr('tabindex'); + dropdownToggle.attr('tabindex', '-1'); + isDisabled = true; } else { - dropdownToggle.removeAttr('tabindex'); + dropdownToggle.removeClass('disabled'); + if(previousTabIndex) { + dropdownToggle.attr('tabindex', previousTabIndex); + } else { + dropdownToggle.removeAttr('tabindex'); + } + isDisabled = false; } - isDisabled = false; - } - }); + }); + } /** * Do some check on modelValue. remove no existing value diff --git a/dist/js/nya-bs-select.min.js b/dist/js/nya-bs-select.min.js index 1191b92..f1ba32c 100644 --- a/dist/js/nya-bs-select.min.js +++ b/dist/js/nya-bs-select.min.js @@ -1,6 +1,6 @@ /** - * nya-bootstrap-select v2.0.0 + * nya-bootstrap-select v2.0.1 * Copyright 2014 Nyasoft * Licensed under MIT license */ -!function(){"use strict";function a(){return++j}function b(a){return a&&a.window===a}function c(a){return"string"==typeof a}function d(a){if(null==a||b(a))return!1;var d=a.length;return 1===a.nodeType&&d?!0:c(a)||Array.isArray(a)||0===d||"number"==typeof d&&d>0&&d-1 in a}function e(){return Object.create(null)}function f(b,c){var d,e=typeof b;return"function"==e||"object"==e&&null!==b?"function"==typeof(d=b.$$hashKey)?d=b.$$hashKey():void 0===d&&(d=b.$$hashKey=(c||a)()):d=b,e+":"+d}function g(a,b,c){var d,e,f=[],g=[];for(d=0;dc;c++)if(u(b,a[c]))return!0;return!1},o=function(a,b){var c,d=a.length;if(0===d)return-1;for(c=0;d>c;c++)if(u(b,a[c]))return c;return-1},p=function(a,b,c){var d,e=a,f=typeof c;if(a==b)return null;do if("string"===f){if(d=" "+e.className+" ",1===e.nodeType&&d.replace(/[\t\r\n\f]/g," ").indexOf(c)>=0)return e}else if(e==c)return e;while((e=e.parentNode)&&e!=b&&9!==e.nodeType);return null},q=function(a){var b,c=a.className.replace(/[\t\r\n\f]/g," ").trim();b=c.split(" ");for(var d=0;dd;d++)if(-1!==c.eq(d).text().toLowerCase().indexOf(b.toLowerCase()))return!0;return!1},t=angular.element,u=angular.equals,v=angular.copy,w=angular.module("nya.bootstrap.select",[]);w.controller("nyaBsSelectCtrl",function(){var a=this;a.keyIdentifier=null,a.valueIdentifier=null,a.isMultiple=!1,a.onCollectionChange=function(){},a.setId=function(b){a.id=b||"id#"+Math.floor(1e4*Math.random())}}),w.directive("nyaBsSelect",["$parse","$document","$timeout",function(a,b,c){var d="Nothing selected",e='',f='',g='',h='',j='
  • NO SEARCH RESULT
  • ';return{restrict:"ECA",require:["ngModel","nyaBsSelect"],controller:"nyaBsSelectCtrl",compile:function(k,l){k.addClass("btn-group");var m,w,x,y,z,A,B=k.children(),C=t(e),D=t(f),E=t(h),F="undefined"!=typeof l.multiple;for(x=q(k[0]),x.forEach(function(a){/btn-(?:primary|info|success|warning|danger|inverse)/.test(a)&&(k.removeClass(a),C.removeClass("btn-default"),C.addClass(a)),(a="form-control")&&C.addClass(a)}),E.append(B),y=B.length,z=0;y>z;z++)A=B.eq(z),(A.hasClass("nya-bs-option")||A.attr("nya-bs-option"))&&A.find("a").attr("tabindex","0");return"true"===l.liveSearch&&(m=t(g),w=t(j),D.append(m),E.append(w)),C.children().eq(0).text(l.title?l.title:d),D.append(E),k.append(C),k.append(D),function(e,f,g,h){function j(){var a,b,c=E.children(),d=c.length;for(a=0;d>a;a++)if(b=c.eq(a),b.hasClass("active")&&b.hasClass("nya-bs-option"))return b;return null}function k(a){for(var b,c=a.childNodes,d=c.length,e=0;d>e;e++)if(b=c[e],1===b.nodeType&&"a"===b.tagName.toLowerCase()){b.focus();break}}function l(a){var b;return b=E.children().eq(a?0:E.children().length-1),!b.hasClass("nya-bs-option")||b.hasClass("disabled")||b.hasClass("not-match")?a?q(b[0],"nextSibling"):q(b[0],"previousSibling"):b[0]}function q(a,b){if(!a||r(a,"nya-bs-option")){for(var c=a;(c=i(c,b))&&c.nodeType;)if(r(c,"nya-bs-option")&&!r(c,"disabled")&&!r(c,"not-match"))return c;return null}}function x(a){var b,c,d,g=J.$modelValue;b=y(a),b&&(F?(c=Array.isArray(g)?v(g):[],d=o(c,b),-1===d?(c.push(b),a.addClass("selected")):(c.splice(d,1),a.removeClass("selected"))):(E.children().removeClass("selected"),c=b,a.addClass("selected")),J.$setViewValue(c),e.$digest()),F||f.removeClass("open"),A()}function y(a){var b;return I?(b=a.scope(),I(b)):K.valueIdentifier||K.keyIdentifier?(b=a.scope(),b[K.valueIdentifier]||b[K.keyIdentifier]):a.attr("value")}function z(a){var b=a.find("a");return 0===b.children().length||b.children().eq(0).hasClass("check-mark")?b[0].firstChild.cloneNode(!1):b.children().eq(0)[0].cloneNode(!0)}function A(){var a=J.$modelValue,b=C.children().eq(0);a&&(F&&0===a.length?g.title?(b.empty(),b.append(document.createTextNode(g.title))):(b.empty(),b.append(document.createTextNode(d))):c(function(){var c,e,f,h,i,j,k=E.children(),l=k.length,m=[];if(F&&"count"===g.selectedTextFormat?j=1:F&&g.selectedTextFormat&&(i=g.selectedTextFormat.match(/\s*count\s*>\s*(\d+)\s*/))&&(j=parseInt(i[1],10)),"undefined"!=typeof j&&a.length>j)return b.empty(),void b.append(document.createTextNode(a.length+" items selected"));for(f=0;l>f;f++)e=k.eq(f),e.hasClass("nya-bs-option")&&(c=y(e),F?Array.isArray(a)&&n(a,c)&&(h=e.attr("title"),m.push(h?document.createTextNode(h):z(e))):u(a,c)&&(h=e.attr("title"),m.push(h?document.createTextNode(h):z(e))));if(0===m.length)g.title?(b.empty(),b.append(document.createTextNode(g.title))):(b.empty(),b.append(document.createTextNode(d)));else if(1===m.length)b.empty(),b.append(m[0]);else for(b.empty(),f=0;fb;b++)if(a=c.eq(b),a.hasClass("nya-bs-option")||a.attr("nya-bs-option")){G=a[0].clientHeight;break}if(/\d+/.test(g.size)){var e=parseInt(g.size,10);E.css("max-height",e*G+"px"),E.css("overflow-y","auto")}}var G,H,I,J=h[0],K=h[1],L=!1,M=a(K.valueExp);K.valueExp&&(I=function(a,b){return M(a,b)}),K.setId(f.attr("id")),F&&(K.isMultiple=!0,J.$isEmpty=function(a){return!a||0===a.length}),e.$watch(g.disabled,function(a){a?(C.addClass("disabled"),H=C.attr("tabindex"),C.attr("tabindex","-1"),L=!0):(C.removeClass("disabled"),H?C.attr("tabindex",H):C.removeAttr("tabindex"),L=!1)}),K.onCollectionChange=function(a){var b,c,d=[],f=J.$modelValue;if(f){if(a&&0!==a.length){if(I)for(b=0;ba;a++)b=f.eq(a),b.hasClass("nya-bs-option")&&(s(b.find("a"),d)?(b.removeClass("not-match"),e++):b.addClass("not-match"));0===e?w.addClass("show"):w.removeClass("show")}else{for(a=0;g>a;a++)b=f.eq(a),b.hasClass("nya-bs-option")&&b.removeClass("not-match");w.removeClass("show")}c=l(!0),c&&(f.removeClass("active"),t(c).addClass("active"))}),J.$render=function(){var a,b,c=J.$modelValue,d=E.children(),e=d.length;if("undefined"==typeof c)for(a=0;e>a;a++)d.eq(a).hasClass("nya-bs-option")&&d.eq(a).removeClass("selected");else for(a=0;e>a;a++)d.eq(a).hasClass("nya-bs-option")&&(b=y(d.eq(a)),F?n(c,b)?d.eq(a).addClass("selected"):d.eq(a).removeClass("selected"):u(c,b)?d.eq(a).addClass("selected"):d.eq(a).removeClass("selected"));console.log(K.id+" render end"),A()},f.on("keydown",function(a){var b=a.keyCode;if(27===b||13===b||38===b||40===b){if(a.preventDefault(),L)return void a.stopPropagation();var c,d,e,h,i=p(a.target,f[0],C[0]);"true"===g.liveSearch?d=p(a.target,f[0],m[0]):c=p(a.target,f[0],D[0]),i?(console.log("toggleButton"),13!==b&&38!==b&&40!==b||f.hasClass("open")||(a.stopPropagation(),f.addClass("open"),"undefined"==typeof G&&B(),"true"===g.liveSearch?(m.children().eq(0)[0].focus(),h=l(!0),h&&t(h).addClass("active")):(h=l(!0),h&&k(h)))):c?27===b?(C[0].focus(),f.removeClass("open"),a.stopPropagation()):38===b?(a.stopPropagation(),h=q(a.target.parentNode,"previousSibling"),h?k(h):(h=l(!1),h&&k(h))):40===b?(a.stopPropagation(),h=q(a.target.parentNode,"nextSibling"),h?k(h):(h=l(!0),h&&k(h))):13===b&&(a.stopPropagation(),e=t(a.target.parentNode),e.hasClass("nya-bs-option")&&(x(e),F||C[0].focus())):d&&(27===b?(C[0].focus(),f.removeClass("open"),a.stopPropagation()):38===b?(a.stopPropagation(),e=j(),e&&(h=q(e[0],"previousSibling"),h?(e.removeClass("active"),t(h).addClass("active")):(h=l(!1),h&&(e.removeClass("active"),t(h).addClass("active"))))):40===b?(a.stopPropagation(),e=j(),e&&(h=q(e[0],"nextSibling"),h?(e.removeClass("active"),t(h).addClass("active")):(h=l(!0),h&&(e.removeClass("active"),t(h).addClass("active"))))):13===b&&(e=j(),e&&(x(e),F||C[0].focus())))}})}}}}]),w.directive("nyaBsOption",["$parse",function(a){var b=/^\s*(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/;return{restrict:"A",transclude:"element",priority:1e3,terminal:!0,require:["^nyaBsSelect","^ngModel"],compile:function(c,i){var j=i.nyaBsOption,o=document.createComment(" end nyaBsOption: "+j+" "),p=j.match(b);if(!p)throw new Error("invalid expression");var q,r,s,v,w,x=i.value,y=x?a(x):null,z=p[3]||p[1],A=p[2],B=p[4],C=p[5]?a(p[5]):null,D=p[6],E={$id:f},F={};return D?v=a(D):(q=function(a,b){return f(b)},r=function(a){return a}),function(a,b,c,f,i){var j,p=f[0],D=f[1],G={};v&&(s=function(b,c,d){return A&&(E[A]=b),E[z]=c,E.$index=d,v(a,E)}),C&&(w=function(b,c){return A&&(F[A]=b),F[z]=c,C(a,F)}),A&&(p.keyIdentifier=A),z&&(p.valueIdentifier=z),y&&(p.valueExp=x,j=function(b,c){return A&&(G[A]=b),G[z]=c,y(a,G)});var H=e();a.$watchCollection(B,function(a){var c,f,v,x,y,B,C,E,F,G,I,J,K,L,M=b[0],N=e(),O=[];if(w&&(J=[]),d(a))B=a,y=s||q;else{y=s||r,B=[];for(var P in a)a.hasOwnProperty(P)&&"$"!=P.charAt(0)&&B.push(P);B.sort()}for(C=B.length,E=new Array(C),c=0;C>c;c++)if(f=a===B?c:B[c],v=a[f],x=y(f,v,c),L={},A&&(L[A]=f),L[z]=v,O.push(L),w&&(G=w(f,v),-1===J.indexOf(G)&&G&&J.push(G)),H[x])F=H[x],delete H[x],w&&(F.group=G),F.key=f,F.value=v,N[x]=F,E[c]=F;else{if(N[x])throw E.forEach(function(a){a&&a.scope&&(H[a.id]=a)}),new Error("Duplicates in a select are not allowed. Use 'track by' expression to specify unique keys.");E[c]={id:x,scope:void 0,clone:void 0,key:f,value:v},N[x]=!0,G&&(E[c].group=G)}J&&J.length>0&&(E=g(E,J,"group"));for(var Q in H)F=H[Q],h(F.clone).remove(),F.scope.$destroy();for(c=0;C>c;c++)F=E[c],F.scope?(I=M,k(F)!=I&&t(M).after(F.clone),M=l(F),m(F.scope,c,z,F.value,A,F.key,C,F.group)):i(function(a,b){F.scope=b;var d=o.cloneNode(!1);a[a.length++]=d,t(M).after(a),a.addClass("nya-bs-option"),v=j?j(F.key,F.value):F.value||F.key,p.isMultiple?Array.isArray(D.$modelValue)&&n(D.$modelValue,v)&&a.addClass("selected"):u(v,D.$modelValue)&&a.addClass("selected"),M=d,F.clone=a,N[F.id]=F,m(F.scope,c,z,F.value,A,F.key,C,F.group)}),J&&(K&&K===F.group?F.clone.removeClass("first-in-group"):F.clone.addClass("first-in-group"),K=F.group,F.clone.addClass("group-item"));H=N,p.onCollectionChange(O)})}}}}])}(); \ No newline at end of file +!function(){"use strict";function a(){return++j}function b(a){return a&&a.window===a}function c(a){return"string"==typeof a}function d(a){if(null==a||b(a))return!1;var d=a.length;return 1===a.nodeType&&d?!0:c(a)||Array.isArray(a)||0===d||"number"==typeof d&&d>0&&d-1 in a}function e(){return Object.create(null)}function f(b,c){var d,e=typeof b;return"function"==e||"object"==e&&null!==b?"function"==typeof(d=b.$$hashKey)?d=b.$$hashKey():void 0===d&&(d=b.$$hashKey=(c||a)()):d=b,e+":"+d}function g(a,b,c){var d,e,f=[],g=[];for(d=0;dc;c++)if(u(b,a[c]))return!0;return!1},o=function(a,b){var c,d=a.length;if(0===d)return-1;for(c=0;d>c;c++)if(u(b,a[c]))return c;return-1},p=function(a,b,c){var d,e=a,f=typeof c;if(a==b)return null;do if("string"===f){if(d=" "+e.className+" ",1===e.nodeType&&d.replace(/[\t\r\n\f]/g," ").indexOf(c)>=0)return e}else if(e==c)return e;while((e=e.parentNode)&&e!=b&&9!==e.nodeType);return null},q=function(a){var b,c=a.className.replace(/[\t\r\n\f]/g," ").trim();b=c.split(" ");for(var d=0;dd;d++)if(-1!==c.eq(d).text().toLowerCase().indexOf(b.toLowerCase()))return!0;return!1},t=angular.element,u=angular.equals,v=angular.copy,w=angular.module("nya.bootstrap.select",[]);w.controller("nyaBsSelectCtrl",function(){var a=this;a.keyIdentifier=null,a.valueIdentifier=null,a.isMultiple=!1,a.onCollectionChange=function(){},a.setId=function(b){a.id=b||"id#"+Math.floor(1e4*Math.random())}}),w.directive("nyaBsSelect",["$parse","$document","$timeout",function(a,b,c){var d="Nothing selected",e='',f='',g='',h='',j='
  • NO SEARCH RESULT
  • ';return{restrict:"ECA",require:["ngModel","nyaBsSelect"],controller:"nyaBsSelectCtrl",compile:function(k,l){k.addClass("btn-group");var m,w,x,y,z,A,B=k.children(),C=t(e),D=t(f),E=t(h),F="undefined"!=typeof l.multiple;for(x=q(k[0]),x.forEach(function(a){/btn-(?:primary|info|success|warning|danger|inverse)/.test(a)&&(k.removeClass(a),C.removeClass("btn-default"),C.addClass(a)),(a="form-control")&&C.addClass(a)}),E.append(B),y=B.length,z=0;y>z;z++)A=B.eq(z),(A.hasClass("nya-bs-option")||A.attr("nya-bs-option"))&&A.find("a").attr("tabindex","0");return"true"===l.liveSearch&&(m=t(g),w=t(j),D.append(m),E.append(w)),C.children().eq(0).text(l.title?l.title:d),D.append(E),k.append(C),k.append(D),function(e,f,g,h){function j(){var a,b,c=E.children(),d=c.length;for(a=0;d>a;a++)if(b=c.eq(a),b.hasClass("active")&&b.hasClass("nya-bs-option"))return b;return null}function k(a){for(var b,c=a.childNodes,d=c.length,e=0;d>e;e++)if(b=c[e],1===b.nodeType&&"a"===b.tagName.toLowerCase()){b.focus();break}}function l(a){var b;return b=E.children().eq(a?0:E.children().length-1),!b.hasClass("nya-bs-option")||b.hasClass("disabled")||b.hasClass("not-match")?a?q(b[0],"nextSibling"):q(b[0],"previousSibling"):b[0]}function q(a,b){if(!a||r(a,"nya-bs-option")){for(var c=a;(c=i(c,b))&&c.nodeType;)if(r(c,"nya-bs-option")&&!r(c,"disabled")&&!r(c,"not-match"))return c;return null}}function x(a){var b,c,d,g=J.$modelValue;b=y(a),b&&(F?(c=Array.isArray(g)?v(g):[],d=o(c,b),-1===d?(c.push(b),a.addClass("selected")):(c.splice(d,1),a.removeClass("selected"))):(E.children().removeClass("selected"),c=b,a.addClass("selected")),J.$setViewValue(c),e.$digest()),F||f.removeClass("open"),A()}function y(a){var b;return I?(b=a.scope(),I(b)):K.valueIdentifier||K.keyIdentifier?(b=a.scope(),b[K.valueIdentifier]||b[K.keyIdentifier]):a.attr("value")}function z(a){var b=a.find("a");return 0===b.children().length||b.children().eq(0).hasClass("check-mark")?b[0].firstChild.cloneNode(!1):b.children().eq(0)[0].cloneNode(!0)}function A(){var a=J.$modelValue,b=C.children().eq(0);a&&(F&&0===a.length?g.title?(b.empty(),b.append(document.createTextNode(g.title))):(b.empty(),b.append(document.createTextNode(d))):c(function(){var c,e,f,h,i,j,k=E.children(),l=k.length,m=[];if(F&&"count"===g.selectedTextFormat?j=1:F&&g.selectedTextFormat&&(i=g.selectedTextFormat.match(/\s*count\s*>\s*(\d+)\s*/))&&(j=parseInt(i[1],10)),"undefined"!=typeof j&&a.length>j)return b.empty(),void b.append(document.createTextNode(a.length+" items selected"));for(f=0;l>f;f++)e=k.eq(f),e.hasClass("nya-bs-option")&&(c=y(e),F?Array.isArray(a)&&n(a,c)&&(h=e.attr("title"),m.push(h?document.createTextNode(h):z(e))):u(a,c)&&(h=e.attr("title"),m.push(h?document.createTextNode(h):z(e))));if(0===m.length)g.title?(b.empty(),b.append(document.createTextNode(g.title))):(b.empty(),b.append(document.createTextNode(d)));else if(1===m.length)b.empty(),b.append(m[0]);else for(b.empty(),f=0;fb;b++)if(a=c.eq(b),a.hasClass("nya-bs-option")||a.attr("nya-bs-option")){G=a[0].clientHeight;break}if(/\d+/.test(g.size)){var e=parseInt(g.size,10);E.css("max-height",e*G+"px"),E.css("overflow-y","auto")}}var G,H,I,J=h[0],K=h[1],L=!1,M=a(K.valueExp);K.valueExp&&(I=function(a,b){return M(a,b)}),K.setId(f.attr("id")),F&&(K.isMultiple=!0,J.$isEmpty=function(a){return!a||0===a.length}),"undefined"!=typeof g.disabled&&e.$watch(g.disabled,function(a){a?(C.addClass("disabled"),H=C.attr("tabindex"),C.attr("tabindex","-1"),L=!0):(C.removeClass("disabled"),H?C.attr("tabindex",H):C.removeAttr("tabindex"),L=!1)}),K.onCollectionChange=function(a){var b,c,d=[],f=J.$modelValue;if(f){if(a&&0!==a.length){if(I)for(b=0;ba;a++)b=f.eq(a),b.hasClass("nya-bs-option")&&(s(b.find("a"),d)?(b.removeClass("not-match"),e++):b.addClass("not-match"));0===e?w.addClass("show"):w.removeClass("show")}else{for(a=0;g>a;a++)b=f.eq(a),b.hasClass("nya-bs-option")&&b.removeClass("not-match");w.removeClass("show")}c=l(!0),c&&(f.removeClass("active"),t(c).addClass("active"))}),J.$render=function(){var a,b,c=J.$modelValue,d=E.children(),e=d.length;if("undefined"==typeof c)for(a=0;e>a;a++)d.eq(a).hasClass("nya-bs-option")&&d.eq(a).removeClass("selected");else for(a=0;e>a;a++)d.eq(a).hasClass("nya-bs-option")&&(b=y(d.eq(a)),F?n(c,b)?d.eq(a).addClass("selected"):d.eq(a).removeClass("selected"):u(c,b)?d.eq(a).addClass("selected"):d.eq(a).removeClass("selected"));console.log(K.id+" render end"),A()},f.on("keydown",function(a){var b=a.keyCode;if(27===b||13===b||38===b||40===b){if(a.preventDefault(),L)return void a.stopPropagation();var c,d,e,h,i=p(a.target,f[0],C[0]);"true"===g.liveSearch?d=p(a.target,f[0],m[0]):c=p(a.target,f[0],D[0]),i?(console.log("toggleButton"),13!==b&&38!==b&&40!==b||f.hasClass("open")||(a.stopPropagation(),f.addClass("open"),"undefined"==typeof G&&B(),"true"===g.liveSearch?(m.children().eq(0)[0].focus(),h=l(!0),h&&t(h).addClass("active")):(h=l(!0),h&&k(h)))):c?27===b?(C[0].focus(),f.removeClass("open"),a.stopPropagation()):38===b?(a.stopPropagation(),h=q(a.target.parentNode,"previousSibling"),h?k(h):(h=l(!1),h&&k(h))):40===b?(a.stopPropagation(),h=q(a.target.parentNode,"nextSibling"),h?k(h):(h=l(!0),h&&k(h))):13===b&&(a.stopPropagation(),e=t(a.target.parentNode),e.hasClass("nya-bs-option")&&(x(e),F||C[0].focus())):d&&(27===b?(C[0].focus(),f.removeClass("open"),a.stopPropagation()):38===b?(a.stopPropagation(),e=j(),e&&(h=q(e[0],"previousSibling"),h?(e.removeClass("active"),t(h).addClass("active")):(h=l(!1),h&&(e.removeClass("active"),t(h).addClass("active"))))):40===b?(a.stopPropagation(),e=j(),e&&(h=q(e[0],"nextSibling"),h?(e.removeClass("active"),t(h).addClass("active")):(h=l(!0),h&&(e.removeClass("active"),t(h).addClass("active"))))):13===b&&(e=j(),e&&(x(e),F||C[0].focus())))}})}}}}]),w.directive("nyaBsOption",["$parse",function(a){var b=/^\s*(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/;return{restrict:"A",transclude:"element",priority:1e3,terminal:!0,require:["^nyaBsSelect","^ngModel"],compile:function(c,i){var j=i.nyaBsOption,o=document.createComment(" end nyaBsOption: "+j+" "),p=j.match(b);if(!p)throw new Error("invalid expression");var q,r,s,v,w,x=i.value,y=x?a(x):null,z=p[3]||p[1],A=p[2],B=p[4],C=p[5]?a(p[5]):null,D=p[6],E={$id:f},F={};return D?v=a(D):(q=function(a,b){return f(b)},r=function(a){return a}),function(a,b,c,f,i){var j,p=f[0],D=f[1],G={};v&&(s=function(b,c,d){return A&&(E[A]=b),E[z]=c,E.$index=d,v(a,E)}),C&&(w=function(b,c){return A&&(F[A]=b),F[z]=c,C(a,F)}),A&&(p.keyIdentifier=A),z&&(p.valueIdentifier=z),y&&(p.valueExp=x,j=function(b,c){return A&&(G[A]=b),G[z]=c,y(a,G)});var H=e();a.$watchCollection(B,function(a){var c,f,v,x,y,B,C,E,F,G,I,J,K,L,M=b[0],N=e(),O=[];if(w&&(J=[]),d(a))B=a,y=s||q;else{y=s||r,B=[];for(var P in a)a.hasOwnProperty(P)&&"$"!=P.charAt(0)&&B.push(P);B.sort()}for(C=B.length,E=new Array(C),c=0;C>c;c++)if(f=a===B?c:B[c],v=a[f],x=y(f,v,c),L={},A&&(L[A]=f),L[z]=v,O.push(L),w&&(G=w(f,v),-1===J.indexOf(G)&&G&&J.push(G)),H[x])F=H[x],delete H[x],w&&(F.group=G),F.key=f,F.value=v,N[x]=F,E[c]=F;else{if(N[x])throw E.forEach(function(a){a&&a.scope&&(H[a.id]=a)}),new Error("Duplicates in a select are not allowed. Use 'track by' expression to specify unique keys.");E[c]={id:x,scope:void 0,clone:void 0,key:f,value:v},N[x]=!0,G&&(E[c].group=G)}J&&J.length>0&&(E=g(E,J,"group"));for(var Q in H)F=H[Q],h(F.clone).remove(),F.scope.$destroy();for(c=0;C>c;c++)F=E[c],F.scope?(I=M,k(F)!=I&&t(M).after(F.clone),M=l(F),m(F.scope,c,z,F.value,A,F.key,C,F.group)):i(function(a,b){F.scope=b;var d=o.cloneNode(!1);a[a.length++]=d,t(M).after(a),a.addClass("nya-bs-option"),v=j?j(F.key,F.value):F.value||F.key,p.isMultiple?Array.isArray(D.$modelValue)&&n(D.$modelValue,v)&&a.addClass("selected"):u(v,D.$modelValue)&&a.addClass("selected"),M=d,F.clone=a,N[F.id]=F,m(F.scope,c,z,F.value,A,F.key,C,F.group)}),J&&(K&&K===F.group?F.clone.removeClass("first-in-group"):F.clone.addClass("first-in-group"),K=F.group,F.clone.addClass("group-item"));H=N,p.onCollectionChange(O)})}}}}])}(); \ No newline at end of file diff --git a/package.json b/package.json index 3bfc8b6..0a75b77 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nya-bootstrap-select", - "version": "2.0.0", + "version": "2.0.1", "description": "An angular directive wraps bootstrap-select", "repository": { "type": "git", diff --git a/src/nya-bs-select.js b/src/nya-bs-select.js index ba59588..0d54faa 100644 --- a/src/nya-bs-select.js +++ b/src/nya-bs-select.js @@ -114,23 +114,24 @@ nyaBsSelect.directive('nyaBsSelect', ['$parse', '$document', '$timeout', functio return !value || value.length === 0; }; } - - $scope.$watch($attrs.disabled, function(disabled){ - if(!!disabled) { - dropdownToggle.addClass('disabled'); - previousTabIndex = dropdownToggle.attr('tabindex'); - dropdownToggle.attr('tabindex', '-1'); - isDisabled = true; - } else { - dropdownToggle.removeClass('disabled'); - if(previousTabIndex) { - dropdownToggle.attr('tabindex', previousTabIndex); + if(typeof $attrs.disabled !== 'undefined') { + $scope.$watch($attrs.disabled, function(disabled){ + if(!!disabled) { + dropdownToggle.addClass('disabled'); + previousTabIndex = dropdownToggle.attr('tabindex'); + dropdownToggle.attr('tabindex', '-1'); + isDisabled = true; } else { - dropdownToggle.removeAttr('tabindex'); + dropdownToggle.removeClass('disabled'); + if(previousTabIndex) { + dropdownToggle.attr('tabindex', previousTabIndex); + } else { + dropdownToggle.removeAttr('tabindex'); + } + isDisabled = false; } - isDisabled = false; - } - }); + }); + } /** * Do some check on modelValue. remove no existing value