/**
 * Table:
 * `.Table`: For showing tabular data.
 *
 *     @example
 *     table.Table
 *       thead.Table-header
 *         tr.Table-row
 *           th.Table-headerCell Animal
 *           th.Table-headerCell Color
 *       tbody.Table-body
 *         tr.Table-row
 *           td.Table-cell Wombat
 *           td.Table-cell Brown
 *         tr.Table-row
 *           td.Table-cell Dog
 *           td.Table-cell Orange
 */

@import "./config";
@import "../../util/typography";
@import "../../util/layout";

.Table {
  width: 100%;
  max-width: 100%;
  border-spacing: 0;
  border-collapse: collapse;

  &:not(:last-child) {
    margin-bottom: @table-margin-bottom;
  }

  &.is-disabled {
    opacity: @table-disabled-opacity;
    pointer-events: none;
  }
}

/**
 * Bordered Table:
 * `.Table--bordered`: Add a border to it.
 *
 *     @example
 *     table.Table.Table--bordered
 *       thead.Table-header
 *         tr.Table-row
 *           th.Table-headerCell Animal
 *           th.Table-headerCell Color
 *       tbody
 *         tr.Table-row
 *           td.Table-cell Wombat
 *           td.Table-cell Brown
 *         tr.Table-row
 *           td.Table-cell Dog
 *           td.Table-cell Orange
 */

.Table--bordered {
  border: @table-border;
  overflow: hidden;

  .Table-row {
    border-bottom: @table-border;
  }
}

/**
 * Compact Table:
 * `.Table--compact`: Will attempt to set all `.Table-headerCell` and
 * `.Table-cell` children to inherit their `--compact` variants.
 *
 *     @example
 *     table.Table.Table--compact
 *       thead.Table-header
 *         tr.Table-row
 *           th.Table-headerCell Animal
 *           th.Table-headerCell Color
 *       tbody
 *         tr.Table-row
 *           td.Table-cell Wombat
 *           td.Table-cell Brown
 *         tr.Table-row
 *           td.Table-cell Dog
 *           td.Table-cell Orange
 */

.Table--compact {
  .Table-header {
    &:extend(.Table-header--compact);
  }

  .Table-headerCell {
    &:extend(.Table-headerCell--compact);
  }

  .Table-cell {
    &:extend(.Table-cell--compact);
  }
}

/**
 * Flush Table:
 * `.Table--flush`: Remove left padding from first cells, remove right padding
 * from last cells. Usually combined with `.Table--compact`.
 *
 *     @example
 *     table.Table.Table--flush.Table--compact
 *       thead.Table-header
 *         tr.Table-row
 *           th.Table-headerCell Animal
 *           th.Table-headerCell.Table-headerCell--number Price
 *       tbody
 *         tr.Table-row
 *           td.Table-cell Wombat
 *           td.Table-cell.Table-cell--number $74.21
 *         tr.Table-row
 *           td.Table-cell Dog
 *           td.Table-cell.Table-cell--number $12.21
 */

.Table--flush {
  th:first-child,
  td:first-child {
    padding-left: 0;
  }

  th:last-child,
  td:last-child {
    padding-right: 0;
  }
}

.Table-row {}

.Table-header {
  .Table-headerCell {
    padding: @table-header-padding-vertical @table-header-padding-horizontal;
    vertical-align: @table-cell-vertical-align;
  }
}

.Table-header--compact {
  border-bottom: @table-border;
}

.Table-headerCell--compact {
  .Table-cell--compact;
  font-size: @table-cell-font-size;
  height: auto;
}

.Table-cell {
  font-size: @table-cell-font-size;
  padding: @table-cell-padding-vertical @table-cell-padding-horizontal;
  vertical-align: @table-cell-vertical-align;
}

.Table-cell--compact {
  padding: @table-cell-compact-padding;
}

.Table-cell--number {
  .u-number;
  text-align: right;
}

.Table-cell--expanded {
  .u-expand;
}

.Table-headerCell {
  &:extend(.Table-cell all);
  height: @table-header-height;
  font-size: @table-header-font-size;
  font-weight: @table-header-font-weight;
  text-align: left;
}

.Table-headerCell--number {
  text-align: right;
}
