// // Basic Bootstrap table // .table { --#{$prefix}table-color: #{$table-color}; --#{$prefix}table-bg: #{$table-bg}; --#{$prefix}table-border-color: #{$table-border-color}; --#{$prefix}table-accent-bg: #{$table-accent-bg}; --#{$prefix}table-striped-color: #{$table-striped-color}; --#{$prefix}table-striped-bg: #{$table-striped-bg}; --#{$prefix}table-active-color: #{$table-active-color}; --#{$prefix}table-active-bg: #{$table-active-bg}; --#{$prefix}table-hover-color: #{$table-hover-color}; --#{$prefix}table-hover-bg: #{$table-hover-bg}; width: 100%; margin-bottom: $spacer; color: var(--#{$prefix}table-color); vertical-align: $table-cell-vertical-align; border-color: var(--#{$prefix}table-border-color); // Target th & td // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class. // We use the universal selectors here to simplify the selector (else we would need 6 different selectors). // Another advantage is that this generates less code and makes the selector less specific making it easier to override. // stylelint-disable-next-line selector-max-universal > :not(caption) > * > * { padding: $table-cell-padding-y $table-cell-padding-x; background-color: var(--#{$prefix}table-bg); border-bottom-width: $table-border-width; box-shadow: inset 0 0 0 9999px var(--#{$prefix}table-accent-bg); } > tbody { vertical-align: inherit; } > thead { vertical-align: bottom; } } .table-group-divider { border-top: ($table-border-width * 2) solid $table-group-separator-color; } // // Change placement of captions with a class // .caption-top { caption-side: top; } // // Condensed table w/ half padding // .table-sm { // stylelint-disable-next-line selector-max-universal > :not(caption) > * > * { padding: $table-cell-padding-y-sm $table-cell-padding-x-sm; } } // Border versions // // Add or remove borders all around the table and between all the columns. // // When borders are added on all sides of the cells, the corners can render odd when // these borders do not have the same color or if they are semi-transparent. // Therefor we add top and border bottoms to the `tr`s and left and right borders // to the `td`s or `th`s .table-bordered { > :not(caption) > * { border-width: $table-border-width 0; // stylelint-disable-next-line selector-max-universal > * { border-width: 0 $table-border-width; } } } .table-borderless { // stylelint-disable-next-line selector-max-universal > :not(caption) > * > * { border-bottom-width: 0; } > :not(:first-child) { border-top-width: 0; } } // Zebra-striping // // Default zebra-stripe styles (alternating gray and transparent backgrounds) // For rows .table-striped { > tbody > tr:nth-of-type(#{$table-striped-order}) > * { --#{$prefix}table-accent-bg: var(--#{$prefix}table-striped-bg); color: var(--#{$prefix}table-striped-color); } } // For columns .table-striped-columns { > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) { --#{$prefix}table-accent-bg: var(--#{$prefix}table-striped-bg); color: var(--#{$prefix}table-striped-color); } } // Active table // // The `.table-active` class can be added to highlight rows or cells .table-active { --#{$prefix}table-accent-bg: var(--#{$prefix}table-active-bg); color: var(--#{$prefix}table-active-color); } // Hover effect // // Placed here since it has to come after the potential zebra striping .table-hover { > tbody > tr:hover > * { --#{$prefix}table-accent-bg: var(--#{$prefix}table-hover-bg); color: var(--#{$prefix}table-hover-color); } } // Table variants // // Table variants set the table cell backgrounds, border colors // and the colors of the striped, hovered & active tables @each $color, $value in $table-variants { @include table-variant($color, $value); } // Responsive tables // // Generate series of `.table-responsive-*` classes for configuring the screen // size of where your table will overflow. @each $breakpoint in map-keys($grid-breakpoints) { $infix: breakpoint-infix($breakpoint, $grid-breakpoints); @include media-breakpoint-down($breakpoint) { .table-responsive#{$infix} { overflow-x: auto; -webkit-overflow-scrolling: touch; } } }