// Style

ul.item-table {
  list-style-type: none;
}

.content:has(> .item-table) > .item-table > .empty-state {
  .empty-state-bar();
}

// Layout

ul.item-table {
  // Grid specific rules
  display: grid;
  grid-template-columns: minmax(0, 1fr) repeat(var(--columns), auto);
  &:has(> li > .visual) {
    grid-template-columns: auto minmax(0, 1fr) repeat(var(--columns), auto);
  }

  > li {
    display: contents;

    &.item-layout .main {
      // Usually, the parent is flex, but here it's contents. .main is still stretched though,
      // because it's a grid item with a width of 1fr. But the default-item-layout sets a width
      // which needs to be overridden.
      width: auto;
    }

    .col, &::before, &::after {
      // The li might get a background on hover. Though, this won't be visible
      // as it has no box model since we apply display:contents to it.
      background-color: inherit;
    }
  }
}

:not(.dashboard) > .container > .content:has(> .item-table), // compat only, for Icinga Web (See #286)
.content:has(> .item-table) {
  padding-left: 0;
  padding-right: 0;

  > .item-table > .empty-state {
    margin: 0 1em;
  }

  > ul.item-table {
    // Again, since the li has no box model, it cannot have padding. So the first
    // and last child need to get the left and right padding respectively.
    // But we don't want to have a border that spans to the very right or left,
    // so pseudo elements are required. We could add empty cells instead, but
    // that would require hard coding the width here, which I'd like to avoid.

    grid-template-columns: ~"auto minmax(0, 1fr) repeat(var(--columns), auto) auto";
    &:has(> li > .visual) {
      grid-template-columns: ~"auto auto minmax(0, 1fr) repeat(var(--columns), auto) auto";
    }

    > li.table-row {
      &::before, &::after {
        display: inline-block;
        content: '\00a0';
        width: 0;
        margin-bottom: 1px;
      }

      &::before {
        padding-left: 1em;
      }

      &::after {
        padding-right: 1em;
      }
    }
  }
}

ul.item-table {
  // General rules
  padding: 0;
  margin: 0;

  .table-row {
    .col {
      margin-right: 0; // Otherwise background has gaps
      padding: .5em 1em .5em 0;
      &:last-child {
        padding-right: 0;
      }

      .title {
        margin-right: 0;
      }
    }

    // This is for the legacy layout only
    // TODO: Drop this together with BaseTableRowItem
    .col.title:has(> .visual) {
      display: flex;

      > .visual {
        padding-right: .5em;
      }
    }

    &:not(:last-of-type) {
      .col {
        border-bottom: 1px solid @list-item-separation-bg;

        &.visual {
          border-color: @default-bg;
        }
      }
    }
  }
}

div.item-table {
  > .empty-state-bar {
    margin: 0 1em;
  }
}

@media print {
  .item-table li.page-break-follows:not(:last-of-type) {
    .col {
      border-bottom: none;
    }
  }
}
