// https://www.google.com/design/spec/components/lists.html#lists-specs

// - single line 48dp
// - single line avatar 56dp
// - double line (with and w/o avatar) 72dp
// - triple line 88dp

.list-group {
  // #853 start -- https://github.com/twbs/bootstrap/pull/18981/files
  @if $enable-flex {
    display: flex;
    flex-direction: column;
  }
  // #853 end -- https://github.com/twbs/bootstrap/pull/18981/files

  flex-grow: 1;

  // Add 8dp of padding at the top and bottom of a list. One exception is at the top of a list with a subheader, because subheaders contain their own padding.
  padding: .5rem 0;

  // dense size variation
  &.bmd-list-group-sm {
    padding: .25rem 0;

    .list-group-item {
      padding: .5rem 1rem;
    }
  }
}

.bmd-list-group-col {
  display: flex;
  flex-direction: column;
  min-width: 0;
  //flex-shrink: 0;
}

.list-group-item {
  // #853 start -- https://github.com/twbs/bootstrap/pull/18981/files
  @if $enable-flex {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
  } @else {
    display: block;
  }
  // #853 end -- https://github.com/twbs/bootstrap/pull/18981/files
  padding: 1rem;
  line-height: 1;

  .list-group-item-text {
    // word wrap? http://stackoverflow.com/a/26535469/2363935
    //flex-flow: row wrap;
    min-width: 0;
    max-height: 2.188rem; // 88dp tile total height
    // FIXME: text overflow with ellipsis is not working
    //flex: 0 1 auto; //    http://stackoverflow.com/questions/12022288/how-to-keep-a-flex-item-from-overflowing-due-to-its-text
    overflow: hidden;
    text-overflow: ellipsis;
  }

  //------
  // NOTE: there are many variations of icons/labels in a list, each one of these rules exist for a reason.

  // first icon/label on the left
  :first-child {
    margin-right: 2rem; // single line icon is 72dp to text (16 pad + 24 icon + 32 margin)
  }

  // second icon/label, or only icon/label marked as 'pull-*-right', or any direct child element marked as right
  > .pull-xs-right,
  > .pull-sm-right,
  > .pull-md-right,
  > .pull-lg-right,
  > .pull-xl-right,
  > * ~ .label:last-child,
  > * ~ .material-icons:last-child {
    margin-right: 0; // some variations actually match the first-child
    margin-left: auto;
  }

  // add the padding to icons (margin-left is used for alignment)
  .material-icons.pull-xs-right,
  // need the specificity
  .material-icons.pull-sm-right,
  .material-icons.pull-md-right,
  .material-icons.pull-lg-right,
  .material-icons.pull-xl-right,
  .material-icons ~ .material-icons:last-child {
    padding-left: 1rem; // guarantee space per spec
  }
  //------

  .list-group-item-heading {
    //font-size: 1rem;
  }

  .list-group-item-text {
    font-size: .875rem;
    color: $gray;
  }
}
