UNPKG

@ngal/ui

Version:

Addons for ui.bootstrap

97 lines (77 loc) 3.02 kB
/* 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); }); } }; }]); })();