-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
53 lines (47 loc) · 1.53 KB
/
app.js
File metadata and controls
53 lines (47 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
;(function (window) {
angular.module('app', [])
.directive('tab', function () {
return {
restrict: 'E',
transclude: true,
template: '<div role="tabpanel" ng-show="active" ng-transclude></div>',
require: '^tabset',
scope: {
heading: '@'
},
link: function (scope, elem, attr, tabsetCtrl) {
scope.active = false
tabsetCtrl.addTab(scope)
}
}
})
.directive('tabset', function (){
return {
restrict: 'E',
transclude: true,
scope: { },
templateUrl: 'tabset.html',
bindToController: true,
controllerAs: 'tabset',
controller: function () {
var self = this;
self.tabs = [];
self.addTab = function addTab(tab) {
self.tabs.push(tab)
if(self.tabs.length === 1) {
tab.active = true
}
}
/* Deactivates all unselected tabs, then activate selected tab */
self.select = function(selectedTab) {
angular.forEach(self.tabs, function(tab) {
if(tab.active && tab !== selectedTab) {
tab.active = false;
}
})
selectedTab.active = true;
}
}
}
})
})(window);