unsaved_changes_modal.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. ///<reference path="../../headers/common.d.ts" />
  2. import coreModule from 'app/core/core_module';
  3. const template = `
  4. <div class="modal-body">
  5. <div class="modal-header">
  6. <h2 class="modal-header-title">
  7. <i class="fa fa-exclamation"></i>
  8. <span class="p-l-1">Unsaved changes</span>
  9. </h2>
  10. <a class="modal-header-close" ng-click="ctrl.dismiss();">
  11. <i class="fa fa-remove"></i>
  12. </a>
  13. </div>
  14. <div class="modal-content text-center">
  15. <div class="confirm-modal-text">
  16. Do you want to save your changes?
  17. </div>
  18. <div class="confirm-modal-buttons">
  19. <button type="button" class="btn btn-inverse" ng-click="ctrl.dismiss()">Cancel</button>
  20. <button type="button" class="btn btn-danger" ng-click="ctrl.discard()">Discard</button>
  21. <button type="button" class="btn btn-success" ng-click="ctrl.save()">Save</button>
  22. </div>
  23. </div>
  24. </div>
  25. `;
  26. export class UnsavedChangesModalCtrl {
  27. clone: any;
  28. dismiss: () => void;
  29. /** @ngInject */
  30. constructor(private unsavedChangesSrv) {
  31. }
  32. discard() {
  33. this.dismiss();
  34. this.unsavedChangesSrv.tracker.discardChanges();
  35. }
  36. save() {
  37. this.dismiss();
  38. this.unsavedChangesSrv.tracker.saveChanges();
  39. }
  40. }
  41. export function unsavedChangesModalDirective() {
  42. return {
  43. restrict: 'E',
  44. template: template,
  45. controller: UnsavedChangesModalCtrl,
  46. bindToController: true,
  47. controllerAs: 'ctrl',
  48. scope: {dismiss: "&"}
  49. };
  50. }
  51. coreModule.directive('unsavedChangesModal', unsavedChangesModalDirective);