
/**
 * Modals
 * --------------------------------------------------
 * Modals are independent windows that slide in from off-screen.
 */

.modal-backdrop,
.modal-backdrop-bg {
  position: fixed;
  top: 0;
  left: 0;
  z-index: $z-index-modal;
  width: 100%;
  height: 100%;
}

.modal-backdrop-bg {
  pointer-events: none;
}

.modal {
  display: block;
  position: absolute;
  top: 0;
  z-index: $z-index-modal;
  overflow: hidden;
  min-height: 100%;
  width: 100%;
  background-color: $modal-bg-color;
}

@media (min-width: $modal-inset-mode-break-point) {
  // inset mode is when the modal doesn't fill the entire
  // display but instead is centered within a large display
  .modal {
    top: $modal-inset-mode-top;
    right: $modal-inset-mode-right;
    bottom: $modal-inset-mode-bottom;
    left: $modal-inset-mode-left;
    min-height: $modal-inset-mode-min-height;
    width: (100% - $modal-inset-mode-left - $modal-inset-mode-right);
  }

  .modal.ng-leave-active {
    bottom: 0;
  }

  // remove ios header padding from inset header
  .platform-ios.platform-cordova .modal-wrapper .modal {
    .bar-header:not(.bar-subheader) {
      height: $bar-height;
      > * {
        margin-top: 0;
      }
    }
    .tabs-top > .tabs,
    .tabs.tabs-top {
      top: $bar-height;
    }
    .has-header,
    .bar-subheader {
      top: $bar-height;
    }
    .has-subheader {
      top: $bar-height + $bar-subheader-height;
    }
    .has-header.has-tabs-top {
      top: $bar-height + $tabs-height;
    }
    .has-header.has-subheader.has-tabs-top {
      top: $bar-height + $bar-subheader-height + $tabs-height;
    }
  }

  .modal-backdrop-bg {
    @include transition(opacity 300ms ease-in-out);
    background-color: $modal-backdrop-bg-active;
    opacity: 0;
  }

  .active .modal-backdrop-bg {
    opacity: 0.5;
  }
}

// disable clicks on all but the modal
.modal-open {
  pointer-events: none;

  .modal,
  .modal-backdrop {
    pointer-events: auto;
  }
  // prevent clicks on modal when loading overlay is active though
  &.loading-active {
    .modal,
    .modal-backdrop {
      pointer-events: none;
    }
  }
}
