|
|
@@ -98,7 +98,11 @@
|
|
|
margin-bottom: $spacer;
|
|
|
}
|
|
|
|
|
|
-// Use proper contrasting color for badge & progress-bar foreground color.
|
|
|
+*[data-href] {
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+// Use proper contrasting color foreground color for special components.
|
|
|
@each $color, $value in $theme-colors {
|
|
|
.badge,
|
|
|
.toast,
|
|
|
@@ -107,6 +111,16 @@
|
|
|
color: color-contrast($value);
|
|
|
}
|
|
|
}
|
|
|
+ // Use proper foreground color in the alert body. Note: this is applied to a, p, & small because
|
|
|
+ // we *don't* want to override the h1-h6 colors for alerts, since those are set to a color
|
|
|
+ // similar to the alert color.
|
|
|
+ .alert.alert-#{$color} {
|
|
|
+ a,
|
|
|
+ p,
|
|
|
+ small {
|
|
|
+ color: color-contrast($value);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Ensure progress bars (utilization graph) in tables aren't too narrow to display the percentage.
|
|
|
@@ -114,6 +128,62 @@ table td > .progress {
|
|
|
min-width: 6rem;
|
|
|
}
|
|
|
|
|
|
+.card > .table.table-flush {
|
|
|
+ margin-bottom: 0;
|
|
|
+ overflow: hidden;
|
|
|
+ border-bottom-right-radius: $card-border-radius;
|
|
|
+ border-bottom-left-radius: $card-border-radius;
|
|
|
+ thead th[scope='col'] {
|
|
|
+ background-color: $table-flush-header-bg;
|
|
|
+ vertical-align: middle;
|
|
|
+ text-transform: uppercase;
|
|
|
+ padding-top: map.get($spacers, 3);
|
|
|
+ padding-bottom: map.get($spacers, 3);
|
|
|
+ border-bottom-color: $card-border-color;
|
|
|
+ border-top: 1px solid $card-border-color;
|
|
|
+ }
|
|
|
+ th,
|
|
|
+ td {
|
|
|
+ border-left: 0;
|
|
|
+ border-right: 0;
|
|
|
+ padding-left: map.get($spacers, 4) !important;
|
|
|
+ padding-right: map.get($spacers, 4) !important;
|
|
|
+ }
|
|
|
+ tr[class] {
|
|
|
+ border-color: $card-border-color !important;
|
|
|
+ &:last-of-type {
|
|
|
+ border-bottom-color: transparent !important;
|
|
|
+ border-bottom-right-radius: $card-border-radius;
|
|
|
+ border-bottom-left-radius: $card-border-radius;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Primarily used for the new release notification, but could be used for other alerts as needed.
|
|
|
+// Wrap any alerts in .header-alert-container to ensure the layout is consistent.
|
|
|
+.header-alert-container {
|
|
|
+ // Center-align the alert(s).
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ // Apply the same spacing that's applied to the #content div's first child (.px-3).
|
|
|
+ padding: 0 $spacer;
|
|
|
+
|
|
|
+ // By default, alerts inside .header-alert-container should take up the full width.
|
|
|
+ .alert {
|
|
|
+ width: 100%;
|
|
|
+
|
|
|
+ // Adjust the max-width for larger screens so there's not a big ugly blue blob taking up the
|
|
|
+ // entire screen.
|
|
|
+ @include media-breakpoint-up(md) {
|
|
|
+ max-width: 75%;
|
|
|
+ }
|
|
|
+ @include media-breakpoint-up(lg) {
|
|
|
+ max-width: 50%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
span.profile-button .dropdown-menu {
|
|
|
transition: opacity 0.2s ease-in-out;
|
|
|
display: block !important;
|
|
|
@@ -441,6 +511,12 @@ div.content-container {
|
|
|
|
|
|
div.accordion-item {
|
|
|
border: unset;
|
|
|
+ padding: 0 $spacer / 2;
|
|
|
+
|
|
|
+ // When an sidenav section is open, apply a shadow to provide a visual border.
|
|
|
+ &.is-open {
|
|
|
+ box-shadow: inset 0px -25px 20px -25px rgba($black, 0.25);
|
|
|
+ }
|
|
|
|
|
|
& > a.accordion-button {
|
|
|
&:not(.collapsed) {
|
|
|
@@ -483,13 +559,13 @@ div.content-container {
|
|
|
}
|
|
|
}
|
|
|
div.position-sticky {
|
|
|
- height: calc(100vh - 8rem);
|
|
|
+ height: calc(100vh - #{$sidebar-bottom-height});
|
|
|
}
|
|
|
div.sidebar-bottom {
|
|
|
padding-left: 0.5rem;
|
|
|
padding-right: 0.5rem;
|
|
|
position: sticky;
|
|
|
- height: 8rem;
|
|
|
+ height: $sidebar-bottom-height;
|
|
|
background-color: var(--nbx-sidebar-bg);
|
|
|
|
|
|
@include media-breakpoint-down(md) {
|
|
|
@@ -699,10 +775,38 @@ label.required {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// Applied to containing element around table bulk-action buttons (bulk-edit, bulk-disconnect
|
|
|
+// bulk-delete, etc). Each usage of .bulk-buttons needs to have groups of buttons wrapped with
|
|
|
+// .bulk-button-group so that proper spacing is applied (even if there is only one group).
|
|
|
div.bulk-buttons {
|
|
|
display: flex;
|
|
|
- & > * {
|
|
|
- margin: $spacer / 4;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin: $spacer / 2 0;
|
|
|
+ // Each group of buttons needs to be contained separately for alignment purposes. This way, you
|
|
|
+ // can put some buttons in a group that aligns left, and other buttons in a group that aligns
|
|
|
+ // right.
|
|
|
+ & > div.bulk-button-group {
|
|
|
+ display: flex;
|
|
|
+ &:first-of-type:not(:last-of-type) {
|
|
|
+ // If there are multiple bulk button groups and this is the first, the first button in the
|
|
|
+ // group should *not* have left spacing applied, so the button group aligns with the rest
|
|
|
+ // of the page elements.
|
|
|
+ & > *:first-child {
|
|
|
+ margin-left: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ &:last-of-type:not(:first-of-type) {
|
|
|
+ // If there are multiple bulk button groups and this is the last, the last button in the
|
|
|
+ // group should *not* have right spacing applied, so the button group aligns with the rest
|
|
|
+ // of the page elements.
|
|
|
+ & > *:last-child {
|
|
|
+ margin-right: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // However, the rest of the buttons should have spacing applied in all directions.
|
|
|
+ & > * {
|
|
|
+ margin: $spacer / 4;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|