1
0
Fork 0
mirror of https://github.com/mmumshad/ansible-playable.git synced 2025-02-13 09:51:53 +00:00
ansible-playable/client/components/modal/modal.service.js
Mumshad Mannambeth c92f737237 Initial Commit
2017-06-07 13:36:45 -04:00

78 lines
2.3 KiB
JavaScript

'use strict';
import angular from 'angular';
export function Modal($rootScope, $uibModal) {
/**
* Opens a modal
* @param {Object} scope - an object to be merged with modal's scope
* @param {String} modalClass - (optional) class(es) to be applied to the modal
* @return {Object} - the instance $uibModal.open() returns
*/
function openModal(scope = {}, modalClass = 'modal-default') {
var modalScope = $rootScope.$new();
angular.extend(modalScope, scope);
return $uibModal.open({
template: require('./modal.html'),
windowClass: modalClass,
scope: modalScope
});
}
// Public API here
return {
/* Confirmation modals */
confirm: {
/**
* Create a function to open a delete confirmation modal (ex. ng-click='myModalFn(name, arg1, arg2...)')
* @param {Function} del - callback, ran when delete is confirmed
* @return {Function} - the function to open the modal (ex. myModalFn)
*/
delete(del = angular.noop) {
/**
* Open a delete confirmation modal
* @param {String} name - name or info to show on modal
* @param {All} - any additional args are passed straight to del callback
*/
return function(...args) {
var slicedArgs = Reflect.apply(Array.prototype.slice, args);
var name = slicedArgs.shift();
var deleteModal;
deleteModal = openModal({
modal: {
dismissable: true,
title: 'Confirm Delete',
html: `<p>Are you sure you want to delete <strong>${name}</strong> ?</p>`,
buttons: [{
classes: 'btn-danger',
text: 'Delete',
click(e) {
deleteModal.close(e);
}
}, {
classes: 'btn-default',
text: 'Cancel',
click(e) {
deleteModal.dismiss(e);
}
}]
}
}, 'modal-danger');
deleteModal.result.then(function(event) {
Reflect.apply(del, event, slicedArgs);
});
};
}
}
};
}
export default angular.module('app2App.Modal', [])
.factory('Modal', Modal)
.name;