From a7a9571a3b9d6962d870c37a0eb82aed01d661c9 Mon Sep 17 00:00:00 2001 From: Jasu Date: Wed, 13 Jul 2016 13:44:10 +0300 Subject: [PATCH 1/2] Fix selection when adding to s2-options --- dist/angular-select2.js | 6 ++++-- dist/angular-select2.min.js | 2 +- src/select2.js | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/dist/angular-select2.js b/dist/angular-select2.js index 45af39e..4d8ba7d 100644 --- a/dist/angular-select2.js +++ b/dist/angular-select2.js @@ -138,6 +138,7 @@ angular.module("rt.select2", []) var keys = (keyName ? sortedKeys(values) : values) || []; var options = []; + optionItems = {}; for (var i = 0; i < keys.length; i++) { var locals = {}; var key = i; @@ -151,11 +152,12 @@ angular.module("rt.select2", []) var label = displayFn(scope, locals) || ""; if (label.toLowerCase().indexOf(query.term.toLowerCase()) > -1) { - options.push({ + optionItems[value] = { id: value, text: label, obj: values[key] - }); + }; + options.push(optionItems[value]); } } diff --git a/dist/angular-select2.min.js b/dist/angular-select2.min.js index c200f70..e8a9f22 100644 --- a/dist/angular-select2.min.js +++ b/dist/angular-select2.min.js @@ -1 +1 @@ -angular.module("rt.select2",[]).value("select2Config",{}).factory("select2Stack",function(){var a=[];return{$register:function(b){a.push(b)},$unregister:function(b){var c=a.indexOf(b);-1!==c&&a.splice(c,1)},closeAll:function(){a.forEach(function(a){a.close()})}}}).directive("select2",["$rootScope","$timeout","$parse","$filter","select2Config","select2Stack",function(a,b,c,d,e,f){"use strict";function g(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}var h=d("filter"),i={},j=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/;return e&&angular.extend(i,e),{require:"ngModel",priority:1,restrict:"E",template:'',replace:!0,link:function(a,d,e,k){function l(b){if(q){var c=q(a);if(c)return h(b,c)}return b}function m(a){n(p?function(b){for(var c=[],d=0;d-1&&c.push(e)}a(c)}:function(){a(r[k.$viewValue]||{obj:{}})})}var n,o=angular.extend({},i,a.$eval(e.options)),p=angular.isDefined(e.multiple)||o.multiple;o.multiple=p,p&&(k.$isEmpty=function(a){return!a||0===a.length}),e.placeholder&&(o.placeholder=e.placeholder);var q=c(e.optionsFilter),r={};if(e.s2Options){var s;if(!(s=e.s2Options.match(j)))throw new Error("Invalid s2Options encountered!");var t=c(s[2]||s[1]),u=c(s[7]),v=s[4]||s[6],w=c(s[2]?s[1]:v),x=s[5];n=function(b){r={};for(var c=l(u(a)),d=(x?g(c):c)||[],e=[],f=0;f-1&&e.push({id:j,text:k,obj:c[i]})}b.callback({results:e})},a.$watch(s[7],function(){k.$render()})}else{if(!o.query)throw new Error("You need to supply a query function!");var y=o.query;o.query=function(a){var b=a.callback;a.callback=function(a){for(var c=0;c',replace:!0,link:function(a,d,e,k){function l(b){if(q){var c=q(a);if(c)return h(b,c)}return b}function m(a){n(p?function(b){for(var c=[],d=0;d-1&&c.push(e)}a(c)}:function(){a(r[k.$viewValue]||{obj:{}})})}var n,o=angular.extend({},i,a.$eval(e.options)),p=angular.isDefined(e.multiple)||o.multiple;o.multiple=p,p&&(k.$isEmpty=function(a){return!a||0===a.length}),e.placeholder&&(o.placeholder=e.placeholder);var q=c(e.optionsFilter),r={};if(e.s2Options){var s;if(!(s=e.s2Options.match(j)))throw new Error("Invalid s2Options encountered!");var t=c(s[2]||s[1]),u=c(s[7]),v=s[4]||s[6],w=c(s[2]?s[1]:v),x=s[5];n=function(b){r={};for(var c=l(u(a)),d=(x?g(c):c)||[],e=[],f=0;f-1&&(r[j]={id:j,text:k,obj:c[i]},e.push(r[j]))}b.callback({results:e})},a.$watch(s[7],function(){k.$render()})}else{if(!o.query)throw new Error("You need to supply a query function!");var y=o.query;o.query=function(a){var b=a.callback;a.callback=function(a){for(var c=0;c -1) { - options.push({ + optionItems[value] = { id: value, text: label, obj: values[key] - }); + }; + options.push(optionItems[value]); } } From d9ebe0c5d48beee7482067ecfc4323b5661553e8 Mon Sep 17 00:00:00 2001 From: Jasper Mattsson Date: Wed, 26 Apr 2017 16:06:22 +0300 Subject: [PATCH 2/2] Destroy select2 when scope is destroyed. --- dist/angular-select2.js | 1 + dist/angular-select2.min.js | 2 +- src/select2.js | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/dist/angular-select2.js b/dist/angular-select2.js index 4d8ba7d..5185bfe 100644 --- a/dist/angular-select2.js +++ b/dist/angular-select2.js @@ -250,6 +250,7 @@ angular.module("rt.select2", []) }; select2Stack.$register(controlObj); scope.$on("destroy", function () { + element.select2("destroy"); select2Stack.$unregister(controlObj); }); diff --git a/dist/angular-select2.min.js b/dist/angular-select2.min.js index e8a9f22..28d279e 100644 --- a/dist/angular-select2.min.js +++ b/dist/angular-select2.min.js @@ -1 +1 @@ -angular.module("rt.select2",[]).value("select2Config",{}).factory("select2Stack",function(){var a=[];return{$register:function(b){a.push(b)},$unregister:function(b){var c=a.indexOf(b);c!==-1&&a.splice(c,1)},closeAll:function(){a.forEach(function(a){a.close()})}}}).directive("select2",["$rootScope","$timeout","$parse","$filter","select2Config","select2Stack",function(a,b,c,d,e,f){"use strict";function g(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}var h=d("filter"),i={},j=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/;return e&&angular.extend(i,e),{require:"ngModel",priority:1,restrict:"E",template:'',replace:!0,link:function(a,d,e,k){function l(b){if(q){var c=q(a);if(c)return h(b,c)}return b}function m(a){n(p?function(b){for(var c=[],d=0;d-1&&c.push(e)}a(c)}:function(){a(r[k.$viewValue]||{obj:{}})})}var n,o=angular.extend({},i,a.$eval(e.options)),p=angular.isDefined(e.multiple)||o.multiple;o.multiple=p,p&&(k.$isEmpty=function(a){return!a||0===a.length}),e.placeholder&&(o.placeholder=e.placeholder);var q=c(e.optionsFilter),r={};if(e.s2Options){var s;if(!(s=e.s2Options.match(j)))throw new Error("Invalid s2Options encountered!");var t=c(s[2]||s[1]),u=c(s[7]),v=s[4]||s[6],w=c(s[2]?s[1]:v),x=s[5];n=function(b){r={};for(var c=l(u(a)),d=(x?g(c):c)||[],e=[],f=0;f-1&&(r[j]={id:j,text:k,obj:c[i]},e.push(r[j]))}b.callback({results:e})},a.$watch(s[7],function(){k.$render()})}else{if(!o.query)throw new Error("You need to supply a query function!");var y=o.query;o.query=function(a){var b=a.callback;a.callback=function(a){for(var c=0;c',replace:!0,link:function(a,d,e,k){function l(b){if(q){var c=q(a);if(c)return h(b,c)}return b}function m(a){n(p?function(b){for(var c=[],d=0;d-1&&c.push(e)}a(c)}:function(){a(r[k.$viewValue]||{obj:{}})})}var n,o=angular.extend({},i,a.$eval(e.options)),p=angular.isDefined(e.multiple)||o.multiple;o.multiple=p,p&&(k.$isEmpty=function(a){return!a||0===a.length}),e.placeholder&&(o.placeholder=e.placeholder);var q=c(e.optionsFilter),r={};if(e.s2Options){var s;if(!(s=e.s2Options.match(j)))throw new Error("Invalid s2Options encountered!");var t=c(s[2]||s[1]),u=c(s[7]),v=s[4]||s[6],w=c(s[2]?s[1]:v),x=s[5];n=function(b){r={};for(var c=l(u(a)),d=(x?g(c):c)||[],e=[],f=0;f-1&&(r[j]={id:j,text:k,obj:c[i]},e.push(r[j]))}b.callback({results:e})},a.$watch(s[7],function(){k.$render()})}else{if(!o.query)throw new Error("You need to supply a query function!");var y=o.query;o.query=function(a){var b=a.callback;a.callback=function(a){for(var c=0;c