@ngal/ui
Version:
Addons for ui.bootstrap
97 lines (77 loc) • 3.02 kB
JavaScript
/* eslint-disable quotes */
/* eslint-disable indent */
(function () {
"use strict";
/* config {
buttons: (array of button)
message: (string)
title: (string)
}
button {
cssClass: (string),
label: (string)
}
*/
/*
Example usage:
confirmationModal.open({
title: "Cancel Pending Changes",
message: '<p class="text-danger">You have made changes to the waiting room values. Do you really want to leave the page and lose your changes?</p>',
buttons: [{ cssClass: "btn-warning", label: "Leave"}, { cssClass: "btn-default", label: "Stay" }]
}).then(function(button) {
if (button.label === "Leave") OR (icon.name === "yes-filled")
accept();
});
*/
var TEMPLATE_URL = "/ngal.ui/confirmationModal/confirmationModal.template.html";
var TEMPLATE = '' +
'<div class="allmed-common-ui-confirmation-modal">' +
'<div class="modal-header">' +
'<span ng-bind-html="vm.title"></span>' +
'</div>' +
'<form name="confirmationModalForm" ng-submit="vm.formSubmit(confirmationModal)">' +
'<div class="modal-body">' +
'<p ng-bind-html="vm.message"></p>' +
'</div>' +
'<div class="modal-footer">' +
'<input type="button" class="btn {{ button.cssClass }}" value="{{ button.label }}" ng-click="vm.onTargetClick(button)" ng-repeat="button in vm.buttons">' +
'</div>' +
'</form>' +
'</div>';
var modalController =
["$sanitize", "$uibModalInstance", "config",
function ($sanitize, $uibModalInstance, config) {
var vm = this;
vm.buttons = [];
vm.message = "";
vm.title = "";
vm.onTargetClick = onTargetClick;
init();
function init() {
vm.buttons = config.buttons;
vm.message = $sanitize(config.message);
vm.title = $sanitize(config.title);
}
function onTargetClick(target) {
config.accept(target);
$uibModalInstance.close();
}
}];
angular
.module("ngal.ui")
.factory("ngal.ui.confirmationModal",
["$templateCache", "$q", "ngal.ui.models.modal",
function ($templateCache, $q, Modal) {
if (!$templateCache.get(TEMPLATE_URL))
$templateCache.put(TEMPLATE_URL, TEMPLATE);
var confirmationModal = new Modal(modalController, TEMPLATE_URL);
return {
open: function (confirmationConfig, options) {
return $q(function (accept) {
var config = angular.extend({}, confirmationConfig, { accept: accept });
confirmationModal.open(config, options);
});
}
};
}]);
})();