From a7e33ca693382e4458ad63d56bb3efe7a68effb7 Mon Sep 17 00:00:00 2001
From: lordfriend
Date: Mon, 15 Dec 2014 21:36:00 +0800
Subject: [PATCH] update to 2.0.5, update document.
---
bower.json | 2 +-
dist/css/nya-bs-select.css | 2 +-
dist/css/nya-bs-select.min.css | 2 +-
dist/js/nya-bs-select.js | 13 ++++++++++---
dist/js/nya-bs-select.min.js | 4 ++--
docs/dist/css/main.css | 2 +-
docs/dist/css/nya-bs-select.css | 7 ++++++-
docs/dist/js/nya-bs-select.js | 19 +++++++++++++++----
docs/src/content/api/nya-bs-option.md | 12 +++++++++++-
package.json | 2 +-
10 files changed, 49 insertions(+), 16 deletions(-)
diff --git a/bower.json b/bower.json
index e0f0665..a74ef49 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
{
"name": "nya-bootstrap-select",
- "version": "2.0.4",
+ "version": "2.0.5",
"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 0d45625..b9eb024 100644
--- a/dist/css/nya-bs-select.css
+++ b/dist/css/nya-bs-select.css
@@ -1,5 +1,5 @@
/**
- * nya-bootstrap-select v2.0.4
+ * nya-bootstrap-select v2.0.5
* 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 36a7d28..945ec92 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.4
+ * nya-bootstrap-select v2.0.5
* Copyright 2014 Nyasoft
* Licensed under MIT license
*/
diff --git a/dist/js/nya-bs-select.js b/dist/js/nya-bs-select.js
index 7f90de7..7468a93 100644
--- a/dist/js/nya-bs-select.js
+++ b/dist/js/nya-bs-select.js
@@ -1,5 +1,5 @@
/**
- * nya-bootstrap-select v2.0.4
+ * nya-bootstrap-select v2.0.5
* Copyright 2014 Nyasoft
* Licensed under MIT license
*/
@@ -1246,7 +1246,14 @@ nyaBsSelect.directive('nyaBsOption', ['$parse', function($parse){
// hasOwnProperty.
var lastBlockMap = createMap();
- $scope.$watchCollection(collectionExp, function nyaBsOptionAction(collection) {
+ // deepWatch will impact performance. use with caution.
+ if($attr.deepWatch === 'true') {
+ $scope.$watch(collectionExp, nyaBsOptionAction, true);
+ } else {
+ $scope.$watchCollection(collectionExp, nyaBsOptionAction);
+ }
+
+ function nyaBsOptionAction(collection) {
var index,
previousNode = $element[0], // node that cloned nodes should be inserted after
@@ -1429,7 +1436,7 @@ nyaBsSelect.directive('nyaBsOption', ['$parse', function($parse){
lastBlockMap = nextBlockMap;
nyaBsSelectCtrl.onCollectionChange(values);
- });
+ }
};
}
}
diff --git a/dist/js/nya-bs-select.min.js b/dist/js/nya-bs-select.min.js
index 562b152..e55282c 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.4
+ * nya-bootstrap-select v2.0.5
* 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(v(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(v(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;d0)for(var h=0;g>h;h++){if(c=f.eq(h),d=!0,e=q(c[0]),e.length>0)for(var i=0;id;d++)if(-1!==c.eq(d).text().toLowerCase().indexOf(b.toLowerCase()))return!0;return!1},u=angular.element,v=angular.equals,w=angular.copy,x=angular.module("nya.bootstrap.select",[]);x.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())}}),x.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){console.log(k.attr("id")+" compiled"),k.addClass("btn-group");var m,x,y,z,A,B,C=k.children(),D=u(e),E=u(f),F=u(h);for(y=q(k[0]),y.forEach(function(a){/btn-(?:primary|info|success|warning|danger|inverse)/.test(a)&&(k.removeClass(a),D.removeClass("btn-default"),D.addClass(a)),"form-control"===a&&D.addClass(a)}),F.append(C),z=C.length,A=0;z>A;A++)B=C.eq(A),(B.hasClass("nya-bs-option")||B.attr("nya-bs-option"))&&B.find("a").attr("tabindex","0");return"true"===l.liveSearch&&(m=u(g),x=u(j),E.append(m),F.append(x)),D.children().eq(0).text(l.title?l.title:d),E.append(F),k.append(D),k.append(E),function(e,f,g,h){function j(){var a,b,c=L.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=L.children().eq(a?0:L.children().length-1),!b.hasClass("nya-bs-option")||b.hasClass("disabled")||b.hasClass("not-match")?a?m(b[0],"nextSibling"):m(b[0],"previousSibling"):b[0]}function m(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 q(a){var b,c,d,g=E.$modelValue;b=x(a),"undefined"!=typeof b&&(I?(c=Array.isArray(g)?w(g):[],d=o(c,b),-1===d?(c.push(b),a.addClass("selected")):(c.splice(d,1),a.removeClass("selected"))):(L.children().removeClass("selected"),c=b,a.addClass("selected")),E.$setViewValue(c),e.$digest()),I||f.removeClass("open"),z()}function x(a){var b;return D?(b=a.scope(),D(b)):F.valueIdentifier||F.keyIdentifier?(b=a.scope(),b[F.valueIdentifier]||b[F.keyIdentifier]):a.attr("value")}function y(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 z(){var a=E.$modelValue,b=J.children().eq(0);a&&(I&&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=L.children(),l=k.length,m=[];if(I&&"count"===g.selectedTextFormat?j=1:I&&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=x(e),I?Array.isArray(a)&&n(a,c)&&(h=e.attr("title"),m.push(h?document.createTextNode(h):y(e))):v(a,c)&&(h=e.attr("title"),m.push(h?document.createTextNode(h):y(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")){B=a[0].clientHeight;break}if(/\d+/.test(g.size)){var e=parseInt(g.size,10);L.css("max-height",e*B+"px"),L.css("overflow-y","auto")}}console.log(f.attr("id")+" linked");var B,C,D,E=h[0],F=h[1],G=!1,H=a(F.valueExp),I="undefined"!=typeof g.multiple,J=s(f,["dropdown-toggle"]),K=J.next(),L=s(K,["dropdown-menu","inner"]),M=s(K,["bs-searchbox"]),N=s(L,["no-search-result"]);F.valueExp&&(D=function(a,b){return H(a,b)}),F.setId(f.attr("id")),I&&(F.isMultiple=!0,E.$isEmpty=function(a){return!a||0===a.length}),"undefined"!=typeof g.disabled&&e.$watch(g.disabled,function(a){a?(J.addClass("disabled"),C=J.attr("tabindex"),J.attr("tabindex","-1"),G=!0):(J.removeClass("disabled"),C?J.attr("tabindex",C):J.removeAttr("tabindex"),G=!1)}),F.onCollectionChange=function(a){var b,c,d=[],f=E.$modelValue;if(f){if(a&&0!==a.length){if(D)for(b=0;ba;a++)b=f.eq(a),b.hasClass("nya-bs-option")&&(t(b.find("a"),d)?(b.removeClass("not-match"),e++):b.addClass("not-match"));0===e?N.addClass("show"):N.removeClass("show")}else{for(a=0;g>a;a++)b=f.eq(a),b.hasClass("nya-bs-option")&&b.removeClass("not-match");N.removeClass("show")}c=l(!0),c&&(f.removeClass("active"),u(c).addClass("active"))}),E.$render=function(){var a,b,c=E.$modelValue,d=L.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=x(d.eq(a)),I?n(c,b)?d.eq(a).addClass("selected"):d.eq(a).removeClass("selected"):v(c,b)?d.eq(a).addClass("selected"):d.eq(a).removeClass("selected"));console.log(F.id+" render end"),z()},f.on("keydown",function(a){var b=a.keyCode;if(27===b||13===b||38===b||40===b){if(a.preventDefault(),G)return void a.stopPropagation();var c,d,e,h,i=p(a.target,f[0],J[0]);"true"===g.liveSearch?d=p(a.target,f[0],M[0]):c=p(a.target,f[0],K[0]),i?(console.log("toggleButton"),13!==b&&38!==b&&40!==b||f.hasClass("open")||(a.stopPropagation(),f.addClass("open"),"undefined"==typeof B&&A(),"true"===g.liveSearch?(M.children().eq(0)[0].focus(),h=l(!0),h&&(L.children().removeClass("active"),u(h).addClass("active"))):(h=l(!0),h&&k(h)))):c?27===b?(J[0].focus(),f.removeClass("open"),a.stopPropagation()):38===b?(a.stopPropagation(),h=m(a.target.parentNode,"previousSibling"),h?k(h):(h=l(!1),h&&k(h))):40===b?(a.stopPropagation(),h=m(a.target.parentNode,"nextSibling"),h?k(h):(h=l(!0),h&&k(h))):13===b&&(a.stopPropagation(),e=u(a.target.parentNode),e.hasClass("nya-bs-option")&&(q(e),I||J[0].focus())):d&&(27===b?(J[0].focus(),f.removeClass("open"),a.stopPropagation()):38===b?(a.stopPropagation(),e=j(),e&&(h=m(e[0],"previousSibling"),h?(e.removeClass("active"),u(h).addClass("active")):(h=l(!1),h&&(e.removeClass("active"),u(h).addClass("active"))))):40===b?(a.stopPropagation(),e=j(),e&&(h=m(e[0],"nextSibling"),h?(e.removeClass("active"),u(h).addClass("active")):(h=l(!0),h&&(e.removeClass("active"),u(h).addClass("active"))))):13===b&&(e=j(),e&&(q(e),I||J[0].focus())))}})}}}}]),x.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,t,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?t=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={};t&&(s=function(b,c,d){return A&&(E[A]=b),E[z]=c,E.$index=d,t(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,t,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],t=a[f],x=y(f,t,c),L={},A&&(L[A]=f),L[z]=t,O.push(L),w&&(G=w(f,t),-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=t,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:t},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&&u(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,u(M).after(a),a.addClass("nya-bs-option"),t=j?j(F.key,F.value):F.value||F.key,p.isMultiple?Array.isArray(D.$modelValue)&&n(D.$modelValue,t)&&a.addClass("selected"):v(t,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(v(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(v(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;d0)for(var h=0;g>h;h++){if(c=f.eq(h),d=!0,e=q(c[0]),e.length>0)for(var i=0;id;d++)if(-1!==c.eq(d).text().toLowerCase().indexOf(b.toLowerCase()))return!0;return!1},u=angular.element,v=angular.equals,w=angular.copy,x=angular.module("nya.bootstrap.select",[]);x.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())}}),x.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){console.log(k.attr("id")+" compiled"),k.addClass("btn-group");var m,x,y,z,A,B,C=k.children(),D=u(e),E=u(f),F=u(h);for(y=q(k[0]),y.forEach(function(a){/btn-(?:primary|info|success|warning|danger|inverse)/.test(a)&&(k.removeClass(a),D.removeClass("btn-default"),D.addClass(a)),"form-control"===a&&D.addClass(a)}),F.append(C),z=C.length,A=0;z>A;A++)B=C.eq(A),(B.hasClass("nya-bs-option")||B.attr("nya-bs-option"))&&B.find("a").attr("tabindex","0");return"true"===l.liveSearch&&(m=u(g),x=u(j),E.append(m),F.append(x)),D.children().eq(0).text(l.title?l.title:d),E.append(F),k.append(D),k.append(E),function(e,f,g,h){function j(){var a,b,c=L.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=L.children().eq(a?0:L.children().length-1),!b.hasClass("nya-bs-option")||b.hasClass("disabled")||b.hasClass("not-match")?a?m(b[0],"nextSibling"):m(b[0],"previousSibling"):b[0]}function m(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 q(a){var b,c,d,g=E.$modelValue;b=x(a),"undefined"!=typeof b&&(I?(c=Array.isArray(g)?w(g):[],d=o(c,b),-1===d?(c.push(b),a.addClass("selected")):(c.splice(d,1),a.removeClass("selected"))):(L.children().removeClass("selected"),c=b,a.addClass("selected")),E.$setViewValue(c),e.$digest()),I||f.removeClass("open"),z()}function x(a){var b;return D?(b=a.scope(),D(b)):F.valueIdentifier||F.keyIdentifier?(b=a.scope(),b[F.valueIdentifier]||b[F.keyIdentifier]):a.attr("value")}function y(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 z(){var a=E.$modelValue,b=J.children().eq(0);a&&(I&&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=L.children(),l=k.length,m=[];if(I&&"count"===g.selectedTextFormat?j=1:I&&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=x(e),I?Array.isArray(a)&&n(a,c)&&(h=e.attr("title"),m.push(h?document.createTextNode(h):y(e))):v(a,c)&&(h=e.attr("title"),m.push(h?document.createTextNode(h):y(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")){B=a[0].clientHeight;break}if(/\d+/.test(g.size)){var e=parseInt(g.size,10);L.css("max-height",e*B+"px"),L.css("overflow-y","auto")}}console.log(f.attr("id")+" linked");var B,C,D,E=h[0],F=h[1],G=!1,H=a(F.valueExp),I="undefined"!=typeof g.multiple,J=s(f,["dropdown-toggle"]),K=J.next(),L=s(K,["dropdown-menu","inner"]),M=s(K,["bs-searchbox"]),N=s(L,["no-search-result"]);F.valueExp&&(D=function(a,b){return H(a,b)}),F.setId(f.attr("id")),I&&(F.isMultiple=!0,E.$isEmpty=function(a){return!a||0===a.length}),"undefined"!=typeof g.disabled&&e.$watch(g.disabled,function(a){a?(J.addClass("disabled"),C=J.attr("tabindex"),J.attr("tabindex","-1"),G=!0):(J.removeClass("disabled"),C?J.attr("tabindex",C):J.removeAttr("tabindex"),G=!1)}),F.onCollectionChange=function(a){var b,c,d=[],f=E.$modelValue;if(f){if(a&&0!==a.length){if(D)for(b=0;ba;a++)b=f.eq(a),b.hasClass("nya-bs-option")&&(t(b.find("a"),d)?(b.removeClass("not-match"),e++):b.addClass("not-match"));0===e?N.addClass("show"):N.removeClass("show")}else{for(a=0;g>a;a++)b=f.eq(a),b.hasClass("nya-bs-option")&&b.removeClass("not-match");N.removeClass("show")}c=l(!0),c&&(f.removeClass("active"),u(c).addClass("active"))}),E.$render=function(){var a,b,c=E.$modelValue,d=L.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=x(d.eq(a)),I?n(c,b)?d.eq(a).addClass("selected"):d.eq(a).removeClass("selected"):v(c,b)?d.eq(a).addClass("selected"):d.eq(a).removeClass("selected"));console.log(F.id+" render end"),z()},f.on("keydown",function(a){var b=a.keyCode;if(27===b||13===b||38===b||40===b){if(a.preventDefault(),G)return void a.stopPropagation();var c,d,e,h,i=p(a.target,f[0],J[0]);"true"===g.liveSearch?d=p(a.target,f[0],M[0]):c=p(a.target,f[0],K[0]),i?(console.log("toggleButton"),13!==b&&38!==b&&40!==b||f.hasClass("open")||(a.stopPropagation(),f.addClass("open"),"undefined"==typeof B&&A(),"true"===g.liveSearch?(M.children().eq(0)[0].focus(),h=l(!0),h&&(L.children().removeClass("active"),u(h).addClass("active"))):(h=l(!0),h&&k(h)))):c?27===b?(J[0].focus(),f.removeClass("open"),a.stopPropagation()):38===b?(a.stopPropagation(),h=m(a.target.parentNode,"previousSibling"),h?k(h):(h=l(!1),h&&k(h))):40===b?(a.stopPropagation(),h=m(a.target.parentNode,"nextSibling"),h?k(h):(h=l(!0),h&&k(h))):13===b&&(a.stopPropagation(),e=u(a.target.parentNode),e.hasClass("nya-bs-option")&&(q(e),I||J[0].focus())):d&&(27===b?(J[0].focus(),f.removeClass("open"),a.stopPropagation()):38===b?(a.stopPropagation(),e=j(),e&&(h=m(e[0],"previousSibling"),h?(e.removeClass("active"),u(h).addClass("active")):(h=l(!1),h&&(e.removeClass("active"),u(h).addClass("active"))))):40===b?(a.stopPropagation(),e=j(),e&&(h=m(e[0],"nextSibling"),h?(e.removeClass("active"),u(h).addClass("active")):(h=l(!0),h&&(e.removeClass("active"),u(h).addClass("active"))))):13===b&&(e=j(),e&&(q(e),I||J[0].focus())))}})}}}}]),x.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,t,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?t=a(D):(q=function(a,b){return f(b)},r=function(a){return a}),function(a,b,c,f,i){function j(a){var c,f,j,t,x,y,B,C,E,F,H,J,K,L,M=b[0],N=e(),O=[];if(w&&(J=[]),d(a))y=a,x=s||q;else{x=s||r,y=[];for(var P in a)a.hasOwnProperty(P)&&"$"!=P.charAt(0)&&y.push(P);y.sort()}for(B=y.length,C=new Array(B),c=0;B>c;c++)if(f=a===y?c:y[c],j=a[f],t=x(f,j,c),L={},A&&(L[A]=f),L[z]=j,O.push(L),w&&(F=w(f,j),-1===J.indexOf(F)&&F&&J.push(F)),I[t])E=I[t],delete I[t],w&&(E.group=F),E.key=f,E.value=j,N[t]=E,C[c]=E;else{if(N[t])throw C.forEach(function(a){a&&a.scope&&(I[a.id]=a)}),new Error("Duplicates in a select are not allowed. Use 'track by' expression to specify unique keys.");C[c]={id:t,scope:void 0,clone:void 0,key:f,value:j},N[t]=!0,F&&(C[c].group=F)}J&&J.length>0&&(C=g(C,J,"group"));for(var Q in I)E=I[Q],h(E.clone).remove(),E.scope.$destroy();for(c=0;B>c;c++)E=C[c],E.scope?(H=M,k(E)!=H&&u(M).after(E.clone),M=l(E),m(E.scope,c,z,E.value,A,E.key,B,E.group)):i(function(a,b){E.scope=b;var d=o.cloneNode(!1);a[a.length++]=d,u(M).after(a),a.addClass("nya-bs-option"),j=p?p(E.key,E.value):E.value||E.key,D.isMultiple?Array.isArray(G.$modelValue)&&n(G.$modelValue,j)&&a.addClass("selected"):v(j,G.$modelValue)&&a.addClass("selected"),M=d,E.clone=a,N[E.id]=E,m(E.scope,c,z,E.value,A,E.key,B,E.group)}),J&&(K&&K===E.group?E.clone.removeClass("first-in-group"):E.clone.addClass("first-in-group"),K=E.group,E.clone.addClass("group-item"));I=N,D.onCollectionChange(O)}var p,D=f[0],G=f[1],H={};t&&(s=function(b,c,d){return A&&(E[A]=b),E[z]=c,E.$index=d,t(a,E)}),C&&(w=function(b,c){return A&&(F[A]=b),F[z]=c,C(a,F)}),A&&(D.keyIdentifier=A),z&&(D.valueIdentifier=z),y&&(D.valueExp=x,p=function(b,c){return A&&(H[A]=b),H[z]=c,y(a,H)});var I=e();"true"===c.deepWatch?a.$watch(B,j,!0):a.$watchCollection(B,j)}}}}])}();
\ No newline at end of file
diff --git a/docs/dist/css/main.css b/docs/dist/css/main.css
index cea304b..2b36ae4 100644
--- a/docs/dist/css/main.css
+++ b/docs/dist/css/main.css
@@ -1,5 +1,5 @@
/**
- * nya-bootstrap-select v2.0.4
+ * nya-bootstrap-select v2.0.5
* Copyright 2014 Nyasoft
* Licensed under MIT license
*/
diff --git a/docs/dist/css/nya-bs-select.css b/docs/dist/css/nya-bs-select.css
index 3baad05..b9eb024 100644
--- a/docs/dist/css/nya-bs-select.css
+++ b/docs/dist/css/nya-bs-select.css
@@ -1,5 +1,5 @@
/**
- * nya-bootstrap-select v2.0.4
+ * nya-bootstrap-select v2.0.5
* Copyright 2014 Nyasoft
* Licensed under MIT license
*/
@@ -179,6 +179,11 @@
.nya-bs-select .bs-searchbox input.form-control {
margin-bottom: 0;
width: 100%;
+ float: none;
+ z-index: inherit;
+ display: block;
+ position: static;
+ border-radius: 4px;
}
.nya-bs-select.fit-width .btn .filter-option {
position: static;
diff --git a/docs/dist/js/nya-bs-select.js b/docs/dist/js/nya-bs-select.js
index 2ead510..7468a93 100644
--- a/docs/dist/js/nya-bs-select.js
+++ b/docs/dist/js/nya-bs-select.js
@@ -1,5 +1,5 @@
/**
- * nya-bootstrap-select v2.0.4
+ * nya-bootstrap-select v2.0.5
* Copyright 2014 Nyasoft
* Licensed under MIT license
*/
@@ -390,7 +390,7 @@ nyaBsSelect.directive('nyaBsSelect', ['$parse', '$document', '$timeout', functio
// dropdownToggle.addClass(className);
//}
- if(className = 'form-control') {
+ if(className === 'form-control') {
dropdownToggle.addClass(className);
}
});
@@ -586,6 +586,7 @@ nyaBsSelect.directive('nyaBsSelect', ['$parse', '$document', '$timeout', functio
searchBox.children().eq(0)[0].focus();
nyaBsOptionNode = findFocus(true);
if(nyaBsOptionNode) {
+ dropdownMenu.children().removeClass('active');
jqLite(nyaBsOptionNode).addClass('active');
}
} else if($element.hasClass('open')) {
@@ -736,6 +737,9 @@ nyaBsSelect.directive('nyaBsSelect', ['$parse', '$document', '$timeout', functio
// find the focusable node but we will use active
nyaBsOptionNode = findFocus(true);
if(nyaBsOptionNode) {
+ // remove previous active state
+ dropdownMenu.children().removeClass('active');
+ // set active to first focusable element
jqLite(nyaBsOptionNode).addClass('active');
}
} else {
@@ -1242,7 +1246,14 @@ nyaBsSelect.directive('nyaBsOption', ['$parse', function($parse){
// hasOwnProperty.
var lastBlockMap = createMap();
- $scope.$watchCollection(collectionExp, function nyaBsOptionAction(collection) {
+ // deepWatch will impact performance. use with caution.
+ if($attr.deepWatch === 'true') {
+ $scope.$watch(collectionExp, nyaBsOptionAction, true);
+ } else {
+ $scope.$watchCollection(collectionExp, nyaBsOptionAction);
+ }
+
+ function nyaBsOptionAction(collection) {
var index,
previousNode = $element[0], // node that cloned nodes should be inserted after
@@ -1425,7 +1436,7 @@ nyaBsSelect.directive('nyaBsOption', ['$parse', function($parse){
lastBlockMap = nextBlockMap;
nyaBsSelectCtrl.onCollectionChange(values);
- });
+ }
};
}
}
diff --git a/docs/src/content/api/nya-bs-option.md b/docs/src/content/api/nya-bs-option.md
index c3414a3..1ef26bc 100644
--- a/docs/src/content/api/nya-bs-option.md
+++ b/docs/src/content/api/nya-bs-option.md
@@ -75,7 +75,8 @@ as attribute:
```html
+ [value=""]
+ [deep-watch=""]>
...
@@ -158,5 +159,14 @@ as attribute:
+
+ deep-watch
+ string
+
+ When set to true, enable a deep watch to collection_expression. `nya-bs-option` will use $watch(exp, listener, true) to make a deep watch. Turn on this feature will impact the performance. even cause expection.
+ It is not recommended.
+ By default. `nya-bs-option` will use $watchCollection to watch the collection_expression.
+
+
diff --git a/package.json b/package.json
index cad69af..d363d7e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "nya-bootstrap-select",
- "version": "2.0.4",
+ "version": "2.0.5",
"description": "An angular directive wraps bootstrap-select",
"repository": {
"type": "git",