rails-angular-strap 0.0.1 → 2.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +2 -0
  3. data/README.md +10 -2
  4. data/lib/rails-angular-strap.rb +4 -6
  5. data/lib/rails-angular-strap/version.rb +1 -2
  6. data/vendor/assets/javascripts/angular-strap-unstable.js +2 -0
  7. data/vendor/assets/javascripts/angular-strap-unstable.min.js +2 -0
  8. data/vendor/assets/javascripts/angular-strap/angular-strap.min.js.map +1 -0
  9. data/vendor/assets/javascripts/angular-strap/unstable/angular-strap.js +5040 -0
  10. data/vendor/assets/javascripts/angular-strap/unstable/angular-strap.min.js +11 -0
  11. data/vendor/assets/javascripts/angular-strap/unstable/angular-strap.min.js.map +1 -0
  12. data/vendor/assets/javascripts/angular-strap/unstable/angular-strap.tpl.js +89 -0
  13. data/vendor/assets/javascripts/angular-strap/unstable/angular-strap.tpl.min.js +8 -0
  14. data/vendor/assets/javascripts/angular-strap/unstable/modules/affix.js +249 -0
  15. data/vendor/assets/javascripts/angular-strap/unstable/modules/affix.min.js +9 -0
  16. data/vendor/assets/javascripts/angular-strap/unstable/modules/affix.min.js.map +1 -0
  17. data/vendor/assets/javascripts/angular-strap/unstable/modules/alert.js +120 -0
  18. data/vendor/assets/javascripts/angular-strap/unstable/modules/alert.min.js +9 -0
  19. data/vendor/assets/javascripts/angular-strap/unstable/modules/alert.min.js.map +1 -0
  20. data/vendor/assets/javascripts/angular-strap/unstable/modules/alert.tpl.js +14 -0
  21. data/vendor/assets/javascripts/angular-strap/unstable/modules/alert.tpl.min.js +8 -0
  22. data/vendor/assets/javascripts/angular-strap/unstable/modules/aside.js +96 -0
  23. data/vendor/assets/javascripts/angular-strap/unstable/modules/aside.min.js +9 -0
  24. data/vendor/assets/javascripts/angular-strap/unstable/modules/aside.min.js.map +1 -0
  25. data/vendor/assets/javascripts/angular-strap/unstable/modules/aside.tpl.js +14 -0
  26. data/vendor/assets/javascripts/angular-strap/unstable/modules/aside.tpl.min.js +8 -0
  27. data/vendor/assets/javascripts/angular-strap/unstable/modules/button.js +177 -0
  28. data/vendor/assets/javascripts/angular-strap/unstable/modules/button.min.js +9 -0
  29. data/vendor/assets/javascripts/angular-strap/unstable/modules/button.min.js.map +1 -0
  30. data/vendor/assets/javascripts/angular-strap/unstable/modules/collapse.js +273 -0
  31. data/vendor/assets/javascripts/angular-strap/unstable/modules/collapse.min.js +9 -0
  32. data/vendor/assets/javascripts/angular-strap/unstable/modules/collapse.min.js.map +1 -0
  33. data/vendor/assets/javascripts/angular-strap/unstable/modules/date-formatter.js +61 -0
  34. data/vendor/assets/javascripts/angular-strap/unstable/modules/date-formatter.min.js +9 -0
  35. data/vendor/assets/javascripts/angular-strap/unstable/modules/date-formatter.min.js.map +1 -0
  36. data/vendor/assets/javascripts/angular-strap/unstable/modules/date-parser.js +273 -0
  37. data/vendor/assets/javascripts/angular-strap/unstable/modules/date-parser.min.js +9 -0
  38. data/vendor/assets/javascripts/angular-strap/unstable/modules/date-parser.min.js.map +1 -0
  39. data/vendor/assets/javascripts/angular-strap/unstable/modules/datepicker.js +640 -0
  40. data/vendor/assets/javascripts/angular-strap/unstable/modules/datepicker.min.js +9 -0
  41. data/vendor/assets/javascripts/angular-strap/unstable/modules/datepicker.min.js.map +1 -0
  42. data/vendor/assets/javascripts/angular-strap/unstable/modules/datepicker.tpl.js +14 -0
  43. data/vendor/assets/javascripts/angular-strap/unstable/modules/datepicker.tpl.min.js +8 -0
  44. data/vendor/assets/javascripts/angular-strap/unstable/modules/debounce.js +62 -0
  45. data/vendor/assets/javascripts/angular-strap/unstable/modules/debounce.min.js +9 -0
  46. data/vendor/assets/javascripts/angular-strap/unstable/modules/debounce.min.js.map +1 -0
  47. data/vendor/assets/javascripts/angular-strap/unstable/modules/dimensions.js +156 -0
  48. data/vendor/assets/javascripts/angular-strap/unstable/modules/dimensions.min.js +9 -0
  49. data/vendor/assets/javascripts/angular-strap/unstable/modules/dimensions.min.js.map +1 -0
  50. data/vendor/assets/javascripts/angular-strap/unstable/modules/dropdown.js +149 -0
  51. data/vendor/assets/javascripts/angular-strap/unstable/modules/dropdown.min.js +9 -0
  52. data/vendor/assets/javascripts/angular-strap/unstable/modules/dropdown.min.js.map +1 -0
  53. data/vendor/assets/javascripts/angular-strap/unstable/modules/dropdown.tpl.js +14 -0
  54. data/vendor/assets/javascripts/angular-strap/unstable/modules/dropdown.tpl.min.js +8 -0
  55. data/vendor/assets/javascripts/angular-strap/unstable/modules/modal.js +357 -0
  56. data/vendor/assets/javascripts/angular-strap/unstable/modules/modal.min.js +9 -0
  57. data/vendor/assets/javascripts/angular-strap/unstable/modules/modal.min.js.map +1 -0
  58. data/vendor/assets/javascripts/angular-strap/unstable/modules/modal.tpl.js +14 -0
  59. data/vendor/assets/javascripts/angular-strap/unstable/modules/modal.tpl.min.js +8 -0
  60. data/vendor/assets/javascripts/angular-strap/unstable/modules/navbar.js +72 -0
  61. data/vendor/assets/javascripts/angular-strap/unstable/modules/navbar.min.js +9 -0
  62. data/vendor/assets/javascripts/angular-strap/unstable/modules/navbar.min.js.map +1 -0
  63. data/vendor/assets/javascripts/angular-strap/unstable/modules/parse-options.js +76 -0
  64. data/vendor/assets/javascripts/angular-strap/unstable/modules/parse-options.min.js +9 -0
  65. data/vendor/assets/javascripts/angular-strap/unstable/modules/parse-options.min.js.map +1 -0
  66. data/vendor/assets/javascripts/angular-strap/unstable/modules/popover.js +112 -0
  67. data/vendor/assets/javascripts/angular-strap/unstable/modules/popover.min.js +9 -0
  68. data/vendor/assets/javascripts/angular-strap/unstable/modules/popover.min.js.map +1 -0
  69. data/vendor/assets/javascripts/angular-strap/unstable/modules/popover.tpl.js +14 -0
  70. data/vendor/assets/javascripts/angular-strap/unstable/modules/popover.tpl.min.js +8 -0
  71. data/vendor/assets/javascripts/angular-strap/unstable/modules/raf.js +61 -0
  72. data/vendor/assets/javascripts/angular-strap/unstable/modules/raf.min.js +9 -0
  73. data/vendor/assets/javascripts/angular-strap/unstable/modules/raf.min.js.map +1 -0
  74. data/vendor/assets/javascripts/angular-strap/unstable/modules/scrollspy.js +261 -0
  75. data/vendor/assets/javascripts/angular-strap/unstable/modules/scrollspy.min.js +9 -0
  76. data/vendor/assets/javascripts/angular-strap/unstable/modules/scrollspy.min.js.map +1 -0
  77. data/vendor/assets/javascripts/angular-strap/unstable/modules/select.js +328 -0
  78. data/vendor/assets/javascripts/angular-strap/unstable/modules/select.min.js +9 -0
  79. data/vendor/assets/javascripts/angular-strap/unstable/modules/select.min.js.map +1 -0
  80. data/vendor/assets/javascripts/angular-strap/unstable/modules/select.tpl.js +14 -0
  81. data/vendor/assets/javascripts/angular-strap/unstable/modules/select.tpl.min.js +8 -0
  82. data/vendor/assets/javascripts/angular-strap/unstable/modules/tab.js +186 -0
  83. data/vendor/assets/javascripts/angular-strap/unstable/modules/tab.min.js +9 -0
  84. data/vendor/assets/javascripts/angular-strap/unstable/modules/tab.min.js.map +1 -0
  85. data/vendor/assets/javascripts/angular-strap/unstable/modules/tab.tpl.js +14 -0
  86. data/vendor/assets/javascripts/angular-strap/unstable/modules/tab.tpl.min.js +8 -0
  87. data/vendor/assets/javascripts/angular-strap/unstable/modules/timepicker.js +485 -0
  88. data/vendor/assets/javascripts/angular-strap/unstable/modules/timepicker.min.js +9 -0
  89. data/vendor/assets/javascripts/angular-strap/unstable/modules/timepicker.min.js.map +1 -0
  90. data/vendor/assets/javascripts/angular-strap/unstable/modules/timepicker.tpl.js +14 -0
  91. data/vendor/assets/javascripts/angular-strap/unstable/modules/timepicker.tpl.min.js +8 -0
  92. data/vendor/assets/javascripts/angular-strap/unstable/modules/tooltip.js +705 -0
  93. data/vendor/assets/javascripts/angular-strap/unstable/modules/tooltip.min.js +9 -0
  94. data/vendor/assets/javascripts/angular-strap/unstable/modules/tooltip.min.js.map +1 -0
  95. data/vendor/assets/javascripts/angular-strap/unstable/modules/tooltip.tpl.js +14 -0
  96. data/vendor/assets/javascripts/angular-strap/unstable/modules/tooltip.tpl.min.js +8 -0
  97. data/vendor/assets/javascripts/angular-strap/unstable/modules/typeahead.js +266 -0
  98. data/vendor/assets/javascripts/angular-strap/unstable/modules/typeahead.min.js +9 -0
  99. data/vendor/assets/javascripts/angular-strap/unstable/modules/typeahead.min.js.map +1 -0
  100. data/vendor/assets/javascripts/angular-strap/unstable/modules/typeahead.tpl.js +14 -0
  101. data/vendor/assets/javascripts/angular-strap/unstable/modules/typeahead.tpl.min.js +8 -0
  102. metadata +119 -3
