Skip to content

Instantly share code, notes, and snippets.

@cpitt
Created October 10, 2014 06:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cpitt/a72373de08de55cdf8a0 to your computer and use it in GitHub Desktop.
Save cpitt/a72373de08de55cdf8a0 to your computer and use it in GitHub Desktop.
A Simple Directive for Bootstrap confirmation modals using ui-bootstrap
<div class="modal-header">
<div class="modal-title">
<h3>{{confirmTitle}}</h3>
</div>
</div>
<div class="modal-body">
{{confirmMessage}}
</div>
<div class="modal-footer">
<button class="btn btn-default" ng-click="cancel()"> {{cancelText}} </button>
<button class="btn {{acceptBtnClass}}" ng-click="accept()"> {{acceptText}} </button>
</div>
angular.module('cloudweb.confirmationDirective', ['ui.bootstrap.modal'])
.controller('confirmationInstanceCtrl',
[ '$scope', '$modalInstance',
function($scope, $modalInstance){
$scope.cancel = function(){
$modalInstance.dismiss('cancel');
}
$scope.accept = function(){
$modalInstance.close()
}
}])
.controller('confirmationModalCtrl',
[ '$scope', '$modal',
function($scope, $modal ){
var modalOptions = {
templateUrl: 'components/confirmation-directive/confirmation-directive.html',
controller: 'confirmationInstanceCtrl',
scope: $scope,
size: 'md'
}
$scope.openModal = function(){
var modalInstance = $modal.open(modalOptions);
modalInstance
.result
.then(function(){
$scope.confirmAction()
});
}
}])
.directive("csfConfirmation", [function(){
return {
restrict: "A",
scope: {
confirmAction : '&',
},
controller: 'confirmationModalCtrl',
link: function(scope, elem, attr, ctrl){
scope.confirmTitle = attr.confirmTitle || 'Are you sure?';
scope.confirmMessage = attr.confirmMessage || 'Are you sure?';
scope.acceptText = attr.acceptText || 'Accept';
scope.acceptBtnClass = attr.acceptBtnClass || 'btn-danger';
scope.cancelText = attr.cancelText || 'Cancel';
scope.cancelBtnClass = attr.cancelBtnClass || 'btn-default';
elem.bind('click', function(){
scope.openModal()
})
}
}
}]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment