@import "variables/variables"; @import "ui-variables"; @import "mixins/mixins"; @import "octicon-mixins"; // // List options // -------------------------------------------------- // Unstyled keeps list items block level, just removes default browser padding and list-style .list-unstyled { padding-left: 0; list-style: none; } // Inline turns list items into inline-block .list-inline { .list-unstyled(); margin-left: -5px; > li { display: inline-block; padding-left: 5px; padding-right: 5px; } } // // List groups // -------------------------------------------------- // Mixins .list-group-item-variant(@state; @background; @color) { .list-group-item-@{state} { color: @color; background-color: @background; a&, button& { color: @color; .list-group-item-heading { color: inherit; } &:hover, &:focus { color: @color; background-color: darken(@background, 5%); } &.active, &.active:hover, &.active:focus { color: #fff; background-color: @color; border-color: @color; } } } } // Individual list items // // Use on `li`s or `div`s within the `.list-group` parent. .list-group-item { position: relative; display: block; padding: 10px 15px; // Place the border on the list items and negative margin up for better styling margin-bottom: -1px; background-color: @list-group-bg; border: 1px solid @list-group-border; // Round the first and last items &:first-child { .border-top-radius(@list-group-border-radius); } &:last-child { margin-bottom: 0; .border-bottom-radius(@list-group-border-radius); } } // Interactive list items // // Use anchor or button elements instead of `li`s or `div`s to create interactive items. // Includes an extra `.active` modifier class for showing selected items. a.list-group-item, button.list-group-item { color: @list-group-link-color; .list-group-item-heading { color: @list-group-link-heading-color; } // Hover state &:hover, &:focus { text-decoration: none; color: @list-group-link-hover-color; background-color: @list-group-hover-bg; } } button.list-group-item { width: 100%; text-align: left; } .list-group-item { // Disabled state &.disabled, &.disabled:hover, &.disabled:focus { background-color: @list-group-disabled-bg; color: @list-group-disabled-color; cursor: @cursor-disabled; // Force color to inherit for custom content .list-group-item-heading { color: inherit; } .list-group-item-text { color: @list-group-disabled-text-color; } } // Active class on item itself, not parent &.active, &.active:hover, &.active:focus { z-index: 2; // Place active items above their siblings for proper border styling color: @list-group-active-color; background-color: @list-group-active-bg; border-color: @list-group-active-border; // Force color to inherit for custom content .list-group-item-heading, .list-group-item-heading > small, .list-group-item-heading > .small { color: inherit; } .list-group-item-text { color: @list-group-active-text-color; } } } // Contextual variants // // Add modifier classes to change text and background color on individual items. // Organizationally, this must come after the `:hover` states. .list-group-item-variant(success; @state-success-bg; @state-success-text); .list-group-item-variant(info; @state-info-bg; @state-info-text); .list-group-item-variant(warning; @state-warning-bg; @state-warning-text); .list-group-item-variant(danger; @state-danger-bg; @state-danger-text); // Custom content options // // Extra classes for creating well-formatted content within `.list-group-item`s. .list-group-item-heading { margin-top: 0; margin-bottom: 5px; } .list-group-item-text { margin-bottom: 0; line-height: 1.3; } // This is a bootstrap override // --------------------------------------------- .list-group, .list-group .list-group-item { background-color: transparent; border: none; padding: 0; margin: 0; position: static; } .list-group, .list-tree { margin: 0; padding: 0; list-style: none; cursor: default; li:not(.list-nested-item), li.list-nested-item > .list-item { line-height: @component-line-height; text-wrap: none; white-space: nowrap; } // The background highlight uses ::before rather than the item background so // it can span the entire width of the parent container rather than the size // of the list item. .selected::before { content: ''; background-color: @background-color-selected; position: absolute; left: 0; right: 0; height: @component-line-height; } // Make sure the background highlight is below the content. .selected > * { position: relative; } .icon::before { margin-right: @component-icon-padding; position: relative; top: 1px; } .no-icon { padding-left: @component-icon-padding + @component-icon-size; } } // // List Tree // -------------------------------------------------- // Handle indentation of the tree. Assume disclosure arrows. .list-tree { .list-nested-item > .list-tree > li, .list-nested-item > .list-group > li { padding-left: @component-icon-size + @component-icon-padding; } &.has-collapsable-children { @disclosure-arrow-padding: @disclosure-arrow-size + @component-icon-padding; li.list-item { margin-left: @disclosure-arrow-padding; } .list-nested-item.collapsed > .list-group, .list-nested-item.collapsed > .list-tree { display: none; } // Nested items always get disclosure arrows .list-nested-item > .list-item { .octicon(chevron-down, @disclosure-arrow-size); &::before{ position: relative; top: -1px; margin-right: @component-icon-padding; } } .list-nested-item.collapsed > .list-item { .octicon(chevron-right, @disclosure-arrow-size); &::before{ left: 1px; } } .list-nested-item > .list-tree > li, .list-nested-item > .list-group > li { padding-left: @disclosure-arrow-padding; } // You want a subtree to be flat -- no collapsable children .has-flat-children, &.has-flat-children { li.list-item { margin-left: 0; } } } }