mirror of
https://github.com/mmumshad/ansible-playable.git
synced 2025-02-15 04:42:05 +00:00
79 lines
2.3 KiB
JavaScript
79 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;
|