mirror of
https://github.com/mmumshad/ansible-playable.git
synced 2025-02-13 09:51:53 +00:00
78 lines
2.3 KiB
JavaScript
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;
|