<!doctype html>
<html ng-app="ui.bootstrap.demo">
<head>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/css/smoothness/jquery-ui-1.10.0.custom.min.css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/jquery-ui.js"></script>
<link href="style.css" rel="stylesheet">
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div ng-controller="MainCtrl">
<label class="checkbox">
<input type="checkbox" ng-model="oneAtATime">Open only one at a time
</label>
<div ng-controller="PartsCtrl">
<h2>Nested Accordion Test</h2>
<accordion close-others="$parent.oneAtATime">
<accordion-group ng-repeat="part in parts">
<accordion-heading>{{part.title}}</accordion-heading>
<a class="btn btn-default" ng-click="movePart(part, -1)">Move Up</a>
<a class="btn btn-default" ng-click="movePart(part, 1)">Move Down</a>
{{part.content}}
<accordion ng-if="part.subParts" close-others="$parent.oneAtATime">
<accordion-group ng-repeat="subPart in part.subParts">
<accordion-heading>{{subPart.title}}</accordion-heading>
<a class="btn btn-default" ng-click="moveSubPart(part, subPart, -1)">Move Up</a>
<a class="btn btn-default" ng-click="moveSubPart(part, subPart, 1)">Move Down</a>
{{subPart.content}}
</accordion-group>
</accordion>
</accordion-group>
</accordion>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.11.2/ui-bootstrap-tpls.js"></script>
<script src="example.js"></script>
</div>
</div>
</body>
</html>
angular.module('ui.bootstrap.demo', ['ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('MainCtrl', function($scope) {
$scope.oneAtATime = true;
});
angular.module('ui.bootstrap.demo').controller('PartsCtrl', function($scope) {
$scope.parts = [{
title: 'Part - 1',
content: 'Body - 1',
subParts: []
}, {
title: 'Part - 2',
content: 'Body - 2',
subParts: []
}, {
title: 'Part - 3',
content: 'Body - 3',
subParts: []
}, {
title: 'Part - 4 with SubParts',
content: 'Body - 4',
subParts: [{
title: 'SubPart - 4.1',
content: 'Body - 4.1'
}, {
title: 'SubPart - 4.2',
content: 'Body - 4.2'
}, {
title: 'SubPart - 4.3',
content: 'Body - 4.3'
}, {
title: 'SubPart - 4.4',
content: 'Body - 4.4'
}]
}];
function move (arr, item, by){
var oldPos = arr.indexOf(item);
var newPos = oldPos + by;
if (newPos < 0){
newPos = 0;
}
if (newPos > arr.length){
newPos = arr.length;
}
arr.splice(oldPos, 1); // remove item from oldPos
arr.splice(newPos, 0, item); // add item at newPos
}
$scope.movePart = function(part, by){
move($scope.parts, part, by);
}
$scope.moveSubPart = function(part, subPart, by){
move(part.subParts, subPart, by);
}
});