320 lines
7.4 KiB
SCSS
Executable File
320 lines
7.4 KiB
SCSS
Executable File
// ----------------------------------------------
|
|
// RTL Spacing Style
|
|
// ----------------------------------------------
|
|
|
|
// button groups
|
|
.btn-group {
|
|
// Prevent double borders when buttons are next to each other
|
|
> .btn:not(:first-child),
|
|
> .btn-group:not(:first-child) {
|
|
margin-right: -$btn-border-width;
|
|
}
|
|
|
|
// Reset rounded corners
|
|
> .btn:not(:last-child):not(.dropdown-toggle),
|
|
> .btn-group:not(:last-child) > .btn {
|
|
@include border-start-radius(0);
|
|
@include border-end-radius(5px);
|
|
}
|
|
|
|
// The left radius should be 0 if the button is:
|
|
// - the "third or more" child
|
|
// - the second child and the previous element isn't `.btn-check` (making it the first child visually)
|
|
// - part of a btn-group which isn't the first child
|
|
> .btn:nth-child(n + 3),
|
|
> :not(.btn-check) + .btn,
|
|
> .btn-group:not(:first-child) > .btn {
|
|
@include border-end-radius(0);
|
|
@include border-start-radius(5px);
|
|
}
|
|
}
|
|
|
|
// stylelint-disable declaration-no-important
|
|
|
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
|
@include media-breakpoint-up($breakpoint) {
|
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
|
|
|
.float#{$infix}-start {
|
|
float: right !important;
|
|
}
|
|
|
|
.float#{$infix}-end {
|
|
float: left !important;
|
|
}
|
|
|
|
.float#{$infix}-none {
|
|
float: none !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
// scss-docs-start responsive-breakpoints
|
|
// We deliberately hardcode the `bs-` prefix because we check
|
|
// this custom property in JS to determine Popper's positioning
|
|
|
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
|
@include media-breakpoint-up($breakpoint) {
|
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
|
|
|
.dropdown-menu#{$infix}-start {
|
|
--bs-position: start;
|
|
right: 0 #{"/* rtl:ignore */"};
|
|
left: auto #{"/* rtl:ignore */"};
|
|
}
|
|
|
|
.dropdown-menu#{$infix}-end {
|
|
--bs-position: end;
|
|
right: auto #{"/* rtl:ignore */"};
|
|
left: 0 #{"/* rtl:ignore */"};
|
|
}
|
|
}
|
|
}
|
|
|
|
// Margin and Padding
|
|
|
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
|
@include media-breakpoint-up($breakpoint) {
|
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
|
|
|
@each $prop, $abbrev in (margin: m, padding: p) {
|
|
@each $size, $length in $spacers {
|
|
.#{$abbrev}#{$infix}-#{$size} {
|
|
#{$prop}: $length !important;
|
|
}
|
|
|
|
.#{$abbrev}t#{$infix}-#{$size},
|
|
.#{$abbrev}y#{$infix}-#{$size} {
|
|
#{$prop}-top: $length !important;
|
|
}
|
|
|
|
.#{$abbrev}e#{$infix}-#{$size} {
|
|
#{$prop}-right: unset !important;
|
|
#{$prop}-left: $length !important;
|
|
}
|
|
|
|
.#{$abbrev}b#{$infix}-#{$size},
|
|
.#{$abbrev}y#{$infix}-#{$size} {
|
|
#{$prop}-bottom: $length !important;
|
|
}
|
|
|
|
.#{$abbrev}s#{$infix}-#{$size} {
|
|
#{$prop}-left: unset !important;
|
|
#{$prop}-right: $length !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)
|
|
@each $size, $length in $spacers {
|
|
@if $size !=0 {
|
|
.m#{$infix}-n#{$size} {
|
|
margin: -$length !important;
|
|
}
|
|
|
|
.mt#{$infix}-n#{$size},
|
|
.my#{$infix}-n#{$size} {
|
|
margin-top: -$length !important;
|
|
}
|
|
|
|
.me#{$infix}-n#{$size},
|
|
.mx#{$infix}-n#{$size} {
|
|
margin-right: unset !important;
|
|
margin-left: -$length !important;
|
|
}
|
|
|
|
.mb#{$infix}-n#{$size},
|
|
.my#{$infix}-n#{$size} {
|
|
margin-bottom: -$length !important;
|
|
}
|
|
|
|
.ms#{$infix}-n#{$size},
|
|
.mx#{$infix}-n#{$size} {
|
|
margin-left: unset !important;
|
|
margin-right: -$length !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Some special margin utils
|
|
.m#{$infix}-auto {
|
|
margin: auto !important;
|
|
}
|
|
|
|
.mt#{$infix}-auto,
|
|
.my#{$infix}-auto {
|
|
margin-top: auto !important;
|
|
}
|
|
|
|
.me#{$infix}-auto,
|
|
.mx#{$infix}-auto {
|
|
margin-right: unset !important;
|
|
margin-left: auto !important;
|
|
}
|
|
|
|
.mb#{$infix}-auto,
|
|
.my#{$infix}-auto {
|
|
margin-bottom: auto !important;
|
|
}
|
|
|
|
.ms#{$infix}-auto,
|
|
.mx#{$infix}-auto {
|
|
margin-left: unset !important;
|
|
margin-right: auto !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Responsive alignment
|
|
|
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
|
@include media-breakpoint-up($breakpoint) {
|
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
|
|
|
.text#{$infix}-start {
|
|
text-align: right !important;
|
|
}
|
|
|
|
.text#{$infix}-end {
|
|
text-align: left !important;
|
|
}
|
|
|
|
.text#{$infix}-center {
|
|
text-align: center !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// Border
|
|
//
|
|
.border-start.border-2.border-info {
|
|
border-right: 2px solid $info !important;
|
|
border-left: 0 !important;
|
|
}
|
|
|
|
.border-start.border-2.border-warning {
|
|
border-right: 2px solid $warning !important;
|
|
border-left: 0 !important;
|
|
}
|
|
|
|
.border-start.border-2.border-danger {
|
|
border-right: 2px solid $danger !important;
|
|
border-left: 0 !important;
|
|
}
|
|
|
|
.border-start.border-2.border-primary {
|
|
border-right: 2px solid $primary !important;
|
|
border-left: 0 !important;
|
|
}
|
|
|
|
.border-start.border-2.border-success {
|
|
border-right: 2px solid $success !important;
|
|
border-left: 0 !important;
|
|
}
|
|
|
|
.border-start {
|
|
border-right: $border-width solid $border-color !important;
|
|
border-left: 0 !important;
|
|
}
|
|
|
|
.border-end {
|
|
border-left: $border-width solid $border-color !important;
|
|
border-right: 0 !important;
|
|
}
|
|
|
|
.border-end-0 {
|
|
border-left: 0 !important;
|
|
}
|
|
|
|
.border-start-0 {
|
|
border-right: 0 !important;
|
|
}
|
|
|
|
//
|
|
// Border-radius
|
|
//
|
|
.rounded-right {
|
|
border-top-left-radius: $border-radius !important;
|
|
border-bottom-left-radius: $border-radius !important;
|
|
}
|
|
|
|
.rounded-left {
|
|
border-top-right-radius: $border-radius !important;
|
|
border-bottom-right-radius: $border-radius !important;
|
|
}
|
|
|
|
// absolute
|
|
.end-0 {
|
|
right: unset !important;
|
|
left: 0;
|
|
}
|
|
|
|
//
|
|
// Card groups
|
|
//
|
|
|
|
.card-group {
|
|
// The child selector allows nested `.card` within `.card-group`
|
|
// to display properly.
|
|
> .card {
|
|
margin-bottom: $card-group-margin;
|
|
}
|
|
|
|
@include media-breakpoint-up(sm) {
|
|
display: flex;
|
|
flex-flow: row wrap;
|
|
|
|
// The child selector allows nested `.card` within `.card-group`
|
|
// to display properly.
|
|
> .card {
|
|
// Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
|
|
flex: 1 0 0%;
|
|
margin-bottom: 0;
|
|
|
|
+ .card {
|
|
margin-left: 0;
|
|
border-right: 0;
|
|
border-left: 1px solid $border-color;
|
|
}
|
|
|
|
// Handle rounded corners
|
|
@if $enable-rounded {
|
|
&:last-child {
|
|
@include border-start-radius(20px);
|
|
@include border-end-radius(0);
|
|
|
|
.card-img-top,
|
|
.card-header {
|
|
// stylelint-disable-next-line property-disallowed-list
|
|
border-top-left-radius: 0;
|
|
}
|
|
|
|
.card-img-bottom,
|
|
.card-footer {
|
|
// stylelint-disable-next-line property-disallowed-list
|
|
border-bottom-left-radius: 0;
|
|
}
|
|
}
|
|
|
|
&:first-child {
|
|
@include border-start-radius(0);
|
|
@include border-end-radius(20px);
|
|
|
|
.card-img-top,
|
|
.card-header {
|
|
// stylelint-disable-next-line property-disallowed-list
|
|
border-top-right-radius: 0;
|
|
}
|
|
|
|
.card-img-bottom,
|
|
.card-footer {
|
|
// stylelint-disable-next-line property-disallowed-list
|
|
border-bottom-right-radius: 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|