540 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
			
		
		
	
	
			540 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
// Layouts
 | 
						|
// *******************************************************************************
 | 
						|
 | 
						|
.layout-container {
 | 
						|
  min-height: 100vh;
 | 
						|
}
 | 
						|
 | 
						|
.layout-wrapper,
 | 
						|
.layout-container {
 | 
						|
  width: 100%;
 | 
						|
  display: flex;
 | 
						|
  flex: 1 1 auto;
 | 
						|
  align-items: stretch;
 | 
						|
}
 | 
						|
 | 
						|
.layout-page,
 | 
						|
.content-wrapper,
 | 
						|
.content-wrapper > *,
 | 
						|
.layout-menu {
 | 
						|
  min-height: 1px;
 | 
						|
}
 | 
						|
 | 
						|
.layout-navbar,
 | 
						|
.content-footer {
 | 
						|
  flex: 0 0 auto;
 | 
						|
}
 | 
						|
 | 
						|
.layout-page {
 | 
						|
  display: flex;
 | 
						|
  flex: 1 1 auto;
 | 
						|
  align-items: stretch;
 | 
						|
  padding: 0;
 | 
						|
 | 
						|
  // Without menu
 | 
						|
  .layout-without-menu & {
 | 
						|
    padding-right: 0 !important;
 | 
						|
    padding-left: 0 !important;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
.content-wrapper {
 | 
						|
  display: flex;
 | 
						|
  align-items: stretch;
 | 
						|
  flex: 1 1 auto;
 | 
						|
  flex-direction: column;
 | 
						|
  justify-content: space-between;
 | 
						|
}
 | 
						|
// Content backdrop
 | 
						|
.content-backdrop {
 | 
						|
  // z-index: 1 (layout static)
 | 
						|
  @include overlay-backdrop(1, $modal-backdrop-bg, $modal-backdrop-opacity);
 | 
						|
  // z-index: 10 (layout fixed)
 | 
						|
  .layout-menu-fixed & {
 | 
						|
    z-index: 10;
 | 
						|
  }
 | 
						|
  &.fade {
 | 
						|
    z-index: -1;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Layout Navbar
 | 
						|
// *******************************************************************************
 | 
						|
.layout-navbar {
 | 
						|
  position: relative;
 | 
						|
  padding-top: 0.25rem;
 | 
						|
  padding-bottom: 0.2rem;
 | 
						|
  height: $navbar-height;
 | 
						|
  flex-wrap: nowrap;
 | 
						|
  color: $body-color;
 | 
						|
  z-index: 2;
 | 
						|
 | 
						|
  .navbar {
 | 
						|
    transform: translate3d(0, 0, 0);
 | 
						|
  }
 | 
						|
  .navbar-nav-right {
 | 
						|
    flex-basis: 100%;
 | 
						|
  }
 | 
						|
 | 
						|
  .navbar-search-wrapper {
 | 
						|
    .search-input,
 | 
						|
    .input-group-text {
 | 
						|
      background-color: transparent;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  // Style for detached navbar
 | 
						|
  &.navbar-detached {
 | 
						|
    // Container layout max-width
 | 
						|
    $container-xxl: map-get($container-max-widths, xxl);
 | 
						|
    &.container-xxl {
 | 
						|
      max-width: calc(#{$container-xxl} - calc(#{$container-padding-x} * 2));
 | 
						|
    }
 | 
						|
    // Navbar fixed
 | 
						|
    .layout-navbar-fixed & {
 | 
						|
      width: calc(100% - calc(#{$container-padding-x} * 2) - #{$menu-width});
 | 
						|
      @include media-breakpoint-down(xl) {
 | 
						|
        width: calc(100% - calc(#{$container-padding-x} * 2)) !important;
 | 
						|
      }
 | 
						|
      @include media-breakpoint-down(lg) {
 | 
						|
        width: calc(100% - calc(#{$container-padding-x-sm} * 2)) !important;
 | 
						|
      }
 | 
						|
    }
 | 
						|
    .layout-navbar-fixed.layout-menu-collapsed & {
 | 
						|
      width: calc(100% - calc(#{$container-padding-x} * 2) - #{$menu-collapsed-width});
 | 
						|
    }
 | 
						|
 | 
						|
    // Navbar static
 | 
						|
    width: calc(100% - calc(#{$container-padding-x} * 2));
 | 
						|
    @include media-breakpoint-down(xl) {
 | 
						|
      width: calc(100vw - (100vw - 100%) - calc(#{$container-padding-x} * 2)) !important;
 | 
						|
    }
 | 
						|
    @include media-breakpoint-down(lg) {
 | 
						|
      width: calc(100vw - (100vw - 100%) - calc(#{$container-padding-x-sm} * 2)) !important;
 | 
						|
    }
 | 
						|
    .layout-menu-collapsed &,
 | 
						|
    .layout-without-menu & {
 | 
						|
      width: calc(100% - calc(#{$container-padding-x} * 2));
 | 
						|
    }
 | 
						|
 | 
						|
    margin: 0.75rem auto 0;
 | 
						|
    border-radius: $border-radius;
 | 
						|
    padding: 0 $card-spacer-x;
 | 
						|
  }
 | 
						|
 | 
						|
  .search-input-wrapper {
 | 
						|
    .search-toggler {
 | 
						|
      position: absolute;
 | 
						|
      top: 1.25rem;
 | 
						|
      right: 1rem;
 | 
						|
      z-index: 1;
 | 
						|
    }
 | 
						|
 | 
						|
    .search-input {
 | 
						|
      height: 100%;
 | 
						|
      box-shadow: none;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  &[class*='bg-']:not(.bg-navbar-theme) {
 | 
						|
    .nav-item {
 | 
						|
      .input-group-text,
 | 
						|
      .dropdown-toggle {
 | 
						|
        color: $white;
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  @include media-breakpoint-down($menu-collapsed-layout-breakpoint) {
 | 
						|
    .navbar-nav {
 | 
						|
      .nav-item.dropdown {
 | 
						|
        .dropdown-menu {
 | 
						|
          position: absolute;
 | 
						|
          .last-login {
 | 
						|
            white-space: nowrap;
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
  @include media-breakpoint-down(md) {
 | 
						|
    .navbar-nav {
 | 
						|
      .nav-item.dropdown {
 | 
						|
        position: static;
 | 
						|
        float: left;
 | 
						|
        .badge-notifications {
 | 
						|
          top: auto;
 | 
						|
        }
 | 
						|
        .dropdown-menu {
 | 
						|
          position: absolute;
 | 
						|
          left: 0.9rem;
 | 
						|
          min-width: auto;
 | 
						|
          width: 92%;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Navbar require high z-index as we use z-index for menu slide-out for below large screen
 | 
						|
@include media-breakpoint-down($menu-collapsed-layout-breakpoint) {
 | 
						|
  .layout-navbar {
 | 
						|
    z-index: $zindex-menu-fixed;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Layout Menu
 | 
						|
// *******************************************************************************
 | 
						|
.layout-menu {
 | 
						|
  position: relative;
 | 
						|
  flex: 1 0 auto;
 | 
						|
  a:focus-visible {
 | 
						|
    outline: none;
 | 
						|
  }
 | 
						|
  .menu {
 | 
						|
    transform: translate3d(0, 0, 0);
 | 
						|
  }
 | 
						|
 | 
						|
  .menu-vertical {
 | 
						|
    height: 100%;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Layout Content navbar
 | 
						|
// *******************************************************************************
 | 
						|
 | 
						|
.layout-content-navbar {
 | 
						|
  .layout-page {
 | 
						|
    flex-basis: 100%;
 | 
						|
    flex-direction: column;
 | 
						|
    width: 0;
 | 
						|
    min-width: 0;
 | 
						|
    max-width: 100%;
 | 
						|
  }
 | 
						|
 | 
						|
  .content-wrapper {
 | 
						|
    width: 100%;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Fixed and fixed off-canvas layout (Layout Fixed)
 | 
						|
// *******************************************************************************
 | 
						|
 | 
						|
@include media-breakpoint-up($menu-collapsed-layout-breakpoint) {
 | 
						|
  // Menu
 | 
						|
 | 
						|
  .layout-menu-fixed,
 | 
						|
  .layout-menu-fixed-offcanvas {
 | 
						|
    .layout-menu {
 | 
						|
      position: fixed;
 | 
						|
      top: 0;
 | 
						|
      bottom: 0;
 | 
						|
      left: 0;
 | 
						|
      margin-right: 0 !important;
 | 
						|
      margin-left: 0 !important;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // Container
 | 
						|
 | 
						|
  // Menu expanded
 | 
						|
  .layout-menu-fixed:not(.layout-menu-collapsed),
 | 
						|
  .layout-menu-fixed-offcanvas:not(.layout-menu-collapsed) {
 | 
						|
    .layout-page {
 | 
						|
      padding-left: $menu-width;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Reset paddings (for non fixed entities)
 | 
						|
html:not(.layout-navbar-fixed):not(.layout-menu-fixed):not(.layout-menu-fixed-offcanvas) .layout-page,
 | 
						|
html:not(.layout-navbar-fixed) .layout-content-navbar .layout-page {
 | 
						|
  padding-top: 0 !important;
 | 
						|
}
 | 
						|
html:not(.layout-footer-fixed) .content-wrapper {
 | 
						|
  padding-bottom: 0 !important;
 | 
						|
}
 | 
						|
 | 
						|
@include media-breakpoint-down($menu-collapsed-layout-breakpoint) {
 | 
						|
  .layout-menu-fixed .layout-wrapper.layout-navbar-full .layout-menu,
 | 
						|
  .layout-menu-fixed-offcanvas .layout-wrapper.layout-navbar-full .layout-menu {
 | 
						|
    top: 0 !important;
 | 
						|
  }
 | 
						|
 | 
						|
  html:not(.layout-navbar-fixed) .layout-navbar-full .layout-page {
 | 
						|
    padding-top: 0 !important;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Fixed navbar layout
 | 
						|
// *******************************************************************************
 | 
						|
 | 
						|
.layout-navbar-fixed {
 | 
						|
  .layout-navbar {
 | 
						|
    position: fixed;
 | 
						|
    top: 0;
 | 
						|
    right: 0;
 | 
						|
    left: 0;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
@include media-breakpoint-up($menu-collapsed-layout-breakpoint) {
 | 
						|
  // Fix navbar within Navbar Full layout in fixed mode
 | 
						|
  .layout-menu-fixed .layout-navbar-full .layout-navbar,
 | 
						|
  .layout-menu-fixed-offcanvas .layout-navbar-full .layout-navbar {
 | 
						|
    position: fixed;
 | 
						|
    top: 0;
 | 
						|
    right: 0;
 | 
						|
    left: 0;
 | 
						|
  }
 | 
						|
 | 
						|
  // Fix navbar within Content Navbar layout in fixed mode - Menu expanded
 | 
						|
  .layout-navbar-fixed:not(.layout-menu-collapsed),
 | 
						|
  .layout-menu-fixed.layout-navbar-fixed:not(.layout-menu-collapsed),
 | 
						|
  .layout-menu-fixed-offcanvas.layout-navbar-fixed:not(.layout-menu-collapsed) {
 | 
						|
    .layout-content-navbar:not(.layout-without-menu) .layout-navbar {
 | 
						|
      left: $menu-width;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Fixed footer
 | 
						|
// *******************************************************************************
 | 
						|
 | 
						|
.layout-footer-fixed .content-footer {
 | 
						|
  position: fixed;
 | 
						|
  bottom: 0;
 | 
						|
  left: 0;
 | 
						|
  right: 0;
 | 
						|
}
 | 
						|
 | 
						|
@include media-breakpoint-up($menu-collapsed-layout-breakpoint) {
 | 
						|
  // Fixed footer - Menu expanded
 | 
						|
  .layout-footer-fixed:not(.layout-menu-collapsed) {
 | 
						|
    .layout-wrapper:not(.layout-without-menu) .content-footer {
 | 
						|
      left: $menu-width;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Small screens layout
 | 
						|
// *******************************************************************************
 | 
						|
 | 
						|
@include media-breakpoint-down($menu-collapsed-layout-breakpoint) {
 | 
						|
  .layout-menu {
 | 
						|
    position: fixed !important;
 | 
						|
    top: 0 !important;
 | 
						|
    height: 100% !important;
 | 
						|
    left: 0 !important;
 | 
						|
    margin-right: 0 !important;
 | 
						|
    margin-left: 0 !important;
 | 
						|
    transform: translate3d(-100%, 0, 0);
 | 
						|
    will-change: transform, -webkit-transform;
 | 
						|
 | 
						|
    .layout-menu-expanded & {
 | 
						|
      transform: translate3d(0, 0, 0) !important;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  .layout-menu-expanded body {
 | 
						|
    overflow: hidden;
 | 
						|
  }
 | 
						|
 | 
						|
  .layout-overlay {
 | 
						|
    position: fixed;
 | 
						|
    top: 0;
 | 
						|
    right: 0;
 | 
						|
    height: 100% !important;
 | 
						|
    left: 0;
 | 
						|
    display: none;
 | 
						|
    background: $modal-backdrop-bg;
 | 
						|
    opacity: $modal-backdrop-opacity;
 | 
						|
    cursor: pointer;
 | 
						|
 | 
						|
    .layout-menu-expanded & {
 | 
						|
      display: block;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  .layout-menu-100vh .layout-menu,
 | 
						|
  .layout-menu-100vh .layout-overlay {
 | 
						|
    height: 100vh !important;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Z-Indexes
 | 
						|
// *******************************************************************************
 | 
						|
 | 
						|
// Navbar (fixed)
 | 
						|
.layout-navbar-fixed body:not(.modal-open),
 | 
						|
.layout-menu-fixed body:not(.modal-open),
 | 
						|
.layout-menu-fixed-offcanvas body:not(.modal-open) {
 | 
						|
  .layout-navbar-full .layout-navbar {
 | 
						|
    z-index: $zindex-menu-fixed;
 | 
						|
  }
 | 
						|
 | 
						|
  .layout-content-navbar .layout-navbar {
 | 
						|
    z-index: $zindex-menu-fixed - 5;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Footer (fixed)
 | 
						|
.layout-footer-fixed .content-footer {
 | 
						|
  z-index: $zindex-fixed;
 | 
						|
}
 | 
						|
 | 
						|
@include media-breakpoint-down($menu-collapsed-layout-breakpoint) {
 | 
						|
  .layout-menu {
 | 
						|
    z-index: $zindex-layout-mobile;
 | 
						|
  }
 | 
						|
 | 
						|
  .layout-overlay {
 | 
						|
    z-index: $zindex-layout-mobile - 1;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
@include media-breakpoint-up($menu-collapsed-layout-breakpoint) {
 | 
						|
  // Default expanded
 | 
						|
 | 
						|
  // Navbar full layout
 | 
						|
  .layout-navbar-full {
 | 
						|
    .layout-navbar {
 | 
						|
      z-index: 10;
 | 
						|
    }
 | 
						|
 | 
						|
    .layout-menu {
 | 
						|
      z-index: 9;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  // Content Navbar layout
 | 
						|
  .layout-content-navbar {
 | 
						|
    .layout-navbar {
 | 
						|
      z-index: 9;
 | 
						|
    }
 | 
						|
 | 
						|
    .layout-menu {
 | 
						|
      z-index: 10;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // Fixed
 | 
						|
  // Navbar full layout
 | 
						|
  .layout-menu-fixed body:not(.modal-open) .layout-navbar-full .layout-menu,
 | 
						|
  .layout-menu-fixed-offcanvas body:not(.modal-open) .layout-navbar-full .layout-menu {
 | 
						|
    z-index: $zindex-menu-fixed - 5;
 | 
						|
  }
 | 
						|
  // Content Navbar layout
 | 
						|
  .layout-navbar-fixed body:not(.modal-open) .layout-content-navbar .layout-menu,
 | 
						|
  .layout-menu-fixed body:not(.modal-open) .layout-content-navbar .layout-menu,
 | 
						|
  .layout-menu-fixed-offcanvas body:not(.modal-open) .layout-content-navbar .layout-menu {
 | 
						|
    z-index: $zindex-menu-fixed;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// * Transitions and animations
 | 
						|
// *******************************************************************************
 | 
						|
 | 
						|
// Disable navbar link hover transition
 | 
						|
.layout-menu-link-no-transition {
 | 
						|
  .layout-menu .menu-link,
 | 
						|
  .layout-menu-horizontal .menu-link {
 | 
						|
    transition: none !important;
 | 
						|
    animation: none !important;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Disable navbar link hover transition
 | 
						|
.layout-no-transition .layout-menu,
 | 
						|
.layout-no-transition .layout-menu-horizontal {
 | 
						|
  &,
 | 
						|
  & .menu,
 | 
						|
  & .menu-item {
 | 
						|
    transition: none !important;
 | 
						|
    animation: none !important;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
@include media-breakpoint-down($menu-collapsed-layout-breakpoint) {
 | 
						|
  .layout-transitioning {
 | 
						|
    .layout-overlay {
 | 
						|
      animation: menuAnimation $menu-animation-duration;
 | 
						|
    }
 | 
						|
 | 
						|
    .layout-menu {
 | 
						|
      transition-duration: $menu-animation-duration;
 | 
						|
      transition-property: transform, -webkit-transform;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
@include media-breakpoint-up($menu-collapsed-layout-breakpoint) {
 | 
						|
  .layout-menu-collapsed:not(.layout-transitioning):not(.layout-menu-offcanvas):not(.layout-menu-fixed):not(
 | 
						|
      .layout-menu-fixed-offcanvas
 | 
						|
    )
 | 
						|
    .layout-menu {
 | 
						|
    transition-duration: $menu-animation-duration;
 | 
						|
    transition-property: margin-left, margin-right, width;
 | 
						|
  }
 | 
						|
 | 
						|
  .layout-transitioning {
 | 
						|
    &.layout-menu-offcanvas .layout-menu {
 | 
						|
      transition-duration: $menu-animation-duration;
 | 
						|
      transition-property: margin-left, margin-right, transform, -webkit-transform;
 | 
						|
    }
 | 
						|
 | 
						|
    &.layout-menu-fixed,
 | 
						|
    &.layout-menu-fixed-offcanvas {
 | 
						|
      .layout-page {
 | 
						|
        transition-duration: $menu-animation-duration;
 | 
						|
        transition-property: padding-left, padding-right;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    &.layout-menu-fixed {
 | 
						|
      .layout-menu {
 | 
						|
        transition: width $menu-animation-duration;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    &.layout-menu-fixed-offcanvas {
 | 
						|
      .layout-menu {
 | 
						|
        transition-duration: $menu-animation-duration;
 | 
						|
        transition-property: transform, -webkit-transform;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    &.layout-navbar-fixed .layout-content-navbar .layout-navbar,
 | 
						|
    &.layout-footer-fixed .content-footer {
 | 
						|
      transition-duration: $menu-animation-duration;
 | 
						|
      transition-property: left, right;
 | 
						|
    }
 | 
						|
 | 
						|
    &:not(.layout-menu-offcanvas):not(.layout-menu-fixed):not(.layout-menu-fixed-offcanvas) .layout-menu {
 | 
						|
      transition-duration: $menu-animation-duration;
 | 
						|
      transition-property: margin-left, margin-right, width;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Disable transitions/animations in IE 10-11
 | 
						|
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
 | 
						|
  .menu,
 | 
						|
  .layout-menu,
 | 
						|
  .layout-page,
 | 
						|
  .layout-navbar,
 | 
						|
  .content-footer {
 | 
						|
    transition: none !important;
 | 
						|
    transition-duration: 0s !important;
 | 
						|
  }
 | 
						|
  .layout-overlay {
 | 
						|
    animation: none !important;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
@include keyframes(menuAnimation) {
 | 
						|
  0% {
 | 
						|
    opacity: 0;
 | 
						|
  }
 | 
						|
  100% {
 | 
						|
    opacity: $modal-backdrop-opacity;
 | 
						|
  }
 | 
						|
}
 |