<!doctype html>
<html ng-app="ui.bootstrap.demo">

<head>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-animate.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-sanitize.js"></script>
  <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
  <script src="example.js"></script>
  <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
  <div ng-controller="AccordionDemoCtrl">
    <uib-accordion>
      <div uib-accordion-group class="panel-default" is-open="status.open">
        <uib-accordion-heading>
          <span ng-click="ignoreClick($event);">
            Text
            <input type='text'>
            <button ng-click="setMessage();">
              Click me
            </button>
          </span>
          <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': status.open, 'glyphicon-chevron-right': !status.open}"></i>
        </uib-accordion-heading>
        Some stuff
      </div>
    </uib-accordion>
    {{ message }}
  </div>
</body>

</html>
angular.module('ui.bootstrap.demo', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('AccordionDemoCtrl', function ($scope) {
  
  $scope.ignoreClick = function($event) {
    if ($event) {
      $event.stopPropagation(); 
      $event.preventDefault();
    }
  }
  
  $scope.setMessage = function() {
    $scope.message = "btn callback still works!";
  }
});