xref: /openbmc/phosphor-webui/app/common/components/table/table.html (revision b1f64248b47e6a26ae38f36ebcf67f5955e9e92c)
18c80dbd9SYoshie Muranaka<table class="bmc-table {{$ctrl.size}}">
2*b1f64248SYoshie Muranaka  <thead class="bmc-table__head">
3*b1f64248SYoshie Muranaka    <!-- Header row (non-sortable) -->
4*b1f64248SYoshie Muranaka    <tr ng-if="!$ctrl.sortable">
5*b1f64248SYoshie Muranaka      <th ng-repeat="headerItem in $ctrl.header"
6fa56273dSYoshie Muranaka          class="bmc-table__column-header">
7*b1f64248SYoshie Muranaka        {{headerItem.label}}
8*b1f64248SYoshie Muranaka      </th>
9*b1f64248SYoshie Muranaka    </tr>
10*b1f64248SYoshie Muranaka    <!-- Header row (sortable) -->
11*b1f64248SYoshie Muranaka    <tr ng-if="$ctrl.sortable">
12*b1f64248SYoshie Muranaka      <th ng-repeat="headerItem in $ctrl.header track by $index"
13*b1f64248SYoshie Muranaka          class="bmc-table__column-header">
14*b1f64248SYoshie Muranaka        <span ng-if="!headerItem.sortable">
15*b1f64248SYoshie Muranaka          {{headerItem.label}}
16*b1f64248SYoshie Muranaka        </span>
17*b1f64248SYoshie Muranaka        <span ng-if="headerItem.sortable"
18*b1f64248SYoshie Muranaka              ng-click="$ctrl.onClickSort($index)"
19*b1f64248SYoshie Muranaka              class="bmc-table__column-header--sortable">
20*b1f64248SYoshie Muranaka          {{headerItem.label}}
21*b1f64248SYoshie Muranaka          <!-- Sort icons -->
22*b1f64248SYoshie Muranaka          <button class="sort-icon"
23*b1f64248SYoshie Muranaka                  type="button"
24*b1f64248SYoshie Muranaka                  aria-label="sort {{headerItem.label}}">
25*b1f64248SYoshie Muranaka            <icon file="icon-arrow--up.svg"
26*b1f64248SYoshie Muranaka                  ng-if="$index === $ctrl.activeSort"
27*b1f64248SYoshie Muranaka                  ng-class="{
28*b1f64248SYoshie Muranaka                    'sort-icon--descending': !$ctrl.sortAscending,
29*b1f64248SYoshie Muranaka                    'sort-icon--ascending' : $ctrl.sortAscending }"
30*b1f64248SYoshie Muranaka                  class="sort-icon--active"
31*b1f64248SYoshie Muranaka                  aria-hidden="true"></icon>
32*b1f64248SYoshie Muranaka            <span ng-if="$index !== $ctrl.activeSort"
33*b1f64248SYoshie Muranaka                  class="sort-icon--inactive"
34*b1f64248SYoshie Muranaka                  aria-hidden="true">
35*b1f64248SYoshie Muranaka                <icon file="icon-arrow--up.svg"></icon>
36*b1f64248SYoshie Muranaka                <icon file="icon-arrow--down.svg"></icon>
37*b1f64248SYoshie Muranaka            </span>
38*b1f64248SYoshie Muranaka          </button>
39*b1f64248SYoshie Muranaka        </span>
40fa56273dSYoshie Muranaka      </th>
41fa56273dSYoshie Muranaka    </tr>
42fa56273dSYoshie Muranaka  </thead>
43*b1f64248SYoshie Muranaka  <tbody class="bmc-table__body">
44fa56273dSYoshie Muranaka    <!-- Data rows -->
45*b1f64248SYoshie Muranaka    <tr ng-if="$ctrl.data.length > 0"
46*b1f64248SYoshie Muranaka        ng-repeat="row in $ctrl.data"
47fa56273dSYoshie Muranaka        class="bmc-table__row">
48fa56273dSYoshie Muranaka      <!-- Row item -->
498c80dbd9SYoshie Muranaka      <td ng-repeat="item in row.uiData track by $index"
50fa56273dSYoshie Muranaka          class="bmc-table__cell">
518c80dbd9SYoshie Muranaka          <ng-bind-html ng-bind-html="item"></ng-bind-html>
52fa56273dSYoshie Muranaka      </td>
53fa56273dSYoshie Muranaka      <!-- Row Actions -->
54bb688795SYoshie Muranaka      <td ng-if="$ctrl.rowActionsEnabled"
55fa56273dSYoshie Muranaka          class="bmc-table__cell  bmc-table__row-actions">
56bb688795SYoshie Muranaka        <table-actions
57bb688795SYoshie Muranaka          actions="row.actions"
58bb688795SYoshie Muranaka          emit-action="$ctrl.onEmitTableAction(action, row)">
59bb688795SYoshie Muranaka        </table-actions>
60fa56273dSYoshie Muranaka      </td>
61fa56273dSYoshie Muranaka    </tr>
62fa56273dSYoshie Muranaka    <!-- Empty table -->
63*b1f64248SYoshie Muranaka    <tr ng-if="$ctrl.data.length === 0">
64fa56273dSYoshie Muranaka      <td>No data</td>
65fa56273dSYoshie Muranaka    </tr>
66fa56273dSYoshie Muranaka  </tbody>
67fa56273dSYoshie Muranaka</table>