From 1d48bda3d30a94b96085e7cb816b139eb447482f Mon Sep 17 00:00:00 2001 From: Christopher Hiller Date: Fri, 20 Sep 2013 16:39:21 -0700 Subject: [PATCH 1/3] adding typeahead passthrus --- README.md | 24 ++++++++++++++++++- bower.json | 4 ++-- dist/angular-tags-0.2.7-tpls.map.js | 1 - dist/angular-tags-0.2.7.map.js | 1 - ...2.7-tpls.js => angular-tags-0.2.8-tpls.js} | 23 ++++++++++++++---- dist/angular-tags-0.2.8-tpls.map.js | 1 + ....min.js => angular-tags-0.2.8-tpls.min.js} | 4 ++-- ...-tags-0.2.7.css => angular-tags-0.2.8.css} | 0 ...ar-tags-0.2.7.js => angular-tags-0.2.8.js} | 12 +++++++--- ...ags-0.2.7.less => angular-tags-0.2.8.less} | 0 dist/angular-tags-0.2.8.map.js | 1 + ...0.2.7.min.js => angular-tags-0.2.8.min.js} | 4 ++-- dist/templates/tags.html | 11 +++++++-- package.json | 2 +- src/tags.js | 9 ++++++- templates/tags.html | 11 +++++++-- test/test-tags.js | 9 +++++-- 17 files changed, 92 insertions(+), 25 deletions(-) delete mode 100644 dist/angular-tags-0.2.7-tpls.map.js delete mode 100644 dist/angular-tags-0.2.7.map.js rename dist/{angular-tags-0.2.7-tpls.js => angular-tags-0.2.8-tpls.js} (95%) create mode 100644 dist/angular-tags-0.2.8-tpls.map.js rename dist/{angular-tags-0.2.7-tpls.min.js => angular-tags-0.2.8-tpls.min.js} (65%) rename dist/{angular-tags-0.2.7.css => angular-tags-0.2.8.css} (100%) rename dist/{angular-tags-0.2.7.js => angular-tags-0.2.8.js} (98%) rename dist/{angular-tags-0.2.7.less => angular-tags-0.2.8.less} (100%) create mode 100644 dist/angular-tags-0.2.8.map.js rename dist/{angular-tags-0.2.7.min.js => angular-tags-0.2.8.min.js} (89%) diff --git a/README.md b/README.md index 51c9a01..98eca0f 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Pure AngularJS tagging widget with typeahead support courtesy of [ui-bootstrap]( Current Version --------------- ``` -0.2.7 +0.2.8 ``` Installation @@ -146,6 +146,28 @@ baz = [ Basically, whatever you set here will become the `value` of these tags unless you specify an entire object. +### Typeahead Options + +You can pass options through to the typeahead module. Simply pass a `typeahead-options` attribute to the `` element. Available options are shown here: + +```javascript +$scope.typeaheadOpts = { + inputFormatter: myInputFormatterFunction, + loading: myLoadingBoolean, + minLength: 3, + onSelect: myOnSelectFunction, // this will be run in addition to directive internals + templateUrl: '/path/to/my/template.html', + waitMs: 500, + allowsEditable: true +}; +``` + +and: + +```html + +``` + Tag Objects ----------- diff --git a/bower.json b/bower.json index e7ceac1..2856cd4 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "angular-tags", - "version": "0.2.7", - "main": "dist/angular-tags-0.2.7.js", + "version": "0.2.8", + "main": "dist/angular-tags-0.2.8.js", "dependencies": { "angular-ui-bootstrap-bower": "~0.6.0", "angular": "1.2.0-rc.2", diff --git a/dist/angular-tags-0.2.7-tpls.map.js b/dist/angular-tags-0.2.7-tpls.map.js deleted file mode 100644 index c448df6..0000000 --- a/dist/angular-tags-0.2.7-tpls.map.js +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dist/angular-tags-0.2.7-tpls.min.js","sources":["generated/tags.js","generated/templates.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","run","$templateCache","put"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file diff --git a/dist/angular-tags-0.2.7.map.js b/dist/angular-tags-0.2.7.map.js deleted file mode 100644 index 2959afa..0000000 --- a/dist/angular-tags-0.2.7.map.js +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dist/angular-tags-0.2.7.min.js","sources":["generated/tags.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file diff --git a/dist/angular-tags-0.2.7-tpls.js b/dist/angular-tags-0.2.8-tpls.js similarity index 95% rename from dist/angular-tags-0.2.7-tpls.js rename to dist/angular-tags-0.2.8-tpls.js index 1657d47..96825e1 100644 --- a/dist/angular-tags-0.2.7-tpls.js +++ b/dist/angular-tags-0.2.8-tpls.js @@ -23,8 +23,15 @@ angular.module("templates/tags.html", []).run(["$templateCache", function($templ " data-ng-model=\"inputTag\"\n" + " class=\"decipher-tags-input\"\n" + " data-typeahead=\"stag as stag.name for stag in srcTags|filter:$viewValue|orderBy:orderBy\"\n" + - " data-typeahead-on-select=\"add($item); selectArea()\"\n" + - " data-typeahead-editable=\"allowsEditable\"/>\n" + + " data-typeahead-input-formatter=\"{{typeaheadOptions.inputFormatter}}\"\n" + + " data-typeahead-loading=\"{{typeaheadOptions.loading}}\"\n" + + " data-typeahead-min-length=\"{{typeaheadOptions.minLength}}\"\n" + + " data-typeahead-template-url=\"{{typeaheadOptions.templateUrl}}\"\n" + + " data-typeahead-wait-ms=\"{{typeaheadOptions.waitMs}}\"\n" + + "\n" + + " data-typeahead-editable=\"{{typeaheadOptions.allowsEditable}}\"\n" + + " data-typeahead-on-select=\"add($item) && selectArea() && typeaheadOptions.onSelect()\"\n" + + " />\n" + "\n" + " \n" + "\n" + @@ -135,8 +142,7 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa * @param tag */ $scope.add = function add(tag) { - var idx, - _add = function _add(tag) { + var _add = function _add(tag) { $scope.tags.push(tag); delete $scope.inputTag; $scope.$emit('decipher.tags.added', { @@ -574,7 +580,6 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa inputActive: false }; - /** * When we receive this event, sort. */ @@ -582,6 +587,14 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa scope.orderBy = data; }); + attrs.$observe('typeaheadOptions', function(newVal) { + if(newVal) { + scope.typeaheadOptions = $parse(newVal)(scope.$parent); + } else { + scope.typeaheadOptions = {}; + } + }); + // determine what format we're in model = scope.model; if (angular.isString(model)) { diff --git a/dist/angular-tags-0.2.8-tpls.map.js b/dist/angular-tags-0.2.8-tpls.map.js new file mode 100644 index 0000000..3b78574 --- /dev/null +++ b/dist/angular-tags-0.2.8-tpls.map.js @@ -0,0 +1 @@ +{"version":3,"file":"dist/angular-tags-0.2.8-tpls.min.js","sources":["generated/tags.js","generated/templates.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","$observe","typeaheadOptions","run","$templateCache","put"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file diff --git a/dist/angular-tags-0.2.7-tpls.min.js b/dist/angular-tags-0.2.8-tpls.min.js similarity index 65% rename from dist/angular-tags-0.2.7-tpls.min.js rename to dist/angular-tags-0.2.8-tpls.min.js index 40c2838..1f64021 100644 --- a/dist/angular-tags-0.2.7-tpls.min.js +++ b/dist/angular-tags-0.2.8-tpls.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){var c=[];a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(d){var e=a.srcTags.indexOf(d);return e>=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c\n\n
\n \n \n \n
\n\n \n \n \n \n\n \n\n')}]),angular.module("templates/tag.html",[]).run(["$templateCache",function(a){a.put("templates/tag.html",'{{tag.name}}\n \n \n\n')}]); -//# sourceMappingURL=angular-tags-0.2.7-tpls.map.js \ No newline at end of file +!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){var c=[];a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(d){var e=a.srcTags.indexOf(d);return e>=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c\n\n
\n \n \n \n
\n\n \n \n \n \n\n \n\n')}]),angular.module("templates/tag.html",[]).run(["$templateCache",function(a){a.put("templates/tag.html",'{{tag.name}}\n \n \n\n')}]); +//# sourceMappingURL=angular-tags-0.2.8-tpls.map.js \ No newline at end of file diff --git a/dist/angular-tags-0.2.7.css b/dist/angular-tags-0.2.8.css similarity index 100% rename from dist/angular-tags-0.2.7.css rename to dist/angular-tags-0.2.8.css diff --git a/dist/angular-tags-0.2.7.js b/dist/angular-tags-0.2.8.js similarity index 98% rename from dist/angular-tags-0.2.7.js rename to dist/angular-tags-0.2.8.js index c8a43e6..84ef524 100644 --- a/dist/angular-tags-0.2.7.js +++ b/dist/angular-tags-0.2.8.js @@ -91,8 +91,7 @@ * @param tag */ $scope.add = function add(tag) { - var idx, - _add = function _add(tag) { + var _add = function _add(tag) { $scope.tags.push(tag); delete $scope.inputTag; $scope.$emit('decipher.tags.added', { @@ -530,7 +529,6 @@ inputActive: false }; - /** * When we receive this event, sort. */ @@ -538,6 +536,14 @@ scope.orderBy = data; }); + attrs.$observe('typeaheadOptions', function(newVal) { + if(newVal) { + scope.typeaheadOptions = $parse(newVal)(scope.$parent); + } else { + scope.typeaheadOptions = {}; + } + }); + // determine what format we're in model = scope.model; if (angular.isString(model)) { diff --git a/dist/angular-tags-0.2.7.less b/dist/angular-tags-0.2.8.less similarity index 100% rename from dist/angular-tags-0.2.7.less rename to dist/angular-tags-0.2.8.less diff --git a/dist/angular-tags-0.2.8.map.js b/dist/angular-tags-0.2.8.map.js new file mode 100644 index 0000000..e2eb0ee --- /dev/null +++ b/dist/angular-tags-0.2.8.map.js @@ -0,0 +1 @@ +{"version":3,"file":"dist/angular-tags-0.2.8.min.js","sources":["generated/tags.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","$observe","typeaheadOptions"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file diff --git a/dist/angular-tags-0.2.7.min.js b/dist/angular-tags-0.2.8.min.js similarity index 89% rename from dist/angular-tags-0.2.7.min.js rename to dist/angular-tags-0.2.8.min.js index 5e02a18..0ef2cb4 100644 --- a/dist/angular-tags-0.2.7.min.js +++ b/dist/angular-tags-0.2.8.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){var c=[];a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(d){var e=a.srcTags.indexOf(d);return e>=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c + data-typeahead-input-formatter="{{typeaheadOptions.inputFormatter}}" + data-typeahead-loading="{{typeaheadOptions.loading}}" + data-typeahead-min-length="{{typeaheadOptions.minLength}}" + data-typeahead-template-url="{{typeaheadOptions.templateUrl}}" + data-typeahead-wait-ms="{{typeaheadOptions.waitMs}}" + + data-typeahead-editable="{{typeaheadOptions.allowsEditable}}" + data-typeahead-on-select="add($item) && selectArea() && typeaheadOptions.onSelect()" + /> diff --git a/package.json b/package.json index 2c09a47..395483f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-tags", - "version": "0.2.7", + "version": "0.2.8", "repository": "git://github.com/decipherinc/angular-tags.git", "devDependencies": { "grunt-contrib-connect": "~0.4.1", diff --git a/src/tags.js b/src/tags.js index 826f2b0..84ef524 100644 --- a/src/tags.js +++ b/src/tags.js @@ -529,7 +529,6 @@ inputActive: false }; - /** * When we receive this event, sort. */ @@ -537,6 +536,14 @@ scope.orderBy = data; }); + attrs.$observe('typeaheadOptions', function(newVal) { + if(newVal) { + scope.typeaheadOptions = $parse(newVal)(scope.$parent); + } else { + scope.typeaheadOptions = {}; + } + }); + // determine what format we're in model = scope.model; if (angular.isString(model)) { diff --git a/templates/tags.html b/templates/tags.html index 77f9ea2..41183b1 100644 --- a/templates/tags.html +++ b/templates/tags.html @@ -19,8 +19,15 @@ data-ng-model="inputTag" class="decipher-tags-input" data-typeahead="stag as stag.name for stag in srcTags|filter:$viewValue|orderBy:orderBy" - data-typeahead-on-select="add($item); selectArea()" - data-typeahead-editable="allowsEditable"/> + data-typeahead-input-formatter="{{typeaheadOptions.inputFormatter}}" + data-typeahead-loading="{{typeaheadOptions.loading}}" + data-typeahead-min-length="{{typeaheadOptions.minLength}}" + data-typeahead-template-url="{{typeaheadOptions.templateUrl}}" + data-typeahead-wait-ms="{{typeaheadOptions.waitMs}}" + + data-typeahead-editable="{{typeaheadOptions.allowsEditable}}" + data-typeahead-on-select="add($item) && selectArea() && typeaheadOptions.onSelect()" + /> diff --git a/test/test-tags.js b/test/test-tags.js index 82ae5b7..34e1cb9 100644 --- a/test/test-tags.js +++ b/test/test-tags.js @@ -147,7 +147,8 @@ }); $timeout.flush(); - Q.equal(tpl.scope().srcTags.indexOf(chickens), -1, 'srctags have no "chickens"'); + Q.equal(tpl.scope().srcTags.indexOf(chickens), -1, + 'srctags have no "chickens"'); chickens = {value: 1, name: 'chickens', foo: 'bar'}; markup = @@ -169,8 +170,9 @@ ]), 'srcTags have all the things'); markup = - ''; + ''; scope.$apply(function () { + scope.minLength = 3; scope.foo = [ {name: 'owls', group: 'group'}, {name: 'cheese', group: 'group'} @@ -200,6 +202,9 @@ Q.equal(tpl.find('.typeahead').length, 1, 'typeahead popup is injected into DOM'); + Q.equal(tpl.find('input').attr('data-typeahead-min-length'), '3', + 'assert min length made it into typeahead options'); + // since it's a bitch to try and use jquery to work with typeahead // just pretend it's there and run the cb. From 42b0b7c28eb60e76072f0159c36f90080adbee24 Mon Sep 17 00:00:00 2001 From: Christopher Hiller Date: Fri, 20 Sep 2013 17:42:14 -0700 Subject: [PATCH 2/3] deep watch on tags. --- dist/angular-tags-0.2.8-tpls.js | 7 ++++--- dist/angular-tags-0.2.8-tpls.map.js | 2 +- dist/angular-tags-0.2.8-tpls.min.js | 2 +- dist/angular-tags-0.2.8.js | 7 ++++--- dist/angular-tags-0.2.8.map.js | 2 +- dist/angular-tags-0.2.8.min.js | 2 +- src/tags.js | 7 ++++--- 7 files changed, 16 insertions(+), 13 deletions(-) diff --git a/dist/angular-tags-0.2.8-tpls.js b/dist/angular-tags-0.2.8-tpls.js index 96825e1..5e40ce9 100644 --- a/dist/angular-tags-0.2.8-tpls.js +++ b/dist/angular-tags-0.2.8-tpls.js @@ -587,8 +587,9 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa scope.orderBy = data; }); - attrs.$observe('typeaheadOptions', function(newVal) { - if(newVal) { + // pass typeahead options through + attrs.$observe('typeaheadOptions', function (newVal) { + if (newVal) { scope.typeaheadOptions = $parse(newVal)(scope.$parent); } else { scope.typeaheadOptions = {}; @@ -624,7 +625,7 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa } watchTags(); } - }); + }, true); watchTags(); diff --git a/dist/angular-tags-0.2.8-tpls.map.js b/dist/angular-tags-0.2.8-tpls.map.js index 3b78574..6fe06f6 100644 --- a/dist/angular-tags-0.2.8-tpls.map.js +++ b/dist/angular-tags-0.2.8-tpls.map.js @@ -1 +1 @@ -{"version":3,"file":"dist/angular-tags-0.2.8-tpls.min.js","sources":["generated/tags.js","generated/templates.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","$observe","typeaheadOptions","run","$templateCache","put"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file +{"version":3,"file":"dist/angular-tags-0.2.8-tpls.min.js","sources":["generated/tags.js","generated/templates.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","$observe","typeaheadOptions","run","$templateCache","put"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file diff --git a/dist/angular-tags-0.2.8-tpls.min.js b/dist/angular-tags-0.2.8-tpls.min.js index 1f64021..d366419 100644 --- a/dist/angular-tags-0.2.8-tpls.min.js +++ b/dist/angular-tags-0.2.8-tpls.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){var c=[];a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(d){var e=a.srcTags.indexOf(d);return e>=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c\n\n
\n \n \n \n
\n\n \n \n \n \n\n \n\n')}]),angular.module("templates/tag.html",[]).run(["$templateCache",function(a){a.put("templates/tag.html",'{{tag.name}}\n \n \n\n')}]); +!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){var c=[];a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(d){var e=a.srcTags.indexOf(d);return e>=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c\n\n
\n \n \n \n
\n\n \n \n \n \n\n \n\n')}]),angular.module("templates/tag.html",[]).run(["$templateCache",function(a){a.put("templates/tag.html",'{{tag.name}}\n \n \n\n')}]); //# sourceMappingURL=angular-tags-0.2.8-tpls.map.js \ No newline at end of file diff --git a/dist/angular-tags-0.2.8.js b/dist/angular-tags-0.2.8.js index 84ef524..42f8182 100644 --- a/dist/angular-tags-0.2.8.js +++ b/dist/angular-tags-0.2.8.js @@ -536,8 +536,9 @@ scope.orderBy = data; }); - attrs.$observe('typeaheadOptions', function(newVal) { - if(newVal) { + // pass typeahead options through + attrs.$observe('typeaheadOptions', function (newVal) { + if (newVal) { scope.typeaheadOptions = $parse(newVal)(scope.$parent); } else { scope.typeaheadOptions = {}; @@ -573,7 +574,7 @@ } watchTags(); } - }); + }, true); watchTags(); diff --git a/dist/angular-tags-0.2.8.map.js b/dist/angular-tags-0.2.8.map.js index e2eb0ee..8961d90 100644 --- a/dist/angular-tags-0.2.8.map.js +++ b/dist/angular-tags-0.2.8.map.js @@ -1 +1 @@ -{"version":3,"file":"dist/angular-tags-0.2.8.min.js","sources":["generated/tags.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","$observe","typeaheadOptions"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file +{"version":3,"file":"dist/angular-tags-0.2.8.min.js","sources":["generated/tags.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","$observe","typeaheadOptions"],"mappings":"CACA,WACE,YAEA,KACEA,QAAQC,OAAO,2BACf,MAAOC,GACPF,QAAQC,OAAO,8BAGjB,GAAIE,GAAOH,QAAQC,OAAO,iBACvB,yBAA0B,4BAEzBG,GACAC,UAAW,IACXC,WACAC,YAAa,sBACbC,eAAgB,sBAIlBC,EAAa,yEAGbC,GACEC,MAAO,GACPC,IAAK,GACLC,UAAW,GAEbC,GAAiBJ,EAAGC,OACpBI,GAAeL,EAAGG,WAClBG,GAAiBN,EAAGE,KACpBK,EAAK,CAEPd,GAAKe,SAAS,0BAOdf,EAAKgB,WAAW,YACb,SAAU,WAAY,SAAUC,EAAQC,GAEvC,GAAIC,KASJF,GAAOG,WAAa,SAAuBC,GACzC,GAAIC,KAUJ,OARID,KAAQJ,EAAOM,QAAQC,cACzBF,EAAEG,UAAW,GAEf5B,QAAQ6B,QAAQT,EAAOU,QAAQxB,QAAS,SAAUyB,EAAOC,GACnDR,EAAIS,QAAUD,IAChBP,EAAEM,IAAS,KAGRN,GAQTL,EAAOc,eAAiB,SAAuBV,GAC7C,GAAIW,GAAMf,EAAOgB,QAAQC,QAAQb,EAEjC,OAAIW,IAAO,GAETd,EAAS,WACPD,EAAOgB,QAAQE,OAAOH,EAAK,KAE7Bb,EAAeiB,KAAKf,IACb,IAEF,GASTJ,EAAOoB,IAAM,SAAahB,GACxB,GAcEiB,GAdEC,EAAO,SAAclB,GACrBJ,EAAOjB,KAAKoC,KAAKf,SACVJ,GAAOuB,SACdvB,EAAOwB,MAAM,uBACXpB,IAAKA,EACLqB,IAAKzB,EAAOyB,OAGhBC,EAAO,WACL1B,EAAOwB,MAAM,2BACXpB,IAAKA,EACLqB,IAAKzB,EAAOyB,MAOlB,KADAJ,EAAIrB,EAAOjB,KAAK4C,OACTN,KACL,GAAIrB,EAAOjB,KAAKsC,GAAGO,OAASxB,EAAIwB,KAE9B,MADAF,MACO,CAKX,OAAI1B,GAAOc,eAAeV,IACxBkB,EAAKlB,IACE,GAEAJ,EAAOU,QAAQmB,SACtBP,EAAKlB,IACE,IAETsB,KACO,IAMT1B,EAAO8B,WAAa,WAClB9B,EAAOM,QAAQyB,aAAc,GAQ/B/B,EAAOgC,OAAS,SAAgB5B,GAC9B,GAAIW,EACJf,GAAOjB,KAAKmC,OAAOlB,EAAOjB,KAAKkC,QAAQb,GAAM,IAEzCW,EAAMb,EAAee,QAAQb,IAAQ,KACvCF,EAAegB,OAAOH,EAAK,GACS,KAAhCf,EAAOgB,QAAQC,QAAQb,IACzBJ,EAAOgB,QAAQG,KAAKf,UAIjBJ,GAAOM,QAAQC,YAEtBP,EAAOwB,MAAM,yBACXpB,IAAKA,EACLqB,IAAKzB,EAAOyB,UAUpB1C,EAAKkD,UAAU,qBACZ,WAAY,UAAW,aACvB,SAAUhC,EAAUiC,EAASC,GAC3B,OACEC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAOC,GACrC,GAAIC,GAAc,GAAIC,QAAO,IACAL,EAAM7B,QAAQzB,UACd,MAKzB4D,EAAS,WACTH,EAAQI,cAAc,IACtBJ,EAAQK,WAORC,EAAS,SAAgBC,GACzB,GAAIA,EAAO,CACT,GAAIA,EAAMC,MAAMP,GAEd,MADAE,KACA,MAEEN,GAAMnB,KACRQ,KAAMqB,KAENJ,MASJM,EAAU,SAAUpE,GACpB,GAAIsC,EACJ,KAAKA,EAAI,EAAGA,EAAItC,EAAK4C,OAChBN,IACH2B,EAAOjE,EAAKsC,KAOd+B,EAAgB,WAChB,GAAIC,EACAd,GAAMjC,QAAQC,aAChBgC,EAAMP,OAAOO,EAAMjC,QAAQC,mBACpBgC,GAAMjC,QAAQC,aAGbmC,EAAQY,aAChBD,EACAnB,EAAQ,WAAWK,EAAMxD,KACvBwD,EAAMgB,SACRhB,EAAMjC,QAAQC,YACd8C,EAAYA,EAAY1B,OAAS,IAOvCa,GAAQgB,KAAK,QAAS,WAGhBrB,EAAWsB,cACNlB,GAAMjC,QAAQC,YAErBgC,EAAMmB,OAAO,iBACJnB,GAAMjC,QAAQC,gBAQ3BiC,EAAQgB,KAAK,WACX,SAAUG,GACRpB,EAAMmB,OAAO,WACPnB,EAAM7B,QAAQzB,UAAU2E,eACxBD,EAAIE,OACNb,EAAON,EAAQY,gBASvBd,EAAQgB,KAAK,QACX,SAAUG,GACRpB,EAAMmB,OAAO,WAGPhE,EAAcuB,QAAQ0C,EAAIE,QAC1B,EACFb,EAAON,EAAQY,YAGN1D,EAAcqB,QAAQ0C,EAAIE,QAC1B,GACThB,IACAN,EAAMjC,QAAQyB,aACd,GAGSpC,EAAYsB,QAAQ0C,EAAIE,QACxB,EACTT,WAIOb,GAAMjC,QAAQC,YACrBgC,EAAMf,MAAM,uBAERyB,MAAOP,EAAQY,WACf7B,IAAKc,EAAMd,WAUvBc,EAAMuB,OAAO,sBACX,SAAUC,GACJA,GACF9D,EAAS,WACPuC,EAAQ,GAAGwB,YAQnBtB,EAAQuB,SAASC,QAAQ,SAAUjB,GACjC,GAAIkB,GAASlB,EAAMmB,MAAM7B,EAAM7B,QAAQzB,UAIvC,OAHIkF,GAAOxC,OAAS,GAClBwB,EAAQgB,GAENlB,EAAMC,MAAMP,IACdH,EAAQ6B,IAAI,IACZ,QAEKpB,IAMTP,EAAQ4B,YAAYnD,KAAK,SAAUf,GACjC,MAAIA,IAAOA,EAAI6C,OACbT,EAAQ6B,IAAI,IACZ,QAEKjE,SASlBrB,EAAKkD,UAAU,QACZ,YAAa,WAAY,SAAU,sBACnC,SAAUsC,EAAWtE,EAAUuE,EAAQC,GAErC,OACE1E,WAAY,WACZqC,SAAU,IACVsC,SAAU,2DACVnC,OACEoC,MAAO,KAETrC,KAAM,SAAUC,EAAOC,EAASC,GAC9B,GAAImC,GACFC,EAEAhE,EACAQ,EACAyD,EACAC,EACAJ,EACAK,GAAc,EACdC,GAAc,EACdC,EAAWtG,QAAQuG,KAAKnG,GACxBoG,EAAexG,QAAQuG,KAAKV,GAO1BY,EAAQ,SAAeC,GACvB,GAAIpC,GAAQoC,EAAMpC,MAAM7D,EACxB,KAAK6D,EACH,KAAM,IAAIqC,OACR,0GACeD,EAAQ,KAG3B,QACEE,SAAUtC,EAAM,GAChB2B,OAAQL,EAAOtB,EAAM,IACrBuC,WAAYvC,EAAM,GAClBwC,WAAYlB,EAAOtB,EAAM,IAAMA,EAAM,IACrCyC,YAAanB,EAAOtB,EAAM,MAK9B0C,EAAY,WAMVd,EAAYvC,EAAMuB,OAAO,OAAQ,SAAUb,EAAO4C,GAChD,GAAIxE,EACJ,IAAI4B,IAAU4C,IACRZ,GAAeD,GAAa,CAI9B,GAHA/B,EAAQA,EAAM6C,IAAI,SAAU1F,GAC1B,MAAOA,GAAIwB,OAEThD,QAAQmH,QAAQxD,EAAMoC,OAExB,IADApC,EAAMoC,MAAMhD,OAAS,EAChBN,EAAI,EAAGA,EAAI4B,EAAMtB,OAAQN,IAC5BkB,EAAMoC,MAAMxD,KAAK8B,EAAM5B,GAGvB2D,KACFzC,EAAMoC,MAAQ1B,EAAM+C,KAAKzD,EAAM7B,QAAQzB,eAK5C,IAOHgH,EAAS,SAAgBhD,GACzB,GAAIiD,MACFC,EAAW,SAAkB/F,GAC3B,MAAOA,GACJgG,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,SACdA,QAAQ,KAAM,UAErB,KAAIxH,QAAQyH,YAAYpD,GAAxB,CAGA,GAAIrE,QAAQ0H,SAASrD,GACnBiD,EAAMjD,EACHmB,MAAM7B,EAAM7B,QAAQzB,WACpB6G,IAAI,SAAUS,GACb,OACE3E,KAAMuE,EAASI,EAAKC,eAIvB,IAAI5H,QAAQmH,QAAQ9C,GACvBiD,EAAMjD,EAAM6C,IAAI,SAAUS,GACxB,MAAI3H,SAAQ0H,SAASC,IAEjB3E,KAAMuE,EAASI,EAAKC,UAGfD,EAAK3E,OACZ2E,EAAK3E,KAAOuE,EAASI,EAAK3E,KAAK4E,SAE1BD,SAGN,IAAI3H,QAAQ6H,UAAUxD,GACzB,KAAM,mDAER,OAAOiD,KAMPQ,EAAY,QAASA,KACrB,GAAIC,GACFtF,EACAuF,EACAC,CAMF,IAJAtE,EAAM7B,QAAQmB,QAAUU,EAAM7B,QAAQmB,UAAW,EACjD+C,EAAYS,EAAM5C,EAAMqE,KACxBjC,EAASD,EAAUC,OAAOtC,EAAMwE,UAE5BnI,QAAQyH,YAAYxB,KAGpBjG,QAAQoI,WAAWjC,IACrBA,IAEFA,EACAxC,EAAMwE,QAAQjD,OAAOc,EAAUa,WAC7B,SAAU1B,EAAQkD,GACZlD,IAAWkD,GACbP,MAED,GACLC,KACI/H,QAAQ6H,UAAU5B,IACpB,IAAKxD,EAAI,EAAGA,EAAIwD,EAAOlD,OAAQN,IAC7BsF,EAAO/B,EAAUY,UAAYX,EAAOxD,GACpCwF,KACAA,EAAI5D,MAAQ2B,EAAUe,YAAYpD,EAAMwE,QAASJ,GACjDC,KAEEA,EADEhI,QAAQsI,SAASL,EAAI5D,OACnBrE,QAAQuI,OAAON,EAAI5D,OACrBrB,KAAMgD,EAAUc,WAAWnD,EAAMwE,QAASJ,GAC1C1D,MAAO4D,EAAI5D,MAAMA,MACjBpC,MAAOgG,EAAI5D,MAAMpC,SAKjBe,KAAMgD,EAAUc,WAAWnD,EAAMwE,QAASJ,GAC1C1D,MAAO4D,EAAI5D,MACXpC,MAAOA,GAGX0B,EAAMvB,QAAQG,KAAKyF,GAmC3B,IA7BArE,EAAM7B,QAAU9B,QAAQuI,OAAOjC,EAC7BtG,QAAQuI,OAAO/B,EAAc7C,EAAM6E,MAAM3E,EAAM/B,WAEjD6B,EAAMgB,QAAUhB,EAAM7B,QAAQ6C,QAI9BhB,EAAMjC,SACJyB,aAAa,GAMfQ,EAAM8E,IAAI,qBAAsB,SAAU1D,EAAK2D,GAC7C/E,EAAMgB,QAAU+D,IAIlB7E,EAAM8E,SAAS,mBAAoB,SAAUxD,GAEzCxB,EAAMiF,iBADJzD,EACuBS,EAAOT,GAAQxB,EAAMwE,cAOlDpC,EAAQpC,EAAMoC,MACV/F,QAAQ0H,SAAS3B,GACnBK,GAAc,MAEX,IAAIpG,QAAQmH,QAAQpB,GAGvB,IAFAM,GAAc,EACd5D,EAAIsD,EAAMhD,OACHN,KACL,IAAKzC,QAAQ0H,SAAS3B,EAAMtD,IAAK,CAC/B4D,GAAc,CACd,OAMN1C,EAAMxD,QACNwD,EAAMuB,OAAO,QAAS,SAAUC,GAC9B,GAAInF,QAAQ6H,UAAU1C,GAAS,CAK7B,IAJAe,IACAvC,EAAMxD,KAAOkH,EAAOlC,GAEpB1C,EAAIkB,EAAMxD,KAAK4C,OACRN,KACLkB,EAAMzB,eAAeyB,EAAMxD,KAAKsC,GAElCuE,QAED,GAEHA,IAIArD,EAAMvB,WACFpC,QAAQ6H,UAAUhE,EAAMqE,KAC1BJ,IAGAnE,EAAM7B,QAAQmB,SAAU,EAI1BU,EAAMd,MAAQ5B,EACd0C,EAAMf,MAAM,6BACVC,IAAKc,EAAMd,IACXkD,MAAOpC,EAAMoC","sourceRoot":"/"} \ No newline at end of file diff --git a/dist/angular-tags-0.2.8.min.js b/dist/angular-tags-0.2.8.min.js index 0ef2cb4..bd70b70 100644 --- a/dist/angular-tags-0.2.8.min.js +++ b/dist/angular-tags-0.2.8.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){var c=[];a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(d){var e=a.srcTags.indexOf(d);return e>=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c Date: Sat, 21 Sep 2013 00:05:26 -0700 Subject: [PATCH 3/3] fixing object reference problems --- dist/angular-tags-0.2.8-tpls.js | 40 +++++++++++++++++++---------- dist/angular-tags-0.2.8-tpls.map.js | 2 +- dist/angular-tags-0.2.8-tpls.min.js | 2 +- dist/angular-tags-0.2.8.js | 40 +++++++++++++++++++---------- dist/angular-tags-0.2.8.map.js | 2 +- dist/angular-tags-0.2.8.min.js | 2 +- src/tags.js | 40 +++++++++++++++++++---------- test/test-tags.js | 40 +++++++++++++++++++++++------ 8 files changed, 117 insertions(+), 51 deletions(-) diff --git a/dist/angular-tags-0.2.8-tpls.js b/dist/angular-tags-0.2.8-tpls.js index 5e40ce9..f8bcc96 100644 --- a/dist/angular-tags-0.2.8-tpls.js +++ b/dist/angular-tags-0.2.8-tpls.js @@ -93,8 +93,6 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa tags.controller('TagsCtrl', ['$scope', '$timeout', function ($scope, $timeout) { - var deletedSrcTags = []; - /** * Figures out what classes to put on the tag span. It'll add classes * if defined by group, and it'll add a selected class if the tag @@ -129,7 +127,7 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa $timeout(function () { $scope.srcTags.splice(idx, 1); }); - deletedSrcTags.push(tag); + $scope._deletedSrcTags.push(tag); return true; } return false; @@ -196,8 +194,8 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa var idx; $scope.tags.splice($scope.tags.indexOf(tag), 1); - if (idx = deletedSrcTags.indexOf(tag) >= 0) { - deletedSrcTags.splice(idx, 1); + if (idx = $scope._deletedSrcTags.indexOf(tag) >= 0) { + $scope._deletedSrcTags.splice(idx, 1); if ($scope.srcTags.indexOf(tag) === -1) { $scope.srcTags.push(tag); } @@ -526,22 +524,15 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa obj; // default to NOT letting users add new tags in this case. scope.options.addable = scope.options.addable || false; + scope.srcTags = []; srcResult = parse(attrs.src); source = srcResult.source(scope.$parent); - if (angular.isUndefined(source)) { return; } if (angular.isFunction(srcWatch)) { srcWatch(); } - srcWatch = - scope.$parent.$watch(srcResult.sourceName, - function (newVal, oldVal) { - if (newVal !== oldVal) { - updateSrc(); - } - }, true); locals = {}; if (angular.isDefined(source)) { for (i = 0; i < source.length; i++) { @@ -566,6 +557,14 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa scope.srcTags.push(o); } } + + srcWatch = + scope.$parent.$watch(srcResult.sourceName, + function (newVal, oldVal) { + if (newVal !== oldVal) { + updateSrc(); + } + }, true); }; // merge options @@ -614,15 +613,30 @@ angular.module("templates/tag.html", []).run(["$templateCache", function($templa // watch model for changes and update tags as appropriate scope.tags = []; + scope._deletedSrcTags = []; scope.$watch('model', function (newVal) { + var deletedTag, idx; if (angular.isDefined(newVal)) { tagsWatch(); scope.tags = format(newVal); + // remove already used tags i = scope.tags.length; while (i--) { scope._filterSrcTags(scope.tags[i]); } + + // restore any deleted things to the src array that happen to not + // be in the new value. + i = scope._deletedSrcTags.length; + while (i--) { + deletedTag = scope._deletedSrcTags[i]; + if (idx = newVal.indexOf(deletedTag) === -1) { + scope.srcTags.push(deletedTag); + scope._deletedSrcTags.splice(i, 1); + } + } + watchTags(); } }, true); diff --git a/dist/angular-tags-0.2.8-tpls.map.js b/dist/angular-tags-0.2.8-tpls.map.js index 6fe06f6..35217ea 100644 --- a/dist/angular-tags-0.2.8-tpls.map.js +++ b/dist/angular-tags-0.2.8-tpls.map.js @@ -1 +1 @@ -{"version":3,"file":"dist/angular-tags-0.2.8-tpls.min.js","sources":["generated/tags.js","generated/templates.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","$observe","typeaheadOptions","run","$templateCache","put"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file +{"version":3,"file":"dist/angular-tags-0.2.8-tpls.min.js","sources":["generated/tags.js","generated/templates.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","_deletedSrcTags","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","isObject","extend","oldVal","$eval","$on","data","$observe","typeaheadOptions","deletedTag","run","$templateCache","put"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file diff --git a/dist/angular-tags-0.2.8-tpls.min.js b/dist/angular-tags-0.2.8-tpls.min.js index d366419..5983742 100644 --- a/dist/angular-tags-0.2.8-tpls.min.js +++ b/dist/angular-tags-0.2.8-tpls.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){var c=[];a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(d){var e=a.srcTags.indexOf(d);return e>=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c\n\n
\n \n \n \n
\n\n \n \n \n \n\n \n\n')}]),angular.module("templates/tag.html",[]).run(["$templateCache",function(a){a.put("templates/tag.html",'{{tag.name}}\n \n \n\n')}]); +!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(c){var d=a.srcTags.indexOf(c);return d>=0?(b(function(){a.srcTags.splice(d,1)}),a._deletedSrcTags.push(c),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var c;a.tags.splice(a.tags.indexOf(b),1),(c=a._deletedSrcTags.indexOf(b)>=0)&&(a._deletedSrcTags.splice(c,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,a.srcTags=[],h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)){if(angular.isFunction(n)&&n(),b={},angular.isDefined(j))for(c=0;c\n\n
\n \n \n \n
\n\n \n \n \n \n\n \n\n')}]),angular.module("templates/tag.html",[]).run(["$templateCache",function(a){a.put("templates/tag.html",'{{tag.name}}\n \n \n\n')}]); //# sourceMappingURL=angular-tags-0.2.8-tpls.map.js \ No newline at end of file diff --git a/dist/angular-tags-0.2.8.js b/dist/angular-tags-0.2.8.js index 42f8182..506d065 100644 --- a/dist/angular-tags-0.2.8.js +++ b/dist/angular-tags-0.2.8.js @@ -42,8 +42,6 @@ tags.controller('TagsCtrl', ['$scope', '$timeout', function ($scope, $timeout) { - var deletedSrcTags = []; - /** * Figures out what classes to put on the tag span. It'll add classes * if defined by group, and it'll add a selected class if the tag @@ -78,7 +76,7 @@ $timeout(function () { $scope.srcTags.splice(idx, 1); }); - deletedSrcTags.push(tag); + $scope._deletedSrcTags.push(tag); return true; } return false; @@ -145,8 +143,8 @@ var idx; $scope.tags.splice($scope.tags.indexOf(tag), 1); - if (idx = deletedSrcTags.indexOf(tag) >= 0) { - deletedSrcTags.splice(idx, 1); + if (idx = $scope._deletedSrcTags.indexOf(tag) >= 0) { + $scope._deletedSrcTags.splice(idx, 1); if ($scope.srcTags.indexOf(tag) === -1) { $scope.srcTags.push(tag); } @@ -475,22 +473,15 @@ obj; // default to NOT letting users add new tags in this case. scope.options.addable = scope.options.addable || false; + scope.srcTags = []; srcResult = parse(attrs.src); source = srcResult.source(scope.$parent); - if (angular.isUndefined(source)) { return; } if (angular.isFunction(srcWatch)) { srcWatch(); } - srcWatch = - scope.$parent.$watch(srcResult.sourceName, - function (newVal, oldVal) { - if (newVal !== oldVal) { - updateSrc(); - } - }, true); locals = {}; if (angular.isDefined(source)) { for (i = 0; i < source.length; i++) { @@ -515,6 +506,14 @@ scope.srcTags.push(o); } } + + srcWatch = + scope.$parent.$watch(srcResult.sourceName, + function (newVal, oldVal) { + if (newVal !== oldVal) { + updateSrc(); + } + }, true); }; // merge options @@ -563,15 +562,30 @@ // watch model for changes and update tags as appropriate scope.tags = []; + scope._deletedSrcTags = []; scope.$watch('model', function (newVal) { + var deletedTag, idx; if (angular.isDefined(newVal)) { tagsWatch(); scope.tags = format(newVal); + // remove already used tags i = scope.tags.length; while (i--) { scope._filterSrcTags(scope.tags[i]); } + + // restore any deleted things to the src array that happen to not + // be in the new value. + i = scope._deletedSrcTags.length; + while (i--) { + deletedTag = scope._deletedSrcTags[i]; + if (idx = newVal.indexOf(deletedTag) === -1) { + scope.srcTags.push(deletedTag); + scope._deletedSrcTags.splice(i, 1); + } + } + watchTags(); } }, true); diff --git a/dist/angular-tags-0.2.8.map.js b/dist/angular-tags-0.2.8.map.js index 8961d90..a93a4c7 100644 --- a/dist/angular-tags-0.2.8.map.js +++ b/dist/angular-tags-0.2.8.map.js @@ -1 +1 @@ -{"version":3,"file":"dist/angular-tags-0.2.8.min.js","sources":["generated/tags.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","deletedSrcTags","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","oldVal","isObject","extend","$eval","$on","data","$observe","typeaheadOptions"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file +{"version":3,"file":"dist/angular-tags-0.2.8.min.js","sources":["generated/tags.js"],"names":["angular","module","e","tags","defaultOptions","delimiter","classes","templateUrl","tagTemplateUrl","SRC_REGEXP","kc","enter","esc","backspace","kcCompleteTag","kcRemoveTag","kcCancelInput","id","constant","controller","$scope","$timeout","getClasses","tag","r","toggles","selectedTag","selected","forEach","options","klass","groupName","group","_filterSrcTags","idx","srcTags","indexOf","splice","_deletedSrcTags","push","add","i","_add","inputTag","$emit","$id","fail","length","name","addable","selectArea","inputActive","remove","directive","$filter","$rootScope","restrict","require","link","scope","element","attrs","ngModel","delimiterRx","RegExp","cancel","$setViewValue","$render","addTag","value","match","addTags","removeLastTag","orderedTags","$viewValue","orderBy","bind","$$phase","$apply","evt","charCodeAt","which","$watch","newVal","focus","$parsers","unshift","values","split","val","$formatters","$document","$parse","decipherTagsOptions","template","model","srcResult","source","tagsWatch","srcWatch","pureStrings","stringArray","defaults","copy","userDefaults","parse","input","Error","itemName","sourceName","viewMapper","modelMapper","watchTags","oldValue","map","isArray","join","format","arr","sanitize","replace","isUndefined","isString","item","trim","isDefined","updateSrc","locals","o","obj","src","$parent","isFunction","isObject","extend","oldVal","$eval","$on","data","$observe","typeaheadOptions","deletedTag"],"mappings":"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","sourceRoot":"/"} \ No newline at end of file diff --git a/dist/angular-tags-0.2.8.min.js b/dist/angular-tags-0.2.8.min.js index bd70b70..6db1c4a 100644 --- a/dist/angular-tags-0.2.8.min.js +++ b/dist/angular-tags-0.2.8.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";try{angular.module("decipher.tags.templates")}catch(a){angular.module("decipher.tags.templates",[])}var b=angular.module("decipher.tags",["ui.bootstrap.typeahead","decipher.tags.templates"]),c={delimiter:",",classes:{},templateUrl:"templates/tags.html",tagTemplateUrl:"templates/tag.html"},d=/^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/,e={enter:13,esc:27,backspace:8},f=[e.enter],g=[e.backspace],h=[e.esc],i=0;b.constant("decipherTagsOptions",{}),b.controller("TagsCtrl",["$scope","$timeout",function(a,b){var c=[];a.getClasses=function(b){var c={};return b===a.toggles.selectedTag&&(c.selected=!0),angular.forEach(a.options.classes,function(a,d){b.group===d&&(c[a]=!0)}),c},a._filterSrcTags=function(d){var e=a.srcTags.indexOf(d);return e>=0?(b(function(){a.srcTags.splice(e,1)}),c.push(d),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var d;a.tags.splice(a.tags.indexOf(b),1),(d=c.indexOf(b)>=0)&&(c.splice(d,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)&&(angular.isFunction(n)&&n(),n=a.$parent.$watch(h.sourceName,function(a,b){a!==b&&x()},!0),b={},angular.isDefined(j)))for(c=0;c=0?(b(function(){a.srcTags.splice(d,1)}),a._deletedSrcTags.push(c),!0):!1},a.add=function(b){var c,d=function(b){a.tags.push(b),delete a.inputTag,a.$emit("decipher.tags.added",{tag:b,$id:a.$id})},e=function(){a.$emit("decipher.tags.addfailed",{tag:b,$id:a.$id})};for(c=a.tags.length;c--;)if(a.tags[c].name===b.name)return e(),!1;return a._filterSrcTags(b)?(d(b),!0):a.options.addable?(d(b),!0):(e(),!1)},a.selectArea=function(){a.toggles.inputActive=!0},a.remove=function(b){var c;a.tags.splice(a.tags.indexOf(b),1),(c=a._deletedSrcTags.indexOf(b)>=0)&&(a._deletedSrcTags.splice(c,1),-1===a.srcTags.indexOf(b)&&a.srcTags.push(b)),delete a.toggles.selectedTag,a.$emit("decipher.tags.removed",{tag:b,$id:a.$id})}}]),b.directive("decipherTagsInput",["$timeout","$filter","$rootScope",function(a,b,c){return{restrict:"C",require:"ngModel",link:function(d,e,i,j){var k=new RegExp("^"+d.options.delimiter+"+$"),l=function(){j.$setViewValue(""),j.$render()},m=function(a){if(a){if(a.match(k))return l(),void 0;d.add({name:a})&&l()}},n=function(a){var b;for(b=0;b=0?m(j.$viewValue):h.indexOf(a.which)>=0?(l(),d.toggles.inputActive=!1):g.indexOf(a.which)>=0?o():(delete d.toggles.selectedTag,d.$emit("decipher.tags.keyup",{value:j.$viewValue,$id:d.$id}))})}),d.$watch("toggles.inputActive",function(b){b&&a(function(){e[0].focus()})}),j.$parsers.unshift(function(a){var b=a.split(d.options.delimiter);return b.length>1&&n(b),a.match(k)?(e.val(""),void 0):a}),j.$formatters.push(function(a){return a&&a.value?(e.val(""),void 0):a})}}}]),b.directive("tags",["$document","$timeout","$parse","decipherTagsOptions",function(a,b,e,f){return{controller:"TagsCtrl",restrict:"E",template:'',scope:{model:"="},link:function(a,b,g){var h,j,k,l,m,n,o,p=!1,q=!1,r=angular.copy(c),s=angular.copy(f),t=function(a){var b=a.match(d);if(!b)throw new Error("Expected src specification in form of '_modelValue_ (as _label_)? for _item_ in _collection_' but got '"+a+"'.");return{itemName:b[3],source:e(b[4]),sourceName:b[4],viewMapper:e(b[2]||b[1]),modelMapper:e(b[1])}},u=function(){m=a.$watch("tags",function(b,c){var d;if(b!==c&&(q||p)){if(b=b.map(function(a){return a.name}),angular.isArray(a.model))for(a.model.length=0,d=0;d/g,">").replace(/'/g,"'").replace(/"/g,""")};if(!angular.isUndefined(b)){if(angular.isString(b))c=b.split(a.options.delimiter).map(function(a){return{name:d(a.trim())}});else if(angular.isArray(b))c=b.map(function(a){return angular.isString(a)?{name:d(a.trim())}:(a.name&&(a.name=d(a.name.trim())),a)});else if(angular.isDefined(b))throw"list of tags must be an array or delimited string";return c}},w=function x(){var b,c,d,e;if(a.options.addable=a.options.addable||!1,a.srcTags=[],h=t(g.src),j=h.source(a.$parent),!angular.isUndefined(j)){if(angular.isFunction(n)&&n(),b={},angular.isDefined(j))for(c=0;c= 0) { - deletedSrcTags.splice(idx, 1); + if (idx = $scope._deletedSrcTags.indexOf(tag) >= 0) { + $scope._deletedSrcTags.splice(idx, 1); if ($scope.srcTags.indexOf(tag) === -1) { $scope.srcTags.push(tag); } @@ -475,22 +473,15 @@ obj; // default to NOT letting users add new tags in this case. scope.options.addable = scope.options.addable || false; + scope.srcTags = []; srcResult = parse(attrs.src); source = srcResult.source(scope.$parent); - if (angular.isUndefined(source)) { return; } if (angular.isFunction(srcWatch)) { srcWatch(); } - srcWatch = - scope.$parent.$watch(srcResult.sourceName, - function (newVal, oldVal) { - if (newVal !== oldVal) { - updateSrc(); - } - }, true); locals = {}; if (angular.isDefined(source)) { for (i = 0; i < source.length; i++) { @@ -515,6 +506,14 @@ scope.srcTags.push(o); } } + + srcWatch = + scope.$parent.$watch(srcResult.sourceName, + function (newVal, oldVal) { + if (newVal !== oldVal) { + updateSrc(); + } + }, true); }; // merge options @@ -563,15 +562,30 @@ // watch model for changes and update tags as appropriate scope.tags = []; + scope._deletedSrcTags = []; scope.$watch('model', function (newVal) { + var deletedTag, idx; if (angular.isDefined(newVal)) { tagsWatch(); scope.tags = format(newVal); + // remove already used tags i = scope.tags.length; while (i--) { scope._filterSrcTags(scope.tags[i]); } + + // restore any deleted things to the src array that happen to not + // be in the new value. + i = scope._deletedSrcTags.length; + while (i--) { + deletedTag = scope._deletedSrcTags[i]; + if (idx = newVal.indexOf(deletedTag) === -1) { + scope.srcTags.push(deletedTag); + scope._deletedSrcTags.splice(i, 1); + } + } + watchTags(); } }, true); diff --git a/test/test-tags.js b/test/test-tags.js index 34e1cb9..f9d8166 100644 --- a/test/test-tags.js +++ b/test/test-tags.js @@ -91,7 +91,6 @@ {name: 'deer'} ]), 'tags are as expected'); - markup = '' scope.$apply(function () { @@ -149,26 +148,51 @@ Q.equal(tpl.scope().srcTags.indexOf(chickens), -1, 'srctags have no "chickens"'); + $timeout.verifyNoPendingTasks(); - chickens = {value: 1, name: 'chickens', foo: 'bar'}; + var chickens = {value: 1, name: 'chickens', foo: 'bar'}; + var frogs = {value: 3, name: 'frogs', foo: 'spam'}; markup = ''; scope.$apply(function () { - scope.foo = [chickens]; + scope.foo = [chickens, frogs]; scope.stuff = [ chickens, {value: 2, name: 'steer', foo: 'baz'} ]; tpl = $compile(markup)(scope); }); + $timeout.flush(); + Q.strictEqual(tpl.scope()._deletedSrcTags[0], chickens, + 'assert chickens wound up in deletedSrcTags'); - scope.$apply('foo = []'); - Q.deepEqual(tpl.scope().tags, [], 'tags is now empty'); - Q.deepEqual(angular.toJson(tpl.scope().srcTags), angular.toJson([ - {value: 1, name: 'chickens', foo: 'bar'}, - {value: 2, name: 'steer', foo: 'baz'} + Q.strictEqual(tpl.scope().tags[0], chickens, + 'tags is just "chickens"'); + scope.$apply(function () { + scope.foo = [frogs]; + }); + + Q.strictEqual(tpl.scope().tags[0], frogs, 'tags contains only "frogs"'); + Q.equal(JSON.stringify(tpl.scope()._deletedSrcTags), JSON.stringify([]), + 'assert deletedSrcTags is empty'); + + Q.equal(angular.toJson(tpl.scope().srcTags), angular.toJson([ + {value: 2, name: 'steer', foo: 'baz'}, + {value: 1, name: 'chickens', foo: 'bar'} ]), 'srcTags have all the things'); + scope.$apply(function () { + scope.foo = [chickens]; + }); + $timeout.flush(); + Q.equal(angular.toJson(tpl.scope().srcTags), angular.toJson([ + {value: 2, name: 'steer', foo: 'baz'} + ]), 'srcTags has no "chickens"'); + + scope.$apply('stuff = []'); + + Q.deepEqual(tpl.scope().srcTags, [], 'srcTags is now empty'); + markup = ''; scope.$apply(function () {