summaryrefslogtreecommitdiffstats
path: root/3rdparty/js/angular-1.0.2/angular-bootstrap.js
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/js/angular-1.0.2/angular-bootstrap.js')
-rw-r--r--3rdparty/js/angular-1.0.2/angular-bootstrap.js166
1 files changed, 166 insertions, 0 deletions
diff --git a/3rdparty/js/angular-1.0.2/angular-bootstrap.js b/3rdparty/js/angular-1.0.2/angular-bootstrap.js
new file mode 100644
index 000000000..1918a42e0
--- /dev/null
+++ b/3rdparty/js/angular-1.0.2/angular-bootstrap.js
@@ -0,0 +1,166 @@
+/**
+ * @license AngularJS v1.0.2
+ * (c) 2010-2012 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular, undefined) {
+'use strict';
+
+var directive = {};
+
+directive.dropdownToggle =
+ ['$document', '$location', '$window',
+ function ($document, $location, $window) {
+ var openElement = null, close;
+ return {
+ restrict: 'C',
+ link: function(scope, element, attrs) {
+ scope.$watch(function(){return $location.path();}, function() {
+ close && close();
+ });
+
+ element.parent().bind('click', function(event) {
+ close && close();
+ });
+
+ element.bind('click', function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+
+ var iWasOpen = false;
+
+ if (openElement) {
+ iWasOpen = openElement === element;
+ close();
+ }
+
+ if (!iWasOpen){
+ element.parent().addClass('open');
+ openElement = element;
+
+ close = function (event) {
+ event && event.preventDefault();
+ event && event.stopPropagation();
+ $document.unbind('click', close);
+ element.parent().removeClass('open');
+ close = null;
+ openElement = null;
+ }
+
+ $document.bind('click', close);
+ }
+ });
+ }
+ };
+ }];
+
+
+directive.tabbable = function() {
+ return {
+ restrict: 'C',
+ compile: function(element) {
+ var navTabs = angular.element('<ul class="nav nav-tabs"></ul>'),
+ tabContent = angular.element('<div class="tab-content"></div>');
+
+ tabContent.append(element.contents());
+ element.append(navTabs).append(tabContent);
+ },
+ controller: ['$scope', '$element', function($scope, $element) {
+ var navTabs = $element.contents().eq(0),
+ ngModel = $element.controller('ngModel') || {},
+ tabs = [],
+ selectedTab;
+
+ ngModel.$render = function() {
+ var $viewValue = this.$viewValue;
+
+ if (selectedTab ? (selectedTab.value != $viewValue) : $viewValue) {
+ if(selectedTab) {
+ selectedTab.paneElement.removeClass('active');
+ selectedTab.tabElement.removeClass('active');
+ selectedTab = null;
+ }
+ if($viewValue) {
+ for(var i = 0, ii = tabs.length; i < ii; i++) {
+ if ($viewValue == tabs[i].value) {
+ selectedTab = tabs[i];
+ break;
+ }
+ }
+ if (selectedTab) {
+ selectedTab.paneElement.addClass('active');
+ selectedTab.tabElement.addClass('active');
+ }
+ }
+
+ }
+ };
+
+ this.addPane = function(element, attr) {
+ var li = angular.element('<li><a href></a></li>'),
+ a = li.find('a'),
+ tab = {
+ paneElement: element,
+ paneAttrs: attr,
+ tabElement: li
+ };
+
+ tabs.push(tab);
+
+ attr.$observe('value', update)();
+ attr.$observe('title', function(){ update(); a.text(tab.title); })();
+
+ function update() {
+ tab.title = attr.title;
+ tab.value = attr.value || attr.title;
+ if (!ngModel.$setViewValue && (!ngModel.$viewValue || tab == selectedTab)) {
+ // we are not part of angular
+ ngModel.$viewValue = tab.value;
+ }
+ ngModel.$render();
+ }
+
+ navTabs.append(li);
+ li.bind('click', function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ if (ngModel.$setViewValue) {
+ $scope.$apply(function() {
+ ngModel.$setViewValue(tab.value);
+ ngModel.$render();
+ });
+ } else {
+ // we are not part of angular
+ ngModel.$viewValue = tab.value;
+ ngModel.$render();
+ }
+ });
+
+ return function() {
+ tab.tabElement.remove();
+ for(var i = 0, ii = tabs.length; i < ii; i++ ) {
+ if (tab == tabs[i]) {
+ tabs.splice(i, 1);
+ }
+ }
+ };
+ }
+ }]
+ };
+};
+
+
+directive.tabPane = function() {
+ return {
+ require: '^tabbable',
+ restrict: 'C',
+ link: function(scope, element, attrs, tabsCtrl) {
+ element.bind('$remove', tabsCtrl.addPane(element, attrs));
+ }
+ };
+};
+
+
+angular.module('bootstrap', []).directive(directive);
+
+})(window, window.angular);