499 lines
11 KiB
SCSS
499 lines
11 KiB
SCSS
/* ------------------------------------------------------------------------------
|
|
*
|
|
* # Nav components
|
|
*
|
|
* Overrides for nav components
|
|
*
|
|
* ---------------------------------------------------------------------------- */
|
|
|
|
|
|
// Base styles
|
|
// -------------------------
|
|
|
|
// Links
|
|
.nav-link {
|
|
position: relative;
|
|
@include transition(all ease-in-out $component-transition-timer);
|
|
|
|
// Disabled state
|
|
&.disabled {
|
|
cursor: $cursor-disabled;
|
|
}
|
|
}
|
|
|
|
|
|
// Tabs
|
|
// -------------------------
|
|
|
|
// Base
|
|
.nav-tabs {
|
|
margin-bottom: $spacer;
|
|
|
|
// Link
|
|
.nav-link {
|
|
border-top-left-radius: 0;
|
|
border-top-right-radius: 0;
|
|
color: $nav-tabs-link-color;
|
|
|
|
// Hover state
|
|
@include hover-focus {
|
|
color: $nav-tabs-link-hover-color;
|
|
}
|
|
|
|
// Disabled state
|
|
&.disabled {
|
|
color: $nav-link-disabled-color;
|
|
}
|
|
}
|
|
|
|
// When dropdown is opened
|
|
.nav-item.show .nav-link:not(.active) {
|
|
border-color: transparent;
|
|
background-color: transparent;
|
|
}
|
|
|
|
// Apply border color for border helper
|
|
&.border-top-1 {
|
|
border-top-color: $nav-tabs-border-color;
|
|
}
|
|
}
|
|
|
|
// Responsive tabs - add this class to parent container
|
|
// to make tabs nav inline, add scrollbar and prevent wrapping
|
|
.nav-tabs-responsive {
|
|
overflow-x: auto;
|
|
box-shadow: 0 (-$nav-tabs-border-width) 0 $nav-tabs-border-color inset;
|
|
}
|
|
|
|
|
|
//
|
|
// Alternative styles
|
|
//
|
|
|
|
// Commmon
|
|
.nav-tabs-highlight,
|
|
.nav-tabs-top,
|
|
.nav-tabs-bottom {
|
|
.nav-link {
|
|
position: relative;
|
|
|
|
// Highlight
|
|
&:before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
@include transition(background-color ease-in-out $component-transition-timer);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Top highlight
|
|
.nav-tabs-highlight {
|
|
|
|
// Link
|
|
.nav-link {
|
|
border-top-color: transparent;
|
|
@include border-top-radius(0);
|
|
|
|
// Top highlight line
|
|
&:before {
|
|
height: $nav-tabs-highlight-link-border-width;
|
|
top: -($nav-tabs-border-width);
|
|
left: -($nav-tabs-border-width);
|
|
right: -($nav-tabs-border-width);
|
|
}
|
|
}
|
|
|
|
// Active state
|
|
.nav-link.active {
|
|
&:before {
|
|
background-color: $nav-tabs-highlight-link-border-color;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Tabs with top border
|
|
.nav-tabs-top {
|
|
|
|
// Item
|
|
.nav-item {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
// Link
|
|
.nav-link {
|
|
border-width: 0;
|
|
@include border-top-radius(0);
|
|
|
|
// Hover state
|
|
@include hover-focus {
|
|
&:before {
|
|
background-color: $nav-tabs-border-color;
|
|
}
|
|
}
|
|
|
|
// Bottom highlight line
|
|
&:before {
|
|
height: $nav-tabs-top-link-border-width;
|
|
}
|
|
|
|
// Remove highlight in disabled items
|
|
&.disabled {
|
|
&:before {
|
|
content: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
// When dropdown is opened
|
|
.nav-item.show .nav-link:not(.active) {
|
|
&:before {
|
|
background-color: $nav-tabs-border-color;
|
|
}
|
|
}
|
|
|
|
// Active state
|
|
.nav-link.active {
|
|
&:before {
|
|
background-color: $nav-tabs-top-link-border-color;
|
|
}
|
|
}
|
|
.nav-link.active,
|
|
.nav-item.show .nav-link {
|
|
background-color: transparent;
|
|
}
|
|
|
|
// Make sure dropdown comes after bottom border
|
|
.dropdown-menu {
|
|
margin-top: 0;
|
|
}
|
|
|
|
// Border helper adjustment
|
|
&.border-top-1 {
|
|
.nav-item {
|
|
margin-top: -($nav-tabs-border-width);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Tabs with bottom border
|
|
.nav-tabs-bottom {
|
|
|
|
// Item
|
|
.nav-item {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
// Link
|
|
.nav-link {
|
|
border-width: 0;
|
|
|
|
// Bottom highlight line
|
|
&:before {
|
|
height: $nav-tabs-bottom-link-border-width;
|
|
top: auto;
|
|
bottom: -($nav-tabs-border-width);
|
|
}
|
|
}
|
|
|
|
// Active state
|
|
.nav-link.active {
|
|
&:before {
|
|
background-color: $nav-tabs-bottom-link-border-color;
|
|
}
|
|
}
|
|
.nav-link.active,
|
|
.nav-item.show .nav-link {
|
|
background-color: transparent;
|
|
}
|
|
|
|
// Make sure dropdown comes after bottom border
|
|
.dropdown-menu {
|
|
margin-top: 0;
|
|
}
|
|
}
|
|
|
|
// Tabs with darker background color
|
|
.nav-tabs-solid {
|
|
background-color: $nav-tabs-solid-bg;
|
|
border: $nav-tabs-border-width solid $nav-tabs-border-color;
|
|
|
|
// Item
|
|
.nav-item {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
// Link
|
|
.nav-link {
|
|
border-width: 0;
|
|
}
|
|
|
|
// When dropdown is opened
|
|
.nav-item.show .nav-link {
|
|
background-color: transparent;
|
|
}
|
|
|
|
// Active state
|
|
.nav-link.active,
|
|
.nav-item.show .nav-link.active {
|
|
color: $nav-tabs-solid-active-color;
|
|
background-color: $nav-tabs-solid-active-bg;
|
|
}
|
|
|
|
// Custom background color
|
|
&[class*=bg-]:not(.bg-light):not(.bg-white):not(.bg-transparent) {
|
|
.nav-link {
|
|
color: rgba($white, 0.9);
|
|
|
|
@include hover-focus {
|
|
color: $white;
|
|
}
|
|
|
|
&.disabled {
|
|
color: rgba($white, 0.6);
|
|
}
|
|
}
|
|
|
|
.nav-item.show .nav-link {
|
|
color: $white;
|
|
}
|
|
|
|
.nav-link.active,
|
|
.nav-item.show .nav-link.active {
|
|
color: $white;
|
|
background-color: rgba($black, 0.1);
|
|
}
|
|
|
|
+ .tab-content[class*=bg-] {
|
|
border-top-color: rgba($white, 0.5);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Vertical tabs
|
|
.nav-tabs-vertical {
|
|
|
|
// Link
|
|
.nav-link {
|
|
justify-content: flex-start;
|
|
|
|
// Override border colors
|
|
&,
|
|
&:hover,
|
|
&:focus,
|
|
&.disabled {
|
|
border-color: transparent $nav-tabs-border-color transparent transparent;
|
|
}
|
|
|
|
// Highlight
|
|
&:before {
|
|
content: '';
|
|
position: absolute;
|
|
top: -$nav-tabs-border-width;
|
|
bottom: -$nav-tabs-border-width;
|
|
left: -$nav-tabs-border-width;
|
|
width: $nav-tabs-highlight-link-border-width;
|
|
@include transition(background-color ease-in-out $component-transition-timer);
|
|
}
|
|
}
|
|
|
|
// When dropdown is opened
|
|
.nav-item.show .nav-link:not(.active) {
|
|
border-right-color: $nav-tabs-border-color;
|
|
border-bottom-color: transparent;
|
|
}
|
|
|
|
// Right alignment
|
|
&-right {
|
|
.nav-link {
|
|
&,
|
|
&:hover,
|
|
&:focus,
|
|
&.disabled {
|
|
border-color: transparent transparent transparent $nav-tabs-border-color;
|
|
}
|
|
|
|
// Reverse highlight line alignment
|
|
&:before {
|
|
left: auto;
|
|
right: -$nav-tabs-border-width;
|
|
}
|
|
}
|
|
|
|
// Opened dropdown - toggle link
|
|
.nav-item.show .nav-link:not(.active) {
|
|
border-right-color: transparent;
|
|
border-left-color: $nav-tabs-border-color;
|
|
}
|
|
}
|
|
|
|
// Active state
|
|
.nav-link.active {
|
|
&:before {
|
|
background-color: $nav-tabs-highlight-link-border-color;
|
|
}
|
|
}
|
|
.nav-link.active,
|
|
.nav-item.show .nav-link {
|
|
background-color: transparent;
|
|
border-color: $nav-tabs-border-color transparent;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Pills
|
|
// -------------------------
|
|
|
|
// Base
|
|
.nav-pills {
|
|
margin-bottom: $spacer;
|
|
|
|
// Link
|
|
.nav-link {
|
|
color: $nav-pills-link-color;
|
|
|
|
// Hover state
|
|
&:not(.active) {
|
|
@include hover-focus {
|
|
color: $nav-pills-link-hover-color;
|
|
}
|
|
}
|
|
|
|
// Active state
|
|
// - change badge color according to active link bg
|
|
&.active {
|
|
@if (lightness($nav-pills-link-active-bg) < 75) {
|
|
.badge:not(.bg-transparent):not(.bg-light):not(.bg-white) {
|
|
background-color: $white;
|
|
color: $nav-pills-link-hover-color;
|
|
@include transition(all ease-in-out $component-transition-timer);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Disabled state
|
|
&.disabled {
|
|
@include plain-hover-focus {
|
|
color: $nav-link-disabled-color;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Link with opened dropdown
|
|
.nav-item.show .nav-link:not(.active) {
|
|
color: $nav-pills-link-hover-color;
|
|
background-color: transparent;
|
|
}
|
|
|
|
// Stick text to the left in stacked pills
|
|
&.flex-column {
|
|
.nav-link {
|
|
justify-content: flex-start;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//
|
|
// Alternative styles
|
|
//
|
|
|
|
// Bordered pills
|
|
.nav-pills-bordered {
|
|
|
|
// Item
|
|
.nav-item + .nav-item {
|
|
margin-left: ($spacer / 2);
|
|
}
|
|
|
|
// Link
|
|
.nav-link {
|
|
border: $nav-pills-bordered-border-width solid $nav-pills-bordered-border-color;
|
|
}
|
|
|
|
// Hover state
|
|
.nav-link:not(.active):hover,
|
|
.nav-link:not(.active):focus,
|
|
.nav-item.show .nav-link:not(.active) {
|
|
background-color: $nav-pills-bordered-link-hover-color;
|
|
}
|
|
|
|
// Active state
|
|
.nav-link.active {
|
|
border-color: $nav-pills-link-active-bg;
|
|
}
|
|
|
|
// Disabled state
|
|
.nav-link.disabled {
|
|
@include plain-hover-focus {
|
|
background-color: $nav-pills-bordered-disabled-bg;
|
|
}
|
|
}
|
|
|
|
// Stacked pills layout
|
|
&.flex-column {
|
|
.nav-item + .nav-item {
|
|
margin-left: 0;
|
|
margin-top: ($spacer / 2);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Pills toolbar
|
|
.nav-pills-toolbar {
|
|
|
|
// Item
|
|
.nav-item + .nav-item {
|
|
margin-left: -($nav-pills-bordered-border-width);
|
|
}
|
|
|
|
// Link
|
|
.nav-link {
|
|
border-radius: 0;
|
|
|
|
// Active state
|
|
&.active {
|
|
z-index: 3;
|
|
}
|
|
}
|
|
|
|
// Add rounded corners
|
|
.nav-item {
|
|
&:first-child {
|
|
.nav-link {
|
|
@include border-left-radius($border-radius);
|
|
}
|
|
}
|
|
&:last-child {
|
|
.nav-link {
|
|
@include border-right-radius($border-radius);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stacked pills layout
|
|
&.flex-column {
|
|
.nav-item {
|
|
&:first-child {
|
|
.nav-link {
|
|
@include border-left-radius(0);
|
|
@include border-top-radius($border-radius);
|
|
}
|
|
}
|
|
&:last-child {
|
|
.nav-link {
|
|
@include border-right-radius(0);
|
|
@include border-bottom-radius($border-radius);
|
|
}
|
|
}
|
|
+ .nav-item {
|
|
margin-left: 0;
|
|
margin-top: -($nav-pills-bordered-border-width);
|
|
}
|
|
}
|
|
}
|
|
}
|