
<!--
Copyright 2017-present Open Networking Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<div class="modal-header" ng-show="vm.config.header">
    <h4>{{vm.config.header}}</h4>
</div>
<div class="modal-body" ng-show="vm.config.text">
    {{vm.config.text}}
</div>
<div class="modal-footer">
    <a class="btn btn-default" ng-click="vm.dismiss()">Cancel</a>
    <a class="btn" ng-class="action.class" ng-repeat="action in vm.config.actions" ng-click="vm.close(action.cb())">{{action.label}}</a>
</div>