UnsavedChangesModalCtrl.ts 1.4 KB

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