@@ -0,0 +1,9 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ "use strict";angular.module("mgcrea.ngStrap.alert",["mgcrea.ngStrap.modal"]).provider("$alert",function(){var t=this.defaults={animation:"am-fade",prefixClass:"alert",prefixEvent:"alert",placement:null,template:"alert/alert.tpl.html",container:!1,element:null,backdrop:!1,keyboard:!0,show:!0,duration:!1,type:!1,dismissable:!0};this.$get=["$modal","$timeout",function(e,n){function a(a){var r={},i=angular.extend({},t,a);r=e(i),r.$scope.dismissable=!!i.dismissable,i.type&&(r.$scope.type=i.type);var o=r.show;return i.duration&&(r.show=function(){o(),n(function(){r.hide()},1e3*i.duration)}),r}return a}]}).directive("bsAlert",["$window","$sce","$alert",function(t,e,n){t.requestAnimationFrame||t.setTimeout;return{restrict:"EAC",scope:!0,link:function(t,a,r){var i={scope:t,element:a,show:!1};angular.forEach(["template","placement","keyboard","html","container","animation","duration","dismissable"],function(t){angular.isDefined(r[t])&&(i[t]=r[t])}),angular.forEach(["title","content","type"],function(n){r[n]&&r.$observe(n,function(a){t[n]=e.trustAsHtml(a)})}),r.bsAlert&&t.$watch(r.bsAlert,function(e){angular.isObject(e)?angular.extend(t,e):t.content=e},!0);var o=n(i);a.on(r.trigger||"click",o.toggle),t.$on("$destroy",function(){o&&o.destroy(),i=null,o=null})}}}]);
9
+ //# sourceMappingURL=alert.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["alert.min.js"],"names":["angular","module","provider","defaults","this","animation","prefixClass","prefixEvent","placement","template","container","element","backdrop","keyboard","show","duration","type","dismissable","$get","$modal","$timeout","AlertFactory","config","$alert","options","extend","$scope","hide","directive","$window","$sce","requestAnimationFrame","setTimeout","restrict","scope","link","attr","forEach","key","isDefined","$observe","newValue","trustAsHtml","bsAlert","$watch","isObject","content","alert","on","trigger","toggle","$on","destroy"],"mappings":"AAOA,YAMAA,SAAQC,OAAO,wBAAyB,yBAErCC,SAAS,SAAU,WAElB,GAAIC,GAAWC,KAAKD,UAClBE,UAAW,UACXC,YAAa,QACbC,YAAa,QACbC,UAAW,KACXC,SAAU,uBACVC,WAAW,EACXC,QAAS,KACTC,UAAU,EACVC,UAAU,EACVC,MAAM,EAENC,UAAU,EACVC,MAAM,EACNC,aAAa,EAGfb,MAAKc,MAAQ,SAAU,WAAY,SAASC,EAAQC,GAElD,QAASC,GAAaC,GAEpB,GAAIC,MAGAC,EAAUxB,QAAQyB,UAAWtB,EAAUmB,EAE3CC,GAASJ,EAAOK,GAGhBD,EAAOG,OAAOT,cAAgBO,EAAQP,YACnCO,EAAQR,OACTO,EAAOG,OAAOV,KAAOQ,EAAQR,KAI/B,IAAIF,GAAOS,EAAOT,IAUlB,OATGU,GAAQT,WACTQ,EAAOT,KAAO,WACZA,IACAM,EAAS,WACPG,EAAOI,QACa,IAAnBH,EAAQT,YAIRQ,EAIT,MAAOF,OAMVO,UAAU,WAAY,UAAW,OAAQ,SAAU,SAASC,EAASC,EAAMP,GAE9CM,EAAQE,uBAAyBF,EAAQG,UAErE,QACEC,SAAU,MACVC,OAAO,EACPC,KAAM,SAAkBD,EAAOvB,EAASyB,GAGtC,GAAIZ,IAAWU,MAAOA,EAAOvB,QAASA,EAASG,MAAM,EACrDd,SAAQqC,SAAS,WAAY,YAAa,WAAY,OAAQ,YAAa,YAAa,WAAY,eAAgB,SAASC,GACxHtC,QAAQuC,UAAUH,EAAKE,MAAOd,EAAQc,GAAOF,EAAKE,MAIvDtC,QAAQqC,SAAS,QAAS,UAAW,QAAS,SAASC,GACrDF,EAAKE,IAAQF,EAAKI,SAASF,EAAK,SAASG,GACvCP,EAAMI,GAAOR,EAAKY,YAAYD,OAKlCL,EAAKO,SAAWT,EAAMU,OAAOR,EAAKO,QAAS,SAASF,GAC/CzC,QAAQ6C,SAASJ,GAClBzC,QAAQyB,OAAOS,EAAOO,GAEtBP,EAAMY,QAAUL,IAEjB,EAGH,IAAIM,GAAQxB,EAAOC,EAGnBb,GAAQqC,GAAGZ,EAAKa,SAAW,QAASF,EAAMG,QAG1ChB,EAAMiB,IAAI,WAAY,WAChBJ,GAAOA,EAAMK,UACjB5B,EAAU,KACVuB,EAAQ","file":"alert.min.js","sourcesContent":[null],"sourceRoot":"/source/"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ 'use strict';
9
+
10
+ angular.module('mgcrea.ngStrap.alert').run(['$templateCache', function($templateCache) {
11
+
12
+ $templateCache.put('alert/alert.tpl.html', '<div class="alert" ng-class="[type ? \'alert-\' + type : null]"><button type="button" class="close" ng-if="dismissable" ng-click="$hide()">&times;</button> <strong ng-bind="title"></strong>&nbsp;<span ng-bind-html="content"></span></div>');
13
+
14
+ }]);
@@ -0,0 +1,8 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ "use strict";angular.module("mgcrea.ngStrap.alert").run(["$templateCache",function(t){t.put("alert/alert.tpl.html",'<div class="alert" ng-class="[type ? \'alert-\' + type : null]"><button type="button" class="close" ng-if="dismissable" ng-click="$hide()">&times;</button> <strong ng-bind="title"></strong>&nbsp;<span ng-bind-html="content"></span></div>')}]);
@@ -0,0 +1,96 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ 'use strict';
9
+
10
+ angular.module('mgcrea.ngStrap.aside', ['mgcrea.ngStrap.modal'])
11
+
12
+ .provider('$aside', function() {
13
+
14
+ var defaults = this.defaults = {
15
+ animation: 'am-fade-and-slide-right',
16
+ prefixClass: 'aside',
17
+ prefixEvent: 'aside',
18
+ placement: 'right',
19
+ template: 'aside/aside.tpl.html',
20
+ contentTemplate: false,
21
+ container: false,
22
+ element: null,
23
+ backdrop: true,
24
+ keyboard: true,
25
+ html: false,
26
+ show: true
27
+ };
28
+
29
+ this.$get = ["$modal", function($modal) {
30
+
31
+ function AsideFactory(config) {
32
+
33
+ var $aside = {};
34
+
35
+ // Common vars
36
+ var options = angular.extend({}, defaults, config);
37
+
38
+ $aside = $modal(options);
39
+
40
+ return $aside;
41
+
42
+ }
43
+
44
+ return AsideFactory;
45
+
46
+ }];
47
+
48
+ })
49
+
50
+ .directive('bsAside', ["$window", "$sce", "$aside", function($window, $sce, $aside) {
51
+
52
+ var requestAnimationFrame = $window.requestAnimationFrame || $window.setTimeout;
53
+
54
+ return {
55
+ restrict: 'EAC',
56
+ scope: true,
57
+ link: function postLink(scope, element, attr, transclusion) {
58
+ // Directive options
59
+ var options = {scope: scope, element: element, show: false};
60
+ angular.forEach(['template', 'contentTemplate', 'placement', 'backdrop', 'keyboard', 'html', 'container', 'animation'], function(key) {
61
+ if(angular.isDefined(attr[key])) options[key] = attr[key];
62
+ });
63
+
64
+ // Support scope as data-attrs
65
+ angular.forEach(['title', 'content'], function(key) {
66
+ attr[key] && attr.$observe(key, function(newValue, oldValue) {
67
+ scope[key] = $sce.trustAsHtml(newValue);
68
+ });
69
+ });
70
+
71
+ // Support scope as an object
72
+ attr.bsAside && scope.$watch(attr.bsAside, function(newValue, oldValue) {
73
+ if(angular.isObject(newValue)) {
74
+ angular.extend(scope, newValue);
75
+ } else {
76
+ scope.content = newValue;
77
+ }
78
+ }, true);
79
+
80
+ // Initialize aside
81
+ var aside = $aside(options);
82
+
83
+ // Trigger
84
+ element.on(attr.trigger || 'click', aside.toggle);
85
+
86
+ // Garbage collection
87
+ scope.$on('$destroy', function() {
88
+ if (aside) aside.destroy();
89
+ options = null;
90
+ aside = null;
91
+ });
92
+
93
+ }
94
+ };
95
+
96
+ }]);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ "use strict";angular.module("mgcrea.ngStrap.aside",["mgcrea.ngStrap.modal"]).provider("$aside",function(){var e=this.defaults={animation:"am-fade-and-slide-right",prefixClass:"aside",prefixEvent:"aside",placement:"right",template:"aside/aside.tpl.html",contentTemplate:!1,container:!1,element:null,backdrop:!0,keyboard:!0,html:!1,show:!0};this.$get=["$modal",function(t){function n(n){var a={},i=angular.extend({},e,n);return a=t(i)}return n}]}).directive("bsAside",["$window","$sce","$aside",function(e,t,n){e.requestAnimationFrame||e.setTimeout;return{restrict:"EAC",scope:!0,link:function(e,a,i){var r={scope:e,element:a,show:!1};angular.forEach(["template","contentTemplate","placement","backdrop","keyboard","html","container","animation"],function(e){angular.isDefined(i[e])&&(r[e]=i[e])}),angular.forEach(["title","content"],function(n){i[n]&&i.$observe(n,function(a){e[n]=t.trustAsHtml(a)})}),i.bsAside&&e.$watch(i.bsAside,function(t){angular.isObject(t)?angular.extend(e,t):e.content=t},!0);var o=n(r);a.on(i.trigger||"click",o.toggle),e.$on("$destroy",function(){o&&o.destroy(),r=null,o=null})}}}]);
9
+ //# sourceMappingURL=aside.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["aside.min.js"],"names":["angular","module","provider","defaults","this","animation","prefixClass","prefixEvent","placement","template","contentTemplate","container","element","backdrop","keyboard","html","show","$get","$modal","AsideFactory","config","$aside","options","extend","directive","$window","$sce","requestAnimationFrame","setTimeout","restrict","scope","link","attr","forEach","key","isDefined","$observe","newValue","trustAsHtml","bsAside","$watch","isObject","content","aside","on","trigger","toggle","$on","destroy"],"mappings":"AAOA,YAEAA,SAAQC,OAAO,wBAAyB,yBAErCC,SAAS,SAAU,WAElB,GAAIC,GAAWC,KAAKD,UAClBE,UAAW,0BACXC,YAAa,QACbC,YAAa,QACbC,UAAW,QACXC,SAAU,uBACVC,iBAAiB,EACjBC,WAAW,EACXC,QAAS,KACTC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,MAAM,EAGRZ,MAAKa,MAAQ,SAAU,SAASC,GAE9B,QAASC,GAAaC,GAEpB,GAAIC,MAGAC,EAAUtB,QAAQuB,UAAWpB,EAAUiB,EAI3C,OAFAC,GAASH,EAAOI,GAMlB,MAAOH,OAMVK,UAAU,WAAY,UAAW,OAAQ,SAAU,SAASC,EAASC,EAAML,GAE9CI,EAAQE,uBAAyBF,EAAQG,UAErE,QACEC,SAAU,MACVC,OAAO,EACPC,KAAM,SAAkBD,EAAOlB,EAASoB,GAEtC,GAAIV,IAAWQ,MAAOA,EAAOlB,QAASA,EAASI,MAAM,EACrDhB,SAAQiC,SAAS,WAAY,kBAAmB,YAAa,WAAY,WAAY,OAAQ,YAAa,aAAc,SAASC,GAC5HlC,QAAQmC,UAAUH,EAAKE,MAAOZ,EAAQY,GAAOF,EAAKE,MAIvDlC,QAAQiC,SAAS,QAAS,WAAY,SAASC,GAC7CF,EAAKE,IAAQF,EAAKI,SAASF,EAAK,SAASG,GACvCP,EAAMI,GAAOR,EAAKY,YAAYD,OAKlCL,EAAKO,SAAWT,EAAMU,OAAOR,EAAKO,QAAS,SAASF,GAC/CrC,QAAQyC,SAASJ,GAClBrC,QAAQuB,OAAOO,EAAOO,GAEtBP,EAAMY,QAAUL,IAEjB,EAGH,IAAIM,GAAQtB,EAAOC,EAGnBV,GAAQgC,GAAGZ,EAAKa,SAAW,QAASF,EAAMG,QAG1ChB,EAAMiB,IAAI,WAAY,WAChBJ,GAAOA,EAAMK,UACjB1B,EAAU,KACVqB,EAAQ","file":"aside.min.js","sourcesContent":[null],"sourceRoot":"/source/"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ 'use strict';
9
+
10
+ angular.module('mgcrea.ngStrap.aside').run(['$templateCache', function($templateCache) {
11
+
12
+ $templateCache.put('aside/aside.tpl.html', '<div class="aside" tabindex="-1" role="dialog"><div class="aside-dialog"><div class="aside-content"><div class="aside-header" ng-show="title"><button type="button" class="close" ng-click="$hide()">&times;</button><h4 class="aside-title" ng-bind="title"></h4></div><div class="aside-body" ng-bind="content"></div><div class="aside-footer"><button type="button" class="btn btn-default" ng-click="$hide()">Close</button></div></div></div></div>');
13
+
14
+ }]);
@@ -0,0 +1,8 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ "use strict";angular.module("mgcrea.ngStrap.aside").run(["$templateCache",function(t){t.put("aside/aside.tpl.html",'<div class="aside" tabindex="-1" role="dialog"><div class="aside-dialog"><div class="aside-content"><div class="aside-header" ng-show="title"><button type="button" class="close" ng-click="$hide()">&times;</button><h4 class="aside-title" ng-bind="title"></h4></div><div class="aside-body" ng-bind="content"></div><div class="aside-footer"><button type="button" class="btn btn-default" ng-click="$hide()">Close</button></div></div></div></div>')}]);
@@ -0,0 +1,177 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ 'use strict';
9
+
10
+ angular.module('mgcrea.ngStrap.button', [])
11
+
12
+ .provider('$button', function() {
13
+
14
+ var defaults = this.defaults = {
15
+ activeClass:'active',
16
+ toggleEvent:'click'
17
+ };
18
+
19
+ this.$get = function() {
20
+ return {defaults: defaults};
21
+ };
22
+
23
+ })
24
+
25
+ .directive('bsCheckboxGroup', function() {
26
+
27
+ return {
28
+ restrict: 'A',
29
+ require: 'ngModel',
30
+ compile: function postLink(element, attr) {
31
+ element.attr('data-toggle', 'buttons');
32
+ element.removeAttr('ng-model');
33
+ var children = element[0].querySelectorAll('input[type="checkbox"]');
34
+ angular.forEach(children, function(child) {
35
+ var childEl = angular.element(child);
36
+ childEl.attr('bs-checkbox', '');
37
+ childEl.attr('ng-model', attr.ngModel + '.' + childEl.attr('value'));
38
+ });
39
+ }
40
+
41
+ };
42
+
43
+ })
44
+
45
+ .directive('bsCheckbox', ["$button", "$$rAF", function($button, $$rAF) {
46
+
47
+ var defaults = $button.defaults;
48
+ var constantValueRegExp = /^(true|false|\d+)$/;
49
+
50
+ return {
51
+ restrict: 'A',
52
+ require: 'ngModel',
53
+ link: function postLink(scope, element, attr, controller) {
54
+
55
+ var options = defaults;
56
+
57
+ // Support label > input[type="checkbox"]
58
+ var isInput = element[0].nodeName === 'INPUT';
59
+ var activeElement = isInput ? element.parent() : element;
60
+
61
+ var trueValue = angular.isDefined(attr.trueValue) ? attr.trueValue : true;
62
+ if(constantValueRegExp.test(attr.trueValue)) {
63
+ trueValue = scope.$eval(attr.trueValue);
64
+ }
65
+ var falseValue = angular.isDefined(attr.falseValue) ? attr.falseValue : false;
66
+ if(constantValueRegExp.test(attr.falseValue)) {
67
+ falseValue = scope.$eval(attr.falseValue);
68
+ }
69
+
70
+ // Parse exotic values
71
+ var hasExoticValues = typeof trueValue !== 'boolean' || typeof falseValue !== 'boolean';
72
+ if(hasExoticValues) {
73
+ controller.$parsers.push(function(viewValue) {
74
+ // console.warn('$parser', element.attr('ng-model'), 'viewValue', viewValue);
75
+ return viewValue ? trueValue : falseValue;
76
+ });
77
+ // modelValue -> $formatters -> viewValue
78
+ controller.$formatters.push(function(modelValue) {
79
+ // console.warn('$formatter("%s"): modelValue=%o (%o)', element.attr('ng-model'), modelValue, typeof modelValue);
80
+ return angular.equals(modelValue, trueValue);
81
+ });
82
+ // Fix rendering for exotic values
83
+ scope.$watch(attr.ngModel, function(newValue, oldValue) {
84
+ controller.$render();
85
+ });
86
+ }
87
+
88
+ // model -> view
89
+ controller.$render = function () {
90
+ // console.warn('$render', element.attr('ng-model'), 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue, 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue);
91
+ var isActive = angular.equals(controller.$modelValue, trueValue);
92
+ $$rAF(function() {
93
+ if(isInput) element[0].checked = isActive;
94
+ activeElement.toggleClass(options.activeClass, isActive);
95
+ });
96
+ };
97
+
98
+ // view -> model
99
+ element.bind(options.toggleEvent, function() {
100
+ scope.$apply(function () {
101
+ // console.warn('!click', element.attr('ng-model'), 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue, 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue);
102
+ if(!isInput) {
103
+ controller.$setViewValue(!activeElement.hasClass('active'));
104
+ }
105
+ if(!hasExoticValues) {
106
+ controller.$render();
107
+ }
108
+ });
109
+ });
110
+
111
+ }
112
+
113
+ };
114
+
115
+ }])
116
+
117
+ .directive('bsRadioGroup', function() {
118
+
119
+ return {
120
+ restrict: 'A',
121
+ require: 'ngModel',
122
+ compile: function postLink(element, attr) {
123
+ element.attr('data-toggle', 'buttons');
124
+ element.removeAttr('ng-model');
125
+ var children = element[0].querySelectorAll('input[type="radio"]');
126
+ angular.forEach(children, function(child) {
127
+ angular.element(child).attr('bs-radio', '');
128
+ angular.element(child).attr('ng-model', attr.ngModel);
129
+ });
130
+ }
131
+
132
+ };
133
+
134
+ })
135
+
136
+ .directive('bsRadio', ["$button", "$$rAF", function($button, $$rAF) {
137
+
138
+ var defaults = $button.defaults;
139
+ var constantValueRegExp = /^(true|false|\d+)$/;
140
+
141
+ return {
142
+ restrict: 'A',
143
+ require: 'ngModel',
144
+ link: function postLink(scope, element, attr, controller) {
145
+
146
+ var options = defaults;
147
+
148
+ // Support `label > input[type="radio"]` markup
149
+ var isInput = element[0].nodeName === 'INPUT';
150
+ var activeElement = isInput ? element.parent() : element;
151
+
152
+ var value = constantValueRegExp.test(attr.value) ? scope.$eval(attr.value) : attr.value;
153
+
154
+ // model -> view
155
+ controller.$render = function () {
156
+ // console.warn('$render', element.attr('value'), 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue, 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue);
157
+ var isActive = angular.equals(controller.$modelValue, value);
158
+ $$rAF(function() {
159
+ if(isInput) element[0].checked = isActive;
160
+ activeElement.toggleClass(options.activeClass, isActive);
161
+ });
162
+ };
163
+
164
+ // view -> model
165
+ element.bind(options.toggleEvent, function() {
166
+ scope.$apply(function () {
167
+ // console.warn('!click', element.attr('value'), 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue, 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue);
168
+ controller.$setViewValue(value);
169
+ controller.$render();
170
+ });
171
+ });
172
+
173
+ }
174
+
175
+ };
176
+
177
+ }]);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ "use strict";angular.module("mgcrea.ngStrap.button",[]).provider("$button",function(){var e=this.defaults={activeClass:"active",toggleEvent:"click"};this.$get=function(){return{defaults:e}}}).directive("bsCheckboxGroup",function(){return{restrict:"A",require:"ngModel",compile:function(e,t){e.attr("data-toggle","buttons"),e.removeAttr("ng-model");var a=e[0].querySelectorAll('input[type="checkbox"]');angular.forEach(a,function(e){var a=angular.element(e);a.attr("bs-checkbox",""),a.attr("ng-model",t.ngModel+"."+a.attr("value"))})}}}).directive("bsCheckbox",["$button","$$rAF",function(e,t){var a=e.defaults,n=/^(true|false|\d+)$/;return{restrict:"A",require:"ngModel",link:function(e,r,u,l){var o=a,i="INPUT"===r[0].nodeName,c=i?r.parent():r,s=angular.isDefined(u.trueValue)?u.trueValue:!0;n.test(u.trueValue)&&(s=e.$eval(u.trueValue));var d=angular.isDefined(u.falseValue)?u.falseValue:!1;n.test(u.falseValue)&&(d=e.$eval(u.falseValue));var f="boolean"!=typeof s||"boolean"!=typeof d;f&&(l.$parsers.push(function(e){return e?s:d}),l.$formatters.push(function(e){return angular.equals(e,s)}),e.$watch(u.ngModel,function(){l.$render()})),l.$render=function(){var e=angular.equals(l.$modelValue,s);t(function(){i&&(r[0].checked=e),c.toggleClass(o.activeClass,e)})},r.bind(o.toggleEvent,function(){e.$apply(function(){i||l.$setViewValue(!c.hasClass("active")),f||l.$render()})})}}}]).directive("bsRadioGroup",function(){return{restrict:"A",require:"ngModel",compile:function(e,t){e.attr("data-toggle","buttons"),e.removeAttr("ng-model");var a=e[0].querySelectorAll('input[type="radio"]');angular.forEach(a,function(e){angular.element(e).attr("bs-radio",""),angular.element(e).attr("ng-model",t.ngModel)})}}}).directive("bsRadio",["$button","$$rAF",function(e,t){var a=e.defaults,n=/^(true|false|\d+)$/;return{restrict:"A",require:"ngModel",link:function(e,r,u,l){var o=a,i="INPUT"===r[0].nodeName,c=i?r.parent():r,s=n.test(u.value)?e.$eval(u.value):u.value;l.$render=function(){var e=angular.equals(l.$modelValue,s);t(function(){i&&(r[0].checked=e),c.toggleClass(o.activeClass,e)})},r.bind(o.toggleEvent,function(){e.$apply(function(){l.$setViewValue(s),l.$render()})})}}}]);
9
+ //# sourceMappingURL=button.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["button.min.js"],"names":["angular","module","provider","defaults","this","activeClass","toggleEvent","$get","directive","restrict","require","compile","element","attr","removeAttr","children","querySelectorAll","forEach","child","childEl","ngModel","$button","$$rAF","constantValueRegExp","link","scope","controller","options","isInput","nodeName","activeElement","parent","trueValue","isDefined","test","$eval","falseValue","hasExoticValues","$parsers","push","viewValue","$formatters","modelValue","equals","$watch","$render","isActive","$modelValue","checked","toggleClass","bind","$apply","$setViewValue","hasClass","value"],"mappings":"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","file":"button.min.js","sourcesContent":[null],"sourceRoot":"/source/"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * angular-strap
3
+ * @version v2.1.6 - 2015-02-08
4
+ * @link http://mgcrea.github.io/angular-strap
5
+ * @author Olivier Louvignes (olivier@mg-crea.com)
6
+ * @license MIT License, http://www.opensource.org/licenses/MIT
7
+ */
8
+ 'use strict';
9
+
10
+ angular.module('mgcrea.ngStrap.collapse', [])
11
+
12
+ .provider('$collapse', function() {
13
+
14
+ var defaults = this.defaults = {
15
+ animation: 'am-collapse',
16
+ disallowToggle: false,
17
+ activeClass: 'in',
18
+ startCollapsed: false,
19
+ allowMultiple: false
20
+ };
21
+
22
+ var controller = this.controller = function($scope, $element, $attrs) {
23
+ var self = this;
24
+
25
+ // Attributes options
26
+ self.$options = angular.copy(defaults);
27
+ angular.forEach(['animation', 'disallowToggle', 'activeClass', 'startCollapsed', 'allowMultiple'], function (key) {
28
+ if(angular.isDefined($attrs[key])) self.$options[key] = $attrs[key];
29
+ });
30
+
31
+ self.$toggles = [];
32
+ self.$targets = [];
33
+
34
+ self.$viewChangeListeners = [];
35
+
36
+ self.$registerToggle = function(element) {
37
+ self.$toggles.push(element);
38
+ };
39
+ self.$registerTarget = function(element) {
40
+ self.$targets.push(element);
41
+ };
42
+
43
+ self.$unregisterToggle = function(element) {
44
+ var index = self.$toggles.indexOf(element);
45
+ // remove toggle from $toggles array
46
+ self.$toggles.splice(index, 1);
47
+ };
48
+ self.$unregisterTarget = function(element) {
49
+ var index = self.$targets.indexOf(element);
50
+
51
+ // remove element from $targets array
52
+ self.$targets.splice(index, 1);
53
+
54
+ if (self.$options.allowMultiple) {
55
+ // remove target index from $active array values
56
+ deactivateItem(element);
57
+ }
58
+
59
+ // fix active item indexes
60
+ fixActiveItemIndexes(index);
61
+
62
+ self.$viewChangeListeners.forEach(function(fn) {
63
+ fn();
64
+ });
65
+ };
66
+
67
+ // use array to store all the currently open panels
68
+ self.$targets.$active = !self.$options.startCollapsed ? [0] : [];
69
+ self.$setActive = $scope.$setActive = function(value) {
70
+ if(angular.isArray(value)) {
71
+ self.$targets.$active = angular.copy(value);
72
+ }
73
+ else if(!self.$options.disallowToggle) {
74
+ // toogle element active status
75
+ isActive(value) ? deactivateItem(value) : activateItem(value);
76
+ } else {
77
+ activateItem(value);
78
+ }
79
+
80
+ self.$viewChangeListeners.forEach(function(fn) {
81
+ fn();
82
+ });
83
+ };
84
+
85
+ self.$activeIndexes = function() {
86
+ return self.$options.allowMultiple ? self.$targets.$active :
87
+ self.$targets.$active.length === 1 ? self.$targets.$active[0] : -1;
88
+ };
89
+
90
+ function fixActiveItemIndexes(index) {
91
+ // item with index was removed, so we
92
+ // need to adjust other items index values
93
+ var activeIndexes = self.$targets.$active;
94
+ for(var i = 0; i < activeIndexes.length; i++) {
95
+ if (index < activeIndexes[i]) {
96
+ activeIndexes[i] = activeIndexes[i] - 1;
97
+ }
98
+
99
+ // the last item is active, so we need to
100
+ // adjust its index
101
+ if (activeIndexes[i] === self.$targets.length) {
102
+ activeIndexes[i] = self.$targets.length - 1;
103
+ }
104
+ }
105
+ }
106
+
107
+ function isActive(value) {
108
+ var activeItems = self.$targets.$active;
109
+ return activeItems.indexOf(value) === -1 ? false : true;
110
+ }
111
+
112
+ function deactivateItem(value) {
113
+ var index = self.$targets.$active.indexOf(value);
114
+ if (index !== -1) {
115
+ self.$targets.$active.splice(index, 1);
116
+ }
117
+ }
118
+
119
+ function activateItem(value) {
120
+ if (!self.$options.allowMultiple) {
121
+ // remove current selected item
122
+ self.$targets.$active.splice(0, 1);
123
+ }
124
+
125
+ if (self.$targets.$active.indexOf(value) === -1) {
126
+ self.$targets.$active.push(value);
127
+ }
128
+ }
129
+
130
+ };
131
+
132
+ this.$get = function() {
133
+ var $collapse = {};
134
+ $collapse.defaults = defaults;
135
+ $collapse.controller = controller;
136
+ return $collapse;
137
+ };
138
+
139
+ })
140
+
141
+ .directive('bsCollapse', ["$window", "$animate", "$collapse", function($window, $animate, $collapse) {
142
+
143
+ var defaults = $collapse.defaults;
144
+
145
+ return {
146
+ require: ['?ngModel', 'bsCollapse'],
147
+ controller: ['$scope', '$element', '$attrs', $collapse.controller],
148
+ link: function postLink(scope, element, attrs, controllers) {
149
+
150
+ var ngModelCtrl = controllers[0];
151
+ var bsCollapseCtrl = controllers[1];
152
+
153
+ if(ngModelCtrl) {
154
+
155
+ // Update the modelValue following
156
+ bsCollapseCtrl.$viewChangeListeners.push(function() {
157
+ ngModelCtrl.$setViewValue(bsCollapseCtrl.$activeIndexes());
158
+ });
159
+
160
+ // modelValue -> $formatters -> viewValue
161
+ ngModelCtrl.$formatters.push(function(modelValue) {
162
+ // console.warn('$formatter("%s"): modelValue=%o (%o)', element.attr('ng-model'), modelValue, typeof modelValue);
163
+ if (angular.isArray(modelValue)) {
164
+ // model value is an array, so just replace
165
+ // the active items directly
166
+ bsCollapseCtrl.$setActive(modelValue);
167
+ }
168
+ else {
169
+ var activeIndexes = bsCollapseCtrl.$activeIndexes();
170
+
171
+ if (angular.isArray(activeIndexes)) {
172
+ // we have an array of selected indexes
173
+ if (activeIndexes.indexOf(modelValue * 1) === -1) {
174
+ // item with modelValue index is not active
175
+ bsCollapseCtrl.$setActive(modelValue * 1);
176
+ }
177
+ }
178
+ else if (activeIndexes !== modelValue * 1) {
179
+ bsCollapseCtrl.$setActive(modelValue * 1);
180
+ }
181
+ }
182
+ return modelValue;
183
+ });
184
+
185
+ }
186
+
187
+ }
188
+ };
189
+
190
+ }])
191
+
192
+ .directive('bsCollapseToggle', function() {
193
+
194
+ return {
195
+ require: ['^?ngModel', '^bsCollapse'],
196
+ link: function postLink(scope, element, attrs, controllers) {
197
+
198
+ var ngModelCtrl = controllers[0];
199
+ var bsCollapseCtrl = controllers[1];
200
+
201
+ // Add base attr
202
+ element.attr('data-toggle', 'collapse');
203
+
204
+ // Push pane to parent bsCollapse controller
205
+ bsCollapseCtrl.$registerToggle(element);
206
+
207
+ // remove toggle from collapse controller when toggle is destroyed
208
+ scope.$on('$destroy', function() {
209
+ bsCollapseCtrl.$unregisterToggle(element);
210
+ });
211
+
212
+ element.on('click', function() {
213
+ var index = attrs.bsCollapseToggle || bsCollapseCtrl.$toggles.indexOf(element);
214
+ bsCollapseCtrl.$setActive(index * 1);
215
+ scope.$apply();
216
+ });
217
+
218
+ }
219
+ };
220
+
221
+ })
222
+
223
+ .directive('bsCollapseTarget', ["$animate", function($animate) {
224
+
225
+ return {
226
+ require: ['^?ngModel', '^bsCollapse'],
227
+ // scope: true,
228
+ link: function postLink(scope, element, attrs, controllers) {
229
+
230
+ var ngModelCtrl = controllers[0];
231
+ var bsCollapseCtrl = controllers[1];
232
+
233
+ // Add base class
234
+ element.addClass('collapse');
235
+
236
+ // Add animation class
237
+ if(bsCollapseCtrl.$options.animation) {
238
+ element.addClass(bsCollapseCtrl.$options.animation);
239
+ }
240
+
241
+ // Push pane to parent bsCollapse controller
242
+ bsCollapseCtrl.$registerTarget(element);
243
+
244
+ // remove pane target from collapse controller when target is destroyed
245
+ scope.$on('$destroy', function() {
246
+ bsCollapseCtrl.$unregisterTarget(element);
247
+ });
248
+
249
+ function render() {
250
+ var index = bsCollapseCtrl.$targets.indexOf(element);
251
+ var active = bsCollapseCtrl.$activeIndexes();
252
+ var action = 'removeClass';
253
+ if (angular.isArray(active)) {
254
+ if (active.indexOf(index) !== -1) {
255
+ action = 'addClass';
256
+ }
257
+ }
258
+ else if (index === active) {
259
+ action = 'addClass';
260
+ }
261
+
262
+ $animate[action](element, bsCollapseCtrl.$options.activeClass);
263
+ }
264
+
265
+ bsCollapseCtrl.$viewChangeListeners.push(function() {
266
+ render();
267
+ });
268
+ render();
269
+
270
+ }
271
+ };
272
+
273
+ }]);