Forum Moderators: open
(function() {
'use strict';
angular
.module('myApp', [
'ui.bootstrap.modal',
'ngAside'
])
.config(appConfig)
.controller('MyCtrl', MyCtrl);
function appConfig($scope, $aside) {
$urlRouterProvider.otherwise('home');
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'html/index.tpl.html',
controller: 'MyCtrl'
})
}
factory('$aside', function($modal) {
var defaults = this.defaults = {
placement: 'left'
};
var asideFactory = {
// override open method
open: function(config) {
var options = angular.extend({}, defaults, config);
// check placement is set correct
if (['left', 'right', 'bottom', 'top'].indexOf(options.placement) === -1) {
options.placement = defaults.placement;
}
var vertHoriz = ['left', 'right'].indexOf(options.placement) === -1 ? 'vertical' : 'horizontal';
// set aside classes
options.windowClass = 'ng-aside ' + vertHoriz + ' ' + options.placement + (options.windowClass ? ' ' + options.windowClass : '');
delete options.placement
return $modal.open(options);
}
};
// create $aside as extended $modal
var $aside = angular.extend({}, $modal, asideFactory);
return $aside;
});
function MyCtrl($scope, $aside) {
$scope.openAside = function(position) {
$aside.open({
templateUrl: 'html/index.tpl.html',
placement: position,
backdrop: true,
controller: function($scope, $modalInstance) {
$scope.ok = function(e) {
$modalInstance.close();
e.stopPropagation();
};
$scope.cancel = function(e) {
$modalInstance.dismiss();
e.stopPropagation();
};
}
})
}
}
})();