unsaved_changes_modal.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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-success" ng-click="ctrl.save()">Save</button>
  20. <button type="button" class="btn btn-danger" ng-click="ctrl.discard()">Discard</button>
  21. <button type="button" class="btn btn-inverse" ng-click="ctrl.dismiss()">Cancel</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. discard() {
  32. this.dismiss();
  33. this.unsavedChangesSrv.tracker.discardChanges();
  34. }
  35. save() {
  36. this.dismiss();
  37. this.unsavedChangesSrv.tracker.saveChanges();
  38. }
  39. }
  40. export function unsavedChangesModalDirective() {
  41. return {
  42. restrict: 'E',
  43. template: template,
  44. controller: UnsavedChangesModalCtrl,
  45. bindToController: true,
  46. controllerAs: 'ctrl',
  47. scope: { dismiss: '&' },
  48. };
  49. }
  50. coreModule.directive('unsavedChangesModal', unsavedChangesModalDirective);